@limrun/ui 0.17.0-rc.1 → 0.17.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +18 -3
  2. package/dist/{GLTFLoader-DW6wpvyR.mjs → GLTFLoader-B4nnixLv.mjs} +1 -1
  3. package/dist/{GLTFLoader-BKnsBFsj.js → GLTFLoader-GATLvS0U.js} +1 -1
  4. package/dist/components/duo-fold-motion.d.ts +1 -1
  5. package/dist/components/duo-view.d.ts +5 -1
  6. package/dist/{duo-frame-DjfA4gG-.js → duo-frame-CfBILL32.js} +2 -2
  7. package/dist/{duo-frame-BzyYljix.mjs → duo-frame-F3hwc09B.mjs} +406 -406
  8. package/dist/duo-view-BsdKpp8d.mjs +662 -0
  9. package/dist/duo-view-Cy8kBdg9.js +1 -0
  10. package/dist/index.cjs +1 -1
  11. package/dist/index.css +1 -1
  12. package/dist/index.js +2 -2
  13. package/dist/lite.cjs +1 -1
  14. package/dist/lite.js +1 -1
  15. package/dist/{remote-control-CQjSEVDF.mjs → remote-control-BAmNHDdv.mjs} +109 -108
  16. package/dist/{remote-control-DVRXfCR2.js → remote-control-F3h8U5pg.js} +1 -1
  17. package/package.json +5 -1
  18. package/dist/demo.d.ts +0 -1
  19. package/dist/duo-view-COZg8ieG.js +0 -1
  20. package/dist/duo-view-o1yxIzxu.mjs +0 -654
  21. package/index.html +0 -199
  22. package/src/assets/Apple_logo_white.svg +0 -4
  23. package/src/assets/android_boot.gif +0 -0
  24. package/src/assets/android_boot.webp +0 -0
  25. package/src/assets/iphone16pro_black.webp +0 -0
  26. package/src/assets/iphone16pro_black_bg.webp +0 -0
  27. package/src/assets/iphone16pro_black_landscape.webp +0 -0
  28. package/src/assets/iphone16pro_black_landscape_bg.webp +0 -0
  29. package/src/assets/pixel9_black.webp +0 -0
  30. package/src/assets/pixel9_black_landscape.webp +0 -0
  31. package/src/assets/pixel_tablet_landscape.webp +0 -0
  32. package/src/assets/pixel_tablet_portrait.webp +0 -0
  33. package/src/components/device-install/index.ts +0 -1
  34. package/src/components/duo-button-hinge.test.tsx +0 -138
  35. package/src/components/duo-button-hinge.ts +0 -75
  36. package/src/components/duo-controls.tsx +0 -142
  37. package/src/components/duo-flat-frame.tsx +0 -145
  38. package/src/components/duo-flat-geometry.test.ts +0 -63
  39. package/src/components/duo-flat-geometry.ts +0 -97
  40. package/src/components/duo-fold-motion.test.tsx +0 -245
  41. package/src/components/duo-fold-motion.tsx +0 -192
  42. package/src/components/duo-fold-renderer.test.ts +0 -29
  43. package/src/components/duo-fold-renderer.ts +0 -397
  44. package/src/components/duo-fold-timing.test.ts +0 -44
  45. package/src/components/duo-fold-timing.ts +0 -9
  46. package/src/components/duo-frame.tsx +0 -579
  47. package/src/components/duo-hardware.test.ts +0 -61
  48. package/src/components/duo-hardware.ts +0 -61
  49. package/src/components/duo-model.test.ts +0 -243
  50. package/src/components/duo-model.ts +0 -607
  51. package/src/components/duo-screen-handoff.ts +0 -52
  52. package/src/components/duo-view.test.tsx +0 -104
  53. package/src/components/duo-view.tsx +0 -315
  54. package/src/components/inspect-overlay.css +0 -223
  55. package/src/components/inspect-overlay.tsx +0 -437
  56. package/src/components/remote-control-framed.tsx +0 -14
  57. package/src/components/remote-control.css +0 -441
  58. package/src/components/remote-control.test.ts +0 -34
  59. package/src/components/remote-control.tsx +0 -3989
  60. package/src/core/ax-fetcher.test.ts +0 -418
  61. package/src/core/ax-fetcher.ts +0 -387
  62. package/src/core/ax-tree.test.ts +0 -491
  63. package/src/core/ax-tree.ts +0 -416
  64. package/src/core/camera.test.ts +0 -155
  65. package/src/core/camera.ts +0 -133
  66. package/src/core/constants.ts +0 -344
  67. package/src/core/duo.test.ts +0 -142
  68. package/src/core/duo.ts +0 -156
  69. package/src/core/webrtc-messages.ts +0 -148
  70. package/src/demo.tsx +0 -283
  71. package/src/frame-assets.ts +0 -22
  72. package/src/hooks/index.ts +0 -1
  73. package/src/index.ts +0 -29
  74. package/src/lite.test.ts +0 -30
  75. package/src/lite.ts +0 -30
  76. package/src/vite-env.d.ts +0 -1
  77. package/tsconfig.json +0 -26
  78. package/tsconfig.node.json +0 -26
  79. package/vite.config.ts +0 -35
  80. package/vitest.config.ts +0 -24
package/dist/lite.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./remote-control-DVRXfCR2.js");exports.AX_UNAVAILABLE_ERROR=e.AX_UNAVAILABLE_ERROR;exports.RemoteControl=e.RemoteControl;exports.axElementAtPoint=e.axElementAtPoint;exports.axElementSelectorExpression=e.axElementSelectorExpression;exports.axElementSummary=e.axElementSummary;exports.axElementsEqual=e.axElementsEqual;exports.axSnapshotsEqual=e.axSnapshotsEqual;exports.clampAxFrameForScreen=e.clampAxFrameForScreen;exports.normalizeAndroidTree=e.normalizeAndroidTree;exports.normalizeIosTree=e.normalizeIosTree;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./remote-control-F3h8U5pg.js");exports.AX_UNAVAILABLE_ERROR=e.AX_UNAVAILABLE_ERROR;exports.RemoteControl=e.RemoteControl;exports.axElementAtPoint=e.axElementAtPoint;exports.axElementSelectorExpression=e.axElementSelectorExpression;exports.axElementSummary=e.axElementSummary;exports.axElementsEqual=e.axElementsEqual;exports.axSnapshotsEqual=e.axSnapshotsEqual;exports.clampAxFrameForScreen=e.clampAxFrameForScreen;exports.normalizeAndroidTree=e.normalizeAndroidTree;exports.normalizeIosTree=e.normalizeIosTree;
package/dist/lite.js CHANGED
@@ -1,4 +1,4 @@
1
- import { A as s, R as o, a as r, b as n, c as m, d as l, e as t, f as E, n as x, g as A } from "./remote-control-CQjSEVDF.mjs";
1
+ import { A as s, R as o, a as r, b as n, c as m, d as l, e as t, f as E, n as x, g as A } from "./remote-control-BAmNHDdv.mjs";
2
2
  export {
3
3
  s as AX_UNAVAILABLE_ERROR,
4
4
  o as RemoteControl,
@@ -30,8 +30,8 @@ function Ki(r, t, c) {
30
30
  function Pn(r, t, c, a) {
31
31
  if (!Number.isInteger(r) || r < 0 || r > 3 || !Number.isInteger(t) || t < 1 || t > 255 || !Number.isFinite(c) || !Number.isFinite(a) || c < 0 || c > 1 || a < 0 || a > 1)
32
32
  throw new RangeError("Invalid display touch coordinates");
33
- const E = new ArrayBuffer(12), m = new DataView(E);
34
- return m.setUint8(0, 19), m.setUint8(1, r), m.setUint8(2, t), m.setFloat32(4, c, !0), m.setFloat32(8, a, !0), E;
33
+ const E = new ArrayBuffer(12), p = new DataView(E);
34
+ return p.setUint8(0, 19), p.setUint8(1, r), p.setUint8(2, t), p.setFloat32(4, c, !0), p.setFloat32(8, a, !0), E;
35
35
  }
36
36
  class ki {
37
37
  constructor(t, c) {
@@ -340,25 +340,25 @@ const Pt = {
340
340
  NumpadEnter: s.KEYCODE_NUMPAD_ENTER,
341
341
  NumpadEqual: s.KEYCODE_NUMPAD_EQUALS
342
342
  };
343
- function Yt(r, t, c, a, E, m, C = 1, v = 0, b = 0) {
343
+ function Yt(r, t, c, a, E, p, C = 1, v = 0, b = 0) {
344
344
  const D = new ArrayBuffer(32), R = new DataView(D);
345
345
  let S = 0;
346
- return R.setUint8(S, Pt.INJECT_TOUCH_EVENT), S += 1, R.setUint8(S, r), S += 1, R.setBigInt64(S, BigInt(t), !0), S += 8, R.setInt32(S, Math.round(E), !0), S += 4, R.setInt32(S, Math.round(m), !0), S += 4, R.setUint16(S, c, !0), S += 2, R.setUint16(S, a, !0), S += 2, R.setInt16(S, Math.round(C * 65535), !0), S += 2, R.setInt32(S, v, !0), S += 4, R.setInt32(S, b, !0), D;
346
+ return R.setUint8(S, Pt.INJECT_TOUCH_EVENT), S += 1, R.setUint8(S, r), S += 1, R.setBigInt64(S, BigInt(t), !0), S += 8, R.setInt32(S, Math.round(E), !0), S += 4, R.setInt32(S, Math.round(p), !0), S += 4, R.setUint16(S, c, !0), S += 2, R.setUint16(S, a, !0), S += 2, R.setInt16(S, Math.round(C * 65535), !0), S += 2, R.setInt32(S, v, !0), S += 4, R.setInt32(S, b, !0), D;
347
347
  }
348
- function Un(r, t, c, a, E, m, C) {
348
+ function Un(r, t, c, a, E, p, C) {
349
349
  const v = new ArrayBuffer(24), b = new DataView(v);
350
350
  let D = 0;
351
- return b.setUint8(D, Pt.INJECT_TWO_FINGER_TOUCH_EVENT), D += 1, b.setUint8(D, r), D += 1, b.setInt32(D, Math.round(a), !0), D += 4, b.setInt32(D, Math.round(E), !0), D += 4, b.setInt32(D, Math.round(m), !0), D += 4, b.setInt32(D, Math.round(C), !0), D += 4, b.setUint16(D, t, !0), D += 2, b.setUint16(D, c, !0), D += 2, b.setUint16(D, 0, !0), v;
351
+ return b.setUint8(D, Pt.INJECT_TWO_FINGER_TOUCH_EVENT), D += 1, b.setUint8(D, r), D += 1, b.setInt32(D, Math.round(a), !0), D += 4, b.setInt32(D, Math.round(E), !0), D += 4, b.setInt32(D, Math.round(p), !0), D += 4, b.setInt32(D, Math.round(C), !0), D += 4, b.setUint16(D, t, !0), D += 2, b.setUint16(D, c, !0), D += 2, b.setUint16(D, 0, !0), v;
352
352
  }
353
353
  function Ln(r, t = !0) {
354
- const a = new TextEncoder().encode(r), E = new ArrayBuffer(14 + a.length), m = new DataView(E);
354
+ const a = new TextEncoder().encode(r), E = new ArrayBuffer(14 + a.length), p = new DataView(E);
355
355
  let C = 0;
356
- return m.setUint8(C, Pt.SET_CLIPBOARD), C += 1, m.setBigInt64(C, BigInt(0), !1), C += 8, m.setUint8(C, t ? 1 : 0), C += 1, m.setUint32(C, a.length, !1), C += 4, new Uint8Array(E, C).set(a), E;
356
+ return p.setUint8(C, Pt.SET_CLIPBOARD), C += 1, p.setBigInt64(C, BigInt(0), !1), C += 8, p.setUint8(C, t ? 1 : 0), C += 1, p.setUint32(C, a.length, !1), C += 4, new Uint8Array(E, C).set(a), E;
357
357
  }
358
358
  function pt(r, t, c = 0, a = 0) {
359
- const E = new ArrayBuffer(14), m = new DataView(E);
359
+ const E = new ArrayBuffer(14), p = new DataView(E);
360
360
  let C = 0;
361
- return m.setUint8(C, Pt.INJECT_KEYCODE), C += 1, m.setUint8(C, r), C += 1, m.setInt32(C, t, !0), C += 4, m.setInt32(C, c, !0), C += 4, m.setInt32(C, a, !0), E;
361
+ return p.setUint8(C, Pt.INJECT_KEYCODE), C += 1, p.setUint8(C, r), C += 1, p.setInt32(C, t, !0), C += 4, p.setInt32(C, c, !0), C += 4, p.setInt32(C, a, !0), E;
362
362
  }
363
363
  const Qt = "Accessibility unavailable on this device.", kt = 500, Wr = (r, t) => Math.abs(r.x - t.x) < 0.5 && Math.abs(r.y - t.y) < 0.5 && Math.abs(r.width - t.width) < 0.5 && Math.abs(r.height - t.height) < 0.5, Fn = (r) => Math.max(0, r.width) * Math.max(0, r.height), xn = (r) => {
364
364
  const t = r.find((c) => c.frame && c.frame.width > 0 && c.frame.height > 0);
@@ -375,31 +375,31 @@ const Qt = "Accessibility unavailable on this device.", kt = 500, Wr = (r, t) =>
375
375
  return t;
376
376
  };
377
377
  function $n(r) {
378
- const t = Array.isArray(r) ? r : [r], c = xn(t), a = [], E = (m, C) => {
378
+ const t = Array.isArray(r) ? r : [r], c = xn(t), a = [], E = (p, C) => {
379
379
  if (a.length >= kt) return;
380
- const v = m.frame;
380
+ const v = p.frame;
381
381
  if (v && v.width > 0 && v.height > 0 && !Wr(v, c)) {
382
- const D = m.role_description || m.role || "", R = (typeof m.AXLabel == "string" ? m.AXLabel : "") || (typeof m.title == "string" ? m.title : "") || "";
382
+ const D = p.role_description || p.role || "", R = (typeof p.AXLabel == "string" ? p.AXLabel : "") || (typeof p.title == "string" ? p.title : "") || "";
383
383
  a.push({
384
- id: typeof m.AXUniqueId == "string" && m.AXUniqueId.length > 0 ? m.AXUniqueId : C,
384
+ id: typeof p.AXUniqueId == "string" && p.AXUniqueId.length > 0 ? p.AXUniqueId : C,
385
385
  path: C,
386
386
  label: R,
387
- value: typeof m.AXValue == "string" ? m.AXValue : "",
387
+ value: typeof p.AXValue == "string" ? p.AXValue : "",
388
388
  role: D,
389
- type: typeof m.type == "string" ? m.type : "",
390
- enabled: m.enabled !== !1,
391
- focused: m.focused === !0,
389
+ type: typeof p.type == "string" ? p.type : "",
390
+ enabled: p.enabled !== !1,
391
+ focused: p.focused === !0,
392
392
  frame: { x: v.x, y: v.y, width: v.width, height: v.height },
393
- selectors: Wn(m),
394
- raw: Hn(m)
393
+ selectors: Wn(p),
394
+ raw: Hn(p)
395
395
  });
396
396
  }
397
- const b = Array.isArray(m.children) ? m.children : [];
397
+ const b = Array.isArray(p.children) ? p.children : [];
398
398
  for (let D = 0; D < b.length && a.length < kt; D++)
399
399
  E(b[D], `${C}.${D}`);
400
400
  };
401
- for (let m = 0; m < t.length && a.length < kt; m++)
402
- E(t[m], String(m));
401
+ for (let p = 0; p < t.length && a.length < kt; p++)
402
+ E(t[p], String(p));
403
403
  return {
404
404
  platform: "ios",
405
405
  screen: { width: c.width, height: c.height },
@@ -412,8 +412,8 @@ const Xn = (r) => {
412
412
  for (const a of r) {
413
413
  const E = a.parsedBounds;
414
414
  if (!E) continue;
415
- const m = E.right - E.left, C = E.bottom - E.top, v = Math.max(0, m) * Math.max(0, C);
416
- v > c && (c = v, t = { x: 0, y: 0, width: m, height: C });
415
+ const p = E.right - E.left, C = E.bottom - E.top, v = Math.max(0, p) * Math.max(0, C);
416
+ v > c && (c = v, t = { x: 0, y: 0, width: p, height: C });
417
417
  }
418
418
  return t;
419
419
  }, Bn = (r) => {
@@ -423,11 +423,11 @@ const Xn = (r) => {
423
423
  function qn(r) {
424
424
  const t = Xn(r), c = [];
425
425
  for (let a = 0; a < r.length && c.length < kt; a++) {
426
- const E = r[a], m = E.parsedBounds;
427
- if (!m) continue;
428
- const C = Math.max(0, m.right - m.left), v = Math.max(0, m.bottom - m.top);
426
+ const E = r[a], p = E.parsedBounds;
427
+ if (!p) continue;
428
+ const C = Math.max(0, p.right - p.left), v = Math.max(0, p.bottom - p.top);
429
429
  if (C <= 0 || v <= 0) continue;
430
- const b = { x: m.left, y: m.top, width: C, height: v };
430
+ const b = { x: p.left, y: p.top, width: C, height: v };
431
431
  if (Wr(b, { x: 0, y: 0, width: t.width, height: t.height })) continue;
432
432
  const D = E.contentDesc || E.text || "", R = E.className || "";
433
433
  c.push({
@@ -452,7 +452,7 @@ function qn(r) {
452
452
  };
453
453
  }
454
454
  function Vn(r, t) {
455
- const c = Math.max(0, r.x), a = Math.max(0, r.y), E = Math.min(t.width, r.x + r.width), m = Math.min(t.height, r.y + r.height), C = Math.max(0, E - c), v = Math.max(0, m - a);
455
+ const c = Math.max(0, r.x), a = Math.max(0, r.y), E = Math.min(t.width, r.x + r.width), p = Math.min(t.height, r.y + r.height), C = Math.max(0, E - c), v = Math.max(0, p - a);
456
456
  return C > 0 && v > 0 ? { x: c, y: a, width: C, height: v } : null;
457
457
  }
458
458
  function Hr(r, t) {
@@ -470,11 +470,11 @@ function $r(r, t) {
470
470
  }
471
471
  function Gn(r, t, c) {
472
472
  let a = null, E = 1 / 0;
473
- for (const m of r.elements) {
474
- const C = m.frame;
473
+ for (const p of r.elements) {
474
+ const C = p.frame;
475
475
  if (t < C.x || c < C.y || t > C.x + C.width || c > C.y + C.height) continue;
476
476
  const v = Fn(C);
477
- v < E && (E = v, a = m);
477
+ v < E && (E = v, a = p);
478
478
  }
479
479
  return a;
480
480
  }
@@ -613,7 +613,7 @@ class ri {
613
613
  const v = typeof E.message == "string" ? E.message : "getElementTree failed";
614
614
  return this.settleReject(c, new Error(v)), !0;
615
615
  }
616
- const m = t.payload, C = Array.isArray(m?.nodes) ? m.nodes : [];
616
+ const p = t.payload, C = Array.isArray(p?.nodes) ? p.nodes : [];
617
617
  try {
618
618
  const v = qn(C);
619
619
  this.settleResolve(c, v);
@@ -763,7 +763,7 @@ const ui = async (r) => {
763
763
  return !1;
764
764
  }
765
765
  }, li = er(
766
- function({ element: t, screen: c, highlighted: a, selected: E, selectable: m, onClick: C }) {
766
+ function({ element: t, screen: c, highlighted: a, selected: E, selectable: p, onClick: C }) {
767
767
  const v = Vn(t.frame, c);
768
768
  if (!v) return null;
769
769
  const b = Br(t);
@@ -780,7 +780,7 @@ const ui = async (r) => {
780
780
  "data-selected": E ? "true" : "false",
781
781
  "aria-label": b,
782
782
  onClick: (D) => {
783
- m && (D.preventDefault(), D.stopPropagation(), C(t, { x: D.clientX, y: D.clientY }));
783
+ p && (D.preventDefault(), D.stopPropagation(), C(t, { x: D.clientX, y: D.clientY }));
784
784
  },
785
785
  style: {
786
786
  left: `${v.x / c.width * 100}%`,
@@ -797,7 +797,7 @@ const ui = async (r) => {
797
797
  platform: c,
798
798
  anchor: a,
799
799
  cursorAnchored: E,
800
- showActions: m,
800
+ showActions: p,
801
801
  onTap: C
802
802
  }) {
803
803
  const [v, b] = V(null);
@@ -855,7 +855,7 @@ const ui = async (r) => {
855
855
  Math.round(t.frame.y)
856
856
  ] })
857
857
  ] }),
858
- m && /* @__PURE__ */ oe("div", { className: "rc-inspect-card-actions", children: [
858
+ p && /* @__PURE__ */ oe("div", { className: "rc-inspect-card-actions", children: [
859
859
  /* @__PURE__ */ k(
860
860
  "button",
861
861
  {
@@ -898,13 +898,13 @@ const ui = async (r) => {
898
898
  geometry: c,
899
899
  highlightedId: a,
900
900
  selectedId: E,
901
- mode: m,
901
+ mode: p,
902
902
  cursorPosition: C,
903
903
  frozenCursorPosition: v,
904
904
  onSelectChange: b,
905
905
  onTapElement: D
906
906
  }) {
907
- const R = m === "select", S = R ? a !== null && a !== E : a !== null, Z = R ? a ?? E : a, ge = Re(() => {
907
+ const R = p === "select", S = R ? a !== null && a !== E : a !== null, Z = R ? a ?? E : a, ge = Re(() => {
908
908
  const H = /* @__PURE__ */ new Map();
909
909
  if (!t) return H;
910
910
  for (const he of t.elements) H.set(he.id, he);
@@ -952,7 +952,7 @@ const ui = async (r) => {
952
952
  }
953
953
  )
954
954
  ] });
955
- }), gi = Rn(() => import("./duo-view-o1yxIzxu.mjs").then((r) => r.d)), F = (...r) => {
955
+ }), gi = Rn(() => import("./duo-view-BsdKpp8d.mjs").then((r) => r.d)), F = (...r) => {
956
956
  window.debugRemoteControl && console.log(...r);
957
957
  }, w = (...r) => {
958
958
  window.debugRemoteControl && console.warn(...r);
@@ -993,9 +993,9 @@ function wi(r) {
993
993
  if (!c)
994
994
  return w(`Unknown event.code: ${t}, key: ${r.key}`), null;
995
995
  let a = s.META_NONE;
996
- const E = t >= "KeyA" && t <= "KeyZ", m = r.getModifierState("CapsLock"), C = r.shiftKey;
996
+ const E = t >= "KeyA" && t <= "KeyZ", p = r.getModifierState("CapsLock"), C = r.shiftKey;
997
997
  let v = C;
998
- return E && (v = C !== m), v && (a |= s.META_SHIFT_ON), r.ctrlKey && (a |= s.META_CTRL_ON), r.altKey && (a |= s.META_ALT_ON), r.metaKey && (a |= s.META_META_ON), { keycode: c, metaState: a };
998
+ return E && (v = C !== p), v && (a |= s.META_SHIFT_ON), r.ctrlKey && (a |= s.META_CTRL_ON), r.altKey && (a |= s.META_ALT_ON), r.metaKey && (a |= s.META_META_ON), { keycode: c, metaState: a };
999
999
  }
1000
1000
  const Li = Nn(
1001
1001
  ({
@@ -1004,7 +1004,7 @@ const Li = Nn(
1004
1004
  token: c,
1005
1005
  sessionId: a,
1006
1006
  openUrl: E,
1007
- showFrame: m = !0,
1007
+ showFrame: p = !0,
1008
1008
  deviceModel: C,
1009
1009
  duoModelUrl: v,
1010
1010
  autoReconnect: b = !1,
@@ -1073,7 +1073,7 @@ const Li = Nn(
1073
1073
  }, ut = Z === !0 || Z === "hover-only", on = Z === "hover-only" ? "hover-only" : "select", se = Re(
1074
1074
  () => a || Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15),
1075
1075
  [a]
1076
- ), le = Re(() => Ci(t), [t]), Ve = Ti[le], lt = R?.[le], yr = le === "android" && zr ? ar ? lt?.tabletFrameLandscape : lt?.tabletFrame : ar ? lt?.frameLandscape : lt?.frame, vr = lt?.loadingLogo, wt = !ce && m && !!yr, Y = (e) => {
1076
+ ), le = Re(() => Ci(t), [t]), Ve = Ti[le], lt = R?.[le], yr = le === "android" && zr ? ar ? lt?.tabletFrameLandscape : lt?.tabletFrame : ar ? lt?.frameLandscape : lt?.frame, vr = lt?.loadingLogo, wt = !ce && p && !!yr, Y = (e) => {
1077
1077
  F(e);
1078
1078
  }, ae = (e) => {
1079
1079
  !P.current || P.current.readyState !== "open" || (P.current.send(e), z.current?.bumpActivity());
@@ -1082,11 +1082,11 @@ const Li = Nn(
1082
1082
  if (!i) return;
1083
1083
  const n = Je(i, e, o);
1084
1084
  if (!n) return;
1085
- const { videoX: l, videoY: u, videoWidth: f, videoHeight: p } = n, g = Yt(
1085
+ const { videoX: l, videoY: u, videoWidth: f, videoHeight: m } = n, g = Yt(
1086
1086
  U.ACTION_DOWN,
1087
1087
  Or,
1088
1088
  f,
1089
- p,
1089
+ m,
1090
1090
  l,
1091
1091
  u,
1092
1092
  1,
@@ -1098,7 +1098,7 @@ const Li = Nn(
1098
1098
  U.ACTION_UP,
1099
1099
  Or,
1100
1100
  f,
1101
- p,
1101
+ m,
1102
1102
  l,
1103
1103
  u,
1104
1104
  0,
@@ -1110,8 +1110,8 @@ const Li = Nn(
1110
1110
  }, cn = (e, o) => {
1111
1111
  const i = dt();
1112
1112
  if (!i || o.screen.width <= 0 || o.screen.height <= 0) return;
1113
- const n = e.frame.x + e.frame.width / 2, l = e.frame.y + e.frame.height / 2, u = n / o.screen.width * i.actualWidth, f = l / o.screen.height * i.actualHeight, p = i.videoRect.left + i.offsetX + u, g = i.videoRect.top + i.offsetY + f;
1114
- _r(p, g);
1113
+ const n = e.frame.x + e.frame.width / 2, l = e.frame.y + e.frame.height / 2, u = n / o.screen.width * i.actualWidth, f = l / o.screen.height * i.actualHeight, m = i.videoRect.left + i.offsetX + u, g = i.videoRect.top + i.offsetY + f;
1114
+ _r(m, g);
1115
1115
  }, At = -1, St = -2, Me = -3, Ge = (e, o, i, n, l, u) => {
1116
1116
  const f = Yt(
1117
1117
  e,
@@ -1136,26 +1136,26 @@ const Li = Nn(
1136
1136
  }, be = (e, o, i) => {
1137
1137
  if (!i) return;
1138
1138
  const { videoX: n, videoY: l, videoWidth: u, videoHeight: f } = i;
1139
- let p = null, g = null, h = 1;
1139
+ let m = null, g = null, h = 1;
1140
1140
  const M = U.BUTTON_PRIMARY;
1141
1141
  switch (o) {
1142
1142
  case "down":
1143
- e !== Me && st.current.end(), p = J.current.size === 0 ? U.ACTION_DOWN : U.ACTION_POINTER_DOWN, g = { x: n, y: l }, J.current.set(e, g), e === -1 && x.current?.focus();
1143
+ e !== Me && st.current.end(), m = J.current.size === 0 ? U.ACTION_DOWN : U.ACTION_POINTER_DOWN, g = { x: n, y: l }, J.current.set(e, g), e === -1 && x.current?.focus();
1144
1144
  break;
1145
1145
  case "move":
1146
- J.current.has(e) && (p = U.ACTION_MOVE, g = { x: n, y: l }, J.current.set(e, g));
1146
+ J.current.has(e) && (m = U.ACTION_MOVE, g = { x: n, y: l }, J.current.set(e, g));
1147
1147
  break;
1148
1148
  case "up":
1149
1149
  case "cancel":
1150
- J.current.has(e) && (g = J.current.get(e), J.current.delete(e), o === "cancel" ? p = U.ACTION_CANCEL : p = J.current.size === 0 ? U.ACTION_UP : U.ACTION_POINTER_UP);
1150
+ J.current.has(e) && (g = J.current.get(e), J.current.delete(e), o === "cancel" ? m = U.ACTION_CANCEL : m = J.current.size === 0 ? U.ACTION_UP : U.ACTION_POINTER_UP);
1151
1151
  break;
1152
1152
  }
1153
- if (p !== null && g !== null) {
1153
+ if (m !== null && g !== null) {
1154
1154
  F("[rc-touch][mouse->touch] sending", {
1155
1155
  pointerId: e,
1156
1156
  eventType: o,
1157
- action: p,
1158
- actionName: Kt(p),
1157
+ action: m,
1158
+ actionName: Kt(m),
1159
1159
  positionToSend: g,
1160
1160
  video: { width: u, height: f },
1161
1161
  altHeld: Ae.current,
@@ -1166,7 +1166,7 @@ const Li = Nn(
1166
1166
  }))
1167
1167
  });
1168
1168
  const _ = Yt(
1169
- p,
1169
+ m,
1170
1170
  e,
1171
1171
  u,
1172
1172
  f,
@@ -1178,7 +1178,7 @@ const Li = Nn(
1178
1178
  );
1179
1179
  _ && (F("[rc-touch][mouse->touch] buffer", {
1180
1180
  pointerId: e,
1181
- actionName: Kt(p),
1181
+ actionName: Kt(m),
1182
1182
  byteLength: _.byteLength
1183
1183
  }), ae(_));
1184
1184
  } else (o === "up" || o === "cancel") && J.current.delete(e);
@@ -1203,10 +1203,10 @@ const Li = Nn(
1203
1203
  if (!e || !o) return null;
1204
1204
  const i = e.videoWidth, n = e.videoHeight;
1205
1205
  if (!i || !n) return null;
1206
- const l = e.getBoundingClientRect(), u = o.getBoundingClientRect(), f = l.width, p = l.height, g = i / n, h = f / p;
1207
- let M = f, _ = p;
1208
- g > h ? _ = f / g : M = p * g;
1209
- const N = (f - M) / 2, $ = (p - _) / 2;
1206
+ const l = e.getBoundingClientRect(), u = o.getBoundingClientRect(), f = l.width, m = l.height, g = i / n, h = f / m;
1207
+ let M = f, _ = m;
1208
+ g > h ? _ = f / g : M = m * g;
1209
+ const N = (f - M) / 2, $ = (m - _) / 2;
1210
1210
  return {
1211
1211
  videoWidth: i,
1212
1212
  videoHeight: n,
@@ -1218,7 +1218,7 @@ const Li = Nn(
1218
1218
  offsetY: $
1219
1219
  };
1220
1220
  }, Je = (e, o, i) => {
1221
- const n = o - e.videoRect.left - e.offsetX, l = i - e.videoRect.top - e.offsetY, u = Math.max(0, Math.min(e.actualWidth, n)), f = Math.max(0, Math.min(e.actualHeight, l)), p = Math.max(
1221
+ const n = o - e.videoRect.left - e.offsetX, l = i - e.videoRect.top - e.offsetY, u = Math.max(0, Math.min(e.actualWidth, n)), f = Math.max(0, Math.min(e.actualHeight, l)), m = Math.max(
1222
1222
  0,
1223
1223
  Math.min(e.videoWidth, u / e.actualWidth * e.videoWidth)
1224
1224
  ), g = Math.max(
@@ -1226,25 +1226,25 @@ const Li = Nn(
1226
1226
  Math.min(e.videoHeight, f / e.actualHeight * e.videoHeight)
1227
1227
  );
1228
1228
  return {
1229
- videoX: p,
1229
+ videoX: m,
1230
1230
  videoY: g,
1231
1231
  videoWidth: e.videoWidth,
1232
1232
  videoHeight: e.videoHeight
1233
1233
  };
1234
1234
  }, sn = (e, o, i) => {
1235
- const n = o - e.videoRect.left - e.offsetX, l = i - e.videoRect.top - e.offsetY, u = Math.max(0, Math.min(e.actualWidth, n)), f = Math.max(0, Math.min(e.actualHeight, l)), p = Math.max(
1235
+ const n = o - e.videoRect.left - e.offsetX, l = i - e.videoRect.top - e.offsetY, u = Math.max(0, Math.min(e.actualWidth, n)), f = Math.max(0, Math.min(e.actualHeight, l)), m = Math.max(
1236
1236
  0,
1237
1237
  Math.min(e.videoWidth, u / e.actualWidth * e.videoWidth)
1238
1238
  ), g = Math.max(
1239
1239
  0,
1240
1240
  Math.min(e.videoHeight, f / e.actualHeight * e.videoHeight)
1241
- ), h = e.videoWidth - p, M = e.videoHeight - g, _ = e.videoRect.left + e.offsetX, N = e.videoRect.top + e.offsetY, $ = _ - e.containerRect.left + u, te = N - e.containerRect.top + f, G = _ - e.containerRect.left + (e.actualWidth - u), y = N - e.containerRect.top + (e.actualHeight - f);
1241
+ ), h = e.videoWidth - m, M = e.videoHeight - g, _ = e.videoRect.left + e.offsetX, N = e.videoRect.top + e.offsetY, $ = _ - e.containerRect.left + u, te = N - e.containerRect.top + f, G = _ - e.containerRect.left + (e.actualWidth - u), y = N - e.containerRect.top + (e.actualHeight - f);
1242
1242
  return {
1243
1243
  containerX: $,
1244
1244
  containerY: te,
1245
1245
  mirrorContainerX: G,
1246
1246
  mirrorContainerY: y,
1247
- videoX: p,
1247
+ videoX: m,
1248
1248
  videoY: g,
1249
1249
  mirrorVideoX: h,
1250
1250
  mirrorVideoY: M,
@@ -1252,26 +1252,26 @@ const Li = Nn(
1252
1252
  videoHeight: e.videoHeight
1253
1253
  };
1254
1254
  }, an = (e, o, i, n, l, u, f) => {
1255
- const p = Un(e, o, i, n, l, u, f);
1255
+ const m = Un(e, o, i, n, l, u, f);
1256
1256
  F("[rc-touch2] sendTwoFingerMessage (iOS)", {
1257
1257
  actionName: Kt(e),
1258
1258
  video: { width: o, height: i },
1259
1259
  p0: { x: n, y: l },
1260
1260
  p1: { x: u, y: f },
1261
- byteLength: p.byteLength
1262
- }), ae(p);
1263
- }, ze = (e, o, i, n, l, u, f, p, g) => {
1261
+ byteLength: m.byteLength
1262
+ }), ae(m);
1263
+ }, ze = (e, o, i, n, l, u, f, m, g) => {
1264
1264
  if (F("[rc-touch2] applyTwoFingerEvent", {
1265
1265
  platform: le,
1266
1266
  eventType: e,
1267
1267
  video: { width: o, height: i },
1268
- p0: { x: n, y: l, id: p },
1268
+ p0: { x: n, y: l, id: m },
1269
1269
  p1: { x: u, y: f, id: g }
1270
1270
  }), e === "down" && st.current.end(), le === "ios") {
1271
1271
  const h = e === "down" ? U.ACTION_DOWN : e === "move" ? U.ACTION_MOVE : U.ACTION_UP;
1272
1272
  an(h, o, i, n, l, u, f);
1273
1273
  } else
1274
- e === "down" ? (Ge(U.ACTION_DOWN, p, o, i, n, l), Ge(U.ACTION_POINTER_DOWN, g, o, i, u, f)) : e === "move" ? (Ge(U.ACTION_MOVE, p, o, i, n, l), Ge(U.ACTION_MOVE, g, o, i, u, f)) : (Ge(U.ACTION_POINTER_UP, g, o, i, u, f), Ge(U.ACTION_UP, p, o, i, n, l));
1274
+ e === "down" ? (Ge(U.ACTION_DOWN, m, o, i, n, l), Ge(U.ACTION_POINTER_DOWN, g, o, i, u, f)) : e === "move" ? (Ge(U.ACTION_MOVE, m, o, i, n, l), Ge(U.ACTION_MOVE, g, o, i, u, f)) : (Ge(U.ACTION_POINTER_UP, g, o, i, u, f), Ge(U.ACTION_UP, m, o, i, n, l));
1275
1275
  }, un = (e, o, i) => {
1276
1276
  if (!Ae.current) {
1277
1277
  Se !== null && _t(null);
@@ -1284,8 +1284,8 @@ const Li = Nn(
1284
1284
  if (!n || n.screen.width <= 0 || n.screen.height <= 0) return null;
1285
1285
  const l = o - e.videoRect.left - e.offsetX, u = i - e.videoRect.top - e.offsetY;
1286
1286
  if (l < 0 || u < 0 || l > e.actualWidth || u > e.actualHeight) return null;
1287
- const f = l / e.actualWidth * n.screen.width, p = u / e.actualHeight * n.screen.height;
1288
- return Gn(n, f, p);
1287
+ const f = l / e.actualWidth * n.screen.width, m = u / e.actualHeight * n.screen.height;
1288
+ return Gn(n, f, m);
1289
1289
  }, ve = (e) => {
1290
1290
  if (ce) return;
1291
1291
  e.preventDefault(), e.stopPropagation();
@@ -1318,7 +1318,7 @@ const Li = Nn(
1318
1318
  return;
1319
1319
  }
1320
1320
  if (n.length === 2) {
1321
- const f = n[0], p = n[1], g = Je(o, f.clientX, f.clientY), h = Je(o, p.clientX, p.clientY);
1321
+ const f = n[0], m = n[1], g = Je(o, f.clientX, f.clientY), h = Je(o, m.clientX, m.clientY);
1322
1322
  if (!g || !h) return;
1323
1323
  B.current ? B.current.source === "real-touch" && (B.current.finger0 = { x: g.videoX, y: g.videoY }, B.current.finger1 = { x: h.videoX, y: h.videoY }, ze(
1324
1324
  "move",
@@ -1336,7 +1336,7 @@ const Li = Nn(
1336
1336
  videoSize: { width: g.videoWidth, height: g.videoHeight },
1337
1337
  source: "real-touch",
1338
1338
  pointerId0: f.identifier,
1339
- pointerId1: p.identifier
1339
+ pointerId1: m.identifier
1340
1340
  }, ze(
1341
1341
  "down",
1342
1342
  g.videoWidth,
@@ -1346,7 +1346,7 @@ const Li = Nn(
1346
1346
  h.videoX,
1347
1347
  h.videoY,
1348
1348
  f.identifier,
1349
- p.identifier
1349
+ m.identifier
1350
1350
  ));
1351
1351
  } else if (n.length < 2 && B.current?.source === "real-touch") {
1352
1352
  const f = B.current;
@@ -1368,8 +1368,8 @@ const Li = Nn(
1368
1368
  {
1369
1369
  const f = l[0];
1370
1370
  if (f) {
1371
- const p = Je(o, f.clientX, f.clientY);
1372
- be(f.identifier, u, p);
1371
+ const m = Je(o, f.clientX, f.clientY);
1372
+ be(f.identifier, u, m);
1373
1373
  }
1374
1374
  }
1375
1375
  }
@@ -1413,11 +1413,11 @@ const Li = Nn(
1413
1413
  }
1414
1414
  }
1415
1415
  }, dn = (e, o) => {
1416
- const { videoX: i, videoY: n, videoWidth: l, videoHeight: u } = o, f = l - i, p = u - n;
1416
+ const { videoX: i, videoY: n, videoWidth: l, videoHeight: u } = o, f = l - i, m = u - n;
1417
1417
  if (e === "down") {
1418
1418
  B.current = {
1419
1419
  finger0: { x: i, y: n },
1420
- finger1: { x: f, y: p },
1420
+ finger1: { x: f, y: m },
1421
1421
  videoSize: { width: l, height: u },
1422
1422
  source: "alt-mouse",
1423
1423
  pointerId0: At,
@@ -1429,21 +1429,21 @@ const Li = Nn(
1429
1429
  i,
1430
1430
  n,
1431
1431
  f,
1432
- p,
1432
+ m,
1433
1433
  At,
1434
1434
  St
1435
1435
  );
1436
1436
  return;
1437
1437
  }
1438
1438
  if (e === "move") {
1439
- B.current?.source === "alt-mouse" && (B.current.finger0 = { x: i, y: n }, B.current.finger1 = { x: f, y: p }, ze(
1439
+ B.current?.source === "alt-mouse" && (B.current.finger0 = { x: i, y: n }, B.current.finger1 = { x: f, y: m }, ze(
1440
1440
  "move",
1441
1441
  l,
1442
1442
  u,
1443
1443
  i,
1444
1444
  n,
1445
1445
  f,
1446
- p,
1446
+ m,
1447
1447
  At,
1448
1448
  St
1449
1449
  ));
@@ -1482,7 +1482,7 @@ const Li = Nn(
1482
1482
  const u = Je(i, e.clientX, e.clientY);
1483
1483
  if (!u) return;
1484
1484
  e.preventDefault();
1485
- const f = (e.deltaMode === 1 ? 16 : e.deltaMode === 2 ? i.actualWidth : 1) * (i.videoWidth / i.actualWidth), p = (e.deltaMode === 1 ? 16 : e.deltaMode === 2 ? i.actualHeight : 1) * (i.videoHeight / i.actualHeight), g = -e.deltaX * f, h = -e.deltaY * p, M = (y) => {
1485
+ const f = (e.deltaMode === 1 ? 16 : e.deltaMode === 2 ? i.actualWidth : 1) * (i.videoWidth / i.actualWidth), m = (e.deltaMode === 1 ? 16 : e.deltaMode === 2 ? i.actualHeight : 1) * (i.videoHeight / i.actualHeight), g = -e.deltaX * f, h = -e.deltaY * m, M = (y) => {
1486
1486
  window.clearTimeout(y.endTimer), y.endTimer = window.setTimeout(Dr, fn);
1487
1487
  };
1488
1488
  if (g === 0 && h === 0) {
@@ -1638,10 +1638,10 @@ const Li = Nn(
1638
1638
  const o = `ui-mic-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
1639
1639
  xe.current = o, e.send(JSON.stringify({ type: "microphoneStart", id: o }));
1640
1640
  }, zt = () => Ar(() => gn()), gn = async () => {
1641
- const e = Ot.current, o = () => e === Ot.current && Jt(), i = (p) => {
1641
+ const e = Ot.current, o = () => e === Ot.current && Jt(), i = (m) => {
1642
1642
  L("onMicrophoneStateChange", it.current, {
1643
1643
  active: !1,
1644
- error: p
1644
+ error: m
1645
1645
  });
1646
1646
  };
1647
1647
  if (!o()) return;
@@ -1656,8 +1656,8 @@ const Li = Nn(
1656
1656
  let u = null;
1657
1657
  try {
1658
1658
  u = await navigator.mediaDevices.getUserMedia({ audio: !0, video: !1 });
1659
- } catch (p) {
1660
- console.warn("[RemoteControl] microphone getUserMedia denied/failed:", p);
1659
+ } catch (m) {
1660
+ console.warn("[RemoteControl] microphone getUserMedia denied/failed:", m);
1661
1661
  }
1662
1662
  if (!o()) {
1663
1663
  u && j(u);
@@ -1674,15 +1674,15 @@ const Li = Nn(
1674
1674
  }
1675
1675
  try {
1676
1676
  await l.replaceTrack(f);
1677
- } catch (p) {
1678
- w("replaceTrack(audioTrack) failed:", p), j(u), i("Failed to attach the microphone track to the connection");
1677
+ } catch (m) {
1678
+ w("replaceTrack(audioTrack) failed:", m), j(u), i("Failed to attach the microphone track to the connection");
1679
1679
  return;
1680
1680
  }
1681
1681
  if (!o()) {
1682
1682
  try {
1683
1683
  await l.replaceTrack(null);
1684
- } catch (p) {
1685
- w("replaceTrack(null) on stale mic attach failed:", p);
1684
+ } catch (m) {
1685
+ w("replaceTrack(null) on stale mic attach failed:", m);
1686
1686
  }
1687
1687
  j(u);
1688
1688
  return;
@@ -1748,12 +1748,12 @@ const Li = Nn(
1748
1748
  N && (l = N.mimeType);
1749
1749
  }
1750
1750
  if (!n) return;
1751
- const f = n.timestamp ?? Date.now(), p = vt.current;
1751
+ const f = n.timestamp ?? Date.now(), m = vt.current;
1752
1752
  let g, h, M;
1753
- if (p && f > p.timestamp) {
1754
- const N = (f - p.timestamp) / 1e3;
1755
- if (typeof n.framesEncoded == "number" && typeof p.framesEncoded == "number" && (g = Math.max(0, (n.framesEncoded - p.framesEncoded) / N)), typeof n.bytesSent == "number" && typeof p.bytesSent == "number" && (h = Math.max(0, (n.bytesSent - p.bytesSent) * 8 / N)), typeof n.packetsSent == "number" && typeof p.packetsSent == "number" && u && typeof u.packetsLost == "number" && typeof p.packetsLost == "number") {
1756
- const $ = n.packetsSent - p.packetsSent, te = u.packetsLost - p.packetsLost;
1753
+ if (m && f > m.timestamp) {
1754
+ const N = (f - m.timestamp) / 1e3;
1755
+ if (typeof n.framesEncoded == "number" && typeof m.framesEncoded == "number" && (g = Math.max(0, (n.framesEncoded - m.framesEncoded) / N)), typeof n.bytesSent == "number" && typeof m.bytesSent == "number" && (h = Math.max(0, (n.bytesSent - m.bytesSent) * 8 / N)), typeof n.packetsSent == "number" && typeof m.packetsSent == "number" && u && typeof u.packetsLost == "number" && typeof m.packetsLost == "number") {
1756
+ const $ = n.packetsSent - m.packetsSent, te = u.packetsLost - m.packetsLost;
1757
1757
  $ > 0 && (M = Math.max(0, Math.min(100, te / $ * 100)));
1758
1758
  }
1759
1759
  }
@@ -1799,9 +1799,9 @@ const Li = Nn(
1799
1799
  return;
1800
1800
  }
1801
1801
  L("onCameraDemandChange", me.current, !0);
1802
- const f = ee.current, p = f?.getVideoTracks()[0], g = De.current;
1803
- if (p?.readyState === "live" && g && !ci(g, e)) {
1804
- De.current = e, Mr(o, p), br();
1802
+ const f = ee.current, m = f?.getVideoTracks()[0], g = De.current;
1803
+ if (m?.readyState === "live" && g && !ci(g, e)) {
1804
+ De.current = e, Mr(o, m), br();
1805
1805
  return;
1806
1806
  }
1807
1807
  if (f) {
@@ -2002,11 +2002,11 @@ const Li = Nn(
2002
2002
  }), {
2003
2003
  rtcConfiguration: u,
2004
2004
  cameraSupported: f,
2005
- foldSupported: p
2005
+ foldSupported: m
2006
2006
  } = await l;
2007
2007
  if (!i() || T.current !== n)
2008
2008
  return;
2009
- const g = C === "iphone-duo" || p;
2009
+ const g = C === "iphone-duo" || m;
2010
2010
  rr(g);
2011
2011
  const h = new RTCPeerConnection(u);
2012
2012
  W.current = h, h.addTransceiver("audio", { direction: "recvonly" });
@@ -2362,15 +2362,15 @@ const Li = Nn(
2362
2362
  ur({}), Ir();
2363
2363
  return;
2364
2364
  }
2365
- const f = o.clientWidth, p = o.clientHeight;
2366
- if (f === 0 || p === 0) return;
2365
+ const f = o.clientWidth, m = o.clientHeight;
2366
+ if (f === 0 || m === 0) return;
2367
2367
  const g = e.videoWidth > e.videoHeight;
2368
2368
  Jr(g), jr(
2369
2369
  le === "android" && Di(e.videoWidth, e.videoHeight)
2370
2370
  );
2371
2371
  const h = g ? Ve.videoPosition.landscape : Ve.videoPosition.portrait;
2372
2372
  let M = {};
2373
- h.heightMultiplier ? (M.height = `${p * h.heightMultiplier}px`, M.width = "auto") : h.widthMultiplier && (M.width = `${f * h.widthMultiplier}px`, M.height = "auto"), M.borderRadius = `${g ? p * Ve.videoBorderRadiusMultiplier : f * Ve.videoBorderRadiusMultiplier}px`, ur(M), Ir();
2373
+ h.heightMultiplier ? (M.height = `${m * h.heightMultiplier}px`, M.width = "auto") : h.widthMultiplier && (M.width = `${f * h.widthMultiplier}px`, M.height = "auto"), M.borderRadius = `${g ? m * Ve.videoBorderRadiusMultiplier : f * Ve.videoBorderRadiusMultiplier}px`, ur(M), Ir();
2374
2374
  }, l = new ResizeObserver(() => {
2375
2375
  n();
2376
2376
  });
@@ -2597,6 +2597,7 @@ const Li = Nn(
2597
2597
  ce && nr && /* @__PURE__ */ k(Yn, { fallback: /* @__PURE__ */ k("div", { children: "Loading iPhone Duo…" }), children: /* @__PURE__ */ k(
2598
2598
  gi,
2599
2599
  {
2600
+ showFrame: p,
2600
2601
  modelUrl: v,
2601
2602
  outer: x.current,
2602
2603
  inner: et.current,