@arkyc/widget 1.2.5 → 1.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ArkycWidget.d.mts.map +1 -1
- package/dist/ArkycWidget.mjs +3 -1
- package/dist/ArkycWidget.mjs.map +1 -1
- package/dist/_virtual/_virtual_arkyc-theme-css.mjs +1 -1
- package/dist/arkyc-widget.iife.global.js +14 -1
- package/dist/arkyc-widget.iife.global.js.map +1 -1
- package/dist/client.d.mts +3 -3
- package/dist/client.d.mts.map +1 -1
- package/dist/client.mjs.map +1 -1
- package/dist/controller.mjs +20 -1
- package/dist/controller.mjs.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkycWidget.d.mts","names":[],"sources":["../src/ArkycWidget.ts"],"mappings":";;;;;AAwBA;;;;;;;;;;;;;;;;;cAAa,WAAA;EAuCE;;;;;;EAAA,OAhCN,IAAA,CAAK,OAAA,EAAS,iBAAA,GAAoB,YAAA;
|
|
1
|
+
{"version":3,"file":"ArkycWidget.d.mts","names":[],"sources":["../src/ArkycWidget.ts"],"mappings":";;;;;AAwBA;;;;;;;;;;;;;;;;;cAAa,WAAA;EAuCE;;;;;;EAAA,OAhCN,IAAA,CAAK,OAAA,EAAS,iBAAA,GAAoB,YAAA;EA0D4B;AAAA;;;;;EAAA,OA1B9D,KAAA,CAAM,OAAA,EAAS,kBAAA,GAAqB,YAAA;;;;;;;;;SA0BpC,MAAA,CAAO,OAAA,GAAS,OAAA,CAAQ,iBAAA,IAA0B,YAAA;AAAA"}
|
package/dist/ArkycWidget.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { buildController, resolveContainer } from "./controller.mjs";
|
|
1
|
+
import { adoptContainer, buildController, resolveContainer } from "./controller.mjs";
|
|
2
2
|
import { WidgetHandler } from "./WidgetHandler.mjs";
|
|
3
3
|
//#region src/ArkycWidget.ts
|
|
4
4
|
/**
|
|
@@ -50,6 +50,8 @@ var ArkycWidget = class ArkycWidget {
|
|
|
50
50
|
const doc = options.doc ?? globalThis.document;
|
|
51
51
|
const container = resolveContainer(options.container, doc);
|
|
52
52
|
const controller = buildController(options, () => controller.element.remove());
|
|
53
|
+
adoptContainer(container, doc);
|
|
54
|
+
controller.element.classList.add("arkyc-inline");
|
|
53
55
|
container.appendChild(controller.element);
|
|
54
56
|
controller.start();
|
|
55
57
|
return new WidgetHandler(controller);
|
package/dist/ArkycWidget.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkycWidget.mjs","names":[],"sources":["../src/ArkycWidget.ts"],"sourcesContent":["import type { BaseWidgetOptions, MountWidgetOptions, WidgetHandle } from './types'\nimport { buildController, resolveContainer } from './controller'\n\nimport { WidgetHandler } from './WidgetHandler'\n\n/**\n * @arkyc/widget\n *\n * Framework-agnostic, embeddable identity-verification widget. Drives a single\n * session through the Arkyc Client/Widget API with a short-lived client token.\n *\n * ```ts\n * import { ArkycWidget } from '@arkyc/widget'\n *\n * // Overlay modal:\n * ArkycWidget.open({ token, onComplete: (r) => console.log(r.status) })\n *\n * // Inline (mounted into a container):\n * ArkycWidget.mount({ token, container: '#verify' })\n *\n * // Hosted page (reads ?token= and posts results to the parent window):\n * ArkycWidget.hosted()\n * ```\n */\nexport class ArkycWidget {\n /**\n * Open the widget as a full-screen overlay modal. Returns a close handle.\n *\n * @param options\n * @returns\n */\n static open(options: BaseWidgetOptions): WidgetHandle {\n const doc = options.doc ?? globalThis.document\n const overlay = doc.createElement('div')\n\n overlay.setAttribute('data-arkyc-widget', '')\n // Fullscreen: edge-to-edge with no backdrop gap. Otherwise a centred modal\n // over a dimmed backdrop.\n // Both modes use a dimmed, centred backdrop. Fullscreen fills the viewport on\n // mobile but renders as a large centred dialog on desktop (see the card CSS);\n // the dimmed backdrop is what's visible around that dialog.\n overlay.style.cssText = options.fullscreen\n ? 'position:fixed;inset:0;z-index:2147483647;background:rgba(0,0,0,0.55);display:flex;align-items:center;justify-content:center;padding:0;'\n : 'position:fixed;inset:0;z-index:2147483647;background:rgba(0,0,0,0.6);display:flex;align-items:center;justify-content:center;padding:16px;'\n\n const controller = buildController(options, () => overlay.remove())\n // Mark overlay mode so a handoff QR can take over the whole viewport here\n // (it escapes the dimmed backdrop) without doing the same when inline-mounted.\n controller.element.classList.add('arkyc-overlay')\n if (options.fullscreen) controller.element.classList.add('arkyc-fullscreen')\n overlay.appendChild(controller.element)\n ;(doc.body ?? doc.documentElement).appendChild(overlay)\n controller.start()\n\n return new WidgetHandler(controller)\n }\n\n /**\n * Mount the widget inline into a container element. Returns a close handle.\n *\n * @param options\n * @returns\n */\n static mount(options: MountWidgetOptions): WidgetHandle {\n const doc = options.doc ?? globalThis.document\n const container = resolveContainer(options.container, doc)\n const controller = buildController(options, () => controller.element.remove())\n\n container.appendChild(controller.element)\n controller.start()\n\n return new WidgetHandler(controller)\n }\n\n /**\n * Bootstrap the widget on its hosted page: read the client `token` (and\n * optional `baseUrl`) from the query string and run in overlay mode, posting\n * `arkyc:*` results to the parent (iframe) window.\n *\n * @param options\n * @returns\n */\n static hosted(options: Partial<BaseWidgetOptions> = {}): WidgetHandle {\n const win = options.win ?? globalThis.window\n const params = new URLSearchParams(win.location.search)\n const token = options.token ?? params.get('token') ?? ''\n const baseUrl = options.baseUrl ?? params.get('baseUrl') ?? undefined\n\n return ArkycWidget.open({ ...options, token, baseUrl })\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAa,cAAb,MAAa,YAAY;;;;;;;CAOvB,OAAO,KAAK,SAA0C;EACpD,MAAM,MAAM,QAAQ,OAAO,WAAW;EACtC,MAAM,UAAU,IAAI,cAAc,KAAK;EAEvC,QAAQ,aAAa,qBAAqB,EAAE;EAM5C,QAAQ,MAAM,UAAU,QAAQ,aAC5B,4IACA;EAEJ,MAAM,aAAa,gBAAgB,eAAe,QAAQ,OAAO,CAAC;EAGlE,WAAW,QAAQ,UAAU,IAAI,eAAe;EAChD,IAAI,QAAQ,YAAY,WAAW,QAAQ,UAAU,IAAI,kBAAkB;EAC3E,QAAQ,YAAY,WAAW,OAAO;EACrC,CAAC,IAAI,QAAQ,IAAI,gBAAA,CAAiB,YAAY,OAAO;EACtD,WAAW,MAAM;EAEjB,OAAO,IAAI,cAAc,UAAU;CACrC;;;;;;;CAQA,OAAO,MAAM,SAA2C;EACtD,MAAM,MAAM,QAAQ,OAAO,WAAW;EACtC,MAAM,YAAY,iBAAiB,QAAQ,WAAW,GAAG;EACzD,MAAM,aAAa,gBAAgB,eAAe,WAAW,QAAQ,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ArkycWidget.mjs","names":[],"sources":["../src/ArkycWidget.ts"],"sourcesContent":["import type { BaseWidgetOptions, MountWidgetOptions, WidgetHandle } from './types'\nimport { adoptContainer, buildController, resolveContainer } from './controller'\n\nimport { WidgetHandler } from './WidgetHandler'\n\n/**\n * @arkyc/widget\n *\n * Framework-agnostic, embeddable identity-verification widget. Drives a single\n * session through the Arkyc Client/Widget API with a short-lived client token.\n *\n * ```ts\n * import { ArkycWidget } from '@arkyc/widget'\n *\n * // Overlay modal:\n * ArkycWidget.open({ token, onComplete: (r) => console.log(r.status) })\n *\n * // Inline (mounted into a container):\n * ArkycWidget.mount({ token, container: '#verify' })\n *\n * // Hosted page (reads ?token= and posts results to the parent window):\n * ArkycWidget.hosted()\n * ```\n */\nexport class ArkycWidget {\n /**\n * Open the widget as a full-screen overlay modal. Returns a close handle.\n *\n * @param options\n * @returns\n */\n static open(options: BaseWidgetOptions): WidgetHandle {\n const doc = options.doc ?? globalThis.document\n const overlay = doc.createElement('div')\n\n overlay.setAttribute('data-arkyc-widget', '')\n // Fullscreen: edge-to-edge with no backdrop gap. Otherwise a centred modal\n // over a dimmed backdrop.\n // Both modes use a dimmed, centred backdrop. Fullscreen fills the viewport on\n // mobile but renders as a large centred dialog on desktop (see the card CSS);\n // the dimmed backdrop is what's visible around that dialog.\n overlay.style.cssText = options.fullscreen\n ? 'position:fixed;inset:0;z-index:2147483647;background:rgba(0,0,0,0.55);display:flex;align-items:center;justify-content:center;padding:0;'\n : 'position:fixed;inset:0;z-index:2147483647;background:rgba(0,0,0,0.6);display:flex;align-items:center;justify-content:center;padding:16px;'\n\n const controller = buildController(options, () => overlay.remove())\n // Mark overlay mode so a handoff QR can take over the whole viewport here\n // (it escapes the dimmed backdrop) without doing the same when inline-mounted.\n controller.element.classList.add('arkyc-overlay')\n if (options.fullscreen) controller.element.classList.add('arkyc-fullscreen')\n overlay.appendChild(controller.element)\n ;(doc.body ?? doc.documentElement).appendChild(overlay)\n controller.start()\n\n return new WidgetHandler(controller)\n }\n\n /**\n * Mount the widget inline into a container element. Returns a close handle.\n *\n * @param options\n * @returns\n */\n static mount(options: MountWidgetOptions): WidgetHandle {\n const doc = options.doc ?? globalThis.document\n const container = resolveContainer(options.container, doc)\n const controller = buildController(options, () => controller.element.remove())\n\n // Take ownership of the mount point so the widget renders reliably without\n // the integrator adding positioning/stacking plumbing — mirroring how\n // `open()` fully owns its overlay. Only gaps are filled, so a host that\n // deliberately sets its own position/z-index still wins.\n adoptContainer(container, doc)\n controller.element.classList.add('arkyc-inline')\n\n container.appendChild(controller.element)\n controller.start()\n\n return new WidgetHandler(controller)\n }\n\n /**\n * Bootstrap the widget on its hosted page: read the client `token` (and\n * optional `baseUrl`) from the query string and run in overlay mode, posting\n * `arkyc:*` results to the parent (iframe) window.\n *\n * @param options\n * @returns\n */\n static hosted(options: Partial<BaseWidgetOptions> = {}): WidgetHandle {\n const win = options.win ?? globalThis.window\n const params = new URLSearchParams(win.location.search)\n const token = options.token ?? params.get('token') ?? ''\n const baseUrl = options.baseUrl ?? params.get('baseUrl') ?? undefined\n\n return ArkycWidget.open({ ...options, token, baseUrl })\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAa,cAAb,MAAa,YAAY;;;;;;;CAOvB,OAAO,KAAK,SAA0C;EACpD,MAAM,MAAM,QAAQ,OAAO,WAAW;EACtC,MAAM,UAAU,IAAI,cAAc,KAAK;EAEvC,QAAQ,aAAa,qBAAqB,EAAE;EAM5C,QAAQ,MAAM,UAAU,QAAQ,aAC5B,4IACA;EAEJ,MAAM,aAAa,gBAAgB,eAAe,QAAQ,OAAO,CAAC;EAGlE,WAAW,QAAQ,UAAU,IAAI,eAAe;EAChD,IAAI,QAAQ,YAAY,WAAW,QAAQ,UAAU,IAAI,kBAAkB;EAC3E,QAAQ,YAAY,WAAW,OAAO;EACrC,CAAC,IAAI,QAAQ,IAAI,gBAAA,CAAiB,YAAY,OAAO;EACtD,WAAW,MAAM;EAEjB,OAAO,IAAI,cAAc,UAAU;CACrC;;;;;;;CAQA,OAAO,MAAM,SAA2C;EACtD,MAAM,MAAM,QAAQ,OAAO,WAAW;EACtC,MAAM,YAAY,iBAAiB,QAAQ,WAAW,GAAG;EACzD,MAAM,aAAa,gBAAgB,eAAe,WAAW,QAAQ,OAAO,CAAC;EAM7E,eAAe,WAAW,GAAG;EAC7B,WAAW,QAAQ,UAAU,IAAI,cAAc;EAE/C,UAAU,YAAY,WAAW,OAAO;EACxC,WAAW,MAAM;EAEjB,OAAO,IAAI,cAAc,UAAU;CACrC;;;;;;;;;CAUA,OAAO,OAAO,UAAsC,CAAC,GAAiB;EACpE,MAAM,MAAM,QAAQ,OAAO,WAAW;EACtC,MAAM,SAAS,IAAI,gBAAgB,IAAI,SAAS,MAAM;EACtD,MAAM,QAAQ,QAAQ,SAAS,OAAO,IAAI,OAAO,KAAK;EACtD,MAAM,UAAU,QAAQ,WAAW,OAAO,IAAI,SAAS,KAAK,KAAA;EAE5D,OAAO,YAAY,KAAK;GAAE,GAAG;GAAS;GAAO;EAAQ,CAAC;CACxD;AACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region \0virtual:arkyc-theme-css
|
|
2
|
-
var _virtual_arkyc_theme_css_default = ".arkyc-root {\n /* {variables} */\n\n color: var(--arkyc-fg);\n font-family:\n system-ui,\n -apple-system,\n Segoe UI,\n Roboto,\n sans-serif;\n box-sizing: border-box;\n}\n\n.arkyc-text-center {\n text-align: center;\n}\n\n.arkyc-root * {\n box-sizing: border-box;\n}\n\n.arkyc-card {\n background: var(--arkyc-bg);\n border-radius: var(--arkyc-radius);\n width: 100vw;\n max-width: 480px;\n height: 100%;\n max-height: 720px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.arkyc-root.arkyc-fullscreen .arkyc-card {\n max-width: none;\n max-height: none;\n height: 100vh;\n height: 100dvh;\n border-radius: 0;\n}\n\n/* On a wider (desktop) viewport, \"fullscreen\" is a large centred dialog rather than edge-to-edge. */\n@media (min-width: 700px) {\n .arkyc-root.arkyc-fullscreen .arkyc-card {\n max-width: 560px;\n min-width: 400px;\n width: 100%;\n height: auto;\n min-height: min(620px, 92vh);\n max-height: 92vh;\n border-radius: var(--arkyc-radius);\n }\n}\n\n/* Handoff (QR) takes over the whole viewport — but only in overlay (open) mode,\n so an inline mount() stays within its container instead of escaping fullscreen.\n The close affordance is hidden either way: there's nothing to dismiss while\n awaiting the phone. */\n.arkyc-root.arkyc-overlay.arkyc-handoff .arkyc-card {\n position: fixed;\n inset: 0;\n width: 100vw;\n height: 100vh;\n height: 100dvh;\n max-width: none;\n max-height: none;\n min-width: 0;\n min-height: 0;\n border-radius: 0;\n z-index: 2147483646;\n}\n\n.arkyc-root.arkyc-handoff .arkyc-close {\n display: none;\n}\n\n.arkyc-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n /* border-bottom: 1px solid var(--arkyc-border); */\n}\n\n.arkyc-logo {\n height: 24px;\n width: auto;\n}\n\n.arkyc-title {\n font-size: 15px;\n font-weight: 600;\n margin: 0;\n}\n\n.arkyc-brand {\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n}\n\n.arkyc-brand-name {\n font-size: 15px;\n font-weight: 600;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.arkyc-close {\n background: none;\n border: 0;\n color: var(--arkyc-muted);\n font-size: 20px;\n line-height: 1;\n cursor: pointer;\n}\n\n.arkyc-body {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n gap: 14px;\n padding: 24px;\n overflow-y: auto;\n}\n\n.arkyc-h {\n font-size: 20px;\n font-weight: 600;\n margin: 0;\n}\n\n.arkyc-p {\n font-size: 14px;\n color: var(--arkyc-muted);\n margin: 0;\n max-width: 340px;\n}\n\n.arkyc-footer {\n padding: 16px 20px;\n /* border-top: 1px solid var(--arkyc-border); */\n}\n\n.arkyc-btn {\n appearance: none;\n border: 0;\n border-radius: var(--arkyc-radius);\n background: var(--arkyc-primary);\n color: #fff;\n font-size: 15px;\n font-weight: 600;\n padding: 12px 18px;\n width: 100%;\n cursor: pointer;\n}\n\n.arkyc-btn[disabled] {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n/* Busy: hide the label and show an inline spinner while the handler runs. */\n.arkyc-btn.arkyc-busy {\n position: relative;\n color: transparent;\n pointer-events: none;\n opacity: 1;\n}\n\n.arkyc-btn.arkyc-busy::after {\n content: '';\n position: absolute;\n inset: 0;\n margin: auto;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n border: 2px solid rgba(255, 255, 255, 0.5);\n border-top-color: #fff;\n animation: arkyc-spin 0.8s linear infinite;\n}\n\n.arkyc-btn-ghost.arkyc-busy::after {\n border-color: color-mix(in srgb, var(--arkyc-primary) 35%, transparent);\n border-top-color: var(--arkyc-primary);\n}\n\n.arkyc-btn-ghost {\n background: transparent;\n color: var(--arkyc-primary);\n border: 1px solid var(--arkyc-border);\n}\n\n/* Address-entry form (opt-in address stage). */\n.arkyc-addr-form {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 8px;\n width: 100%;\n max-width: 340px;\n text-align: left;\n}\n\n.arkyc-addr-input {\n width: 100%;\n box-sizing: border-box;\n padding: 9px 11px;\n font-size: 14px;\n color: var(--arkyc-fg);\n background: var(--arkyc-bg);\n border: 1px solid var(--arkyc-border);\n border-radius: var(--arkyc-radius);\n outline: none;\n}\n\n.arkyc-addr-input[type='file'] {\n max-width: 340px;\n padding: 7px 9px;\n}\n\n.arkyc-addr-input:focus {\n border-color: var(--arkyc-primary);\n}\n\n.arkyc-addr-opt {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n max-width: 340px;\n font-size: 14px;\n color: var(--arkyc-fg);\n text-align: left;\n cursor: pointer;\n}\n\n.arkyc-addr-opt input {\n flex: none;\n width: 16px;\n height: 16px;\n margin: 0;\n}\n\nselect.arkyc-addr-input {\n color: #757575;\n}\n\n.arkyc-choices {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n max-width: 340px;\n}\n\n.arkyc-preview {\n width: 100%;\n max-width: 360px;\n border-radius: var(--arkyc-radius);\n background: #000;\n aspect-ratio: 3/2;\n object-fit: cover;\n}\n\n.arkyc-preview.selfie {\n aspect-ratio: 1/1;\n max-width: 280px;\n border-radius: 50%;\n transform: scaleX(-1);\n}\n\n.arkyc-spinner {\n width: 42px;\n height: 42px;\n border-radius: 50%;\n border: 4px solid var(--arkyc-border);\n border-top-color: var(--arkyc-primary);\n animation: arkyc-spin 1s linear infinite;\n}\n\n.arkyc-spinner.sm {\n width: 18px;\n height: 18px;\n border-width: 3px;\n}\n\n@keyframes arkyc-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.arkyc-qr {\n width: 200px;\n height: 200px;\n padding: 12px;\n margin: 4px auto;\n background: #fff;\n border-radius: var(--arkyc-radius);\n border: 1px solid var(--arkyc-border);\n}\n\n.arkyc-qr svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n.arkyc-handoff-wait {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n color: var(--arkyc-muted);\n font-size: 14px;\n margin-top: 6px;\n}\n\n/* Decorative line-art illustration on the welcome / instruction screens: a soft\n tinted disc in the primary colour with a halo, holding a stroked icon. */\n.arkyc-illus {\n width: 104px;\n height: 104px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 2px;\n color: var(--arkyc-primary);\n background: color-mix(in srgb, var(--arkyc-primary) 12%, transparent);\n box-shadow: 0 0 0 8px color-mix(in srgb, var(--arkyc-primary) 5%, transparent);\n}\n\n.arkyc-illus svg {\n width: 58px;\n height: 58px;\n}\n\n.arkyc-badge {\n width: 64px;\n height: 64px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 32px;\n color: #fff;\n}\n\n.arkyc-badge.ok {\n background: #16a34a;\n}\n\n.arkyc-badge.warn {\n background: #d97706;\n}\n\n.arkyc-badge.err {\n background: #dc2626;\n}\n\n/* --- Animated capture overlays --- */\n.arkyc-stage {\n position: relative;\n width: 100%;\n max-width: 280px;\n margin: 0 auto;\n}\n\n.arkyc-stage .arkyc-preview {\n display: block;\n width: 100%;\n max-width: 100%;\n}\n\n.arkyc-ring {\n position: absolute;\n inset: 0;\n pointer-events: none;\n}\n\n.arkyc-ring svg {\n width: 100%;\n height: 100%;\n transform: rotate(-90deg);\n overflow: visible;\n}\n\n.arkyc-ring-track {\n fill: none;\n stroke: rgba(125, 130, 150, 0.3);\n stroke-width: 3;\n}\n\n.arkyc-ring-arc {\n fill: none;\n stroke: var(--arkyc-primary);\n stroke-width: 4;\n stroke-linecap: round;\n transition:\n stroke-dashoffset 0.15s linear,\n stroke 0.25s;\n}\n\n.arkyc-stage[data-state='wait'] .arkyc-ring-track {\n animation: arkyc-pulse 1.5s ease-in-out infinite;\n}\n\n.arkyc-stage[data-state='good'] .arkyc-ring-arc,\n.arkyc-stage[data-state='done'] .arkyc-ring-arc,\n.arkyc-stage[data-state='done'] .arkyc-ring-track {\n stroke: #16a34a;\n}\n\n.arkyc-cue {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 7%;\n display: flex;\n justify-content: center;\n align-items: center;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.25s;\n}\n\n.arkyc-cue.show {\n opacity: 1;\n}\n\n.arkyc-cue svg {\n width: 36px;\n height: 36px;\n color: #fff;\n filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.55));\n}\n\n.arkyc-cue-turn_right svg {\n animation: arkyc-nudge-r 1.1s ease-in-out infinite;\n}\n\n.arkyc-cue-turn_left svg {\n animation: arkyc-nudge-l 1.1s ease-in-out infinite;\n}\n\n.arkyc-cue-nod svg {\n animation: arkyc-nudge-d 1.1s ease-in-out infinite;\n}\n\n.arkyc-cue-move_closer svg {\n animation: arkyc-zoom 1.2s ease-in-out infinite;\n}\n\n.arkyc-cue-blink svg,\n.arkyc-cue-smile svg {\n animation: arkyc-soft 1.3s ease-in-out infinite;\n}\n\n.arkyc-check {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transform: scale(0.5);\n transition:\n opacity 0.25s,\n transform 0.25s;\n pointer-events: none;\n}\n\n.arkyc-check svg {\n width: 56px;\n height: 56px;\n color: #16a34a;\n background: rgba(255, 255, 255, 0.92);\n border-radius: 50%;\n padding: 10px;\n box-sizing: border-box;\n}\n\n.arkyc-stage[data-state='done'] .arkyc-check {\n opacity: 1;\n transform: scale(1);\n}\n\n.arkyc-stage[data-state='done'] .arkyc-cue {\n opacity: 0;\n}\n\n.arkyc-dots {\n display: flex;\n gap: 8px;\n justify-content: center;\n margin: 0 0 14px;\n}\n\n.arkyc-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--arkyc-border);\n transition:\n background 0.3s,\n transform 0.3s;\n}\n\n.arkyc-dot.active {\n background: var(--arkyc-primary);\n transform: scale(1.4);\n animation: arkyc-pulse 1.2s ease-in-out infinite;\n}\n\n.arkyc-dot.done {\n background: #16a34a;\n}\n\n.arkyc-doc {\n position: relative;\n width: 100%;\n max-width: 360px;\n margin: 0 auto;\n}\n\n.arkyc-doc .arkyc-preview {\n display: block;\n width: 100%;\n max-width: 100%;\n}\n\n.arkyc-doc-frame {\n position: absolute;\n /* Fixed, always-visible alignment target at the ID-1 card aspect ratio\n (85.6 × 54 mm ≈ 1.585:1), centred in the preview. */\n top: 50%;\n left: 50%;\n width: 86%;\n aspect-ratio: 1.585 / 1;\n transform: translate(-50%, -50%);\n pointer-events: none;\n border: 2px solid rgba(255, 255, 255, 0.5);\n border-radius: 10px;\n transition: border-color 0.3s;\n}\n\n.arkyc-corner {\n position: absolute;\n width: 24px;\n height: 24px;\n border: 3px solid rgba(255, 255, 255, 0.9);\n transition: border-color 0.3s;\n}\n\n.arkyc-corner.tl {\n top: 0;\n left: 0;\n border-right: none;\n border-bottom: none;\n border-top-left-radius: 6px;\n}\n\n.arkyc-corner.tr {\n top: 0;\n right: 0;\n border-left: none;\n border-bottom: none;\n border-top-right-radius: 6px;\n}\n\n.arkyc-corner.bl {\n bottom: 0;\n left: 0;\n border-right: none;\n border-top: none;\n border-bottom-left-radius: 6px;\n}\n\n.arkyc-corner.br {\n bottom: 0;\n right: 0;\n border-left: none;\n border-top: none;\n border-bottom-right-radius: 6px;\n}\n\n.arkyc-scan {\n position: absolute;\n /* Animates within the fixed guide (its parent), sweeping the card area. */\n left: 6%;\n right: 6%;\n top: 6%;\n height: 2px;\n background: linear-gradient(90deg, transparent, var(--arkyc-primary), transparent);\n box-shadow: 0 0 8px var(--arkyc-primary);\n animation: arkyc-scan 2.4s ease-in-out infinite;\n}\n\n/* A document is in view: brighten the guide (quality tints still override). */\n.arkyc-doc[data-detected='true'] .arkyc-doc-frame {\n border-color: rgba(255, 255, 255, 0.85);\n}\n\n.arkyc-doc[data-q='good'] .arkyc-corner,\n.arkyc-doc[data-q='good'] .arkyc-doc-frame {\n border-color: #16a34a;\n}\n\n.arkyc-doc[data-q='good'] .arkyc-scan {\n background: linear-gradient(90deg, transparent, #16a34a, transparent);\n box-shadow: 0 0 8px #16a34a;\n}\n\n.arkyc-doc[data-q='bad'] .arkyc-corner,\n.arkyc-doc[data-q='bad'] .arkyc-doc-frame {\n border-color: #f59e0b;\n}\n\n@keyframes arkyc-pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.4;\n }\n}\n\n@keyframes arkyc-nudge-r {\n 0%,\n 100% {\n transform: translateX(-7px);\n }\n\n 50% {\n transform: translateX(7px);\n }\n}\n\n@keyframes arkyc-nudge-l {\n 0%,\n 100% {\n transform: translateX(7px);\n }\n\n 50% {\n transform: translateX(-7px);\n }\n}\n\n@keyframes arkyc-nudge-d {\n 0%,\n 100% {\n transform: translateY(-6px);\n }\n\n 50% {\n transform: translateY(6px);\n }\n}\n\n@keyframes arkyc-zoom {\n 0%,\n 100% {\n transform: scale(0.8);\n }\n\n 50% {\n transform: scale(1.15);\n }\n}\n\n@keyframes arkyc-soft {\n 0%,\n 100% {\n opacity: 0.35;\n }\n\n 50% {\n opacity: 1;\n }\n}\n\n@keyframes arkyc-scan {\n 0%,\n 100% {\n top: 6%;\n }\n\n 50% {\n top: 90%;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkyc-ring-track,\n .arkyc-cue svg,\n .arkyc-scan,\n .arkyc-dot,\n .arkyc-spinner {\n animation: none !important;\n }\n\n .arkyc-ring-arc {\n transition: none !important;\n }\n}\n\n.arkyc-hidden {\n display: none;\n}\n";
|
|
2
|
+
var _virtual_arkyc_theme_css_default = ".arkyc-root {\n /* {variables} */\n\n color: var(--arkyc-fg);\n font-family:\n system-ui,\n -apple-system,\n Segoe UI,\n Roboto,\n sans-serif;\n box-sizing: border-box;\n}\n\n.arkyc-text-center {\n text-align: center;\n}\n\n.arkyc-root * {\n box-sizing: border-box;\n}\n\n.arkyc-card {\n background: var(--arkyc-bg);\n border-radius: var(--arkyc-radius);\n width: 100vw;\n max-width: 480px;\n height: 100%;\n max-height: 720px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n/* Inline mount(): the widget owns its container. Fill the host (up to the card\n max-width) and centre, instead of the overlay's viewport-relative sizing —\n so it fits a narrow embed rather than overflowing to `100vw`. */\n.arkyc-root.arkyc-inline {\n display: flex;\n justify-content: center;\n width: 100%;\n}\n\n.arkyc-root.arkyc-inline .arkyc-card {\n width: 100%;\n}\n\n.arkyc-root.arkyc-fullscreen .arkyc-card {\n max-width: none;\n max-height: none;\n height: 100vh;\n height: 100dvh;\n border-radius: 0;\n}\n\n/* On a wider (desktop) viewport, \"fullscreen\" is a large centred dialog rather than edge-to-edge. */\n@media (min-width: 700px) {\n .arkyc-root.arkyc-fullscreen .arkyc-card {\n max-width: 560px;\n min-width: 400px;\n width: 100%;\n height: auto;\n min-height: min(620px, 92vh);\n max-height: 92vh;\n border-radius: var(--arkyc-radius);\n }\n}\n\n/* Handoff (QR) takes over the whole viewport — but only in overlay (open) mode,\n so an inline mount() stays within its container instead of escaping fullscreen.\n The close affordance is hidden either way: there's nothing to dismiss while\n awaiting the phone. */\n.arkyc-root.arkyc-overlay.arkyc-handoff .arkyc-card {\n position: fixed;\n inset: 0;\n width: 100vw;\n height: 100vh;\n height: 100dvh;\n max-width: none;\n max-height: none;\n min-width: 0;\n min-height: 0;\n border-radius: 0;\n z-index: 2147483646;\n}\n\n.arkyc-root.arkyc-handoff .arkyc-close {\n display: none;\n}\n\n.arkyc-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n /* border-bottom: 1px solid var(--arkyc-border); */\n}\n\n.arkyc-logo {\n height: 24px;\n width: auto;\n}\n\n.arkyc-title {\n font-size: 15px;\n font-weight: 600;\n margin: 0;\n}\n\n.arkyc-brand {\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n}\n\n.arkyc-brand-name {\n font-size: 15px;\n font-weight: 600;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.arkyc-close {\n background: none;\n border: 0;\n color: var(--arkyc-muted);\n font-size: 20px;\n line-height: 1;\n cursor: pointer;\n}\n\n.arkyc-body {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n gap: 14px;\n padding: 24px;\n overflow-y: auto;\n}\n\n.arkyc-h {\n font-size: 20px;\n font-weight: 600;\n margin: 0;\n}\n\n.arkyc-p {\n font-size: 14px;\n color: var(--arkyc-muted);\n margin: 0;\n max-width: 340px;\n}\n\n.arkyc-footer {\n padding: 16px 20px;\n /* border-top: 1px solid var(--arkyc-border); */\n}\n\n.arkyc-btn {\n appearance: none;\n border: 0;\n border-radius: var(--arkyc-radius);\n background: var(--arkyc-primary);\n color: #fff;\n font-size: 15px;\n font-weight: 600;\n padding: 12px 18px;\n width: 100%;\n cursor: pointer;\n}\n\n.arkyc-btn[disabled] {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n/* Busy: hide the label and show an inline spinner while the handler runs. */\n.arkyc-btn.arkyc-busy {\n position: relative;\n color: transparent;\n pointer-events: none;\n opacity: 1;\n}\n\n.arkyc-btn.arkyc-busy::after {\n content: '';\n position: absolute;\n inset: 0;\n margin: auto;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n border: 2px solid rgba(255, 255, 255, 0.5);\n border-top-color: #fff;\n animation: arkyc-spin 0.8s linear infinite;\n}\n\n.arkyc-btn-ghost.arkyc-busy::after {\n border-color: color-mix(in srgb, var(--arkyc-primary) 35%, transparent);\n border-top-color: var(--arkyc-primary);\n}\n\n.arkyc-btn-ghost {\n background: transparent;\n color: var(--arkyc-primary);\n border: 1px solid var(--arkyc-border);\n}\n\n/* Address-entry form (opt-in address stage). */\n.arkyc-addr-form {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 8px;\n width: 100%;\n max-width: 340px;\n text-align: left;\n}\n\n.arkyc-addr-input {\n width: 100%;\n box-sizing: border-box;\n padding: 9px 11px;\n font-size: 14px;\n color: var(--arkyc-fg);\n background: var(--arkyc-bg);\n border: 1px solid var(--arkyc-border);\n border-radius: var(--arkyc-radius);\n outline: none;\n}\n\n.arkyc-addr-input[type='file'] {\n max-width: 340px;\n padding: 7px 9px;\n}\n\n.arkyc-addr-input:focus {\n border-color: var(--arkyc-primary);\n}\n\n.arkyc-addr-opt {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n max-width: 340px;\n font-size: 14px;\n color: var(--arkyc-fg);\n text-align: left;\n cursor: pointer;\n}\n\n.arkyc-addr-opt input {\n flex: none;\n width: 16px;\n height: 16px;\n margin: 0;\n}\n\nselect.arkyc-addr-input {\n color: #757575;\n}\n\n.arkyc-choices {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n max-width: 340px;\n}\n\n.arkyc-preview {\n width: 100%;\n max-width: 360px;\n border-radius: var(--arkyc-radius);\n background: #000;\n aspect-ratio: 3/2;\n object-fit: cover;\n}\n\n.arkyc-preview.selfie {\n aspect-ratio: 1/1;\n max-width: 280px;\n border-radius: 50%;\n transform: scaleX(-1);\n}\n\n.arkyc-spinner {\n width: 42px;\n height: 42px;\n border-radius: 50%;\n border: 4px solid var(--arkyc-border);\n border-top-color: var(--arkyc-primary);\n animation: arkyc-spin 1s linear infinite;\n}\n\n.arkyc-spinner.sm {\n width: 18px;\n height: 18px;\n border-width: 3px;\n}\n\n@keyframes arkyc-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.arkyc-qr {\n width: 200px;\n height: 200px;\n padding: 12px;\n margin: 4px auto;\n background: #fff;\n border-radius: var(--arkyc-radius);\n border: 1px solid var(--arkyc-border);\n}\n\n.arkyc-qr svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n.arkyc-handoff-wait {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n color: var(--arkyc-muted);\n font-size: 14px;\n margin-top: 6px;\n}\n\n/* Decorative line-art illustration on the welcome / instruction screens: a soft\n tinted disc in the primary colour with a halo, holding a stroked icon. */\n.arkyc-illus {\n width: 104px;\n height: 104px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 2px;\n color: var(--arkyc-primary);\n background: color-mix(in srgb, var(--arkyc-primary) 12%, transparent);\n box-shadow: 0 0 0 8px color-mix(in srgb, var(--arkyc-primary) 5%, transparent);\n}\n\n.arkyc-illus svg {\n width: 58px;\n height: 58px;\n}\n\n.arkyc-badge {\n width: 64px;\n height: 64px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 32px;\n color: #fff;\n}\n\n.arkyc-badge.ok {\n background: #16a34a;\n}\n\n.arkyc-badge.warn {\n background: #d97706;\n}\n\n.arkyc-badge.err {\n background: #dc2626;\n}\n\n/* --- Animated capture overlays --- */\n.arkyc-stage {\n position: relative;\n width: 100%;\n max-width: 280px;\n margin: 0 auto;\n}\n\n.arkyc-stage .arkyc-preview {\n display: block;\n width: 100%;\n max-width: 100%;\n}\n\n.arkyc-ring {\n position: absolute;\n inset: 0;\n pointer-events: none;\n}\n\n.arkyc-ring svg {\n width: 100%;\n height: 100%;\n transform: rotate(-90deg);\n overflow: visible;\n}\n\n.arkyc-ring-track {\n fill: none;\n stroke: rgba(125, 130, 150, 0.3);\n stroke-width: 3;\n}\n\n.arkyc-ring-arc {\n fill: none;\n stroke: var(--arkyc-primary);\n stroke-width: 4;\n stroke-linecap: round;\n transition:\n stroke-dashoffset 0.15s linear,\n stroke 0.25s;\n}\n\n.arkyc-stage[data-state='wait'] .arkyc-ring-track {\n animation: arkyc-pulse 1.5s ease-in-out infinite;\n}\n\n.arkyc-stage[data-state='good'] .arkyc-ring-arc,\n.arkyc-stage[data-state='done'] .arkyc-ring-arc,\n.arkyc-stage[data-state='done'] .arkyc-ring-track {\n stroke: #16a34a;\n}\n\n.arkyc-cue {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 7%;\n display: flex;\n justify-content: center;\n align-items: center;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.25s;\n}\n\n.arkyc-cue.show {\n opacity: 1;\n}\n\n.arkyc-cue svg {\n width: 36px;\n height: 36px;\n color: #fff;\n filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.55));\n}\n\n.arkyc-cue-turn_right svg {\n animation: arkyc-nudge-r 1.1s ease-in-out infinite;\n}\n\n.arkyc-cue-turn_left svg {\n animation: arkyc-nudge-l 1.1s ease-in-out infinite;\n}\n\n.arkyc-cue-nod svg {\n animation: arkyc-nudge-d 1.1s ease-in-out infinite;\n}\n\n.arkyc-cue-move_closer svg {\n animation: arkyc-zoom 1.2s ease-in-out infinite;\n}\n\n.arkyc-cue-blink svg,\n.arkyc-cue-smile svg {\n animation: arkyc-soft 1.3s ease-in-out infinite;\n}\n\n.arkyc-check {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transform: scale(0.5);\n transition:\n opacity 0.25s,\n transform 0.25s;\n pointer-events: none;\n}\n\n.arkyc-check svg {\n width: 56px;\n height: 56px;\n color: #16a34a;\n background: rgba(255, 255, 255, 0.92);\n border-radius: 50%;\n padding: 10px;\n box-sizing: border-box;\n}\n\n.arkyc-stage[data-state='done'] .arkyc-check {\n opacity: 1;\n transform: scale(1);\n}\n\n.arkyc-stage[data-state='done'] .arkyc-cue {\n opacity: 0;\n}\n\n.arkyc-dots {\n display: flex;\n gap: 8px;\n justify-content: center;\n margin: 0 0 14px;\n}\n\n.arkyc-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--arkyc-border);\n transition:\n background 0.3s,\n transform 0.3s;\n}\n\n.arkyc-dot.active {\n background: var(--arkyc-primary);\n transform: scale(1.4);\n animation: arkyc-pulse 1.2s ease-in-out infinite;\n}\n\n.arkyc-dot.done {\n background: #16a34a;\n}\n\n.arkyc-doc {\n position: relative;\n width: 100%;\n max-width: 360px;\n margin: 0 auto;\n}\n\n.arkyc-doc .arkyc-preview {\n display: block;\n width: 100%;\n max-width: 100%;\n}\n\n.arkyc-doc-frame {\n position: absolute;\n /* Fixed, always-visible alignment target at the ID-1 card aspect ratio\n (85.6 × 54 mm ≈ 1.585:1), centred in the preview. */\n top: 50%;\n left: 50%;\n width: 86%;\n aspect-ratio: 1.585 / 1;\n transform: translate(-50%, -50%);\n pointer-events: none;\n border: 2px solid rgba(255, 255, 255, 0.5);\n border-radius: 10px;\n transition: border-color 0.3s;\n}\n\n.arkyc-corner {\n position: absolute;\n width: 24px;\n height: 24px;\n border: 3px solid rgba(255, 255, 255, 0.9);\n transition: border-color 0.3s;\n}\n\n.arkyc-corner.tl {\n top: 0;\n left: 0;\n border-right: none;\n border-bottom: none;\n border-top-left-radius: 6px;\n}\n\n.arkyc-corner.tr {\n top: 0;\n right: 0;\n border-left: none;\n border-bottom: none;\n border-top-right-radius: 6px;\n}\n\n.arkyc-corner.bl {\n bottom: 0;\n left: 0;\n border-right: none;\n border-top: none;\n border-bottom-left-radius: 6px;\n}\n\n.arkyc-corner.br {\n bottom: 0;\n right: 0;\n border-left: none;\n border-top: none;\n border-bottom-right-radius: 6px;\n}\n\n.arkyc-scan {\n position: absolute;\n /* Animates within the fixed guide (its parent), sweeping the card area. */\n left: 6%;\n right: 6%;\n top: 6%;\n height: 2px;\n background: linear-gradient(90deg, transparent, var(--arkyc-primary), transparent);\n box-shadow: 0 0 8px var(--arkyc-primary);\n animation: arkyc-scan 2.4s ease-in-out infinite;\n}\n\n/* A document is in view: brighten the guide (quality tints still override). */\n.arkyc-doc[data-detected='true'] .arkyc-doc-frame {\n border-color: rgba(255, 255, 255, 0.85);\n}\n\n.arkyc-doc[data-q='good'] .arkyc-corner,\n.arkyc-doc[data-q='good'] .arkyc-doc-frame {\n border-color: #16a34a;\n}\n\n.arkyc-doc[data-q='good'] .arkyc-scan {\n background: linear-gradient(90deg, transparent, #16a34a, transparent);\n box-shadow: 0 0 8px #16a34a;\n}\n\n.arkyc-doc[data-q='bad'] .arkyc-corner,\n.arkyc-doc[data-q='bad'] .arkyc-doc-frame {\n border-color: #f59e0b;\n}\n\n@keyframes arkyc-pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.4;\n }\n}\n\n@keyframes arkyc-nudge-r {\n 0%,\n 100% {\n transform: translateX(-7px);\n }\n\n 50% {\n transform: translateX(7px);\n }\n}\n\n@keyframes arkyc-nudge-l {\n 0%,\n 100% {\n transform: translateX(7px);\n }\n\n 50% {\n transform: translateX(-7px);\n }\n}\n\n@keyframes arkyc-nudge-d {\n 0%,\n 100% {\n transform: translateY(-6px);\n }\n\n 50% {\n transform: translateY(6px);\n }\n}\n\n@keyframes arkyc-zoom {\n 0%,\n 100% {\n transform: scale(0.8);\n }\n\n 50% {\n transform: scale(1.15);\n }\n}\n\n@keyframes arkyc-soft {\n 0%,\n 100% {\n opacity: 0.35;\n }\n\n 50% {\n opacity: 1;\n }\n}\n\n@keyframes arkyc-scan {\n 0%,\n 100% {\n top: 6%;\n }\n\n 50% {\n top: 90%;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkyc-ring-track,\n .arkyc-cue svg,\n .arkyc-scan,\n .arkyc-dot,\n .arkyc-spinner {\n animation: none !important;\n }\n\n .arkyc-ring-arc {\n transition: none !important;\n }\n}\n\n.arkyc-hidden {\n display: none;\n}\n";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { _virtual_arkyc_theme_css_default as default };
|
|
@@ -31,6 +31,19 @@ var Arkyc=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module
|
|
|
31
31
|
overflow: hidden;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
/* Inline mount(): the widget owns its container. Fill the host (up to the card
|
|
35
|
+
max-width) and centre, instead of the overlay's viewport-relative sizing —
|
|
36
|
+
so it fits a narrow embed rather than overflowing to \`100vw\`. */
|
|
37
|
+
.arkyc-root.arkyc-inline {
|
|
38
|
+
display: flex;
|
|
39
|
+
justify-content: center;
|
|
40
|
+
width: 100%;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.arkyc-root.arkyc-inline .arkyc-card {
|
|
44
|
+
width: 100%;
|
|
45
|
+
}
|
|
46
|
+
|
|
34
47
|
.arkyc-root.arkyc-fullscreen .arkyc-card {
|
|
35
48
|
max-width: none;
|
|
36
49
|
max-height: none;
|
|
@@ -719,6 +732,6 @@ select.arkyc-addr-input {
|
|
|
719
732
|
}
|
|
720
733
|
`;let C={background:`#ffffff`,foreground:`#0f172a`,muted:`#64748b`,border:`#e2e8f0`},w={background:`#0f172a`,foreground:`#f8fafc`,muted:`#94a3b8`,border:`#1e293b`};var T=class e{constructor(e){p(this,`primaryColor`,void 0),p(this,`borderRadius`,void 0),p(this,`mode`,void 0),p(this,`logoUrl`,void 0),p(this,`name`,void 0),p(this,`showBranding`,void 0),p(this,`background`,void 0),p(this,`foreground`,void 0),p(this,`muted`,void 0),p(this,`border`,void 0),this.mode=e?.theme===`dark`?`dark`:`light`;let t=this.mode===`dark`?w:C;this.primaryColor=e?.primary_color??`#b8860b`,this.borderRadius=e?.border_radius??12,this.logoUrl=e?.logo_url??null,this.name=e?.name??null,this.showBranding=e?.show_branding!==!1,this.background=t.background,this.foreground=t.foreground,this.muted=t.muted,this.border=t.border}variables(){return[`--arkyc-primary:${this.primaryColor}`,`--arkyc-radius:${this.borderRadius}px`,`--arkyc-bg:${this.background}`,`--arkyc-fg:${this.foreground}`,`--arkyc-muted:${this.muted}`,`--arkyc-border:${this.border}`].join(`;`)}stylesheet(){return S.replace(`/* {variables} */`,`${this.variables()};`).trim()}static rgb(e){let t=Object.fromEntries(e.primaryColor.match(/\d+/g)?.map((e,t)=>[[`r`,`g`,`b`][t],Number(e)])??[])??{r:50,g:100,b:150};return{obj:t,str:`rgb(${[t.r,t.g,t.b].join(`,`)})`}}rgb(t){return e.rgb(t)}},E=class{constructor(e=globalThis.document,t=globalThis.navigator){this.doc=e,this.nav=t,p(this,`stream`,null)}get supported(){return!!this.nav?.mediaDevices?.getUserMedia}async start(e,t){let n=await this.nav.mediaDevices.getUserMedia({video:{facingMode:t},audio:!1});return this.stream=n,e.srcObject=n,e.setAttribute(`playsinline`,`true`),e.muted=!0,await e.play().catch(()=>void 0),n}stop(){this.stream?.getTracks().forEach(e=>e.stop()),this.stream=null}get canRecord(){return globalThis.MediaRecorder!==void 0}recordStart(e){let t=[],n=new MediaRecorder(e,{mimeType:`video/webm`});return n.ondataavailable=e=>{e.data&&e.data.size>0&&t.push(e.data)},n.start(),{stop:()=>new Promise(e=>{n.onstop=()=>e(new Blob(t,{type:`video/webm`})),n.stop()})}}sampleQuality(e){let t=this.doc.createElement(`canvas`);t.width=32,t.height=32;let n=t.getContext(`2d`);if(!n||!e.videoWidth)return null;n.drawImage(e,0,0,t.width,t.height);let{data:r}=n.getImageData(0,0,t.width,t.height),i=0,a=0,o=r.length/4;for(let e=0;e<r.length;e+=4){let t=(.299*r[e]+.587*r[e+1]+.114*r[e+2])/255;i+=t,t>.92&&(a+=1)}let s=i/o;return{brightness:s,tooDark:s<.25,glare:a/o>.15}}grabFrame(e,t=.92){let n=this.doc.createElement(`canvas`);n.width=e.videoWidth||1280,n.height=e.videoHeight||720;let r=n.getContext(`2d`);return r?(r.drawImage(e,0,0,n.width,n.height),new Promise((e,r)=>{n.toBlob(t=>t?e(t):r(Error(`Failed to capture frame.`)),`image/jpeg`,t)})):Promise.reject(Error(`Canvas 2D context unavailable.`))}static fileFromInput(e){return e.files?.[0]??null}};let D={sessionTransition:`session.transition`,reviewAction:`review.action`},O=[`document`,`liveness`,`face_match`],k={methods:[`geocode_lookup`],on_fail:`review`};function A(e,t){return e?e.steps.some(e=>e.key===t&&e.enabled):O.includes(t)}function ee(e){if(!e)return null;let t=e.steps.find(e=>e.key===`address`&&e.enabled);return t?{...k,...t.config??{}}:null}function te(e){return e?A(e,`document`)&&!e.options.skip_ocr:!0}function j(e){return e?e.steps.filter(e=>e.enabled).map(e=>e.key):[...O]}let M={document:[`document_selection`,`front_capture`,`back_capture`,`ocr_processing`],address:[`address_entry`,`address_processing`],liveness:[`active_liveness`,`selfie_capture`,`passive_liveness`],face_match:[`face_match`]};var N=class e{static documentHasBack(e){return e!=null&&e!==`passport`}static stepOrder(e={}){return[`welcome`,...j(e.workflow).flatMap(e=>M[e]),`processing`,`result`]}static isStepEnabled(t,n={}){return t===`back_capture`?e.documentHasBack(n.documentType):t===`ocr_processing`?te(n.workflow):t===`active_liveness`?n.livenessMode===`active`:t===`selfie_capture`||t===`passive_liveness`?n.livenessMode!==`active`:!0}static nextStep(t,n={}){let r=e.stepOrder(n),i=r.indexOf(t);if(i<0)return t;for(let t=i+1;t<r.length;t+=1){let i=r[t];if(e.isStepEnabled(i,n))return i}return t}static isTerminal(t){return e.TERMINAL_STATUSES.includes(t)}static statusToDecision(e){switch(e){case`approved`:return`approved`;case`rejected`:return`rejected`;case`requires_review`:return`requires_review`;default:return null}}};p(N,`STEP_ORDER`,[`welcome`,`document_selection`,`front_capture`,`back_capture`,`ocr_processing`,`active_liveness`,`selfie_capture`,`passive_liveness`,`face_match`,`processing`,`result`]),p(N,`TERMINAL_STATUSES`,[`approved`,`rejected`,`requires_review`,`expired`,`cancelled`]);let P=`0.10.20`,F=e=>`https://cdn.jsdelivr.net/npm/`+e;function I(e,t){return e?.find(e=>e.categoryName===t)?.score??0}function ne(){let e=globalThis.performance;return e?.now?e.now():0}var re=class{constructor(){p(this,`landmarker`,null),p(this,`state`,`idle`),p(this,`loading`,null)}async ready(){return this.state===`ready`?!0:this.state===`failed`?!1:(this.loading||(this.loading=this.load()),this.loading)}async load(){this.state=`loading`;try{if(typeof document>`u`)throw Error(`no document`);if(!document.createElement(`canvas`).getContext(`webgl2`))throw Error(`no webgl2`);let e=await import(F(`@mediapipe/tasks-vision@${P}/vision_bundle.mjs`)),t=await e.FilesetResolver.forVisionTasks(F(`@mediapipe/tasks-vision@${P}/wasm`));return this.landmarker=await e.FaceLandmarker.createFromOptions(t,{baseOptions:{modelAssetPath:`https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/1/face_landmarker.task`,delegate:`GPU`},outputFaceBlendshapes:!0,runningMode:`VIDEO`,numFaces:1}),this.state=`ready`,!0}catch{return this.state=`failed`,!1}}analyze(e){if(this.state!==`ready`||!this.landmarker||!e.videoWidth)return null;let t;try{t=this.landmarker.detectForVideo(e,ne())}catch{return null}let n=t.faceLandmarks?.[0];if(!n||n.length===0)return{present:!1,centerX:.5,centerY:.5,scale:0,turn:0,pitch:0,blink:0,smile:0};let r=1,i=0,a=1,o=0;for(let e of n)e.x<r&&(r=e.x),e.x>i&&(i=e.x),e.y<a&&(a=e.y),e.y>o&&(o=e.y);let s=Math.max(.001,o-a),c=n[1],l=n[33],u=n[263],d=n[234],f=n[454],p=n[152],m=c.x-d.x,h=f.x-c.x,g=(h-m)/Math.max(.001,m+h),_=(l.y+u.y)/2,v=(c.y-_)/Math.max(.001,p.y-_),y=t.faceBlendshapes?.[0]?.categories,b=Math.max(I(y,`eyeBlinkLeft`),I(y,`eyeBlinkRight`)),x=(I(y,`mouthSmileLeft`)+I(y,`mouthSmileRight`))/2;return{present:!0,centerX:(r+i)/2,centerY:(a+o)/2,scale:s,turn:g,pitch:v,blink:b,smile:x}}close(){try{this.landmarker?.close()}catch{}this.landmarker=null,this.state=`failed`}};function L(){return new re}let R={turn:.18,smile:.5,blinkClosed:.55,blinkOpen:.25,hold:3,nodDown:.06,nodReturn:.02,closerFactor:1.22,selfieCenterTol:.2,selfieCenterYTol:.25,selfieMinScale:.28,selfieMaxScale:.85};function z(e,t=R){let n=e=>{let n=0;return{feed(r){return n=r.present&&e(r)?n+1:0,n>=t.hold},get progress(){return Math.min(1,n/Math.max(1,t.hold))}}},r=(e,t,n)=>{let r=null,i=!1,a=!1;return{feed(o){if(!o.present)return!1;let s=e(o);if(r===null)return r=s,!1;if(t(s,r))i=!0;else if(i&&n(s,r))return a=!0,!0;return!1},get progress(){return a?1:i?.6:0}}};switch(e){case`blink`:{let e=!1,n=!1;return{feed(r){if(!r.present)return!1;if(r.blink>t.blinkClosed)e=!0;else if(e&&r.blink<t.blinkOpen)return n=!0,!0;return!1},get progress(){return n?1:e?.6:0}}}case`smile`:return n(e=>e.smile>t.smile);case`turn_left`:return n(e=>e.turn<-t.turn);case`turn_right`:return n(e=>e.turn>t.turn);case`nod`:return r(e=>e.pitch,(e,n)=>e>n+t.nodDown,(e,n)=>e<n+t.nodReturn);case`move_closer`:{let e=null,n=0;return{feed(r){return r.present?e===null?(e=r.scale,!1):(n=r.scale>e*t.closerFactor?n+1:0,n>=t.hold):!1},get progress(){return Math.min(1,n/Math.max(1,t.hold))}}}}}function B(e,t=R){return e.present&&Math.abs(e.centerX-.5)<t.selfieCenterTol&&Math.abs(e.centerY-.5)<t.selfieCenterYTol&&e.scale>t.selfieMinScale&&e.scale<t.selfieMaxScale}let V={sampleWidth:320,minFill:.18,maxFill:.97,centerTol:.22,minEdgeStrength:.1,minSharpness:8,borderMargin:.012,minBrightness:.18,hold:5};function ie(e){return[e.y,1-(e.x+e.w),1-(e.y+e.h),e.x]}function H(e,t,n){let r=t,i=-1;for(let a=t;a<n;a+=1){let t=e[a];t>i&&(i=t,r=a)}return{i:r,v:i}}function U(e,t,n){let r={present:!1,rect:{x:0,y:0,w:0,h:0},fill:0,centerX:.5,centerY:.5,edgeStrength:0,sharpness:0,brightness:0};if(t<8||n<8||e.length<t*n)return r;let i=new Float64Array(n),a=new Float64Array(t),o=0,s=0,c=0,l=0;for(let r=0;r<t*n;r+=1)l+=e[r];let u=l/(t*n*255);for(let r=1;r<n-1;r+=1)for(let n=1;n<t-1;n+=1){let l=r*t+n,u=e[l-t-1],d=e[l-t],f=e[l-t+1],p=e[l-1],m=e[l],h=e[l+1],g=e[l+t-1],_=e[l+t],v=e[l+t+1],y=f+2*h+v-(u+2*p+g),b=g+2*_+v-(u+2*d+f);i[r]+=Math.abs(b),a[n]+=Math.abs(y);let x=4*m-p-h-d-_;o+=x,s+=x*x,c+=1}let d=c?s/c-(o/c)**2:0,f=Math.max(1,Math.floor(n*.05)),p=Math.max(1,Math.floor(t*.05)),m=Math.floor(n/2),h=Math.floor(t/2),g=H(i,f,m),_=H(i,m,n-f),v=H(a,p,h),y=H(a,h,t-p),b=v.i/t,x=y.i/t,S=g.i/n,C=_.i/n,w={x:b,y:S,w:Math.max(0,x-b),h:Math.max(0,C-S)},T=Math.max(1,w.w*t),E=Math.max(1,w.h*n),D=Math.min(g.v/(T*1020),_.v/(T*1020),v.v/(E*1020),y.v/(E*1020));return{present:w.w>.12&&w.h>.12&&D>.04,rect:w,fill:w.w*w.h,centerX:(b+x)/2,centerY:(S+C)/2,edgeStrength:D,sharpness:d,brightness:u}}function W(e,t=V){return e.brightness<t.minBrightness?{ready:!1,hint:`Too dark — find better lighting`}:!e.present||e.edgeStrength<t.minEdgeStrength?{ready:!1,hint:`Fit your document inside the frame`}:e.fill>t.maxFill||Math.min(...ie(e.rect))<t.borderMargin?{ready:!1,hint:`Move back a little — fit the whole document`}:e.fill<t.minFill?{ready:!1,hint:`Move closer`}:Math.abs(e.centerX-.5)>t.centerTol||Math.abs(e.centerY-.5)>t.centerTol?{ready:!1,hint:`Center the document`}:e.sharpness<t.minSharpness?{ready:!1,hint:`Hold steady to focus`}:{ready:!0,hint:`Looks good — hold steady`}}function ae(e,t=V){return W(e,t).ready}var oe=class{constructor(e){this.tuning=e,p(this,`canvas`,null),p(this,`ctx`,null)}ready(){try{if(typeof document>`u`)return Promise.resolve(!1);let e=document.createElement(`canvas`),t=e.getContext(`2d`,{willReadFrequently:!0});return t?(this.canvas=e,this.ctx=t,Promise.resolve(!0)):Promise.resolve(!1)}catch{return Promise.resolve(!1)}}analyze(e){if(!this.ctx||!this.canvas||!e.videoWidth)return null;let t=this.tuning.sampleWidth,n=Math.max(1,Math.round(t*e.videoHeight/e.videoWidth));this.canvas.width=t,this.canvas.height=n;let r;try{this.ctx.drawImage(e,0,0,t,n),r=this.ctx.getImageData(0,0,t,n).data}catch{return null}let i=new Float32Array(t*n);for(let e=0,t=0;e<i.length;e+=1,t+=4)i[e]=.299*r[t]+.587*r[t+1]+.114*r[t+2];return U(i,t,n)}close(){this.canvas=null,this.ctx=null}};function G(e=V){return new oe(e)}let K=[{name:`United States`,iso2:`US`,flag:`🇺🇸`},{name:`Canada`,iso2:`CA`,flag:`🇨🇦`},{name:`Brazil`,iso2:`BR`,flag:`🇧🇷`},{name:`United Kingdom`,iso2:`GB`,flag:`🇬🇧`},{name:`Germany`,iso2:`DE`,flag:`🇩🇪`},{name:`France`,iso2:`FR`,flag:`🇫🇷`},{name:`China`,iso2:`CN`,flag:`🇨🇳`},{name:`Japan`,iso2:`JP`,flag:`🇯🇵`},{name:`India`,iso2:`IN`,flag:`🇮🇳`},{name:`Australia`,iso2:`AU`,flag:`🇦🇺`},{name:`South Africa`,iso2:`ZA`,flag:`🇿🇦`},{name:`Russia`,iso2:`RU`,flag:`🇷🇺`},{name:`Saudi Arabia`,iso2:`SA`,flag:`🇸🇦`},{name:`Afghanistan`,iso2:`AF`,flag:`🇦🇫`},{name:`Albania`,iso2:`AL`,flag:`🇦🇱`},{name:`Algeria`,iso2:`DZ`,flag:`🇩🇿`},{name:`Andorra`,iso2:`AD`,flag:`🇦🇩`},{name:`Angola`,iso2:`AO`,flag:`🇦🇴`},{name:`Antigua and Barbuda`,iso2:`AG`,flag:`🇦🇬`},{name:`Argentina`,iso2:`AR`,flag:`🇦🇷`},{name:`Armenia`,iso2:`AM`,flag:`🇦🇲`},{name:`Austria`,iso2:`AT`,flag:`🇦🇹`},{name:`Azerbaijan`,iso2:`AZ`,flag:`🇦🇿`},{name:`Bahamas`,iso2:`BS`,flag:`🇧🇸`},{name:`Bahrain`,iso2:`BH`,flag:`🇧🇭`},{name:`Bangladesh`,iso2:`BD`,flag:`🇧🇩`},{name:`Barbados`,iso2:`BB`,flag:`🇧🇧`},{name:`Belarus`,iso2:`BY`,flag:`🇧🇾`},{name:`Belgium`,iso2:`BE`,flag:`🇧🇪`},{name:`Belize`,iso2:`BZ`,flag:`🇧🇿`},{name:`Benin`,iso2:`BJ`,flag:`🇧🇯`},{name:`Bhutan`,iso2:`BT`,flag:`🇧🇹`},{name:`Bolivia`,iso2:`BO`,flag:`🇧🇴`},{name:`Bosnia and Herzegovina`,iso2:`BA`,flag:`🇧🇦`},{name:`Botswana`,iso2:`BW`,flag:`🇧🇼`},{name:`Brunei`,iso2:`BN`,flag:`🇧🇳`},{name:`Bulgaria`,iso2:`BG`,flag:`🇧🇬`},{name:`Burkina Faso`,iso2:`BF`,flag:`🇧🇫`},{name:`Burundi`,iso2:`BI`,flag:`🇧🇮`},{name:`Cabo Verde`,iso2:`CV`,flag:`🇨🇻`},{name:`Cambodia`,iso2:`KH`,flag:`🇰🇭`},{name:`Cameroon`,iso2:`CM`,flag:`🇨🇲`},{name:`Central African Republic`,iso2:`CF`,flag:`🇨🇫`},{name:`Chad`,iso2:`TD`,flag:`🇹🇩`},{name:`Chile`,iso2:`CL`,flag:`🇨🇱`},{name:`Colombia`,iso2:`CO`,flag:`🇨🇴`},{name:`Comoros`,iso2:`KM`,flag:`🇰🇲`},{name:`Congo (Congo-Brazzaville)`,iso2:`CG`,flag:`🇨🇬`},{name:`Congo (Congo-Kinshasa)`,iso2:`CD`,flag:`🇨🇩`},{name:`Costa Rica`,iso2:`CR`,flag:`🇨🇷`},{name:`Croatia`,iso2:`HR`,flag:`🇭🇷`},{name:`Cuba`,iso2:`CU`,flag:`🇨🇺`},{name:`Cyprus`,iso2:`CY`,flag:`🇨🇾`},{name:`Czech Republic`,iso2:`CZ`,flag:`🇨🇿`},{name:`Denmark`,iso2:`DK`,flag:`🇩🇰`},{name:`Djibouti`,iso2:`DJ`,flag:`🇩🇯`},{name:`Dominica`,iso2:`DM`,flag:`🇩🇲`},{name:`Dominican Republic`,iso2:`DO`,flag:`🇩🇴`},{name:`Ecuador`,iso2:`EC`,flag:`🇪🇨`},{name:`Egypt`,iso2:`EG`,flag:`🇪🇬`},{name:`El Salvador`,iso2:`SV`,flag:`🇸🇻`},{name:`Equatorial Guinea`,iso2:`GQ`,flag:`🇬🇶`},{name:`Eritrea`,iso2:`ER`,flag:`🇪🇷`},{name:`Estonia`,iso2:`EE`,flag:`🇪🇪`},{name:`Eswatini`,iso2:`SZ`,flag:`🇸🇿`},{name:`Ethiopia`,iso2:`ET`,flag:`🇪🇹`},{name:`Fiji`,iso2:`FJ`,flag:`🇫🇯`},{name:`Finland`,iso2:`FI`,flag:`🇫🇮`},{name:`Gabon`,iso2:`GA`,flag:`🇬🇦`},{name:`Gambia`,iso2:`GM`,flag:`🇬🇲`},{name:`Georgia`,iso2:`GE`,flag:`🇬🇪`},{name:`Ghana`,iso2:`GH`,flag:`🇬🇭`},{name:`Greece`,iso2:`GR`,flag:`🇬🇷`},{name:`Grenada`,iso2:`GD`,flag:`🇬🇩`},{name:`Guatemala`,iso2:`GT`,flag:`🇬🇹`},{name:`Guinea`,iso2:`GN`,flag:`🇬🇳`},{name:`Guinea-Bissau`,iso2:`GW`,flag:`🇬🇼`},{name:`Guyana`,iso2:`GY`,flag:`🇬🇾`},{name:`Haiti`,iso2:`HT`,flag:`🇭🇹`},{name:`Honduras`,iso2:`HN`,flag:`🇭🇳`},{name:`Hungary`,iso2:`HU`,flag:`🇭🇺`},{name:`Iceland`,iso2:`IS`,flag:`🇮🇸`},{name:`Indonesia`,iso2:`ID`,flag:`🇮🇩`},{name:`Iran`,iso2:`IR`,flag:`🇮🇷`},{name:`Iraq`,iso2:`IQ`,flag:`🇮🇶`},{name:`Ireland`,iso2:`IE`,flag:`🇮🇪`},{name:`Israel`,iso2:`IL`,flag:`🇮🇱`},{name:`Italy`,iso2:`IT`,flag:`🇮🇹`},{name:`Jamaica`,iso2:`JM`,flag:`🇯🇲`},{name:`Jordan`,iso2:`JO`,flag:`🇯🇴`},{name:`Kazakhstan`,iso2:`KZ`,flag:`🇰🇿`},{name:`Kenya`,iso2:`KE`,flag:`🇰🇪`},{name:`Kiribati`,iso2:`KI`,flag:`🇰🇮`},{name:`Kuwait`,iso2:`KW`,flag:`🇰🇼`},{name:`Kyrgyzstan`,iso2:`KG`,flag:`🇰🇬`},{name:`Laos`,iso2:`LA`,flag:`🇱🇦`},{name:`Latvia`,iso2:`LV`,flag:`🇱🇻`},{name:`Lebanon`,iso2:`LB`,flag:`🇱🇧`},{name:`Lesotho`,iso2:`LS`,flag:`🇱🇸`},{name:`Liberia`,iso2:`LR`,flag:`🇱🇷`},{name:`Libya`,iso2:`LY`,flag:`🇱🇾`},{name:`Liechtenstein`,iso2:`LI`,flag:`🇱🇮`},{name:`Lithuania`,iso2:`LT`,flag:`🇱🇹`},{name:`Luxembourg`,iso2:`LU`,flag:`🇱🇺`},{name:`Madagascar`,iso2:`MG`,flag:`🇲🇬`},{name:`Malawi`,iso2:`MW`,flag:`🇲🇼`},{name:`Malaysia`,iso2:`MY`,flag:`🇲🇾`},{name:`Maldives`,iso2:`MV`,flag:`🇲🇻`},{name:`Mali`,iso2:`ML`,flag:`🇲🇱`},{name:`Malta`,iso2:`MT`,flag:`🇲🇹`},{name:`Marshall Islands`,iso2:`MH`,flag:`🇲🇭`},{name:`Mauritania`,iso2:`MR`,flag:`🇲🇷`},{name:`Mauritius`,iso2:`MU`,flag:`🇲🇺`},{name:`Mexico`,iso2:`MX`,flag:`🇲🇽`},{name:`Micronesia`,iso2:`FM`,flag:`🇫🇲`},{name:`Moldova`,iso2:`MD`,flag:`🇲🇩`},{name:`Monaco`,iso2:`MC`,flag:`🇲🇨`},{name:`Mongolia`,iso2:`MN`,flag:`🇲🇳`},{name:`Montenegro`,iso2:`ME`,flag:`🇲🇪`},{name:`Morocco`,iso2:`MA`,flag:`🇲🇦`},{name:`Mozambique`,iso2:`MZ`,flag:`🇲🇿`},{name:`Myanmar`,iso2:`MM`,flag:`🇲🇲`},{name:`Namibia`,iso2:`NA`,flag:`🇳🇦`},{name:`Nauru`,iso2:`NR`,flag:`🇳🇷`},{name:`Nepal`,iso2:`NP`,flag:`🇳🇵`},{name:`Netherlands`,iso2:`NL`,flag:`🇳🇱`},{name:`New Zealand`,iso2:`NZ`,flag:`🇳🇿`},{name:`Nicaragua`,iso2:`NI`,flag:`🇳🇮`},{name:`Niger`,iso2:`NE`,flag:`🇳🇪`},{name:`Nigeria`,iso2:`NG`,flag:`🇳🇬`},{name:`North Korea`,iso2:`KP`,flag:`🇰🇵`},{name:`North Macedonia`,iso2:`MK`,flag:`🇲🇰`},{name:`Norway`,iso2:`NO`,flag:`🇳🇴`},{name:`Oman`,iso2:`OM`,flag:`🇴🇲`},{name:`Pakistan`,iso2:`PK`,flag:`🇵🇰`},{name:`Palau`,iso2:`PW`,flag:`🇵🇼`},{name:`Panama`,iso2:`PA`,flag:`🇵🇦`},{name:`Papua New Guinea`,iso2:`PG`,flag:`🇵🇬`},{name:`Paraguay`,iso2:`PY`,flag:`🇵🇾`},{name:`Peru`,iso2:`PE`,flag:`🇵🇪`},{name:`Philippines`,iso2:`PH`,flag:`🇵🇭`},{name:`Poland`,iso2:`PL`,flag:`🇵🇱`},{name:`Portugal`,iso2:`PT`,flag:`🇵🇹`},{name:`Qatar`,iso2:`QA`,flag:`🇶🇦`},{name:`Romania`,iso2:`RO`,flag:`🇷🇴`},{name:`Rwanda`,iso2:`RW`,flag:`🇷🇼`},{name:`Saint Kitts and Nevis`,iso2:`KN`,flag:`🇰🇳`},{name:`Saint Lucia`,iso2:`LC`,flag:`🇱🇨`},{name:`Saint Vincent and the Grenadines`,iso2:`VC`,flag:`🇻🇨`},{name:`Samoa`,iso2:`WS`,flag:`🇼🇸`},{name:`San Marino`,iso2:`SM`,flag:`🇸🇲`},{name:`Sao Tome and Principe`,iso2:`ST`,flag:`🇸🇹`},{name:`Senegal`,iso2:`SN`,flag:`🇸🇳`},{name:`Serbia`,iso2:`RS`,flag:`🇷🇸`},{name:`Seychelles`,iso2:`SC`,flag:`🇸🇨`},{name:`Sierra Leone`,iso2:`SL`,flag:`🇸🇱`},{name:`Singapore`,iso2:`SG`,flag:`🇸🇬`},{name:`Slovakia`,iso2:`SK`,flag:`🇸🇰`},{name:`Slovenia`,iso2:`SI`,flag:`🇸🇮`},{name:`Solomon Islands`,iso2:`SB`,flag:`🇸🇧`},{name:`Somalia`,iso2:`SO`,flag:`🇸🇴`},{name:`South Korea`,iso2:`KR`,flag:`🇰🇷`},{name:`South Sudan`,iso2:`SS`,flag:`🇸🇸`},{name:`Spain`,iso2:`ES`,flag:`🇪🇸`},{name:`Sri Lanka`,iso2:`LK`,flag:`🇱🇰`},{name:`Sudan`,iso2:`SD`,flag:`🇸🇩`},{name:`Suriname`,iso2:`SR`,flag:`🇸🇷`},{name:`Sweden`,iso2:`SE`,flag:`🇸🇪`},{name:`Switzerland`,iso2:`CH`,flag:`🇨🇭`},{name:`Syria`,iso2:`SY`,flag:`🇸🇾`},{name:`Tajikistan`,iso2:`TJ`,flag:`🇹🇯`},{name:`Tanzania`,iso2:`TZ`,flag:`🇹🇿`},{name:`Thailand`,iso2:`TH`,flag:`🇹🇭`},{name:`Togo`,iso2:`TG`,flag:`🇹🇬`},{name:`Tonga`,iso2:`TO`,flag:`🇹🇴`},{name:`Trinidad and Tobago`,iso2:`TT`,flag:`🇹🇹`},{name:`Tunisia`,iso2:`TN`,flag:`🇹🇳`},{name:`Turkey`,iso2:`TR`,flag:`🇹🇷`},{name:`Turkmenistan`,iso2:`TM`,flag:`🇹🇲`},{name:`Tuvalu`,iso2:`TV`,flag:`🇹🇻`},{name:`Uganda`,iso2:`UG`,flag:`🇺🇬`},{name:`Ukraine`,iso2:`UA`,flag:`🇺🇦`},{name:`United Arab Emirates`,iso2:`AE`,flag:`🇦🇪`},{name:`Uruguay`,iso2:`UY`,flag:`🇺🇾`},{name:`Uzbekistan`,iso2:`UZ`,flag:`🇺🇿`},{name:`Vanuatu`,iso2:`VU`,flag:`🇻🇺`},{name:`Venezuela`,iso2:`VE`,flag:`🇻🇪`},{name:`Vietnam`,iso2:`VN`,flag:`🇻🇳`},{name:`Yemen`,iso2:`YE`,flag:`🇾🇪`},{name:`Zambia`,iso2:`ZM`,flag:`🇿🇲`},{name:`Zimbabwe`,iso2:`ZW`,flag:`🇿🇼`},{name:`Timor-Leste`,iso2:`TL`,flag:`🇹🇱`}];function se(e){function t(t,n){for(let r of Array.isArray(n)?n:[n])r==null||r===!1||t.appendChild(typeof r==`string`?e.createTextNode(r):r)}function n(n,r={},i){let a=e.createElement(n);for(let[e,t]of Object.entries(r))if(t!=null)if(e===`on`)for(let[e,n]of Object.entries(t))a.addEventListener(e,n);else e===`class`?a.className=t:e===`text`?a.textContent=t:e===`html`?a.innerHTML=t:e===`value`||e===`src`||e===`type`||e===`accept`||e===`placeholder`?a[e]=t:a.setAttribute(e,t);return t(a,i),a}function r(e,t={}){let r=t.class??`arkyc-addr-input`;return t.choices?n(`select`,{class:r,name:t.name,autocomplete:t.autocomplete,"aria-label":t.name??e},[n(`option`,{value:``,text:e}),...t.choices.map(e=>n(`option`,{value:typeof e==`string`?e:e.value,text:typeof e==`string`?e:e.label??e.value}))]):n(`input`,{class:r,type:t.type??`text`,placeholder:e,name:t.name,autocomplete:t.autocomplete,value:t.value})}return{h:n,append:t,field:r}}let q={passport:`Passport`,id_card:`ID Card`,drivers_license:`Driver's License`,residence_permit:`Residence Permit`},J={turn_left:`Slowly turn your head to the left, and hold`,turn_right:`Slowly turn your head to the right, and hold`,blink:`Blink slowly`,smile:`Smile, and hold it`,nod:`Slowly nod your head`,move_closer:`Slowly move closer to the camera`},Y={cls:`warn`,icon:`⏳`,title:`Link expired`,copy:`This verification link has expired.`},ce={approved:{cls:`ok`,icon:`✓`,title:`Already complete`,copy:`This verification has already been completed.`},rejected:{cls:`ok`,icon:`✓`,title:`Already complete`,copy:`This verification has already been completed.`},requires_review:{cls:`ok`,icon:`✓`,title:`Already complete`,copy:`This verification has already been submitted and is being reviewed.`},expired:Y,cancelled:{cls:`warn`,icon:`⏳`,title:`Cancelled`,copy:`This verification was cancelled.`}},X=e=>`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round">${e}</svg>`,le={turn_right:X(`<path d="M5 12h14M13 6l6 6-6 6"/>`),turn_left:X(`<path d="M19 12H5M11 6l-6 6 6 6"/>`),nod:X(`<path d="M12 5v14M6 13l6 6 6-6"/>`),move_closer:X(`<circle cx="12" cy="12" r="4"/><path d="M12 2v3M12 19v3M2 12h3M19 12h3"/>`),blink:X(`<path d="M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/>`),smile:X(`<path d="M8 14s1.5 2 4 2 4-2 4-2"/><path d="M9 9h.01M15 9h.01"/>`)},ue=X(`<path d="M20 6 9 17l-5-5"/>`),Z=e=>`<svg viewBox="0 0 64 64" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round">${e}</svg>`,de={welcome:Z(`<path d="M32 7 52 14v14c0 12.5-8.2 21.6-20 25.6C20.2 49.6 12 40.5 12 28V14z"/><path d="M23 30.5l6.2 6.2L41 24.5"/>`),front_capture:Z(`<rect x="7" y="15" width="50" height="34" rx="5"/><circle cx="22" cy="28" r="5"/><path d="M14 42c1-5 5-7 8-7s7 2 8 7"/><path d="M38 27h12M38 34h12M38 41h8"/>`),back_capture:Z(`<rect x="7" y="15" width="50" height="34" rx="5"/><rect x="7" y="20" width="50" height="6" fill="currentColor" stroke="none" opacity=".18"/><path d="M14 34h36M14 41h24"/>`),selfie_capture:Z(`<path d="M10 20v-6a4 4 0 0 1 4-4h6"/><path d="M44 10h6a4 4 0 0 1 4 4v6"/><path d="M54 44v6a4 4 0 0 1-4 4h-6"/><path d="M20 54h-6a4 4 0 0 1-4-4v-6"/><circle cx="32" cy="27" r="8"/><path d="M19 50c0-7 6-11 13-11s13 4 13 11"/>`),active_liveness:Z(`<circle cx="32" cy="30" r="13"/><circle cx="27" cy="27" r="1.2" fill="currentColor" stroke="none"/><circle cx="37" cy="27" r="1.2" fill="currentColor" stroke="none"/><path d="M26 34c2 2.5 10 2.5 12 0"/><path d="M13 30H6M10 26l-4 4 4 4"/><path d="M51 30h7M54 26l4 4-4 4"/>`)};var fe=class{constructor(e,t,n,r=globalThis.navigator,i=L(),a=R,o=G(),s=V){this.doc=e,this.theme=t,this.handlers=n,p(this,`root`,void 0),p(this,`body`,void 0),p(this,`footer`,void 0),p(this,`styleEl`,void 0),p(this,`brandEl`,void 0),p(this,`camera`,void 0),p(this,`analyzer`,void 0),p(this,`tuning`,void 0),p(this,`docAnalyzer`,void 0),p(this,`docTuning`,void 0),p(this,`timers`,[]),p(this,`cleanups`,[]),p(this,`dom`,void 0),this.dom=se(e),this.camera=new E(e,r),this.analyzer=i,this.tuning=a,this.docAnalyzer=o,this.docTuning=s,this.root=this.dom.h(`div`,{class:`arkyc-root`}),this.styleEl=this.dom.h(`style`,{text:t.stylesheet()}),this.root.appendChild(this.styleEl),this.brandEl=this.dom.h(`div`,{class:`arkyc-brand`}),this.fillBrand(),this.body=this.dom.h(`div`,{class:`arkyc-body`}),this.footer=this.dom.h(`div`,{class:`arkyc-footer`});let c=this.dom.h(`div`,{class:`arkyc-header`},[this.brandEl,this.dom.h(`button`,{class:`arkyc-close`,html:`×`,"aria-label":`Close`,on:{click:()=>this.handlers.onClose()}})]);this.root.appendChild(this.dom.h(`div`,{class:`arkyc-card`},[c,this.body,this.footer]))}fillBrand(){this.clear(this.brandEl);let e=Date.now()-Math.floor(600*1e3*Math.random()),t=this.theme.showBranding&&(this.theme.logoUrl||this.theme.name);this.dom.append(this.brandEl,t?[this.theme.logoUrl&&this.dom.h(`img`,{class:`arkyc-logo`,src:`${this.theme.logoUrl}?stamp=${e}`}),this.theme.name&&this.dom.h(`span`,{class:`arkyc-brand-name`,text:this.theme.name})]:this.dom.h(`p`,{class:`arkyc-title`,text:`Verify your identity`}))}applyBranding(e){this.theme=new T(e),this.styleEl.textContent=this.theme.stylesheet(),this.fillBrand()}get element(){return this.root}get cameraSupported(){return this.camera.supported}destroy(){this.timers.forEach(e=>clearInterval(e)),this.timers=[],this.cleanups.forEach(e=>e()),this.cleanups=[],this.camera.stop()}render(e){switch(this.destroy(),this.clear(this.body),this.clear(this.footer),this.root.classList.remove(`arkyc-handoff`),e.step){case`welcome`:return this.renderWelcome(e.handoffAvailable);case`document_selection`:return this.renderDocumentSelection();case`front_capture`:return this.renderCapture(`Front of document`,`environment`,e.allowSkip,!1,e.strictCapture);case`back_capture`:return this.renderCapture(`Back of document`,`environment`,e.allowSkip,!1,e.strictCapture);case`selfie_capture`:return this.renderCapture(`Take a selfie`,`user`,e.allowSkip,!0,e.strictCapture);case`active_liveness`:return this.renderActiveLiveness(e.livenessChallenges??[],e.allowSkip,e.requireLiveCamera);case`ocr_processing`:return this.renderProcessing(`Reading your document…`);case`address_entry`:return this.renderAddressForm(e.addressMethods??[]);case`address_processing`:return this.renderProcessing(`Verifying your address…`);case`passive_liveness`:return this.renderProcessing(`Checking liveness…`);case`face_match`:return this.renderProcessing(`Matching your face…`);case`processing`:return this.renderProcessing(e.statusLabel??`Finalising verification…`);case`result`:return this.renderResult(e.decision??null,e.errorMessage,{terminal:e.terminalNotice,status:e.status})}}appendArt(e){let t=de[e];t&&this.body.appendChild(this.dom.h(`div`,{class:`arkyc-illus`,html:t}))}renderWelcome(e){this.appendArt(`welcome`),this.dom.append(this.body,[this.dom.h(`h2`,{class:`arkyc-h`,text:`Verify your identity`}),this.dom.h(`p`,{class:`arkyc-p`,text:`You will need a government-issued ID and a moment to take a selfie. Your data is processed securely.`})]),this.dom.append(this.footer,[this.button(`Get started`,()=>this.handlers.onStart()),e&&this.button(`Continue on your phone`,()=>this.handlers.onUsePhone(),`arkyc-btn-ghost`)])}renderLoading(e=`Loading…`){this.destroy(),this.clear(this.body),this.clear(this.footer),this.root.classList.remove(`arkyc-handoff`),this.renderProcessing(e)}renderInstruction(e,t,n,r,i){this.destroy(),this.clear(this.body),this.clear(this.footer),this.root.classList.remove(`arkyc-handoff`),this.appendArt(e),this.dom.append(this.body,[this.dom.h(`h2`,{class:`arkyc-h`,text:t}),this.dom.h(`p`,{class:`arkyc-p`,text:n})]),this.footer.appendChild(this.button(r,i))}renderHandoff(e,t){this.destroy(),this.clear(this.body),this.clear(this.footer),this.root.classList.add(`arkyc-handoff`),this.dom.append(this.body,[this.dom.h(`h2`,{class:`arkyc-h`,text:`Continue on your phone`}),this.dom.h(`p`,{class:`arkyc-p`,text:`Scan this code with your phone camera to finish verifying there.`}),this.dom.h(`div`,{class:`arkyc-qr`,html:e}),this.dom.h(`div`,{class:`arkyc-handoff-wait`},[this.dom.h(`div`,{class:`arkyc-spinner sm`}),this.dom.h(`span`,{text:`Waiting for your phone…`})])]),t&&this.footer.appendChild(this.button(`Continue on this device`,()=>this.handlers.onContinueHere(),`arkyc-btn-ghost`))}renderDocumentSelection(){this.body.appendChild(this.dom.h(`h2`,{class:`arkyc-h`,text:`Select your document`}));let e=this.dom.field(`Country`,{class:`arkyc-btn arkyc-btn-ghost arkyc-text-center`,name:`country`,autocomplete:`country`,choices:K.map(({name:e,iso2:t,flag:n})=>({value:t,label:`${n} ${e}`}))}),t=Object.keys(q).map(t=>{let n=this.button(q[t],()=>this.handlers.onDocumentSelected(t,(e.value||``).trim().toUpperCase()));return n.classList.add(`arkyc-btn-ghost`),n});this.body.appendChild(this.dom.h(`div`,{class:`arkyc-choices`},[e,...t]))}renderCapture(e,t,n,r=!1,i=!1){let a=i&&!r,o=this.dom.h(`input`,{type:`file`,accept:`image/*`,class:`arkyc-hidden`,on:{change:()=>this.handlers.onImage(E.fileFromInput(o))}});if(this.dom.append(this.body,[this.dom.h(`h2`,{class:`arkyc-h`,text:e}),this.dom.h(`p`,{class:`arkyc-p`,text:`Position it clearly in frame, then capture.`}),o]),this.camera.supported){let s=this.dom.h(`video`,{class:`arkyc-preview${r?` selfie`:``}`}),c=r?this.buildFaceStage(s):null,l=r?null:this.buildDocStage(s),u=c?.stage??l.stage;this.body.appendChild(u);let d=this.dom.h(`p`,{class:`arkyc-p arkyc-hint`});this.body.appendChild(d);let f=a=>{if(this.destroy(),a){let e=URL.createObjectURL(a),t=this.dom.h(`img`,{class:`arkyc-preview${r?` selfie`:``}`,src:e});u.replaceWith(t),this.cleanups.push(()=>URL.revokeObjectURL(e))}else u.classList.add(`arkyc-hidden`);this.clear(this.footer),d.textContent=`✓ Captured`,this.footer.appendChild(this.button(`Continue`,()=>this.handlers.onImage(a)));let o=this.button(`Retake`,()=>{this.destroy(),this.clear(this.body),this.clear(this.footer),this.renderCapture(e,t,n,r,i)});o.classList.add(`arkyc-btn-ghost`),this.footer.appendChild(o)},p=()=>void this.camera.grabFrame(s).then(f);this.camera.start(s,t).catch(()=>{if(u.classList.add(`arkyc-hidden`),a){d.textContent=`Camera access is required to scan your document. Please allow access and try again.`;return}o.click()}),r?this.runSelfieAutoCapture(s,d,p,c):(this.runDocumentAutoCapture(s,d,l,a,p),a||this.footer.appendChild(this.button(`Capture`,p)))}else if(a)this.dom.append(this.body,[this.dom.h(`div`,{class:`arkyc-badge err`,html:`!`}),this.dom.h(`p`,{class:`arkyc-p`,text:`This step needs a working camera to scan your document. Please retry on a device with a camera.`})]);else{let e=this.button(`Upload photo`,()=>o.click());this.footer.appendChild(e)}if(n){let e=this.button(`Skip (demo)`,()=>this.handlers.onImage(null));e.classList.add(`arkyc-btn-ghost`),this.footer.appendChild(e)}}onCameraLive(e,t){if((e.readyState??0)>=2){t();return}e.addEventListener(`playing`,t,{once:!0})}runDocumentAutoCapture(e,t,n,r,i){let a=()=>{if(r){t.textContent=`Document scanning isn’t available on this device.`;return}this.runDocumentBrightnessCapture(e,t,n,i)},o=this.docAnalyzer;if(!o)return a();t.textContent=`Starting camera…`;let s=!1,c=!1;this.cleanups.push(()=>{s=!0}),this.onCameraLive(e,()=>{!s&&!c&&(t.textContent=`Getting ready…`)}),o.ready().then(r=>{if(c=!0,s)return;if(!r){a();return}let l=0,u=null,d=null,f=(e,t)=>e==null?t:e*.6+t*.4,p=setInterval(()=>{let r=o.analyze(e);if(!r)return;u=f(u,r.fill),d=f(d,r.edgeStrength);let{ready:a,hint:s}=W({...r,fill:u,edgeStrength:d},this.docTuning);t.textContent=s,n.setFrame(r.present?r.rect:null),n.setQuality(a?`good`:r.present?`wait`:`bad`),l=a?l+1:Math.max(0,l-1),l>=this.docTuning.hold&&(clearInterval(p),n.setQuality(`good`),i())},250);this.timers.push(p)})}runDocumentBrightnessCapture(e,t,n,r){let i=0,a=setInterval(()=>{let o=this.camera.sampleQuality(e);o&&(o.tooDark?(t.textContent=`Too dark — find better lighting`,i=0,n.setQuality(`bad`)):o.glare?(t.textContent=`Reduce glare on the document`,i=0,n.setQuality(`bad`)):(t.textContent=`Looks good — hold steady`,i+=1,n.setQuality(`good`)),i>=5&&(clearInterval(a),r()))},300);this.timers.push(a)}runSelfieAutoCapture(e,t,n,r){let i=this.analyzer,a=()=>this.footer.appendChild(this.button(`Capture`,n));if(!i){t.textContent=`Center your face, then capture`,a();return}t.textContent=`Starting camera…`;let o=!1,s=!1;this.cleanups.push(()=>{o=!0}),this.onCameraLive(e,()=>{!o&&!s&&(t.textContent=`Getting ready…`)}),i.ready().then(c=>{if(s=!0,o)return;if(!c){t.textContent=`Center your face, then capture`,a();return}let l=0,u=setInterval(()=>{let a=i.analyze(e);if(!a||!a.present){t.textContent=`Position your face in the circle`,l=0,r.setState(`wait`),r.setProgress(0);return}B(a,this.tuning)?(t.textContent=`Hold still…`,l+=1,r.setState(`good`),r.setProgress(l/4)):(t.textContent=a.scale<=this.tuning.selfieMinScale?`Move a little closer`:`Center your face`,l=0,r.setState(`wait`),r.setProgress(0)),l>=4&&(clearInterval(u),r.setState(`done`),r.setProgress(1),n())},180);this.timers.push(u)})}renderActiveLiveness(e,t,n){let r=this.dom.h(`p`,{class:`arkyc-p`,text:`Follow the on-screen prompts. Keep your face centred in the circle.`});if(this.dom.append(this.body,[this.dom.h(`h2`,{class:`arkyc-h`,text:`Liveness check`}),r]),!this.camera.supported||!this.camera.canRecord){if(n){if(this.body.appendChild(this.dom.h(`div`,{class:`arkyc-badge err`,html:`!`})),r.textContent=`This check needs camera access on a supported device. Please retry on a device with a working camera.`,t){let t=this.button(`Skip (demo)`,()=>this.handlers.onActiveLiveness(null,e));t.classList.add(`arkyc-btn-ghost`),this.footer.appendChild(t)}return}let i=this.button(`I performed the steps`,()=>this.handlers.onActiveLiveness(null,e));if(this.footer.appendChild(i),t){let t=this.button(`Skip (demo)`,()=>this.handlers.onActiveLiveness(null,e));t.classList.add(`arkyc-btn-ghost`),this.footer.appendChild(t)}return}let i=this.dom.h(`video`,{class:`arkyc-preview selfie`}),a=this.buildFaceStage(i),o=this.buildDots(e.length);this.dom.append(this.body,[e.length>1&&o.el,a.stage]);let s=null,c=0,l=[],u=z(e[0]??`blink`,this.tuning),d=(t=!1)=>{let n=e[c];if(!n){r.textContent=`Hold still…`;return}r.textContent=t?`✓ ${J[n]}`:`Step ${c+1} of ${e.length}: ${J[n]}`},f=()=>{a.setCue(e[c]??null),a.setState(`wait`),a.setProgress(0),o.setActive(c)},p=()=>{h.setAttribute(`disabled`,`true`),this.camera.grabFrame(i).then(e=>Promise.resolve(s?.stop()??Promise.resolve(null)).then(t=>this.handlers.onActiveLiveness(t,l,e)))},m=()=>{if(c>=e.length)return;let t=e[c];if(t&&l.push(t),o.markDone(c),c+=1,c>=e.length){p();return}u=z(e[c],this.tuning),d(),f(),c===e.length-1&&(h.textContent=`Finish`)},h=this.button(`Next`,()=>m());e.length<=1&&(h.textContent=`Finish`);let g=!1,_=()=>{g||(g=!0,this.footer.appendChild(h))};if(this.camera.start(i,`user`).then(t=>{s=this.camera.recordStart(t),d(),f();let n=this.analyzer;if(!n){_();return}let r=!1;this.cleanups.push(()=>{r=!0}),n.ready().then(t=>{if(r)return;if(!t){_();return}let o=!1,s=setInterval(()=>{if(c>=e.length){clearInterval(s);return}if(o)return;let t=n.analyze(i);if(!t)return;let r=u.feed(t);if(a.setProgress(u.progress),r){a.setState(`done`),d(!0),o=!0;let e=setTimeout(()=>{o=!1,m()},650);this.cleanups.push(()=>clearTimeout(e))}else a.setState(u.progress>0?`good`:`wait`)},160);this.timers.push(s)})}).catch(()=>{if(a.stage.classList.add(`arkyc-hidden`),n){r.textContent=`Camera access is required to continue. Please allow access and try again.`;return}this.handlers.onActiveLiveness(null,e)}),t){let t=this.button(`Skip (demo)`,()=>this.handlers.onActiveLiveness(null,e));t.classList.add(`arkyc-btn-ghost`),this.footer.appendChild(t)}}buildFaceStage(e){let t=this.dom.h(`div`,{class:`arkyc-ring`,html:`<svg viewBox="0 0 100 100"><circle class="arkyc-ring-track" cx="50" cy="50" r="46"/><circle class="arkyc-ring-arc" cx="50" cy="50" r="46"/></svg>`}),n=this.dom.h(`div`,{class:`arkyc-cue`}),r=this.dom.h(`div`,{class:`arkyc-stage`,"data-state":`wait`},[e,t,n,this.dom.h(`div`,{class:`arkyc-check`,html:ue})]),i=t.querySelector(`.arkyc-ring-arc`),a=2*Math.PI*46;return i&&(i.style.strokeDasharray=String(a),i.style.strokeDashoffset=String(a)),{stage:r,setProgress:e=>{i&&(i.style.strokeDashoffset=String(a*(1-Math.max(0,Math.min(1,e)))))},setState:e=>r.setAttribute(`data-state`,e),setCue:e=>{n.className=`arkyc-cue`+(e?` show arkyc-cue-${e}`:``),n.innerHTML=e?le[e]:``}}}buildDots(e){let t=Array.from({length:e},()=>this.dom.h(`div`,{class:`arkyc-dot`}));return{el:this.dom.h(`div`,{class:`arkyc-dots`},t),setActive:e=>t.forEach((t,n)=>t.classList.toggle(`active`,n===e&&!t.classList.contains(`done`))),markDone:e=>{let n=t[e];n&&(n.classList.remove(`active`),n.classList.add(`done`))}}}buildDocStage(e){let t=this.dom.h(`div`,{class:`arkyc-doc-frame`},[...[`tl`,`tr`,`bl`,`br`].map(e=>this.dom.h(`span`,{class:`arkyc-corner ${e}`})),this.dom.h(`div`,{class:`arkyc-scan`})]),n=this.dom.h(`div`,{class:`arkyc-doc`,"data-q":`wait`},[e,t]);return{stage:n,setQuality:e=>n.setAttribute(`data-q`,e),setFrame:e=>n.setAttribute(`data-detected`,e?`true`:`false`)}}renderProcessing(e){this.dom.append(this.body,[this.dom.h(`div`,{class:`arkyc-spinner`}),this.dom.h(`p`,{class:`arkyc-p`,text:e})])}renderResult(e,t,n={}){if(t)this.dom.append(this.body,[this.dom.h(`div`,{class:`arkyc-badge err`,html:`!`}),this.dom.h(`h2`,{class:`arkyc-h`,text:`Something went wrong`}),this.dom.h(`p`,{class:`arkyc-p`,text:t})]);else if(n.terminal){let e=ce[n.status??`expired`]??Y;this.dom.append(this.body,[this.dom.h(`div`,{class:`arkyc-badge ${e.cls}`,text:e.icon}),this.dom.h(`h2`,{class:`arkyc-h`,text:e.title}),this.dom.h(`p`,{class:`arkyc-p`,text:e.copy})]),this.footer.appendChild(this.button(`Close`,()=>this.handlers.onClose()));return}else{let t={approved:{cls:`ok`,icon:`✓`,title:`Verified`,copy:`Your identity has been verified.`},requires_review:{cls:`warn`,icon:`⏳`,title:`Under review`,copy:`Your verification is being reviewed. We will be in touch shortly.`},rejected:{cls:`err`,icon:`✕`,title:`Not verified`,copy:`We could not verify your identity. Please try again.`}},n=t[e??`requires_review`]??t.requires_review;this.dom.append(this.body,[this.dom.h(`div`,{class:`arkyc-badge ${n.cls}`,text:n.icon}),this.dom.h(`h2`,{class:`arkyc-h`,text:n.title}),this.dom.h(`p`,{class:`arkyc-p`,text:n.copy})])}this.footer.appendChild(this.button(`Done`,()=>this.handlers.onAcknowledge()))}renderAddressForm(e){this.body.appendChild(this.dom.h(`h2`,{class:`arkyc-h`,text:`Your address`})),this.body.appendChild(this.dom.h(`p`,{class:`arkyc-p`,text:`Enter your residential address so we can verify it.`}));let t=this.dom.field(`Address line 1`,{autocomplete:`address-line1`,name:`street`}),n=this.dom.field(`Address line 2 (optional)`,{autocomplete:`address-line2`,name:`town`}),r=this.dom.field(`City`,{autocomplete:`address-level2`,name:`city`}),i=this.dom.field(`State / region`,{autocomplete:`address-level1`,name:`state`}),a=this.dom.field(`ZIP/Postal code`,{autocomplete:`postal-code`,name:`zip`}),o=this.dom.field(`Country`,{name:`country_iso2`,choices:K.map(e=>({value:e.iso2,label:`${e.flag} ${e.name}`}))});this.body.appendChild(this.dom.h(`div`,{class:`arkyc-addr-form`},[t,n,r,i,a,o]));let s=null;if(e.includes(`poa_document`)){let e=this.dom.h(`input`,{class:`arkyc-addr-input`,type:`file`,accept:`image/*`,on:{change:()=>s=e.files?.[0]??null}});this.dom.append(this.body,[this.dom.h(`p`,{class:`arkyc-p`,text:`Upload a proof of address (utility bill or bank statement).`}),e])}let c=!1,l=e.includes(`device_location`),u=this.button(`Continue`,()=>this.handlers.onAddress({line1:t.value.trim()||null,line2:n.value.trim()||null,city:r.value.trim()||null,region:i.value.trim()||null,postalCode:a.value.trim()||null,country:o.value.trim().toUpperCase()||null,poa:s,useLocation:c}));if(l){let e=this.dom.h(`p`,{class:`arkyc-p`}),t=this.dom.h(`input`,{type:`checkbox`,on:{change:()=>{if(!t.checked){c=!1,e.textContent=``,u.setAttribute(`disabled`,`true`);return}e.textContent=`Requesting your location…`,u.setAttribute(`disabled`,`true`),Promise.resolve(this.handlers.onShareLocation()).then(n=>{c=n,t.checked=n,n?u.removeAttribute(`disabled`):u.setAttribute(`disabled`,`true`),e.textContent=n?`Location shared ✓`:`Couldn’t access your location, allow location access to continue.`})}}});u.setAttribute(`disabled`,`true`),this.body.appendChild(this.dom.h(`label`,{class:`arkyc-addr-opt`},[t,this.dom.h(`span`,{text:`Allow access to my current location to confirm my address`})])),this.body.appendChild(e)}this.footer.appendChild(u)}button(e,t,n){let r=n?`arkyc-btn ${n}`:`arkyc-btn`,i=this.dom.h(`button`,{class:r,text:e}),a=!1;return i.addEventListener(`click`,()=>{a||(a=!0,i.setAttribute(`disabled`,`true`),i.classList.add(`arkyc-busy`),t())}),i}clear(e){for(;e.firstChild;)e.removeChild(e.firstChild)}};function pe(e){let t=e.userAgent||``;if(!t)return!1;let n=/Android|iPhone|iPad|iPod|Opera Mini|IEMobile|Mobile|BlackBerry|Windows Phone/i.test(t),r=e.platform===`MacIntel`&&(e.maxTouchPoints??0)>1;return!n&&!r}var me=l(s(((e,t)=>{var n=function(){var e=function(e,t){var r=e,a=n[t],p=null,m=0,h=null,g=[],v={},y=function(e,t){m=r*4+17,p=function(e){for(var t=Array(e),n=0;n<e;n+=1){t[n]=Array(e);for(var r=0;r<e;r+=1)t[n][r]=null}return t}(m),b(0,0),b(m-7,0),b(0,m-7),C(),S(),T(e,t),r>=7&&w(e),h??(h=O(r,a,g)),E(h,t)},b=function(e,t){for(var n=-1;n<=7;n+=1)if(!(e+n<=-1||m<=e+n))for(var r=-1;r<=7;r+=1)t+r<=-1||m<=t+r||(0<=n&&n<=6&&(r==0||r==6)||0<=r&&r<=6&&(n==0||n==6)||2<=n&&n<=4&&2<=r&&r<=4?p[e+n][t+r]=!0:p[e+n][t+r]=!1)},x=function(){for(var e=0,t=0,n=0;n<8;n+=1){y(!0,n);var r=i.getLostPoint(v);(n==0||e>r)&&(e=r,t=n)}return t},S=function(){for(var e=8;e<m-8;e+=1)p[e][6]??(p[e][6]=e%2==0);for(var t=8;t<m-8;t+=1)p[6][t]??(p[6][t]=t%2==0)},C=function(){for(var e=i.getPatternPosition(r),t=0;t<e.length;t+=1)for(var n=0;n<e.length;n+=1){var a=e[t],o=e[n];if(p[a][o]==null)for(var s=-2;s<=2;s+=1)for(var c=-2;c<=2;c+=1)s==-2||s==2||c==-2||c==2||s==0&&c==0?p[a+s][o+c]=!0:p[a+s][o+c]=!1}},w=function(e){for(var t=i.getBCHTypeNumber(r),n=0;n<18;n+=1){var a=!e&&(t>>n&1)==1;p[Math.floor(n/3)][n%3+m-8-3]=a}for(var n=0;n<18;n+=1){var a=!e&&(t>>n&1)==1;p[n%3+m-8-3][Math.floor(n/3)]=a}},T=function(e,t){for(var n=a<<3|t,r=i.getBCHTypeInfo(n),o=0;o<15;o+=1){var s=!e&&(r>>o&1)==1;o<6?p[o][8]=s:o<8?p[o+1][8]=s:p[m-15+o][8]=s}for(var o=0;o<15;o+=1){var s=!e&&(r>>o&1)==1;o<8?p[8][m-o-1]=s:o<9?p[8][15-o-1+1]=s:p[8][15-o-1]=s}p[m-8][8]=!e},E=function(e,t){for(var n=-1,r=m-1,a=7,o=0,s=i.getMaskFunction(t),c=m-1;c>0;c-=2)for(c==6&&--c;;){for(var l=0;l<2;l+=1)if(p[r][c-l]==null){var u=!1;o<e.length&&(u=(e[o]>>>a&1)==1),s(r,c-l)&&(u=!u),p[r][c-l]=u,--a,a==-1&&(o+=1,a=7)}if(r+=n,r<0||m<=r){r-=n,n=-n;break}}},D=function(e,t){for(var n=0,r=0,a=0,s=Array(t.length),c=Array(t.length),l=0;l<t.length;l+=1){var u=t[l].dataCount,d=t[l].totalCount-u;r=Math.max(r,u),a=Math.max(a,d),s[l]=Array(u);for(var f=0;f<s[l].length;f+=1)s[l][f]=255&e.getBuffer()[f+n];n+=u;var p=i.getErrorCorrectPolynomial(d),m=o(s[l],p.getLength()-1).mod(p);c[l]=Array(p.getLength()-1);for(var f=0;f<c[l].length;f+=1){var h=f+m.getLength()-c[l].length;c[l][f]=h>=0?m.getAt(h):0}}for(var g=0,f=0;f<t.length;f+=1)g+=t[f].totalCount;for(var _=Array(g),v=0,f=0;f<r;f+=1)for(var l=0;l<t.length;l+=1)f<s[l].length&&(_[v]=s[l][f],v+=1);for(var f=0;f<a;f+=1)for(var l=0;l<t.length;l+=1)f<c[l].length&&(_[v]=c[l][f],v+=1);return _},O=function(e,t,n){for(var r=s.getRSBlocks(e,t),a=c(),o=0;o<n.length;o+=1){var l=n[o];a.put(l.getMode(),4),a.put(l.getLength(),i.getLengthInBits(l.getMode(),e)),l.write(a)}for(var u=0,o=0;o<r.length;o+=1)u+=r[o].dataCount;if(a.getLengthInBits()>u*8)throw`code length overflow. (`+a.getLengthInBits()+`>`+u*8+`)`;for(a.getLengthInBits()+4<=u*8&&a.put(0,4);a.getLengthInBits()%8!=0;)a.putBit(!1);for(;!(a.getLengthInBits()>=u*8||(a.put(236,8),a.getLengthInBits()>=u*8));)a.put(17,8);return D(a,r)};v.addData=function(e,t){t=t||`Byte`;var n=null;switch(t){case`Numeric`:n=l(e);break;case`Alphanumeric`:n=u(e);break;case`Byte`:n=d(e);break;case`Kanji`:n=f(e);break;default:throw`mode:`+t}g.push(n),h=null},v.isDark=function(e,t){if(e<0||m<=e||t<0||m<=t)throw e+`,`+t;return p[e][t]},v.getModuleCount=function(){return m},v.make=function(){if(r<1){for(var e=1;e<40;e++){for(var t=s.getRSBlocks(e,a),n=c(),o=0;o<g.length;o++){var l=g[o];n.put(l.getMode(),4),n.put(l.getLength(),i.getLengthInBits(l.getMode(),e)),l.write(n)}for(var u=0,o=0;o<t.length;o++)u+=t[o].dataCount;if(n.getLengthInBits()<=u*8)break}r=e}y(!1,x())},v.createTableTag=function(e,t){e=e||2,t=t===void 0?e*4:t;var n=``;n+=`<table style="`,n+=` border-width: 0px; border-style: none;`,n+=` border-collapse: collapse;`,n+=` padding: 0px; margin: `+t+`px;`,n+=`">`,n+=`<tbody>`;for(var r=0;r<v.getModuleCount();r+=1){n+=`<tr>`;for(var i=0;i<v.getModuleCount();i+=1)n+=`<td style="`,n+=` border-width: 0px; border-style: none;`,n+=` border-collapse: collapse;`,n+=` padding: 0px; margin: 0px;`,n+=` width: `+e+`px;`,n+=` height: `+e+`px;`,n+=` background-color: `,n+=v.isDark(r,i)?`#000000`:`#ffffff`,n+=`;`,n+=`"/>`;n+=`</tr>`}return n+=`</tbody>`,n+=`</table>`,n},v.createSvgTag=function(e,t,n,r){var i={};typeof arguments[0]==`object`&&(i=arguments[0],e=i.cellSize,t=i.margin,n=i.alt,r=i.title),e=e||2,t=t===void 0?e*4:t,n=typeof n==`string`?{text:n}:n||{},n.text=n.text||null,n.id=n.text?n.id||`qrcode-description`:null,r=typeof r==`string`?{text:r}:r||{},r.text=r.text||null,r.id=r.text?r.id||`qrcode-title`:null;var a=v.getModuleCount()*e+t*2,o,s,c,l,u=``,d=`l`+e+`,0 0,`+e+` -`+e+`,0 0,-`+e+`z `;for(u+=`<svg version="1.1" xmlns="http://www.w3.org/2000/svg"`,u+=i.scalable?``:` width="`+a+`px" height="`+a+`px"`,u+=` viewBox="0 0 `+a+` `+a+`" `,u+=` preserveAspectRatio="xMinYMin meet"`,u+=r.text||n.text?` role="img" aria-labelledby="`+k([r.id,n.id].join(` `).trim())+`"`:``,u+=`>`,u+=r.text?`<title id="`+k(r.id)+`">`+k(r.text)+`</title>`:``,u+=n.text?`<description id="`+k(n.id)+`">`+k(n.text)+`</description>`:``,u+=`<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>`,u+=`<path d="`,c=0;c<v.getModuleCount();c+=1)for(l=c*e+t,o=0;o<v.getModuleCount();o+=1)v.isDark(c,o)&&(s=o*e+t,u+=`M`+s+`,`+l+d);return u+=`" stroke="transparent" fill="black"/>`,u+=`</svg>`,u},v.createDataURL=function(e,t){e=e||2,t=t===void 0?e*4:t;var n=v.getModuleCount()*e+t*2,r=t,i=n-t;return _(n,n,function(t,n){if(r<=t&&t<i&&r<=n&&n<i){var a=Math.floor((t-r)/e),o=Math.floor((n-r)/e);return+!v.isDark(o,a)}else return 1})},v.createImgTag=function(e,t,n){e=e||2,t=t===void 0?e*4:t;var r=v.getModuleCount()*e+t*2,i=``;return i+=`<img`,i+=` src="`,i+=v.createDataURL(e,t),i+=`"`,i+=` width="`,i+=r,i+=`"`,i+=` height="`,i+=r,i+=`"`,n&&(i+=` alt="`,i+=k(n),i+=`"`),i+=`/>`,i};var k=function(e){for(var t=``,n=0;n<e.length;n+=1){var r=e.charAt(n);switch(r){case`<`:t+=`<`;break;case`>`:t+=`>`;break;case`&`:t+=`&`;break;case`"`:t+=`"`;break;default:t+=r;break}}return t},A=function(e){var t=1;e=e===void 0?t*2:e;var n=v.getModuleCount()*t+e*2,r=e,i=n-e,a,o,s,c,l,u={"██":`█`,"█ ":`▀`," █":`▄`," ":` `},d={"██":`▀`,"█ ":`▀`," █":` `," ":` `},f=``;for(a=0;a<n;a+=2){for(s=Math.floor((a-r)/t),c=Math.floor((a+1-r)/t),o=0;o<n;o+=1)l=`█`,r<=o&&o<i&&r<=a&&a<i&&v.isDark(s,Math.floor((o-r)/t))&&(l=` `),r<=o&&o<i&&r<=a+1&&a+1<i&&v.isDark(c,Math.floor((o-r)/t))?l+=` `:l+=`█`,f+=e<1&&a+1>=i?d[l]:u[l];f+=`
|
|
721
734
|
`}return n%2&&e>0?f.substring(0,f.length-n-1)+Array(n+1).join(`▀`):f.substring(0,f.length-1)};return v.createASCII=function(e,t){if(e=e||1,e<2)return A(t);--e,t=t===void 0?e*2:t;var n=v.getModuleCount()*e+t*2,r=t,i=n-t,a,o,s,c,l=Array(e+1).join(`██`),u=Array(e+1).join(` `),d=``,f=``;for(a=0;a<n;a+=1){for(s=Math.floor((a-r)/e),f=``,o=0;o<n;o+=1)c=1,r<=o&&o<i&&r<=a&&a<i&&v.isDark(s,Math.floor((o-r)/e))&&(c=0),f+=c?l:u;for(s=0;s<e;s+=1)d+=f+`
|
|
722
|
-
`}return d.substring(0,d.length-1)},v.renderTo2dContext=function(e,t){t=t||2;for(var n=v.getModuleCount(),r=0;r<n;r++)for(var i=0;i<n;i++)e.fillStyle=v.isDark(r,i)?`black`:`white`,e.fillRect(r*t,i*t,t,t)},v};e.stringToBytesFuncs={default:function(e){for(var t=[],n=0;n<e.length;n+=1){var r=e.charCodeAt(n);t.push(r&255)}return t}},e.stringToBytes=e.stringToBytesFuncs.default,e.createStringToBytes=function(e,t){var n=function(){for(var n=h(e),r=function(){var e=n.read();if(e==-1)throw`eof`;return e},i=0,a={};;){var o=n.read();if(o==-1)break;var s=r(),c=r(),l=r(),u=String.fromCharCode(o<<8|s);a[u]=c<<8|l,i+=1}if(i!=t)throw i+` != `+t;return a}(),r=63;return function(e){for(var t=[],i=0;i<e.length;i+=1){var a=e.charCodeAt(i);if(a<128)t.push(a);else{var o=n[e.charAt(i)];typeof o==`number`?(o&255)==o?t.push(o):(t.push(o>>>8),t.push(o&255)):t.push(r)}}return t}};var t={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},n={L:1,M:0,Q:3,H:2},r={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},i=function(){var e=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],n=1335,i=7973,s=21522,c={},l=function(e){for(var t=0;e!=0;)t+=1,e>>>=1;return t};return c.getBCHTypeInfo=function(e){for(var t=e<<10;l(t)-l(n)>=0;)t^=n<<l(t)-l(n);return(e<<10|t)^s},c.getBCHTypeNumber=function(e){for(var t=e<<12;l(t)-l(i)>=0;)t^=i<<l(t)-l(i);return e<<12|t},c.getPatternPosition=function(t){return e[t-1]},c.getMaskFunction=function(e){switch(e){case r.PATTERN000:return function(e,t){return(e+t)%2==0};case r.PATTERN001:return function(e,t){return e%2==0};case r.PATTERN010:return function(e,t){return t%3==0};case r.PATTERN011:return function(e,t){return(e+t)%3==0};case r.PATTERN100:return function(e,t){return(Math.floor(e/2)+Math.floor(t/3))%2==0};case r.PATTERN101:return function(e,t){return e*t%2+e*t%3==0};case r.PATTERN110:return function(e,t){return(e*t%2+e*t%3)%2==0};case r.PATTERN111:return function(e,t){return(e*t%3+(e+t)%2)%2==0};default:throw`bad maskPattern:`+e}},c.getErrorCorrectPolynomial=function(e){for(var t=o([1],0),n=0;n<e;n+=1)t=t.multiply(o([1,a.gexp(n)],0));return t},c.getLengthInBits=function(e,n){if(1<=n&&n<10)switch(e){case t.MODE_NUMBER:return 10;case t.MODE_ALPHA_NUM:return 9;case t.MODE_8BIT_BYTE:return 8;case t.MODE_KANJI:return 8;default:throw`mode:`+e}else if(n<27)switch(e){case t.MODE_NUMBER:return 12;case t.MODE_ALPHA_NUM:return 11;case t.MODE_8BIT_BYTE:return 16;case t.MODE_KANJI:return 10;default:throw`mode:`+e}else if(n<41)switch(e){case t.MODE_NUMBER:return 14;case t.MODE_ALPHA_NUM:return 13;case t.MODE_8BIT_BYTE:return 16;case t.MODE_KANJI:return 12;default:throw`mode:`+e}else throw`type:`+n},c.getLostPoint=function(e){for(var t=e.getModuleCount(),n=0,r=0;r<t;r+=1)for(var i=0;i<t;i+=1){for(var a=0,o=e.isDark(r,i),s=-1;s<=1;s+=1)if(!(r+s<0||t<=r+s))for(var c=-1;c<=1;c+=1)i+c<0||t<=i+c||s==0&&c==0||o==e.isDark(r+s,i+c)&&(a+=1);a>5&&(n+=3+a-5)}for(var r=0;r<t-1;r+=1)for(var i=0;i<t-1;i+=1){var l=0;e.isDark(r,i)&&(l+=1),e.isDark(r+1,i)&&(l+=1),e.isDark(r,i+1)&&(l+=1),e.isDark(r+1,i+1)&&(l+=1),(l==0||l==4)&&(n+=3)}for(var r=0;r<t;r+=1)for(var i=0;i<t-6;i+=1)e.isDark(r,i)&&!e.isDark(r,i+1)&&e.isDark(r,i+2)&&e.isDark(r,i+3)&&e.isDark(r,i+4)&&!e.isDark(r,i+5)&&e.isDark(r,i+6)&&(n+=40);for(var i=0;i<t;i+=1)for(var r=0;r<t-6;r+=1)e.isDark(r,i)&&!e.isDark(r+1,i)&&e.isDark(r+2,i)&&e.isDark(r+3,i)&&e.isDark(r+4,i)&&!e.isDark(r+5,i)&&e.isDark(r+6,i)&&(n+=40);for(var u=0,i=0;i<t;i+=1)for(var r=0;r<t;r+=1)e.isDark(r,i)&&(u+=1);var d=Math.abs(100*u/t/t-50)/5;return n+=d*10,n},c}(),a=function(){for(var e=Array(256),t=Array(256),n=0;n<8;n+=1)e[n]=1<<n;for(var n=8;n<256;n+=1)e[n]=e[n-4]^e[n-5]^e[n-6]^e[n-8];for(var n=0;n<255;n+=1)t[e[n]]=n;var r={};return r.glog=function(e){if(e<1)throw`glog(`+e+`)`;return t[e]},r.gexp=function(t){for(;t<0;)t+=255;for(;t>=256;)t-=255;return e[t]},r}();function o(e,t){if(e.length===void 0)throw e.length+`/`+t;var n=function(){for(var n=0;n<e.length&&e[n]==0;)n+=1;for(var r=Array(e.length-n+t),i=0;i<e.length-n;i+=1)r[i]=e[i+n];return r}(),r={};return r.getAt=function(e){return n[e]},r.getLength=function(){return n.length},r.multiply=function(e){for(var t=Array(r.getLength()+e.getLength()-1),n=0;n<r.getLength();n+=1)for(var i=0;i<e.getLength();i+=1)t[n+i]^=a.gexp(a.glog(r.getAt(n))+a.glog(e.getAt(i)));return o(t,0)},r.mod=function(e){if(r.getLength()-e.getLength()<0)return r;for(var t=a.glog(r.getAt(0))-a.glog(e.getAt(0)),n=Array(r.getLength()),i=0;i<r.getLength();i+=1)n[i]=r.getAt(i);for(var i=0;i<e.getLength();i+=1)n[i]^=a.gexp(a.glog(e.getAt(i))+t);return o(n,0).mod(e)},r}var s=function(){var e=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],t=function(e,t){var n={};return n.totalCount=e,n.dataCount=t,n},r={},i=function(t,r){switch(r){case n.L:return e[(t-1)*4+0];case n.M:return e[(t-1)*4+1];case n.Q:return e[(t-1)*4+2];case n.H:return e[(t-1)*4+3];default:return}};return r.getRSBlocks=function(e,n){var r=i(e,n);if(r===void 0)throw`bad rs block @ typeNumber:`+e+`/errorCorrectionLevel:`+n;for(var a=r.length/3,o=[],s=0;s<a;s+=1)for(var c=r[s*3+0],l=r[s*3+1],u=r[s*3+2],d=0;d<c;d+=1)o.push(t(l,u));return o},r}(),c=function(){var e=[],t=0,n={};return n.getBuffer=function(){return e},n.getAt=function(t){return(e[Math.floor(t/8)]>>>7-t%8&1)==1},n.put=function(e,t){for(var r=0;r<t;r+=1)n.putBit((e>>>t-r-1&1)==1)},n.getLengthInBits=function(){return t},n.putBit=function(n){var r=Math.floor(t/8);e.length<=r&&e.push(0),n&&(e[r]|=128>>>t%8),t+=1},n},l=function(e){var n=t.MODE_NUMBER,r=e,i={};i.getMode=function(){return n},i.getLength=function(e){return r.length},i.write=function(e){for(var t=r,n=0;n+2<t.length;)e.put(a(t.substring(n,n+3)),10),n+=3;n<t.length&&(t.length-n==1?e.put(a(t.substring(n,n+1)),4):t.length-n==2&&e.put(a(t.substring(n,n+2)),7))};var a=function(e){for(var t=0,n=0;n<e.length;n+=1)t=t*10+o(e.charAt(n));return t},o=function(e){if(`0`<=e&&e<=`9`)return e.charCodeAt(0)-48;throw`illegal char :`+e};return i},u=function(e){var n=t.MODE_ALPHA_NUM,r=e,i={};i.getMode=function(){return n},i.getLength=function(e){return r.length},i.write=function(e){for(var t=r,n=0;n+1<t.length;)e.put(a(t.charAt(n))*45+a(t.charAt(n+1)),11),n+=2;n<t.length&&e.put(a(t.charAt(n)),6)};var a=function(e){if(`0`<=e&&e<=`9`)return e.charCodeAt(0)-48;if(`A`<=e&&e<=`Z`)return e.charCodeAt(0)-65+10;switch(e){case` `:return 36;case`$`:return 37;case`%`:return 38;case`*`:return 39;case`+`:return 40;case`-`:return 41;case`.`:return 42;case`/`:return 43;case`:`:return 44;default:throw`illegal char :`+e}};return i},d=function(n){var r=t.MODE_8BIT_BYTE,i=e.stringToBytes(n),a={};return a.getMode=function(){return r},a.getLength=function(e){return i.length},a.write=function(e){for(var t=0;t<i.length;t+=1)e.put(i[t],8)},a},f=function(n){var r=t.MODE_KANJI,i=e.stringToBytesFuncs.SJIS;if(!i)throw`sjis not supported.`;(function(e,t){var n=i(e);if(n.length!=2||(n[0]<<8|n[1])!=t)throw`sjis not supported.`})(`友`,38726);var a=i(n),o={};return o.getMode=function(){return r},o.getLength=function(e){return~~(a.length/2)},o.write=function(e){for(var t=a,n=0;n+1<t.length;){var r=(255&t[n])<<8|255&t[n+1];if(33088<=r&&r<=40956)r-=33088;else if(57408<=r&&r<=60351)r-=49472;else throw`illegal char at `+(n+1)+`/`+r;r=(r>>>8&255)*192+(r&255),e.put(r,13),n+=2}if(n<t.length)throw`illegal char at `+(n+1)},o},p=function(){var e=[],t={};return t.writeByte=function(t){e.push(t&255)},t.writeShort=function(e){t.writeByte(e),t.writeByte(e>>>8)},t.writeBytes=function(e,n,r){n=n||0,r=r||e.length;for(var i=0;i<r;i+=1)t.writeByte(e[i+n])},t.writeString=function(e){for(var n=0;n<e.length;n+=1)t.writeByte(e.charCodeAt(n))},t.toByteArray=function(){return e},t.toString=function(){var t=``;t+=`[`;for(var n=0;n<e.length;n+=1)n>0&&(t+=`,`),t+=e[n];return t+=`]`,t},t},m=function(){var e=0,t=0,n=0,r=``,i={},a=function(e){r+=String.fromCharCode(o(e&63))},o=function(e){if(!(e<0)){if(e<26)return 65+e;if(e<52)return 97+(e-26);if(e<62)return 48+(e-52);if(e==62)return 43;if(e==63)return 47}throw`n:`+e};return i.writeByte=function(r){for(e=e<<8|r&255,t+=8,n+=1;t>=6;)a(e>>>t-6),t-=6},i.flush=function(){if(t>0&&(a(e<<6-t),e=0,t=0),n%3!=0)for(var i=3-n%3,o=0;o<i;o+=1)r+=`=`},i.toString=function(){return r},i},h=function(e){var t=e,n=0,r=0,i=0,a={};a.read=function(){for(;i<8;){if(n>=t.length){if(i==0)return-1;throw`unexpected end of file./`+i}var e=t.charAt(n);if(n+=1,e==`=`)return i=0,-1;e.match(/^\s$/)||(r=r<<6|o(e.charCodeAt(0)),i+=6)}var a=r>>>i-8&255;return i-=8,a};var o=function(e){if(65<=e&&e<=90)return e-65;if(97<=e&&e<=122)return e-97+26;if(48<=e&&e<=57)return e-48+52;if(e==43)return 62;if(e==47)return 63;throw`c:`+e};return a},g=function(e,t){var n=e,r=t,i=Array(e*t),a={};a.setPixel=function(e,t,r){i[t*n+e]=r},a.write=function(e){e.writeString(`GIF87a`),e.writeShort(n),e.writeShort(r),e.writeByte(128),e.writeByte(0),e.writeByte(0),e.writeByte(0),e.writeByte(0),e.writeByte(0),e.writeByte(255),e.writeByte(255),e.writeByte(255),e.writeString(`,`),e.writeShort(0),e.writeShort(0),e.writeShort(n),e.writeShort(r),e.writeByte(0);var t=2,i=s(t);e.writeByte(t);for(var a=0;i.length-a>255;)e.writeByte(255),e.writeBytes(i,a,255),a+=255;e.writeByte(i.length-a),e.writeBytes(i,a,i.length-a),e.writeByte(0),e.writeString(`;`)};var o=function(e){var t=e,n=0,r=0,i={};return i.write=function(e,i){if(e>>>i)throw`length over`;for(;n+i>=8;)t.writeByte(255&(e<<n|r)),i-=8-n,e>>>=8-n,r=0,n=0;r=e<<n|r,n+=i},i.flush=function(){n>0&&t.writeByte(r)},i},s=function(e){for(var t=1<<e,n=(1<<e)+1,r=e+1,a=c(),s=0;s<t;s+=1)a.add(String.fromCharCode(s));a.add(String.fromCharCode(t)),a.add(String.fromCharCode(n));var l=p(),u=o(l);u.write(t,r);var d=0,f=String.fromCharCode(i[d]);for(d+=1;d<i.length;){var m=String.fromCharCode(i[d]);d+=1,a.contains(f+m)?f+=m:(u.write(a.indexOf(f),r),a.size()<4095&&(a.size()==1<<r&&(r+=1),a.add(f+m)),f=m)}return u.write(a.indexOf(f),r),u.write(n,r),u.flush(),l.toByteArray()},c=function(){var e={},t=0,n={};return n.add=function(r){if(n.contains(r))throw`dup key:`+r;e[r]=t,t+=1},n.size=function(){return t},n.indexOf=function(t){return e[t]},n.contains=function(t){return e[t]!==void 0},n};return a},_=function(e,t,n){for(var r=g(e,t),i=0;i<t;i+=1)for(var a=0;a<e;a+=1)r.setPixel(a,i,n(a,i));var o=p();r.write(o);for(var s=m(),c=o.toByteArray(),l=0;l<c.length;l+=1)s.writeByte(c[l]);return s.flush(),`data:image/gif;base64,`+s};return e}();(function(){n.stringToBytesFuncs[`UTF-8`]=function(e){function t(e){for(var t=[],n=0;n<e.length;n++){var r=e.charCodeAt(n);r<128?t.push(r):r<2048?t.push(192|r>>6,128|r&63):r<55296||r>=57344?t.push(224|r>>12,128|r>>6&63,128|r&63):(n++,r=65536+((r&1023)<<10|e.charCodeAt(n)&1023),t.push(240|r>>18,128|r>>12&63,128|r>>6&63,128|r&63))}return t}return t(e)}})(),(function(n){typeof define==`function`&&define.amd?define([],n):typeof e==`object`&&(t.exports=n())})(function(){return n})}))(),1);function he(e){let t=(0,me.default)(0,`M`);return t.addData(e),t.make(),t.createSvgTag({cellSize:6,margin:4,scalable:!0})}let ge={front_capture:{title:`Front of your document`,body:`Place the front of your ID flat and fully inside the frame. We’ll capture it automatically.`},back_capture:{title:`Back of your document`,body:`Now turn your ID over and show the back, fully inside the frame.`},selfie_capture:{title:`Take a selfie`,body:`Look straight at the camera in good light and hold still — we’ll capture it automatically.`},active_liveness:{title:`Quick liveness check`,body:`Follow the on-screen prompts (such as turn your head, blink or smile). This confirms you’re really here.`}};function _e(e,t){let n=e.logo_url;if(!n||!t||!/^https?:\/\//i.test(t))return e;try{let r=new URL(t),i=new URL(n,r);return i.origin===r.origin?e:{...e,logo_url:`${r.origin}${i.pathname}${i.search}${i.hash}`}}catch{return e}}var ve=class{constructor(e){this.config=e,p(this,`client`,void 0),p(this,`view`,void 0),p(this,`win`,void 0),p(this,`nav`,void 0),p(this,`postToParent`,void 0),p(this,`scheduler`,void 0),p(this,`transientMs`,void 0),p(this,`pollMs`,void 0),p(this,`maxPolls`,void 0),p(this,`maxHandoffPolls`,void 0),p(this,`handoffConfig`,{enabled:!1,allow_desktop:!0,url:``}),p(this,`handoffReady`,!1),p(this,`handoffActive`,!1),p(this,`sessionId`,``),p(this,`realtimeConfig`,null),p(this,`rtClient`,null),p(this,`rtResolved`,!1),p(this,`lastStatus`,null),p(this,`listeners`,new Map),p(this,`stopWatch`,void 0),p(this,`step`,`welcome`),p(this,`documentType`,null),p(this,`country`,null),p(this,`selfie`,null),p(this,`livenessMode`,`passive`),p(this,`captureModel`,`passive`),p(this,`livenessChallenges`,[]),p(this,`addressData`,null),p(this,`addressCoords`,null),p(this,`workflow`,null),p(this,`result`,null),p(this,`terminalOnLoad`,!1),p(this,`instructionAcked`,!1),p(this,`pendingError`,null),p(this,`settled`,!1);let t=e.doc??globalThis.document,n=e.win??globalThis.window;if(!t||!n)throw Error(`The Arkyc widget must run in a browser environment.`);this.win=n,this.nav=e.nav??globalThis.navigator,this.client=new _({token:e.token,baseUrl:e.baseUrl,fetch:e.fetch});let r=new T(e.branding);this.view=new fe(t,r,this.handlers(),e.nav??globalThis.navigator,e.faceAnalyzer,e.faceTuning,e.documentAnalyzer,e.documentTuning),this.postToParent=e.postToParent??(!!n.parent&&n.parent!==n),this.scheduler=e.scheduler??((e,t)=>setTimeout(e,t)),this.transientMs=e.transientMs??700,this.pollMs=e.pollMs??1500,this.maxPolls=e.maxPolls??40,this.maxHandoffPolls=e.maxHandoffPolls??600}get element(){return this.view.element}start(){this.view.renderLoading(),this.run(()=>this.bootstrap())}destroy(){this.view.destroy()}close(){this.finishClose()}on(e,t){let n=this.listeners.get(e)??new Set;return n.add(t),this.listeners.set(e,n),()=>n.delete(t)}hasListener(e){if(this.config.onEvent)return!0;let t=this.listeners.get(e);return!!t&&t.size>0}dispatch(e,t){this.emit(e,t),this.post(`arkyc:event`,{name:e,data:t})}emit(e,t){if(!this.hasListener(e))return;try{this.config.onEvent?.({name:e,data:t})}catch{}let n=this.listeners.get(e);if(n)for(let e of[...n])try{e(t)}catch{}}observe(e){if(e===this.lastStatus)return;let t=this.lastStatus;this.lastStatus=e,this.dispatch(D.sessionTransition,{session_id:this.sessionId,status:e,previous_status:t})}async resolveRealtime(){if(this.rtResolved)return this.rtClient;this.rtResolved=!0;let e=this.realtimeConfig;if(!e||e.transport===`polling`||e.transport===`off`||e.transport===`memory`)return null;let t=this.config.realtimeFactory??y,n=(this.config.baseUrl??``).replace(/\/$/,``);try{this.rtClient=await t(e,{authEndpoint:`${n}/realtime/auth`,token:this.config.token})}catch{this.rtClient=null}return this.rtClient}handlers(){return{onClose:()=>this.finishClose(),onStart:()=>void this.run(()=>this.enter(this.next())),onDocumentSelected:(e,t)=>{this.documentType=e,this.country=t||null,this.run(()=>this.enter(`front_capture`))},onImage:e=>void this.run(()=>this.onImage(e)),onActiveLiveness:(e,t,n)=>void this.run(async()=>{await this.client.submitLiveness({selfie:n,video:e,mode:`active`,challenges:t,signals:this.config.signals}),await this.enter(this.next())}),onAddress:e=>void this.run(()=>this.onAddress(e)),onShareLocation:()=>this.shareLocation(),onAcknowledge:()=>this.finishResult(),onUsePhone:()=>void this.run(()=>this.startHandoff()),onContinueHere:()=>{this.handoffActive=!1,this.stopWatch?.(),this.step=`welcome`,this.render()}}}async bootstrap(){if(this.settled)return;let e=await this.client.getSession();if(!this.settled){if(this.sessionId=e.id,this.realtimeConfig=e.realtime??null,this.workflow=e.workflow??null,this.config.branding==null&&e.branding&&this.view.applyBranding(_e(e.branding,this.config.baseUrl)),this.observe(e.status),N.isTerminal(e.status))return this.showTerminal(e.status);this.resolveLiveness(e),e.handoff&&(this.handoffConfig=e.handoff),this.config.handoff!==!1&&pe(this.nav)&&this.handoffConfig.enabled&&this.handoffTarget()?(this.handoffReady=!0,await this.startHandoff()):(this.step=`welcome`,this.render())}}handoffTarget(){return(this.config.handoffUrl??this.handoffConfig.url??``).trim()}async startHandoff(){let e=this.handoffTarget();e&&(this.handoffActive=!0,this.view.renderHandoff(he(this.buildHandoffUrl(e)),this.handoffConfig.allow_desktop),await this.pollHandoff())}buildHandoffUrl(e){let t=`${e}${e.includes(`?`)?`&`:`?`}token=${encodeURIComponent(this.config.token)}`,n=(this.config.baseUrl??``).trim();return/^https?:\/\//i.test(n)&&(t+=`&baseUrl=${encodeURIComponent(n)}`),t}async pollHandoff(){let e=await this.resolveRealtime();if(e){let t=await this.pushWatch(e,this.maxHandoffPolls,()=>this.handoffActive&&!this.settled);return t?(this.handoffActive=!1,this.showResult(t)):void 0}let t=0;for(let e=0;e<this.maxHandoffPolls&&this.handoffActive&&!this.settled;e++){if(await this.delay(this.pollMs),!this.handoffActive||this.settled)return;try{let e=await this.client.getSession();if(t=0,this.observe(e.status),N.isTerminal(e.status))return this.handoffActive=!1,this.showResult(e.status)}catch(e){if(e instanceof m&&e.status===401)return this.handoffActive=!1,this.showResult(`expired`);if(++t>=5)return}}}pushWatch(e,t,n){return new Promise(r=>{let i=!1,a=e=>{i||(i=!0,this.stopWatch=void 0,s(),r(e))},o=this.realtimeConfig.channel,s=e.subscribe(o,(e,t)=>{if(e!==D.sessionTransition)return;let n=t.status;this.observe(n),N.isTerminal(n)&&a(n)});this.stopWatch=()=>a(null),this.client.getSession().then(e=>{this.observe(e.status),N.isTerminal(e.status)&&a(e.status)}).catch(e=>{e instanceof m&&e.status===401&&a(`expired`)});let c=async e=>{if(!i){if(!n()||e>=t)return a(null);await this.delay(this.pollMs),c(e+1)}};c(0)})}resolveLiveness(e){this.livenessChallenges=e.liveness_challenges??[];let t=e.capture_model??`passive`;this.captureModel=t;let n=t===`active`||t===`both`;this.livenessMode=n&&(t===`active`||this.view.cameraSupported)?`active`:`passive`}async onImage(e){let t=this.config.signals;switch(this.step){case`front_capture`:return await this.client.submitDocumentFront({image:e,country:this.country,documentType:this.documentType,signals:t}),this.enter(this.next());case`back_capture`:return await this.client.submitDocumentBack({image:e,country:this.country,documentType:this.documentType}),this.enter(`ocr_processing`);case`selfie_capture`:return this.selfie=e,this.enter(`passive_liveness`)}}async enter(e){if(this.settled)return;this.step=e;let t=ge[e];if(t&&!this.instructionAcked){this.view.renderInstruction(e,t.title,t.body,t.cta??`Continue`,()=>{this.instructionAcked=!0,this.run(()=>this.enter(e))});return}switch(this.instructionAcked=!1,this.render(),e){case`ocr_processing`:return await this.delay(this.transientMs),this.enter(this.next());case`address_processing`:return await this.submitAddress(),this.enter(this.next());case`passive_liveness`:return await this.client.submitLiveness({selfie:this.selfie,signals:this.config.signals}),this.enter(this.next());case`face_match`:return await this.client.complete({signals:this.config.signals}),this.enter(this.next());case`processing`:return this.poll()}}async poll(){let e=await this.resolveRealtime();if(e){let t=await this.pushWatch(e,this.maxPolls,()=>!this.settled);return this.showResult(t??`requires_review`)}for(let e=0;e<this.maxPolls&&!this.settled;e++){let e=await this.client.getSession();if(this.observe(e.status),N.isTerminal(e.status))return this.showResult(e.status);await this.delay(this.pollMs)}this.showResult(`requires_review`)}showResult(e){this.result={status:e,decision:N.statusToDecision(e)},this.step=`result`,this.render()}showTerminal(e){this.result={status:e,decision:N.statusToDecision(e)},this.step=`result`,this.terminalOnLoad=!0,this.render()}render(){this.view.render({step:this.step,documentType:this.documentType,decision:this.result?.decision,status:this.result?.status,terminalNotice:this.terminalOnLoad,allowSkip:!!this.config.signals,livenessChallenges:this.livenessChallenges,requireLiveCamera:this.captureModel===`active`,strictCapture:this.livenessMode===`active`,handoffAvailable:this.handoffReady,addressMethods:ee(this.workflow)?.methods??[]})}async onAddress(e){return this.addressData=e,e.useLocation?this.addressCoords||(this.addressCoords=await this.geolocate()):this.addressCoords=null,this.enter(`address_processing`)}async shareLocation(){return this.addressCoords=await this.geolocate(),!!this.addressCoords}async submitAddress(){let e=this.addressData;e&&await this.client.submitAddress({line1:e.line1,line2:e.line2,city:e.city,region:e.region,postalCode:e.postalCode,country:e.country,poa:e.poa,latitude:this.addressCoords?.latitude??null,longitude:this.addressCoords?.longitude??null,signals:this.config.signals})}geolocate(){let e=this.nav?.geolocation;return e?new Promise(t=>{e.getCurrentPosition(e=>t({latitude:e.coords.latitude,longitude:e.coords.longitude}),()=>t(null),{enableHighAccuracy:!1,timeout:1e4,maximumAge:6e4})}):Promise.resolve(null)}next(){return N.nextStep(this.step,{documentType:this.documentType,livenessMode:this.livenessMode,workflow:this.workflow})}delay(e){return new Promise(t=>this.scheduler(t,e))}async run(e){try{await e()}catch(e){this.fail(e)}}fail(e){if(this.settled)return;let t=e instanceof Error?e:Error(String(e));this.step=`result`,this.view.render({step:`result`,documentType:this.documentType,errorMessage:t.message}),this.pendingError=t}finishResult(){this.settled||(this.settled=!0,this.teardownRealtime(),this.pendingError?(this.post(`arkyc:error`,{error:ye(this.pendingError)}),this.dispatch(`error`,{message:this.pendingError.message}),this.config.onError?.(this.pendingError)):this.result&&(this.post(`arkyc:complete`,{payload:this.result}),this.dispatch(`complete`,this.result),this.config.onComplete?.(this.result)),this.destroy(),this.config.onSettle?.())}finishClose(){this.settled||(this.settled=!0,this.teardownRealtime(),this.post(`arkyc:close`,{}),this.dispatch(`close`),this.config.onClose?.(),this.destroy(),this.config.onSettle?.())}teardownRealtime(){this.stopWatch?.(),this.rtClient?.disconnect(),this.rtClient=null}post(e,t){if(this.postToParent)try{this.win.parent?.postMessage({type:e,...t},`*`)}catch{}}};function ye(e){return{message:e.message,name:e.name}}let be=(e,t)=>{let n=typeof e==`string`?t.querySelector(e):e;if(!n)throw Error(`ArkycWidget.mount: container "${String(e)}" not found.`);return n},Q=(e,t)=>{if(!e.token)throw Error("ArkycWidget requires a client `token`.");return new ve({token:e.token,baseUrl:e.baseUrl,handoff:e.handoff,handoffUrl:e.handoffUrl,branding:e.branding,signals:e.signals,onComplete:e.onComplete,onError:e.onError,onClose:e.onClose,onEvent:e.onEvent,onSettle:t,fetch:e.fetch,doc:e.doc,win:e.win,nav:e.nav,faceAnalyzer:e.faceAnalyzer,faceTuning:e.faceTuning,documentAnalyzer:e.documentAnalyzer,documentTuning:e.documentTuning})};var $=class{constructor(e){this.controller=e}close(){return this.controller.close()}on(e,t){return this.controller.on(e,t)}},xe=class e{static open(e){let t=e.doc??globalThis.document,n=t.createElement(`div`);n.setAttribute(`data-arkyc-widget`,``),n.style.cssText=e.fullscreen?`position:fixed;inset:0;z-index:2147483647;background:rgba(0,0,0,0.55);display:flex;align-items:center;justify-content:center;padding:0;`:`position:fixed;inset:0;z-index:2147483647;background:rgba(0,0,0,0.6);display:flex;align-items:center;justify-content:center;padding:16px;`;let r=Q(e,()=>n.remove());return r.element.classList.add(`arkyc-overlay`),e.fullscreen&&r.element.classList.add(`arkyc-fullscreen`),n.appendChild(r.element),(t.body??t.documentElement).appendChild(n),r.start(),new $(r)}static mount(e){let t=e.doc??globalThis.document,n=be(e.container,t),r=Q(e,()=>r.element.remove());return n.appendChild(r.element),r.start(),new $(r)}static hosted(t={}){let n=t.win??globalThis.window,r=new URLSearchParams(n.location.search),i=t.token??r.get(`token`)??``,a=t.baseUrl??r.get(`baseUrl`)??void 0;return e.open({...t,token:i,baseUrl:a})}};return e.ArkycClient=_,e.ArkycWidget=xe,e.Camera=E,e.DEFAULT_DOCUMENT_TUNING=V,e.DEFAULT_TUNING=R,e.Flow=N,e.PACKAGE_NAME=`@arkyc/widget`,e.Theme=T,e.VERSION=`0.1.0`,e.WidgetApiError=m,e.WidgetHandler=$,e.analyzeDocumentGray=U,e.createDefaultDocumentAnalyzer=G,e.createDefaultFaceAnalyzer=L,e.createWidgetRealtimeClient=y,e.documentGuidance=W,e.isDocumentReady=ae,e.isSelfieReady=B,e.makeChallengeDetector=z,e})({});
|
|
735
|
+
`}return d.substring(0,d.length-1)},v.renderTo2dContext=function(e,t){t=t||2;for(var n=v.getModuleCount(),r=0;r<n;r++)for(var i=0;i<n;i++)e.fillStyle=v.isDark(r,i)?`black`:`white`,e.fillRect(r*t,i*t,t,t)},v};e.stringToBytesFuncs={default:function(e){for(var t=[],n=0;n<e.length;n+=1){var r=e.charCodeAt(n);t.push(r&255)}return t}},e.stringToBytes=e.stringToBytesFuncs.default,e.createStringToBytes=function(e,t){var n=function(){for(var n=h(e),r=function(){var e=n.read();if(e==-1)throw`eof`;return e},i=0,a={};;){var o=n.read();if(o==-1)break;var s=r(),c=r(),l=r(),u=String.fromCharCode(o<<8|s);a[u]=c<<8|l,i+=1}if(i!=t)throw i+` != `+t;return a}(),r=63;return function(e){for(var t=[],i=0;i<e.length;i+=1){var a=e.charCodeAt(i);if(a<128)t.push(a);else{var o=n[e.charAt(i)];typeof o==`number`?(o&255)==o?t.push(o):(t.push(o>>>8),t.push(o&255)):t.push(r)}}return t}};var t={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},n={L:1,M:0,Q:3,H:2},r={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},i=function(){var e=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],n=1335,i=7973,s=21522,c={},l=function(e){for(var t=0;e!=0;)t+=1,e>>>=1;return t};return c.getBCHTypeInfo=function(e){for(var t=e<<10;l(t)-l(n)>=0;)t^=n<<l(t)-l(n);return(e<<10|t)^s},c.getBCHTypeNumber=function(e){for(var t=e<<12;l(t)-l(i)>=0;)t^=i<<l(t)-l(i);return e<<12|t},c.getPatternPosition=function(t){return e[t-1]},c.getMaskFunction=function(e){switch(e){case r.PATTERN000:return function(e,t){return(e+t)%2==0};case r.PATTERN001:return function(e,t){return e%2==0};case r.PATTERN010:return function(e,t){return t%3==0};case r.PATTERN011:return function(e,t){return(e+t)%3==0};case r.PATTERN100:return function(e,t){return(Math.floor(e/2)+Math.floor(t/3))%2==0};case r.PATTERN101:return function(e,t){return e*t%2+e*t%3==0};case r.PATTERN110:return function(e,t){return(e*t%2+e*t%3)%2==0};case r.PATTERN111:return function(e,t){return(e*t%3+(e+t)%2)%2==0};default:throw`bad maskPattern:`+e}},c.getErrorCorrectPolynomial=function(e){for(var t=o([1],0),n=0;n<e;n+=1)t=t.multiply(o([1,a.gexp(n)],0));return t},c.getLengthInBits=function(e,n){if(1<=n&&n<10)switch(e){case t.MODE_NUMBER:return 10;case t.MODE_ALPHA_NUM:return 9;case t.MODE_8BIT_BYTE:return 8;case t.MODE_KANJI:return 8;default:throw`mode:`+e}else if(n<27)switch(e){case t.MODE_NUMBER:return 12;case t.MODE_ALPHA_NUM:return 11;case t.MODE_8BIT_BYTE:return 16;case t.MODE_KANJI:return 10;default:throw`mode:`+e}else if(n<41)switch(e){case t.MODE_NUMBER:return 14;case t.MODE_ALPHA_NUM:return 13;case t.MODE_8BIT_BYTE:return 16;case t.MODE_KANJI:return 12;default:throw`mode:`+e}else throw`type:`+n},c.getLostPoint=function(e){for(var t=e.getModuleCount(),n=0,r=0;r<t;r+=1)for(var i=0;i<t;i+=1){for(var a=0,o=e.isDark(r,i),s=-1;s<=1;s+=1)if(!(r+s<0||t<=r+s))for(var c=-1;c<=1;c+=1)i+c<0||t<=i+c||s==0&&c==0||o==e.isDark(r+s,i+c)&&(a+=1);a>5&&(n+=3+a-5)}for(var r=0;r<t-1;r+=1)for(var i=0;i<t-1;i+=1){var l=0;e.isDark(r,i)&&(l+=1),e.isDark(r+1,i)&&(l+=1),e.isDark(r,i+1)&&(l+=1),e.isDark(r+1,i+1)&&(l+=1),(l==0||l==4)&&(n+=3)}for(var r=0;r<t;r+=1)for(var i=0;i<t-6;i+=1)e.isDark(r,i)&&!e.isDark(r,i+1)&&e.isDark(r,i+2)&&e.isDark(r,i+3)&&e.isDark(r,i+4)&&!e.isDark(r,i+5)&&e.isDark(r,i+6)&&(n+=40);for(var i=0;i<t;i+=1)for(var r=0;r<t-6;r+=1)e.isDark(r,i)&&!e.isDark(r+1,i)&&e.isDark(r+2,i)&&e.isDark(r+3,i)&&e.isDark(r+4,i)&&!e.isDark(r+5,i)&&e.isDark(r+6,i)&&(n+=40);for(var u=0,i=0;i<t;i+=1)for(var r=0;r<t;r+=1)e.isDark(r,i)&&(u+=1);var d=Math.abs(100*u/t/t-50)/5;return n+=d*10,n},c}(),a=function(){for(var e=Array(256),t=Array(256),n=0;n<8;n+=1)e[n]=1<<n;for(var n=8;n<256;n+=1)e[n]=e[n-4]^e[n-5]^e[n-6]^e[n-8];for(var n=0;n<255;n+=1)t[e[n]]=n;var r={};return r.glog=function(e){if(e<1)throw`glog(`+e+`)`;return t[e]},r.gexp=function(t){for(;t<0;)t+=255;for(;t>=256;)t-=255;return e[t]},r}();function o(e,t){if(e.length===void 0)throw e.length+`/`+t;var n=function(){for(var n=0;n<e.length&&e[n]==0;)n+=1;for(var r=Array(e.length-n+t),i=0;i<e.length-n;i+=1)r[i]=e[i+n];return r}(),r={};return r.getAt=function(e){return n[e]},r.getLength=function(){return n.length},r.multiply=function(e){for(var t=Array(r.getLength()+e.getLength()-1),n=0;n<r.getLength();n+=1)for(var i=0;i<e.getLength();i+=1)t[n+i]^=a.gexp(a.glog(r.getAt(n))+a.glog(e.getAt(i)));return o(t,0)},r.mod=function(e){if(r.getLength()-e.getLength()<0)return r;for(var t=a.glog(r.getAt(0))-a.glog(e.getAt(0)),n=Array(r.getLength()),i=0;i<r.getLength();i+=1)n[i]=r.getAt(i);for(var i=0;i<e.getLength();i+=1)n[i]^=a.gexp(a.glog(e.getAt(i))+t);return o(n,0).mod(e)},r}var s=function(){var e=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],t=function(e,t){var n={};return n.totalCount=e,n.dataCount=t,n},r={},i=function(t,r){switch(r){case n.L:return e[(t-1)*4+0];case n.M:return e[(t-1)*4+1];case n.Q:return e[(t-1)*4+2];case n.H:return e[(t-1)*4+3];default:return}};return r.getRSBlocks=function(e,n){var r=i(e,n);if(r===void 0)throw`bad rs block @ typeNumber:`+e+`/errorCorrectionLevel:`+n;for(var a=r.length/3,o=[],s=0;s<a;s+=1)for(var c=r[s*3+0],l=r[s*3+1],u=r[s*3+2],d=0;d<c;d+=1)o.push(t(l,u));return o},r}(),c=function(){var e=[],t=0,n={};return n.getBuffer=function(){return e},n.getAt=function(t){return(e[Math.floor(t/8)]>>>7-t%8&1)==1},n.put=function(e,t){for(var r=0;r<t;r+=1)n.putBit((e>>>t-r-1&1)==1)},n.getLengthInBits=function(){return t},n.putBit=function(n){var r=Math.floor(t/8);e.length<=r&&e.push(0),n&&(e[r]|=128>>>t%8),t+=1},n},l=function(e){var n=t.MODE_NUMBER,r=e,i={};i.getMode=function(){return n},i.getLength=function(e){return r.length},i.write=function(e){for(var t=r,n=0;n+2<t.length;)e.put(a(t.substring(n,n+3)),10),n+=3;n<t.length&&(t.length-n==1?e.put(a(t.substring(n,n+1)),4):t.length-n==2&&e.put(a(t.substring(n,n+2)),7))};var a=function(e){for(var t=0,n=0;n<e.length;n+=1)t=t*10+o(e.charAt(n));return t},o=function(e){if(`0`<=e&&e<=`9`)return e.charCodeAt(0)-48;throw`illegal char :`+e};return i},u=function(e){var n=t.MODE_ALPHA_NUM,r=e,i={};i.getMode=function(){return n},i.getLength=function(e){return r.length},i.write=function(e){for(var t=r,n=0;n+1<t.length;)e.put(a(t.charAt(n))*45+a(t.charAt(n+1)),11),n+=2;n<t.length&&e.put(a(t.charAt(n)),6)};var a=function(e){if(`0`<=e&&e<=`9`)return e.charCodeAt(0)-48;if(`A`<=e&&e<=`Z`)return e.charCodeAt(0)-65+10;switch(e){case` `:return 36;case`$`:return 37;case`%`:return 38;case`*`:return 39;case`+`:return 40;case`-`:return 41;case`.`:return 42;case`/`:return 43;case`:`:return 44;default:throw`illegal char :`+e}};return i},d=function(n){var r=t.MODE_8BIT_BYTE,i=e.stringToBytes(n),a={};return a.getMode=function(){return r},a.getLength=function(e){return i.length},a.write=function(e){for(var t=0;t<i.length;t+=1)e.put(i[t],8)},a},f=function(n){var r=t.MODE_KANJI,i=e.stringToBytesFuncs.SJIS;if(!i)throw`sjis not supported.`;(function(e,t){var n=i(e);if(n.length!=2||(n[0]<<8|n[1])!=t)throw`sjis not supported.`})(`友`,38726);var a=i(n),o={};return o.getMode=function(){return r},o.getLength=function(e){return~~(a.length/2)},o.write=function(e){for(var t=a,n=0;n+1<t.length;){var r=(255&t[n])<<8|255&t[n+1];if(33088<=r&&r<=40956)r-=33088;else if(57408<=r&&r<=60351)r-=49472;else throw`illegal char at `+(n+1)+`/`+r;r=(r>>>8&255)*192+(r&255),e.put(r,13),n+=2}if(n<t.length)throw`illegal char at `+(n+1)},o},p=function(){var e=[],t={};return t.writeByte=function(t){e.push(t&255)},t.writeShort=function(e){t.writeByte(e),t.writeByte(e>>>8)},t.writeBytes=function(e,n,r){n=n||0,r=r||e.length;for(var i=0;i<r;i+=1)t.writeByte(e[i+n])},t.writeString=function(e){for(var n=0;n<e.length;n+=1)t.writeByte(e.charCodeAt(n))},t.toByteArray=function(){return e},t.toString=function(){var t=``;t+=`[`;for(var n=0;n<e.length;n+=1)n>0&&(t+=`,`),t+=e[n];return t+=`]`,t},t},m=function(){var e=0,t=0,n=0,r=``,i={},a=function(e){r+=String.fromCharCode(o(e&63))},o=function(e){if(!(e<0)){if(e<26)return 65+e;if(e<52)return 97+(e-26);if(e<62)return 48+(e-52);if(e==62)return 43;if(e==63)return 47}throw`n:`+e};return i.writeByte=function(r){for(e=e<<8|r&255,t+=8,n+=1;t>=6;)a(e>>>t-6),t-=6},i.flush=function(){if(t>0&&(a(e<<6-t),e=0,t=0),n%3!=0)for(var i=3-n%3,o=0;o<i;o+=1)r+=`=`},i.toString=function(){return r},i},h=function(e){var t=e,n=0,r=0,i=0,a={};a.read=function(){for(;i<8;){if(n>=t.length){if(i==0)return-1;throw`unexpected end of file./`+i}var e=t.charAt(n);if(n+=1,e==`=`)return i=0,-1;e.match(/^\s$/)||(r=r<<6|o(e.charCodeAt(0)),i+=6)}var a=r>>>i-8&255;return i-=8,a};var o=function(e){if(65<=e&&e<=90)return e-65;if(97<=e&&e<=122)return e-97+26;if(48<=e&&e<=57)return e-48+52;if(e==43)return 62;if(e==47)return 63;throw`c:`+e};return a},g=function(e,t){var n=e,r=t,i=Array(e*t),a={};a.setPixel=function(e,t,r){i[t*n+e]=r},a.write=function(e){e.writeString(`GIF87a`),e.writeShort(n),e.writeShort(r),e.writeByte(128),e.writeByte(0),e.writeByte(0),e.writeByte(0),e.writeByte(0),e.writeByte(0),e.writeByte(255),e.writeByte(255),e.writeByte(255),e.writeString(`,`),e.writeShort(0),e.writeShort(0),e.writeShort(n),e.writeShort(r),e.writeByte(0);var t=2,i=s(t);e.writeByte(t);for(var a=0;i.length-a>255;)e.writeByte(255),e.writeBytes(i,a,255),a+=255;e.writeByte(i.length-a),e.writeBytes(i,a,i.length-a),e.writeByte(0),e.writeString(`;`)};var o=function(e){var t=e,n=0,r=0,i={};return i.write=function(e,i){if(e>>>i)throw`length over`;for(;n+i>=8;)t.writeByte(255&(e<<n|r)),i-=8-n,e>>>=8-n,r=0,n=0;r=e<<n|r,n+=i},i.flush=function(){n>0&&t.writeByte(r)},i},s=function(e){for(var t=1<<e,n=(1<<e)+1,r=e+1,a=c(),s=0;s<t;s+=1)a.add(String.fromCharCode(s));a.add(String.fromCharCode(t)),a.add(String.fromCharCode(n));var l=p(),u=o(l);u.write(t,r);var d=0,f=String.fromCharCode(i[d]);for(d+=1;d<i.length;){var m=String.fromCharCode(i[d]);d+=1,a.contains(f+m)?f+=m:(u.write(a.indexOf(f),r),a.size()<4095&&(a.size()==1<<r&&(r+=1),a.add(f+m)),f=m)}return u.write(a.indexOf(f),r),u.write(n,r),u.flush(),l.toByteArray()},c=function(){var e={},t=0,n={};return n.add=function(r){if(n.contains(r))throw`dup key:`+r;e[r]=t,t+=1},n.size=function(){return t},n.indexOf=function(t){return e[t]},n.contains=function(t){return e[t]!==void 0},n};return a},_=function(e,t,n){for(var r=g(e,t),i=0;i<t;i+=1)for(var a=0;a<e;a+=1)r.setPixel(a,i,n(a,i));var o=p();r.write(o);for(var s=m(),c=o.toByteArray(),l=0;l<c.length;l+=1)s.writeByte(c[l]);return s.flush(),`data:image/gif;base64,`+s};return e}();(function(){n.stringToBytesFuncs[`UTF-8`]=function(e){function t(e){for(var t=[],n=0;n<e.length;n++){var r=e.charCodeAt(n);r<128?t.push(r):r<2048?t.push(192|r>>6,128|r&63):r<55296||r>=57344?t.push(224|r>>12,128|r>>6&63,128|r&63):(n++,r=65536+((r&1023)<<10|e.charCodeAt(n)&1023),t.push(240|r>>18,128|r>>12&63,128|r>>6&63,128|r&63))}return t}return t(e)}})(),(function(n){typeof define==`function`&&define.amd?define([],n):typeof e==`object`&&(t.exports=n())})(function(){return n})}))(),1);function he(e){let t=(0,me.default)(0,`M`);return t.addData(e),t.make(),t.createSvgTag({cellSize:6,margin:4,scalable:!0})}let ge={front_capture:{title:`Front of your document`,body:`Place the front of your ID flat and fully inside the frame. We’ll capture it automatically.`},back_capture:{title:`Back of your document`,body:`Now turn your ID over and show the back, fully inside the frame.`},selfie_capture:{title:`Take a selfie`,body:`Look straight at the camera in good light and hold still — we’ll capture it automatically.`},active_liveness:{title:`Quick liveness check`,body:`Follow the on-screen prompts (such as turn your head, blink or smile). This confirms you’re really here.`}};function _e(e,t){let n=e.logo_url;if(!n||!t||!/^https?:\/\//i.test(t))return e;try{let r=new URL(t),i=new URL(n,r);return i.origin===r.origin?e:{...e,logo_url:`${r.origin}${i.pathname}${i.search}${i.hash}`}}catch{return e}}var ve=class{constructor(e){this.config=e,p(this,`client`,void 0),p(this,`view`,void 0),p(this,`win`,void 0),p(this,`nav`,void 0),p(this,`postToParent`,void 0),p(this,`scheduler`,void 0),p(this,`transientMs`,void 0),p(this,`pollMs`,void 0),p(this,`maxPolls`,void 0),p(this,`maxHandoffPolls`,void 0),p(this,`handoffConfig`,{enabled:!1,allow_desktop:!0,url:``}),p(this,`handoffReady`,!1),p(this,`handoffActive`,!1),p(this,`sessionId`,``),p(this,`realtimeConfig`,null),p(this,`rtClient`,null),p(this,`rtResolved`,!1),p(this,`lastStatus`,null),p(this,`listeners`,new Map),p(this,`stopWatch`,void 0),p(this,`step`,`welcome`),p(this,`documentType`,null),p(this,`country`,null),p(this,`selfie`,null),p(this,`livenessMode`,`passive`),p(this,`captureModel`,`passive`),p(this,`livenessChallenges`,[]),p(this,`addressData`,null),p(this,`addressCoords`,null),p(this,`workflow`,null),p(this,`result`,null),p(this,`terminalOnLoad`,!1),p(this,`instructionAcked`,!1),p(this,`pendingError`,null),p(this,`settled`,!1);let t=e.doc??globalThis.document,n=e.win??globalThis.window;if(!t||!n)throw Error(`The Arkyc widget must run in a browser environment.`);this.win=n,this.nav=e.nav??globalThis.navigator,this.client=new _({token:e.token,baseUrl:e.baseUrl,fetch:e.fetch});let r=new T(e.branding);this.view=new fe(t,r,this.handlers(),e.nav??globalThis.navigator,e.faceAnalyzer,e.faceTuning,e.documentAnalyzer,e.documentTuning),this.postToParent=e.postToParent??(!!n.parent&&n.parent!==n),this.scheduler=e.scheduler??((e,t)=>setTimeout(e,t)),this.transientMs=e.transientMs??700,this.pollMs=e.pollMs??1500,this.maxPolls=e.maxPolls??40,this.maxHandoffPolls=e.maxHandoffPolls??600}get element(){return this.view.element}start(){this.view.renderLoading(),this.run(()=>this.bootstrap())}destroy(){this.view.destroy()}close(){this.finishClose()}on(e,t){let n=this.listeners.get(e)??new Set;return n.add(t),this.listeners.set(e,n),()=>n.delete(t)}hasListener(e){if(this.config.onEvent)return!0;let t=this.listeners.get(e);return!!t&&t.size>0}dispatch(e,t){this.emit(e,t),this.post(`arkyc:event`,{name:e,data:t})}emit(e,t){if(!this.hasListener(e))return;try{this.config.onEvent?.({name:e,data:t})}catch{}let n=this.listeners.get(e);if(n)for(let e of[...n])try{e(t)}catch{}}observe(e){if(e===this.lastStatus)return;let t=this.lastStatus;this.lastStatus=e,this.dispatch(D.sessionTransition,{session_id:this.sessionId,status:e,previous_status:t})}async resolveRealtime(){if(this.rtResolved)return this.rtClient;this.rtResolved=!0;let e=this.realtimeConfig;if(!e||e.transport===`polling`||e.transport===`off`||e.transport===`memory`)return null;let t=this.config.realtimeFactory??y,n=(this.config.baseUrl??``).replace(/\/$/,``);try{this.rtClient=await t(e,{authEndpoint:`${n}/realtime/auth`,token:this.config.token})}catch{this.rtClient=null}return this.rtClient}handlers(){return{onClose:()=>this.finishClose(),onStart:()=>void this.run(()=>this.enter(this.next())),onDocumentSelected:(e,t)=>{this.documentType=e,this.country=t||null,this.run(()=>this.enter(`front_capture`))},onImage:e=>void this.run(()=>this.onImage(e)),onActiveLiveness:(e,t,n)=>void this.run(async()=>{await this.client.submitLiveness({selfie:n,video:e,mode:`active`,challenges:t,signals:this.config.signals}),await this.enter(this.next())}),onAddress:e=>void this.run(()=>this.onAddress(e)),onShareLocation:()=>this.shareLocation(),onAcknowledge:()=>this.finishResult(),onUsePhone:()=>void this.run(()=>this.startHandoff()),onContinueHere:()=>{this.handoffActive=!1,this.stopWatch?.(),this.step=`welcome`,this.render()}}}async bootstrap(){if(this.settled)return;let e=await this.client.getSession();if(!this.settled){if(this.sessionId=e.id,this.realtimeConfig=e.realtime??null,this.workflow=e.workflow??null,this.config.branding==null&&e.branding&&this.view.applyBranding(_e(e.branding,this.config.baseUrl)),this.observe(e.status),N.isTerminal(e.status))return this.showTerminal(e.status);this.resolveLiveness(e),e.handoff&&(this.handoffConfig=e.handoff),this.config.handoff!==!1&&pe(this.nav)&&this.handoffConfig.enabled&&this.handoffTarget()?(this.handoffReady=!0,await this.startHandoff()):(this.step=`welcome`,this.render())}}handoffTarget(){return(this.config.handoffUrl??this.handoffConfig.url??``).trim()}async startHandoff(){let e=this.handoffTarget();e&&(this.handoffActive=!0,this.view.renderHandoff(he(this.buildHandoffUrl(e)),this.handoffConfig.allow_desktop),await this.pollHandoff())}buildHandoffUrl(e){let t=`${e}${e.includes(`?`)?`&`:`?`}token=${encodeURIComponent(this.config.token)}`,n=(this.config.baseUrl??``).trim();return/^https?:\/\//i.test(n)&&(t+=`&baseUrl=${encodeURIComponent(n)}`),t}async pollHandoff(){let e=await this.resolveRealtime();if(e){let t=await this.pushWatch(e,this.maxHandoffPolls,()=>this.handoffActive&&!this.settled);return t?(this.handoffActive=!1,this.showResult(t)):void 0}let t=0;for(let e=0;e<this.maxHandoffPolls&&this.handoffActive&&!this.settled;e++){if(await this.delay(this.pollMs),!this.handoffActive||this.settled)return;try{let e=await this.client.getSession();if(t=0,this.observe(e.status),N.isTerminal(e.status))return this.handoffActive=!1,this.showResult(e.status)}catch(e){if(e instanceof m&&e.status===401)return this.handoffActive=!1,this.showResult(`expired`);if(++t>=5)return}}}pushWatch(e,t,n){return new Promise(r=>{let i=!1,a=e=>{i||(i=!0,this.stopWatch=void 0,s(),r(e))},o=this.realtimeConfig.channel,s=e.subscribe(o,(e,t)=>{if(e!==D.sessionTransition)return;let n=t.status;this.observe(n),N.isTerminal(n)&&a(n)});this.stopWatch=()=>a(null),this.client.getSession().then(e=>{this.observe(e.status),N.isTerminal(e.status)&&a(e.status)}).catch(e=>{e instanceof m&&e.status===401&&a(`expired`)});let c=async e=>{if(!i){if(!n()||e>=t)return a(null);await this.delay(this.pollMs),c(e+1)}};c(0)})}resolveLiveness(e){this.livenessChallenges=e.liveness_challenges??[];let t=e.capture_model??`passive`;this.captureModel=t;let n=t===`active`||t===`both`;this.livenessMode=n&&(t===`active`||this.view.cameraSupported)?`active`:`passive`}async onImage(e){let t=this.config.signals;switch(this.step){case`front_capture`:return await this.client.submitDocumentFront({image:e,country:this.country,documentType:this.documentType,signals:t}),this.enter(this.next());case`back_capture`:return await this.client.submitDocumentBack({image:e,country:this.country,documentType:this.documentType}),this.enter(`ocr_processing`);case`selfie_capture`:return this.selfie=e,this.enter(`passive_liveness`)}}async enter(e){if(this.settled)return;this.step=e;let t=ge[e];if(t&&!this.instructionAcked){this.view.renderInstruction(e,t.title,t.body,t.cta??`Continue`,()=>{this.instructionAcked=!0,this.run(()=>this.enter(e))});return}switch(this.instructionAcked=!1,this.render(),e){case`ocr_processing`:return await this.delay(this.transientMs),this.enter(this.next());case`address_processing`:return await this.submitAddress(),this.enter(this.next());case`passive_liveness`:return await this.client.submitLiveness({selfie:this.selfie,signals:this.config.signals}),this.enter(this.next());case`face_match`:return await this.client.complete({signals:this.config.signals}),this.enter(this.next());case`processing`:return this.poll()}}async poll(){let e=await this.resolveRealtime();if(e){let t=await this.pushWatch(e,this.maxPolls,()=>!this.settled);return this.showResult(t??`requires_review`)}for(let e=0;e<this.maxPolls&&!this.settled;e++){let e=await this.client.getSession();if(this.observe(e.status),N.isTerminal(e.status))return this.showResult(e.status);await this.delay(this.pollMs)}this.showResult(`requires_review`)}showResult(e){this.result={status:e,decision:N.statusToDecision(e)},this.step=`result`,this.render()}showTerminal(e){this.result={status:e,decision:N.statusToDecision(e)},this.step=`result`,this.terminalOnLoad=!0,this.render()}render(){this.view.render({step:this.step,documentType:this.documentType,decision:this.result?.decision,status:this.result?.status,terminalNotice:this.terminalOnLoad,allowSkip:!!this.config.signals,livenessChallenges:this.livenessChallenges,requireLiveCamera:this.captureModel===`active`,strictCapture:this.livenessMode===`active`,handoffAvailable:this.handoffReady,addressMethods:ee(this.workflow)?.methods??[]})}async onAddress(e){return this.addressData=e,e.useLocation?this.addressCoords||(this.addressCoords=await this.geolocate()):this.addressCoords=null,this.enter(`address_processing`)}async shareLocation(){return this.addressCoords=await this.geolocate(),!!this.addressCoords}async submitAddress(){let e=this.addressData;e&&await this.client.submitAddress({line1:e.line1,line2:e.line2,city:e.city,region:e.region,postalCode:e.postalCode,country:e.country,poa:e.poa,latitude:this.addressCoords?.latitude??null,longitude:this.addressCoords?.longitude??null,signals:this.config.signals})}geolocate(){let e=this.nav?.geolocation;return e?new Promise(t=>{e.getCurrentPosition(e=>t({latitude:e.coords.latitude,longitude:e.coords.longitude}),()=>t(null),{enableHighAccuracy:!1,timeout:1e4,maximumAge:6e4})}):Promise.resolve(null)}next(){return N.nextStep(this.step,{documentType:this.documentType,livenessMode:this.livenessMode,workflow:this.workflow})}delay(e){return new Promise(t=>this.scheduler(t,e))}async run(e){try{await e()}catch(e){this.fail(e)}}fail(e){if(this.settled)return;let t=e instanceof Error?e:Error(String(e));this.step=`result`,this.view.render({step:`result`,documentType:this.documentType,errorMessage:t.message}),this.pendingError=t}finishResult(){this.settled||(this.settled=!0,this.teardownRealtime(),this.pendingError?(this.post(`arkyc:error`,{error:ye(this.pendingError)}),this.dispatch(`error`,{message:this.pendingError.message}),this.config.onError?.(this.pendingError)):this.result&&(this.post(`arkyc:complete`,{payload:this.result}),this.dispatch(`complete`,this.result),this.config.onComplete?.(this.result)),this.destroy(),this.config.onSettle?.())}finishClose(){this.settled||(this.settled=!0,this.teardownRealtime(),this.post(`arkyc:close`,{}),this.dispatch(`close`),this.config.onClose?.(),this.destroy(),this.config.onSettle?.())}teardownRealtime(){this.stopWatch?.(),this.rtClient?.disconnect(),this.rtClient=null}post(e,t){if(this.postToParent)try{this.win.parent?.postMessage({type:e,...t},`*`)}catch{}}};function ye(e){return{message:e.message,name:e.name}}let be=(e,t)=>{let n=typeof e==`string`?t.querySelector(e):e;if(!n)throw Error(`ArkycWidget.mount: container "${String(e)}" not found.`);return n},xe=(e,t)=>{let n=t.defaultView?.getComputedStyle?.(e),r=n?.position??e.style.position;(!r||r===`static`)&&(e.style.position=`relative`);let i=n?.zIndex??e.style.zIndex;(!i||i===`auto`)&&(e.style.zIndex=`1`),e.style.isolation||(e.style.isolation=`isolate`)},Q=(e,t)=>{if(!e.token)throw Error("ArkycWidget requires a client `token`.");return new ve({token:e.token,baseUrl:e.baseUrl,handoff:e.handoff,handoffUrl:e.handoffUrl,branding:e.branding,signals:e.signals,onComplete:e.onComplete,onError:e.onError,onClose:e.onClose,onEvent:e.onEvent,onSettle:t,fetch:e.fetch,doc:e.doc,win:e.win,nav:e.nav,faceAnalyzer:e.faceAnalyzer,faceTuning:e.faceTuning,documentAnalyzer:e.documentAnalyzer,documentTuning:e.documentTuning})};var $=class{constructor(e){this.controller=e}close(){return this.controller.close()}on(e,t){return this.controller.on(e,t)}},Se=class e{static open(e){let t=e.doc??globalThis.document,n=t.createElement(`div`);n.setAttribute(`data-arkyc-widget`,``),n.style.cssText=e.fullscreen?`position:fixed;inset:0;z-index:2147483647;background:rgba(0,0,0,0.55);display:flex;align-items:center;justify-content:center;padding:0;`:`position:fixed;inset:0;z-index:2147483647;background:rgba(0,0,0,0.6);display:flex;align-items:center;justify-content:center;padding:16px;`;let r=Q(e,()=>n.remove());return r.element.classList.add(`arkyc-overlay`),e.fullscreen&&r.element.classList.add(`arkyc-fullscreen`),n.appendChild(r.element),(t.body??t.documentElement).appendChild(n),r.start(),new $(r)}static mount(e){let t=e.doc??globalThis.document,n=be(e.container,t),r=Q(e,()=>r.element.remove());return xe(n,t),r.element.classList.add(`arkyc-inline`),n.appendChild(r.element),r.start(),new $(r)}static hosted(t={}){let n=t.win??globalThis.window,r=new URLSearchParams(n.location.search),i=t.token??r.get(`token`)??``,a=t.baseUrl??r.get(`baseUrl`)??void 0;return e.open({...t,token:i,baseUrl:a})}};return e.ArkycClient=_,e.ArkycWidget=Se,e.Camera=E,e.DEFAULT_DOCUMENT_TUNING=V,e.DEFAULT_TUNING=R,e.Flow=N,e.PACKAGE_NAME=`@arkyc/widget`,e.Theme=T,e.VERSION=`0.1.0`,e.WidgetApiError=m,e.WidgetHandler=$,e.analyzeDocumentGray=U,e.createDefaultDocumentAnalyzer=G,e.createDefaultFaceAnalyzer=L,e.createWidgetRealtimeClient=y,e.documentGuidance=W,e.isDocumentReady=ae,e.isSelfieReady=B,e.makeChallengeDetector=z,e})({});
|
|
723
736
|
var ArkycWidget=Arkyc.ArkycWidget;var ArkycClient=Arkyc.ArkycClient;
|
|
724
737
|
//# sourceMappingURL=arkyc-widget.iife.global.js.map
|