idmission-web-sdk 2.5.83-changeset-release-develop-eb57522 → 2.5.83-changeset-release-develop-2127d44

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.
@@ -7271,15 +7271,17 @@ var EYES_CLOSED = 'Keep your eyes open...';
7271
7271
  var HAND_OVER_FACE = 'Remove your hand from your face...';
7272
7272
  var SELFIE_RECOVERY_HINT = 'We’re having trouble checking the lighting. Keep your face centered and hold still—we’ll still check your positioning.';
7273
7273
  var CONTINUE_WITH_CURRENT_LIGHTING = 'Continue with current lighting';
7274
+ // The face liveness Retry button while the camera restarts behind it.
7275
+ var STARTING_CAMERA = 'Starting camera...';
7274
7276
  var threeOhTranslations = {
7275
- de: (_de = {}, _de[SELFIE_RECOVERY_HINT] = 'Wir haben Schwierigkeiten, die Beleuchtung zu prüfen. Halten Sie Ihr Gesicht mittig und bleiben Sie ruhig. Wir prüfen weiterhin Ihre Position.', _de[CONTINUE_WITH_CURRENT_LIGHTING] = 'Mit aktueller Beleuchtung fortfahren', _de[MANUAL_CAPTURE_HINT] = 'Die automatische Aufnahme hat Schwierigkeiten. Tippen Sie auf die Taste, um das Foto selbst aufzunehmen.', _de[REVIEW_HEADING] = 'Dokument aufgenommen', _de[MOVE_BACK] = 'Gehen Sie zurück und stellen Sie sicher, dass alle 4 Kanten des Blatts sichtbar sind.', _de[MOVE_CLOSER] = 'Kommen Sie näher und füllen Sie den Rahmen mit dem gesamten Blatt aus.', _de[EYES_CLOSED] = 'Augen offen halten...', _de[HAND_OVER_FACE] = 'Hand vom Gesicht nehmen...', _de),
7276
- es: (_es = {}, _es[SELFIE_RECOVERY_HINT] = 'Tenemos dificultades para comprobar la iluminación. Mantenga el rostro centrado y no se mueva. Seguiremos comprobando su posición.', _es[CONTINUE_WITH_CURRENT_LIGHTING] = 'Continuar con la iluminación actual', _es[MANUAL_CAPTURE_HINT] = 'La captura automática tiene dificultades. Toque el botón para tomar la foto usted mismo.', _es[REVIEW_HEADING] = 'Documento capturado', _es[MOVE_BACK] = 'Aléjese y asegúrese de que los 4 bordes de la hoja sean visibles.', _es[MOVE_CLOSER] = 'Acérquese y llene el encuadre con la hoja completa.', _es[EYES_CLOSED] = 'Hay que mantener los ojos abiertos...', _es[HAND_OVER_FACE] = 'Hay que retirar la mano de la cara...', _es),
7277
- fr: (_fr = {}, _fr[SELFIE_RECOVERY_HINT] = 'Nous avons du mal à vérifier l’éclairage. Gardez votre visage centré et restez immobile. Nous vérifierons toujours votre position.', _fr[CONTINUE_WITH_CURRENT_LIGHTING] = 'Continuer avec cet éclairage', _fr[MANUAL_CAPTURE_HINT] = 'La capture automatique rencontre des difficultés. Appuyez sur le bouton pour prendre la photo vous-même.', _fr[REVIEW_HEADING] = 'Document capturé', _fr[MOVE_BACK] = 'Reculez et assurez-vous que les 4 bords de la page sont visibles.', _fr[MOVE_CLOSER] = 'Rapprochez-vous et remplissez le cadre avec la page entière.', _fr[EYES_CLOSED] = 'Gardez les yeux ouverts...', _fr[HAND_OVER_FACE] = 'Retirez votre main de votre visage...', _fr),
7278
- it: (_it = {}, _it[SELFIE_RECOVERY_HINT] = 'Abbiamo difficoltà a verificare l’illuminazione. Mantieni il viso centrato e resta fermo. Continueremo a verificare la tua posizione.', _it[CONTINUE_WITH_CURRENT_LIGHTING] = 'Continua con la luce attuale', _it[MANUAL_CAPTURE_HINT] = 'La cattura automatica sta avendo difficoltà. Tocca il pulsante per scattare la foto manualmente.', _it[REVIEW_HEADING] = 'Documento acquisito', _it[MOVE_BACK] = 'Allontanati e assicurati che tutti e 4 i bordi del foglio siano visibili.', _it[MOVE_CLOSER] = "Avvicinati e riempi l'inquadratura con l'intero foglio.", _it[EYES_CLOSED] = 'Tenere gli occhi aperti...', _it[HAND_OVER_FACE] = 'Togliere la mano dal viso...', _it),
7279
- ja: (_ja = {}, _ja[SELFIE_RECOVERY_HINT] = '照明の確認がうまくできません。顔を中央に保ち、動かないでください。顔の位置は引き続き確認します。', _ja[CONTINUE_WITH_CURRENT_LIGHTING] = '現在の照明で続行', _ja[MANUAL_CAPTURE_HINT] = '自動撮影がうまくいきません。ボタンを押してご自身で撮影してください。', _ja[REVIEW_HEADING] = '書類を撮影しました', _ja[MOVE_BACK] = '離れて、書類の4つの端がすべて見えるようにしてください。', _ja[MOVE_CLOSER] = '近づいて、書類全体で画面いっぱいに表示してください。', _ja[EYES_CLOSED] = '目を開けたままにしてください…', _ja[HAND_OVER_FACE] = '顔から手を離してください…', _ja),
7280
- pt: (_pt = {}, _pt[SELFIE_RECOVERY_HINT] = 'Estamos com dificuldade para verificar a iluminação. Mantenha o rosto centralizado e fique imóvel. Continuaremos verificando sua posição.', _pt[CONTINUE_WITH_CURRENT_LIGHTING] = 'Continuar com a iluminação atual', _pt[MANUAL_CAPTURE_HINT] = 'A captura automática está com dificuldades. Toque no botão para tirar a foto você mesmo.', _pt[REVIEW_HEADING] = 'Documento capturado', _pt[MOVE_BACK] = 'Afaste-se e certifique-se de que as 4 bordas da folha estejam visíveis.', _pt[MOVE_CLOSER] = 'Aproxime-se e preencha o quadro com a folha inteira.', _pt[EYES_CLOSED] = 'Mantenha os olhos abertos...', _pt[HAND_OVER_FACE] = 'Tire a mão do rosto...', _pt),
7281
- ru: (_ru = {}, _ru[SELFIE_RECOVERY_HINT] = 'Нам не удаётся проверить освещение. Держите лицо по центру и не двигайтесь. Мы продолжим проверять положение лица.', _ru[CONTINUE_WITH_CURRENT_LIGHTING] = 'Продолжить с текущим освещением', _ru[MANUAL_CAPTURE_HINT] = 'Автоматическая съёмка не справляется. Нажмите кнопку, чтобы сделать снимок самостоятельно.', _ru[REVIEW_HEADING] = 'Документ снят', _ru[MOVE_BACK] = 'Отойдите назад и убедитесь, что видны все 4 края листа.', _ru[MOVE_CLOSER] = 'Подойдите ближе и заполните кадр всем листом.', _ru[EYES_CLOSED] = 'Не закрывайте глаза…', _ru[HAND_OVER_FACE] = 'Уберите руку от лица…', _ru),
7282
- zh: (_zh = {}, _zh[SELFIE_RECOVERY_HINT] = '我們無法順利檢查光線。請將臉部保持在中央並保持不動。我們仍會檢查您的位置。', _zh[CONTINUE_WITH_CURRENT_LIGHTING] = '使用目前的光線繼續', _zh[MANUAL_CAPTURE_HINT] = '自動拍攝遇到困難。請點選按鈕自行拍攝。', _zh[REVIEW_HEADING] = '已拍攝文件', _zh[MOVE_BACK] = '後退一些,確保紙張的四個邊緣都清晰可見。', _zh[MOVE_CLOSER] = '靠近一些,讓整張紙填滿畫面。', _zh[EYES_CLOSED] = '請保持雙眼睜開...', _zh[HAND_OVER_FACE] = '請將手從臉上移開...', _zh)
7277
+ de: (_de = {}, _de[SELFIE_RECOVERY_HINT] = 'Wir haben Schwierigkeiten, die Beleuchtung zu prüfen. Halten Sie Ihr Gesicht mittig und bleiben Sie ruhig. Wir prüfen weiterhin Ihre Position.', _de[CONTINUE_WITH_CURRENT_LIGHTING] = 'Mit aktueller Beleuchtung fortfahren', _de[MANUAL_CAPTURE_HINT] = 'Die automatische Aufnahme hat Schwierigkeiten. Tippen Sie auf die Taste, um das Foto selbst aufzunehmen.', _de[REVIEW_HEADING] = 'Dokument aufgenommen', _de[MOVE_BACK] = 'Gehen Sie zurück und stellen Sie sicher, dass alle 4 Kanten des Blatts sichtbar sind.', _de[MOVE_CLOSER] = 'Kommen Sie näher und füllen Sie den Rahmen mit dem gesamten Blatt aus.', _de[EYES_CLOSED] = 'Augen offen halten...', _de[HAND_OVER_FACE] = 'Hand vom Gesicht nehmen...', _de[STARTING_CAMERA] = 'Kamera wird gestartet...', _de),
7278
+ es: (_es = {}, _es[SELFIE_RECOVERY_HINT] = 'Tenemos dificultades para comprobar la iluminación. Mantenga el rostro centrado y no se mueva. Seguiremos comprobando su posición.', _es[CONTINUE_WITH_CURRENT_LIGHTING] = 'Continuar con la iluminación actual', _es[MANUAL_CAPTURE_HINT] = 'La captura automática tiene dificultades. Toque el botón para tomar la foto usted mismo.', _es[REVIEW_HEADING] = 'Documento capturado', _es[MOVE_BACK] = 'Aléjese y asegúrese de que los 4 bordes de la hoja sean visibles.', _es[MOVE_CLOSER] = 'Acérquese y llene el encuadre con la hoja completa.', _es[EYES_CLOSED] = 'Hay que mantener los ojos abiertos...', _es[HAND_OVER_FACE] = 'Hay que retirar la mano de la cara...', _es[STARTING_CAMERA] = 'Iniciando la cámara...', _es),
7279
+ fr: (_fr = {}, _fr[SELFIE_RECOVERY_HINT] = 'Nous avons du mal à vérifier l’éclairage. Gardez votre visage centré et restez immobile. Nous vérifierons toujours votre position.', _fr[CONTINUE_WITH_CURRENT_LIGHTING] = 'Continuer avec cet éclairage', _fr[MANUAL_CAPTURE_HINT] = 'La capture automatique rencontre des difficultés. Appuyez sur le bouton pour prendre la photo vous-même.', _fr[REVIEW_HEADING] = 'Document capturé', _fr[MOVE_BACK] = 'Reculez et assurez-vous que les 4 bords de la page sont visibles.', _fr[MOVE_CLOSER] = 'Rapprochez-vous et remplissez le cadre avec la page entière.', _fr[EYES_CLOSED] = 'Gardez les yeux ouverts...', _fr[HAND_OVER_FACE] = 'Retirez votre main de votre visage...', _fr[STARTING_CAMERA] = 'Démarrage de la caméra...', _fr),
7280
+ it: (_it = {}, _it[SELFIE_RECOVERY_HINT] = 'Abbiamo difficoltà a verificare l’illuminazione. Mantieni il viso centrato e resta fermo. Continueremo a verificare la tua posizione.', _it[CONTINUE_WITH_CURRENT_LIGHTING] = 'Continua con la luce attuale', _it[MANUAL_CAPTURE_HINT] = 'La cattura automatica sta avendo difficoltà. Tocca il pulsante per scattare la foto manualmente.', _it[REVIEW_HEADING] = 'Documento acquisito', _it[MOVE_BACK] = 'Allontanati e assicurati che tutti e 4 i bordi del foglio siano visibili.', _it[MOVE_CLOSER] = "Avvicinati e riempi l'inquadratura con l'intero foglio.", _it[EYES_CLOSED] = 'Tenere gli occhi aperti...', _it[HAND_OVER_FACE] = 'Togliere la mano dal viso...', _it[STARTING_CAMERA] = 'Avvio della fotocamera...', _it),
7281
+ ja: (_ja = {}, _ja[SELFIE_RECOVERY_HINT] = '照明の確認がうまくできません。顔を中央に保ち、動かないでください。顔の位置は引き続き確認します。', _ja[CONTINUE_WITH_CURRENT_LIGHTING] = '現在の照明で続行', _ja[MANUAL_CAPTURE_HINT] = '自動撮影がうまくいきません。ボタンを押してご自身で撮影してください。', _ja[REVIEW_HEADING] = '書類を撮影しました', _ja[MOVE_BACK] = '離れて、書類の4つの端がすべて見えるようにしてください。', _ja[MOVE_CLOSER] = '近づいて、書類全体で画面いっぱいに表示してください。', _ja[EYES_CLOSED] = '目を開けたままにしてください…', _ja[HAND_OVER_FACE] = '顔から手を離してください…', _ja[STARTING_CAMERA] = 'カメラを起動しています…', _ja),
7282
+ pt: (_pt = {}, _pt[SELFIE_RECOVERY_HINT] = 'Estamos com dificuldade para verificar a iluminação. Mantenha o rosto centralizado e fique imóvel. Continuaremos verificando sua posição.', _pt[CONTINUE_WITH_CURRENT_LIGHTING] = 'Continuar com a iluminação atual', _pt[MANUAL_CAPTURE_HINT] = 'A captura automática está com dificuldades. Toque no botão para tirar a foto você mesmo.', _pt[REVIEW_HEADING] = 'Documento capturado', _pt[MOVE_BACK] = 'Afaste-se e certifique-se de que as 4 bordas da folha estejam visíveis.', _pt[MOVE_CLOSER] = 'Aproxime-se e preencha o quadro com a folha inteira.', _pt[EYES_CLOSED] = 'Mantenha os olhos abertos...', _pt[HAND_OVER_FACE] = 'Tire a mão do rosto...', _pt[STARTING_CAMERA] = 'Iniciando a câmera...', _pt),
7283
+ ru: (_ru = {}, _ru[SELFIE_RECOVERY_HINT] = 'Нам не удаётся проверить освещение. Держите лицо по центру и не двигайтесь. Мы продолжим проверять положение лица.', _ru[CONTINUE_WITH_CURRENT_LIGHTING] = 'Продолжить с текущим освещением', _ru[MANUAL_CAPTURE_HINT] = 'Автоматическая съёмка не справляется. Нажмите кнопку, чтобы сделать снимок самостоятельно.', _ru[REVIEW_HEADING] = 'Документ снят', _ru[MOVE_BACK] = 'Отойдите назад и убедитесь, что видны все 4 края листа.', _ru[MOVE_CLOSER] = 'Подойдите ближе и заполните кадр всем листом.', _ru[EYES_CLOSED] = 'Не закрывайте глаза…', _ru[HAND_OVER_FACE] = 'Уберите руку от лица…', _ru[STARTING_CAMERA] = 'Запуск камеры…', _ru),
7284
+ zh: (_zh = {}, _zh[SELFIE_RECOVERY_HINT] = '我們無法順利檢查光線。請將臉部保持在中央並保持不動。我們仍會檢查您的位置。', _zh[CONTINUE_WITH_CURRENT_LIGHTING] = '使用目前的光線繼續', _zh[MANUAL_CAPTURE_HINT] = '自動拍攝遇到困難。請點選按鈕自行拍攝。', _zh[REVIEW_HEADING] = '已拍攝文件', _zh[MOVE_BACK] = '後退一些,確保紙張的四個邊緣都清晰可見。', _zh[MOVE_CLOSER] = '靠近一些,讓整張紙填滿畫面。', _zh[EYES_CLOSED] = '請保持雙眼睜開...', _zh[HAND_OVER_FACE] = '請將手從臉上移開...', _zh[STARTING_CAMERA] = '正在啟動相機...', _zh)
7283
7285
  };
7284
7286
  /** Base entries win nothing — the supplement may only ADD. See `noShadowing`. */
7285
7287
  function withThreeOhTranslations(lang, base) {
@@ -7633,7 +7635,7 @@ function useGuideOrientationContext() {
7633
7635
  return ctx;
7634
7636
  }
7635
7637
 
7636
- var _templateObject$_, _templateObject2$Q;
7638
+ var _templateObject$$, _templateObject2$R;
7637
7639
  var _excluded$i = ["isRearFacing"];
7638
7640
  var CameraVideoTag = /*#__PURE__*/React.forwardRef(function CameraVideoTag(_ref, ref) {
7639
7641
  var isRearFacing = _ref.isRearFacing,
@@ -7646,10 +7648,10 @@ var CameraVideoTag = /*#__PURE__*/React.forwardRef(function CameraVideoTag(_ref,
7646
7648
  "$isRearFacing": isRearFacing
7647
7649
  }, props));
7648
7650
  });
7649
- var FullscreenVideoTag = styledComponents.styled.video(_templateObject$_ || (_templateObject$_ = _taggedTemplateLiteralLoose(["\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) {
7651
+ var FullscreenVideoTag = styledComponents.styled.video(_templateObject$$ || (_templateObject$$ = _taggedTemplateLiteralLoose(["\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) {
7650
7652
  return props.$isRearFacing ? '' : 'scaleX(-1)';
7651
7653
  });
7652
- var CameraFeedWrapper = styledComponents.styled.div(_templateObject2$Q || (_templateObject2$Q = _taggedTemplateLiteralLoose(["\n /* Keep CameraVideoTag's legacy negative z-index above opaque flow shells. */\n isolation: isolate;\n\n ", "\n\n /* Last, so it wins over both branches' display. */\n ", "\n"])), function (props) {
7654
+ var CameraFeedWrapper = styledComponents.styled.div(_templateObject2$R || (_templateObject2$R = _taggedTemplateLiteralLoose(["\n /* Keep CameraVideoTag's legacy negative z-index above opaque flow shells. */\n isolation: isolate;\n\n ", "\n\n /* Last, so it wins over both branches' display. */\n ", "\n"])), function (props) {
7653
7655
  return props.$mode === 'snapToGuides' ? "display: flex;\n position: absolute;\n z-index: -2;\n left: " + props.$x + "px;\n top: " + props.$y + "px;\n width: " + props.$w + "px;\n height: " + props.$h + "px;\n /* Match the mask's hole when the guide publishes a radius. The mask\n sits above this feed (-1 vs -2), so square corners here show through\n as dimmed wedges outside the rounded hole. Guides that publish no\n radius keep the previous unclipped behaviour. */\n " + (props.$radius ? "border-radius: " + props.$radius + "px; overflow: hidden;" : '') : "display: flex;\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;";
7654
7656
  }, function (props) {
7655
7657
  return props.$hidden ? 'display: none;' : '';
@@ -7704,7 +7706,7 @@ function ScalingCameraFeed(_ref2) {
7704
7706
  });
7705
7707
  }
7706
7708
 
7707
- var _templateObject$Z, _templateObject2$P, _templateObject3$D, _templateObject4$y, _templateObject5$t, _templateObject6$l;
7709
+ var _templateObject$_, _templateObject2$Q, _templateObject3$D, _templateObject4$y, _templateObject5$t, _templateObject6$l;
7708
7710
  function _createForOfIteratorHelperLoose$r(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (t) return (t = t.call(r)).next.bind(t); if (Array.isArray(r) || (t = _unsupportedIterableToArray$r(r)) || e) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: true } : { done: false, value: r[o++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
7709
7711
  function _unsupportedIterableToArray$r(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$r(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$r(r, a) : void 0; } }
7710
7712
  function _arrayLikeToArray$r(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
@@ -7726,8 +7728,8 @@ function DebugStatsPane(_ref2) {
7726
7728
  if (!portalLocation) return element;
7727
7729
  return /*#__PURE__*/reactDom.createPortal(element, portalLocation);
7728
7730
  }
7729
- var DebugStatsPaneDiv = styledComponents.styled.span(_templateObject$Z || (_templateObject$Z = _taggedTemplateLiteralLoose(["\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 pointer-events: none;\n"])));
7730
- var ObjectDetectionDebugOverlayDiv = styledComponents.styled.div(_templateObject2$P || (_templateObject2$P = _taggedTemplateLiteralLoose(["\n position: absolute;\n z-index: 1001;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n max-width: 100%;\n max-height: 100%;\n overflow: hidden;\n pointer-events: none;\n ", "\n transform-style: preserve-3d;\n"])), function (_ref3) {
7731
+ var DebugStatsPaneDiv = styledComponents.styled.span(_templateObject$_ || (_templateObject$_ = _taggedTemplateLiteralLoose(["\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 pointer-events: none;\n"])));
7732
+ var ObjectDetectionDebugOverlayDiv = styledComponents.styled.div(_templateObject2$Q || (_templateObject2$Q = _taggedTemplateLiteralLoose(["\n position: absolute;\n z-index: 1001;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n max-width: 100%;\n max-height: 100%;\n overflow: hidden;\n pointer-events: none;\n ", "\n transform-style: preserve-3d;\n"])), function (_ref3) {
7731
7733
  var $flipX = _ref3.$flipX;
7732
7734
  return $flipX ? 'transform: scaleX(-1);' : '';
7733
7735
  });
@@ -8039,7 +8041,7 @@ function SelfieCaptureFaceKeypoint(_ref16) {
8039
8041
  });
8040
8042
  }
8041
8043
 
8042
- var _templateObject$Y;
8044
+ var _templateObject$Z;
8043
8045
  /**
8044
8046
  * Over WebKit's 10px "thin border" cutoff (`LocalFrameView::fixedContainerEdges`).
8045
8047
  * At or under it, Safari never reads the strip's `background-color`: it samples
@@ -8142,7 +8144,7 @@ function BrowserEdgeTint(_ref) {
8142
8144
  }, "bottom:" + bottomColor)]
8143
8145
  }), target);
8144
8146
  }
8145
- var EdgeStrip = styledComponents.styled.div(_templateObject$Y || (_templateObject$Y = _taggedTemplateLiteralLoose(["\n position: fixed;\n left: 0;\n right: 0;\n ", ": 0;\n height: ", "px;\n background: ", ";\n ", "\n pointer-events: none;\n"])), function (_ref2) {
8147
+ var EdgeStrip = styledComponents.styled.div(_templateObject$Z || (_templateObject$Z = _taggedTemplateLiteralLoose(["\n position: fixed;\n left: 0;\n right: 0;\n ", ": 0;\n height: ", "px;\n background: ", ";\n ", "\n pointer-events: none;\n"])), function (_ref2) {
8146
8148
  var $edge = _ref2.$edge;
8147
8149
  return $edge;
8148
8150
  }, EDGE_STRIP_PX, function (_ref3) {
@@ -8153,8 +8155,13 @@ var EdgeStrip = styledComponents.styled.div(_templateObject$Y || (_templateObjec
8153
8155
  return $hidden ? 'opacity: 0;' : '';
8154
8156
  });
8155
8157
 
8156
- var _templateObject$X;
8158
+ var _templateObject$Y, _templateObject2$P;
8157
8159
  var _excluded$h = ["children", "className", "colors", "disabled", "finished", "variant"];
8160
+ /**
8161
+ * The SDK's action button. `ladda-button` / `ladda-label` are kept as class
8162
+ * hooks from when Ladda drew the loading state, since 2.x customer CSS may
8163
+ * target them.
8164
+ */
8158
8165
  var LoaderButton = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
8159
8166
  var children = _ref.children,
8160
8167
  className = _ref.className,
@@ -8165,49 +8172,14 @@ var LoaderButton = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
8165
8172
  _ref$variant = _ref.variant,
8166
8173
  variant = _ref$variant === void 0 ? 'primary' : _ref$variant,
8167
8174
  props = _objectWithoutPropertiesLoose(_ref, _excluded$h);
8168
- var buttonRef = React.useRef(null);
8169
- var laddaRef = React.useRef(null);
8170
- var _useState = React.useState(false),
8171
- _useState2 = _slicedToArray(_useState, 2),
8172
- laddaLoaded = _useState2[0],
8173
- setLaddaLoaded = _useState2[1];
8174
- // Expose the button element to the parent via ref
8175
- React.useImperativeHandle(ref, function () {
8176
- return buttonRef.current;
8177
- }, []);
8178
- React.useEffect(function () {
8179
- if (laddaLoaded || finished) return;
8180
- var interval;
8181
- var isMounted = true;
8182
- import('ladda').then(function (Ladda) {
8183
- if (!buttonRef.current || !isMounted) return;
8184
- laddaRef.current = Ladda.create(buttonRef.current);
8185
- laddaRef.current.start();
8186
- setLaddaLoaded(true);
8187
- var currentProgress = 0;
8188
- interval = setInterval(function () {
8189
- var _laddaRef$current;
8190
- if (currentProgress < 0.9) currentProgress += 0.1;
8191
- (_laddaRef$current = laddaRef.current) == null || _laddaRef$current.setProgress(currentProgress);
8192
- }, 250);
8193
- });
8194
- return function () {
8195
- var _laddaRef$current2;
8196
- isMounted = false;
8197
- (_laddaRef$current2 = laddaRef.current) == null || _laddaRef$current2.remove();
8198
- clearInterval(interval);
8199
- };
8200
- }, [finished, laddaLoaded]);
8201
- React.useEffect(function () {
8202
- var _laddaRef$current3;
8203
- if (laddaLoaded && finished) (_laddaRef$current3 = laddaRef.current) == null || _laddaRef$current3.stop();
8204
- }, [finished, laddaLoaded]);
8175
+ var loading = finished === false;
8176
+ var inert = disabled || loading;
8205
8177
  return jsxRuntime.jsx(StyledButton, _extends({
8206
- className: "ladda-button " + className + " " + (disabled ? 'disabled' : ''),
8207
- "data-style": "expand-right",
8178
+ className: "ladda-button " + className + " " + (inert ? 'disabled' : ''),
8208
8179
  type: "button",
8209
- disabled: disabled,
8210
- ref: buttonRef,
8180
+ disabled: inert,
8181
+ "aria-busy": loading,
8182
+ ref: ref,
8211
8183
  "$backgroundColor": colors.backgroundColor,
8212
8184
  "$textColor": colors.textColor,
8213
8185
  "$disabledBackgroundColor": colors.loadingBackgroundColor,
@@ -8221,16 +8193,19 @@ var LoaderButton = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
8221
8193
  }));
8222
8194
  });
8223
8195
  LoaderButton.displayName = 'LoaderButton';
8224
- var StyledButton = styledComponents.styled.button(_templateObject$X || (_templateObject$X = _taggedTemplateLiteralLoose(["\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) {
8225
- var _props$theme$buttons, _ref2, _props$$textColor, _props$theme$buttons2, _props$$variant, _ref3, _props$$backgroundCol, _props$theme$buttons3, _props$$variant2, _ref4, _props$$disabledTextC, _props$theme$buttons4, _ref5, _props$$disabledBackg, _props$theme$buttons5, _props$$disabledBackg2;
8226
- return ((_props$theme$buttons = props.theme.buttons) == null ? void 0 : _props$theme$buttons.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-color);\n background-color: var(--bs-btn-bg);\n border-color: var(--bs-btn-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: " + ((_ref2 = (_props$$textColor = props.$textColor) != null ? _props$$textColor : (_props$theme$buttons2 = props.theme.buttons) == null || (_props$theme$buttons2 = _props$theme$buttons2[(_props$$variant = props.$variant) != null ? _props$$variant : 'primary']) == null ? void 0 : _props$theme$buttons2.textColor) != null ? _ref2 : '#fff') + ";\n --bs-btn-bg: " + ((_ref3 = (_props$$backgroundCol = props.$backgroundColor) != null ? _props$$backgroundCol : (_props$theme$buttons3 = props.theme.buttons) == null || (_props$theme$buttons3 = _props$theme$buttons3[(_props$$variant2 = props.$variant) != null ? _props$$variant2 : 'primary']) == null ? void 0 : _props$theme$buttons3.backgroundColor) != null ? _ref3 : '#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: " + ((_ref4 = (_props$$disabledTextC = props.$disabledTextColor) != null ? _props$$disabledTextC : (_props$theme$buttons4 = props.theme.buttons) == null || (_props$theme$buttons4 = _props$theme$buttons4.loading) == null ? void 0 : _props$theme$buttons4.textColor) != null ? _ref4 : '#fff') + ";\n --bs-btn-disabled-bg: " + ((_ref5 = (_props$$disabledBackg = props.$disabledBackgroundColor) != null ? _props$$disabledBackg : (_props$theme$buttons5 = props.theme.buttons) == null || (_props$theme$buttons5 = _props$theme$buttons5.loading) == null ? void 0 : _props$theme$buttons5.backgroundColor) != null ? _ref5 : 'gray') + ";\n --bs-btn-disabled-border-color: " + ((_props$$disabledBackg2 = props.$disabledBackgroundColor) != null ? _props$$disabledBackg2 : '#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 ";
8227
- });
8196
+ // From just off the left edge to just off the right: the bar is 38% wide, so
8197
+ // 265% of its own width carries it clear.
8198
+ var track = styledComponents.keyframes(_templateObject$Y || (_templateObject$Y = _taggedTemplateLiteralLoose(["\n from { transform: translateX(-100%); }\n to { transform: translateX(265%); }\n"])));
8199
+ var StyledButton = styledComponents.styled.button(_templateObject2$P || (_templateObject2$P = _taggedTemplateLiteralLoose(["\n ", "\n\n position: relative;\n transition: 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) all !important;\n\n /* Keeps the label above the loading bar below. */\n .ladda-label {\n position: relative;\n z-index: 3;\n }\n\n /* The loading state: a short bar glides along the inside of the bottom\n edge, clipped to the button's shape, in the label's colour. The label\n stays put, so callers whose label carries progress keep it readable.\n Transform-only, so it composites without repainting. */\n &[aria-busy='true'] {\n overflow: hidden;\n\n &::after {\n content: '';\n position: absolute;\n left: 0;\n bottom: 0;\n width: 38%;\n height: 3px;\n border-radius: 3px;\n background: currentColor;\n animation: ", " 1.5s cubic-bezier(0.65, 0, 0.35, 1) infinite;\n }\n\n @media (prefers-reduced-motion: reduce) {\n &::after {\n animation: none;\n width: 100%;\n opacity: 0.4;\n }\n }\n }\n"])), function (props) {
8200
+ var _props$theme$buttons, _ref2, _props$$textColor, _props$theme$buttons2, _props$$variant, _ref3, _props$$backgroundCol, _props$theme$buttons3, _props$$variant2, _ref4, _props$$disabledTextC, _props$theme$buttons4, _ref5, _props$$disabledBackg, _props$theme$buttons5;
8201
+ return ((_props$theme$buttons = props.theme.buttons) == null ? void 0 : _props$theme$buttons.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-color);\n background-color: var(--bs-btn-bg);\n border-color: var(--bs-btn-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: " + ((_ref2 = (_props$$textColor = props.$textColor) != null ? _props$$textColor : (_props$theme$buttons2 = props.theme.buttons) == null || (_props$theme$buttons2 = _props$theme$buttons2[(_props$$variant = props.$variant) != null ? _props$$variant : 'primary']) == null ? void 0 : _props$theme$buttons2.textColor) != null ? _ref2 : '#fff') + ";\n --bs-btn-bg: " + ((_ref3 = (_props$$backgroundCol = props.$backgroundColor) != null ? _props$$backgroundCol : (_props$theme$buttons3 = props.theme.buttons) == null || (_props$theme$buttons3 = _props$theme$buttons3[(_props$$variant2 = props.$variant) != null ? _props$$variant2 : 'primary']) == null ? void 0 : _props$theme$buttons3.backgroundColor) != null ? _ref3 : '#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: " + ((_ref4 = (_props$$disabledTextC = props.$disabledTextColor) != null ? _props$$disabledTextC : (_props$theme$buttons4 = props.theme.buttons) == null || (_props$theme$buttons4 = _props$theme$buttons4.loading) == null ? void 0 : _props$theme$buttons4.textColor) != null ? _ref4 : '#fff') + ";\n --bs-btn-disabled-bg: " + ((_ref5 = (_props$$disabledBackg = props.$disabledBackgroundColor) != null ? _props$$disabledBackg : (_props$theme$buttons5 = props.theme.buttons) == null || (_props$theme$buttons5 = _props$theme$buttons5.loading) == null ? void 0 : _props$theme$buttons5.backgroundColor) != null ? _ref5 : 'gray') + ";\n --bs-btn-disabled-border-color: var(--bs-btn-disabled-bg);\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 ";
8202
+ }, track);
8228
8203
 
8229
- var _templateObject$W;
8230
- var ButtonsRow$2 = styledComponents.styled.div(_templateObject$W || (_templateObject$W = _taggedTemplateLiteralLoose(["\n display: flex;\n gap: 0 15px;\n justify-content: center;\n text-align: left;\n"])));
8204
+ var _templateObject$X;
8205
+ var ButtonsRow$2 = styledComponents.styled.div(_templateObject$X || (_templateObject$X = _taggedTemplateLiteralLoose(["\n display: flex;\n gap: 0 15px;\n justify-content: center;\n text-align: left;\n"])));
8231
8206
 
8232
- var _templateObject$V, _templateObject2$O;
8233
- var GuidanceMessageContainerDiv = styledComponents.styled.div(_templateObject$V || (_templateObject$V = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: calc(", ");\n ", "\n font-weight: bold;\n width: 100%;\n display: flex;\n padding: 0 10%;\n box-sizing: border-box;\n"])), function (_ref) {
8207
+ var _templateObject$W, _templateObject2$O;
8208
+ var GuidanceMessageContainerDiv = styledComponents.styled.div(_templateObject$W || (_templateObject$W = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: calc(", ");\n ", "\n font-weight: bold;\n width: 100%;\n display: flex;\n padding: 0 10%;\n box-sizing: border-box;\n"])), function (_ref) {
8234
8209
  var $top = _ref.$top;
8235
8210
  return $top != null ? $top : '10%';
8236
8211
  }, function (_ref2) {
@@ -8295,14 +8270,14 @@ var PlacedGuidanceMessageContainer = function PlacedGuidanceMessageContainer(_re
8295
8270
  });
8296
8271
  };
8297
8272
 
8298
- var _templateObject$U, _templateObject2$N, _templateObject3$C, _templateObject4$x;
8299
- var wavesAnimation = styledComponents.keyframes(_templateObject$U || (_templateObject$U = _taggedTemplateLiteralLoose(["\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"])));
8273
+ var _templateObject$V, _templateObject2$N, _templateObject3$C, _templateObject4$x;
8274
+ var wavesAnimation = styledComponents.keyframes(_templateObject$V || (_templateObject$V = _taggedTemplateLiteralLoose(["\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"])));
8300
8275
  var progressBarAnimation = styledComponents.keyframes(_templateObject2$N || (_templateObject2$N = _taggedTemplateLiteralLoose(["\n 0% {\n width: 0;\n }\n 100% {\n width: 100%;\n }\n"])));
8301
8276
  styledComponents.keyframes(_templateObject3$C || (_templateObject3$C = _taggedTemplateLiteralLoose(["\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n"])));
8302
8277
  styledComponents.keyframes(_templateObject4$x || (_templateObject4$x = _taggedTemplateLiteralLoose(["\n to {\n stroke-dashoffset: 0;\n }\n"])));
8303
8278
 
8304
- var _templateObject$T, _templateObject2$M, _templateObject3$B, _templateObject4$w, _templateObject5$s, _templateObject6$k, _templateObject7$h, _templateObject8$d, _templateObject9$d, _templateObject0$b, _templateObject1$a, _templateObject10$a, _templateObject11$7, _templateObject12$6, _templateObject13$6, _templateObject14$6, _templateObject15$5, _templateObject16$4, _templateObject17$3, _templateObject18$3, _templateObject19$3, _templateObject20$3;
8305
- var OverlayContainer = styledComponents.styled.div(_templateObject$T || (_templateObject$T = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n display: flex;\n flex-direction: column;\n\n overflow-x: hidden;\n overflow-y: auto;\n\n background: ", ";\n ", "\n\n z-index: 10000;\n"])), function (props) {
8279
+ var _templateObject$U, _templateObject2$M, _templateObject3$B, _templateObject4$w, _templateObject5$s, _templateObject6$k, _templateObject7$h, _templateObject8$d, _templateObject9$d, _templateObject0$b, _templateObject1$a, _templateObject10$9, _templateObject11$7, _templateObject12$6, _templateObject13$6, _templateObject14$6, _templateObject15$5, _templateObject16$4, _templateObject17$3, _templateObject18$3, _templateObject19$3, _templateObject20$3;
8280
+ var OverlayContainer = styledComponents.styled.div(_templateObject$U || (_templateObject$U = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n display: flex;\n flex-direction: column;\n\n overflow-x: hidden;\n overflow-y: auto;\n\n background: ", ";\n ", "\n\n z-index: 10000;\n"])), function (props) {
8306
8281
  return props.theme.background ? "" + props.theme.background : "white";
8307
8282
  }, function (props) {
8308
8283
  return props.theme.textColor ? "color: " + props.theme.textColor + ";" : "";
@@ -8342,7 +8317,7 @@ var LoadingOverlayHeader = styledComponents.styled.div(_templateObject0$b || (_t
8342
8317
  return props.theme.padding ? "box-sizing: border-box; padding: " + props.theme.padding + ";" : "";
8343
8318
  });
8344
8319
  var LoadingOverlayGuidanceMessage = styledComponents.styled(GuidanceMessage)(_templateObject1$a || (_templateObject1$a = _taggedTemplateLiteralLoose(["\n padding: 16px 24px;\n margin-top: 16px;\n font-size: 18px;\n font-weight: bold;\n"])));
8345
- var LoadingOverlayImageContainer = styledComponents.styled(OverlayImageContainer)(_templateObject10$a || (_templateObject10$a = _taggedTemplateLiteralLoose(["\n padding: 0;\n max-height: 100%;\n pointer-events: none;\n"])));
8320
+ var LoadingOverlayImageContainer = styledComponents.styled(OverlayImageContainer)(_templateObject10$9 || (_templateObject10$9 = _taggedTemplateLiteralLoose(["\n padding: 0;\n max-height: 100%;\n pointer-events: none;\n"])));
8346
8321
  var LoadingOverlayProgressBarBackground = styledComponents.styled.div.attrs({
8347
8322
  className: 'loading-overlay-progress-bar-background'
8348
8323
  })(_templateObject11$7 || (_templateObject11$7 = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n"])));
@@ -8477,8 +8452,8 @@ var error = function error() {
8477
8452
 
8478
8453
  var _excluded$g = ["children", "status", "borderWidth", "borderRadius", "borderColor", "aspectRatio", "progress", "guideBoxDisabled"],
8479
8454
  _excluded2$5 = ["borderRadius", "borderColor", "borderWidth", "borderOpacity", "progress", "isProgressBar", "scaleBorderRadius"];
8480
- var _templateObject$S, _templateObject2$L, _templateObject3$A, _templateObject4$v, _templateObject5$r, _templateObject6$j, _templateObject7$g;
8481
- var IdCardGuideImageContainer = styledComponents.styled(IdCardBorder)(_templateObject$S || (_templateObject$S = _taggedTemplateLiteralLoose(["\n position: relative;\n ", "\n box-sizing: border-box;\n max-width: 100%;\n max-height: 100%;\n ", ";\n"])), function (props) {
8455
+ var _templateObject$T, _templateObject2$L, _templateObject3$A, _templateObject4$v, _templateObject5$r, _templateObject6$j, _templateObject7$g;
8456
+ var IdCardGuideImageContainer = styledComponents.styled(IdCardBorder)(_templateObject$T || (_templateObject$T = _taggedTemplateLiteralLoose(["\n position: relative;\n ", "\n box-sizing: border-box;\n max-width: 100%;\n max-height: 100%;\n ", ";\n"])), function (props) {
8482
8457
  return props.$isVisible ? '' : 'opacity: 0;';
8483
8458
  }, function (props) {
8484
8459
  return props.$isMobile ? props.$isLandscape ? 'height: 100%;' : 'width: 80%;' : props.$isLandscape ? 'height: 70%;' : 'width: 82%;';
@@ -8774,7 +8749,7 @@ function useGuideImagesByUrl(images) {
8774
8749
  }, [images]);
8775
8750
  }
8776
8751
 
8777
- var _templateObject$R;
8752
+ var _templateObject$S;
8778
8753
  var FlipIdPrompt = function FlipIdPrompt(_ref) {
8779
8754
  var _ref$images = _ref.images,
8780
8755
  images = _ref$images === void 0 ? defaultIdCaptureGuideImages : _ref$images,
@@ -8871,11 +8846,11 @@ var FlipIdPrompt = function FlipIdPrompt(_ref) {
8871
8846
  })]
8872
8847
  });
8873
8848
  };
8874
- var Wrapper$1 = styledComponents.styled.div(_templateObject$R || (_templateObject$R = _taggedTemplateLiteralLoose(["\n align-items: center;\n justify-content: center;\n display: flex;\n position: absolute;\n margin: auto;\n box-sizing: border-box;\n max-width: 100%;\n max-height: 100%;\n ", ";\n"])), function (props) {
8849
+ var Wrapper$1 = styledComponents.styled.div(_templateObject$S || (_templateObject$S = _taggedTemplateLiteralLoose(["\n align-items: center;\n justify-content: center;\n display: flex;\n position: absolute;\n margin: auto;\n box-sizing: border-box;\n max-width: 100%;\n max-height: 100%;\n ", ";\n"])), function (props) {
8875
8850
  return props.$isMobile ? props.$isLandscape ? 'height: 100%;' : 'width: 80%;' : props.$isLandscape ? 'height: 70%;' : 'width: 82%;';
8876
8851
  });
8877
8852
 
8878
- var _templateObject$Q, _templateObject2$K, _templateObject3$z, _templateObject4$u, _templateObject5$q, _templateObject6$i, _templateObject7$f, _templateObject8$c, _templateObject9$c;
8853
+ var _templateObject$R, _templateObject2$K, _templateObject3$z, _templateObject4$u, _templateObject5$q, _templateObject6$i, _templateObject7$f, _templateObject8$c, _templateObject9$c;
8879
8854
  var IdCaptureGuideOverlay = function IdCaptureGuideOverlay(_ref) {
8880
8855
  var _theme$idCapture$guid, _theme$idCapture, _theme$idCapture$guid2, _theme$idCapture2, _theme$idCapture$guid3, _theme$idCapture3, _theme$idCapture$guid4, _theme$idCapture4, _theme$idCapture$guid5, _theme$idCapture5;
8881
8856
  var _ref$classNames = _ref.classNames,
@@ -9031,7 +9006,7 @@ var regionClsx = function regionClsx(classNames, which) {
9031
9006
  return v;
9032
9007
  }).join(' ');
9033
9008
  };
9034
- var StyledPageContainer = styledComponents.styled.div(_templateObject$Q || (_templateObject$Q = _taggedTemplateLiteralLoose(["\n position: relative;\n width: 100%;\n height: 100%;\n z-index: 1000;\n overflow: hidden;\n"])));
9009
+ var StyledPageContainer = styledComponents.styled.div(_templateObject$R || (_templateObject$R = _taggedTemplateLiteralLoose(["\n position: relative;\n width: 100%;\n height: 100%;\n z-index: 1000;\n overflow: hidden;\n"])));
9035
9010
  var GuidesContainer = styledComponents.styled.div(_templateObject2$K || (_templateObject2$K = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-flow: column nowrap;\n width: 100%;\n height: 100%;\n"])));
9036
9011
  var GuideCenterRow = styledComponents.styled.div(_templateObject3$z || (_templateObject3$z = _taggedTemplateLiteralLoose(["\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"])));
9037
9012
  var GuideRegion = styledComponents.styled.div(_templateObject4$u || (_templateObject4$u = _taggedTemplateLiteralLoose(["\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) {
@@ -9064,7 +9039,7 @@ var GuideCenterInner = styledComponents.styled.div(_templateObject9$c || (_templ
9064
9039
  /** The mask colour when neither the prop nor the theme sets one. */
9065
9040
  var OVERLAY_GUIDE_MASK_DEFAULT = 'rgba(0, 0, 0, 0.5)';
9066
9041
 
9067
- var _templateObject$P, _templateObject2$J, _templateObject3$y, _templateObject4$t;
9042
+ var _templateObject$Q, _templateObject2$J, _templateObject3$y, _templateObject4$t;
9068
9043
  var IdCaptureFitGuide = function IdCaptureFitGuide(_ref) {
9069
9044
  var _theme$idCapture$guid, _theme$idCapture, _theme$idCapture$guid5, _theme$idCapture5, _theme$idCapture$guid6, _theme$idCapture6, _theme$idCapture$guid7, _theme$idCapture7;
9070
9045
  var aspectRatio = _ref.aspectRatio,
@@ -9301,7 +9276,7 @@ var IdCaptureFitGuide = function IdCaptureFitGuide(_ref) {
9301
9276
  })]
9302
9277
  });
9303
9278
  };
9304
- var CanvasWrapper$1 = styledComponents.styled.div(_templateObject$P || (_templateObject$P = _taggedTemplateLiteralLoose(["\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 /* The default -1 puts the mask behind a 'fullscreen' camera feed, which hides\n the dimming entirely; it only works because 'snapToGuides' clips the feed to\n the guide rect. Lifting it is opt-in so existing integrations are untouched. */\n ", "\n"])), function (props) {
9279
+ var CanvasWrapper$1 = styledComponents.styled.div(_templateObject$Q || (_templateObject$Q = _taggedTemplateLiteralLoose(["\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 /* The default -1 puts the mask behind a 'fullscreen' camera feed, which hides\n the dimming entirely; it only works because 'snapToGuides' clips the feed to\n the guide rect. Lifting it is opt-in so existing integrations are untouched. */\n ", "\n"])), function (props) {
9305
9280
  return props.$aboveCameraFeed ? "z-index: 1;" : "box-shadow: inset 0 0 0 2px " + props.$maskColor + ";\n z-index: -1;";
9306
9281
  });
9307
9282
  var Canvas$2 = styledComponents.styled.canvas(_templateObject2$J || (_templateObject2$J = _taggedTemplateLiteralLoose(["\n display: block;\n"])));
@@ -9333,8 +9308,8 @@ function downloadingLabel(downloadingText, downloadProgress) {
9333
9308
  });
9334
9309
  }
9335
9310
 
9336
- var _templateObject$O;
9337
- var ExitCaptureStyledButton = styledComponents.styled.button(_templateObject$O || (_templateObject$O = _taggedTemplateLiteralLoose(["\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: 10002;\n border: none;\n border-radius: 4px;\n background: var(--idm-color-secondary-200);\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"])));
9311
+ var _templateObject$P;
9312
+ var ExitCaptureStyledButton = styledComponents.styled.button(_templateObject$P || (_templateObject$P = _taggedTemplateLiteralLoose(["\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: 10002;\n border: none;\n border-radius: 4px;\n background: var(--idm-color-secondary-200);\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"])));
9338
9313
  var ExitCaptureButton = function ExitCaptureButton(_ref) {
9339
9314
  var onClick = _ref.onClick,
9340
9315
  className = _ref.className;
@@ -9383,7 +9358,7 @@ var ExitCaptureButton = function ExitCaptureButton(_ref) {
9383
9358
  });
9384
9359
  };
9385
9360
 
9386
- var _templateObject$N, _templateObject2$I, _templateObject3$x, _templateObject4$s;
9361
+ var _templateObject$O, _templateObject2$I, _templateObject3$x, _templateObject4$s;
9387
9362
  function IdCaptureLoadingGraphic(props) {
9388
9363
  var isMobile = window.innerHeight > window.innerWidth;
9389
9364
  return isMobile ? jsxRuntime.jsx(IdCaptureLoadingGraphicMobile, _extends({}, props)) : jsxRuntime.jsx(IdCaptureLoadingGraphicDesktop, _extends({}, props));
@@ -9880,7 +9855,7 @@ function IdCaptureLoadingGraphicMobile(_ref2) {
9880
9855
  })]
9881
9856
  });
9882
9857
  }
9883
- var LoadingGraphicWrapper = styledComponents.styled.div(_templateObject$N || (_templateObject$N = _taggedTemplateLiteralLoose(["\n display: flex;\n width: 100%;\n height: 100%;\n"])));
9858
+ var LoadingGraphicWrapper = styledComponents.styled.div(_templateObject$O || (_templateObject$O = _taggedTemplateLiteralLoose(["\n display: flex;\n width: 100%;\n height: 100%;\n"])));
9884
9859
  var LoadingGraphicSvg = styledComponents.styled.svg(_templateObject2$I || (_templateObject2$I = _taggedTemplateLiteralLoose(["\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 max-height: 80%;\n max-width: 80%;\n"])), function (props) {
9885
9860
  return props.$frame > 1 ? 1 : props.$frame === 1 ? 1.25 : 0.75;
9886
9861
  }, function (props) {
@@ -10079,7 +10054,7 @@ var useAutoContinueWhenReady = function useAutoContinueWhenReady(_ref) {
10079
10054
  }, [enabled, ready]);
10080
10055
  };
10081
10056
 
10082
- var _templateObject$M;
10057
+ var _templateObject$N;
10083
10058
  var LoadingSpinnerContext = /*#__PURE__*/React.createContext(undefined);
10084
10059
  function LoadingSpinnerProvider(_ref) {
10085
10060
  var spinner = _ref.spinner,
@@ -10147,9 +10122,9 @@ function CustomerLoadingSpinner(_ref2) {
10147
10122
  }
10148
10123
  // `display: contents` while empty: an empty flex box still occupies its
10149
10124
  // parent's gap/padding, which would offset the fallback it sits next to.
10150
- var SpinnerSlot = styledComponents.styled.div(_templateObject$M || (_templateObject$M = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:empty {\n display: contents;\n }\n"])));
10125
+ var SpinnerSlot = styledComponents.styled.div(_templateObject$N || (_templateObject$N = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:empty {\n display: contents;\n }\n"])));
10151
10126
 
10152
- var _templateObject$L, _templateObject2$H, _templateObject3$w, _templateObject4$r, _templateObject5$p;
10127
+ var _templateObject$M, _templateObject2$H, _templateObject3$w, _templateObject4$r, _templateObject5$p;
10153
10128
  var legacyInstructionImageUrl$1 = DEFAULT_CDN_URL$1 + "/WebSDK-Instruction-DL-Capture-3-Portrait.png";
10154
10129
  // Module-level so the default `now` prop has a stable identity across
10155
10130
  // renders (it sits in useModelWarmingElapsedMs's effect dependency array).
@@ -10338,7 +10313,7 @@ var IdCaptureLoadingOverlayDefault = function IdCaptureLoadingOverlayDefault(_re
10338
10313
  })
10339
10314
  });
10340
10315
  };
10341
- var OverlayInner$1 = styledComponents.styled(LoadingOverlayInner)(_templateObject$L || (_templateObject$L = _taggedTemplateLiteralLoose(["\n background: ", ";\n color: ", ";\n"])), function (props) {
10316
+ var OverlayInner$1 = styledComponents.styled(LoadingOverlayInner)(_templateObject$M || (_templateObject$M = _taggedTemplateLiteralLoose(["\n background: ", ";\n color: ", ";\n"])), function (props) {
10342
10317
  var _props$theme$idCaptur, _props$theme;
10343
10318
  return (_props$theme$idCaptur = (_props$theme = props.theme) == null || (_props$theme = _props$theme.idCapture) == null || (_props$theme = _props$theme.loadingOverlay) == null ? void 0 : _props$theme.backgroundColor) != null ? _props$theme$idCaptur : LOADING_OVERLAY_BACKGROUND_DEFAULT;
10344
10319
  }, function (props) {
@@ -18999,7 +18974,7 @@ function instructionVerbiage(bag, code) {
18999
18974
  return bag == null ? void 0 : bag[instructionVerbiageKeys[code]];
19000
18975
  }
19001
18976
 
19002
- var _templateObject$K, _templateObject2$G, _templateObject3$v, _templateObject4$q, _templateObject5$o;
18977
+ var _templateObject$L, _templateObject2$G, _templateObject3$v, _templateObject4$q, _templateObject5$o;
19003
18978
  var PDF417_ASPECT_RATIO = 3 / 1;
19004
18979
  function BarcodeGuideOverlay(_ref) {
19005
18980
  var _ref$aspectRatio = _ref.aspectRatio,
@@ -19129,14 +19104,14 @@ function BarcodeGuideOverlay(_ref) {
19129
19104
  })]
19130
19105
  });
19131
19106
  }
19132
- var Wrapper = styledComponents.styled.div(_templateObject$K || (_templateObject$K = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n z-index: 1;\n"])));
19107
+ var Wrapper = styledComponents.styled.div(_templateObject$L || (_templateObject$L = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n z-index: 1;\n"])));
19133
19108
  var Canvas$1 = styledComponents.styled.canvas(_templateObject2$G || (_templateObject2$G = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n"])));
19134
19109
  var TextOverlay = styledComponents.styled.div(_templateObject3$v || (_templateObject3$v = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n padding-top: 48px;\n pointer-events: none;\n z-index: 2;\n"])));
19135
19110
  var HeaderText = styledComponents.styled.div(_templateObject4$q || (_templateObject4$q = _taggedTemplateLiteralLoose(["\n color: white;\n font-size: 24px;\n font-weight: 700;\n text-align: center;\n text-transform: uppercase;\n letter-spacing: 2px;\n margin-bottom: 16px;\n"])));
19136
19111
  var InstructionText = styledComponents.styled.div(_templateObject5$o || (_templateObject5$o = _taggedTemplateLiteralLoose(["\n color: white;\n font-size: 16px;\n font-weight: 400;\n text-align: center;\n max-width: 300px;\n line-height: 1.4;\n opacity: 0.9;\n"])));
19137
19112
 
19138
- var _templateObject$J, _templateObject2$F, _templateObject3$u, _templateObject4$p, _templateObject5$n, _templateObject6$h;
19139
- var scaleIn = styledComponents.keyframes(_templateObject$J || (_templateObject$J = _taggedTemplateLiteralLoose(["\n 0% {\n transform: scale(0);\n opacity: 0;\n }\n 50% {\n transform: scale(1.1);\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n"])));
19113
+ var _templateObject$K, _templateObject2$F, _templateObject3$u, _templateObject4$p, _templateObject5$n, _templateObject6$h;
19114
+ var scaleIn = styledComponents.keyframes(_templateObject$K || (_templateObject$K = _taggedTemplateLiteralLoose(["\n 0% {\n transform: scale(0);\n opacity: 0;\n }\n 50% {\n transform: scale(1.1);\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n"])));
19140
19115
  var drawCheck = styledComponents.keyframes(_templateObject2$F || (_templateObject2$F = _taggedTemplateLiteralLoose(["\n 0% {\n stroke-dashoffset: 24;\n }\n 100% {\n stroke-dashoffset: 0;\n }\n"])));
19141
19116
  styledComponents.styled.div(_templateObject3$u || (_templateObject3$u = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n z-index: 3;\n"])));
19142
19117
  styledComponents.styled.div(_templateObject4$p || (_templateObject4$p = _taggedTemplateLiteralLoose(["\n width: 80px;\n height: 80px;\n border-radius: 50%;\n background-color: ", ";\n display: flex;\n align-items: center;\n justify-content: center;\n animation: ", " 0.4s ease-out forwards;\n"])), function (props) {
@@ -19237,7 +19212,7 @@ function IdCaptureGuides(_ref) {
19237
19212
  });
19238
19213
  }
19239
19214
 
19240
- var _templateObject$I, _templateObject2$E, _templateObject3$t, _templateObject4$o, _templateObject5$m;
19215
+ var _templateObject$J, _templateObject2$E, _templateObject3$t, _templateObject4$o, _templateObject5$m;
19241
19216
  function OverrideWrongDocumentTypeDialog(_ref) {
19242
19217
  var visible = _ref.visible,
19243
19218
  onOverride = _ref.onOverride,
@@ -19269,7 +19244,7 @@ function OverrideWrongDocumentTypeDialog(_ref) {
19269
19244
  })
19270
19245
  });
19271
19246
  }
19272
- var Container$3 = styledComponents.styled.div(_templateObject$I || (_templateObject$I = _taggedTemplateLiteralLoose(["\n position: fixed;\n left: 0;\n bottom: 0;\n width: 100%;\n background: ", ";\n color: ", ";\n display: flex;\n z-index: 100001;\n"])), function (props) {
19247
+ var Container$3 = styledComponents.styled.div(_templateObject$J || (_templateObject$J = _taggedTemplateLiteralLoose(["\n position: fixed;\n left: 0;\n bottom: 0;\n width: 100%;\n background: ", ";\n color: ", ";\n display: flex;\n z-index: 100001;\n"])), function (props) {
19273
19248
  var _props$theme$idCaptur, _props$theme$idCaptur2;
19274
19249
  return (_props$theme$idCaptur = (_props$theme$idCaptur2 = props.theme.idCapture) == null || (_props$theme$idCaptur2 = _props$theme$idCaptur2.overrideWrongDocumentTypeGuidance) == null ? void 0 : _props$theme$idCaptur2.backgroundColor) != null ? _props$theme$idCaptur : '#eed202';
19275
19250
  }, function (props) {
@@ -19386,7 +19361,7 @@ var IdCaptureLoadingOverlayLegacy = function IdCaptureLoadingOverlayLegacy(_ref)
19386
19361
  });
19387
19362
  };
19388
19363
 
19389
- var _templateObject$H, _templateObject2$D;
19364
+ var _templateObject$I, _templateObject2$D;
19390
19365
  var RING_SIZE = 74;
19391
19366
  var RADIUS = 32;
19392
19367
  var CIRCUMFERENCE = 2 * Math.PI * RADIUS;
@@ -19431,7 +19406,7 @@ var RingProgress = function RingProgress(_ref) {
19431
19406
  })]
19432
19407
  });
19433
19408
  };
19434
- var RingSvg = styledComponents.styled.svg(_templateObject$H || (_templateObject$H = _taggedTemplateLiteralLoose(["\n width: ", "px;\n height: ", "px;\n transform: rotate(-90deg);\n"])), RING_SIZE, RING_SIZE);
19409
+ var RingSvg = styledComponents.styled.svg(_templateObject$I || (_templateObject$I = _taggedTemplateLiteralLoose(["\n width: ", "px;\n height: ", "px;\n transform: rotate(-90deg);\n"])), RING_SIZE, RING_SIZE);
19435
19410
  var FillCircle = styledComponents.styled.circle(_templateObject2$D || (_templateObject2$D = _taggedTemplateLiteralLoose(["\n transition: stroke-dashoffset 0.3s linear;\n"])));
19436
19411
 
19437
19412
  var selectRingStatusKey = function selectRingStatusKey(_ref) {
@@ -19447,7 +19422,7 @@ var selectRingStatusKey = function selectRingStatusKey(_ref) {
19447
19422
  return 'warming';
19448
19423
  };
19449
19424
 
19450
- var _templateObject$G, _templateObject2$C, _templateObject3$s, _templateObject4$n, _templateObject5$l, _templateObject6$g, _templateObject7$e, _templateObject8$b, _templateObject9$b, _templateObject0$a, _templateObject1$9, _templateObject10$9;
19425
+ var _templateObject$H, _templateObject2$C, _templateObject3$s, _templateObject4$n, _templateObject5$l, _templateObject6$g, _templateObject7$e, _templateObject8$b, _templateObject9$b, _templateObject0$a, _templateObject1$9;
19451
19426
  /**
19452
19427
  * The ring overlay's priming cover page (CEO prototype `#v-prime`): camera
19453
19428
  * badge, title/subtitle, step chips, reassurance chip, "Enable camera &
@@ -19518,7 +19493,6 @@ var RingIntroScreen = function RingIntroScreen(_ref) {
19518
19493
  finished: !requesting,
19519
19494
  disabled: requesting,
19520
19495
  onClick: onStart,
19521
- "data-spinner-color": badgeColor,
19522
19496
  children: requesting ? requestingButtonText : startButtonText
19523
19497
  }), jsxRuntime.jsx(Privacy, {
19524
19498
  className: classNames.introPrivacy,
@@ -19526,20 +19500,19 @@ var RingIntroScreen = function RingIntroScreen(_ref) {
19526
19500
  })]
19527
19501
  });
19528
19502
  };
19529
- var _float = styledComponents.keyframes(_templateObject$G || (_templateObject$G = _taggedTemplateLiteralLoose(["\n 0%, 100% { transform: translateY(0); }\n 50% { transform: translateY(-7px); }\n"])));
19530
- var sweep = styledComponents.keyframes(_templateObject2$C || (_templateObject2$C = _taggedTemplateLiteralLoose(["\n from { transform: translateX(-100%); }\n to { transform: translateX(100%); }\n"])));
19531
- var IntroLayout = styledComponents.styled.div(_templateObject3$s || (_templateObject3$s = _taggedTemplateLiteralLoose(["\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 14px;\n padding: 34px;\n text-align: center;\n"])));
19532
- var Badge = styledComponents.styled.div(_templateObject4$n || (_templateObject4$n = _taggedTemplateLiteralLoose(["\n width: 84px;\n height: 84px;\n border-radius: 28px;\n background: ", ";\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 12px 28px\n color-mix(in srgb, ", " 35%, transparent);\n margin-bottom: 8px;\n animation: ", " 3s ease-in-out infinite;\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n\n svg {\n width: 40px;\n height: 40px;\n fill: #ffffff;\n }\n"])), function (props) {
19503
+ var _float = styledComponents.keyframes(_templateObject$H || (_templateObject$H = _taggedTemplateLiteralLoose(["\n 0%, 100% { transform: translateY(0); }\n 50% { transform: translateY(-7px); }\n"])));
19504
+ var IntroLayout = styledComponents.styled.div(_templateObject2$C || (_templateObject2$C = _taggedTemplateLiteralLoose(["\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 14px;\n padding: 34px;\n text-align: center;\n"])));
19505
+ var Badge = styledComponents.styled.div(_templateObject3$s || (_templateObject3$s = _taggedTemplateLiteralLoose(["\n width: 84px;\n height: 84px;\n border-radius: 28px;\n background: ", ";\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 12px 28px\n color-mix(in srgb, ", " 35%, transparent);\n margin-bottom: 8px;\n animation: ", " 3s ease-in-out infinite;\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n\n svg {\n width: 40px;\n height: 40px;\n fill: #ffffff;\n }\n"])), function (props) {
19533
19506
  return props.$color;
19534
19507
  }, function (props) {
19535
19508
  return props.$color;
19536
19509
  }, _float);
19537
- var Title$4 = styledComponents.styled.div(_templateObject5$l || (_templateObject5$l = _taggedTemplateLiteralLoose(["\n font-size: 22px;\n font-weight: 700;\n"])));
19538
- var Subtitle$3 = styledComponents.styled.div(_templateObject6$g || (_templateObject6$g = _taggedTemplateLiteralLoose(["\n font-size: 14px;\n opacity: 0.65;\n line-height: 1.5;\n"])));
19539
- var Steps = styledComponents.styled.div(_templateObject7$e || (_templateObject7$e = _taggedTemplateLiteralLoose(["\n display: flex;\n gap: 26px;\n margin: 16px 0 6px;\n"])));
19540
- var Step = styledComponents.styled.div(_templateObject8$b || (_templateObject8$b = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n font-size: 11px;\n opacity: 0.75;\n width: 90px;\n"])));
19541
- var StepDot = styledComponents.styled.div(_templateObject9$b || (_templateObject9$b = _taggedTemplateLiteralLoose(["\n width: 44px;\n height: 44px;\n border-radius: 50%;\n background: #ffffff;\n border: 1.5px solid rgba(0, 0, 0, 0.08);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 18px;\n"])));
19542
- var ReassuranceChip = styledComponents.styled.div(_templateObject0$a || (_templateObject0$a = _taggedTemplateLiteralLoose(["\n font-size: 11px;\n background: ", ";\n border-radius: 10px;\n padding: 6px 12px;\n max-width: 250px;\n line-height: 1.4;\n"])), function (props) {
19510
+ var Title$4 = styledComponents.styled.div(_templateObject4$n || (_templateObject4$n = _taggedTemplateLiteralLoose(["\n font-size: 22px;\n font-weight: 700;\n"])));
19511
+ var Subtitle$3 = styledComponents.styled.div(_templateObject5$l || (_templateObject5$l = _taggedTemplateLiteralLoose(["\n font-size: 14px;\n opacity: 0.65;\n line-height: 1.5;\n"])));
19512
+ var Steps = styledComponents.styled.div(_templateObject6$g || (_templateObject6$g = _taggedTemplateLiteralLoose(["\n display: flex;\n gap: 26px;\n margin: 16px 0 6px;\n"])));
19513
+ var Step = styledComponents.styled.div(_templateObject7$e || (_templateObject7$e = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n font-size: 11px;\n opacity: 0.75;\n width: 90px;\n"])));
19514
+ var StepDot = styledComponents.styled.div(_templateObject8$b || (_templateObject8$b = _taggedTemplateLiteralLoose(["\n width: 44px;\n height: 44px;\n border-radius: 50%;\n background: #ffffff;\n border: 1.5px solid rgba(0, 0, 0, 0.08);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 18px;\n"])));
19515
+ var ReassuranceChip = styledComponents.styled.div(_templateObject9$b || (_templateObject9$b = _taggedTemplateLiteralLoose(["\n font-size: 11px;\n background: ", ";\n border-radius: 10px;\n padding: 6px 12px;\n max-width: 250px;\n line-height: 1.4;\n"])), function (props) {
19543
19516
  return props.$tint;
19544
19517
  });
19545
19518
  /* Pill treatment from the CEO prototype (.btn.primary: radius 26, teal glow,
@@ -19547,10 +19520,8 @@ var ReassuranceChip = styledComponents.styled.div(_templateObject0$a || (_templa
19547
19520
  * theme styling. The glow and the deliberately quiet focus ring derive from
19548
19521
  * the button's own background (--bs-btn-bg, set by the theme's bootstrap
19549
19522
  * block) with the intro accent as fallback for un-themed buttons. Double
19550
- * ampersand outranks the base LoaderButton rules; Ladda's loading
19551
- * padding-right still wins (three-selector specificity) so the spinner
19552
- * keeps its room. */
19553
- var StartButton = styledComponents.styled(LoaderButton)(_templateObject1$9 || (_templateObject1$9 = _taggedTemplateLiteralLoose(["\n && {\n margin-top: 10px;\n white-space: nowrap;\n min-width: 240px;\n border: none;\n border-radius: 26px;\n padding: 15px 28px;\n font-size: 16px;\n font-weight: 600;\n box-shadow: 0 6px 18px\n color-mix(\n in srgb,\n var(--bs-btn-bg, ", ") 35%,\n transparent\n );\n\n &:hover:not(.disabled) {\n transform: translateY(-1px);\n box-shadow: 0 9px 24px\n color-mix(\n in srgb,\n var(--bs-btn-bg, ", ") 42%,\n transparent\n );\n }\n\n &:active:not(.disabled) {\n transform: translateY(0) scale(0.97);\n box-shadow: 0 4px 12px\n color-mix(\n in srgb,\n var(--bs-btn-bg, ", ") 30%,\n transparent\n );\n }\n\n &:focus-visible {\n outline: none;\n box-shadow:\n 0 6px 18px\n color-mix(\n in srgb,\n var(--bs-btn-bg, ", ") 35%,\n transparent\n ),\n 0 0 0 3px\n color-mix(\n in srgb,\n var(--bs-btn-bg, ", ") 25%,\n #ffffff\n );\n }\n\n /* Requesting-camera state: a pale accent tint (visibly \"waiting\", not\n * the solid \"go\" green), deep-accent label, and an indeterminate gloss\n * sweep. LoaderButton's simulated 0\u219290% progress fill is hidden \u2014 a\n * permission prompt has no knowable progress. */\n &.disabled {\n opacity: 1;\n overflow: hidden;\n background: color-mix(\n in srgb,\n var(--bs-btn-bg, ", ") 12%,\n #ffffff\n );\n color: color-mix(\n in srgb,\n var(--bs-btn-bg, ", ") 85%,\n #000000\n );\n box-shadow: 0 4px 14px\n color-mix(\n in srgb,\n var(--bs-btn-bg, ", ") 18%,\n transparent\n );\n\n &::after {\n content: '';\n position: absolute;\n inset: 0;\n z-index: 1;\n background: linear-gradient(\n 100deg,\n transparent 30%,\n rgb(255 255 255 / 0.65) 50%,\n transparent 70%\n );\n animation: ", " 1.4s ease-in-out infinite;\n }\n\n .ladda-progress {\n display: none;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n &:hover:not(.disabled),\n &:active:not(.disabled) {\n transform: none;\n }\n\n &.disabled::after {\n display: none;\n }\n }\n }\n"])), function (props) {
19523
+ * ampersand outranks the base LoaderButton rules. */
19524
+ var StartButton = styledComponents.styled(LoaderButton)(_templateObject0$a || (_templateObject0$a = _taggedTemplateLiteralLoose(["\n && {\n margin-top: 10px;\n white-space: nowrap;\n min-width: 240px;\n border: none;\n border-radius: 26px;\n padding: 15px 28px;\n font-size: 16px;\n font-weight: 600;\n box-shadow: 0 6px 18px\n color-mix(\n in srgb,\n var(--bs-btn-bg, ", ") 35%,\n transparent\n );\n\n &:hover:not(.disabled) {\n transform: translateY(-1px);\n box-shadow: 0 9px 24px\n color-mix(\n in srgb,\n var(--bs-btn-bg, ", ") 42%,\n transparent\n );\n }\n\n &:active:not(.disabled) {\n transform: translateY(0) scale(0.97);\n box-shadow: 0 4px 12px\n color-mix(\n in srgb,\n var(--bs-btn-bg, ", ") 30%,\n transparent\n );\n }\n\n &:focus-visible {\n outline: none;\n box-shadow:\n 0 6px 18px\n color-mix(\n in srgb,\n var(--bs-btn-bg, ", ") 35%,\n transparent\n ),\n 0 0 0 3px\n color-mix(\n in srgb,\n var(--bs-btn-bg, ", ") 25%,\n #ffffff\n );\n }\n\n /* Requesting-camera state: a pale accent tint (visibly \"waiting\", not\n * the solid \"go\" green) and a deep-accent label. LoaderButton's loading\n * bar takes the label colour. */\n &.disabled {\n opacity: 1;\n background: color-mix(\n in srgb,\n var(--bs-btn-bg, ", ") 12%,\n #ffffff\n );\n color: color-mix(\n in srgb,\n var(--bs-btn-bg, ", ") 85%,\n #000000\n );\n box-shadow: 0 4px 14px\n color-mix(\n in srgb,\n var(--bs-btn-bg, ", ") 18%,\n transparent\n );\n }\n\n @media (prefers-reduced-motion: reduce) {\n &:hover:not(.disabled),\n &:active:not(.disabled) {\n transform: none;\n }\n }\n }\n"])), function (props) {
19554
19525
  return props.$accent;
19555
19526
  }, function (props) {
19556
19527
  return props.$accent;
@@ -19566,8 +19537,8 @@ var StartButton = styledComponents.styled(LoaderButton)(_templateObject1$9 || (_
19566
19537
  return props.$accent;
19567
19538
  }, function (props) {
19568
19539
  return props.$accent;
19569
- }, sweep);
19570
- var Privacy = styledComponents.styled.div(_templateObject10$9 || (_templateObject10$9 = _taggedTemplateLiteralLoose(["\n font-size: 11px;\n opacity: 0.55;\n margin-top: 6px;\n"])));
19540
+ });
19541
+ var Privacy = styledComponents.styled.div(_templateObject1$9 || (_templateObject1$9 = _taggedTemplateLiteralLoose(["\n font-size: 11px;\n opacity: 0.55;\n margin-top: 6px;\n"])));
19571
19542
 
19572
19543
  var selectRingOverlayStage = function selectRingOverlayStage(_ref) {
19573
19544
  var showIntroScreen = _ref.showIntroScreen,
@@ -19577,7 +19548,7 @@ var selectRingOverlayStage = function selectRingOverlayStage(_ref) {
19577
19548
  return requesting ? 'requesting' : 'intro';
19578
19549
  };
19579
19550
 
19580
- var _templateObject$F, _templateObject2$B, _templateObject3$r, _templateObject4$m, _templateObject5$k, _templateObject6$f, _templateObject7$d, _templateObject8$a, _templateObject9$a, _templateObject0$9, _templateObject1$8, _templateObject10$8, _templateObject11$6, _templateObject12$5, _templateObject13$5, _templateObject14$5, _templateObject15$4;
19551
+ var _templateObject$G, _templateObject2$B, _templateObject3$r, _templateObject4$m, _templateObject5$k, _templateObject6$f, _templateObject7$d, _templateObject8$a, _templateObject9$a, _templateObject0$9, _templateObject1$8, _templateObject10$8, _templateObject11$6, _templateObject12$5, _templateObject13$5, _templateObject14$5, _templateObject15$4;
19581
19552
  /** Minimum time a stage handoff stays on screen so its message is
19582
19553
  * legible even when everything preloaded and readiness is instant. */
19583
19554
  var STAGE_TRANSITION_HOLD_MS = 1600;
@@ -19636,7 +19607,7 @@ var RingStageTransition = function RingStageTransition(_ref) {
19636
19607
  })]
19637
19608
  });
19638
19609
  };
19639
- var badgePop = styledComponents.keyframes(_templateObject$F || (_templateObject$F = _taggedTemplateLiteralLoose(["\n 0% { transform: scale(0.4); opacity: 0; }\n 60% { transform: scale(1.08); opacity: 1; }\n 100% { transform: scale(1); opacity: 1; }\n"])));
19610
+ var badgePop = styledComponents.keyframes(_templateObject$G || (_templateObject$G = _taggedTemplateLiteralLoose(["\n 0% { transform: scale(0.4); opacity: 0; }\n 60% { transform: scale(1.08); opacity: 1; }\n 100% { transform: scale(1); opacity: 1; }\n"])));
19640
19611
  var cardFlip = styledComponents.keyframes(_templateObject2$B || (_templateObject2$B = _taggedTemplateLiteralLoose(["\n from { transform: rotateY(0deg); }\n to { transform: rotateY(180deg); }\n"])));
19641
19612
  var microcopyBeat = styledComponents.keyframes(_templateObject3$r || (_templateObject3$r = _taggedTemplateLiteralLoose(["\n 0% { opacity: 0; transform: translateY(6px); }\n 18% { opacity: 1; transform: translateY(0); }\n 60% { opacity: 1; transform: translateY(0); }\n 80% { opacity: 0; transform: translateY(-6px); }\n 100% { opacity: 0; }\n"])));
19642
19613
  var rise = styledComponents.keyframes(_templateObject4$m || (_templateObject4$m = _taggedTemplateLiteralLoose(["\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n"])));
@@ -19668,7 +19639,7 @@ var LoadingRow = styledComponents.styled.div(_templateObject15$4 || (_templateOb
19668
19639
  return props.$visible ? 1 : 0;
19669
19640
  });
19670
19641
 
19671
- var _templateObject$E, _templateObject2$A, _templateObject3$q, _templateObject4$l, _templateObject5$j, _templateObject6$e, _templateObject7$c;
19642
+ var _templateObject$F, _templateObject2$A, _templateObject3$q, _templateObject4$l, _templateObject5$j, _templateObject6$e, _templateObject7$c;
19672
19643
  // Module-level so the default `now` prop has a stable identity across
19673
19644
  // renders (it sits in useModelWarmingElapsedMs's effect dependency array).
19674
19645
  var defaultNow$2 = function defaultNow() {
@@ -19942,7 +19913,7 @@ var IdCaptureLoadingOverlayRing = function IdCaptureLoadingOverlayRing(_ref) {
19942
19913
  })
19943
19914
  });
19944
19915
  };
19945
- var overlayFadeIn$1 = styledComponents.keyframes(_templateObject$E || (_templateObject$E = _taggedTemplateLiteralLoose(["\n from { opacity: 0; }\n to { opacity: 1; }\n"])));
19916
+ var overlayFadeIn$1 = styledComponents.keyframes(_templateObject$F || (_templateObject$F = _taggedTemplateLiteralLoose(["\n from { opacity: 0; }\n to { opacity: 1; }\n"])));
19946
19917
  var RingOverlayInner$1 = styledComponents.styled(LoadingOverlayInner)(_templateObject2$A || (_templateObject2$A = _taggedTemplateLiteralLoose(["\n background: ", ";\n color: ", ";\n ", "\n"])), function (props) {
19947
19918
  var _props$theme$idCaptur, _props$theme;
19948
19919
  var tintBase = (_props$theme$idCaptur = (_props$theme = props.theme) == null || (_props$theme = _props$theme.idCapture) == null || (_props$theme = _props$theme.loadingOverlay) == null ? void 0 : _props$theme.backgroundColor) != null ? _props$theme$idCaptur : 'var(--idm-color-primary-500)';
@@ -20047,11 +20018,11 @@ var CapturedDocumentImg = function CapturedDocumentImg(_ref) {
20047
20018
  });
20048
20019
  };
20049
20020
 
20050
- var _templateObject$D, _templateObject2$z;
20051
- var Card = styledComponents.styled.div(_templateObject$D || (_templateObject$D = _taggedTemplateLiteralLoose(["\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, 100% - 48px);\n max-height: 100%;\n overflow: auto;\n box-sizing: border-box;\n"])));
20021
+ var _templateObject$E, _templateObject2$z;
20022
+ var Card = styledComponents.styled.div(_templateObject$E || (_templateObject$E = _taggedTemplateLiteralLoose(["\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, 100% - 48px);\n max-height: 100%;\n overflow: auto;\n box-sizing: border-box;\n"])));
20052
20023
  var FlexCard = styledComponents.styled(Card)(_templateObject2$z || (_templateObject2$z = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n"])));
20053
20024
 
20054
- var _templateObject$C, _templateObject2$y, _templateObject3$p, _templateObject4$k, _templateObject5$i, _templateObject6$d, _templateObject7$b, _templateObject8$9, _templateObject9$9, _templateObject0$8, _templateObject1$7, _templateObject10$7, _templateObject11$5, _templateObject12$4, _templateObject13$4, _templateObject14$4, _templateObject15$3, _templateObject16$3, _templateObject17$2, _templateObject18$2, _templateObject19$2, _templateObject20$2, _templateObject21$2, _templateObject22$2, _templateObject23$2, _templateObject24$1, _templateObject25, _templateObject26, _templateObject27, _templateObject28, _templateObject29, _templateObject30, _templateObject31, _templateObject32, _templateObject33, _templateObject34, _templateObject35, _templateObject36, _templateObject37, _templateObject38, _templateObject39, _templateObject40, _templateObject41, _templateObject42, _templateObject43, _templateObject44;
20025
+ var _templateObject$D, _templateObject2$y, _templateObject3$p, _templateObject4$k, _templateObject5$i, _templateObject6$d, _templateObject7$b, _templateObject8$9, _templateObject9$9, _templateObject0$8, _templateObject1$7, _templateObject10$7, _templateObject11$5, _templateObject12$4, _templateObject13$4, _templateObject14$4, _templateObject15$3, _templateObject16$3, _templateObject17$2, _templateObject18$2, _templateObject19$2, _templateObject20$2, _templateObject21$2, _templateObject22$2, _templateObject23$2, _templateObject24$1, _templateObject25, _templateObject26, _templateObject27, _templateObject28, _templateObject29, _templateObject30, _templateObject31, _templateObject32, _templateObject33, _templateObject34, _templateObject35, _templateObject36, _templateObject37, _templateObject38, _templateObject39, _templateObject40, _templateObject41, _templateObject42, _templateObject43, _templateObject44;
20055
20026
  function ReviewDocumentDiagnostics(_ref) {
20056
20027
  var _document$detectionSc, _document$detectionSc2, _document$focusScore, _document$focusScore2;
20057
20028
  var document = _ref.document,
@@ -20510,7 +20481,7 @@ function RotationAttemptRow(_ref3) {
20510
20481
  })]
20511
20482
  });
20512
20483
  }
20513
- var DebugInfoContainer = styledComponents.styled.div(_templateObject$C || (_templateObject$C = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n margin-top: 0.5rem;\n margin-bottom: 1rem;\n padding: 0.625rem;\n background: #f8f9fa;\n border-radius: 6px;\n border: 1px solid #e9ecef;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.8125rem;\n line-height: 1.35;\n text-align: left;\n"])));
20484
+ var DebugInfoContainer = styledComponents.styled.div(_templateObject$D || (_templateObject$D = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n margin-top: 0.5rem;\n margin-bottom: 1rem;\n padding: 0.625rem;\n background: #f8f9fa;\n border-radius: 6px;\n border: 1px solid #e9ecef;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.8125rem;\n line-height: 1.35;\n text-align: left;\n"])));
20514
20485
  var DebugSection = styledComponents.styled.div(_templateObject2$y || (_templateObject2$y = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin: 0;\n"])));
20515
20486
  var DebugLabel = styledComponents.styled.span(_templateObject3$p || (_templateObject3$p = _taggedTemplateLiteralLoose(["\n width: 110px;\n flex-shrink: 0;\n color: #495057;\n font-size: 0.8125rem;\n font-weight: 600;\n"])));
20516
20487
  var DebugValue = styledComponents.styled.span(_templateObject4$k || (_templateObject4$k = _taggedTemplateLiteralLoose(["\n color: #212529;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.8125rem;\n"])));
@@ -20626,7 +20597,7 @@ var DiagnosticsBadge = styledComponents.styled.span(_templateObject44 || (_templ
20626
20597
  return $highlight ? '#004085' : $ok ? '#155724' : '#721c24';
20627
20598
  });
20628
20599
 
20629
- var _templateObject$B, _templateObject2$x, _templateObject3$o, _templateObject4$j, _templateObject5$h;
20600
+ var _templateObject$C, _templateObject2$x, _templateObject3$o, _templateObject4$j, _templateObject5$h;
20630
20601
  var imageDisplayOrder = ['idCardFront', 'idCardBack', 'idBarcodeImage', 'passport', 'singlePage', 'idFrontIrImage', 'idBackIrImage', 'idFrontUvImage', 'idBackUvImage'];
20631
20602
  var ReviewScreen = function ReviewScreen(_ref) {
20632
20603
  var capturedDocuments = _ref.capturedDocuments,
@@ -20717,13 +20688,13 @@ var ReviewScreen = function ReviewScreen(_ref) {
20717
20688
  })
20718
20689
  });
20719
20690
  };
20720
- var Heading$9 = styledComponents.styled.h1(_templateObject$B || (_templateObject$B = _taggedTemplateLiteralLoose(["\n font-size: 1.5rem;\n margin-top: 0;\n margin-bottom: 1.5rem;\n"])));
20691
+ var Heading$9 = styledComponents.styled.h1(_templateObject$C || (_templateObject$C = _taggedTemplateLiteralLoose(["\n font-size: 1.5rem;\n margin-top: 0;\n margin-bottom: 1.5rem;\n"])));
20721
20692
  var ImagesContainer = styledComponents.styled(OverlayImageContainer)(_templateObject2$x || (_templateObject2$x = _taggedTemplateLiteralLoose(["\n flex-grow: 1;\n overflow-y: auto;\n padding-bottom: 0;\n max-width: 100%;\n"])));
20722
20693
  var ImageRow = styledComponents.styled(OverlayImageRow)(_templateObject3$o || (_templateObject3$o = _taggedTemplateLiteralLoose(["\n max-width: 100%;\n flex-direction: column;\n position: relative;\n width: 100%;\n"])));
20723
20694
  var ImageCol$1 = styledComponents.styled.div(_templateObject4$j || (_templateObject4$j = _taggedTemplateLiteralLoose(["\n width: 450px;\n max-width: 100%;\n max-height: none !important;\n"])));
20724
20695
  var StyledImage = styledComponents.styled(CapturedDocumentImg)(_templateObject5$h || (_templateObject5$h = _taggedTemplateLiteralLoose(["\n width: 100%;\n border-radius: 12px;\n"])));
20725
20696
 
20726
- var _templateObject$A, _templateObject2$w, _templateObject3$n, _templateObject4$i;
20697
+ var _templateObject$B, _templateObject2$w, _templateObject3$n, _templateObject4$i;
20727
20698
  var CameraAccessDeniedOverlay = function CameraAccessDeniedOverlay(_ref) {
20728
20699
  var _assets$imageUrl, _classNames$container;
20729
20700
  var onRetry = _ref.onRetry,
@@ -20782,12 +20753,12 @@ var CameraAccessDeniedOverlay = function CameraAccessDeniedOverlay(_ref) {
20782
20753
  })
20783
20754
  });
20784
20755
  };
20785
- var StyledOverlayInner$2 = styledComponents.styled(OverlayInner$2)(_templateObject$A || (_templateObject$A = _taggedTemplateLiteralLoose(["\n max-width: 500px;\n height: auto;\n margin: auto;\n"])));
20756
+ var StyledOverlayInner$2 = styledComponents.styled(OverlayInner$2)(_templateObject$B || (_templateObject$B = _taggedTemplateLiteralLoose(["\n max-width: 500px;\n height: auto;\n margin: auto;\n"])));
20786
20757
  var StyledOverlayImageContainer = styledComponents.styled(OverlayImageContainer)(_templateObject2$w || (_templateObject2$w = _taggedTemplateLiteralLoose(["\n flex-grow: 0;\n"])));
20787
20758
  var Description$3 = styledComponents.styled.p(_templateObject3$n || (_templateObject3$n = _taggedTemplateLiteralLoose(["\n line-height: 1.5;\n margin-bottom: 50px;\n"])));
20788
20759
  var RetryButton$1 = styledComponents.styled(LoaderButton)(_templateObject4$i || (_templateObject4$i = _taggedTemplateLiteralLoose(["\n width: 200px;\n margin: 0 auto;\n"])));
20789
20760
 
20790
- var _templateObject$z, _templateObject2$v, _templateObject3$m;
20761
+ var _templateObject$A, _templateObject2$v, _templateObject3$m;
20791
20762
  var ErrorScreen = function ErrorScreen(_ref) {
20792
20763
  var error = _ref.error,
20793
20764
  onRetry = _ref.onRetry,
@@ -20978,7 +20949,7 @@ var cameraFailureClassNames = function cameraFailureClassNames(own, bag) {
20978
20949
  // component pins its own foreground for the same reason (e.g.
20979
20950
  // IdCaptureLoadingOverlayDefault's `theme...textColor ?? 'black'`); do the
20980
20951
  // same here rather than inherit a foreground meant for the dark overlays.
20981
- var ErrorCard = styledComponents.styled(FlexCard)(_templateObject$z || (_templateObject$z = _taggedTemplateLiteralLoose(["\n color: black;\n"])));
20952
+ var ErrorCard = styledComponents.styled(FlexCard)(_templateObject$A || (_templateObject$A = _taggedTemplateLiteralLoose(["\n color: black;\n"])));
20982
20953
  var Heading$8 = styledComponents.styled.h1(_templateObject2$v || (_templateObject2$v = _taggedTemplateLiteralLoose(["\n font-size: 1.5rem;\n margin-top: 0;\n margin-bottom: 1rem;\n"])));
20983
20954
  var Description$2 = styledComponents.styled.p(_templateObject3$m || (_templateObject3$m = _taggedTemplateLiteralLoose(["\n line-height: 1.5;\n margin-bottom: 1.5rem;\n"])));
20984
20955
 
@@ -21021,7 +20992,7 @@ function fallbackCaptureMoreLabelForStep(idCaptureRequirement, idCardBackCapture
21021
20992
  return key === 'third' ? 'ID page of passport' : 'back of ID card';
21022
20993
  }
21023
20994
 
21024
- var _templateObject$y, _templateObject2$u, _templateObject3$l, _templateObject4$h, _templateObject5$g, _templateObject6$c, _templateObject7$a;
20995
+ var _templateObject$z, _templateObject2$u, _templateObject3$l, _templateObject4$h, _templateObject5$g, _templateObject6$c, _templateObject7$a;
21025
20996
  function IdCaptureFallback(_ref) {
21026
20997
  var _ref$captureRequireme = _ref.captureRequirement,
21027
20998
  captureRequirement = _ref$captureRequireme === void 0 ? 'idCardOrPassport' : _ref$captureRequireme,
@@ -21190,7 +21161,7 @@ function IdCaptureFallback(_ref) {
21190
21161
  })
21191
21162
  });
21192
21163
  }
21193
- var StyledOverlayInner$1 = styledComponents.styled(OverlayInner$2)(_templateObject$y || (_templateObject$y = _taggedTemplateLiteralLoose(["\n justify-content: center;\n"])));
21164
+ var StyledOverlayInner$1 = styledComponents.styled(OverlayInner$2)(_templateObject$z || (_templateObject$z = _taggedTemplateLiteralLoose(["\n justify-content: center;\n"])));
21194
21165
  var Heading$7 = styledComponents.styled.h3(_templateObject2$u || (_templateObject2$u = _taggedTemplateLiteralLoose(["\n margin-bottom: 8px;\n"])));
21195
21166
  var Description$1 = styledComponents.styled.p(_templateObject3$l || (_templateObject3$l = _taggedTemplateLiteralLoose(["\n margin-bottom: 8px;\n"])));
21196
21167
  var Instruction = styledComponents.styled.p(_templateObject4$h || (_templateObject4$h = _taggedTemplateLiteralLoose(["\n font-weight: bold;\n"])));
@@ -21198,7 +21169,7 @@ var ReadFailed$1 = styledComponents.styled.p(_templateObject5$g || (_templateObj
21198
21169
  var ImageCol = styledComponents.styled.div(_templateObject6$c || (_templateObject6$c = _taggedTemplateLiteralLoose(["\n display: flex;\n justify-content: center;\n flex-grow: 1;\n flex-basis: 0;\n"])));
21199
21170
  var StyledButtonsRow$6 = styledComponents.styled(ButtonsRow$2)(_templateObject7$a || (_templateObject7$a = _taggedTemplateLiteralLoose(["\n margin-top: 32px;\n"])));
21200
21171
 
21201
- var _templateObject$x, _templateObject2$t, _templateObject3$k, _templateObject4$g, _templateObject5$f, _templateObject6$b, _templateObject7$9, _templateObject8$8, _templateObject9$8, _templateObject0$7, _templateObject1$6, _templateObject10$6;
21172
+ var _templateObject$y, _templateObject2$t, _templateObject3$k, _templateObject4$g, _templateObject5$f, _templateObject6$b, _templateObject7$9, _templateObject8$8, _templateObject9$8, _templateObject0$7, _templateObject1$6, _templateObject10$6;
21202
21173
  function IdCaptureOrUploadScreen(_ref) {
21203
21174
  var _ref$captureRequireme = _ref.captureRequirement,
21204
21175
  captureRequirement = _ref$captureRequireme === void 0 ? 'idCardOrPassport' : _ref$captureRequireme,
@@ -21445,7 +21416,7 @@ function IdCaptureOrUploadScreen(_ref) {
21445
21416
  })]
21446
21417
  });
21447
21418
  }
21448
- var ScreenContainer = styledComponents.styled.div(_templateObject$x || (_templateObject$x = _taggedTemplateLiteralLoose(["\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 16px;\n padding: 24px;\n background: ", ";\n"])), function (props) {
21419
+ var ScreenContainer = styledComponents.styled.div(_templateObject$y || (_templateObject$y = _taggedTemplateLiteralLoose(["\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 16px;\n padding: 24px;\n background: ", ";\n"])), function (props) {
21449
21420
  var _props$theme$backgrou, _props$theme;
21450
21421
  return (_props$theme$backgrou = (_props$theme = props.theme) == null ? void 0 : _props$theme.background) != null ? _props$theme$backgrou : '#fff';
21451
21422
  });
@@ -21566,7 +21537,7 @@ function useSessionReady() {
21566
21537
  return context ? context.sessionReady : true;
21567
21538
  }
21568
21539
 
21569
- var _templateObject$w;
21540
+ var _templateObject$x;
21570
21541
  function _createForOfIteratorHelperLoose$j(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (t) return (t = t.call(r)).next.bind(t); if (Array.isArray(r) || (t = _unsupportedIterableToArray$j(r)) || e) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: true } : { done: false, value: r[o++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
21571
21542
  function _unsupportedIterableToArray$j(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$j(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$j(r, a) : void 0; } }
21572
21543
  function _arrayLikeToArray$j(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
@@ -21582,7 +21553,7 @@ function _arrayLikeToArray$j(r, a) { (null == a || a > r.length) && (a = r.lengt
21582
21553
  // containing block against whatever ancestor the host provides, exactly as
21583
21554
  // before this wrapper existed) while font-family -- an inherited CSS
21584
21555
  // property -- still cascades to every descendant.
21585
- var FontCarrier = styledComponents.styled.div(_templateObject$w || (_templateObject$w = _taggedTemplateLiteralLoose(["\n display: contents;\n ", "\n"])), function (props) {
21556
+ var FontCarrier = styledComponents.styled.div(_templateObject$x || (_templateObject$x = _taggedTemplateLiteralLoose(["\n display: contents;\n ", "\n"])), function (props) {
21586
21557
  var _props$theme;
21587
21558
  return (_props$theme = props.theme) != null && _props$theme.fontFamily ? "font-family: " + props.theme.fontFamily + ";" : '';
21588
21559
  });
@@ -24177,6 +24148,7 @@ function createSelfieCaptureController(config) {
24177
24148
  liveness: config.liveness ? createInitialLivenessMachineState() : null,
24178
24149
  challenge: null,
24179
24150
  livenessTimedOut: false,
24151
+ retryPending: false,
24180
24152
  handOverFace: {
24181
24153
  status: 'off',
24182
24154
  lastCheck: null
@@ -25558,6 +25530,19 @@ function createSelfieCaptureController(config) {
25558
25530
  livenessTimedOut: false
25559
25531
  });
25560
25532
  }
25533
+ // retry()'s reset of the terminal attempt, run straight away or once a
25534
+ // released camera is back. Moving off the terminal phase and verdict is
25535
+ // what takes the view's terminal screen down.
25536
+ function spendRetry() {
25537
+ if (config.liveness) resetLivenessAttempt();
25538
+ progress.retry('capture-error');
25539
+ internal.setState({
25540
+ retryPending: false
25541
+ });
25542
+ dispatch({
25543
+ type: 'retryRequested'
25544
+ });
25545
+ }
25561
25546
  // retry()'s capture re-entry, run straight away or once a released camera
25562
25547
  // is back.
25563
25548
  function resumeCapture() {
@@ -25714,6 +25699,7 @@ function createSelfieCaptureController(config) {
25714
25699
  liveness: config.liveness ? createInitialLivenessMachineState() : null,
25715
25700
  challenge: null,
25716
25701
  livenessTimedOut: false,
25702
+ retryPending: false,
25717
25703
  handOverFace: {
25718
25704
  status: 'off',
25719
25705
  lastCheck: null
@@ -25891,27 +25877,42 @@ function createSelfieCaptureController(config) {
25891
25877
  },
25892
25878
  retry: function retry() {
25893
25879
  if (!active) return;
25894
- if (config.liveness) resetLivenessAttempt();
25895
- progress.retry('capture-error');
25896
- dispatch({
25897
- type: 'retryRequested'
25898
- });
25899
25880
  if (!cameraReleased) {
25881
+ spendRetry();
25900
25882
  resumeCapture();
25901
25883
  return;
25902
25884
  }
25903
- // The terminal screen handed the camera back: get it again first, so
25904
- // the initial-delay gate and the kick-out count from a live feed. A
25905
- // second retry() while this is in flight joins it. A failure has
25906
- // already landed in `error` (requestCamera's own write), which puts
25907
- // up the camera error screen and its recovery path.
25885
+ // The terminal screen handed the camera back: get it again BEFORE
25886
+ // leaving that screen, so the user never lands on a feed with no
25887
+ // stream, and the initial-delay gate and kick-out count from a live
25888
+ // feed. A second retry() while this is in flight joins it.
25908
25889
  if (cameraReacquisition) return;
25890
+ internal.setState({
25891
+ retryPending: true
25892
+ });
25909
25893
  var generation = attachGeneration;
25894
+ // exitCapture() clears `retryPending` if it sent the user back to the
25895
+ // instructions while the camera was coming back.
25896
+ var stillPending = function stillPending() {
25897
+ return active && generation === attachGeneration && internal.getState().retryPending;
25898
+ };
25910
25899
  var reacquisition = requestCamera().then(function () {
25911
- // exitCapture() may have sent the user back to the instructions
25912
- // while the camera was coming back.
25913
- if (active && generation === attachGeneration && internal.getState().phase === 'capturing') resumeCapture();
25914
- })["catch"](function () {})["finally"](function () {
25900
+ if (!stillPending()) return;
25901
+ spendRetry();
25902
+ resumeCapture();
25903
+ }, function () {
25904
+ // Spend the attempt anyway so the terminal screen gives way to
25905
+ // the camera error screen, whose recovery re-enters through
25906
+ // 'loading'. 'retryRequested' clears `error`, so the one
25907
+ // requestCamera wrote goes back on after it.
25908
+ if (!stillPending()) return;
25909
+ var _internal$getState = internal.getState(),
25910
+ error = _internal$getState.error;
25911
+ spendRetry();
25912
+ internal.setState({
25913
+ error: error
25914
+ });
25915
+ })["finally"](function () {
25915
25916
  // detach() may have dropped this one and a newer one started.
25916
25917
  if (cameraReacquisition === reacquisition) cameraReacquisition = null;
25917
25918
  });
@@ -25920,8 +25921,8 @@ function createSelfieCaptureController(config) {
25920
25921
  exitCapture: function exitCapture() {
25921
25922
  var _frameLoop9;
25922
25923
  if (!active) return;
25923
- var _internal$getState = internal.getState(),
25924
- phase = _internal$getState.phase;
25924
+ var _internal$getState2 = internal.getState(),
25925
+ phase = _internal$getState2.phase;
25925
25926
  if (phase === 'initializing' || phase === 'loading') return;
25926
25927
  // Every armed timer belongs to the abandoned attempt.
25927
25928
  clearAllTimers();
@@ -25936,7 +25937,8 @@ function createSelfieCaptureController(config) {
25936
25937
  internal.setState({
25937
25938
  capturedAttempt: null,
25938
25939
  capturedImageUrl: null,
25939
- captureRecovery: null
25940
+ captureRecovery: null,
25941
+ retryPending: false
25940
25942
  });
25941
25943
  dispatch({
25942
25944
  type: 'exitRequested'
@@ -25982,8 +25984,8 @@ function useSelfieCapture(controller) {
25982
25984
  return shim.useSyncExternalStore(subscribe, controller.getState, controller.getState);
25983
25985
  }
25984
25986
 
25985
- var _templateObject$v;
25986
- var SelfieCameraFeedWrapper = styledComponents.styled.div(_templateObject$v || (_templateObject$v = _taggedTemplateLiteralLoose(["\n display: flex;\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n /* Keep CameraVideoTag's legacy negative z-index above opaque flow shells. */\n isolation: isolate;\n"])));
25987
+ var _templateObject$w;
25988
+ var SelfieCameraFeedWrapper = styledComponents.styled.div(_templateObject$w || (_templateObject$w = _taggedTemplateLiteralLoose(["\n display: flex;\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n /* Keep CameraVideoTag's legacy negative z-index above opaque flow shells. */\n isolation: isolate;\n"])));
25987
25989
  function SelfieCameraFeed(_ref) {
25988
25990
  var videoRef = _ref.videoRef,
25989
25991
  isRearFacing = _ref.isRearFacing,
@@ -25997,7 +25999,7 @@ function SelfieCameraFeed(_ref) {
25997
25999
  });
25998
26000
  }
25999
26001
 
26000
- var _templateObject$u, _templateObject2$s, _templateObject3$j, _templateObject4$f;
26002
+ var _templateObject$v, _templateObject2$s, _templateObject3$j, _templateObject4$f;
26001
26003
  var _excluded$c = ["borderColor", "borderOpacity", "borderWidth", "status"],
26002
26004
  _excluded2$4 = ["status", "guideStyle"],
26003
26005
  _excluded3 = ["frame", "borderWidth", "borderColor", "borderOpacity", "verticalAlign", "status", "guideStyle"],
@@ -26074,7 +26076,7 @@ HeadGuideSvg.displayName = 'HeadGuideSvg';
26074
26076
  // refresh rate for the whole capture, which low-end GPUs can't keep up with
26075
26077
  // while also running the camera and face model. Waves only render while the
26076
26078
  // status is 'ready', so the pulse replays each time the face leaves the guide.
26077
- var headGuideWavesAnimation = styledComponents.keyframes(_templateObject$u || (_templateObject$u = _taggedTemplateLiteralLoose(["\n 0% {\n opacity: 0;\n transform: scale(1);\n }\n 60% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n transform: scale(1.3);\n }\n"])));
26079
+ var headGuideWavesAnimation = styledComponents.keyframes(_templateObject$v || (_templateObject$v = _taggedTemplateLiteralLoose(["\n 0% {\n opacity: 0;\n transform: scale(1);\n }\n 60% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n transform: scale(1.3);\n }\n"])));
26078
26080
  var PulsingHeadGuideContainer = styledComponents.styled.div(_templateObject2$s || (_templateObject2$s = _taggedTemplateLiteralLoose(["\n display: flex;\n position: relative;\n height: 100%;\n max-height: 100%;\n\n & > .idmSdkWaves {\n position: absolute;\n opacity: 0;\n animation: ", " 2s ease-out 3;\n\n @media (prefers-reduced-motion: reduce) {\n display: none;\n }\n }\n\n /* Paints far past its box; the nearest clipping ancestor bounds it\n (FaceCaptureGuideOverlay clips to the capture surface). */\n & > .idmSdkSpotlight {\n position: absolute;\n overflow: visible;\n pointer-events: none;\n }\n\n & > .idmSdkWavesOrigin {\n position: relative;\n }\n"])), headGuideWavesAnimation);
26079
26081
  function HeadGuide(_ref2) {
26080
26082
  var _theme$selfieCapture$, _theme$selfieCapture, _theme$selfieCapture$2, _theme$selfieCapture2, _theme$selfieCapture$3, _theme$selfieCapture3, _props$className;
@@ -26386,8 +26388,8 @@ function SelfieCaptureAnimatedMaskWithStatus(_ref5) {
26386
26388
  }));
26387
26389
  }
26388
26390
 
26389
- var _templateObject$t, _templateObject2$r;
26390
- var FaceCaptureGuideContainer = styledComponents.styled.div(_templateObject$t || (_templateObject$t = _taggedTemplateLiteralLoose(["\n position: absolute;\n z-index: 1000;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n box-sizing: border-box;\n /* Keeps the spotlight dim inside the capture surface when the view is\n embedded rather than full-screen. */\n ", "\n"])), function (props) {
26391
+ var _templateObject$u, _templateObject2$r;
26392
+ var FaceCaptureGuideContainer = styledComponents.styled.div(_templateObject$u || (_templateObject$u = _taggedTemplateLiteralLoose(["\n position: absolute;\n z-index: 1000;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n box-sizing: border-box;\n /* Keeps the spotlight dim inside the capture surface when the view is\n embedded rather than full-screen. */\n ", "\n"])), function (props) {
26391
26393
  return props.$clip ? 'overflow: hidden;' : '';
26392
26394
  });
26393
26395
  var FaceCaptureGuideInner = styledComponents.styled.div(_templateObject2$r || (_templateObject2$r = _taggedTemplateLiteralLoose(["\n position: relative;\n height: 60%;\n"])));
@@ -26700,7 +26702,7 @@ function SelfieCaptureLoadingGraphic(_ref) {
26700
26702
  });
26701
26703
  }
26702
26704
 
26703
- var _templateObject$s, _templateObject2$q, _templateObject3$i, _templateObject4$e, _templateObject5$e;
26705
+ var _templateObject$t, _templateObject2$q, _templateObject3$i, _templateObject4$e, _templateObject5$e;
26704
26706
  var legacyInstructionImageUrl = DEFAULT_CDN_URL$1 + "/Selfie-Image-1.png";
26705
26707
  // Module-level so the default `now` prop has a stable identity across
26706
26708
  // renders (it sits in useModelWarmingElapsedMs's effect dependency array).
@@ -26871,7 +26873,7 @@ var SelfieCaptureLoadingOverlayDefault = function SelfieCaptureLoadingOverlayDef
26871
26873
  })
26872
26874
  });
26873
26875
  };
26874
- var OverlayInner = styledComponents.styled(LoadingOverlayInner)(_templateObject$s || (_templateObject$s = _taggedTemplateLiteralLoose(["\n background: ", ";\n color: ", ";\n"])), function (props) {
26876
+ var OverlayInner = styledComponents.styled(LoadingOverlayInner)(_templateObject$t || (_templateObject$t = _taggedTemplateLiteralLoose(["\n background: ", ";\n color: ", ";\n"])), function (props) {
26875
26877
  var _props$theme$selfieCa, _props$theme;
26876
26878
  return (_props$theme$selfieCa = (_props$theme = props.theme) == null || (_props$theme = _props$theme.selfieCapture) == null || (_props$theme = _props$theme.loadingOverlay) == null ? void 0 : _props$theme.backgroundColor) != null ? _props$theme$selfieCa : SELFIE_LOADING_OVERLAY_BACKGROUND_DEFAULT;
26877
26879
  }, function (props) {
@@ -26937,7 +26939,7 @@ function selfieLoadingOverlayBottomEdgeColor(theme, modelsReady) {
26937
26939
  });
26938
26940
  }
26939
26941
 
26940
- var _templateObject$r, _templateObject2$p;
26942
+ var _templateObject$s, _templateObject2$p;
26941
26943
  var SelfieCaptureLoadingOverlayLegacy = function SelfieCaptureLoadingOverlayLegacy(_ref) {
26942
26944
  var _assets$instructionIm;
26943
26945
  var state = _ref.state,
@@ -27013,10 +27015,10 @@ var SelfieCaptureLoadingOverlayLegacy = function SelfieCaptureLoadingOverlayLega
27013
27015
  })
27014
27016
  });
27015
27017
  };
27016
- var StyledGuidanceMessage = styledComponents.styled(GuidanceMessage)(_templateObject$r || (_templateObject$r = _taggedTemplateLiteralLoose(["\n padding: 12px 24px;\n font-weight: normal;\n line-height: 1.5;\n margin-bottom: -30px;\n"])));
27018
+ var StyledGuidanceMessage = styledComponents.styled(GuidanceMessage)(_templateObject$s || (_templateObject$s = _taggedTemplateLiteralLoose(["\n padding: 12px 24px;\n font-weight: normal;\n line-height: 1.5;\n margin-bottom: -30px;\n"])));
27017
27019
  var StyledButtonsRow$5 = styledComponents.styled(ButtonsRow$2)(_templateObject2$p || (_templateObject2$p = _taggedTemplateLiteralLoose(["\n flex-direction: column;\n padding-top: 25px;\n"])));
27018
27020
 
27019
- var _templateObject$q, _templateObject2$o, _templateObject3$h, _templateObject4$d, _templateObject5$d, _templateObject6$a, _templateObject7$8;
27021
+ var _templateObject$r, _templateObject2$o, _templateObject3$h, _templateObject4$d, _templateObject5$d, _templateObject6$a, _templateObject7$8;
27020
27022
  // Module-level so the default `now` prop has a stable identity across
27021
27023
  // renders (it sits in useModelWarmingElapsedMs's effect dependency array).
27022
27024
  var defaultNow = function defaultNow() {
@@ -27274,7 +27276,7 @@ var SelfieCaptureLoadingOverlayRing = function SelfieCaptureLoadingOverlayRing(_
27274
27276
  })
27275
27277
  });
27276
27278
  };
27277
- var overlayFadeIn = styledComponents.keyframes(_templateObject$q || (_templateObject$q = _taggedTemplateLiteralLoose(["\n from { opacity: 0; }\n to { opacity: 1; }\n"])));
27279
+ var overlayFadeIn = styledComponents.keyframes(_templateObject$r || (_templateObject$r = _taggedTemplateLiteralLoose(["\n from { opacity: 0; }\n to { opacity: 1; }\n"])));
27278
27280
  var RingOverlayInner = styledComponents.styled(LoadingOverlayInner)(_templateObject2$o || (_templateObject2$o = _taggedTemplateLiteralLoose(["\n background: ", ";\n color: ", ";\n ", "\n"])), function (props) {
27279
27281
  var _props$theme$selfieCa, _props$theme;
27280
27282
  var tintBase = (_props$theme$selfieCa = (_props$theme = props.theme) == null || (_props$theme = _props$theme.selfieCapture) == null || (_props$theme = _props$theme.loadingOverlay) == null ? void 0 : _props$theme.backgroundColor) != null ? _props$theme$selfieCa : 'var(--idm-color-primary-500)';
@@ -27317,7 +27319,7 @@ var SelfieCaptureLoadingOverlay = function SelfieCaptureLoadingOverlay(_ref) {
27317
27319
  return jsxRuntime.jsx(Component, _extends({}, props));
27318
27320
  };
27319
27321
 
27320
- var _templateObject$p, _templateObject2$n, _templateObject3$g, _templateObject4$c, _templateObject5$c, _templateObject6$9;
27322
+ var _templateObject$q, _templateObject2$n, _templateObject3$g, _templateObject4$c, _templateObject5$c, _templateObject6$9;
27321
27323
  function SelfieCaptureFallback(_ref) {
27322
27324
  var _ref$silentFallback = _ref.silentFallback,
27323
27325
  silentFallback = _ref$silentFallback === void 0 ? false : _ref$silentFallback,
@@ -27471,14 +27473,14 @@ function SelfieCaptureFallback(_ref) {
27471
27473
  })
27472
27474
  });
27473
27475
  }
27474
- var StyledOverlayInner = styledComponents.styled(OverlayInner$2)(_templateObject$p || (_templateObject$p = _taggedTemplateLiteralLoose(["\n justify-content: center;\n padding: 24px;\n box-sizing: border-box;\n"])));
27476
+ var StyledOverlayInner = styledComponents.styled(OverlayInner$2)(_templateObject$q || (_templateObject$q = _taggedTemplateLiteralLoose(["\n justify-content: center;\n padding: 24px;\n box-sizing: border-box;\n"])));
27475
27477
  var Heading$6 = styledComponents.styled.h1(_templateObject2$n || (_templateObject2$n = _taggedTemplateLiteralLoose(["\n font-size: 1.5rem;\n margin: 0 0 1rem;\n"])));
27476
27478
  var Description = styledComponents.styled.p(_templateObject3$g || (_templateObject3$g = _taggedTemplateLiteralLoose(["\n line-height: 1.5;\n margin: 0 0 1.5rem;\n"])));
27477
27479
  var ImageContainer$4 = styledComponents.styled.div(_templateObject4$c || (_templateObject4$c = _taggedTemplateLiteralLoose(["\n display: flex;\n justify-content: center;\n margin-bottom: 1.5rem;\n\n & > img {\n max-width: 100%;\n max-height: 40vh;\n border-radius: 8px;\n }\n"])));
27478
27480
  var ReadFailed = styledComponents.styled.p(_templateObject5$c || (_templateObject5$c = _taggedTemplateLiteralLoose(["\n margin: 0 0 1rem;\n"])));
27479
27481
  var StyledButtonsRow$4 = styledComponents.styled(ButtonsRow$2)(_templateObject6$9 || (_templateObject6$9 = _taggedTemplateLiteralLoose(["\n display: flex;\n gap: 12px;\n justify-content: center;\n"])));
27480
27482
 
27481
- var _templateObject$o, _templateObject2$m;
27483
+ var _templateObject$p, _templateObject2$m;
27482
27484
  function SelfieCaptureSurface(_ref) {
27483
27485
  var _state$error, _state$error2, _state$captureRecover, _state$error5, _state$captureRecover2, _state$prediction, _state$prediction$sam, _state$prediction2, _state$prediction3, _state$prediction4, _state$prediction5, _state$prediction6, _state$prediction7, _state$prediction8, _state$prediction9, _state$prediction0, _state$prediction1, _state$prediction$bri, _state$prediction10, _state$prediction$ran, _state$prediction11, _state$prediction$var, _state$prediction12, _assets$loadingOverla, _classNames$loadingOv, _colors$loadingOverla, _verbiage$loadingOver;
27484
27486
  var controller = _ref.controller,
@@ -27880,7 +27882,7 @@ function EyesOpenDebugLines(_ref2) {
27880
27882
  children: [verdict, " Eyes Open", state.thresholds.requireEyesOpen ? " (" + openReadings + "/" + eyeReadings.length + " frames open in the last " + EYES_OPEN_WINDOW_MS + " ms)" : ' (gate off)', eye('Mesh-left eye', ear.left, earBaseline.left, earCalibrationMs.left), eye('Mesh-right eye', ear.right, earBaseline.right, earCalibrationMs.right)]
27881
27883
  });
27882
27884
  }
27883
- var ManualCaptureButtonContainer = styledComponents.styled.div(_templateObject$o || (_templateObject$o = _taggedTemplateLiteralLoose(["\n position: absolute;\n z-index: 4;\n left: 50%;\n bottom: 24px;\n transform: translateX(-50%);\n"])));
27885
+ var ManualCaptureButtonContainer = styledComponents.styled.div(_templateObject$p || (_templateObject$p = _taggedTemplateLiteralLoose(["\n position: absolute;\n z-index: 4;\n left: 50%;\n bottom: 24px;\n transform: translateX(-50%);\n"])));
27884
27886
  // A footer below the camera keeps the lighting guidance visible above it.
27885
27887
  var CaptureRecoveryActions = styledComponents.styled.div(_templateObject2$m || (_templateObject2$m = _taggedTemplateLiteralLoose(["\n position: absolute;\n z-index: 10001;\n inset: auto 0 0;\n padding: 16px 24px max(16px, env(safe-area-inset-bottom));\n background: white;\n color: #333;\n text-align: center;\n display: grid;\n justify-items: center;\n gap: 12px;\n\n p { margin: 0; font-size: 14px; line-height: 1.4; }\n button { width: 100%; max-width: 320px; }\n"])));
27886
27888
 
@@ -28015,7 +28017,7 @@ function livenessStatusCode(state) {
28015
28017
  return null;
28016
28018
  }
28017
28019
 
28018
- var _GUIDANCE_VERBIAGE_FI, _templateObject$n;
28020
+ var _GUIDANCE_VERBIAGE_FI, _templateObject$o;
28019
28021
  // `state.guidance.code` -> the SelfieGuidanceVerbiage field that overrides
28020
28022
  // it. Keyed off the same `SelfieGuidanceCode` values selfieGuidanceMessageKey
28021
28023
  // switches on (guidance/selfieStrings.ts) — NONE has no field (the pill is
@@ -28033,7 +28035,7 @@ var GUIDANCE_VERBIAGE_FIELD = (_GUIDANCE_VERBIAGE_FI = {}, _GUIDANCE_VERBIAGE_FI
28033
28035
  // still-mounted-through-error rationale as IdCaptureView's ScalingCameraFeed
28034
28036
  // (a successful retry()/requestCamera() re-attaches into the SAME element).
28035
28037
  var CAPTURE_SURFACE_PHASES$1 = new Set(['capturing', 'challenge', 'processing', 'checking', 'completed', 'failed']);
28036
- var Container$2 = styledComponents.styled.div(_templateObject$n || (_templateObject$n = _taggedTemplateLiteralLoose(["\n position: relative;\n width: 100%;\n height: 100%;\n /* sdk2 applied theme.fontFamily at the flow-level SdkPage wrapper\n (SdkPage.tsx:59: a font-family declaration reading props.theme.fontFamily,\n conditional on it being set) -- SdkPage itself is flow-level and was\n never ported to this package, so this view's own root carries it\n instead. */\n ", "\n"])), function (props) {
28038
+ var Container$2 = styledComponents.styled.div(_templateObject$o || (_templateObject$o = _taggedTemplateLiteralLoose(["\n position: relative;\n width: 100%;\n height: 100%;\n /* sdk2 applied theme.fontFamily at the flow-level SdkPage wrapper\n (SdkPage.tsx:59: a font-family declaration reading props.theme.fontFamily,\n conditional on it being set) -- SdkPage itself is flow-level and was\n never ported to this package, so this view's own root carries it\n instead. */\n ", "\n"])), function (props) {
28037
28039
  var _props$theme;
28038
28040
  return (_props$theme = props.theme) != null && _props$theme.fontFamily ? "font-family: " + props.theme.fontFamily + ";" : '';
28039
28041
  });
@@ -28211,11 +28213,24 @@ function SelfieCaptureViewContent(_ref) {
28211
28213
  });
28212
28214
  }
28213
28215
 
28216
+ var _templateObject$n;
28217
+ /**
28218
+ * A polite live region that is read aloud but not shown. For a change with no
28219
+ * focused text to carry it, such as a button that went busy and dropped focus
28220
+ * by being disabled. Keep it mounted and change its text: a region that mounts
28221
+ * already holding its message is often not announced.
28222
+ */
28223
+ var ScreenReaderStatus = styledComponents.styled.span.attrs({
28224
+ role: 'status'
28225
+ })(_templateObject$n || (_templateObject$n = _taggedTemplateLiteralLoose(["\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n"])));
28226
+
28214
28227
  var _templateObject$m, _templateObject2$l;
28215
28228
  var FaceLivenessSuccess = function FaceLivenessSuccess(_ref) {
28216
28229
  var imageUrl = _ref.imageUrl,
28217
28230
  onDoneClick = _ref.onDoneClick,
28218
28231
  onRetryClick = _ref.onRetryClick,
28232
+ _ref$retrying = _ref.retrying,
28233
+ retrying = _ref$retrying === void 0 ? false : _ref$retrying,
28219
28234
  _ref$classNames = _ref.classNames,
28220
28235
  classNames = _ref$classNames === void 0 ? {} : _ref$classNames,
28221
28236
  _ref$colors = _ref.colors,
@@ -28225,6 +28240,7 @@ var FaceLivenessSuccess = function FaceLivenessSuccess(_ref) {
28225
28240
  var verbiage = useTranslations(rawVerbiage, {
28226
28241
  headingText: 'Face liveness has been verified!',
28227
28242
  retryBtnText: 'Retry',
28243
+ retryingBtnText: 'Starting camera...',
28228
28244
  doneBtnText: 'Done'
28229
28245
  });
28230
28246
  var imageContainerRef = React.useRef(null);
@@ -28254,20 +28270,24 @@ var FaceLivenessSuccess = function FaceLivenessSuccess(_ref) {
28254
28270
  children: verbiage.headingText
28255
28271
  }), jsxRuntime.jsxs(ButtonsColumn, {
28256
28272
  className: classNames.buttonsRow,
28257
- children: [jsxRuntime.jsx(WideButton, {
28273
+ children: [jsxRuntime.jsx(ScreenReaderStatus, {
28274
+ children: retrying ? verbiage.retryingBtnText : null
28275
+ }), jsxRuntime.jsx(WideButton, {
28258
28276
  variant: "positive",
28259
28277
  onClick: onDoneClick,
28260
28278
  colors: colors.doneBtn,
28261
28279
  className: classNames.doneBtn,
28262
28280
  finished: true,
28281
+ // Done would race the retry the user already started.
28282
+ disabled: retrying,
28263
28283
  children: verbiage.doneBtnText
28264
28284
  }), jsxRuntime.jsx(WideBorderButton, {
28265
28285
  variant: "secondary",
28266
28286
  onClick: onRetryClick,
28267
28287
  colors: colors.retryBtn,
28268
28288
  className: classNames.retryBtn,
28269
- finished: true,
28270
- children: verbiage.retryBtnText
28289
+ finished: !retrying,
28290
+ children: retrying ? verbiage.retryingBtnText : verbiage.retryBtnText
28271
28291
  })]
28272
28292
  })]
28273
28293
  })
@@ -28283,6 +28303,8 @@ var FaceLivenessFailure = function FaceLivenessFailure(_ref) {
28283
28303
  var _ref$canRetry = _ref.canRetry,
28284
28304
  canRetry = _ref$canRetry === void 0 ? true : _ref$canRetry,
28285
28305
  onRetryClick = _ref.onRetryClick,
28306
+ _ref$retrying = _ref.retrying,
28307
+ retrying = _ref$retrying === void 0 ? false : _ref$retrying,
28286
28308
  onExitClick = _ref.onExitClick,
28287
28309
  _ref$assets = _ref.assets,
28288
28310
  assets = _ref$assets === void 0 ? {} : _ref$assets,
@@ -28296,6 +28318,7 @@ var FaceLivenessFailure = function FaceLivenessFailure(_ref) {
28296
28318
  var verbiage = useTranslations(rawVerbiage, {
28297
28319
  headingText: 'Live face not detected, please try again',
28298
28320
  retryBtnText: 'Retry',
28321
+ retryingBtnText: 'Starting camera...',
28299
28322
  exitBtnText: 'Exit'
28300
28323
  });
28301
28324
  return jsxRuntime.jsx(GrayOverlayContainer, {
@@ -28315,13 +28338,15 @@ var FaceLivenessFailure = function FaceLivenessFailure(_ref) {
28315
28338
  children: verbiage.headingText
28316
28339
  }), jsxRuntime.jsxs(ButtonsColumn, {
28317
28340
  className: classNames.buttonsRow,
28318
- children: [canRetry && jsxRuntime.jsx(WideButton, {
28341
+ children: [jsxRuntime.jsx(ScreenReaderStatus, {
28342
+ children: retrying ? verbiage.retryingBtnText : null
28343
+ }), canRetry && jsxRuntime.jsx(WideButton, {
28319
28344
  variant: "secondary",
28320
28345
  className: classNames.retryBtn,
28321
28346
  onClick: onRetryClick,
28322
28347
  colors: colors.retryBtn,
28323
- finished: true,
28324
- children: verbiage.retryBtnText
28348
+ finished: !retrying,
28349
+ children: retrying ? verbiage.retryingBtnText : verbiage.retryBtnText
28325
28350
  }), jsxRuntime.jsx(WideBorderButton, {
28326
28351
  variant: "secondary",
28327
28352
  className: classNames.exitBtn,
@@ -28605,6 +28630,9 @@ function FaceLivenessViewContent(_ref) {
28605
28630
  // back and let the camera light go out. `restartRun` gets it again through
28606
28631
  // the controller's retry(). A skipped success screen needs nothing here: the
28607
28632
  // host moves on and unmounting detaches.
28633
+ // Core holds the terminal screen up while a retry waits for that camera
28634
+ // (`retryPending`), so its Retry button shows the wait instead of the user
28635
+ // landing on a black feed.
28608
28636
  var coveredByTerminalScreen = showSuccessScreen || showFailureScreen;
28609
28637
  React.useEffect(function () {
28610
28638
  if (coveredByTerminalScreen) controller.actions.releaseCamera();
@@ -28669,12 +28697,19 @@ function FaceLivenessViewContent(_ref) {
28669
28697
  return onDone == null ? void 0 : onDone(completedImageUrl);
28670
28698
  },
28671
28699
  onRetryClick: restartRun,
28700
+ retrying: state.retryPending,
28672
28701
  verbiage: verbiage.success,
28673
28702
  classNames: classNames.success,
28674
28703
  colors: colors.success
28675
- }), showFailureScreen && jsxRuntime.jsx(FaceLivenessFailure, {
28676
- canRetry: canRetryFailure,
28704
+ }), showFailureScreen && jsxRuntime.jsx(FaceLivenessFailure
28705
+ // The click already spent the budget; keep the last retry's button
28706
+ // up while it waits on the camera.
28707
+ , {
28708
+ // The click already spent the budget; keep the last retry's button
28709
+ // up while it waits on the camera.
28710
+ canRetry: canRetryFailure || state.retryPending,
28677
28711
  onRetryClick: restartRun,
28712
+ retrying: state.retryPending,
28678
28713
  onExitClick: onExitAfterFailure != null ? onExitAfterFailure : onExit,
28679
28714
  assets: assets.failure,
28680
28715
  verbiage: verbiage.failure,
@@ -36782,14 +36817,8 @@ function DocumentCaptureSurface(_ref) {
36782
36817
  className: classNames.captureBtn,
36783
36818
  finished: state.camera.ready,
36784
36819
  variant: "primary",
36785
- // Guarded rather than relying on `disabled` alone: with
36786
- // `finished` false, LoaderButton hands the element to ladda,
36787
- // which manipulates its disabled state imperatively
36788
- // (LoaderButton.tsx:63-79). The button can therefore be
36789
- // clickable mid-animation, which CI caught.
36790
36820
  onClick: function onClick() {
36791
- if (!state.camera.ready || state.capturing) return;
36792
- void controller.actions.capture();
36821
+ return void controller.actions.capture();
36793
36822
  },
36794
36823
  disabled: !state.camera.ready || state.capturing,
36795
36824
  children: !state.camera.ready ? verbiage.loadingBtnText : state.capturing ? verbiage.capturingBtnText : verbiage.captureBtnText
@@ -48453,7 +48482,7 @@ function mapCustomerIdAndBiometricsEnrollmentProps(props, ctx) {
48453
48482
  });
48454
48483
  }
48455
48484
 
48456
- var webSdkVersion = '2.5.83-changeset-release-develop-eb57522';
48485
+ var webSdkVersion = '2.5.83-changeset-release-develop-2127d44';
48457
48486
 
48458
48487
  // GENERATED by scripts/styleBagTypes.mjs from
48459
48488
  // src/__fixtures__/sdk2StyleBags.json and the mapper sweep — do not