@exige/web-scanner-sdk 0.2.35 → 0.2.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -305,40 +305,40 @@ function k(e = typeof navigator > "u" ? "" : navigator.userAgent, t = typeof nav
305
305
  userAgent: e
306
306
  };
307
307
  }
308
- function A(e) {
308
+ function ce(e) {
309
309
  return /Android/i.test(e.userAgent) && !e.iosWebKit;
310
310
  }
311
- function ce(e = k()) {
312
- return e.engine === "webkit" && !A(e);
311
+ function le(e = k()) {
312
+ return e.engine === "webkit" && !ce(e);
313
313
  }
314
- function le(e = "auto", t = k()) {
315
- return e === "system-camera" || e !== "live" && A(t);
314
+ function ue(e = "auto", t = k()) {
315
+ return e === "system-camera" || e !== "live" && ce(t);
316
316
  }
317
- function ue(e, t) {
317
+ function de(e, t) {
318
318
  return t && !e.iosWebKit;
319
319
  }
320
- function de(e, t) {
320
+ function fe(e, t) {
321
321
  if (!e || !Number.isFinite(e)) return;
322
322
  let n = t?.max;
323
323
  if (!n || !Number.isFinite(n)) return Math.round(e);
324
324
  let r = t?.min && Number.isFinite(t.min) ? t.min : 1, i = t?.step && t.step > 0 ? t.step : 1, a = r + Math.round((Math.min(n, Math.max(r, e)) - r) / i) * i;
325
325
  return Math.round(Math.min(n, Math.max(r, a)));
326
326
  }
327
- function fe(e) {
328
- let t = de(e?.imageWidth?.max ?? 0, e?.imageWidth), n = de(e?.imageHeight?.max ?? 0, e?.imageHeight);
327
+ function pe(e) {
328
+ let t = fe(e?.imageWidth?.max ?? 0, e?.imageWidth), n = fe(e?.imageHeight?.max ?? 0, e?.imageHeight);
329
329
  if (t && n) return t >= n ? { imageWidth: t } : { imageHeight: n };
330
330
  if (t) return { imageWidth: t };
331
331
  if (n) return { imageHeight: n };
332
332
  }
333
- function pe(e, t) {
333
+ function me(e, t) {
334
334
  return !e.width || !e.height || !t.width || !t.height ? !1 : e.width * e.height > t.width * t.height * 1.15;
335
335
  }
336
- function me(e, t) {
336
+ function he(e, t) {
337
337
  if (!e.width || !e.height || !t.width || !t.height) return !1;
338
338
  let n = e.width / e.height / (t.width / t.height);
339
339
  return n > .97 && n < 1.03;
340
340
  }
341
- var he = 10, ge = class {
341
+ var ge = 10, _e = class {
342
342
  on = !1;
343
343
  darkCount = 0;
344
344
  brightCount = 0;
@@ -361,7 +361,7 @@ var he = 10, ge = class {
361
361
  return this.on;
362
362
  }
363
363
  };
364
- function _e(e, t) {
364
+ function ve(e, t) {
365
365
  return t ? e === "alwaysOn" || e === "alwaysOff" ? {
366
366
  mode: e,
367
367
  supported: !0,
@@ -385,37 +385,37 @@ function _e(e, t) {
385
385
  automatic: e === "auto"
386
386
  };
387
387
  }
388
- function j(e) {
388
+ function ye(e) {
389
389
  let t = Math.floor(e.length / 4);
390
390
  if (!t) return 0;
391
391
  let n = 0;
392
392
  for (let r = 0; r < t * 4; r += 4) n += e[r] * .299 + e[r + 1] * .587 + e[r + 2] * .114;
393
393
  return n / t;
394
394
  }
395
- function ve(e, t = 10) {
395
+ function be(e, t = 10) {
396
396
  if (e.length < 4) return !0;
397
397
  let n = Math.floor(e.length / 4), r = 0;
398
398
  for (let i = 0; i < n * 4; i += 4) e[i] * .299 + e[i + 1] * .587 + e[i + 2] * .114 > t * 2 && (r += 1);
399
- return j(e) <= t && r / n < .01;
399
+ return ye(e) <= t && r / n < .01;
400
400
  }
401
- function ye(e, t, n) {
401
+ function xe(e, t, n) {
402
402
  if (!t || !n) return 0;
403
403
  let r = document.createElement("canvas");
404
404
  r.width = Math.min(32, t), r.height = Math.min(32, n);
405
405
  let i = r.getContext("2d", { willReadFrequently: !0 });
406
- return i ? (i.drawImage(e, 0, 0, r.width, r.height), j(i.getImageData(0, 0, r.width, r.height).data)) : 0;
406
+ return i ? (i.drawImage(e, 0, 0, r.width, r.height), ye(i.getImageData(0, 0, r.width, r.height).data)) : 0;
407
407
  }
408
- function be(e) {
409
- return ye(e, e.width, e.height);
408
+ function Se(e) {
409
+ return xe(e, e.width, e.height);
410
410
  }
411
- function xe(e, t = 120) {
411
+ function Ce(e, t = 120) {
412
412
  let n = document.createElement("canvas"), r = n.getContext("2d"), i = typeof e.requestVideoFrameCallback == "function", a = !0, o = 0, s = 0, c = 0, l = 0, u = 0, d = () => {
413
413
  a && (o = i ? e.requestVideoFrameCallback(f) : requestAnimationFrame(f));
414
414
  };
415
415
  function f() {
416
416
  if (!a) return;
417
417
  let { videoWidth: i, videoHeight: o } = e, f = performance.now();
418
- r && i && o && f - s >= t && (s = f, l = ye(e, i, o), l > 10 && ((n.width !== i || n.height !== o) && (n.width = i, n.height = o), r.drawImage(e, 0, 0, i, o), u = l, c = f)), d();
418
+ r && i && o && f - s >= t && (s = f, l = xe(e, i, o), l > 10 && ((n.width !== i || n.height !== o) && (n.width = i, n.height = o), r.drawImage(e, 0, 0, i, o), u = l, c = f)), d();
419
419
  }
420
420
  return d(), {
421
421
  stop() {
@@ -427,14 +427,14 @@ function xe(e, t = 120) {
427
427
  getMirrorAgeMs: () => c ? performance.now() - c : Infinity
428
428
  };
429
429
  }
430
- function Se(e) {
430
+ function we(e) {
431
431
  let t = document.createElement("canvas");
432
432
  return t.width = e.width, t.height = e.height, t.getContext("2d")?.drawImage(e, 0, 0), t;
433
433
  }
434
- function Ce(e) {
434
+ function Te(e) {
435
435
  return e.engine === "blink";
436
436
  }
437
- function M(e = {}, t = k()) {
437
+ function A(e = {}, t = k()) {
438
438
  let n = { ideal: e.idealWidth ?? 3840 }, r = { ideal: e.idealHeight ?? 2160 };
439
439
  e.maxWidth && (n.max = e.maxWidth), e.maxHeight && (r.max = e.maxHeight);
440
440
  let i = {
@@ -446,20 +446,20 @@ function M(e = {}, t = k()) {
446
446
  max: e.maxFrameRate ?? 30
447
447
  }
448
448
  };
449
- return Ce(t) && (i.resizeMode = { ideal: "none" }), {
449
+ return Te(t) && (i.resizeMode = { ideal: "none" }), {
450
450
  audio: !1,
451
451
  video: i
452
452
  };
453
453
  }
454
- function we(e, t, n) {
454
+ function Ee(e, t, n) {
455
455
  let r = n ? Math.min(1, n / Math.max(e, t)) : 1;
456
456
  return {
457
457
  width: Math.max(1, Math.round(e * r)),
458
458
  height: Math.max(1, Math.round(t * r))
459
459
  };
460
460
  }
461
- var Te = 4096;
462
- function Ee(e, t) {
461
+ var De = 4096;
462
+ function Oe(e, t) {
463
463
  let n = e.width, r = e.height, i = t?.width?.max, a = t?.height?.max;
464
464
  if (!n || !r || !i || !a) return;
465
465
  let o = Math.min(i / n, a / r);
@@ -468,13 +468,13 @@ function Ee(e, t) {
468
468
  height: { ideal: Math.round(r * o) }
469
469
  };
470
470
  }
471
- async function De(e) {
472
- let t = Ee(e.getSettings(), typeof e.getCapabilities == "function" ? e.getCapabilities() : void 0);
471
+ async function ke(e) {
472
+ let t = Oe(e.getSettings(), typeof e.getCapabilities == "function" ? e.getCapabilities() : void 0);
473
473
  if (t) try {
474
474
  await e.applyConstraints(t);
475
475
  } catch {}
476
476
  }
477
- async function Oe(e) {
477
+ async function Ae(e) {
478
478
  try {
479
479
  return await createImageBitmap(e, {
480
480
  imageOrientation: "from-image",
@@ -484,7 +484,7 @@ async function Oe(e) {
484
484
  return await createImageBitmap(e);
485
485
  }
486
486
  }
487
- async function ke(e) {
487
+ async function je(e) {
488
488
  try {
489
489
  await e.applyConstraints({ advanced: [{ pointsOfInterest: [{
490
490
  x: .5,
@@ -492,25 +492,25 @@ async function ke(e) {
492
492
  }] }] }), await new Promise((e) => window.setTimeout(e, 180));
493
493
  } catch {}
494
494
  }
495
- async function Ae(e) {
496
- let n = await Oe(e), r = we(n.width, n.height, Te), i = document.createElement("canvas");
495
+ async function Me(e) {
496
+ let n = await Ae(e), r = Ee(n.width, n.height, De), i = document.createElement("canvas");
497
497
  i.width = r.width, i.height = r.height;
498
498
  let a = i.getContext("2d");
499
499
  if (!a) throw n.close?.(), t();
500
500
  return a.imageSmoothingEnabled = r.width !== n.width || r.height !== n.height, a.imageSmoothingQuality = "high", a.drawImage(n, 0, 0, i.width, i.height), n.close?.(), i;
501
501
  }
502
- async function je(e) {
502
+ async function Ne(e) {
503
503
  let t = globalThis.ImageCapture;
504
504
  if (!t) return;
505
- await ke(e);
506
- let n = new t(e), r = n.getPhotoCapabilities ? await n.getPhotoCapabilities() : void 0, i = fe(r), a;
505
+ await je(e);
506
+ let n = new t(e), r = n.getPhotoCapabilities ? await n.getPhotoCapabilities() : void 0, i = pe(r), a;
507
507
  try {
508
508
  a = await n.takePhoto(i);
509
509
  } catch {
510
510
  a = await n.takePhoto();
511
511
  }
512
512
  return {
513
- frame: await Ae(a),
513
+ frame: await Me(a),
514
514
  requested: i,
515
515
  photoMax: {
516
516
  width: r?.imageWidth?.max,
@@ -518,42 +518,42 @@ async function je(e) {
518
518
  }
519
519
  };
520
520
  }
521
- function N(e, n) {
521
+ function j(e, n) {
522
522
  if (!e.videoWidth || !e.videoHeight) throw Error("The camera is not ready to capture a frame.");
523
- let r = we(e.videoWidth, e.videoHeight, n), i = document.createElement("canvas");
523
+ let r = Ee(e.videoWidth, e.videoHeight, n), i = document.createElement("canvas");
524
524
  i.width = r.width, i.height = r.height;
525
525
  let a = i.getContext("2d");
526
526
  if (!a) throw t();
527
527
  return a.drawImage(e, 0, 0, i.width, i.height), i;
528
528
  }
529
- function Me(e) {
529
+ function Pe(e) {
530
530
  let t = k();
531
- return e.idealWidth || e.idealHeight || e.maxWidth || e.maxHeight ? [M(e, t)] : [
532
- M({
531
+ return e.idealWidth || e.idealHeight || e.maxWidth || e.maxHeight ? [A(e, t)] : [
532
+ A({
533
533
  ...e,
534
534
  idealWidth: 3840,
535
535
  idealHeight: 2160
536
536
  }, t),
537
- M({
537
+ A({
538
538
  ...e,
539
539
  idealWidth: 2560,
540
540
  idealHeight: 1440
541
541
  }, t),
542
- M({
542
+ A({
543
543
  ...e,
544
544
  idealWidth: 1920,
545
545
  idealHeight: 1080
546
546
  }, t)
547
547
  ];
548
548
  }
549
- async function Ne(t, n = {}) {
549
+ async function Fe(t, n = {}) {
550
550
  await x("scan");
551
551
  let r = n.torch ?? "alwaysOff";
552
552
  if (r !== "alwaysOff" && await x("torch"), !window.isSecureContext && location.hostname !== "localhost") throw new e("secure-context", "Camera access requires HTTPS.");
553
553
  if (!navigator.mediaDevices?.getUserMedia) throw Error("Live camera access is unavailable. Use the native camera picker instead.");
554
554
  t.muted = !0, t.autoplay = !0, t.playsInline = !0, t.setAttribute("playsinline", "");
555
555
  let i, a;
556
- for (let e of Me(n)) try {
556
+ for (let e of Pe(n)) try {
557
557
  i = await navigator.mediaDevices.getUserMedia(e);
558
558
  break;
559
559
  } catch (e) {
@@ -566,8 +566,8 @@ async function Ne(t, n = {}) {
566
566
  for (let e of i.getTracks()) e.stop();
567
567
  throw Error("The camera did not provide a video track.");
568
568
  }
569
- await De(o);
570
- let s = xe(t), c = "ImageCapture" in globalThis, l = _e(r, (typeof o.getCapabilities == "function" ? o.getCapabilities() : void 0)?.torch === !0), u = !1, d = async (e) => {
569
+ await ke(o);
570
+ let s = Ce(t), c = "ImageCapture" in globalThis, l = ve(r, (typeof o.getCapabilities == "function" ? o.getCapabilities() : void 0)?.torch === !0), u = !1, d = async (e) => {
571
571
  if (!l.supported || o.readyState !== "live") return !1;
572
572
  try {
573
573
  return await o.applyConstraints({ advanced: [{ torch: e }] }), l = {
@@ -585,7 +585,7 @@ async function Ne(t, n = {}) {
585
585
  }
586
586
  };
587
587
  l.on && await d(!0);
588
- let f = r === "auto" && l.supported ? new ge() : void 0, p = f ? window.setInterval(() => {
588
+ let f = r === "auto" && l.supported ? new _e() : void 0, p = f ? window.setInterval(() => {
589
589
  if (u || !l.supported) return;
590
590
  let e = f.update(s.getLiveLuminance());
591
591
  e !== void 0 && e !== l.on && (u = !0, d(e).finally(() => {
@@ -625,17 +625,17 @@ async function Ne(t, n = {}) {
625
625
  get torchOn() {
626
626
  return l.on;
627
627
  },
628
- capture: (e) => N(t, e),
628
+ capture: (e) => j(t, e),
629
629
  async capturePhoto() {
630
630
  let e, n = 0;
631
631
  try {
632
- e = N(t), n = be(e);
632
+ e = j(t), n = Se(e);
633
633
  } catch {
634
634
  e = void 0;
635
635
  }
636
636
  let r = s.getFrame(), i, a = !1, l = !1, u, d;
637
- if (ue(k(), c)) try {
638
- let e = await je(o);
637
+ if (de(k(), c)) try {
638
+ let e = await Ne(o);
639
639
  i = e?.frame, u = e?.requested, d = e?.photoMax;
640
640
  } catch {
641
641
  a = !0, i = void 0;
@@ -643,14 +643,14 @@ async function Ne(t, n = {}) {
643
643
  let f = {
644
644
  width: t.videoWidth,
645
645
  height: t.videoHeight
646
- }, p = i ? be(i) : 0, h = !!(i && p > 10 && pe(i, f));
646
+ }, p = i ? Se(i) : 0, h = !!(i && p > 10 && me(i, f));
647
647
  if (i && p > 10 && !h && (l = !0), h && i) return console.info("[exige-scanner] capture", {
648
648
  method: "image-capture",
649
649
  frame: `${i.width}×${i.height}`,
650
650
  video: `${t.videoWidth}×${t.videoHeight}`,
651
651
  photoMax: d ? `${d.width ?? "—"}×${d.height ?? "—"}` : void 0,
652
652
  photoRequest: u,
653
- aspectMatch: me(i, f)
653
+ aspectMatch: he(i, f)
654
654
  }), {
655
655
  frame: i,
656
656
  method: "image-capture",
@@ -658,7 +658,7 @@ async function Ne(t, n = {}) {
658
658
  luminance: p,
659
659
  diagnostics: m()
660
660
  };
661
- let g = e && n > 10 ? e : void 0, _ = g ?? (r ? Se(r) : void 0);
661
+ let g = e && n > 10 ? e : void 0, _ = g ?? (r ? we(r) : void 0);
662
662
  if (!_) throw Error("The camera preview produced no visible pixels. Keep the scanner on screen, wait for the preview, and retake.");
663
663
  let v = l ? "image-capture-preview-size" : i ? "image-capture-empty" : a ? "image-capture-failed" : g ? void 0 : "video-frame-empty";
664
664
  return console.info("[exige-scanner] capture", {
@@ -690,13 +690,13 @@ async function Ne(t, n = {}) {
690
690
  }
691
691
  };
692
692
  }
693
- function Pe() {
693
+ function Ie() {
694
694
  let e = typeof navigator > "u" ? void 0 : navigator.userActivation;
695
695
  return !e || e.isActive;
696
696
  }
697
- async function Fe() {
697
+ async function Le() {
698
698
  let e = document.createElement("input");
699
- return e.type = "file", e.accept = "image/*", e.capture = "environment", e.setAttribute("capture", "environment"), Ae(await new Promise((t, n) => {
699
+ return e.type = "file", e.accept = "image/*", e.capture = "environment", e.setAttribute("capture", "environment"), Me(await new Promise((t, n) => {
700
700
  e.addEventListener("change", () => {
701
701
  let r = e.files?.[0];
702
702
  r ? t(r) : n(/* @__PURE__ */ Error("No photo was selected."));
@@ -707,20 +707,20 @@ async function Fe() {
707
707
  }
708
708
  //#endregion
709
709
  //#region src/sdk/ort-cdn.ts
710
- var Ie = "1.30.0";
711
- `${Ie}`, `${Ie}`;
712
- function Le(e) {
710
+ var Re = "1.30.0";
711
+ `${Re}`, `${Re}`;
712
+ function ze(e) {
713
713
  return !e.ok && e.status !== 206 ? !1 : !(e.headers.get("content-type") ?? "").toLowerCase().includes("text/html");
714
714
  }
715
- async function Re(e, t = fetch) {
715
+ async function Be(e, t = fetch) {
716
716
  if (!e) return !1;
717
717
  try {
718
718
  let n = await t(e, { method: "HEAD" });
719
- if (Le(n)) return !0;
719
+ if (ze(n)) return !0;
720
720
  if (n.status === 404 || n.status === 410) return !1;
721
721
  } catch {}
722
722
  try {
723
- return Le(await t(e, {
723
+ return ze(await t(e, {
724
724
  method: "GET",
725
725
  headers: { Range: "bytes=0-63" }
726
726
  }));
@@ -730,29 +730,29 @@ async function Re(e, t = fetch) {
730
730
  }
731
731
  //#endregion
732
732
  //#region src/sdk/ort-runtime.ts
733
- var ze = new URL("./assets/ort-wasm-simd-threaded.jsep.wasm", import.meta.url), Be = new URL("./assets/ort-wasm-simd-threaded.jsep.mjs", import.meta.url);
734
- function Ve() {
733
+ var Ve = new URL("./assets/ort-wasm-simd-threaded.jsep.wasm", import.meta.url), He = new URL("./assets/ort-wasm-simd-threaded.jsep.mjs", import.meta.url);
734
+ function Ue() {
735
735
  return {
736
- wasm: ze.href,
737
- mjs: Be.href
736
+ wasm: Ve.href,
737
+ mjs: He.href
738
738
  };
739
739
  }
740
- function He(e) {
741
- return typeof e == "string" ? e.trim() || Ve() : e?.wasm.trim() && e.mjs.trim() ? {
740
+ function We(e) {
741
+ return typeof e == "string" ? e.trim() || Ue() : e?.wasm.trim() && e.mjs.trim() ? {
742
742
  wasm: e.wasm.trim(),
743
743
  mjs: e.mjs.trim()
744
- } : Ve();
744
+ } : Ue();
745
745
  }
746
746
  //#endregion
747
747
  //#region src/sdk/image.ts
748
- function Ue(e, t, n) {
748
+ function Ge(e, t, n) {
749
749
  let r = n ? Math.min(1, n / Math.max(e, t)) : 1;
750
750
  return {
751
751
  width: Math.max(1, Math.round(e * r)),
752
752
  height: Math.max(1, Math.round(t * r))
753
753
  };
754
754
  }
755
- async function We(e) {
755
+ async function Ke(e) {
756
756
  let t = URL.createObjectURL(e);
757
757
  try {
758
758
  let e = new Image();
@@ -761,26 +761,26 @@ async function We(e) {
761
761
  URL.revokeObjectURL(t);
762
762
  }
763
763
  }
764
- async function P(e, n = {}) {
764
+ async function M(e, n = {}) {
765
765
  if (e instanceof HTMLCanvasElement && n.cloneCanvas === !1 && !n.maxDimension) return e;
766
766
  let r = document.createElement("canvas"), i = r.getContext("2d", { willReadFrequently: !0 });
767
767
  if (!i) throw t();
768
768
  if (e instanceof Blob) {
769
769
  if ("createImageBitmap" in window) try {
770
- let t = await createImageBitmap(e), a = Ue(t.width, t.height, n.maxDimension);
770
+ let t = await createImageBitmap(e), a = Ge(t.width, t.height, n.maxDimension);
771
771
  return r.width = a.width, r.height = a.height, i.drawImage(t, 0, 0, a.width, a.height), t.close(), r;
772
772
  } catch {}
773
- e = await We(e);
773
+ e = await Ke(e);
774
774
  }
775
775
  let a = e instanceof HTMLImageElement ? e.naturalWidth : e.width, o = e instanceof HTMLImageElement ? e.naturalHeight : e.height;
776
776
  if (!a || !o) throw Error("The image has no readable dimensions.");
777
- let s = Ue(a, o, n.maxDimension);
777
+ let s = Ge(a, o, n.maxDimension);
778
778
  return r.width = s.width, r.height = s.height, i.drawImage(e, 0, 0, s.width, s.height), r;
779
779
  }
780
- function Ge(e, t = "image/png", n = .92) {
780
+ function qe(e, t = "image/png", n = .92) {
781
781
  return new Promise((r, i) => e.toBlob((e) => e ? r(e) : i(/* @__PURE__ */ Error("Could not encode the image.")), t, n));
782
782
  }
783
- function Ke(e, t, n) {
783
+ function Je(e, t, n) {
784
784
  let r = Math.max(0, Math.min(t, e.x)), i = Math.max(0, Math.min(n, e.y));
785
785
  return {
786
786
  x: r,
@@ -791,20 +791,20 @@ function Ke(e, t, n) {
791
791
  }
792
792
  //#endregion
793
793
  //#region src/sdk/scan.ts
794
- var qe = "https://exige-scanner-sdk.vercel.app/models/docaligner-lcnet100-f4117b78.onnx", Je = 1280;
795
- function Ye(e, t, n) {
794
+ var Ye = "https://exige-scanner-sdk.vercel.app/models/docaligner-lcnet100-f4117b78.onnx", Xe = 1280;
795
+ function Ze(e, t, n) {
796
796
  if (n) return n;
797
- let r = Math.max(e, t), i = r / Math.max(1, Math.min(e, t)), a = tt() ? 560 : 900;
798
- return i >= 1.6 ? Math.min(r, Math.max(a, Je)) : a;
797
+ let r = Math.max(e, t), i = r / Math.max(1, Math.min(e, t)), a = rt() ? 560 : 900;
798
+ return i >= 1.6 ? Math.min(r, Math.max(a, Xe)) : a;
799
799
  }
800
- function Xe(e) {
800
+ function Qe(e) {
801
801
  return e?.trim() || "https://exige-scanner-sdk.vercel.app/models/docaligner-lcnet100-f4117b78.onnx";
802
802
  }
803
- var Ze = 3, F, Qe = 0, I = /* @__PURE__ */ new Map();
804
- function L(e, t) {
803
+ var $e = 3, N, et = 0, P = /* @__PURE__ */ new Map();
804
+ function F(e, t) {
805
805
  return Math.hypot(e.x - t.x, e.y - t.y);
806
806
  }
807
- function $e(e) {
807
+ function tt(e) {
808
808
  return {
809
809
  ...e,
810
810
  edges: {
@@ -827,7 +827,7 @@ function $e(e) {
827
827
  }
828
828
  };
829
829
  }
830
- function et(e, t) {
830
+ function nt(e, t) {
831
831
  let n = (e) => ({
832
832
  x: e.x / t,
833
833
  y: e.y / t
@@ -839,43 +839,43 @@ function et(e, t) {
839
839
  bottomLeft: n(e.bottomLeft)
840
840
  };
841
841
  }
842
- function tt() {
842
+ function rt() {
843
843
  return typeof navigator > "u" ? !1 : navigator.maxTouchPoints > 0 || navigator.hardwareConcurrency <= 4 || typeof matchMedia == "function" && matchMedia("(pointer: coarse)").matches;
844
844
  }
845
- function nt(t, n, r, i) {
845
+ function it(t, n, r, i) {
846
846
  return new Promise((a, o) => {
847
- F || (F = new Worker(new URL("./assets/document-worker.js", import.meta.url), { type: "module" }), F.onmessage = (t) => {
847
+ N || (N = new Worker(new URL("./assets/document-worker.js", import.meta.url), { type: "module" }), N.onmessage = (t) => {
848
848
  if (t.data.download?.url) {
849
849
  O(t.data.download.url, t.data.download);
850
850
  return;
851
851
  }
852
- let n = I.get(t.data.id);
853
- n && (I.delete(t.data.id), t.data.error ? n.reject(t.data.errorCode ? new e(t.data.errorCode, t.data.error) : Error(t.data.error)) : t.data.result ? n.resolve(t.data.result) : n.reject(/* @__PURE__ */ Error("The document worker returned no result.")));
854
- }, F.onerror = () => {
852
+ let n = P.get(t.data.id);
853
+ n && (P.delete(t.data.id), t.data.error ? n.reject(t.data.errorCode ? new e(t.data.errorCode, t.data.error) : Error(t.data.error)) : t.data.result ? n.resolve(t.data.result) : n.reject(/* @__PURE__ */ Error("The document worker returned no result.")));
854
+ }, N.onerror = () => {
855
855
  let t = new e("worker", "The document worker could not start.");
856
- for (let e of I.values()) e.reject(t);
857
- I.clear(), F?.terminate(), F = void 0;
856
+ for (let e of P.values()) e.reject(t);
857
+ P.clear(), N?.terminate(), N = void 0;
858
858
  });
859
- let s = ++Qe;
860
- I.set(s, {
859
+ let s = ++et;
860
+ P.set(s, {
861
861
  resolve: a,
862
862
  reject: o
863
863
  });
864
864
  let c = t.slice().buffer;
865
- F.postMessage({
865
+ N.postMessage({
866
866
  id: s,
867
867
  pixels: c,
868
868
  width: n,
869
869
  height: r,
870
- modelUrl: Xe(i.modelUrl),
870
+ modelUrl: Qe(i.modelUrl),
871
871
  heatmapThreshold: i.heatmapThreshold,
872
872
  cacheModel: i.cacheModel,
873
- ortWasmPaths: He(i.ortWasmPaths),
874
- preferWebGpu: i.preferWebGpu ?? ce()
873
+ ortWasmPaths: We(i.ortWasmPaths),
874
+ preferWebGpu: i.preferWebGpu ?? le()
875
875
  }, [c]);
876
876
  });
877
877
  }
878
- async function rt(n, r) {
878
+ async function at(n, r) {
879
879
  let { width: i, height: a } = n, o = r.minDimension ?? 360;
880
880
  if (Math.min(i, a) < o) return {
881
881
  status: "low-quality",
@@ -884,7 +884,7 @@ async function rt(n, r) {
884
884
  sourceWidth: i,
885
885
  sourceHeight: a
886
886
  };
887
- let s = Ye(i, a, r.maxAnalysisDimension), c = Math.min(1, s / Math.max(i, a)), l = Math.max(1, Math.round(i * c)), u = Math.max(1, Math.round(a * c)), d;
887
+ let s = Ze(i, a, r.maxAnalysisDimension), c = Math.min(1, s / Math.max(i, a)), l = Math.max(1, Math.round(i * c)), u = Math.max(1, Math.round(a * c)), d;
888
888
  if (c === 1) {
889
889
  let e = n.getContext("2d", { willReadFrequently: !0 });
890
890
  if (!e) throw t();
@@ -898,7 +898,7 @@ async function rt(n, r) {
898
898
  }
899
899
  let f;
900
900
  if (r.useWorker !== !1 && typeof Worker < "u") try {
901
- f = await nt(d, l, u, r);
901
+ f = await it(d, l, u, r);
902
902
  } catch (t) {
903
903
  if (t instanceof e && (t.code === "worker" || t.code === "model-http")) throw t;
904
904
  f = {
@@ -922,7 +922,7 @@ async function rt(n, r) {
922
922
  modelNote: y,
923
923
  inferenceMs: b
924
924
  };
925
- if (p < Ze) return {
925
+ if (p < $e) return {
926
926
  status: "low-quality",
927
927
  confidence: Math.min(.3, p / 18),
928
928
  message: "The image is too soft or dark to resolve four document edges.",
@@ -938,7 +938,7 @@ async function rt(n, r) {
938
938
  sourceHeight: a,
939
939
  ...x
940
940
  };
941
- let S = et(m.corners, c), C = $e(S), w = r.minConfidence ?? .58;
941
+ let S = nt(m.corners, c), C = tt(S), w = r.minConfidence ?? .58;
942
942
  return m.confidence < w ? {
943
943
  status: "low-confidence",
944
944
  quad: C,
@@ -959,14 +959,14 @@ async function rt(n, r) {
959
959
  ...x
960
960
  };
961
961
  }
962
- function it(e, t) {
963
- let n = Math.max(1, Math.round(Math.max(L(e.topLeft, e.topRight), L(e.bottomLeft, e.bottomRight)))), r = Math.max(1, Math.round(Math.max(L(e.topLeft, e.bottomLeft), L(e.topRight, e.bottomRight)))), i = Math.min(1, t / Math.max(n, r));
962
+ function ot(e, t) {
963
+ let n = Math.max(1, Math.round(Math.max(F(e.topLeft, e.topRight), F(e.bottomLeft, e.bottomRight)))), r = Math.max(1, Math.round(Math.max(F(e.topLeft, e.bottomLeft), F(e.topRight, e.bottomRight)))), i = Math.min(1, t / Math.max(n, r));
964
964
  return {
965
965
  width: Math.max(1, Math.round(n * i)),
966
966
  height: Math.max(1, Math.round(r * i))
967
967
  };
968
968
  }
969
- function at(e, t, n, r, i) {
969
+ function st(e, t, n, r, i) {
970
970
  let a = Math.max(0, Math.min(t - 1, r)), o = Math.max(0, Math.min(n - 1, i)), s = Math.floor(a), c = Math.floor(o), l = Math.min(t - 1, s + 1), u = Math.min(n - 1, c + 1), d = a - s, f = o - c, p = c * t, m = u * t, h = (t) => {
971
971
  let n = e[(p + s) * 4 + t] * (1 - d) + e[(p + l) * 4 + t] * d, r = e[(m + s) * 4 + t] * (1 - d) + e[(m + l) * 4 + t] * d;
972
972
  return Math.round(n * (1 - f) + r * f);
@@ -978,8 +978,8 @@ function at(e, t, n, r, i) {
978
978
  255
979
979
  ];
980
980
  }
981
- function ot(e, n, r) {
982
- let { width: i, height: a } = it(n, r), o = e.getContext("2d", { willReadFrequently: !0 });
981
+ function ct(e, n, r) {
982
+ let { width: i, height: a } = ot(n, r), o = e.getContext("2d", { willReadFrequently: !0 });
983
983
  if (!o) throw t();
984
984
  let s = o.getImageData(0, 0, e.width, e.height), c = document.createElement("canvas");
985
985
  c.width = i, c.height = a;
@@ -989,58 +989,58 @@ function ot(e, n, r) {
989
989
  for (let t = 0; t < a; t += 1) {
990
990
  let n = t / Math.max(1, a - 1);
991
991
  for (let r = 0; r < i; r += 1) {
992
- let a = r / Math.max(1, i - 1), o = S * a + C * n + 1, c = (w * a + T * n + d.x) / o, l = (E * a + D * n + d.y) / o, [f, p, m, h] = at(s.data, e.width, e.height, c, l), g = (t * i + r) * 4;
992
+ let a = r / Math.max(1, i - 1), o = S * a + C * n + 1, c = (w * a + T * n + d.x) / o, l = (E * a + D * n + d.y) / o, [f, p, m, h] = st(s.data, e.width, e.height, c, l), g = (t * i + r) * 4;
993
993
  u.data[g] = f, u.data[g + 1] = p, u.data[g + 2] = m, u.data[g + 3] = h;
994
994
  }
995
995
  }
996
996
  return l.putImageData(u, 0, 0), c;
997
997
  }
998
- async function st(e, t = {}) {
999
- return await x("scan"), rt(await P(e, { cloneCanvas: !1 }), t);
998
+ async function lt(e, t = {}) {
999
+ return await x("scan"), at(await M(e, { cloneCanvas: !1 }), t);
1000
1000
  }
1001
- async function ct(e, t, n = {}) {
1001
+ async function ut(e, t, n = {}) {
1002
1002
  await x("scan");
1003
- let r = await P(e, { cloneCanvas: !1 }), i = n.maxOutputDimension ?? 4096;
1003
+ let r = await M(e, { cloneCanvas: !1 }), i = n.maxOutputDimension ?? 4096;
1004
1004
  return {
1005
1005
  status: "success",
1006
1006
  corners: t,
1007
- quad: $e(t),
1007
+ quad: tt(t),
1008
1008
  confidence: 1,
1009
1009
  message: "Captured with the document edges shown in the finder.",
1010
1010
  sourceWidth: r.width,
1011
1011
  sourceHeight: r.height,
1012
- canvas: ot(r, t, i)
1012
+ canvas: ct(r, t, i)
1013
1013
  };
1014
1014
  }
1015
- async function R(e, t = {}) {
1015
+ async function I(e, t = {}) {
1016
1016
  await x("scan");
1017
- let n = await P(e, { cloneCanvas: !1 }), r = await rt(n, t);
1017
+ let n = await M(e, { cloneCanvas: !1 }), r = await at(n, t);
1018
1018
  if (r.status !== "success" || !r.corners) return r;
1019
1019
  let i = t.maxOutputDimension ?? 4096;
1020
1020
  return {
1021
1021
  ...r,
1022
- canvas: ot(n, r.corners, i),
1022
+ canvas: ct(n, r.corners, i),
1023
1023
  message: "Four document edges detected and perspective-corrected."
1024
1024
  };
1025
1025
  }
1026
- function lt(e) {
1026
+ function dt(e) {
1027
1027
  return e.status === "success" ? e.message : e.status === "low-quality" ? e.message.includes("shortest side") ? `${e.message} Take another photo.` : "That photo is too soft or dark to find a document. Take another photo in better light." : e.status === "low-confidence" ? "The page edges were not clear enough to crop. Take another photo with the whole page in frame." : `No document was found in that photo. Take another photo with the whole page in frame.${e.modelStatus === "failed" && e.modelError ? ` (${e.modelError})` : ""}`;
1028
1028
  }
1029
- async function ut(e, t = {}) {
1030
- let n = await R(e, t);
1029
+ async function ft(e, t = {}) {
1030
+ let n = await I(e, t);
1031
1031
  return n.status === "success" ? n : {
1032
1032
  ...n,
1033
- message: lt(n)
1033
+ message: dt(n)
1034
1034
  };
1035
1035
  }
1036
1036
  //#endregion
1037
1037
  //#region src/sdk/lighting.ts
1038
- function dt(e, t) {
1038
+ function pt(e, t) {
1039
1039
  if (!e.length) return 0;
1040
1040
  let n = [...e].sort((e, t) => e - t);
1041
1041
  return n[Math.min(n.length - 1, Math.floor(n.length * t))];
1042
1042
  }
1043
- function ft(e, t, n, r = 12) {
1043
+ function mt(e, t, n, r = 12) {
1044
1044
  if (!t || !n || e.length < t * n) return {
1045
1045
  strong: !1,
1046
1046
  strength: 0,
@@ -1063,7 +1063,7 @@ function ft(e, t, n, r = 12) {
1063
1063
  });
1064
1064
  }
1065
1065
  }
1066
- let s = dt(o.map((e) => e.mean), .8), c = o.map((e) => s - e.mean >= 24 && e.mean >= 35), l = new Uint8Array(o.length), u = [];
1066
+ let s = pt(o.map((e) => e.mean), .8), c = o.map((e) => s - e.mean >= 24 && e.mean >= 35), l = new Uint8Array(o.length), u = [];
1067
1067
  for (let e = 0; e < o.length; e += 1) {
1068
1068
  if (!c[e] || l[e]) continue;
1069
1069
  let t = [], n = [e];
@@ -1111,11 +1111,11 @@ function ft(e, t, n, r = 12) {
1111
1111
  }
1112
1112
  return d;
1113
1113
  }
1114
- function pt(e, t, n, r, i, a, o) {
1114
+ function ht(e, t, n, r, i, a, o) {
1115
1115
  let s = Math.max(0, a - o), c = Math.min(r, a + o + 1), l = Math.max(0, i - o), u = Math.min(n, i + o + 1), d = Math.max(1, (u - l) * (c - s));
1116
1116
  return (e[c * t + u] - e[s * t + u] - e[c * t + l] + e[s * t + l]) / d;
1117
1117
  }
1118
- function mt(e, t, n) {
1118
+ function gt(e, t, n) {
1119
1119
  let r = t + 1, i = new Uint32Array((t + 1) * (n + 1));
1120
1120
  for (let a = 1; a <= n; a += 1) {
1121
1121
  let n = 0;
@@ -1126,23 +1126,23 @@ function mt(e, t, n) {
1126
1126
  stride: r
1127
1127
  };
1128
1128
  }
1129
- function ht(e, t, n, r = Math.max(12, Math.round(Math.max(t, n) / 32))) {
1130
- let { integral: i, stride: a } = mt(e, t, n), o = new Uint8Array(e.length);
1129
+ function _t(e, t, n, r = Math.max(12, Math.round(Math.max(t, n) / 32))) {
1130
+ let { integral: i, stride: a } = gt(e, t, n), o = new Uint8Array(e.length);
1131
1131
  for (let s = 0; s < n; s += 1) for (let c = 0; c < t; c += 1) {
1132
- let l = pt(i, a, t, n, c, s, r);
1132
+ let l = ht(i, a, t, n, c, s, r);
1133
1133
  o[s * t + c] = Math.max(0, Math.min(255, Math.round(e[s * t + c] * 235 / Math.max(24, l))));
1134
1134
  }
1135
1135
  return o;
1136
1136
  }
1137
- function gt(e, t, n, r = Math.max(8, Math.round(Math.max(t, n) / 64)), i = .12) {
1138
- let { integral: a, stride: o } = mt(e, t, n), s = new Uint8Array(e.length), c = 1 - i;
1137
+ function vt(e, t, n, r = Math.max(8, Math.round(Math.max(t, n) / 64)), i = .12) {
1138
+ let { integral: a, stride: o } = gt(e, t, n), s = new Uint8Array(e.length), c = 1 - i;
1139
1139
  for (let i = 0; i < n; i += 1) for (let l = 0; l < t; l += 1) {
1140
- let u = pt(a, o, t, n, l, i, r);
1140
+ let u = ht(a, o, t, n, l, i, r);
1141
1141
  s[i * t + l] = e[i * t + l] < u * c ? 0 : 255;
1142
1142
  }
1143
1143
  return s;
1144
1144
  }
1145
- function _t(e, t, n) {
1145
+ function yt(e, t, n) {
1146
1146
  let r = [
1147
1147
  e.topLeft,
1148
1148
  e.topRight,
@@ -1156,8 +1156,8 @@ function _t(e, t, n) {
1156
1156
  height: s - a
1157
1157
  };
1158
1158
  }
1159
- function vt(e, t) {
1160
- let n = _t(t, e.width, e.height);
1159
+ function bt(e, t) {
1160
+ let n = yt(t, e.width, e.height);
1161
1161
  if (n.width <= 0 || n.height <= 0) return {
1162
1162
  strong: !1,
1163
1163
  strength: 0,
@@ -1176,26 +1176,26 @@ function vt(e, t) {
1176
1176
  i.drawImage(e, n.left, n.top, n.width, n.height, 0, 0, r.width, r.height);
1177
1177
  let a = i.getImageData(0, 0, r.width, r.height).data, o = new Uint8Array(r.width * r.height);
1178
1178
  for (let e = 0, t = 0; e < o.length; e += 1, t += 4) o[e] = Math.round(a[t] * .299 + a[t + 1] * .587 + a[t + 2] * .114);
1179
- return ft(o, r.width, r.height);
1179
+ return mt(o, r.width, r.height);
1180
1180
  }
1181
1181
  //#endregion
1182
1182
  //#region src/sdk/finder.ts
1183
- function yt(e, t) {
1183
+ function xt(e, t) {
1184
1184
  return t.castShadow && (e.reason === "hold-still" || e.reason === "ready") ? t.hint ?? e.hint : e.hint;
1185
1185
  }
1186
- function bt(e, t, n) {
1186
+ function St(e, t, n) {
1187
1187
  if (n <= 0) return 0;
1188
1188
  let r = n - (t - e);
1189
1189
  return r <= 0 ? 0 : Math.max(1, Math.ceil(r / 1e3));
1190
1190
  }
1191
- function xt(e) {
1191
+ function Ct(e) {
1192
1192
  return `Hold still for ${e}…`;
1193
1193
  }
1194
- async function St(e, t) {
1194
+ async function wt(e, t) {
1195
1195
  let n = await e();
1196
1196
  return t(), n;
1197
1197
  }
1198
- function Ct(e) {
1198
+ function Tt(e) {
1199
1199
  return e === "alwaysOn" || e === "only" ? {
1200
1200
  visible: !1,
1201
1201
  checked: !0,
@@ -1210,7 +1210,7 @@ function Ct(e) {
1210
1210
  mutable: !0
1211
1211
  };
1212
1212
  }
1213
- function z(e) {
1213
+ function L(e) {
1214
1214
  return [
1215
1215
  e.topLeft,
1216
1216
  e.topRight,
@@ -1218,19 +1218,19 @@ function z(e) {
1218
1218
  e.bottomLeft
1219
1219
  ];
1220
1220
  }
1221
- var wt = 3e3, Tt = 1600;
1222
- function Et(e = k()) {
1221
+ var Et = 3e3, Dt = 1600;
1222
+ function Ot(e = k()) {
1223
1223
  return e.iosWebKit ? {
1224
1224
  intervalMs: 70,
1225
1225
  maxFrameDimension: 720,
1226
1226
  maxAnalysisDimension: 720
1227
1227
  } : {
1228
1228
  intervalMs: 140,
1229
- maxFrameDimension: Tt,
1229
+ maxFrameDimension: Dt,
1230
1230
  maxAnalysisDimension: 520
1231
1231
  };
1232
1232
  }
1233
- function Dt(e, t) {
1233
+ function kt(e, t) {
1234
1234
  let n = e.status === "success" && e.modelStatus !== "failed", r = {
1235
1235
  status: e.status,
1236
1236
  confidence: Number(e.confidence.toFixed(3)),
@@ -1253,7 +1253,7 @@ function Dt(e, t) {
1253
1253
  detail: r
1254
1254
  };
1255
1255
  }
1256
- function Ot(e) {
1256
+ function At(e) {
1257
1257
  let t = 0;
1258
1258
  for (let n = 0; n < e.length; n += 1) {
1259
1259
  let r = e[n], i = e[(n + 1) % e.length];
@@ -1261,42 +1261,42 @@ function Ot(e) {
1261
1261
  }
1262
1262
  return Math.abs(t) / 2;
1263
1263
  }
1264
- function B(e, t) {
1264
+ function R(e, t) {
1265
1265
  return Math.hypot(e.x - t.x, e.y - t.y);
1266
1266
  }
1267
- var V = {
1267
+ var z = {
1268
1268
  widthFill: 0,
1269
1269
  heightFill: 0,
1270
1270
  limitingFill: 0,
1271
1271
  areaFill: 0,
1272
1272
  aspectRatio: 1
1273
1273
  };
1274
- function kt(e, t, n) {
1275
- let r = z(e), i = r.map(({ x: e }) => e), a = r.map(({ y: e }) => e), o = (Math.max(...i) - Math.min(...i)) / Math.max(1, t), s = (Math.max(...a) - Math.min(...a)) / Math.max(1, n), [c, l, u, d] = r, f = Math.max(B(c, l), B(d, u)), p = Math.max(B(c, d), B(l, u));
1274
+ function jt(e, t, n) {
1275
+ let r = L(e), i = r.map(({ x: e }) => e), a = r.map(({ y: e }) => e), o = (Math.max(...i) - Math.min(...i)) / Math.max(1, t), s = (Math.max(...a) - Math.min(...a)) / Math.max(1, n), [c, l, u, d] = r, f = Math.max(R(c, l), R(d, u)), p = Math.max(R(c, d), R(l, u));
1276
1276
  return {
1277
1277
  widthFill: o,
1278
1278
  heightFill: s,
1279
1279
  limitingFill: Math.max(o, s),
1280
- areaFill: Ot(r) / Math.max(1, t * n),
1280
+ areaFill: At(r) / Math.max(1, t * n),
1281
1281
  aspectRatio: Math.max(f, p) / Math.max(1, Math.min(f, p))
1282
1282
  };
1283
1283
  }
1284
- function At(e, t, n, r = {}) {
1284
+ function Mt(e, t, n, r = {}) {
1285
1285
  let i = t ? r.exitFillRatio ?? .64 : r.minFillRatio ?? .72, a = r.highAspectRatio ?? 2.2;
1286
1286
  if (e.aspectRatio < a) return i;
1287
1287
  let o = t ? r.highAspectExitFillRatio : r.highAspectFillRatio;
1288
1288
  return Math.min(o ?? i + .08, 1 - n * 2);
1289
1289
  }
1290
- function jt(e, t, n = {}) {
1290
+ function Nt(e, t, n = {}) {
1291
1291
  let r = n.confidenceThreshold ?? .72;
1292
1292
  if (e.status !== "success" || !e.quad || e.confidence < r || !e.sourceWidth || !e.sourceHeight) return {
1293
1293
  hint: "Place the document in the frame",
1294
1294
  reason: "place-document",
1295
1295
  fillRatio: 0,
1296
- fill: V,
1296
+ fill: z,
1297
1297
  readyForAutoCapture: !1
1298
1298
  };
1299
- let i = z(e.quad), a = kt(e.quad, e.sourceWidth, e.sourceHeight), o = a.limitingFill, s = t.previouslyReady ? n.exitEdgeMarginRatio ?? .005 : n.edgeMarginRatio ?? .015, c = e.sourceWidth * s, l = e.sourceHeight * s;
1299
+ let i = L(e.quad), a = jt(e.quad, e.sourceWidth, e.sourceHeight), o = a.limitingFill, s = t.previouslyReady ? n.exitEdgeMarginRatio ?? .005 : n.edgeMarginRatio ?? .015, c = e.sourceWidth * s, l = e.sourceHeight * s;
1300
1300
  if (i.some(({ x: t, y: n }) => t <= c || t >= e.sourceWidth - c || n <= l || n >= e.sourceHeight - l)) return {
1301
1301
  hint: "Move farther away",
1302
1302
  reason: "move-farther-away",
@@ -1304,14 +1304,14 @@ function jt(e, t, n = {}) {
1304
1304
  fill: a,
1305
1305
  readyForAutoCapture: !1
1306
1306
  };
1307
- let [u, d, f, p] = i, m = B(u, d), h = B(d, f), g = B(f, p), _ = B(p, u);
1307
+ let [u, d, f, p] = i, m = R(u, d), h = R(d, f), g = R(f, p), _ = R(p, u);
1308
1308
  return Math.min(Math.min(m, g) / Math.max(1, Math.max(m, g)), Math.min(_, h) / Math.max(1, Math.max(_, h))) < (t.previouslyReady ? n.exitMinPerspectiveRatio ?? .4 : n.minPerspectiveRatio ?? .48) ? {
1309
1309
  hint: "Hold the camera straight",
1310
1310
  reason: "straighten-camera",
1311
1311
  fillRatio: o,
1312
1312
  fill: a,
1313
1313
  readyForAutoCapture: !1
1314
- } : o < At(a, t.previouslyReady === !0, s, n) ? {
1314
+ } : o < Mt(a, t.previouslyReady === !0, s, n) ? {
1315
1315
  hint: "Move closer",
1316
1316
  reason: "move-closer",
1317
1317
  fillRatio: o,
@@ -1325,7 +1325,7 @@ function jt(e, t, n = {}) {
1325
1325
  readyForAutoCapture: t.ready
1326
1326
  };
1327
1327
  }
1328
- var Mt = class {
1328
+ var Pt = class {
1329
1329
  previous;
1330
1330
  count = 0;
1331
1331
  ready = !1;
@@ -1342,8 +1342,8 @@ var Mt = class {
1342
1342
  ready: !1,
1343
1343
  movement: Infinity
1344
1344
  };
1345
- let t = Math.hypot(e.sourceWidth, e.sourceHeight), n = this.previous ? Math.max(...z(e.quad).map((e, n) => {
1346
- let r = z(this.previous)[n];
1345
+ let t = Math.hypot(e.sourceWidth, e.sourceHeight), n = this.previous ? Math.max(...L(e.quad).map((e, n) => {
1346
+ let r = L(this.previous)[n];
1347
1347
  return Math.hypot(e.x - r.x, e.y - r.y) / Math.max(1, t);
1348
1348
  })) : Infinity, r = this.options.exitCornerTolerance ?? Math.max(this.options.cornerTolerance, .036);
1349
1349
  return this.ready && this.previous && n <= r ? this.count = Math.max(this.options.stableFrames, this.count + 1) : (this.ready = !1, this.count = this.previous && n <= this.options.cornerTolerance ? this.count + 1 : 1, this.count >= this.options.stableFrames && (this.ready = !0)), this.previous = e.quad, {
@@ -1353,14 +1353,14 @@ var Mt = class {
1353
1353
  };
1354
1354
  }
1355
1355
  };
1356
- function Nt(e, n) {
1356
+ function Ft(e, n) {
1357
1357
  let r = Math.min(1, n / Math.max(e.width, e.height)), i = document.createElement("canvas");
1358
1358
  i.width = Math.max(1, Math.round(e.width * r)), i.height = Math.max(1, Math.round(e.height * r));
1359
1359
  let a = i.getContext("2d");
1360
1360
  if (!a) throw t();
1361
1361
  return a.drawImage(e, 0, 0, i.width, i.height), i;
1362
1362
  }
1363
- function Pt() {
1363
+ function It() {
1364
1364
  let e = window.AudioContext ?? window.webkitAudioContext;
1365
1365
  if (!e) return;
1366
1366
  let t = new e(), n = Math.round(t.sampleRate * .09), r = t.createBuffer(1, n, t.sampleRate), i = r.getChannelData(0);
@@ -1371,29 +1371,29 @@ function Pt() {
1371
1371
  let a = t.createBufferSource(), o = t.createBiquadFilter(), s = t.createGain();
1372
1372
  o.type = "bandpass", o.frequency.value = 1400, s.gain.value = .42, a.buffer = r, a.connect(o).connect(s).connect(t.destination), a.start(), a.onended = () => void t.close();
1373
1373
  }
1374
- async function Ft(e) {
1374
+ async function Lt(e) {
1375
1375
  let t = document.createElement("video");
1376
1376
  return t.muted = !0, t.autoplay = !0, t.playsInline = !0, t.srcObject = e, await t.play(), t;
1377
1377
  }
1378
- async function It(t) {
1378
+ async function Rt(t) {
1379
1379
  await x("scan");
1380
- let n = Ct(t.autoCapture), r = t.holdStillMs ?? 3e3, i = new Mt({
1380
+ let n = Tt(t.autoCapture), r = t.holdStillMs ?? 3e3, i = new Pt({
1381
1381
  stableFrames: t.stableFrames ?? 4,
1382
1382
  confidenceThreshold: t.confidenceThreshold ?? .72,
1383
1383
  cornerTolerance: t.cornerTolerance ?? .024,
1384
1384
  exitCornerTolerance: t.exitCornerTolerance ?? .036
1385
- }), a = Et(), o = t.maxFrameDimension ?? a.maxFrameDimension, s = t.intervalMs ?? a.intervalMs, c = {
1385
+ }), a = Ot(), o = t.maxFrameDimension ?? a.maxFrameDimension, s = t.intervalMs ?? a.intervalMs, c = {
1386
1386
  minDimension: 220,
1387
1387
  maxAnalysisDimension: a.maxAnalysisDimension,
1388
1388
  ...t.detection
1389
- }, l = typeof MediaStream < "u" && t.source instanceof MediaStream ? await Ft(t.source) : t.source, u = !0, d = !1, f = !1, p, m = 0, h, g = "", _ = 0, v = {
1389
+ }, l = typeof MediaStream < "u" && t.source instanceof MediaStream ? await Lt(t.source) : t.source, u = !0, d = !1, f = !1, p, m = 0, h, g = "", _ = 0, v = {
1390
1390
  state: "detecting",
1391
1391
  confidence: 0,
1392
1392
  guidance: {
1393
1393
  hint: "Place the document in the frame",
1394
1394
  reason: "place-document",
1395
1395
  fillRatio: 0,
1396
- fill: V,
1396
+ fill: z,
1397
1397
  readyForAutoCapture: !1
1398
1398
  },
1399
1399
  lighting: {
@@ -1403,10 +1403,10 @@ async function It(t) {
1403
1403
  stableFrames: 0,
1404
1404
  requiredStableFrames: t.stableFrames ?? 4,
1405
1405
  autoCapture: { ...n }
1406
- }, y = () => l instanceof HTMLCanvasElement ? Nt(l, o) : N(l, o), b = (e) => {
1406
+ }, y = () => l instanceof HTMLCanvasElement ? Ft(l, o) : j(l, o), b = (e) => {
1407
1407
  v = e, t.onStatus?.(e);
1408
1408
  }, S = (e) => {
1409
- let t = Dt(e, l instanceof HTMLVideoElement ? {
1409
+ let t = kt(e, l instanceof HTMLVideoElement ? {
1410
1410
  width: l.videoWidth,
1411
1411
  height: l.videoHeight
1412
1412
  } : {
@@ -1421,11 +1421,11 @@ async function It(t) {
1421
1421
  d = !0;
1422
1422
  let n;
1423
1423
  try {
1424
- n = await St(t.captureFrame ?? y, () => {
1424
+ n = await wt(t.captureFrame ?? y, () => {
1425
1425
  b({
1426
1426
  ...v,
1427
1427
  state: "captured"
1428
- }), t.playShutterSound !== !1 && Pt(), C();
1428
+ }), t.playShutterSound !== !1 && It(), C();
1429
1429
  });
1430
1430
  } catch (e) {
1431
1431
  throw d = !1, e instanceof Error ? e : /* @__PURE__ */ Error("The camera frame could not be captured.");
@@ -1439,9 +1439,9 @@ async function It(t) {
1439
1439
  }, T = async () => {
1440
1440
  if (u && !d) {
1441
1441
  try {
1442
- let e = y(), a = await st(e, c);
1442
+ let e = y(), a = await lt(e, c);
1443
1443
  h = a, S(a);
1444
- let o = a.quad ? vt(e, a.quad) : {
1444
+ let o = a.quad ? bt(e, a.quad) : {
1445
1445
  strong: !1,
1446
1446
  strength: 0
1447
1447
  }, s = o.strong ? {
@@ -1451,7 +1451,7 @@ async function It(t) {
1451
1451
  } : {
1452
1452
  castShadow: !1,
1453
1453
  strength: o.strength
1454
- }, l = i.update(a), u = jt(a, {
1454
+ }, l = i.update(a), u = Nt(a, {
1455
1455
  ...l,
1456
1456
  previouslyReady: f
1457
1457
  }, {
@@ -1461,7 +1461,7 @@ async function It(t) {
1461
1461
  f = u.readyForAutoCapture;
1462
1462
  let d = performance.now();
1463
1463
  u.readyForAutoCapture && n.checked ? p ??= d : p = void 0;
1464
- let m = p === void 0 ? void 0 : bt(p, d, r), g = a.status !== "success" || u.reason === "place-document" ? "seeking" : u.readyForAutoCapture ? "ready" : "unstable";
1464
+ let m = p === void 0 ? void 0 : St(p, d, r), g = a.status !== "success" || u.reason === "place-document" ? "seeking" : u.readyForAutoCapture ? "ready" : "unstable";
1465
1465
  if (b({
1466
1466
  state: g,
1467
1467
  confidence: a.confidence,
@@ -1507,7 +1507,7 @@ async function It(t) {
1507
1507
  hint: "Place the document in the frame",
1508
1508
  reason: "place-document",
1509
1509
  fillRatio: 0,
1510
- fill: V,
1510
+ fill: z,
1511
1511
  readyForAutoCapture: !1
1512
1512
  },
1513
1513
  lighting: {
@@ -1538,24 +1538,24 @@ async function It(t) {
1538
1538
  }
1539
1539
  //#endregion
1540
1540
  //#region src/sdk/ocr-runtime.ts
1541
- var Lt = new URL("./assets/tesseract/worker.min.js", import.meta.url), Rt = new URL("./assets/tesseract/tesseract-core-lstm.wasm.js", import.meta.url), zt = new URL("./assets/tesseract/tesseract-core-simd-lstm.wasm.js", import.meta.url), Bt = new URL("./assets/tesseract/tesseract-core-relaxedsimd-lstm.wasm.js", import.meta.url), Vt = new URL("./assets/tesseract/eng.traineddata.gz", import.meta.url), Ht = Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 10, 15, 1, 13, 0, 65, 1, 253, 15, 65, 2, 253, 15, 253, 128, 2, 11), Ut = Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 10, 10, 1, 8, 0, 65, 0, 253, 15, 253, 98, 11);
1542
- function Wt(e) {
1541
+ var zt = new URL("./assets/tesseract/worker.min.js", import.meta.url), Bt = new URL("./assets/tesseract/tesseract-core-lstm.wasm.js", import.meta.url), Vt = new URL("./assets/tesseract/tesseract-core-simd-lstm.wasm.js", import.meta.url), Ht = new URL("./assets/tesseract/tesseract-core-relaxedsimd-lstm.wasm.js", import.meta.url), Ut = new URL("./assets/tesseract/eng.traineddata.gz", import.meta.url), Wt = Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 10, 15, 1, 13, 0, 65, 1, 253, 15, 65, 2, 253, 15, 253, 128, 2, 11), Gt = Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 10, 10, 1, 8, 0, 65, 0, 253, 15, 253, 98, 11);
1542
+ function Kt(e) {
1543
1543
  try {
1544
1544
  return typeof WebAssembly < "u" && WebAssembly.validate(e);
1545
1545
  } catch {
1546
1546
  return !1;
1547
1547
  }
1548
1548
  }
1549
- function Gt() {
1549
+ function qt() {
1550
1550
  return {
1551
- relaxedSimd: Wt(Ht),
1552
- simd: Wt(Ut)
1551
+ relaxedSimd: Kt(Wt),
1552
+ simd: Kt(Gt)
1553
1553
  };
1554
1554
  }
1555
- function Kt(e) {
1556
- return e.relaxedSimd ? Bt : e.simd ? zt : Rt;
1555
+ function Jt(e) {
1556
+ return e.relaxedSimd ? Ht : e.simd ? Vt : Bt;
1557
1557
  }
1558
- function qt(t, n) {
1558
+ function Yt(t, n) {
1559
1559
  let r = t?.trim() || "eng", i = n?.trim() || "";
1560
1560
  if (i) return {
1561
1561
  kind: "lang-path",
@@ -1568,14 +1568,14 @@ function qt(t, n) {
1568
1568
  };
1569
1569
  throw new e("language", `OCR language "${r}" is not packaged. Pass langPath, a directory URL that contains ${r}.traineddata.gz.`);
1570
1570
  }
1571
- function Jt(e = Vt) {
1571
+ function Xt(e = Ut) {
1572
1572
  let t = e.href, n = t.lastIndexOf("/");
1573
1573
  return n === -1 ? t : t.slice(0, n);
1574
1574
  }
1575
- function Yt(e) {
1576
- return e.kind === "bundled-eng" ? Jt() : e.langPath;
1575
+ function Zt(e) {
1576
+ return e.kind === "bundled-eng" ? Xt() : e.langPath;
1577
1577
  }
1578
- async function Xt(t, n, r) {
1578
+ async function Qt(t, n, r) {
1579
1579
  return new Promise((i, a) => {
1580
1580
  let o = !1, s = (t) => {
1581
1581
  o || (o = !0, a(new e("worker", `OCR worker failed to start (${t instanceof Error ? t.message : String(t)}).`)));
@@ -1598,7 +1598,7 @@ async function Xt(t, n, r) {
1598
1598
  }
1599
1599
  //#endregion
1600
1600
  //#region src/sdk/ocr.ts
1601
- function Zt(e, t = 1, n = 1, r = 0, i = 0) {
1601
+ function $t(e, t = 1, n = 1, r = 0, i = 0) {
1602
1602
  return {
1603
1603
  text: e.text,
1604
1604
  confidence: Math.max(0, Math.min(1, e.confidence / 100)),
@@ -1610,20 +1610,20 @@ function Zt(e, t = 1, n = 1, r = 0, i = 0) {
1610
1610
  }
1611
1611
  };
1612
1612
  }
1613
- function Qt(e = .5) {
1613
+ function en(e = .5) {
1614
1614
  if (!Number.isFinite(e) || e < 0 || e > 1) throw RangeError("OCR minConfidence must be between 0 and 1.");
1615
1615
  return e;
1616
1616
  }
1617
- function $t(e, t) {
1617
+ function tn(e, t) {
1618
1618
  let n = Math.max(e.bbox.x, t.bbox.x), r = Math.max(e.bbox.y, t.bbox.y), i = Math.min(e.bbox.x + e.bbox.width, t.bbox.x + t.bbox.width), a = Math.min(e.bbox.y + e.bbox.height, t.bbox.y + t.bbox.height), o = Math.max(0, i - n) * Math.max(0, a - r), s = Math.min(e.bbox.width * e.bbox.height, t.bbox.width * t.bbox.height);
1619
1619
  return s > 0 ? o / s : 0;
1620
1620
  }
1621
- function en(e) {
1621
+ function nn(e) {
1622
1622
  let t = [...e].sort((e, t) => t.confidence - e.confidence || e.bbox.y - t.bbox.y || e.bbox.x - t.bbox.x || e.text.localeCompare(t.text)), n = [];
1623
- for (let e of t) n.some((t) => $t(t, e) >= .65) || n.push(e);
1623
+ for (let e of t) n.some((t) => tn(t, e) >= .65) || n.push(e);
1624
1624
  return n;
1625
1625
  }
1626
- function tn(e, t, n, r, i) {
1626
+ function rn(e, t, n, r, i) {
1627
1627
  let a = e.text.trim();
1628
1628
  if (!a || !/[\p{L}\p{N}]/u.test(a)) return !1;
1629
1629
  let o = e.bbox.width * e.bbox.height / Math.max(1, n * r), s = e.bbox.width / Math.max(1, e.bbox.height);
@@ -1634,7 +1634,7 @@ function tn(e, t, n, r, i) {
1634
1634
  }
1635
1635
  return !0;
1636
1636
  }
1637
- function nn(e) {
1637
+ function an(e) {
1638
1638
  let t = [...e].sort((e, t) => e.bbox.y + e.bbox.height / 2 - (t.bbox.y + t.bbox.height / 2) || e.bbox.x - t.bbox.x), n = [];
1639
1639
  for (let e of t) {
1640
1640
  let t = e.bbox.y + e.bbox.height / 2, r = n.find((n) => Math.abs(n.centerY - t) <= Math.max(n.height, e.bbox.height) * .6);
@@ -1650,28 +1650,28 @@ function nn(e) {
1650
1650
  }
1651
1651
  return n.sort((e, t) => e.centerY - t.centerY).map((e) => e.words.sort((e, t) => e.bbox.x - t.bbox.x).map((e) => e.text.trim()).join(" ")).join("\n");
1652
1652
  }
1653
- function rn(e, t, n, r) {
1654
- let i = Qt(t.minConfidence), a = [], o = [], s = 1, c = 1;
1653
+ function on(e, t, n, r) {
1654
+ let i = en(t.minConfidence), a = [], o = [], s = 1, c = 1;
1655
1655
  for (let t of e) {
1656
1656
  let e = t.scaleX ?? 1, n = t.scaleY ?? 1, r = t.offsetX ?? 0, l = t.offsetY ?? 0;
1657
1657
  for (let u of t.blocks ?? []) for (let t of u.paragraphs) for (let u of t.lines) for (let t of u.words) {
1658
- let u = Zt(t, e, n, r, l);
1658
+ let u = $t(t, e, n, r, l);
1659
1659
  s = Math.max(s, u.bbox.x + u.bbox.width), c = Math.max(c, u.bbox.y + u.bbox.height), u.confidence >= i && a.push(u);
1660
1660
  for (let a of t.symbols) {
1661
- let t = Zt(a, e, n, r, l);
1661
+ let t = $t(a, e, n, r, l);
1662
1662
  t.confidence >= i && o.push(t);
1663
1663
  }
1664
1664
  }
1665
1665
  }
1666
- let l = n?.width ?? s, u = n?.height ?? c, d = en(a).filter((e) => tn(e, "word", l, u, r)), f = en(o).filter((e) => tn(e, "character", l, u, r));
1666
+ let l = n?.width ?? s, u = n?.height ?? c, d = nn(a).filter((e) => rn(e, "word", l, u, r)), f = nn(o).filter((e) => rn(e, "character", l, u, r));
1667
1667
  return {
1668
- text: nn(d),
1668
+ text: an(d),
1669
1669
  confidence: d.length ? d.reduce((e, t) => e + t.confidence, 0) / d.length : 0,
1670
1670
  words: t.includeWords ? d : [],
1671
1671
  characters: t.includeCharacters ? f : []
1672
1672
  };
1673
1673
  }
1674
- function an(e) {
1674
+ function sn(e) {
1675
1675
  let n = e.getContext("2d", { willReadFrequently: !0 });
1676
1676
  if (!n) throw t();
1677
1677
  let r = n.getImageData(0, 0, e.width, e.height), i = new Uint8Array(e.width * e.height);
@@ -1682,7 +1682,7 @@ function an(e) {
1682
1682
  luminance: i
1683
1683
  };
1684
1684
  }
1685
- function on(e) {
1685
+ function cn(e) {
1686
1686
  let t = document.createElement("canvas");
1687
1687
  t.width = 72, t.height = 72;
1688
1688
  let n = t.getContext("2d", { willReadFrequently: !0 });
@@ -1693,27 +1693,27 @@ function on(e) {
1693
1693
  areaRatio: 0
1694
1694
  };
1695
1695
  n.drawImage(e, 0, 0, t.width, t.height);
1696
- let { luminance: r } = an(t);
1697
- return ft(r, t.width, t.height);
1696
+ let { luminance: r } = sn(t);
1697
+ return mt(r, t.width, t.height);
1698
1698
  }
1699
- function sn(e, t, n, r) {
1699
+ function ln(e, t, n, r) {
1700
1700
  let i = (e.bbox.x + e.bbox.width / 2) / n, a = (e.bbox.y + e.bbox.height / 2) / r;
1701
1701
  return i >= t.x && i <= t.x + t.width && a >= t.y && a <= t.y + t.height;
1702
1702
  }
1703
- var cn = .58;
1704
- function ln(e) {
1703
+ var un = .58;
1704
+ function dn(e) {
1705
1705
  let t = e.trim();
1706
1706
  if (!t || !/[\p{L}\p{N}]/u.test(t)) return 0;
1707
1707
  if (/^\$?\d{1,5}([.,]\d{2})?$/.test(t)) return 1;
1708
1708
  let n = t.replace(/[^\p{L}]/gu, "");
1709
1709
  return n.length >= 3 && /[aeiouy]/i.test(n) ? .9 : n.length >= 4 ? .7 : t.length <= 2 ? .35 : /[^\p{L}\p{N}.,'’$/-]/u.test(t) ? .25 : .5;
1710
1710
  }
1711
- function un(e, t, n) {
1711
+ function fn(e, t, n) {
1712
1712
  let r = Math.max(0, Math.min(1, (1 - e.darkness / 80) * (1 - e.strength / 24)));
1713
1713
  if (!t.length) return r * .35;
1714
1714
  let i = 0;
1715
1715
  for (let e of t) {
1716
- let t = ln(e.text);
1716
+ let t = dn(e.text);
1717
1717
  if (n) {
1718
1718
  let r = n(e.bbox);
1719
1719
  (r < .04 || r > .62) && (t *= .4);
@@ -1722,10 +1722,10 @@ function un(e, t, n) {
1722
1722
  }
1723
1723
  return r * .7 + i / t.length * .3;
1724
1724
  }
1725
- function dn(e, t, n, r) {
1726
- return !e.strong || !e.region ? !1 : un(e, t.filter((t) => sn(t, e.region, n.width, n.height)), r) < cn;
1725
+ function pn(e, t, n, r) {
1726
+ return !e.strong || !e.region ? !1 : fn(e, t.filter((t) => ln(t, e.region, n.width, n.height)), r) < un;
1727
1727
  }
1728
- function fn(e, t, n, r) {
1728
+ function mn(e, t, n, r) {
1729
1729
  let i = Math.max(0, Math.floor(t.x * e.width)), a = Math.max(0, Math.floor(t.y * e.height)), o = Math.min(e.width, Math.ceil((t.x + t.width) * e.width)), s = Math.min(e.height, Math.ceil((t.y + t.height) * e.height)), c = document.createElement("canvas");
1730
1730
  c.width = Math.max(1, o - i), c.height = Math.max(1, s - a), c.getContext("2d")?.drawImage(e, i, a, c.width, c.height, 0, 0, c.width, c.height);
1731
1731
  let l = n / e.width, u = r / e.height;
@@ -1739,26 +1739,26 @@ function fn(e, t, n, r) {
1739
1739
  }
1740
1740
  };
1741
1741
  }
1742
- function pn(e, t) {
1742
+ function hn(e, t) {
1743
1743
  for (let n = 0, r = 0; n < t.length; n += 1, r += 4) e.data[r] = t[n], e.data[r + 1] = t[n], e.data[r + 2] = t[n], e.data[r + 3] = 255;
1744
1744
  }
1745
- function mn(e) {
1745
+ function gn(e) {
1746
1746
  let n = 2200, r = Math.max(e.width, e.height), i = r > n ? n / r : Math.min(1.5, n / Math.max(1, r)), a = document.createElement("canvas");
1747
1747
  a.width = Math.max(1, Math.round(e.width * i)), a.height = Math.max(1, Math.round(e.height * i));
1748
1748
  let o = a.getContext("2d", { willReadFrequently: !0 });
1749
1749
  if (!o) throw t();
1750
1750
  o.drawImage(e, 0, 0, a.width, a.height);
1751
- let { image: s, luminance: c } = an(a), l = ht(c, a.width, a.height), u = gt(l, a.width, a.height), d = document.createElement("canvas");
1751
+ let { image: s, luminance: c } = sn(a), l = _t(c, a.width, a.height), u = vt(l, a.width, a.height), d = document.createElement("canvas");
1752
1752
  d.width = a.width, d.height = a.height;
1753
1753
  let f = d.getContext("2d", { willReadFrequently: !0 });
1754
1754
  if (!f) throw t();
1755
1755
  let p = f.createImageData(d.width, d.height);
1756
- return pn(p, l), f.putImageData(p, 0, 0), pn(s, u), o.putImageData(s, 0, 0), {
1756
+ return hn(p, l), f.putImageData(p, 0, 0), hn(s, u), o.putImageData(s, 0, 0), {
1757
1757
  sparseCanvas: a,
1758
1758
  flattenedCanvas: d
1759
1759
  };
1760
1760
  }
1761
- function hn(e) {
1761
+ function _n(e) {
1762
1762
  let t = document.createElement("canvas");
1763
1763
  t.width = 24, t.height = 24;
1764
1764
  let n = t.getContext("2d", { willReadFrequently: !0 });
@@ -1776,19 +1776,19 @@ function hn(e) {
1776
1776
  return l / s.length;
1777
1777
  };
1778
1778
  }
1779
- async function H(e, t = {}) {
1779
+ async function B(e, t = {}) {
1780
1780
  await x("ocr");
1781
- let n = qt(t.language, t.langPath), r = n.language;
1782
- Qt(t.minConfidence);
1783
- let i = await P(e, { cloneCanvas: !1 }), { sparseCanvas: a, flattenedCanvas: o } = mn(i), s = t.shadowPass === !1 ? {
1781
+ let n = Yt(t.language, t.langPath), r = n.language;
1782
+ en(t.minConfidence);
1783
+ let i = await M(e, { cloneCanvas: !1 }), { sparseCanvas: a, flattenedCanvas: o } = gn(i), s = t.shadowPass === !1 ? {
1784
1784
  strong: !1,
1785
1785
  strength: 0,
1786
1786
  darkness: 0,
1787
1787
  areaRatio: 0
1788
- } : on(i), { createWorker: c, PSM: l } = await import("tesseract.js"), u = 0, d = s.strong ? 3 : 2, f = await Xt(c, r, {
1789
- workerPath: Lt.href,
1790
- corePath: Kt(Gt()).href,
1791
- langPath: Yt(n),
1788
+ } : cn(i), { createWorker: c, PSM: l } = await import("tesseract.js"), u = 0, d = s.strong ? 3 : 2, f = await Qt(c, r, {
1789
+ workerPath: zt.href,
1790
+ corePath: Jt(qt()).href,
1791
+ langPath: Zt(n),
1792
1792
  logger(e) {
1793
1793
  typeof e.progress == "number" && t.onProgress?.(Math.min(1, (u + e.progress) / d), e.status ?? "recognizing text");
1794
1794
  }
@@ -1813,16 +1813,16 @@ async function H(e, t = {}) {
1813
1813
  }], d = {
1814
1814
  ...t,
1815
1815
  includeWords: !0
1816
- }, p = hn(i), m = rn(c, d, {
1816
+ }, p = _n(i), m = on(c, d, {
1817
1817
  width: i.width,
1818
1818
  height: i.height
1819
- }, p), h = t.shadowPass !== !1 && dn(s, m.words, {
1819
+ }, p), h = t.shadowPass !== !1 && pn(s, m.words, {
1820
1820
  width: i.width,
1821
1821
  height: i.height
1822
1822
  }, p);
1823
1823
  if (h && s.region) {
1824
1824
  u = 2;
1825
- let { tile: e, passMapping: t } = fn(o, s.region, i.width, i.height);
1825
+ let { tile: e, passMapping: t } = mn(o, s.region, i.width, i.height);
1826
1826
  await f.setParameters({
1827
1827
  tessedit_pageseg_mode: l.SPARSE_TEXT,
1828
1828
  preserve_interword_spaces: "1"
@@ -1836,7 +1836,7 @@ async function H(e, t = {}) {
1836
1836
  ...t
1837
1837
  });
1838
1838
  }
1839
- let g = c.length === 2 ? m : rn(c, d, {
1839
+ let g = c.length === 2 ? m : on(c, d, {
1840
1840
  width: i.width,
1841
1841
  height: i.height
1842
1842
  }, p);
@@ -1865,50 +1865,55 @@ async function H(e, t = {}) {
1865
1865
  }
1866
1866
  //#endregion
1867
1867
  //#region src/sdk/zxing-runtime.ts
1868
- var gn = new URL("./assets/zxing_reader.wasm", import.meta.url), _n = "3.1.6", vn = "zxing_reader.wasm", yn = `https://exige-scanner-sdk.vercel.app/zxing/${_n}/`, bn = `https://cdn.jsdelivr.net/npm/zxing-wasm@${_n}/dist/reader/`;
1869
- function xn(e, t) {
1868
+ var vn = new URL("./assets/zxing_reader.wasm", import.meta.url), yn = "3.1.6", bn = "zxing_reader.wasm", xn = `https://exige-scanner-sdk.vercel.app/zxing/${yn}/`, Sn = `https://cdn.jsdelivr.net/npm/zxing-wasm@${yn}/dist/reader/`;
1869
+ function Cn(e, t) {
1870
1870
  return `${e.endsWith("/") ? e : `${e}/`}${t}`;
1871
1871
  }
1872
- function Sn(e = yn) {
1873
- return xn(e, vn);
1872
+ function wn(e = xn) {
1873
+ return Cn(e, bn);
1874
1874
  }
1875
- function Cn() {
1876
- return gn.href;
1875
+ function Tn() {
1876
+ return vn.href;
1877
1877
  }
1878
- var wn, Tn;
1879
- function En() {
1878
+ var En, Dn;
1879
+ function On() {
1880
1880
  return {
1881
- binary: wn,
1882
- url: Tn
1881
+ binary: En,
1882
+ url: Dn
1883
1883
  };
1884
1884
  }
1885
- async function Dn(e = fetch) {
1886
- let t = Cn();
1887
- if (await Re(t, e)) return t;
1888
- let n = Sn(yn);
1889
- return await Re(n, e) ? n : Sn(bn);
1885
+ async function kn(e = fetch) {
1886
+ let t = Tn();
1887
+ if (await Be(t, e)) return t;
1888
+ let n = wn(xn);
1889
+ return await Be(n, e) ? n : wn(Sn);
1890
1890
  }
1891
1891
  //#endregion
1892
1892
  //#region src/sdk/barcode.ts
1893
- var On = [
1893
+ var V = 1600, An = [
1894
+ 1600,
1894
1895
  1280,
1895
1896
  960,
1896
1897
  720,
1897
1898
  480
1899
+ ], jn = [
1900
+ [.2, .8],
1901
+ [.32, .72],
1902
+ [.4, .86]
1898
1903
  ];
1899
- function kn(e, t) {
1904
+ function Mn(e, t) {
1900
1905
  let n = Math.max(e, t);
1901
1906
  if (!Number.isFinite(n) || n < 1) return [];
1902
- let r = [n];
1903
- for (let e of On) e <= n - 16 && r.push(e);
1904
- return r;
1907
+ let r = Math.min(n, V), i = [r];
1908
+ for (let e of An) e <= r - 16 && i.push(e);
1909
+ return i;
1905
1910
  }
1906
- function An() {
1911
+ function Nn() {
1907
1912
  let e = globalThis.BarcodeDetector;
1908
1913
  return typeof e == "function" ? e : void 0;
1909
1914
  }
1910
- async function jn() {
1911
- let e = An();
1915
+ async function Pn() {
1916
+ let e = Nn();
1912
1917
  if (!e?.getSupportedFormats) return !1;
1913
1918
  try {
1914
1919
  return (await e.getSupportedFormats()).some((e) => e.toLowerCase() === "pdf417");
@@ -1916,37 +1921,47 @@ async function jn() {
1916
1921
  return !1;
1917
1922
  }
1918
1923
  }
1919
- function Mn(e) {
1924
+ function Fn(e) {
1920
1925
  try {
1921
1926
  return e.getContext("2d", { willReadFrequently: !0 })?.getImageData(0, 0, e.width, e.height);
1922
1927
  } catch {
1923
1928
  return;
1924
1929
  }
1925
1930
  }
1926
- async function Nn(e) {
1931
+ async function In(e) {
1927
1932
  let t = [];
1928
1933
  if (e instanceof Blob && t.push(e), e instanceof HTMLCanvasElement) {
1929
- let n = Mn(e);
1934
+ let n = Fn(e);
1930
1935
  n && t.push(n);
1931
1936
  try {
1932
- t.push(await Ge(e, "image/png"));
1937
+ t.push(await qe(e, "image/png"));
1933
1938
  } catch {}
1934
1939
  } else if (!(e instanceof Blob)) try {
1935
- let n = Mn(await P(e, { cloneCanvas: !1 }));
1940
+ let n = Fn(await M(e, { cloneCanvas: !1 }));
1936
1941
  n && t.push(n);
1937
1942
  } catch {}
1938
1943
  return t;
1939
1944
  }
1940
- async function Pn(e) {
1941
- let { prepareZXingModule: t, readBarcodes: n } = await import("zxing-wasm/reader"), r = En(), i = r.binary ? void 0 : await Dn();
1942
- await t({
1943
- overrides: r.binary ? { wasmBinary: r.binary } : { locateFile: (e, t) => e.endsWith(".wasm") ? i ?? t + e : t + e },
1944
- fireImmediately: !0
1945
- });
1946
- for (let t of await Nn(e)) {
1947
- let e = (await n(t, {
1945
+ var H;
1946
+ async function Ln() {
1947
+ return H ||= (async () => {
1948
+ let e = await import("zxing-wasm/reader"), t = On(), n = t.binary ? void 0 : await kn();
1949
+ return await e.prepareZXingModule({
1950
+ overrides: t.binary ? { wasmBinary: t.binary } : { locateFile: (e, t) => e.endsWith(".wasm") ? n ?? t + e : t + e },
1951
+ fireImmediately: !0
1952
+ }), e;
1953
+ })().catch((e) => {
1954
+ throw H = void 0, console.error("[exige-scanner] zxing-wasm failed to load", e), e;
1955
+ }), H;
1956
+ }
1957
+ async function Rn(e) {
1958
+ let { readBarcodes: t } = await Ln();
1959
+ for (let n of await In(e)) {
1960
+ let e = (await t(n, {
1948
1961
  formats: ["PDF417"],
1949
1962
  tryHarder: !0,
1963
+ tryRotate: !0,
1964
+ tryInvert: !0,
1950
1965
  tryDownscale: !0,
1951
1966
  downscaleFactor: 2,
1952
1967
  downscaleThreshold: 300,
@@ -1955,7 +1970,7 @@ async function Pn(e) {
1955
1970
  if (e) return e;
1956
1971
  }
1957
1972
  }
1958
- function Fn(e, t) {
1973
+ function U(e, t) {
1959
1974
  let n = Math.max(e.width, e.height);
1960
1975
  if (n <= t) return e;
1961
1976
  let r = t / n, i = document.createElement("canvas");
@@ -1963,26 +1978,51 @@ function Fn(e, t) {
1963
1978
  let a = i.getContext("2d", { willReadFrequently: !0 }) ?? i.getContext("2d");
1964
1979
  return a && (a.imageSmoothingEnabled = !0, "imageSmoothingQuality" in a && (a.imageSmoothingQuality = "high"), a.drawImage(e, 0, 0, i.width, i.height)), i;
1965
1980
  }
1966
- function In(e) {
1967
- return kn(e.width, e.height).map((t) => Fn(e, t));
1981
+ function zn(e, t, n) {
1982
+ let r = Math.max(0, Math.round(e.height * t)), i = Math.max(1, Math.round(e.height * n) - r), a = document.createElement("canvas");
1983
+ a.width = e.width, a.height = i;
1984
+ let o = a.getContext("2d", { willReadFrequently: !0 }) ?? a.getContext("2d");
1985
+ return o && o.drawImage(e, 0, r, e.width, i, 0, 0, e.width, i), a;
1986
+ }
1987
+ function Bn(e) {
1988
+ return Mn(e.width, e.height).map((t) => U(e, t));
1989
+ }
1990
+ function Vn(e) {
1991
+ if (e.height < e.width * 1.15 || e.height < 120) return [];
1992
+ let t = [];
1993
+ for (let [n, r] of jn) {
1994
+ let i = zn(e, n, r);
1995
+ t.push(U(i, V));
1996
+ let a = Mn(i.width, i.height).find((e) => e <= 960);
1997
+ a && t.push(U(i, a));
1998
+ }
1999
+ return t;
2000
+ }
2001
+ function Hn(e) {
2002
+ let t = /* @__PURE__ */ new Set(), n = [];
2003
+ for (let r of [...Vn(e), ...Bn(e)]) {
2004
+ let e = `${r.width}x${r.height}`;
2005
+ t.has(e) || (t.add(e), n.push(r));
2006
+ }
2007
+ return n;
1968
2008
  }
1969
- async function U(e) {
2009
+ async function W(e) {
1970
2010
  let t;
1971
2011
  try {
1972
- t = await P(e, { cloneCanvas: !1 });
2012
+ t = await M(e, { cloneCanvas: !1 });
1973
2013
  } catch {
1974
2014
  t = e instanceof HTMLCanvasElement ? e : document.createElement("canvas");
1975
2015
  }
1976
- let n = t.width && t.height ? In(t) : [];
2016
+ let n = t.width && t.height ? Hn(t) : [];
1977
2017
  for (let e of n) try {
1978
- let t = await Pn(e);
2018
+ let t = await Rn(e);
1979
2019
  if (t) return {
1980
2020
  text: t,
1981
2021
  source: "zxing-wasm"
1982
2022
  };
1983
2023
  } catch {}
1984
2024
  if (e instanceof Blob) try {
1985
- let t = await Pn(e);
2025
+ let t = await Rn(e);
1986
2026
  return t ? {
1987
2027
  text: t,
1988
2028
  source: "zxing-wasm"
@@ -1991,11 +2031,11 @@ async function U(e) {
1991
2031
  return;
1992
2032
  }
1993
2033
  }
1994
- var W = new Set(/* @__PURE__ */ "DCA.DCB.DCD.DBA.DCS.DAC.DAD.DBD.DBB.DBC.DAY.DAU.DAG.DAI.DAJ.DAK.DAQ.DCF.DCG.DDE.DDF.DDG.DAH.DAZ.DCI.DCJ.DCK.DBN.DBG.DBS.DCU.DCE.DCL.DCM.DCN.DCO.DCP.DCQ.DCR.DDA.DDB.DDC.DDD.DAW.DAX.DDH.DDI.DDJ.DDK.DDL.DCT.DAL.DAM.DAN.DAO.DAR.DAS.DAT.DAV.DBH.DBI.DBJ.DBK.DBL.DBM.DCH".split(".")), Ln = /* @__PURE__ */ "issuerJurisdiction.expirationDate.documentNumber.firstName.middleName.lastName.dateOfBirth.sex.eyeColor.height.addressStreet.addressCity.addressPostalCode.issueDate.country.addressStreet2.hairColor.nameSuffix.vehicleClass.restrictionCodes.endorsementCodes.documentDiscriminator.inventoryControlNumber.raceEthnicity.organDonor.veteran.weight".split("."), Rn = /* @__PURE__ */ new Set([
2034
+ var G = new Set(/* @__PURE__ */ "DCA.DCB.DCD.DBA.DCS.DAC.DAD.DBD.DBB.DBC.DAY.DAU.DAG.DAI.DAJ.DAK.DAQ.DCF.DCG.DDE.DDF.DDG.DAH.DAZ.DCI.DCJ.DCK.DBN.DBG.DBS.DCU.DCE.DCL.DCM.DCN.DCO.DCP.DCQ.DCR.DDA.DDB.DDC.DDD.DAW.DAX.DDH.DDI.DDJ.DDK.DDL.DCT.DAL.DAM.DAN.DAO.DAR.DAS.DAT.DAV.DBH.DBI.DBJ.DBK.DBL.DBM.DCH".split(".")), Un = /* @__PURE__ */ "issuerJurisdiction.expirationDate.documentNumber.firstName.middleName.lastName.dateOfBirth.sex.eyeColor.height.addressStreet.addressCity.addressPostalCode.issueDate.country.addressStreet2.hairColor.nameSuffix.vehicleClass.restrictionCodes.endorsementCodes.documentDiscriminator.inventoryControlNumber.raceEthnicity.organDonor.veteran.weight".split("."), Wn = /* @__PURE__ */ new Set([
1995
2035
  "expirationDate",
1996
2036
  "dateOfBirth",
1997
2037
  "issueDate"
1998
- ]), zn = {
2038
+ ]), Gn = {
1999
2039
  DAJ: "issuerJurisdiction",
2000
2040
  DBA: "expirationDate",
2001
2041
  DAQ: "documentNumber",
@@ -2027,34 +2067,34 @@ var W = new Set(/* @__PURE__ */ "DCA.DCB.DCD.DBA.DCS.DAC.DAD.DBD.DBB.DBC.DAY.DAU
2027
2067
  DAW: "weight",
2028
2068
  DAX: "weight"
2029
2069
  };
2030
- function G(e, t, n) {
2070
+ function K(e, t, n) {
2031
2071
  let r = Number(e), i = Number(t), a = Number(n);
2032
2072
  if (Number.isInteger(r) && Number.isInteger(i) && Number.isInteger(a) && !(r < 1900 || r > 2100 || i < 1 || i > 12 || a < 1 || a > 31)) return `${String(r).padStart(4, "0")}-${String(i).padStart(2, "0")}-${String(a).padStart(2, "0")}`;
2033
2073
  }
2034
- function Bn(e, t) {
2074
+ function Kn(e, t) {
2035
2075
  return t ? e >= 30 ? 1900 + e : 2e3 + e : e >= 50 ? 1900 + e : 2e3 + e;
2036
2076
  }
2037
- function K(e, t = !1) {
2077
+ function q(e, t = !1) {
2038
2078
  let n = e.trim();
2039
2079
  if (!n) return;
2040
2080
  let r = /^(\d{1,2})[/-](\d{1,2})[/-](\d{2,4})$/.exec(n);
2041
2081
  if (r) {
2042
2082
  let e = r[1], n = r[2], i = r[3];
2043
- return i.length === 2 && (i = String(Bn(Number(i), t))), G(i, e.padStart(2, "0"), n.padStart(2, "0"));
2083
+ return i.length === 2 && (i = String(Kn(Number(i), t))), K(i, e.padStart(2, "0"), n.padStart(2, "0"));
2044
2084
  }
2045
2085
  let i = /^(\d{4})-(\d{2})-(\d{2})$/.exec(n);
2046
- if (i) return G(i[1], i[2], i[3]);
2086
+ if (i) return K(i[1], i[2], i[3]);
2047
2087
  let a = n.replace(/[^\d]/g, "");
2048
2088
  if (a.length === 8) {
2049
2089
  let e = Number(a.slice(0, 4));
2050
- return e >= 1900 && e <= 2100 ? G(a.slice(0, 4), a.slice(4, 6), a.slice(6, 8)) : G(a.slice(4, 8), a.slice(0, 2), a.slice(2, 4));
2090
+ return e >= 1900 && e <= 2100 ? K(a.slice(0, 4), a.slice(4, 6), a.slice(6, 8)) : K(a.slice(4, 8), a.slice(0, 2), a.slice(2, 4));
2051
2091
  }
2052
2092
  if (a.length === 6) {
2053
- let e = Bn(Number(a.slice(4, 6)), t);
2054
- return G(String(e), a.slice(0, 2), a.slice(2, 4));
2093
+ let e = Kn(Number(a.slice(4, 6)), t);
2094
+ return K(String(e), a.slice(0, 2), a.slice(2, 4));
2055
2095
  }
2056
2096
  }
2057
- function Vn(e) {
2097
+ function qn(e) {
2058
2098
  let t = e.trim();
2059
2099
  if (!t || t === "@") return "";
2060
2100
  if (/^(ANSI|AAMVA)\b/.test(t)) {
@@ -2063,14 +2103,14 @@ function Vn(e) {
2063
2103
  }
2064
2104
  return t;
2065
2105
  }
2066
- function Hn(e) {
2067
- return (e.startsWith("DL") || e.startsWith("ID") || e.startsWith("ZV")) && e.length >= 5 && W.has(e.slice(2, 5)) ? e.slice(2) : e;
2106
+ function Jn(e) {
2107
+ return (e.startsWith("DL") || e.startsWith("ID") || e.startsWith("ZV")) && e.length >= 5 && G.has(e.slice(2, 5)) ? e.slice(2) : e;
2068
2108
  }
2069
- function Un(e, t) {
2109
+ function Yn(e, t) {
2070
2110
  let n = 0;
2071
2111
  for (; n < e.length;) {
2072
2112
  let r = e.slice(n, n + 3);
2073
- if (!W.has(r)) {
2113
+ if (!G.has(r)) {
2074
2114
  n += 1;
2075
2115
  continue;
2076
2116
  }
@@ -2078,14 +2118,14 @@ function Un(e, t) {
2078
2118
  let i = n;
2079
2119
  for (; i < e.length;) {
2080
2120
  let t = e.slice(i, i + 3);
2081
- if (W.has(t) || e[i] === "\n" || e[i] === "\r" || e[i] === "") break;
2121
+ if (G.has(t) || e[i] === "\n" || e[i] === "\r" || e[i] === "") break;
2082
2122
  i += 1;
2083
2123
  }
2084
2124
  let a = e.slice(n, i).trim();
2085
2125
  (!(r in t) || a) && (t[r] = a), n = i, (e[n] === "\n" || e[n] === "\r" || e[n] === "") && (n += 1);
2086
2126
  }
2087
2127
  }
2088
- function Wn(e) {
2128
+ function Xn(e) {
2089
2129
  let t = /(?:ANSI|AAMVA)\s?(\d{6})(\d{2})(\d{2})(\d{2})/.exec(e);
2090
2130
  if (t) return {
2091
2131
  iin: t[1],
@@ -2093,22 +2133,22 @@ function Wn(e) {
2093
2133
  jurisdictionVersion: t[3]
2094
2134
  };
2095
2135
  }
2096
- function Gn(e) {
2136
+ function Zn(e) {
2097
2137
  let t = e.replace(/\r\n/g, "\n").replace(/\r/g, "\n"), n = {}, r = t.split("\n").flatMap((e) => e.split(""));
2098
2138
  if (r.some((e) => {
2099
- let t = Hn(Vn(e));
2100
- return W.has(t.slice(0, 3));
2139
+ let t = Jn(qn(e));
2140
+ return G.has(t.slice(0, 3));
2101
2141
  })) {
2102
2142
  for (let e of r) {
2103
- let t = Hn(Vn(e));
2104
- t && Un(t, n);
2143
+ let t = Jn(qn(e));
2144
+ t && Yn(t, n);
2105
2145
  }
2106
2146
  return n;
2107
2147
  }
2108
- return Un(t, n), n;
2148
+ return Yn(t, n), n;
2109
2149
  }
2110
- function Kn(e, t) {
2111
- if (Rn.has(t)) return K(e, t === "dateOfBirth") ?? e.trim();
2150
+ function Qn(e, t) {
2151
+ if (Wn.has(t)) return q(e, t === "dateOfBirth") ?? e.trim();
2112
2152
  if (t === "issuerJurisdiction" || t === "country") return e.trim().toUpperCase();
2113
2153
  if (t === "addressPostalCode") {
2114
2154
  let t = e.trim();
@@ -2116,11 +2156,11 @@ function Kn(e, t) {
2116
2156
  }
2117
2157
  return e.trim();
2118
2158
  }
2119
- function qn(e) {
2159
+ function $n(e) {
2120
2160
  let t = {};
2121
2161
  for (let [n, r] of Object.entries(e)) {
2122
- let e = zn[n];
2123
- e && r.trim() && (t[e] || (t[e] = Kn(r, e)));
2162
+ let e = Gn[n];
2163
+ e && r.trim() && (t[e] || (t[e] = Qn(r, e)));
2124
2164
  }
2125
2165
  if (!t.firstName && e.DCT?.trim()) {
2126
2166
  let n = e.DCT.trim().split(/\s+/);
@@ -2128,29 +2168,29 @@ function qn(e) {
2128
2168
  }
2129
2169
  return t;
2130
2170
  }
2131
- function Jn(e) {
2132
- let t = Gn(e);
2171
+ function er(e) {
2172
+ let t = Zn(e);
2133
2173
  return {
2134
2174
  rawElements: t,
2135
- fields: qn(t),
2136
- header: Wn(e)
2175
+ fields: $n(t),
2176
+ header: Xn(e)
2137
2177
  };
2138
2178
  }
2139
- function Yn() {
2179
+ function tr() {
2140
2180
  return {};
2141
2181
  }
2142
- function Xn(e, t, n) {
2143
- for (let r of Ln) t[r] && (e[r] = n);
2182
+ function nr(e, t, n) {
2183
+ for (let r of Un) t[r] && (e[r] = n);
2144
2184
  return e;
2145
2185
  }
2146
2186
  //#endregion
2147
2187
  //#region src/sdk/face-model.ts
2148
- var Zn = /* @__PURE__ */ new Map(), Qn = 8400;
2149
- function $n(e, t) {
2188
+ var rr = /* @__PURE__ */ new Map(), ir = 8400;
2189
+ function ar(e, t) {
2150
2190
  let n = Math.max(0, Math.min(e.x + e.width, t.x + t.width) - Math.max(e.x, t.x)) * Math.max(0, Math.min(e.y + e.height, t.y + t.height) - Math.max(e.y, t.y));
2151
2191
  return n / Math.max(1, e.width * e.height + t.width * t.height - n);
2152
2192
  }
2153
- function er(e, t, n, r, i, a, o) {
2193
+ function or(e, t, n, r, i, a, o) {
2154
2194
  return {
2155
2195
  x: (e - n / 2) / i * a,
2156
2196
  y: (t - r / 2) / i * o,
@@ -2158,39 +2198,39 @@ function er(e, t, n, r, i, a, o) {
2158
2198
  height: r / i * o
2159
2199
  };
2160
2200
  }
2161
- function tr(e, t, n) {
2201
+ function sr(e, t, n) {
2162
2202
  let r = t.length === 3 ? t[1] : t[0], i = t.length === 3 ? t[2] : t[1];
2163
- if (i !== 6 || r < 1) throw Error(`Face model expects [1, anchors, 6]. A 640 YOLOX-Nano face export is [1, ${Qn}, 6].`);
2203
+ if (i !== 6 || r < 1) throw Error(`Face model expects [1, anchors, 6]. A 640 YOLOX-Nano face export is [1, ${ir}, 6].`);
2164
2204
  let a = n.confidence ?? .35, o = n.inputSize ?? 640, s = [];
2165
2205
  for (let t = 0; t < r; t += 1) {
2166
2206
  let r = t * i, c = e[r + 4] * e[r + 5];
2167
2207
  c < a || s.push({
2168
2208
  confidence: c,
2169
- bbox: er(e[r], e[r + 1], e[r + 2], e[r + 3], o, n.imageWidth, n.imageHeight)
2209
+ bbox: or(e[r], e[r + 1], e[r + 2], e[r + 3], o, n.imageWidth, n.imageHeight)
2170
2210
  });
2171
2211
  }
2172
- return s.sort((e, t) => t.confidence - e.confidence).filter((e, t, n) => n.slice(0, t).every((t) => $n(e.bbox, t.bbox) < .45)).slice(0, 8);
2212
+ return s.sort((e, t) => t.confidence - e.confidence).filter((e, t, n) => n.slice(0, t).every((t) => ar(e.bbox, t.bbox) < .45)).slice(0, 8);
2173
2213
  }
2174
- async function nr(e, n, r = .35) {
2175
- let i = await P(e, { cloneCanvas: !1 }), a = await import("onnxruntime-web"), o = document.createElement("canvas");
2214
+ async function cr(e, n, r = .35) {
2215
+ let i = await M(e, { cloneCanvas: !1 }), a = await import("onnxruntime-web"), o = document.createElement("canvas");
2176
2216
  o.width = 640, o.height = 640;
2177
2217
  let s = o.getContext("2d", { willReadFrequently: !0 });
2178
2218
  if (!s) throw t();
2179
2219
  s.drawImage(i, 0, 0, 640, 640);
2180
2220
  let c = s.getImageData(0, 0, 640, 640).data, l = 409600, u = new Float32Array(l * 3);
2181
2221
  for (let e = 0; e < l; e += 1) u[e] = c[e * 4] / 255, u[l + e] = c[e * 4 + 1] / 255, u[l * 2 + e] = c[e * 4 + 2] / 255;
2182
- let d = Zn.get(n);
2222
+ let d = rr.get(n);
2183
2223
  d || (d = a.InferenceSession.create(n, {
2184
2224
  executionProviders: ["wasm"],
2185
2225
  graphOptimizationLevel: "all"
2186
- }), Zn.set(n, d));
2226
+ }), rr.set(n, d));
2187
2227
  let f = await d, p = (await f.run({ [f.inputNames[0]]: new a.Tensor("float32", u, [
2188
2228
  1,
2189
2229
  3,
2190
2230
  640,
2191
2231
  640
2192
2232
  ]) }))[f.outputNames[0]];
2193
- return tr(p.data, p.dims.map(Number), {
2233
+ return sr(p.data, p.dims.map(Number), {
2194
2234
  confidence: r,
2195
2235
  imageWidth: i.width,
2196
2236
  imageHeight: i.height,
@@ -2199,7 +2239,7 @@ async function nr(e, n, r = .35) {
2199
2239
  }
2200
2240
  //#endregion
2201
2241
  //#region src/sdk/field-model.ts
2202
- var q = /* @__PURE__ */ new Map(), rr = [
2242
+ var lr = /* @__PURE__ */ new Map(), ur = [
2203
2243
  "person_name",
2204
2244
  "date_of_birth",
2205
2245
  "address",
@@ -2207,19 +2247,19 @@ var q = /* @__PURE__ */ new Map(), rr = [
2207
2247
  "expiration_date",
2208
2248
  "postal_code",
2209
2249
  "state"
2210
- ], ir = 8400;
2211
- function ar(e) {
2250
+ ], dr = 8400;
2251
+ function fr(e) {
2212
2252
  return 5 + e;
2213
2253
  }
2214
- var or = 640;
2215
- function sr(e, t) {
2254
+ var pr = 640;
2255
+ function mr(e, t) {
2216
2256
  let n = Math.max(0, Math.min(e.bbox.x + e.bbox.width, t.bbox.x + t.bbox.width) - Math.max(e.bbox.x, t.bbox.x)) * Math.max(0, Math.min(e.bbox.y + e.bbox.height, t.bbox.y + t.bbox.height) - Math.max(e.bbox.y, t.bbox.y));
2217
2257
  return n / Math.max(1, e.bbox.width * e.bbox.height + t.bbox.width * t.bbox.height - n);
2218
2258
  }
2219
- function cr(e) {
2220
- return e.sort((e, t) => t.confidence - e.confidence).filter((e, t, n) => n.slice(0, t).every((t) => t.field !== e.field || sr(e, t) < .45)).slice(0, 30);
2259
+ function hr(e) {
2260
+ return e.sort((e, t) => t.confidence - e.confidence).filter((e, t, n) => n.slice(0, t).every((t) => t.field !== e.field || mr(e, t) < .45)).slice(0, 30);
2221
2261
  }
2222
- function lr(e, t, n, r, i, a, o) {
2262
+ function gr(e, t, n, r, i, a, o) {
2223
2263
  return {
2224
2264
  x: (e - n / 2) / i * a,
2225
2265
  y: (t - r / 2) / i * o,
@@ -2227,8 +2267,8 @@ function lr(e, t, n, r, i, a, o) {
2227
2267
  height: r / i * o
2228
2268
  };
2229
2269
  }
2230
- function ur(e, t) {
2231
- let n = ar(t);
2270
+ function _r(e, t) {
2271
+ let n = fr(t);
2232
2272
  return e.length === 3 && e[0] === 1 && e[2] === n && e[1] > e[2] ? {
2233
2273
  anchors: e[1],
2234
2274
  features: n
@@ -2237,15 +2277,15 @@ function ur(e, t) {
2237
2277
  features: n
2238
2278
  } : null;
2239
2279
  }
2240
- function dr(e) {
2280
+ function vr(e) {
2241
2281
  return e.length === 3 && e[1] >= 5 && e[2] >= 1;
2242
2282
  }
2243
- function fr(e) {
2244
- let t = ar(e);
2245
- return /* @__PURE__ */ Error(`YOLOX field layout expects [1, anchors, ${t}] (cx, cy, w, h, objectness, ${e} class scores). A 640 YOLOX-Nano export with decode baked in is [1, ${ir}, ${t}].`);
2283
+ function yr(e) {
2284
+ let t = fr(e);
2285
+ return /* @__PURE__ */ Error(`YOLOX field layout expects [1, anchors, ${t}] (cx, cy, w, h, objectness, ${e} class scores). A 640 YOLOX-Nano export with decode baked in is [1, ${dr}, ${t}].`);
2246
2286
  }
2247
- function pr(e, t, n, r, i, a, o) {
2248
- if (!dr(t)) throw Error("Unsupported field-model YOLO output shape.");
2287
+ function br(e, t, n, r, i, a, o) {
2288
+ if (!vr(t)) throw Error("Unsupported field-model YOLO output shape.");
2249
2289
  let s = t[1], c = t[2], l = [];
2250
2290
  for (let t = 0; t < c; t += 1) {
2251
2291
  let u = 0, d = 0;
@@ -2257,14 +2297,14 @@ function pr(e, t, n, r, i, a, o) {
2257
2297
  !f || u < r || l.push({
2258
2298
  field: f,
2259
2299
  confidence: u,
2260
- bbox: lr(e[t], e[c + t], e[c * 2 + t], e[c * 3 + t], i, a, o)
2300
+ bbox: gr(e[t], e[c + t], e[c * 2 + t], e[c * 3 + t], i, a, o)
2261
2301
  });
2262
2302
  }
2263
- return cr(l);
2303
+ return hr(l);
2264
2304
  }
2265
- function mr(e, t, n, r, i, a, o) {
2266
- let s = ur(t, n.length);
2267
- if (!s) throw fr(n.length);
2305
+ function xr(e, t, n, r, i, a, o) {
2306
+ let s = _r(t, n.length);
2307
+ if (!s) throw yr(n.length);
2268
2308
  let c = [];
2269
2309
  for (let t = 0; t < s.anchors; t += 1) {
2270
2310
  let l = t * s.features, u = e[l + 4], d = 0, f = 0;
@@ -2276,25 +2316,25 @@ function mr(e, t, n, r, i, a, o) {
2276
2316
  !p || m < r || c.push({
2277
2317
  field: p,
2278
2318
  confidence: m,
2279
- bbox: lr(e[l], e[l + 1], e[l + 2], e[l + 3], i, a, o)
2319
+ bbox: gr(e[l], e[l + 1], e[l + 2], e[l + 3], i, a, o)
2280
2320
  });
2281
2321
  }
2282
- return cr(c);
2322
+ return hr(c);
2283
2323
  }
2284
- function hr(e, t, n) {
2285
- let r = n.classes ?? rr, i = n.confidence ?? .35, a = n.inputSize ?? or, o = ur(t, r.length);
2324
+ function Sr(e, t, n) {
2325
+ let r = n.classes ?? ur, i = n.confidence ?? .35, a = n.inputSize ?? pr, o = _r(t, r.length);
2286
2326
  if (n.layout === "yolov8" && o) throw Error("This tensor is YOLOX [1, anchors, 5+classes]. Pass fieldLayout: 'yolox', or omit fieldLayout to detect it from the shape.");
2287
- return (n.layout ?? (o ? "yolox" : "yolov8")) === "yolox" ? mr(e, t, r, i, a, n.imageWidth, n.imageHeight) : pr(e, t, r, i, a, n.imageWidth, n.imageHeight);
2327
+ return (n.layout ?? (o ? "yolox" : "yolov8")) === "yolox" ? xr(e, t, r, i, a, n.imageWidth, n.imageHeight) : br(e, t, r, i, a, n.imageWidth, n.imageHeight);
2288
2328
  }
2289
- async function gr(e, n, r = rr, i = .35, a) {
2290
- let o = await P(e, { cloneCanvas: !1 }), s = import("onnxruntime-web"), c = or, l = document.createElement("canvas");
2329
+ async function Cr(e, n, r = ur, i = .35, a) {
2330
+ let o = await M(e, { cloneCanvas: !1 }), s = import("onnxruntime-web"), c = pr, l = document.createElement("canvas");
2291
2331
  l.width = c, l.height = c;
2292
2332
  let u = l.getContext("2d", { willReadFrequently: !0 });
2293
2333
  if (!u) throw t();
2294
2334
  u.drawImage(o, 0, 0, c, c);
2295
2335
  let d = u.getImageData(0, 0, c, c).data, f = c * c, p = new Float32Array(f * 3);
2296
2336
  for (let e = 0; e < f; e += 1) p[e] = d[e * 4] / 255, p[f + e] = d[e * 4 + 1] / 255, p[f * 2 + e] = d[e * 4 + 2] / 255;
2297
- let m = q.get(n);
2337
+ let m = lr.get(n);
2298
2338
  m || (m = (async () => {
2299
2339
  try {
2300
2340
  let [e, t] = await Promise.all([s, ae(n)]);
@@ -2303,16 +2343,16 @@ async function gr(e, n, r = rr, i = .35, a) {
2303
2343
  graphOptimizationLevel: "all"
2304
2344
  });
2305
2345
  } catch (e) {
2306
- throw q.delete(n), e;
2346
+ throw lr.delete(n), e;
2307
2347
  }
2308
- })(), q.set(n, m));
2348
+ })(), lr.set(n, m));
2309
2349
  let [h, g] = await Promise.all([s, m]), _ = (await g.run({ [g.inputNames[0]]: new h.Tensor("float32", p, [
2310
2350
  1,
2311
2351
  3,
2312
2352
  c,
2313
2353
  c
2314
2354
  ]) }))[g.outputNames[0]];
2315
- return hr(_.data, _.dims.map(Number), {
2355
+ return Sr(_.data, _.dims.map(Number), {
2316
2356
  classes: r,
2317
2357
  confidence: i,
2318
2358
  layout: a,
@@ -2323,12 +2363,12 @@ async function gr(e, n, r = rr, i = .35, a) {
2323
2363
  }
2324
2364
  //#endregion
2325
2365
  //#region src/sdk/redact.ts
2326
- async function _r(e, n, r = {}) {
2366
+ async function wr(e, n, r = {}) {
2327
2367
  await x("redaction");
2328
- let i = await P(e), a = i.getContext("2d");
2368
+ let i = await M(e), a = i.getContext("2d");
2329
2369
  if (!a) throw t();
2330
2370
  for (let e of n) {
2331
- let t = Ke(e, i.width, i.height);
2371
+ let t = Je(e, i.width, i.height);
2332
2372
  if (t.width < 1 || t.height < 1) continue;
2333
2373
  if ((e.mode ?? r.mode ?? "blackout") === "blackout") {
2334
2374
  a.fillStyle = "#050706", a.fillRect(t.x, t.y, t.width, t.height);
@@ -2344,7 +2384,7 @@ async function _r(e, n, r = {}) {
2344
2384
  }
2345
2385
  return {
2346
2386
  canvas: i,
2347
- blob: await Ge(i, r.mimeType ?? "image/png", r.quality)
2387
+ blob: await qe(i, r.mimeType ?? "image/png", r.quality)
2348
2388
  };
2349
2389
  }
2350
2390
  //#endregion
@@ -2358,7 +2398,7 @@ function J(e) {
2358
2398
  height: i - n
2359
2399
  };
2360
2400
  }
2361
- function vr(e) {
2401
+ function Tr(e) {
2362
2402
  let t = [], n = [...e].sort((e, t) => e.bbox.y + e.bbox.height / 2 - (t.bbox.y + t.bbox.height / 2) || e.bbox.x - t.bbox.x);
2363
2403
  for (let e of n) {
2364
2404
  let n = e.bbox.y + e.bbox.height / 2, r = t.find((t) => {
@@ -2380,7 +2420,7 @@ function Y(e, t, n = !1) {
2380
2420
  function X(e) {
2381
2421
  return e.reduce((e, t) => e + t.confidence, 0) / Math.max(1, e.length);
2382
2422
  }
2383
- function yr(e, t) {
2423
+ function Er(e, t) {
2384
2424
  let n = e.mode, r = n === "case-insensitive", i = e.scope ?? "line", a;
2385
2425
  if (n === "regex") {
2386
2426
  let t = e.pattern ?? e.values?.[0];
@@ -2417,22 +2457,22 @@ function yr(e, t) {
2417
2457
  }
2418
2458
  return s;
2419
2459
  }
2420
- function br(e, t) {
2460
+ function Dr(e, t) {
2421
2461
  let n = e.labelMode !== "exact", r = Y(e.label, n, !0).split(" ");
2422
2462
  for (let e of t) for (let t = 0; t <= e.words.length - r.length; t += 1) {
2423
2463
  let i = e.words.slice(t, t + r.length);
2424
2464
  if (i.every((e, t) => Y(e.text, n, !0) === r[t])) return i;
2425
2465
  }
2426
2466
  }
2427
- function xr(e, t, n, r, i, a) {
2467
+ function Or(e, t, n, r, i, a) {
2428
2468
  let o = a.window?.distance ?? .28, s = a.window?.crossAxis ?? .12, c = t.x + t.width / 2, l = t.y + t.height / 2;
2429
2469
  return e.filter((e) => {
2430
2470
  let a = e.bbox.x + e.bbox.width / 2, u = e.bbox.y + e.bbox.height / 2;
2431
2471
  return n === "right" ? e.bbox.x >= t.x + t.width && e.bbox.x - t.x - t.width <= r * o && Math.abs(u - l) <= i * s : n === "left" ? e.bbox.x + e.bbox.width <= t.x && t.x - e.bbox.x - e.bbox.width <= r * o && Math.abs(u - l) <= i * s : n === "below" ? e.bbox.y >= t.y + t.height && e.bbox.y - t.y - t.height <= i * o && Math.abs(a - c) <= r * s : e.bbox.y + e.bbox.height <= t.y && t.y - e.bbox.y - e.bbox.height <= i * o && Math.abs(a - c) <= r * s;
2432
2472
  });
2433
2473
  }
2434
- function Sr(e, t, n, r, i, a = "label") {
2435
- let o = br(e, n);
2474
+ function kr(e, t, n, r, i, a = "label") {
2475
+ let o = Dr(e, n);
2436
2476
  if (!o) return [];
2437
2477
  let s = J(o), c = new Set(o), l = t.filter((e) => !c.has(e)), u = e.direction === "any" ? [
2438
2478
  "right",
@@ -2441,7 +2481,7 @@ function Sr(e, t, n, r, i, a = "label") {
2441
2481
  "above"
2442
2482
  ] : [e.direction], d;
2443
2483
  for (let t of u) {
2444
- let n = vr(xr(l, s, t, r, i, e));
2484
+ let n = Tr(Or(l, s, t, r, i, e));
2445
2485
  for (let t of n) {
2446
2486
  if (e.valuePattern && !new RegExp(e.valuePattern, e.patternFlags).test(t.text)) continue;
2447
2487
  let n = t.bbox.x + t.bbox.width / 2, a = t.bbox.y + t.bbox.height / 2, o = s.x + s.width / 2, c = s.y + s.height / 2, l = Math.hypot((n - o) / r, (a - c) / i);
@@ -2462,7 +2502,7 @@ function Sr(e, t, n, r, i, a = "label") {
2462
2502
  confidence: Math.max(0, X(d.words) * (1 - Math.min(.5, d.distance)))
2463
2503
  }];
2464
2504
  }
2465
- var Cr = {
2505
+ var Ar = {
2466
2506
  person_name: [
2467
2507
  "LN",
2468
2508
  "FN",
@@ -2499,10 +2539,10 @@ var Cr = {
2499
2539
  "POSTAL"
2500
2540
  ],
2501
2541
  state: ["STATE", "DAJ"]
2502
- }, wr = new Set(Object.values(Cr).flat()), Tr = /^(?:\d{2}[/-]\d{2}[/-]\d{2,4}|\d{4}[/-]\d{2}[/-]\d{2}|\d{6}|\d{8})$/, Er = /\b(?:ST|STREET|AVE|AVENUE|RD|ROAD|BLVD|BOULEVARD|LN|LANE|DR|DRIVE|WAY|CT|COURT)\b/i, Dr = /\b(?:DRIVER|LICENSE|IDENTIFICATION|CARD|CLASS|SEX|EYES|HEIGHT|RESTRICTIONS)\b/i;
2542
+ }, jr = new Set(Object.values(Ar).flat()), Mr = /^(?:\d{2}[/-]\d{2}[/-]\d{2,4}|\d{4}[/-]\d{2}[/-]\d{2}|\d{6}|\d{8})$/, Nr = /\b(?:ST|STREET|AVE|AVENUE|RD|ROAD|BLVD|BOULEVARD|LN|LANE|DR|DRIVE|WAY|CT|COURT)\b/i, Pr = /\b(?:DRIVER|LICENSE|IDENTIFICATION|CARD|CLASS|SEX|EYES|HEIGHT|RESTRICTIONS)\b/i;
2503
2543
  function Z(e, t) {
2504
2544
  let n = t.trim();
2505
- return n ? e === "date_of_birth" || e === "expiration_date" ? Tr.test(n.replace(/\s/g, "")) : e === "postal_code" ? /^(?:\d{5}(?:-\d{4})?|[A-Z]\d[A-Z]\s?\d[A-Z]\d)$/i.test(n) : e === "state" ? /^[A-Z]{2}$/i.test(n) : e === "document_number" ? /^(?=.*\d)[A-Z0-9-]{5,20}$/i.test(n) : e === "person_name" ? !/\d/.test(n) && /^[A-ZÀ-ÖØ-öø-ÿ' -]{3,}$/i.test(n) && !Dr.test(n) : /\d/.test(n) && /[A-Z]/i.test(n) : !1;
2545
+ return n ? e === "date_of_birth" || e === "expiration_date" ? Mr.test(n.replace(/\s/g, "")) : e === "postal_code" ? /^(?:\d{5}(?:-\d{4})?|[A-Z]\d[A-Z]\s?\d[A-Z]\d)$/i.test(n) : e === "state" ? /^[A-Z]{2}$/i.test(n) : e === "document_number" ? /^(?=.*\d)[A-Z0-9-]{5,20}$/i.test(n) : e === "person_name" ? !/\d/.test(n) && /^[A-ZÀ-ÖØ-öø-ÿ' -]{3,}$/i.test(n) && !Pr.test(n) : /\d/.test(n) && /[A-Z]/i.test(n) : !1;
2506
2546
  }
2507
2547
  function Q(e, t, n, r, i = 1) {
2508
2548
  return {
@@ -2514,17 +2554,17 @@ function Q(e, t, n, r, i = 1) {
2514
2554
  confidence: Math.max(0, Math.min(1, X(n) * i))
2515
2555
  };
2516
2556
  }
2517
- function Or(e, t, n) {
2518
- let r = Cr[e], i = [];
2557
+ function Fr(e, t, n) {
2558
+ let r = Ar[e], i = [];
2519
2559
  for (let a of n) for (let n = 0; n < a.words.length; n += 1) {
2520
2560
  let o = a.words[n].text.toUpperCase().replace(/[^A-Z0-9]/g, ""), s = r.find((e) => o === e || o.startsWith(e));
2521
2561
  if (!s) continue;
2522
2562
  let c, l;
2523
- o === s ? (c = a.words.slice(n + 1).filter((e) => !wr.has(e.text.toUpperCase().replace(/[^A-Z0-9]/g, ""))), l = c.map((e) => e.text).join(" ")) : (c = [a.words[n]], l = a.words[n].text.replace(RegExp(`^${s}[:\\s-]*`, "i"), "")), c.length && Z(e, l) && i.push(Q(t, "alias", c, l, .98));
2563
+ o === s ? (c = a.words.slice(n + 1).filter((e) => !jr.has(e.text.toUpperCase().replace(/[^A-Z0-9]/g, ""))), l = c.map((e) => e.text).join(" ")) : (c = [a.words[n]], l = a.words[n].text.replace(RegExp(`^${s}[:\\s-]*`, "i"), "")), c.length && Z(e, l) && i.push(Q(t, "alias", c, l, .98));
2524
2564
  }
2525
2565
  return i;
2526
2566
  }
2527
- function kr(e, t, n) {
2567
+ function Ir(e, t, n) {
2528
2568
  let r = n.filter((e) => {
2529
2569
  let t = e.text.replace(/\s/g, "");
2530
2570
  return t.includes("<<") || /^[A-Z0-9<]{25,}$/.test(t);
@@ -2546,7 +2586,7 @@ function kr(e, t, n) {
2546
2586
  }
2547
2587
  return [];
2548
2588
  }
2549
- function Ar(e) {
2589
+ function Lr(e) {
2550
2590
  let t = e.replace(/\s/g, ""), n = t.match(/\d{4}/)?.[0];
2551
2591
  if (n) return Number(n);
2552
2592
  let r = t.match(/^\d{2}/)?.[0];
@@ -2554,16 +2594,16 @@ function Ar(e) {
2554
2594
  let i = Number(r);
2555
2595
  return i > (/* @__PURE__ */ new Date()).getFullYear() % 100 ? 1900 + i : 2e3 + i;
2556
2596
  }
2557
- function jr(e, t, n, r, i) {
2597
+ function Rr(e, t, n, r, i) {
2558
2598
  if (e === "address") {
2559
- let e = r.findIndex((e) => /\d/.test(e.text) && Er.test(e.text));
2599
+ let e = r.findIndex((e) => /\d/.test(e.text) && Nr.test(e.text));
2560
2600
  if (e < 0) return [];
2561
2601
  let n = [...r[e].words], i = r[e + 1];
2562
2602
  return i && /(?:\b[A-Z]{2}\b.*\d{5}|\d{5})/i.test(i.text) && n.push(...i.words), [Q(t, "layout", n, void 0, .76)];
2563
2603
  }
2564
2604
  if (e === "person_name") {
2565
2605
  let e = r.map((e) => {
2566
- let t = e.words.filter((e) => /^[A-ZÀ-ÖØ-öø-ÿ'-]+$/i.test(e.text)), n = e.bbox.y / Math.max(1, i), r = t.length >= 2 && t.length <= 5 && t.length === e.words.length && !Dr.test(e.text) && !Er.test(e.text) && !e.text.includes("<"), a = e.text.replace(/[^A-Z]/g, "").length / Math.max(1, e.text.replace(/[^A-Za-z]/g, "").length);
2606
+ let t = e.words.filter((e) => /^[A-ZÀ-ÖØ-öø-ÿ'-]+$/i.test(e.text)), n = e.bbox.y / Math.max(1, i), r = t.length >= 2 && t.length <= 5 && t.length === e.words.length && !Pr.test(e.text) && !Nr.test(e.text) && !e.text.includes("<"), a = e.text.replace(/[^A-Z]/g, "").length / Math.max(1, e.text.replace(/[^A-Za-z]/g, "").length);
2567
2607
  return {
2568
2608
  line: e,
2569
2609
  score: r ? .45 + X(e.words) * .3 + a * .15 + (n < .65 ? .1 : 0) : 0
@@ -2572,9 +2612,9 @@ function jr(e, t, n, r, i) {
2572
2612
  return !e.length || e[1] && e[0].score - e[1].score < .04 ? [] : [Q(t, "layout", e[0].line.words, void 0, e[0].score)];
2573
2613
  }
2574
2614
  if (e === "date_of_birth" || e === "expiration_date") {
2575
- let r = (/* @__PURE__ */ new Date()).getFullYear(), i = n.filter((e) => Tr.test(e.text.replace(/\s/g, ""))).map((e) => ({
2615
+ let r = (/* @__PURE__ */ new Date()).getFullYear(), i = n.filter((e) => Mr.test(e.text.replace(/\s/g, ""))).map((e) => ({
2576
2616
  word: e,
2577
- year: Ar(e.text)
2617
+ year: Lr(e.text)
2578
2618
  })).filter((e) => e.year !== void 0), a = e === "date_of_birth" ? i.filter((e) => e.year <= r - 14 && e.year >= r - 120) : i.filter((e) => e.year >= r - 1);
2579
2619
  return a.sort((t, n) => e === "date_of_birth" ? t.year - n.year : n.year - t.year), a.length ? [Q(t, "layout", [a[0].word], void 0, .72)] : [];
2580
2620
  }
@@ -2592,29 +2632,29 @@ function jr(e, t, n, r, i) {
2592
2632
  }
2593
2633
  return [];
2594
2634
  }
2595
- function Mr(e, t) {
2635
+ function zr(e, t) {
2596
2636
  return Math.max(0, Math.min(e.x + e.width, t.x + t.width) - Math.max(e.x, t.x)) * Math.max(0, Math.min(e.y + e.height, t.y + t.height) - Math.max(e.y, t.y)) / Math.max(1, t.width * t.height);
2597
2637
  }
2598
- function Nr(e, t, n, r) {
2599
- let i = Or(e.field, e.id, n), a = kr(e.field, e.id, n);
2600
- return i.length || a.length ? [...i, ...a] : jr(e.field, e.id, t, n, r);
2638
+ function Br(e, t, n, r) {
2639
+ let i = Fr(e.field, e.id, n), a = Ir(e.field, e.id, n);
2640
+ return i.length || a.length ? [...i, ...a] : Rr(e.field, e.id, t, n, r);
2601
2641
  }
2602
- function Pr(e, t, n) {
2642
+ function Vr(e, t, n) {
2603
2643
  let r = (n ?? []).filter((t) => t.field === e.field).sort((e, t) => t.confidence - e.confidence);
2604
2644
  for (let n of r) {
2605
- let r = t.filter((e) => Mr(n.bbox, e.bbox) >= .3);
2645
+ let r = t.filter((e) => zr(n.bbox, e.bbox) >= .3);
2606
2646
  if (!r.length) continue;
2607
2647
  let i = r.map((e) => e.text).join(" ");
2608
2648
  if (Z(e.field, i)) return Q(e.id, "model", r, i, n.confidence);
2609
2649
  }
2610
2650
  }
2611
- function Fr(e, t, n, r, i, a) {
2612
- let o = Nr(e, t, n, r);
2651
+ function Hr(e, t, n, r, i, a) {
2652
+ let o = Br(e, t, n, r);
2613
2653
  if (e.detector !== "model" || !a) return o;
2614
- let s = Pr(e, t, i);
2654
+ let s = Vr(e, t, i);
2615
2655
  return s ? [s] : [];
2616
2656
  }
2617
- function Ir(e, t, n, r) {
2657
+ function Ur(e, t, n, r) {
2618
2658
  let i = (e) => Math.max(0, Math.min(1, e)), a = i(e.rect.x), o = i(e.rect.y);
2619
2659
  return {
2620
2660
  ruleId: `${t}.${e.id}`,
@@ -2629,19 +2669,19 @@ function Ir(e, t, n, r) {
2629
2669
  confidence: 1
2630
2670
  };
2631
2671
  }
2632
- function Lr(e, t) {
2633
- let n = t.imageWidth ?? e?.imageWidth ?? 0, r = t.imageHeight ?? e?.imageHeight ?? 0, i = e?.words ?? [], a = vr(i), o = [], s = [];
2672
+ function Wr(e, t) {
2673
+ let n = t.imageWidth ?? e?.imageWidth ?? 0, r = t.imageHeight ?? e?.imageHeight ?? 0, i = e?.words ?? [], a = Tr(i), o = [], s = [];
2634
2674
  for (let e of t.rules) {
2635
- let c = e.strategy === "string" ? yr(e, a) : e.strategy === "label" ? Sr(e, i, a, n, r) : Fr(e, i, a, r, t.semanticDetections, t.modelRequested === !0);
2675
+ let c = e.strategy === "string" ? Er(e, a) : e.strategy === "label" ? kr(e, i, a, n, r) : Hr(e, i, a, r, t.semanticDetections, t.modelRequested === !0);
2636
2676
  c.length ? o.push(...c) : s.push(e.id);
2637
2677
  }
2638
2678
  for (let e of t.template?.fields ?? []) {
2639
2679
  let c = `${t.template.id}.${e.id}`;
2640
2680
  if (e.strategy === "rect") {
2641
- n && r ? o.push(Ir(e, t.template.id, n, r)) : s.push(c);
2681
+ n && r ? o.push(Ur(e, t.template.id, n, r)) : s.push(c);
2642
2682
  continue;
2643
2683
  }
2644
- let l = Sr({
2684
+ let l = kr({
2645
2685
  ...e,
2646
2686
  id: c,
2647
2687
  strategy: "label"
@@ -2659,34 +2699,34 @@ function Lr(e, t) {
2659
2699
  confidence: u
2660
2700
  };
2661
2701
  }
2662
- function Rr(e) {
2702
+ function Gr(e) {
2663
2703
  return e.rules.length > 0 || e.template?.fields.some((e) => e.strategy === "anchor") === !0;
2664
2704
  }
2665
- function zr(e, t = !1) {
2705
+ function Kr(e, t = !1) {
2666
2706
  return t && !e.complete ? "unmatched" : e.complete ? "success" : "partial";
2667
2707
  }
2668
- async function Br(e, t) {
2708
+ async function qr(e, t) {
2669
2709
  await x("redaction");
2670
- let n = await P(e, { cloneCanvas: !1 }), r = t.ocr;
2671
- Rr(t) && !r && (r = await H(n, { includeWords: !0 }));
2710
+ let n = await M(e, { cloneCanvas: !1 }), r = t.ocr;
2711
+ Gr(t) && !r && (r = await B(n, { includeWords: !0 }));
2672
2712
  let i = t.semanticDetections, a = t.modelRequested === !0, o = "not-requested", s;
2673
2713
  if (t.models?.fields) try {
2674
- i = await gr(n, t.models.fields, t.models.fieldClasses, t.models.confidence, t.models.fieldLayout), a = !0, o = "loaded";
2714
+ i = await Cr(n, t.models.fields, t.models.fieldClasses, t.models.confidence, t.models.fieldLayout), a = !0, o = "loaded";
2675
2715
  } catch (e) {
2676
2716
  s = e instanceof Error ? e.message : "The field model could not load.";
2677
2717
  let n = t.models.allowHeuristicFallback !== !1;
2678
2718
  a = !n, o = n ? "fallback" : "failed";
2679
2719
  }
2680
- let c = Lr(r, {
2720
+ let c = Wr(r, {
2681
2721
  rules: t.rules,
2682
2722
  template: t.template,
2683
2723
  imageWidth: n.width,
2684
2724
  imageHeight: n.height,
2685
2725
  semanticDetections: i,
2686
2726
  modelRequested: a
2687
- }), l = zr(c, t.requireAll), u = [], d = "not-requested", f;
2727
+ }), l = Kr(c, t.requireAll), u = [], d = "not-requested", f;
2688
2728
  if (t.models?.face) try {
2689
- u = await nr(n, t.models.face, t.models.faceConfidence), d = "loaded";
2729
+ u = await cr(n, t.models.face, t.models.faceConfidence), d = "loaded";
2690
2730
  } catch (e) {
2691
2731
  f = e instanceof Error ? e.message : "The face model could not load.", d = "failed";
2692
2732
  }
@@ -2700,7 +2740,7 @@ async function Br(e, t) {
2700
2740
  faceStatus: d,
2701
2741
  faceError: f
2702
2742
  };
2703
- let p = await _r(n, [...c.matches.map((e) => ({
2743
+ let p = await wr(n, [...c.matches.map((e) => ({
2704
2744
  ...e.bbox,
2705
2745
  mode: t.style?.mode
2706
2746
  })), ...u.map((e) => ({
@@ -2722,7 +2762,7 @@ async function Br(e, t) {
2722
2762
  }
2723
2763
  //#endregion
2724
2764
  //#region src/sdk/driver-license.ts
2725
- var Vr = [
2765
+ var Jr = [
2726
2766
  {
2727
2767
  id: "issuerJurisdiction",
2728
2768
  strategy: "semantic",
@@ -2759,11 +2799,11 @@ var Vr = [
2759
2799
  field: "person_name"
2760
2800
  }
2761
2801
  ];
2762
- function Hr(e, t, n) {
2802
+ function Yr(e, t, n) {
2763
2803
  let r = n.trim();
2764
2804
  if (r) {
2765
2805
  if (t === "expirationDate" || t === "dateOfBirth" || t === "issueDate") {
2766
- e[t] = K(r, t === "dateOfBirth") ?? r;
2806
+ e[t] = q(r, t === "dateOfBirth") ?? r;
2767
2807
  return;
2768
2808
  }
2769
2809
  if (t === "issuerJurisdiction") {
@@ -2773,8 +2813,8 @@ function Hr(e, t, n) {
2773
2813
  e[t] = r;
2774
2814
  }
2775
2815
  }
2776
- function Ur(e) {
2777
- let t = {}, n = Lr(e, { rules: Vr });
2816
+ function Xr(e) {
2817
+ let t = {}, n = Wr(e, { rules: Jr });
2778
2818
  for (let e of n.matches) {
2779
2819
  let n = e.text?.trim();
2780
2820
  if (n) {
@@ -2783,29 +2823,29 @@ function Ur(e) {
2783
2823
  !t.firstName && e[0] && (t.firstName = e[0]), !t.lastName && e.length > 1 && (t.lastName = e[e.length - 1]), !t.middleName && e.length > 2 && (t.middleName = e.slice(1, -1).join(" "));
2784
2824
  continue;
2785
2825
  }
2786
- Hr(t, e.ruleId, n);
2826
+ Yr(t, e.ruleId, n);
2787
2827
  }
2788
2828
  }
2789
2829
  return t;
2790
2830
  }
2791
- function Wr(e, t) {
2792
- let n = { ...e }, r = Xn(Yn(), e, "barcode");
2831
+ function Zr(e, t) {
2832
+ let n = { ...e }, r = nr(tr(), e, "barcode");
2793
2833
  for (let [e, i] of Object.entries(t)) i && (n[e] || (n[e] = i, r[e] = "ocr"));
2794
2834
  return {
2795
2835
  fields: n,
2796
2836
  sources: r
2797
2837
  };
2798
2838
  }
2799
- async function Gr(e, t, n) {
2800
- return t?.status === "success" && t.corners ? ct(e, t.corners, { maxOutputDimension: n?.maxOutputDimension }) : R(e, n);
2839
+ async function Qr(e, t, n) {
2840
+ return t?.status === "success" && t.corners ? ut(e, t.corners, { maxOutputDimension: n?.maxOutputDimension }) : I(e, n);
2801
2841
  }
2802
- async function Kr(e, t, n) {
2842
+ async function $r(e, t, n) {
2803
2843
  if (!e.width || !e.height) return {
2804
2844
  kind: "retry",
2805
2845
  status: "frontFailed",
2806
2846
  message: "The front photo was empty. Try again."
2807
2847
  };
2808
- let r = await Gr(e, t, n);
2848
+ let r = await Qr(e, t, n);
2809
2849
  if (r.status !== "success" || !r.canvas) return {
2810
2850
  kind: "retry",
2811
2851
  status: "frontFailed",
@@ -2813,7 +2853,7 @@ async function Kr(e, t, n) {
2813
2853
  };
2814
2854
  let i;
2815
2855
  try {
2816
- i = await H(r.canvas, { includeWords: !0 });
2856
+ i = await B(r.canvas, { includeWords: !0 });
2817
2857
  } catch {
2818
2858
  i = void 0;
2819
2859
  }
@@ -2829,7 +2869,7 @@ async function Kr(e, t, n) {
2829
2869
  function $() {
2830
2870
  return new DOMException("The barcode scan was cancelled.", "AbortError");
2831
2871
  }
2832
- function qr(e, t) {
2872
+ function ei(e, t) {
2833
2873
  return new Promise((n, r) => {
2834
2874
  if (t?.aborted) {
2835
2875
  r($());
@@ -2843,21 +2883,21 @@ function qr(e, t) {
2843
2883
  t?.addEventListener("abort", a, { once: !0 });
2844
2884
  });
2845
2885
  }
2846
- async function Jr(e, t = {}) {
2886
+ async function ti(e, t = {}) {
2847
2887
  let n = t.intervalMs ?? 140;
2848
2888
  for (;;) {
2849
2889
  if (t.signal?.aborted) throw $();
2850
2890
  try {
2851
2891
  let t = await e();
2852
- if (t?.width && t.height && (await U(t))?.text) return t;
2892
+ if (t?.width && t.height && (await W(t))?.text) return t;
2853
2893
  } catch (e) {
2854
2894
  if (t.signal?.aborted) throw $();
2855
2895
  if (e instanceof DOMException && e.name === "AbortError") throw e;
2856
2896
  }
2857
- await qr(n, t.signal);
2897
+ await ei(n, t.signal);
2858
2898
  }
2859
2899
  }
2860
- async function Yr(e, t) {
2900
+ async function ni(e, t) {
2861
2901
  if (!e.width || !e.height) return {
2862
2902
  status: "backFailed",
2863
2903
  fields: {},
@@ -2867,23 +2907,23 @@ async function Yr(e, t) {
2867
2907
  back: {},
2868
2908
  message: "The back photo was empty. Try again."
2869
2909
  };
2870
- let n = (await U(e))?.text, r = {
2910
+ let n = (await W(e))?.text, r = {
2871
2911
  canvas: e,
2872
2912
  barcodeText: n
2873
2913
  };
2874
2914
  if (!n) {
2875
- let e = t.ocr ? Ur(t.ocr) : {};
2915
+ let e = t.ocr ? Xr(t.ocr) : {};
2876
2916
  return {
2877
2917
  status: "barcodeUnreadable",
2878
2918
  fields: e,
2879
2919
  rawElements: {},
2880
- sources: Xn(Yn(), e, "ocr"),
2920
+ sources: nr(tr(), e, "ocr"),
2881
2921
  front: t,
2882
2922
  back: r,
2883
2923
  message: "The PDF417 barcode on the back could not be read. Try again."
2884
2924
  };
2885
2925
  }
2886
- let i = Jn(n), a = t.ocr ? Ur(t.ocr) : {}, o = Wr(i.fields, a);
2926
+ let i = er(n), a = t.ocr ? Xr(t.ocr) : {}, o = Zr(i.fields, a);
2887
2927
  return {
2888
2928
  status: "success",
2889
2929
  fields: o.fields,
@@ -2893,10 +2933,10 @@ async function Yr(e, t) {
2893
2933
  back: r
2894
2934
  };
2895
2935
  }
2896
- function Xr(e) {
2936
+ function ri(e) {
2897
2937
  return e === "back" ? 0 : void 0;
2898
2938
  }
2899
- function Zr(e, t) {
2939
+ function ii(e, t) {
2900
2940
  return e === "front" ? {
2901
2941
  title: "Scan a driver’s license",
2902
2942
  headline: "Show the front of the license.",
@@ -2907,7 +2947,7 @@ function Zr(e, t) {
2907
2947
  detail: t ? "Take a photo of the entire PDF417 barcode. There is no document outline." : "Keep the entire PDF417 in the preview. Closer is fine if the whole code is visible."
2908
2948
  };
2909
2949
  }
2910
- async function Qr(e = {}) {
2950
+ async function ai(e = {}) {
2911
2951
  await x("scan"), await x("ocr");
2912
2952
  let t = "front", n, r = !1;
2913
2953
  return {
@@ -2921,10 +2961,10 @@ async function Qr(e = {}) {
2921
2961
  message: "This license scan was cancelled."
2922
2962
  };
2923
2963
  if (t === "front") {
2924
- let r = await Kr(i, a, e.scan);
2964
+ let r = await $r(i, a, e.scan);
2925
2965
  return r.kind === "need-back" && (n = r.front, t = "back"), r;
2926
2966
  }
2927
- let o = await Yr(i, n ?? {});
2967
+ let o = await ni(i, n ?? {});
2928
2968
  return o.status === "backFailed" ? {
2929
2969
  kind: "retry",
2930
2970
  status: "backFailed",
@@ -2940,6 +2980,6 @@ async function Qr(e = {}) {
2940
2980
  };
2941
2981
  }
2942
2982
  //#endregion
2943
- export { y as $, ut as A, ve as B, yt as C, st as D, ct as E, N as F, le as G, M as H, k as I, re as J, Ne as K, se as L, ge as M, he as N, Xe as O, Te as P, b as Q, Pe as R, jt as S, qe as T, Fe as U, j as V, ce as W, o as X, a as Y, x as Z, Ct as _, Qr as a, At as b, Br as c, Jn as d, e as et, U as f, Mt as g, wt as h, Wr as i, lt as j, R as k, _r as l, H as m, Xr as n, Jr as o, jn as p, _e as q, Zr as r, Lr as s, Ur as t, t as tt, K as u, xt as v, It as w, kt as x, bt as y, A as z };
2983
+ export { b as $, I as A, ce as B, Nt as C, ut as D, Ye as E, De as F, le as G, ye as H, j as I, ve as J, ue as K, k as L, dt as M, _e as N, lt as O, ge as P, x as Q, se as R, jt as S, Rt as T, A as U, be as V, Le as W, a as X, re as Y, o as Z, Pt as _, ai as a, St as b, qr as c, er as d, y as et, V as f, Et as g, B as h, Zr as i, ft as j, Qe as k, wr as l, Pn as m, ri as n, t as nt, ti as o, W as p, Fe as q, ii as r, Wr as s, Xr as t, e as tt, q as u, Tt as v, xt as w, Mt as x, Ct as y, Ie as z };
2944
2984
 
2945
- //# sourceMappingURL=driver-license-CV0oawgf.js.map
2985
+ //# sourceMappingURL=driver-license-CBDCGp14.js.map