@contember/echo 0.0.33-beta.5 → 0.0.33-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/echo.es.js CHANGED
@@ -1,4 +1,4 @@
1
- import { sharedConfig as L, createRoot as Ye, createRenderEffect as b, untrack as Ke, getOwner as Le, createEffect as H, runWithOwner as dt, createMemo as k, createSignal as T, onCleanup as te, $PROXY as Y, $TRACK as Ne, getListener as Pe, batch as ut, onMount as ke, createContext as ht, createComponent as g, useContext as gt, For as B, Show as D, mergeProps as ie, Switch as ft, Match as ne } from "solid-js";
1
+ import { sharedConfig as L, createRoot as Ye, createRenderEffect as b, untrack as Ke, getOwner as Le, createEffect as H, runWithOwner as dt, createMemo as k, createSignal as T, onCleanup as te, $PROXY as Y, $TRACK as Ne, getListener as Pe, batch as ut, onMount as ke, createContext as ht, createComponent as g, useContext as gt, For as B, Show as F, mergeProps as ie, Switch as ft, Match as ne } from "solid-js";
2
2
  import mt from "html2canvas-pro";
3
3
  const vt = [
4
4
  "allowfullscreen",
@@ -189,7 +189,7 @@ function Et(e, n, t = {}) {
189
189
  }
190
190
  return t;
191
191
  }
192
- function F(e, n, t) {
192
+ function O(e, n, t) {
193
193
  if (!n) return t ? d(e, "style") : n;
194
194
  const r = e.style;
195
195
  if (typeof n == "string") return r.cssText = n;
@@ -241,7 +241,7 @@ function qe(e, n, t) {
241
241
  }
242
242
  function Re(e, n, t, r, a, o, i) {
243
243
  let l, s, c, u, h;
244
- if (n === "style") return F(e, t, r);
244
+ if (n === "style") return O(e, t, r);
245
245
  if (n === "classList") return Et(e, t, r);
246
246
  if (t === r) return r;
247
247
  if (n === "ref")
@@ -735,7 +735,7 @@ const V = {
735
735
  const n = e.replace("#", ""), t = Number.parseInt(n.slice(0, 2), 16) / 255, r = Number.parseInt(n.slice(2, 2), 16) / 255, a = Number.parseInt(n.slice(4, 2), 16) / 255;
736
736
  return 0.2126 * t + 0.7152 * r + 0.0722 * a;
737
737
  }, Ut = (e) => _t(e) < 0.5 ? "#FFFFFF" : "#000000";
738
- let j = [], M = null, Q = null, ee = null;
738
+ let j = [], A = null, Q = null, ee = null;
739
739
  const $e = (e, n) => (...t) => {
740
740
  const r = (o) => {
741
741
  if (typeof o == "string") return o;
@@ -760,7 +760,7 @@ const $e = (e, n) => (...t) => {
760
760
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
761
761
  }), j.length > 1e3 && (j = j.slice(-1e3)), n.apply(console, t);
762
762
  }, Ht = () => {
763
- M || (M = {
763
+ A || (A = {
764
764
  log: console.log,
765
765
  warn: console.warn,
766
766
  error: console.error
@@ -779,7 +779,7 @@ Location: ${n}:${t}:${r}`,
779
779
  message: `Unhandled Promise Rejection: ${(n == null ? void 0 : n.stack) || (n == null ? void 0 : n.message) || n}`,
780
780
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
781
781
  }), ee && ee(e);
782
- }, console.log = $e("log", M.log), console.warn = $e("warn", M.warn), console.error = $e("error", M.error), window.addEventListener("error", (e) => {
782
+ }, console.log = $e("log", A.log), console.warn = $e("warn", A.warn), console.error = $e("error", A.error), window.addEventListener("error", (e) => {
783
783
  const { message: n, filename: t, lineno: r, colno: a, error: o } = e, i = (o == null ? void 0 : o.stack) || (o == null ? void 0 : o.message) || n;
784
784
  j.push({
785
785
  type: "error",
@@ -789,7 +789,7 @@ Location: ${t}:${r}:${a}`,
789
789
  });
790
790
  }));
791
791
  }, Yt = () => {
792
- M && (console.log = M.log, console.warn = M.warn, console.error = M.error, M = null), Q && (window.onerror = Q, Q = null), ee && (window.onunhandledrejection = ee, ee = null), window.removeEventListener("error", () => {
792
+ A && (console.log = A.log, console.warn = A.warn, console.error = A.error, A = null), Q && (window.onerror = Q, Q = null), ee && (window.onunhandledrejection = ee, ee = null), window.removeEventListener("error", () => {
793
793
  }), j = [];
794
794
  }, Kt = () => [...j], Gt = () => {
795
795
  var e;
@@ -854,7 +854,7 @@ const re = /* @__PURE__ */ new WeakMap(), Jt = (e) => {
854
854
  });
855
855
  }, Qt = () => {
856
856
  xe && (window.EventTarget.prototype.addEventListener = be, window.EventTarget.prototype.removeEventListener = J, xe = !1, ae = null);
857
- }, A = (e) => {
857
+ }, D = (e) => {
858
858
  const { event: n, callback: t, onMount: r, onCleanup: a } = e;
859
859
  ke(() => {
860
860
  r == null || r(), window.addEventListener(n, t);
@@ -1222,7 +1222,7 @@ const re = /* @__PURE__ */ new WeakMap(), Jt = (e) => {
1222
1222
  }));
1223
1223
  });
1224
1224
  };
1225
- return A({
1225
+ return D({
1226
1226
  event: "resize",
1227
1227
  callback: r,
1228
1228
  onMount: r
@@ -1241,7 +1241,7 @@ const re = /* @__PURE__ */ new WeakMap(), Jt = (e) => {
1241
1241
  const r = Te();
1242
1242
  r !== n && (n = r, e(r));
1243
1243
  };
1244
- A({ event: "popstate", callback: t }), A({ event: "pushstate", callback: t }), A({ event: "replacestate", callback: t }), Ae({
1244
+ D({ event: "popstate", callback: t }), D({ event: "pushstate", callback: t }), D({ event: "replacestate", callback: t }), Ae({
1245
1245
  target: document.documentElement,
1246
1246
  options: {
1247
1247
  childList: !0,
@@ -1314,7 +1314,7 @@ const pn = (e) => (() => {
1314
1314
  var n = yn();
1315
1315
  return b((t) => {
1316
1316
  var r = e.size ?? 24, a = e.size ?? 24, o = e.fill ?? "none", i = e.stroke ?? "currentColor", l = e.strokeWidth ?? 2, s = e.class, c = e.style;
1317
- return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1317
+ return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = O(n, c, t.s), t;
1318
1318
  }, {
1319
1319
  e: void 0,
1320
1320
  t: void 0,
@@ -1330,7 +1330,7 @@ const kn = (e) => (() => {
1330
1330
  var n = xn(), t = n.firstChild;
1331
1331
  return b((r) => {
1332
1332
  var a = e.size ?? 24, o = e.size ?? 24, i = e.class, l = e.style, s = e.fill ?? "currentColor";
1333
- return a !== r.e && d(n, "width", r.e = a), o !== r.t && d(n, "height", r.t = o), i !== r.a && d(n, "class", r.a = i), r.o = F(n, l, r.o), s !== r.i && d(t, "fill", r.i = s), r;
1333
+ return a !== r.e && d(n, "width", r.e = a), o !== r.t && d(n, "height", r.t = o), i !== r.a && d(n, "class", r.a = i), r.o = O(n, l, r.o), s !== r.i && d(t, "fill", r.i = s), r;
1334
1334
  }, {
1335
1335
  e: void 0,
1336
1336
  t: void 0,
@@ -1344,7 +1344,7 @@ const Cn = (e) => (() => {
1344
1344
  var n = Sn();
1345
1345
  return b((t) => {
1346
1346
  var r = e.size ?? 24, a = e.size ?? 24, o = e.fill ?? "none", i = e.stroke ?? "currentColor", l = e.strokeWidth ?? 2, s = e.class, c = e.style;
1347
- return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1347
+ return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = O(n, c, t.s), t;
1348
1348
  }, {
1349
1349
  e: void 0,
1350
1350
  t: void 0,
@@ -1360,7 +1360,7 @@ const En = (e) => (() => {
1360
1360
  var n = $n();
1361
1361
  return b((t) => {
1362
1362
  var r = e.size ?? 24, a = e.size ?? 24, o = e.fill ?? "none", i = e.stroke ?? "currentColor", l = e.strokeWidth ?? 2, s = e.class, c = e.style;
1363
- return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1363
+ return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = O(n, c, t.s), t;
1364
1364
  }, {
1365
1365
  e: void 0,
1366
1366
  t: void 0,
@@ -1376,7 +1376,7 @@ const lt = (e) => (() => {
1376
1376
  var n = Pn();
1377
1377
  return b((t) => {
1378
1378
  var r = e.size ?? 24, a = e.size ?? 24, o = e.fill ?? "none", i = e.stroke ?? "currentColor", l = e.strokeWidth ?? 2, s = e.class, c = e.style;
1379
- return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1379
+ return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = O(n, c, t.s), t;
1380
1380
  }, {
1381
1381
  e: void 0,
1382
1382
  t: void 0,
@@ -1392,7 +1392,7 @@ const Tn = (e) => (() => {
1392
1392
  var n = zn();
1393
1393
  return b((t) => {
1394
1394
  var r = e.size ?? 24, a = e.size ?? 24, o = e.fill ?? "none", i = e.stroke ?? "currentColor", l = e.strokeWidth ?? 2, s = e.class, c = e.style;
1395
- return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1395
+ return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = O(n, c, t.s), t;
1396
1396
  }, {
1397
1397
  e: void 0,
1398
1398
  t: void 0,
@@ -1408,7 +1408,7 @@ const On = (e) => (() => {
1408
1408
  var n = In();
1409
1409
  return b((t) => {
1410
1410
  var r = e.size ?? 24, a = e.size ?? 24, o = e.fill ?? "none", i = e.stroke ?? "currentColor", l = e.strokeWidth ?? 2, s = e.class, c = e.style;
1411
- return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1411
+ return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = O(n, c, t.s), t;
1412
1412
  }, {
1413
1413
  e: void 0,
1414
1414
  t: void 0,
@@ -1424,7 +1424,7 @@ const Se = (e) => (() => {
1424
1424
  var n = Mn();
1425
1425
  return b((t) => {
1426
1426
  var r = e.size ?? 24, a = e.size ?? 24, o = e.fill ?? "none", i = e.stroke ?? "currentColor", l = e.strokeWidth ?? 2, s = e.class, c = e.style;
1427
- return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1427
+ return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = O(n, c, t.s), t;
1428
1428
  }, {
1429
1429
  e: void 0,
1430
1430
  t: void 0,
@@ -1477,7 +1477,7 @@ I(["click"]);
1477
1477
  var Nn = /* @__PURE__ */ w("<div class=echo-drawing-tooltip data-hide-when-drawing=true>");
1478
1478
  const jn = () => {
1479
1479
  const e = $(), n = k(() => e.drawing.state.showTooltip && e.drawing.state.mousePosition.y && e.drawing.state.mousePosition.x && e.widget.state.isOpen && !Gt());
1480
- return g(D, {
1480
+ return g(F, {
1481
1481
  get when() {
1482
1482
  return n();
1483
1483
  },
@@ -1510,7 +1510,7 @@ const Vn = (e) => (() => {
1510
1510
  var n = Rn();
1511
1511
  return b((t) => {
1512
1512
  var r = e.size ?? 24, a = e.size ?? 24, o = e.fill ?? "none", i = e.stroke ?? "currentColor", l = e.strokeWidth ?? 2, s = e.class, c = e.style;
1513
- return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1513
+ return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = O(n, c, t.s), t;
1514
1514
  }, {
1515
1515
  e: void 0,
1516
1516
  t: void 0,
@@ -1542,10 +1542,10 @@ const Un = () => {
1542
1542
  }, c = () => {
1543
1543
  o(window.location.pathname);
1544
1544
  };
1545
- A({
1545
+ D({
1546
1546
  event: "echo-storage-change",
1547
1547
  callback: s
1548
- }), A({
1548
+ }), D({
1549
1549
  event: "popstate",
1550
1550
  callback: c
1551
1551
  }), Ae({
@@ -1557,10 +1557,10 @@ const Un = () => {
1557
1557
  callback: () => {
1558
1558
  o(window.location.pathname);
1559
1559
  }
1560
- }), A({
1560
+ }), D({
1561
1561
  event: "keydown",
1562
1562
  callback: i
1563
- }), A({
1563
+ }), D({
1564
1564
  event: "click",
1565
1565
  callback: l
1566
1566
  });
@@ -1580,7 +1580,7 @@ const Un = () => {
1580
1580
  const y = m.split("/");
1581
1581
  return y.length <= 4 ? m : `/${y[1]}/.../${y[y.length - 1]}`;
1582
1582
  };
1583
- return g(D, {
1583
+ return g(F, {
1584
1584
  get when() {
1585
1585
  return e.widget.state.isStoredFeedbackOpen;
1586
1586
  },
@@ -1608,8 +1608,8 @@ const Un = () => {
1608
1608
  return (() => {
1609
1609
  var P = _n(), z = P.firstChild, x = z.firstChild, _ = x.nextSibling, q = z.nextSibling;
1610
1610
  return v(x, () => f(C.path)), v(_, () => C.state.feedback.message), v(q, (() => {
1611
- var O = k(() => !p());
1612
- return () => O() && g(W, {
1611
+ var M = k(() => !p());
1612
+ return () => M() && g(W, {
1613
1613
  class: "echo-stored-feedback-link",
1614
1614
  variant: "secondary",
1615
1615
  size: "sm",
@@ -1624,16 +1624,16 @@ const Un = () => {
1624
1624
  size: "sm",
1625
1625
  onClick: () => h(C.path),
1626
1626
  children: "Delete"
1627
- }), null), b((O) => {
1627
+ }), null), b((M) => {
1628
1628
  var De = `echo-stored-feedback-item ${p() ? "echo-stored-feedback-item-current" : ""}`, Fe = C.path;
1629
- return De !== O.e && Ge(P, O.e = De), Fe !== O.t && d(x, "title", O.t = Fe), O;
1629
+ return De !== M.e && Ge(P, M.e = De), Fe !== M.t && d(x, "title", M.t = Fe), M;
1630
1630
  }, {
1631
1631
  e: void 0,
1632
1632
  t: void 0
1633
1633
  }), P;
1634
1634
  })();
1635
1635
  }
1636
- }), null), v(E, g(D, {
1636
+ }), null), v(E, g(F, {
1637
1637
  get when() {
1638
1638
  return t().length === 0;
1639
1639
  },
@@ -1760,7 +1760,7 @@ const Zn = () => {
1760
1760
  x: window.scrollX,
1761
1761
  y: window.scrollY
1762
1762
  });
1763
- A({
1763
+ D({
1764
1764
  event: "scroll",
1765
1765
  callback: () => {
1766
1766
  r({
@@ -1851,7 +1851,7 @@ I(["click", "keydown"]);
1851
1851
  var tr = /* @__PURE__ */ w("<svg><rect class=echo-shape fill=transparent vector-effect=non-scaling-stroke role=img></svg>", !1, !0), nr = /* @__PURE__ */ w("<svg><path class=echo-shape fill=none vector-effect=non-scaling-stroke stroke-linecap=round role=img></svg>", !1, !0);
1852
1852
  const He = (e) => {
1853
1853
  const n = k(() => e.id === e.selectedShapeId);
1854
- return [g(D, {
1854
+ return [g(F, {
1855
1855
  get when() {
1856
1856
  return e.type === "rectangle";
1857
1857
  },
@@ -1862,7 +1862,7 @@ const He = (e) => {
1862
1862
  }
1863
1863
  }));
1864
1864
  }
1865
- }), g(D, {
1865
+ }), g(F, {
1866
1866
  get when() {
1867
1867
  return e.type === "path";
1868
1868
  },
@@ -1876,7 +1876,7 @@ const He = (e) => {
1876
1876
  })];
1877
1877
  }, rr = (e) => {
1878
1878
  const n = k(() => it(e.points));
1879
- return g(D, {
1879
+ return g(F, {
1880
1880
  get when() {
1881
1881
  return n();
1882
1882
  },
@@ -1910,7 +1910,7 @@ const He = (e) => {
1910
1910
  });
1911
1911
  }, or = (e) => {
1912
1912
  const n = k(() => Xt(e.points));
1913
- return g(D, {
1913
+ return g(F, {
1914
1914
  get when() {
1915
1915
  return n();
1916
1916
  },
@@ -2148,7 +2148,7 @@ const xr = (e) => {
2148
2148
  }, c = () => {
2149
2149
  r(!t());
2150
2150
  };
2151
- return A({
2151
+ return D({
2152
2152
  event: "mousedown",
2153
2153
  callback: (h) => {
2154
2154
  if (!t() || !a) return;
@@ -2170,7 +2170,7 @@ const xr = (e) => {
2170
2170
  typeof S == "function" ? R(S, f) : o = f, v(m, () => {
2171
2171
  var p;
2172
2172
  return ((p = l()) == null ? void 0 : p.label) || e.config.placeholder;
2173
- }), v(h, g(D, {
2173
+ }), v(h, g(F, {
2174
2174
  get when() {
2175
2175
  return t();
2176
2176
  },
@@ -2195,8 +2195,8 @@ const xr = (e) => {
2195
2195
  }), y);
2196
2196
  var C = i;
2197
2197
  return typeof C == "function" ? R(C, y) : i = y, b((p) => {
2198
- var P = t(), z = !e.value, x = e.config.required, _ = t(), q = e.config.required, O = e.config.required;
2199
- return P !== p.e && d(f, "data-open", p.e = P), z !== p.t && d(f, "data-placeholder", p.t = z), x !== p.a && d(f, "data-required", p.a = x), _ !== p.o && d(f, "aria-expanded", p.o = _), q !== p.i && d(f, "aria-required", p.i = q), O !== p.n && (y.required = p.n = O), p;
2198
+ var P = t(), z = !e.value, x = e.config.required, _ = t(), q = e.config.required, M = e.config.required;
2199
+ return P !== p.e && d(f, "data-open", p.e = P), z !== p.t && d(f, "data-placeholder", p.t = z), x !== p.a && d(f, "data-required", p.a = x), _ !== p.o && d(f, "aria-expanded", p.o = _), q !== p.i && d(f, "aria-required", p.i = q), M !== p.n && (y.required = p.n = M), p;
2200
2200
  }, {
2201
2201
  e: void 0,
2202
2202
  t: void 0,
@@ -2236,7 +2236,7 @@ const Sr = (e) => {
2236
2236
  };
2237
2237
  I(["input"]);
2238
2238
  var Cr = /* @__PURE__ */ w("<div class=echo-input-error>Invalid input type"), $r = /* @__PURE__ */ w("<div class=echo-input-error>Unsupported input type: ");
2239
- const Er = (e) => g(D, {
2239
+ const Er = (e) => g(F, {
2240
2240
  get when() {
2241
2241
  return e.config.type;
2242
2242
  },
@@ -2455,7 +2455,7 @@ const Dr = () => {
2455
2455
  onChange: (h) => e.feedback.setState({
2456
2456
  message: h
2457
2457
  })
2458
- }), null), v(o, g(D, {
2458
+ }), null), v(o, g(F, {
2459
2459
  get when() {
2460
2460
  var h;
2461
2461
  return (h = e.widget.state.customInputs) == null ? void 0 : h.length;
@@ -2548,7 +2548,24 @@ const qr = (e) => {
2548
2548
  const e = $();
2549
2549
  return [(() => {
2550
2550
  var n = Lr();
2551
- return v(n, g(Kn, {}), null), v(n, g(er, {}), null), v(n, g(Xn, {}), null), b(() => d(n, "data-hidden", e.widget.state.isOpen)), n;
2551
+ return v(n, g(Kn, {}), null), v(n, g(er, {}), null), v(n, g(Xn, {}), null), b((t) => {
2552
+ var r = {
2553
+ ...e.widget.state.position.includes("top") ? {
2554
+ top: "var(--spacing-xl)"
2555
+ } : {
2556
+ bottom: "var(--spacing-xl)"
2557
+ },
2558
+ ...e.widget.state.position.includes("left") ? {
2559
+ left: "var(--spacing-xl)"
2560
+ } : {
2561
+ right: "var(--spacing-xl)"
2562
+ }
2563
+ }, a = e.widget.state.isOpen;
2564
+ return t.e = O(n, r, t.e), a !== t.t && d(n, "data-hidden", t.t = a), t;
2565
+ }, {
2566
+ e: void 0,
2567
+ t: void 0
2568
+ }), n;
2552
2569
  })(), g(Wr, {
2553
2570
  get children() {
2554
2571
  return [g(Dr, {}), g(Ln, {}), g(ir, {})];
package/dist/echo.umd.js CHANGED
@@ -1,8 +1,8 @@
1
- (function(A,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("solid-js"),require("html2canvas-pro")):typeof define=="function"&&define.amd?define(["exports","solid-js","html2canvas-pro"],c):(A=typeof globalThis<"u"?globalThis:A||self,c(A.Echo={},A.Solid,A["html2canvas-pro"]))})(this,function(A,c,Xe){"use strict";const Ke=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","hidden","indeterminate","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected"],Ge=new Set(["className","value","readOnly","formNoValidate","isMap","noModule","playsInline",...Ke]),Ze=new Set(["innerHTML","textContent","innerText","children"]),Qe=Object.assign(Object.create(null),{className:"class",htmlFor:"for"}),Je=Object.assign(Object.create(null),{class:"className",formnovalidate:{$:"formNoValidate",BUTTON:1,INPUT:1},ismap:{$:"isMap",IMG:1},nomodule:{$:"noModule",SCRIPT:1},playsinline:{$:"playsInline",VIDEO:1},readonly:{$:"readOnly",INPUT:1,TEXTAREA:1}});function et(e,n){const t=Je[e];return typeof t=="object"?t[n]?t.$:void 0:t}const tt=new Set(["beforeinput","click","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"]);function nt(e,n,t){let r=t.length,o=n.length,a=r,i=0,l=0,s=n[o-1].nextSibling,d=null;for(;i<o||l<a;){if(n[i]===t[l]){i++,l++;continue}for(;n[o-1]===t[a-1];)o--,a--;if(o===i){const h=a<r?l?t[l-1].nextSibling:t[a-l]:s;for(;l<a;)e.insertBefore(t[l++],h)}else if(a===l)for(;i<o;)(!d||!d.has(n[i]))&&n[i].remove(),i++;else if(n[i]===t[a-1]&&t[l]===n[o-1]){const h=n[--o].nextSibling;e.insertBefore(t[l++],n[i++].nextSibling),e.insertBefore(t[--a],h),n[o]=t[a]}else{if(!d){d=new Map;let f=l;for(;f<a;)d.set(t[f],f++)}const h=d.get(n[i]);if(h!=null)if(l<h&&h<a){let f=i,g=1,m;for(;++f<o&&f<a&&!((m=d.get(n[f]))==null||m!==h+g);)g++;if(g>h-l){const w=n[i];for(;l<h;)e.insertBefore(t[l++],w)}else e.replaceChild(t[l++],n[i++])}else i++;else n[i++].remove()}}}const ke="_$DX_DELEGATE";function rt(e,n,t,r={}){let o;return c.createRoot(a=>{o=a,n===document?e():v(n,e(),n.firstChild?null:void 0,t)},r.owner),()=>{o(),n.textContent=""}}function b(e,n,t){let r;const o=()=>{const i=document.createElement("template");return i.innerHTML=e,t?i.content.firstChild.firstChild:i.content.firstChild},a=n?()=>c.untrack(()=>document.importNode(r||(r=o()),!0)):()=>(r||(r=o())).cloneNode(!0);return a.cloneNode=a,a}function E(e,n=window.document){const t=n[ke]||(n[ke]=new Set);for(let r=0,o=e.length;r<o;r++){const a=e[r];t.has(a)||(t.add(a),n.addEventListener(a,lt))}}function u(e,n,t){X(e)||(t==null?e.removeAttribute(n):e.setAttribute(n,t))}function at(e,n,t){X(e)||(t?e.setAttribute(n,""):e.removeAttribute(n))}function Ce(e,n){X(e)||(n==null?e.removeAttribute("class"):e.className=n)}function N(e,n,t,r){if(r)Array.isArray(t)?(e[`$$${n}`]=t[0],e[`$$${n}Data`]=t[1]):e[`$$${n}`]=t;else if(Array.isArray(t)){const o=t[0];e.addEventListener(n,t[0]=a=>o.call(e,t[1],a))}else e.addEventListener(n,t,typeof t!="function"&&t)}function ot(e,n,t={}){const r=Object.keys(n||{}),o=Object.keys(t);let a,i;for(a=0,i=o.length;a<i;a++){const l=o[a];!l||l==="undefined"||n[l]||(Se(e,l,!1),delete t[l])}for(a=0,i=r.length;a<i;a++){const l=r[a],s=!!n[l];!l||l==="undefined"||t[l]===s||!s||(Se(e,l,!0),t[l]=s)}return t}function z(e,n,t){if(!n)return t?u(e,"style"):n;const r=e.style;if(typeof n=="string")return r.cssText=n;typeof t=="string"&&(r.cssText=t=void 0),t||(t={}),n||(n={});let o,a;for(a in t)n[a]==null&&r.removeProperty(a),delete t[a];for(a in n)o=n[a],o!==t[a]&&(r.setProperty(a,o),t[a]=o);return t}function it(e,n={},t,r){const o={};return c.createRenderEffect(()=>o.children=K(e,n.children,o.children)),c.createRenderEffect(()=>typeof n.ref=="function"&&D(n.ref,e)),c.createRenderEffect(()=>ct(e,n,t,!0,o,!0)),o}function D(e,n,t){return c.untrack(()=>e(n,t))}function v(e,n,t,r){if(t!==void 0&&!r&&(r=[]),typeof n!="function")return K(e,n,r,t);c.createRenderEffect(o=>K(e,n(),o,t),r)}function ct(e,n,t,r,o={},a=!1){n||(n={});for(const i in o)if(!(i in n)){if(i==="children")continue;o[i]=Ee(e,i,null,o[i],t,a,n)}for(const i in n){if(i==="children")continue;const l=n[i];o[i]=Ee(e,i,l,o[i],t,a,n)}}function X(e){return!!c.sharedConfig.context&&!c.sharedConfig.done&&(!e||e.isConnected)}function st(e){return e.toLowerCase().replace(/-([a-z])/g,(n,t)=>t.toUpperCase())}function Se(e,n,t){const r=n.trim().split(/\s+/);for(let o=0,a=r.length;o<a;o++)e.classList.toggle(r[o],t)}function Ee(e,n,t,r,o,a,i){let l,s,d,h,f;if(n==="style")return z(e,t,r);if(n==="classList")return ot(e,t,r);if(t===r)return r;if(n==="ref")a||t(e);else if(n.slice(0,3)==="on:"){const g=n.slice(3);r&&e.removeEventListener(g,r,typeof r!="function"&&r),t&&e.addEventListener(g,t,typeof t!="function"&&t)}else if(n.slice(0,10)==="oncapture:"){const g=n.slice(10);r&&e.removeEventListener(g,r,!0),t&&e.addEventListener(g,t,!0)}else if(n.slice(0,2)==="on"){const g=n.slice(2).toLowerCase(),m=tt.has(g);if(!m&&r){const w=Array.isArray(r)?r[0]:r;e.removeEventListener(g,w)}(m||t)&&(N(e,g,t,m),m&&E([g]))}else if(n.slice(0,5)==="attr:")u(e,n.slice(5),t);else if(n.slice(0,5)==="bool:")at(e,n.slice(5),t);else if((f=n.slice(0,5)==="prop:")||(d=Ze.has(n))||(h=et(n,e.tagName))||(s=Ge.has(n))||(l=e.nodeName.includes("-")||"is"in i)){if(f)n=n.slice(5),s=!0;else if(X(e))return t;n==="class"||n==="className"?Ce(e,t):l&&!s&&!d?e[st(n)]=t:e[h||n]=t}else u(e,Qe[n]||n,t);return t}function lt(e){if(c.sharedConfig.registry&&c.sharedConfig.events&&c.sharedConfig.events.find(([s,d])=>d===e))return;let n=e.target;const t=`$$${e.type}`,r=e.target,o=e.currentTarget,a=s=>Object.defineProperty(e,"target",{configurable:!0,value:s}),i=()=>{const s=n[t];if(s&&!n.disabled){const d=n[`${t}Data`];if(d!==void 0?s.call(n,d,e):s.call(n,e),e.cancelBubble)return}return n.host&&typeof n.host!="string"&&!n.host._$host&&n.contains(e.target)&&a(n.host),!0},l=()=>{for(;i()&&(n=n._$host||n.parentNode||n.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return n||document}}),c.sharedConfig.registry&&!c.sharedConfig.done&&(c.sharedConfig.done=_$HY.done=!0),e.composedPath){const s=e.composedPath();a(s[0]);for(let d=0;d<s.length-2&&(n=s[d],!!i());d++){if(n._$host){n=n._$host,l();break}if(n.parentNode===o)break}}else l();a(r)}function K(e,n,t,r,o){const a=X(e);if(a){!t&&(t=[...e.childNodes]);let s=[];for(let d=0;d<t.length;d++){const h=t[d];h.nodeType===8&&h.data.slice(0,2)==="!$"?h.remove():s.push(h)}t=s}for(;typeof t=="function";)t=t();if(n===t)return t;const i=typeof n,l=r!==void 0;if(e=l&&t[0]&&t[0].parentNode||e,i==="string"||i==="number"){if(a||i==="number"&&(n=n.toString(),n===t))return t;if(l){let s=t[0];s&&s.nodeType===3?s.data!==n&&(s.data=n):s=document.createTextNode(n),t=B(e,t,r,s)}else t!==""&&typeof t=="string"?t=e.firstChild.data=n:t=e.textContent=n}else if(n==null||i==="boolean"){if(a)return t;t=B(e,t,r)}else{if(i==="function")return c.createRenderEffect(()=>{let s=n();for(;typeof s=="function";)s=s();t=K(e,s,t,r)}),()=>t;if(Array.isArray(n)){const s=[],d=t&&Array.isArray(t);if(fe(s,n,t,o))return c.createRenderEffect(()=>t=K(e,s,t,r,!0)),()=>t;if(a){if(!s.length)return t;if(r===void 0)return t=[...e.childNodes];let h=s[0];if(h.parentNode!==e)return t;const f=[h];for(;(h=h.nextSibling)!==r;)f.push(h);return t=f}if(s.length===0){if(t=B(e,t,r),l)return t}else d?t.length===0?$e(e,s,r):nt(e,t,s):(t&&B(e),$e(e,s));t=s}else if(n.nodeType){if(a&&n.parentNode)return t=l?[n]:n;if(Array.isArray(t)){if(l)return t=B(e,t,r,n);B(e,t,null,n)}else t==null||t===""||!e.firstChild?e.appendChild(n):e.replaceChild(n,e.firstChild);t=n}}return t}function fe(e,n,t,r){let o=!1;for(let a=0,i=n.length;a<i;a++){let l=n[a],s=t&&t[e.length],d;if(!(l==null||l===!0||l===!1))if((d=typeof l)=="object"&&l.nodeType)e.push(l);else if(Array.isArray(l))o=fe(e,l,s)||o;else if(d==="function")if(r){for(;typeof l=="function";)l=l();o=fe(e,Array.isArray(l)?l:[l],Array.isArray(s)?s:[s])||o}else e.push(l),o=!0;else{const h=String(l);s&&s.nodeType===3&&s.data===h?e.push(s):e.push(document.createTextNode(h))}}return o}function $e(e,n,t=null){for(let r=0,o=n.length;r<o;r++)e.insertBefore(n[r],t)}function B(e,n,t,r){if(t===void 0)return e.textContent="";const o=r||document.createTextNode("");if(n.length){let a=!1;for(let i=n.length-1;i>=0;i--){const l=n[i];if(o!==l){const s=l.parentNode===e;!a&&!i?s?e.replaceChild(o,l):e.insertBefore(o,t):s&&l.remove()}else a=!0}}else e.insertBefore(o,t);return[o]}const dt="http://www.w3.org/2000/svg";function ut(e,n=!1){return n?document.createElementNS(dt,e):document.createElement(e)}function ht(e){const{useShadow:n}=e,t=document.createTextNode(""),r=()=>e.mount||document.body,o=c.getOwner();let a,i=!!c.sharedConfig.context;return c.createEffect(()=>{i&&(c.getOwner().user=i=!1),a||(a=c.runWithOwner(o,()=>c.createMemo(()=>e.children)));const l=r();if(l instanceof HTMLHeadElement){const[s,d]=c.createSignal(!1),h=()=>d(!0);c.createRoot(f=>v(l,()=>s()?f():a(),null)),c.onCleanup(h)}else{const s=ut(e.isSVG?"g":"div",e.isSVG),d=n&&s.attachShadow?s.attachShadow({mode:"open"}):s;Object.defineProperty(s,"_$host",{get(){return t.parentNode},configurable:!0}),v(d,a),l.appendChild(s),e.ref&&e.ref(s),c.onCleanup(()=>l.removeChild(s))}},void 0,{render:!i}),t}const ft=5e3,gt=e=>{let n=null;const t=()=>{n!==null&&(window.clearTimeout(n),n=null)};return{show:r=>{t(),e.setState({notification:{...r,show:!0}}),n=window.setTimeout(()=>{e.setState({notification:{...r,show:!1}}),n=null},ft)},clear:()=>{t(),e.setState({notification:{show:!1,type:null,message:null}})}}},Pe=(e,n)=>{if(!n)return e;const t={...e};for(const r in n)n[r]&&typeof n[r]=="object"&&!Array.isArray(n[r])?t[r]=Pe(e[r],n[r]):t[r]=n[r];return t},mt=(e,n)=>{let t;return(...r)=>{clearTimeout(t),t=window.setTimeout(()=>e(...r),n)}},vt="echo_",q="echo-pages",ze=e=>{if(!e||e==="/")return"/";const n=e.split("/");return n.length<=4?e:`/${n[1]}/.../${n[n.length-1]}`},Me=()=>{window.dispatchEvent(new Event("echo-storage-change"))},Te=e=>`${vt}${e}`,V=(e,n)=>{try{const t=localStorage.getItem(Te(e));return t?JSON.parse(t):n}catch{return n}},G=(e,n)=>{try{localStorage.setItem(Te(e),JSON.stringify(n))}catch(t){console.warn("Failed to save to localStorage:",t)}},ge=()=>{const e=window.location.pathname||"/",n=window.location.search;return`${e}${n}`},bt=(e,n)=>{try{if(!n.feedback.hasUserInteracted&&n.drawing.shapes.length<1)return;const t={message:n.feedback.message,customInputValues:n.feedback.customInputValues},r=V(q,{}),o=ze(e);(t||n.drawing.shapes.length>0)&&(r[o]={...r[o]||{},...t?{feedback:t}:{},drawing:{shapes:n.drawing.shapes}}),G(q,r),Me()}catch(t){console.warn("Failed to save page state:",t)}},me=e=>{try{return V(q,{})[e]}catch(n){console.error("Failed to load page state:",n);return}},Oe=e=>{try{const n=V(q,{});delete n[e],G(q,n),Me()}catch(n){console.error("Failed to clear page state:",n)}},Ie=()=>{try{const e=V(q,{});return Object.keys(e).length}catch(e){return console.error("Failed to get stored pages count:",e),0}},ve=()=>{try{const e=V(q,{});return Object.entries(e).map(([n,t])=>({path:ze(n),state:t}))}catch(e){return console.error("Failed to get stored pages:",e),[]}},wt=e=>mt((n,t,r=!1)=>{(!r||t.feedback.message.trim().length>0||t.drawing.shapes.length>0)&&(bt(n,t),e.setState({pagesCount:Ie()}))},1e3),be=Symbol("store-raw"),Y=Symbol("store-node"),I=Symbol("store-has"),Re=Symbol("store-self");function Ae(e){let n=e[c.$PROXY];if(!n&&(Object.defineProperty(e,c.$PROXY,{value:n=new Proxy(e,xt)}),!Array.isArray(e))){const t=Object.keys(e),r=Object.getOwnPropertyDescriptors(e);for(let o=0,a=t.length;o<a;o++){const i=t[o];r[i].get&&Object.defineProperty(e,i,{enumerable:r[i].enumerable,get:r[i].get.bind(n)})}}return n}function oe(e){let n;return e!=null&&typeof e=="object"&&(e[c.$PROXY]||!(n=Object.getPrototypeOf(e))||n===Object.prototype||Array.isArray(e))}function Z(e,n=new Set){let t,r,o,a;if(t=e!=null&&e[be])return t;if(!oe(e)||n.has(e))return e;if(Array.isArray(e)){Object.isFrozen(e)?e=e.slice(0):n.add(e);for(let i=0,l=e.length;i<l;i++)o=e[i],(r=Z(o,n))!==o&&(e[i]=r)}else{Object.isFrozen(e)?e=Object.assign({},e):n.add(e);const i=Object.keys(e),l=Object.getOwnPropertyDescriptors(e);for(let s=0,d=i.length;s<d;s++)a=i[s],!l[a].get&&(o=e[a],(r=Z(o,n))!==o&&(e[a]=r))}return e}function ie(e,n){let t=e[n];return t||Object.defineProperty(e,n,{value:t=Object.create(null)}),t}function Q(e,n,t){if(e[n])return e[n];const[r,o]=c.createSignal(t,{equals:!1,internal:!0});return r.$=o,e[n]=r}function pt(e,n){const t=Reflect.getOwnPropertyDescriptor(e,n);return!t||t.get||!t.configurable||n===c.$PROXY||n===Y||(delete t.value,delete t.writable,t.get=()=>e[c.$PROXY][n]),t}function De(e){c.getListener()&&Q(ie(e,Y),Re)()}function yt(e){return De(e),Reflect.ownKeys(e)}const xt={get(e,n,t){if(n===be)return e;if(n===c.$PROXY)return t;if(n===c.$TRACK)return De(e),t;const r=ie(e,Y),o=r[n];let a=o?o():e[n];if(n===Y||n===I||n==="__proto__")return a;if(!o){const i=Object.getOwnPropertyDescriptor(e,n);c.getListener()&&(typeof a!="function"||e.hasOwnProperty(n))&&!(i&&i.get)&&(a=Q(r,n,a)())}return oe(a)?Ae(a):a},has(e,n){return n===be||n===c.$PROXY||n===c.$TRACK||n===Y||n===I||n==="__proto__"?!0:(c.getListener()&&Q(ie(e,I),n)(),n in e)},set(){return!0},deleteProperty(){return!0},ownKeys:yt,getOwnPropertyDescriptor:pt};function ce(e,n,t,r=!1){if(!r&&e[n]===t)return;const o=e[n],a=e.length;t===void 0?(delete e[n],e[I]&&e[I][n]&&o!==void 0&&e[I][n].$()):(e[n]=t,e[I]&&e[I][n]&&o===void 0&&e[I][n].$());let i=ie(e,Y),l;if((l=Q(i,n,o))&&l.$(()=>t),Array.isArray(e)&&e.length!==a){for(let s=e.length;s<a;s++)(l=i[s])&&l.$();(l=Q(i,"length",a))&&l.$(e.length)}(l=i[Re])&&l.$()}function Fe(e,n){const t=Object.keys(n);for(let r=0;r<t.length;r+=1){const o=t[r];ce(e,o,n[o])}}function kt(e,n){if(typeof n=="function"&&(n=n(e)),n=Z(n),Array.isArray(n)){if(e===n)return;let t=0,r=n.length;for(;t<r;t++){const o=n[t];e[t]!==o&&ce(e,t,o)}ce(e,"length",r)}else Fe(e,n)}function J(e,n,t=[]){let r,o=e;if(n.length>1){r=n.shift();const i=typeof r,l=Array.isArray(e);if(Array.isArray(r)){for(let s=0;s<r.length;s++)J(e,[r[s]].concat(n),t);return}else if(l&&i==="function"){for(let s=0;s<e.length;s++)r(e[s],s)&&J(e,[s].concat(n),t);return}else if(l&&i==="object"){const{from:s=0,to:d=e.length-1,by:h=1}=r;for(let f=s;f<=d;f+=h)J(e,[f].concat(n),t);return}else if(n.length>1){J(e[r],n,[r].concat(t));return}o=e[r],t=[r].concat(t)}let a=n[0];typeof a=="function"&&(a=a(o,t),a===o)||r===void 0&&a==null||(a=Z(a),r===void 0||oe(o)&&oe(a)&&!Array.isArray(a)?Fe(o,a):ce(e,r,a))}function we(...[e,n]){const t=Z(e||{}),r=Array.isArray(t),o=Ae(t);function a(...i){c.batch(()=>{r&&i.length===1?kt(t,i[0]):J(t,i)})}return[o,a]}const F={rectangle:{id:"rectangle",label:"Highlight",getCursor:()=>"crosshair",strokeWidth:2,opacity:{selected:1,default:1}},path:{id:"path",label:"Pen",getCursor:e=>`url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48" fill="none" stroke="${e.replace("#","%23")}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="24" cy="24" r="8"/></svg>') 24 24, auto`,strokeWidth:6,opacity:{selected:.6,default:1}}},Ct=e=>{const n=e.replace("#",""),t=Number.parseInt(n.slice(0,2),16)/255,r=Number.parseInt(n.slice(2,2),16)/255,o=Number.parseInt(n.slice(4,2),16)/255;return .2126*t+.7152*r+.0722*o},St=e=>Ct(e)<.5?"#FFFFFF":"#000000";let R=[],M=null,_=null,U=null;const pe=(e,n)=>(...t)=>{const r=a=>{if(typeof a=="string")return a;if(a instanceof Error)return a.stack||a.message;try{const i=new WeakSet;return JSON.stringify(a,(s,d)=>{if(typeof d=="object"&&d!==null){if(d instanceof Node)return`[${d.nodeName} Element]`;if(i.has(d))return"[Circular Reference]";i.add(d)}return d})}catch{return"[Unable to stringify value]"}},o=t.map(r).join(" ");R.push({type:e,message:o,timestamp:new Date().toISOString()}),R.length>1e3&&(R=R.slice(-1e3)),n.apply(console,t)},Et=()=>{M||(M={log:console.log,warn:console.warn,error:console.error},_=window.onerror,U=window.onunhandledrejection,window.onerror=(e,n,t,r,o)=>{const a=(o==null?void 0:o.stack)||(o==null?void 0:o.message)||e;return R.push({type:"error",message:`Uncaught Error: ${a}
1
+ (function(A,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("solid-js"),require("html2canvas-pro")):typeof define=="function"&&define.amd?define(["exports","solid-js","html2canvas-pro"],c):(A=typeof globalThis<"u"?globalThis:A||self,c(A.Echo={},A.Solid,A["html2canvas-pro"]))})(this,function(A,c,Xe){"use strict";const Ke=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","hidden","indeterminate","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected"],Ge=new Set(["className","value","readOnly","formNoValidate","isMap","noModule","playsInline",...Ke]),Ze=new Set(["innerHTML","textContent","innerText","children"]),Qe=Object.assign(Object.create(null),{className:"class",htmlFor:"for"}),Je=Object.assign(Object.create(null),{class:"className",formnovalidate:{$:"formNoValidate",BUTTON:1,INPUT:1},ismap:{$:"isMap",IMG:1},nomodule:{$:"noModule",SCRIPT:1},playsinline:{$:"playsInline",VIDEO:1},readonly:{$:"readOnly",INPUT:1,TEXTAREA:1}});function et(e,n){const t=Je[e];return typeof t=="object"?t[n]?t.$:void 0:t}const tt=new Set(["beforeinput","click","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"]);function nt(e,n,t){let r=t.length,o=n.length,a=r,i=0,l=0,s=n[o-1].nextSibling,d=null;for(;i<o||l<a;){if(n[i]===t[l]){i++,l++;continue}for(;n[o-1]===t[a-1];)o--,a--;if(o===i){const h=a<r?l?t[l-1].nextSibling:t[a-l]:s;for(;l<a;)e.insertBefore(t[l++],h)}else if(a===l)for(;i<o;)(!d||!d.has(n[i]))&&n[i].remove(),i++;else if(n[i]===t[a-1]&&t[l]===n[o-1]){const h=n[--o].nextSibling;e.insertBefore(t[l++],n[i++].nextSibling),e.insertBefore(t[--a],h),n[o]=t[a]}else{if(!d){d=new Map;let f=l;for(;f<a;)d.set(t[f],f++)}const h=d.get(n[i]);if(h!=null)if(l<h&&h<a){let f=i,g=1,m;for(;++f<o&&f<a&&!((m=d.get(n[f]))==null||m!==h+g);)g++;if(g>h-l){const b=n[i];for(;l<h;)e.insertBefore(t[l++],b)}else e.replaceChild(t[l++],n[i++])}else i++;else n[i++].remove()}}}const ke="_$DX_DELEGATE";function rt(e,n,t,r={}){let o;return c.createRoot(a=>{o=a,n===document?e():v(n,e(),n.firstChild?null:void 0,t)},r.owner),()=>{o(),n.textContent=""}}function w(e,n,t){let r;const o=()=>{const i=document.createElement("template");return i.innerHTML=e,t?i.content.firstChild.firstChild:i.content.firstChild},a=n?()=>c.untrack(()=>document.importNode(r||(r=o()),!0)):()=>(r||(r=o())).cloneNode(!0);return a.cloneNode=a,a}function E(e,n=window.document){const t=n[ke]||(n[ke]=new Set);for(let r=0,o=e.length;r<o;r++){const a=e[r];t.has(a)||(t.add(a),n.addEventListener(a,lt))}}function u(e,n,t){X(e)||(t==null?e.removeAttribute(n):e.setAttribute(n,t))}function at(e,n,t){X(e)||(t?e.setAttribute(n,""):e.removeAttribute(n))}function Ce(e,n){X(e)||(n==null?e.removeAttribute("class"):e.className=n)}function N(e,n,t,r){if(r)Array.isArray(t)?(e[`$$${n}`]=t[0],e[`$$${n}Data`]=t[1]):e[`$$${n}`]=t;else if(Array.isArray(t)){const o=t[0];e.addEventListener(n,t[0]=a=>o.call(e,t[1],a))}else e.addEventListener(n,t,typeof t!="function"&&t)}function ot(e,n,t={}){const r=Object.keys(n||{}),o=Object.keys(t);let a,i;for(a=0,i=o.length;a<i;a++){const l=o[a];!l||l==="undefined"||n[l]||(Se(e,l,!1),delete t[l])}for(a=0,i=r.length;a<i;a++){const l=r[a],s=!!n[l];!l||l==="undefined"||t[l]===s||!s||(Se(e,l,!0),t[l]=s)}return t}function $(e,n,t){if(!n)return t?u(e,"style"):n;const r=e.style;if(typeof n=="string")return r.cssText=n;typeof t=="string"&&(r.cssText=t=void 0),t||(t={}),n||(n={});let o,a;for(a in t)n[a]==null&&r.removeProperty(a),delete t[a];for(a in n)o=n[a],o!==t[a]&&(r.setProperty(a,o),t[a]=o);return t}function it(e,n={},t,r){const o={};return c.createRenderEffect(()=>o.children=K(e,n.children,o.children)),c.createRenderEffect(()=>typeof n.ref=="function"&&D(n.ref,e)),c.createRenderEffect(()=>ct(e,n,t,!0,o,!0)),o}function D(e,n,t){return c.untrack(()=>e(n,t))}function v(e,n,t,r){if(t!==void 0&&!r&&(r=[]),typeof n!="function")return K(e,n,r,t);c.createRenderEffect(o=>K(e,n(),o,t),r)}function ct(e,n,t,r,o={},a=!1){n||(n={});for(const i in o)if(!(i in n)){if(i==="children")continue;o[i]=Ee(e,i,null,o[i],t,a,n)}for(const i in n){if(i==="children")continue;const l=n[i];o[i]=Ee(e,i,l,o[i],t,a,n)}}function X(e){return!!c.sharedConfig.context&&!c.sharedConfig.done&&(!e||e.isConnected)}function st(e){return e.toLowerCase().replace(/-([a-z])/g,(n,t)=>t.toUpperCase())}function Se(e,n,t){const r=n.trim().split(/\s+/);for(let o=0,a=r.length;o<a;o++)e.classList.toggle(r[o],t)}function Ee(e,n,t,r,o,a,i){let l,s,d,h,f;if(n==="style")return $(e,t,r);if(n==="classList")return ot(e,t,r);if(t===r)return r;if(n==="ref")a||t(e);else if(n.slice(0,3)==="on:"){const g=n.slice(3);r&&e.removeEventListener(g,r,typeof r!="function"&&r),t&&e.addEventListener(g,t,typeof t!="function"&&t)}else if(n.slice(0,10)==="oncapture:"){const g=n.slice(10);r&&e.removeEventListener(g,r,!0),t&&e.addEventListener(g,t,!0)}else if(n.slice(0,2)==="on"){const g=n.slice(2).toLowerCase(),m=tt.has(g);if(!m&&r){const b=Array.isArray(r)?r[0]:r;e.removeEventListener(g,b)}(m||t)&&(N(e,g,t,m),m&&E([g]))}else if(n.slice(0,5)==="attr:")u(e,n.slice(5),t);else if(n.slice(0,5)==="bool:")at(e,n.slice(5),t);else if((f=n.slice(0,5)==="prop:")||(d=Ze.has(n))||(h=et(n,e.tagName))||(s=Ge.has(n))||(l=e.nodeName.includes("-")||"is"in i)){if(f)n=n.slice(5),s=!0;else if(X(e))return t;n==="class"||n==="className"?Ce(e,t):l&&!s&&!d?e[st(n)]=t:e[h||n]=t}else u(e,Qe[n]||n,t);return t}function lt(e){if(c.sharedConfig.registry&&c.sharedConfig.events&&c.sharedConfig.events.find(([s,d])=>d===e))return;let n=e.target;const t=`$$${e.type}`,r=e.target,o=e.currentTarget,a=s=>Object.defineProperty(e,"target",{configurable:!0,value:s}),i=()=>{const s=n[t];if(s&&!n.disabled){const d=n[`${t}Data`];if(d!==void 0?s.call(n,d,e):s.call(n,e),e.cancelBubble)return}return n.host&&typeof n.host!="string"&&!n.host._$host&&n.contains(e.target)&&a(n.host),!0},l=()=>{for(;i()&&(n=n._$host||n.parentNode||n.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return n||document}}),c.sharedConfig.registry&&!c.sharedConfig.done&&(c.sharedConfig.done=_$HY.done=!0),e.composedPath){const s=e.composedPath();a(s[0]);for(let d=0;d<s.length-2&&(n=s[d],!!i());d++){if(n._$host){n=n._$host,l();break}if(n.parentNode===o)break}}else l();a(r)}function K(e,n,t,r,o){const a=X(e);if(a){!t&&(t=[...e.childNodes]);let s=[];for(let d=0;d<t.length;d++){const h=t[d];h.nodeType===8&&h.data.slice(0,2)==="!$"?h.remove():s.push(h)}t=s}for(;typeof t=="function";)t=t();if(n===t)return t;const i=typeof n,l=r!==void 0;if(e=l&&t[0]&&t[0].parentNode||e,i==="string"||i==="number"){if(a||i==="number"&&(n=n.toString(),n===t))return t;if(l){let s=t[0];s&&s.nodeType===3?s.data!==n&&(s.data=n):s=document.createTextNode(n),t=B(e,t,r,s)}else t!==""&&typeof t=="string"?t=e.firstChild.data=n:t=e.textContent=n}else if(n==null||i==="boolean"){if(a)return t;t=B(e,t,r)}else{if(i==="function")return c.createRenderEffect(()=>{let s=n();for(;typeof s=="function";)s=s();t=K(e,s,t,r)}),()=>t;if(Array.isArray(n)){const s=[],d=t&&Array.isArray(t);if(fe(s,n,t,o))return c.createRenderEffect(()=>t=K(e,s,t,r,!0)),()=>t;if(a){if(!s.length)return t;if(r===void 0)return t=[...e.childNodes];let h=s[0];if(h.parentNode!==e)return t;const f=[h];for(;(h=h.nextSibling)!==r;)f.push(h);return t=f}if(s.length===0){if(t=B(e,t,r),l)return t}else d?t.length===0?$e(e,s,r):nt(e,t,s):(t&&B(e),$e(e,s));t=s}else if(n.nodeType){if(a&&n.parentNode)return t=l?[n]:n;if(Array.isArray(t)){if(l)return t=B(e,t,r,n);B(e,t,null,n)}else t==null||t===""||!e.firstChild?e.appendChild(n):e.replaceChild(n,e.firstChild);t=n}}return t}function fe(e,n,t,r){let o=!1;for(let a=0,i=n.length;a<i;a++){let l=n[a],s=t&&t[e.length],d;if(!(l==null||l===!0||l===!1))if((d=typeof l)=="object"&&l.nodeType)e.push(l);else if(Array.isArray(l))o=fe(e,l,s)||o;else if(d==="function")if(r){for(;typeof l=="function";)l=l();o=fe(e,Array.isArray(l)?l:[l],Array.isArray(s)?s:[s])||o}else e.push(l),o=!0;else{const h=String(l);s&&s.nodeType===3&&s.data===h?e.push(s):e.push(document.createTextNode(h))}}return o}function $e(e,n,t=null){for(let r=0,o=n.length;r<o;r++)e.insertBefore(n[r],t)}function B(e,n,t,r){if(t===void 0)return e.textContent="";const o=r||document.createTextNode("");if(n.length){let a=!1;for(let i=n.length-1;i>=0;i--){const l=n[i];if(o!==l){const s=l.parentNode===e;!a&&!i?s?e.replaceChild(o,l):e.insertBefore(o,t):s&&l.remove()}else a=!0}}else e.insertBefore(o,t);return[o]}const dt="http://www.w3.org/2000/svg";function ut(e,n=!1){return n?document.createElementNS(dt,e):document.createElement(e)}function ht(e){const{useShadow:n}=e,t=document.createTextNode(""),r=()=>e.mount||document.body,o=c.getOwner();let a,i=!!c.sharedConfig.context;return c.createEffect(()=>{i&&(c.getOwner().user=i=!1),a||(a=c.runWithOwner(o,()=>c.createMemo(()=>e.children)));const l=r();if(l instanceof HTMLHeadElement){const[s,d]=c.createSignal(!1),h=()=>d(!0);c.createRoot(f=>v(l,()=>s()?f():a(),null)),c.onCleanup(h)}else{const s=ut(e.isSVG?"g":"div",e.isSVG),d=n&&s.attachShadow?s.attachShadow({mode:"open"}):s;Object.defineProperty(s,"_$host",{get(){return t.parentNode},configurable:!0}),v(d,a),l.appendChild(s),e.ref&&e.ref(s),c.onCleanup(()=>l.removeChild(s))}},void 0,{render:!i}),t}const ft=5e3,gt=e=>{let n=null;const t=()=>{n!==null&&(window.clearTimeout(n),n=null)};return{show:r=>{t(),e.setState({notification:{...r,show:!0}}),n=window.setTimeout(()=>{e.setState({notification:{...r,show:!1}}),n=null},ft)},clear:()=>{t(),e.setState({notification:{show:!1,type:null,message:null}})}}},Pe=(e,n)=>{if(!n)return e;const t={...e};for(const r in n)n[r]&&typeof n[r]=="object"&&!Array.isArray(n[r])?t[r]=Pe(e[r],n[r]):t[r]=n[r];return t},mt=(e,n)=>{let t;return(...r)=>{clearTimeout(t),t=window.setTimeout(()=>e(...r),n)}},vt="echo_",q="echo-pages",ze=e=>{if(!e||e==="/")return"/";const n=e.split("/");return n.length<=4?e:`/${n[1]}/.../${n[n.length-1]}`},Me=()=>{window.dispatchEvent(new Event("echo-storage-change"))},Te=e=>`${vt}${e}`,V=(e,n)=>{try{const t=localStorage.getItem(Te(e));return t?JSON.parse(t):n}catch{return n}},G=(e,n)=>{try{localStorage.setItem(Te(e),JSON.stringify(n))}catch(t){console.warn("Failed to save to localStorage:",t)}},ge=()=>{const e=window.location.pathname||"/",n=window.location.search;return`${e}${n}`},wt=(e,n)=>{try{if(!n.feedback.hasUserInteracted&&n.drawing.shapes.length<1)return;const t={message:n.feedback.message,customInputValues:n.feedback.customInputValues},r=V(q,{}),o=ze(e);(t||n.drawing.shapes.length>0)&&(r[o]={...r[o]||{},...t?{feedback:t}:{},drawing:{shapes:n.drawing.shapes}}),G(q,r),Me()}catch(t){console.warn("Failed to save page state:",t)}},me=e=>{try{return V(q,{})[e]}catch(n){console.error("Failed to load page state:",n);return}},Oe=e=>{try{const n=V(q,{});delete n[e],G(q,n),Me()}catch(n){console.error("Failed to clear page state:",n)}},Ie=()=>{try{const e=V(q,{});return Object.keys(e).length}catch(e){return console.error("Failed to get stored pages count:",e),0}},ve=()=>{try{const e=V(q,{});return Object.entries(e).map(([n,t])=>({path:ze(n),state:t}))}catch(e){return console.error("Failed to get stored pages:",e),[]}},bt=e=>mt((n,t,r=!1)=>{(!r||t.feedback.message.trim().length>0||t.drawing.shapes.length>0)&&(wt(n,t),e.setState({pagesCount:Ie()}))},1e3),we=Symbol("store-raw"),Y=Symbol("store-node"),I=Symbol("store-has"),Re=Symbol("store-self");function Ae(e){let n=e[c.$PROXY];if(!n&&(Object.defineProperty(e,c.$PROXY,{value:n=new Proxy(e,xt)}),!Array.isArray(e))){const t=Object.keys(e),r=Object.getOwnPropertyDescriptors(e);for(let o=0,a=t.length;o<a;o++){const i=t[o];r[i].get&&Object.defineProperty(e,i,{enumerable:r[i].enumerable,get:r[i].get.bind(n)})}}return n}function oe(e){let n;return e!=null&&typeof e=="object"&&(e[c.$PROXY]||!(n=Object.getPrototypeOf(e))||n===Object.prototype||Array.isArray(e))}function Z(e,n=new Set){let t,r,o,a;if(t=e!=null&&e[we])return t;if(!oe(e)||n.has(e))return e;if(Array.isArray(e)){Object.isFrozen(e)?e=e.slice(0):n.add(e);for(let i=0,l=e.length;i<l;i++)o=e[i],(r=Z(o,n))!==o&&(e[i]=r)}else{Object.isFrozen(e)?e=Object.assign({},e):n.add(e);const i=Object.keys(e),l=Object.getOwnPropertyDescriptors(e);for(let s=0,d=i.length;s<d;s++)a=i[s],!l[a].get&&(o=e[a],(r=Z(o,n))!==o&&(e[a]=r))}return e}function ie(e,n){let t=e[n];return t||Object.defineProperty(e,n,{value:t=Object.create(null)}),t}function Q(e,n,t){if(e[n])return e[n];const[r,o]=c.createSignal(t,{equals:!1,internal:!0});return r.$=o,e[n]=r}function pt(e,n){const t=Reflect.getOwnPropertyDescriptor(e,n);return!t||t.get||!t.configurable||n===c.$PROXY||n===Y||(delete t.value,delete t.writable,t.get=()=>e[c.$PROXY][n]),t}function De(e){c.getListener()&&Q(ie(e,Y),Re)()}function yt(e){return De(e),Reflect.ownKeys(e)}const xt={get(e,n,t){if(n===we)return e;if(n===c.$PROXY)return t;if(n===c.$TRACK)return De(e),t;const r=ie(e,Y),o=r[n];let a=o?o():e[n];if(n===Y||n===I||n==="__proto__")return a;if(!o){const i=Object.getOwnPropertyDescriptor(e,n);c.getListener()&&(typeof a!="function"||e.hasOwnProperty(n))&&!(i&&i.get)&&(a=Q(r,n,a)())}return oe(a)?Ae(a):a},has(e,n){return n===we||n===c.$PROXY||n===c.$TRACK||n===Y||n===I||n==="__proto__"?!0:(c.getListener()&&Q(ie(e,I),n)(),n in e)},set(){return!0},deleteProperty(){return!0},ownKeys:yt,getOwnPropertyDescriptor:pt};function ce(e,n,t,r=!1){if(!r&&e[n]===t)return;const o=e[n],a=e.length;t===void 0?(delete e[n],e[I]&&e[I][n]&&o!==void 0&&e[I][n].$()):(e[n]=t,e[I]&&e[I][n]&&o===void 0&&e[I][n].$());let i=ie(e,Y),l;if((l=Q(i,n,o))&&l.$(()=>t),Array.isArray(e)&&e.length!==a){for(let s=e.length;s<a;s++)(l=i[s])&&l.$();(l=Q(i,"length",a))&&l.$(e.length)}(l=i[Re])&&l.$()}function Fe(e,n){const t=Object.keys(n);for(let r=0;r<t.length;r+=1){const o=t[r];ce(e,o,n[o])}}function kt(e,n){if(typeof n=="function"&&(n=n(e)),n=Z(n),Array.isArray(n)){if(e===n)return;let t=0,r=n.length;for(;t<r;t++){const o=n[t];e[t]!==o&&ce(e,t,o)}ce(e,"length",r)}else Fe(e,n)}function J(e,n,t=[]){let r,o=e;if(n.length>1){r=n.shift();const i=typeof r,l=Array.isArray(e);if(Array.isArray(r)){for(let s=0;s<r.length;s++)J(e,[r[s]].concat(n),t);return}else if(l&&i==="function"){for(let s=0;s<e.length;s++)r(e[s],s)&&J(e,[s].concat(n),t);return}else if(l&&i==="object"){const{from:s=0,to:d=e.length-1,by:h=1}=r;for(let f=s;f<=d;f+=h)J(e,[f].concat(n),t);return}else if(n.length>1){J(e[r],n,[r].concat(t));return}o=e[r],t=[r].concat(t)}let a=n[0];typeof a=="function"&&(a=a(o,t),a===o)||r===void 0&&a==null||(a=Z(a),r===void 0||oe(o)&&oe(a)&&!Array.isArray(a)?Fe(o,a):ce(e,r,a))}function be(...[e,n]){const t=Z(e||{}),r=Array.isArray(t),o=Ae(t);function a(...i){c.batch(()=>{r&&i.length===1?kt(t,i[0]):J(t,i)})}return[o,a]}const F={rectangle:{id:"rectangle",label:"Highlight",getCursor:()=>"crosshair",strokeWidth:2,opacity:{selected:1,default:1}},path:{id:"path",label:"Pen",getCursor:e=>`url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48" fill="none" stroke="${e.replace("#","%23")}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="24" cy="24" r="8"/></svg>') 24 24, auto`,strokeWidth:6,opacity:{selected:.6,default:1}}},Ct=e=>{const n=e.replace("#",""),t=Number.parseInt(n.slice(0,2),16)/255,r=Number.parseInt(n.slice(2,2),16)/255,o=Number.parseInt(n.slice(4,2),16)/255;return .2126*t+.7152*r+.0722*o},St=e=>Ct(e)<.5?"#FFFFFF":"#000000";let R=[],M=null,_=null,U=null;const pe=(e,n)=>(...t)=>{const r=a=>{if(typeof a=="string")return a;if(a instanceof Error)return a.stack||a.message;try{const i=new WeakSet;return JSON.stringify(a,(s,d)=>{if(typeof d=="object"&&d!==null){if(d instanceof Node)return`[${d.nodeName} Element]`;if(i.has(d))return"[Circular Reference]";i.add(d)}return d})}catch{return"[Unable to stringify value]"}},o=t.map(r).join(" ");R.push({type:e,message:o,timestamp:new Date().toISOString()}),R.length>1e3&&(R=R.slice(-1e3)),n.apply(console,t)},Et=()=>{M||(M={log:console.log,warn:console.warn,error:console.error},_=window.onerror,U=window.onunhandledrejection,window.onerror=(e,n,t,r,o)=>{const a=(o==null?void 0:o.stack)||(o==null?void 0:o.message)||e;return R.push({type:"error",message:`Uncaught Error: ${a}
2
2
  Location: ${n}:${t}:${r}`,timestamp:new Date().toISOString()}),_?_(e,n,t,r,o):!1},window.onunhandledrejection=e=>{const n=e.reason;R.push({type:"error",message:`Unhandled Promise Rejection: ${(n==null?void 0:n.stack)||(n==null?void 0:n.message)||n}`,timestamp:new Date().toISOString()}),U&&U(e)},console.log=pe("log",M.log),console.warn=pe("warn",M.warn),console.error=pe("error",M.error),window.addEventListener("error",e=>{const{message:n,filename:t,lineno:r,colno:o,error:a}=e,i=(a==null?void 0:a.stack)||(a==null?void 0:a.message)||n;R.push({type:"error",message:`Uncaught Error: ${i}
3
- Location: ${t}:${r}:${o}`,timestamp:new Date().toISOString()})}))},$t=()=>{M&&(console.log=M.log,console.warn=M.warn,console.error=M.error,M=null),_&&(window.onerror=_,_=null),U&&(window.onunhandledrejection=U,U=null),window.removeEventListener("error",()=>{}),R=[]},Pt=()=>[...R],zt=()=>{var e;return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||((e=window.matchMedia)==null?void 0:e.call(window,"(max-width: 768px)").matches)},se=(e,{useClientCoords:n=!1}={})=>{const r=typeof TouchEvent<"u"&&e instanceof TouchEvent?e.touches[0]:null;return{x:r?n?r.clientX:r.pageX:n?e.clientX:e.pageX,y:r?n?r.clientY:r.pageY:n?e.clientY:e.pageY}},Le=(e,n)=>{const t=n.x-e.x,r=n.y-e.y;return Math.sqrt(t*t+r*r)},je=e=>{if(e.length!==2)return null;const[n,t]=e;return{x:Math.min(n.x,t.x),y:Math.min(n.y,t.y),width:Math.abs(t.x-n.x),height:Math.abs(t.y-n.y)}},Mt=e=>e.length<2?null:`M ${e[0].x} ${e[0].y} ${e.slice(1).map(n=>`L ${n.x} ${n.y}`).join(" ")}`,le=window.EventTarget.prototype.addEventListener,H=window.EventTarget.prototype.removeEventListener;let de=!1,ee=null;const te=new WeakMap,Tt=e=>{ee=e},ne=e=>{if(!ee||!e)return!1;if(e===ee)return!0;const n=e.getRootNode();if(n&&n.nodeName==="#document"){const r=n.querySelector("#top-layer");if(r!=null&&r.contains(e))return!0}let t=e;for(;t;){if(t.getRootNode()===ee)return!0;t=t.parentNode}return!1},Ot=e=>{de||(de=!0,window.EventTarget.prototype.addEventListener=function(n,t,r){if(!t||typeof t!="function")return le.call(this,n,t,r);if(!(this instanceof Node&&!ne(this)))return le.call(this,n,t,r);const a=Rt(t,e);te.has(this)||te.set(this,new Map),te.get(this).set(t,a),le.call(this,n,a,r)},window.EventTarget.prototype.removeEventListener=function(n,t,r){if(!t||typeof this!="object")return H.call(this,n,t,r);if(this instanceof Node&&ne(this))return H.call(this,n,t,r);const a=te.get(this);if(!a)return H.call(this,n,t,r);const i=a.get(t);i?(H.call(this,n,i,r),a.delete(t),a.size===0&&te.delete(this)):H.call(this,n,t,r)})},It=()=>{de&&(window.EventTarget.prototype.addEventListener=le,window.EventTarget.prototype.removeEventListener=H,de=!1,ee=null)},T=e=>{const{event:n,callback:t,onMount:r,onCleanup:o}=e;c.onMount(()=>{r==null||r(),window.addEventListener(n,t)}),c.onCleanup(()=>{o==null||o(),window.removeEventListener(n,t)})},ye=e=>{const{target:n,options:t,callback:r,onMount:o,onCleanup:a}=e,i=new MutationObserver(r);c.onMount(()=>{o==null||o(),i.observe(n,t)}),c.onCleanup(()=>{a==null||a(),i.disconnect()})},Rt=(e,n)=>function(t){(!(t.target instanceof Node)||!ne(t.target))&&n(t),e.call(this,t)},At=e=>e.hasAttribute("data-hide-when-drawing"),Dt=async()=>{var e;try{const n=document.createElement("style");document.head.appendChild(n),(e=n.sheet)==null||e.insertRule("body > div:last-child img { display: inline-block; }");const t=await Xe(document.body,{logging:!1,useCORS:!0,scale:window.devicePixelRatio,allowTaint:!0,ignoreElements:r=>At(r)});return n.remove(),t.toDataURL("image/png")}catch(n){console.error("Failed to capture screenshot:",n);return}},Ft=(e,n,t)=>{let r=`M0 0 H${e.width} V${e.height} H0 Z`;if(n.length===2){const[o,a]=n;r+=` M${o.x} ${o.y} h${a.x-o.x} v${a.y-o.y} h${o.x-a.x} v${o.y-a.y}`}for(const o of t)if(o.type==="rectangle"){const[a,i]=o.points;r+=` M${a.x} ${a.y} h${i.x-a.x} v${i.y-a.y} h${a.x-i.x} v${a.y-i.y}`}return r},Lt=e=>{if(typeof e!="object"||e===null)throw new Error("Echo initialization failed: options must be an object");if(typeof e.onSubmit!="function")throw new Error("Echo initialization failed: onSubmit must be a function");if(e.primaryColor&&!/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(e.primaryColor))throw new Error("Echo initialization failed: primaryColor must be a valid hex color")},Ne=5,qe=(e,n)=>F[e].getCursor(n),jt=(e,n,t)=>{var l,s;const[r,o]=we({isDrawing:!1,currentPoints:[],selectedShapeId:null,selectedTool:"rectangle",showTooltip:!0,mousePosition:{x:0,y:0},selectedColor:e.primaryColor,shapes:((s=(l=me(n))==null?void 0:l.drawing)==null?void 0:s.shapes)||[],hasDrawn:!1,isDragging:!1,dragStartPos:null,initialClickPos:null,dragOffset:null,cursor:qe("rectangle",e.primaryColor)}),a=(d,h=!1)=>{if(d.selectedTool||d.selectedColor){const f=d.selectedTool||r.selectedTool,g=d.selectedColor||r.selectedColor;d.cursor=qe(f,g)}o(d),t==null||t(d,h)},i={startDrawing:d=>{a({isDrawing:!0,currentPoints:[d],selectedShapeId:null})},updateDrawing:d=>{r.selectedTool==="rectangle"?a({currentPoints:[r.currentPoints[0],d]}):r.selectedTool==="path"&&a({currentPoints:[...r.currentPoints,d]})},finishDrawing:()=>{if(r.currentPoints.length>=2){const d={id:Math.random().toString(36).substring(2),type:r.selectedTool,color:r.selectedColor,points:r.currentPoints};a({shapes:[...r.shapes,d]})}a({isDrawing:!1,currentPoints:[]})},handleShapeClick:d=>{},handleStart:d=>{if(d instanceof MouseEvent){const f=d.target;if(!f.classList.contains("echo-drawing-layer-mask")&&!f.classList.contains("echo-shape"))return}const h=se(d);if(d.target instanceof SVGElement&&d.target.classList.contains("echo-shape")){const f=d.target.dataset.shapeId;if(f&&r.selectedShapeId===f){const g=r.shapes.find(m=>m.id===f);if(g){i.startDrag(h),i.updateDragOffset(g,h);return}}}i.setInitialClick(h)},handleMove:d=>{const h=se(d,{useClientCoords:!0}),f=se(d);if(a({mousePosition:h}),r.isDragging&&r.selectedShapeId&&r.dragStartPos&&r.shapes.find(m=>m.id===r.selectedShapeId)){const m=f.x-r.dragStartPos.x,w=f.y-r.dragStartPos.y,S=r.shapes.map(k=>k.id===r.selectedShapeId?{...k,points:k.points.map(C=>({x:C.x+m,y:C.y+w}))}:k);a({shapes:S}),i.startDrag(f);return}if(r.initialClickPos&&!r.isDrawing){Le(r.initialClickPos,f)>=Ne&&i.startDrawing(r.initialClickPos);return}r.isDrawing&&i.updateDrawing(f)},handleEnd:d=>{if(r.isDragging){i.stopDrag();return}if(r.initialClickPos&&!r.isDrawing){const h=se(d);if(Le(r.initialClickPos,h)<Ne&&d.target instanceof SVGElement&&d.target.classList.contains("echo-shape")){const g=d.target.dataset.shapeId;g&&a({selectedShapeId:g})}}i.setInitialClick(null),i.finishDrawing()},handleEnter:d=>{d.target===d.currentTarget&&!r.hasDrawn&&a({showTooltip:!0})},handleLeave:d=>{d.target===d.currentTarget&&a({showTooltip:!1})},startDrag:d=>{a({isDragging:!0,dragStartPos:d})},stopDrag:()=>{a({isDragging:!1,dragStartPos:null,dragOffset:null})},setInitialClick:d=>{a({initialClickPos:d})},updateDragOffset:(d,h)=>{a({dragOffset:{x:h.x-d.points[0].x,y:h.y-d.points[0].y}})}};return{state:r,setState:a,methods:i}},Nt=(e,n,t,r)=>{var f;const o=(r==null?void 0:r.reduce((g,m)=>(g[m.id]=m.defaultValue??(m.type==="checkbox"?[]:""),g),{}))||{},a=me(n),i=(a==null?void 0:a.feedback.customInputValues)||{},l={...o,...i},[s,d]=we({message:((f=a==null?void 0:a.feedback)==null?void 0:f.message)||"",screenshot:void 0,isCapturing:!1,isMinimized:!1,customInputValues:l,hasUserInteracted:!1});return{state:s,setState:(g,m=!1)=>{const w="isCapturing"in g||"isMinimized"in g||m;!w&&!s.hasUserInteracted&&d({hasUserInteracted:!0}),d(g),(s.hasUserInteracted||w)&&(t==null||t(g,m))}}},qt=(e,n)=>{const[t,r]=we({text:e.textConfig,isOpen:!1,primaryColor:e.primaryColor,notification:{show:!1,type:null,message:null},dimensions:{width:document.documentElement.clientWidth,height:document.documentElement.scrollHeight},isStoredFeedbackOpen:!1,pagesCount:Ie(),welcomeMessageIsClosing:!1,position:e.position,customInputs:e.customInputs,disableMinimization:e.disableMinimization});return{state:t,setState:r}},Ve=e=>{var n;return((n=e.customInputs)==null?void 0:n.reduce((t,r)=>(t[r.id]=r.defaultValue??(r.type==="checkbox"?[]:""),t),{}))||{}},Vt=e=>{let n=ge();const t=qt(e),r=wt(t),o=gt(t),a=Nt(e,n,(d,h)=>{r(n,{feedback:{...a.state,...d},drawing:i.state},h)},e.customInputs),i=jt(e,n,(d,h)=>{r(n,{feedback:a.state,drawing:{...i.state,...d}},h)}),l=d=>{n=d;const h=me(n),f={...Ve(e),...h==null?void 0:h.feedback.customInputValues};a.setState({message:(h==null?void 0:h.feedback.message)||"",customInputValues:f,hasUserInteracted:!1}),i.setState({shapes:(h==null?void 0:h.drawing.shapes)||[]})},s=()=>{Oe(n);const d={feedback:{message:"",screenshot:void 0,isCapturing:!1,isMinimized:!1,hasUserInteracted:!1,customInputValues:Ve(e)},drawing:{isDrawing:!1,currentPoints:[],shapes:[],selectedShapeId:null,selectedTool:"rectangle",selectedColor:e.primaryColor,showTooltip:!0,mousePosition:{x:0,y:0},hasDrawn:!1,isDragging:!1,dragStartPos:null,initialClickPos:null,dragOffset:null,cursor:i.state.cursor},widget:{isOpen:!1}};a.setState(d.feedback,!0),i.setState(d.drawing,!0),t.setState(d.widget)};return{feedback:a,drawing:i,widget:t,methods:{reset:s,handlePageChange:l,submit:async d=>{t.setState({isOpen:!1});try{const h=await e.onSubmit(d);return h instanceof Response&&!h.ok?(o.show({type:"error",message:"Submission failed"}),h):(s(),o.show({type:"success",message:"Feedback submitted"}),h)}catch{o.show({type:"error",message:"Submission failed"})}}}}},We=c.createContext(),Wt=e=>{const n=Vt({primaryColor:e.primaryColor,onSubmit:e.onSubmit,textConfig:e.textConfig,position:e.position,customInputs:e.customInputs,disableMinimization:e.disableMinimization});return c.createComponent(We.Provider,{value:n,get children(){return e.children}})},x=()=>{const e=c.useContext(We);if(!e)throw new Error("useEchoStore must be used within EchoProvider");return e},Bt=e=>{const[n,t]=c.createSignal({width:document.documentElement.clientWidth,height:document.documentElement.scrollHeight}),r=()=>{requestAnimationFrame(()=>{const o=e();o&&(o.style.height="0px",o.style.height=`${document.documentElement.scrollHeight}px`,t({width:document.documentElement.clientWidth,height:document.documentElement.scrollHeight}))})};return T({event:"resize",callback:r,onMount:r}),ye({target:document.documentElement,options:{childList:!0,subtree:!0,attributes:!0},callback:r}),n},Yt=({onUrlChange:e})=>{let n=ge();const t=()=>{const r=ge();r!==n&&(n=r,e(r))};T({event:"popstate",callback:t}),T({event:"pushstate",callback:t}),T({event:"replacestate",callback:t}),ye({target:document.documentElement,options:{childList:!0,subtree:!0},callback:t})},_t=`*,*:before,*:after{box-sizing:border-box}.echo-root{position:absolute;top:0;left:0;z-index:var(--z-root);isolation:isolate;pointer-events:none;--z-root: 999999;--z-launcher: 2;--z-overlay: 1;--z-drawing-toolbar: 3;--z-drawing-tooltip: 3;--z-shape-actions: 3;--z-notification: 2;--z-welcome-message: 2;--z-widget-button: 2;--z-feedback-form: 4;--primary-color: #000;--primary-text-color: #fff;--error-color: #f44336;--success-color: var(--primary-color);--text-dark: #1a1a1a;--text-medium: #333;--text-light: #666;--text-lighter: #999;--border-color: rgba(0, 0, 0, .1);--border-color-light: rgba(0, 0, 0, .05);--border-color-medium: rgba(0, 0, 0, .08);--background-color: #fff;--primary-color-lighter: color-mix(in srgb, var(--primary-color) 100%, white 40%);--primary-color-lightest: color-mix(in srgb, var(--primary-color) 7%, white 100%);--hover-color: color-mix(in srgb, var(--primary-color) 80%, #fff);--shadow-color-dark: rgba(0, 0, 0, .6);--shadow-color-light: rgba(255, 255, 255, .1);--shadow-color-medium: rgba(0, 0, 0, .2);--shadow-sm: 0 1px 3px;--shadow-md: 0 4px 10px;--shadow-lg: 0 10px 20px;--shadow-black-sm: var(--shadow-sm) rgba(0, 0, 0, .5);--shadow-black-md: var(--shadow-md) rgba(0, 0, 0, .5);--shadow-black-lg: var(--shadow-lg) rgba(0, 0, 0, .5);--shadow-black-lightened-sm: var(--shadow-sm) var(--shadow-color-medium);--shadow-black-lightened-md: var(--shadow-md) var(--shadow-color-medium);--shadow-black-lightened-lg: var(--shadow-lg) var(--shadow-color-medium);--shadow-primary-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color) 60%, transparent 80%);--shadow-primary-md: var(--shadow-md) color-mix(in srgb, var(--primary-color) 50%, transparent 80%);--shadow-primary-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color) 40%, transparent 80%);--shadow-primary-lighter-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color-lighter) 70%, transparent 80%);--shadow-primary-lighter-md: var(--shadow-md) color-mix(in srgb, var(--primary-color-lighter) 60%, transparent 80%);--shadow-primary-lighter-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color-lighter) 50%, transparent 80%);--shadow-primary-lightest-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color-lightest) 70%, transparent 80%);--shadow-primary-lightest-md: var(--shadow-md) color-mix(in srgb, var(--primary-color-lightest) 60%, transparent 80%);--shadow-primary-lightest-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color-lightest) 50%, transparent 80%);--shadow-combined-sm: var(--shadow-primary-sm), var(--shadow-black-lightened-sm);--shadow-combined-md: var(--shadow-primary-md), var(--shadow-black-lightened-md);--shadow-combined-lg: var(--shadow-primary-lg), var(--shadow-black-lightened-lg);--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 20px;--spacing-2xl: 24px;--spacing-3xl: 32px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--font-xs: .8125rem;--font-sm: .875rem;--font-base: .9375rem;--font-md: 1rem;--font-lg: 1.125rem;--duration-fast: .1s;--duration-base: .2s;--duration-slow: .3s;--duration-slower: .4s;--duration-slowest: .6s;--ease-default: ease;--ease-in-out: ease-in-out;--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.16, 1, .3, 1)}.echo-stored-feedback{position:absolute;display:flex;flex-direction:column;bottom:calc(100% + var(--spacing-lg));right:0;width:320px;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-black-lightened-lg);animation:slideUpFade var(--duration-base) var(--ease-smooth);z-index:calc(var(--z-widget-button) + 1);transform-origin:bottom right;transition:all var(--duration-base) var(--ease-smooth)}.echo-stored-feedback-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg)}.echo-stored-feedback-header h3{margin:0;font-size:var(--font-md);font-weight:600}.echo-stored-feedback-list{max-height:400px;overflow-y:auto;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-stored-feedback-item{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--border-color-light);transition:all var(--duration-base) var(--ease-smooth);background:#fff;position:relative}.echo-stored-feedback-item:hover{background:var(--primary-color-lightest)}.echo-stored-feedback-item-current{background:var(--primary-color-lightest);padding-left:calc(var(--spacing-lg) - 3px)}.echo-stored-feedback-item-current:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--primary-color);border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.echo-stored-feedback-item:last-child{border-bottom:none;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-stored-feedback-item:last-child.echo-stored-feedback-item-current:before{border-bottom-left-radius:var(--radius-lg)}.echo-stored-feedback-content{flex:1;min-width:0;margin-right:var(--spacing-md)}.echo-stored-feedback-path{font-size:var(--font-sm);font-weight:500;color:var(--text-medium);margin-bottom:var(--spacing-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.echo-stored-feedback-preview{font-size:var(--font-xs);color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.echo-stored-feedback-actions{display:flex;align-items:center;gap:var(--spacing-sm)}.echo-stored-feedback-link{color:var(--text-light)}.echo-stored-feedback-link:hover{color:var(--primary-color)}.echo-stored-feedback-delete{color:var(--text-light);font-size:var(--font-xs);padding:var(--spacing-xs) var(--spacing-md)}.echo-stored-feedback-delete:hover{color:var(--error-color);background:color-mix(in srgb,var(--error-color) 10%,transparent)}.echo-stored-feedback-empty{padding:var(--spacing-3xl) var(--spacing-lg);text-align:center;color:var(--text-light);font-size:var(--font-sm);border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-launcher{position:fixed;z-index:var(--z-launcher);bottom:var(--spacing-xl);right:var(--spacing-xl);pointer-events:none}.echo-overlay{position:absolute;top:0;left:0;margin:0;padding:0;max-width:none;max-height:none;border:3px solid var(--primary-color);background:transparent}.echo-overlay::backdrop{background:transparent}[data-hidden=true],[data-hidden=false]{transition:opacity var(--duration-slow) var(--ease-in-out),visibility var(--duration-slow) var(--ease-in-out)}[data-hidden=true]{opacity:0;visibility:hidden;pointer-events:none}[data-hidden=false]{opacity:1;visibility:visible;pointer-events:auto;user-select:none;-webkit-user-select:none}.echo-launcher-button{z-index:var(--z-widget-button);position:relative;display:flex;align-items:center;justify-content:center;cursor:pointer;background:radial-gradient(circle at 40% 40%,var(--primary-color) 0%,var(--primary-color-lighter) 65%,var(--primary-color-lighter) 100%);border:none;border-radius:var(--radius-full);width:48px;height:48px;box-shadow:var(--shadow-black-md);transition:all var(--duration-slow) var(--ease-default),transform var(--duration-slower) var(--ease-smooth),opacity var(--duration-slow) var(--ease-in-out);will-change:transform}.echo-launcher-button:hover{box-shadow:var(--shadow-black-lg);transform:translateY(-2px)}.echo-launcher-button:active{transform:scale(.95)}.echo-launcher-button-count{position:absolute;top:calc(-1 * var(--spacing-xs));left:calc(-1 * var(--spacing-xs));background:var(--primary-color-lightest);color:var(--primary-color-lighter);border-radius:var(--radius-md);min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-black-sm);padding:0 var(--spacing-xs);font-weight:600;pointer-events:auto;cursor:pointer;transform-origin:center center;animation:popIn var(--duration-slow) var(--ease-bounce);transition:transform var(--duration-base) var(--ease-default)}.echo-launcher-button-count:hover{transform:scale(1.1)}.echo-feedback{position:fixed;bottom:var(--spacing-xl);right:var(--spacing-xl);width:min(calc(100vw - var(--spacing-xl) * 2),24rem);max-height:calc(100vh - var(--spacing-xl) * 2);z-index:var(--z-feedback-form);box-shadow:var(--shadow-black-lightened-lg);display:flex;flex-direction:column;gap:var(--spacing-lg);background:var(--background-color);border-radius:var(--radius-lg);overflow-y:auto;will-change:transform;padding:0 var(--spacing-lg)}.echo-feedback[data-minimized=true]{transition:transform .4s var(--ease-default),box-shadow .4s var(--ease-default);transform:translate(calc(100% - 48px),calc(100% - 48px));box-shadow:0 8px 16px #0003}.echo-feedback[data-minimized=true]:hover{cursor:pointer;transform:translate(calc(100% - 48px),calc(100% - 48px)) rotate(-2deg) scale(1.1);box-shadow:0 12px 24px #00000040}.echo-feedback[data-minimized=false]{transition:transform .4s var(--ease-smooth),box-shadow .4s var(--ease-smooth);transform:translate(0)}.echo-feedback[style*=transition]{pointer-events:none}.echo-feedback-content{display:flex;flex-direction:column;gap:var(--spacing-lg)}.echo-feedback-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg) 0;background-color:var(--background-color);position:sticky;top:0;z-index:1}.echo-feedback-footer{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg) 0;background-color:var(--background-color);position:sticky;bottom:0;z-index:1}.echo-feedback-title{font-size:var(--font-lg);font-weight:600;color:var(--text-dark);margin:0}.echo-feedback-header-actions{display:flex;gap:var(--spacing-xs);margin:calc(-1 * var(--spacing-sm)) calc(-1 * var(--spacing-sm)) calc(-1 * var(--spacing-sm)) 0}[data-hide-when-drawing=true]{opacity:1;visibility:visible;transition:opacity .3s ease-in-out,visibility .3s ease-in-out}[data-drawing=true] [data-hide-when-drawing=true]{opacity:0;visibility:hidden;pointer-events:none;user-select:none;-webkit-user-select:none}.echo-drawing-layer,.echo-drawing-layer-container{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;user-select:none;-webkit-user-select:none}.echo-drawing-layer-container svg{pointer-events:auto}.echo-drawing-toolbar{position:fixed;top:var(--spacing-xl);left:var(--spacing-xl);display:flex;flex-direction:column;gap:var(--spacing-sm);z-index:var(--z-drawing-toolbar);opacity:1;transition:opacity var(--duration-base) var(--ease-default)}.echo-drawing-toolbar-button{width:50px;height:50px;border-radius:var(--radius-full);border:2px solid #ddd;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:all var(--duration-base) var(--ease-default);box-shadow:var(--shadow-black-sm);position:relative}.echo-drawing-toolbar-icon{width:25px;height:25px;color:var(--primary-color);transition:color var(--duration-base) var(--ease-default)}.echo-drawing-toolbar-button:hover{transform:scale(1.05);border-color:var(--hover-color)}.echo-drawing-toolbar-button[data-selected=true]{background:var(--primary-color-lightest);border-color:var(--primary-color)}.echo-color-selector{position:relative}.echo-color-selector:hover .echo-drawing-toolbar-button{border-top-right-radius:0;border-bottom-right-radius:0;transform:scale(1.05);border-right-color:transparent;background:rgba(var(--primary-color),.9);border-color:var(--hover-color)}.echo-color-swatch-wrapper{position:absolute;left:calc(100% - 2px);top:50%;transform:translateY(-50%);height:52.5px;padding-right:var(--spacing-sm);display:none}.echo-color-selector:hover .echo-color-swatch-wrapper{display:block}.echo-color-swatch{height:100%;background:#fff;border-radius:var(--radius-md);border-top-left-radius:0;border-bottom-left-radius:0;padding:var(--spacing-sm);padding-left:var(--spacing-md);box-shadow:var(--shadow-black-sm);display:flex;align-items:center;gap:var(--spacing-sm);border:2px solid #ddd;border-left:none}.echo-color-selector:hover .echo-color-swatch{border-color:var(--hover-color)}.echo-color-swatch-button{width:24px;height:24px;border-radius:var(--radius-full);border:2px solid transparent;cursor:pointer;padding:0;transition:transform var(--duration-base) var(--ease-default)}.echo-color-swatch-button:hover{transform:scale(1.1)}.echo-color-swatch-button[data-selected=true]{border-color:var(--primary-color)}.echo-drawing-tooltip{display:flex;text-wrap:nowrap;position:fixed;background:#fff;padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-lg);box-shadow:var(--shadow-combined-sm);font-size:var(--font-sm);color:var(--primary-color);z-index:var(--z-drawing-tooltip);pointer-events:none;animation:slideDownFade var(--duration-slow) var(--ease-default);border:1px solid var(--primary-color);background:var(--primary-color-lightest)}.echo-shape-actions{position:fixed;z-index:var(--z-shape-actions);display:flex;gap:var(--spacing-xs);background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-combined-md);transform:translate(-50%,-100%) translateY(calc(-1 * var(--spacing-sm)));animation:popInSlideDown var(--duration-fast) var(--ease-default);cursor:default;pointer-events:auto;padding:var(--spacing-xs);border:1px solid var(--primary-color)}.echo-shape-actions-divider{width:1px;margin:var(--spacing-sm) 0;background:var(--border-color);pointer-events:none}.echo-shape-actions[hidden]{display:none}.echo-notification{position:absolute;z-index:var(--z-notification);bottom:70px;right:0;width:300px;padding:var(--spacing-2xl);border-radius:var(--radius-lg);font-size:var(--font-md);font-weight:500;box-shadow:var(--shadow-combined-md);background:#fff;border:1px solid var(--primary-color);transform-origin:bottom right;display:flex;flex-direction:column;align-items:center;gap:var(--spacing-xl);opacity:1;pointer-events:auto;transition:all var(--duration-base) var(--ease-smooth)}.echo-notification:not([data-empty=true]){animation:popInSlideUp var(--duration-slower) var(--ease-spring)}.echo-notification[data-empty=true]{opacity:0;pointer-events:none;transform:translateY(var(--spacing-sm)) scale(.95);transition:none}.echo-notification-hide{position:absolute;top:var(--spacing-lg);right:var(--spacing-lg);width:24px;height:24px;padding:var(--spacing-xs);border:none;background:transparent;color:var(--text-light);opacity:.7;cursor:pointer;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;transition:all var(--duration-base) var(--ease-bounce);flex-shrink:0}.echo-notification-hide:hover{opacity:1;background:var(--primary-color-lightest);transform:scale(1.1);color:var(--primary-color)}.echo-notification-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;transform:scale(1.5);background:var(--primary-color-lightest);padding:var(--spacing-md);border-radius:var(--radius-full);margin-top:var(--spacing-md);transition:all var(--duration-base) var(--ease-bounce)}.echo-notification[data-type=success]{border-color:var(--success-color)}.echo-notification[data-type=success] .echo-notification-icon{color:var(--success-color)}.echo-notification[data-type=error]{border-color:var(--error-color)}.echo-notification[data-type=error] .echo-notification-icon{color:var(--error-color);background:color-mix(in srgb,var(--error-color) 10%,white)}.echo-notification-content{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;padding:0 12px}.echo-notification-title{font-size:1rem;font-weight:600;color:#1a1a1a}.echo-notification-message{font-size:.875rem;font-weight:400;color:#666;line-height:1.4;max-width:100%}@media (max-width: 768px){.echo-notification{right:0;width:calc(100vw - 40px);height:auto;min-height:180px;-webkit-backdrop-filter:none;backdrop-filter:none;font-size:.9375rem;padding:20px;gap:16px;bottom:calc(100% + 20px)}.echo-notification-icon{transform:scale(1.3);padding:10px;margin-top:8px}.echo-notification-title{font-size:.9375rem}.echo-notification-message{font-size:.8125rem}}.echo-welcome-message{display:flex;align-items:center;gap:var(--spacing-xs);position:fixed;z-index:var(--z-welcome-message);background:var(--primary-color-lightest);border:1px solid var(--primary-color);color:var(--primary-color);padding:var(--spacing-md) var(--spacing-lg);border-radius:var(--radius-lg);font-size:var(--font-sm);font-weight:500;box-shadow:var(--shadow-combined-md);opacity:1;transform:translateY(0) scale(1);transition:all var(--duration-slow) var(--ease-smooth);animation:bounceIn var(--duration-slowest) var(--ease-bounce);user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;cursor:pointer;text-align:left}.echo-welcome-message:hover{transform:translateY(-2px) scale(1.02);background:var(--primary-color-lightest);box-shadow:var(--shadow-combined-lg)}.echo-welcome-message:active{transform:translateY(0) scale(.98)}.echo-welcome-message-close{width:20px;height:20px;padding:2px;margin-left:var(--spacing-xs);border:none;background:transparent;opacity:.7;cursor:pointer;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;transition:all var(--duration-base) var(--ease-default)}.echo-welcome-message-close:hover{opacity:1;background:var(--shadow-color-light);transform:scale(1.1)}.echo-welcome-message-close:active{transform:scale(.95)}.echo-welcome-message:after{content:"";position:absolute;bottom:-4px;right:17px;width:16px;height:16px;background:inherit;transform:rotate(45deg);border-radius:var(--radius-xs);border:1px solid var(--primary-color);z-index:-2}.echo-welcome-message:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:var(--primary-color-lightest);z-index:-1;border-radius:var(--radius-lg)}.echo-welcome-message-pulsar{content:"";display:inline-block;width:6px;height:6px;background:var(--primary-color);border-radius:50%;margin-right:8px;animation:pulse 1.5s var(--ease-in-out) infinite}.echo-button{display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius-md);font-weight:500;cursor:pointer;transition:all var(--duration-base) var(--ease-default);line-height:1}.echo-button:focus-visible{outline:2px solid var(--primary-color);outline-offset:2px}.echo-button-primary{background:var(--primary-color);color:#fff}.echo-button-primary:hover{background:var(--hover-color);transform:translateY(-1px)}.echo-button-primary:active{transform:translateY(0)}.echo-button-secondary{background:transparent;color:var(--text-light)}.echo-button-secondary:hover{background-color:var(--primary-color-lightest);color:var(--primary-color)}.echo-button-xs{padding:var(--spacing-xs);font-size:var(--font-xs)}.echo-button-sm{padding:var(--spacing-xs);font-size:var(--font-sm)}.echo-button-md{padding:var(--spacing-md) var(--spacing-2xl);font-size:var(--font-base)}.echo-button-lg{padding:var(--spacing-md) var(--spacing-3xl);font-size:var(--font-md)}@keyframes slideUpFade{0%{opacity:0;transform:translateY(var(--spacing-sm))}to{opacity:1;transform:translateY(0)}}@keyframes slideDownFade{0%{opacity:0;transform:translateY(calc(-1 * var(--spacing-sm)))}to{opacity:1;transform:translateY(0)}}@keyframes popIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes popInSlideUp{0%{opacity:0;transform:translateY(var(--spacing-sm)) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes popInSlideDown{0%{opacity:0;transform:translate(-50%,-100%) translateY(calc(-1 * var(--spacing-xs))) scale(.95)}to{opacity:1;transform:translate(-50%,-100%) translateY(calc(-1 * var(--spacing-sm))) scale(1)}}@keyframes bounceIn{0%{opacity:0;transform:translateY(var(--spacing-xl)) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.5}to{transform:scale(1);opacity:1}}.echo-inputs{display:flex;flex-direction:column;gap:1rem;margin-bottom:1rem}.echo-input{display:flex;flex-direction:column;gap:.5rem}.echo-input-label{font-size:.875rem;font-weight:500;color:var(--text-color)}.echo-input-required{color:#dc2626;margin-left:.25rem}.echo-input-field{width:100%;padding:.5rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:#fff;color:var(--text-medium);font-size:var(--font-sm);transition:all var(--duration-base) var(--ease-default)}.echo-input-field:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-input-field:disabled{opacity:.5}.echo-input-field::placeholder{color:var(--text-lighter)}textarea.echo-input-field{resize:vertical;max-width:100%;max-height:20rem;box-sizing:border-box}select.echo-input-field{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center;padding-right:2.5rem;cursor:pointer}.echo-input-options-wrapper{display:flex;flex-direction:column;gap:var(--spacing-xl);border:none;margin:0;padding:0}.echo-input-options{display:flex;flex-direction:column;gap:var(--spacing-sm);border:none;margin:0;padding:0}.echo-input-option{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:var(--spacing-xs);border-radius:var(--radius-sm);transition:all var(--duration-base) var(--ease-default)}.echo-input-option:hover{background:var(--primary-color-lightest)}.echo-input-option input[type=radio],.echo-input-option input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;width:18px;height:18px;border:1px solid var(--border-color);background-color:#fff;display:grid;place-content:center;cursor:pointer;transition:all var(--duration-base) var(--ease-default)}.echo-input-option input[type=radio]{border-radius:50%}.echo-input-option input[type=radio]:before{content:"";width:10px;height:10px;border-radius:50%;transform:scale(0);transition:transform var(--duration-base) var(--ease-default);background-color:var(--primary-color)}.echo-input-option input[type=radio]:checked:before{transform:scale(1)}.echo-input-option input[type=checkbox]{border-radius:var(--radius-sm)}.echo-input-option input[type=checkbox]:before{content:"";width:12px;height:12px;transform:scale(0);transition:all var(--duration-base) var(--ease-default);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");background-size:contain;background-repeat:no-repeat;background-position:center}.echo-input-option input[type=checkbox]:checked{background-color:var(--primary-color-lighter);border-color:var(--primary-color-lighter)}.echo-input-option input[type=checkbox]:checked:before{transform:scale(1)}.echo-input-option input[type=radio]:hover,.echo-input-option input[type=checkbox]:hover{border-color:var(--primary-color-lighter)}.echo-input-option input[type=radio]:focus,.echo-input-option input[type=checkbox]:focus{outline:none;border-color:var(--primary-color-lighter);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-input-option input[type=radio]:checked,.echo-input-option input[type=checkbox]:checked{border-color:var(--primary-color-lighter)}.echo-input-option span{font-size:var(--font-sm);color:var(--text-medium);-webkit-user-select:none;user-select:none}.echo-select{position:relative;width:100%}.echo-select-trigger{width:100%;padding:.5rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:#fff;color:var(--text-medium);font-size:var(--font-sm);transition:all var(--duration-base) var(--ease-default);cursor:pointer;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:.5rem;outline:none}.echo-select-trigger[data-placeholder=true]{color:var(--text-lighter)}.echo-select-trigger:hover{border-color:var(--border-color-medium)}.echo-select-trigger:focus,.echo-select-trigger[data-open=true]{border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-select-arrow{flex-shrink:0;transition:transform var(--duration-base) var(--ease-default)}.echo-select-trigger[data-open=true] .echo-select-arrow{transform:rotate(180deg)}.echo-select-dropdown{position:absolute;top:calc(100% + .25rem);left:0;right:0;background:#fff;border:1px solid var(--border-color-medium);border-radius:var(--radius-md);box-shadow:var(--shadow-black-lightened-md);max-height:15rem;overflow-y:auto;z-index:10;animation:slideDownFade var(--duration-base) var(--ease-default);padding:var(--spacing-xs)}.echo-select-option{width:100%;padding:.5rem .75rem;background:none;border:none;text-align:left;color:var(--text-medium);font-size:var(--font-sm);cursor:pointer;transition:all var(--duration-base) var(--ease-default);outline:none;border-radius:var(--radius-sm)}.echo-select-option:hover{background:var(--primary-color-lightest)}.echo-select-option:focus{background:var(--primary-color-lightest);box-shadow:0 0 0 1px var(--primary-color) inset}.echo-select-option[data-selected=true]{background:var(--primary-color-lightest);color:var(--primary-color);font-weight:500}select.echo-input-field{display:none}.visually-hidden{position:absolute;left:50%;bottom:0;transform:translate(-50%);width:1px;height:1px;padding:0;margin:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}`;var Ut=b('<div class=echo-color-selector role=group aria-label="Color Selection"><button class=echo-drawing-toolbar-button title="Current Color"></button><div class=echo-color-swatch-wrapper role=listbox aria-label="Available Colors"><div class=echo-color-swatch>'),Ht=b("<button class=echo-color-swatch-button role=option>");const Xt=["#ff6b6b","#69db7c","#74c0fc","#ffd43b","#da77f2","#66d9e8","#ffa94d","#e599f7"],Kt={"#ff6b6b":"Soft Red","#69db7c":"Soft Green","#74c0fc":"Soft Blue","#ffd43b":"Soft Yellow","#da77f2":"Soft Purple","#66d9e8":"Soft Cyan","#ffa94d":"Soft Orange","#e599f7":"Soft Pink"},xe=e=>Kt[e]||"Primary",Gt=()=>{const e=x();return(()=>{var n=Ut(),t=n.firstChild,r=t.nextSibling,o=r.firstChild;return u(t,"aria-expanded",!1),v(o,c.createComponent(c.For,{get each(){return[e.widget.state.primaryColor,...Xt]},children:a=>(()=>{var i=Ht();return i.$$click=()=>e.drawing.setState({selectedColor:a}),a!=null?i.style.setProperty("background-color",a):i.style.removeProperty("background-color"),c.createRenderEffect(l=>{var s=`Select ${xe(a)} color`,d=e.drawing.state.selectedColor===a,h=`${xe(a)} color`,f=e.drawing.state.selectedColor===a;return s!==l.e&&u(i,"title",l.e=s),d!==l.t&&u(i,"data-selected",l.t=d),h!==l.a&&u(i,"aria-label",l.a=h),f!==l.o&&u(i,"aria-selected",l.o=f),l},{e:void 0,t:void 0,a:void 0,o:void 0}),i})()})),c.createRenderEffect(a=>{var i=`Current color: ${xe(e.drawing.state.selectedColor)}`,l=e.drawing.state.selectedColor;return i!==a.e&&u(t,"aria-label",a.e=i),l!==a.t&&((a.t=l)!=null?t.style.setProperty("background-color",l):t.style.removeProperty("background-color")),a},{e:void 0,t:void 0}),n})()};E(["click"]);var Zt=b('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="m9 18 6-6-6-6">');const Qt=e=>(()=>{var n=Zt();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var Jt=b('<svg viewBox="0 0 64 66"fill=none><path d="M59.716 36.936L54.9 33l-6.17 5.108a77.278 77.278 0 00-12.744 13.469l-3.637 4.914-3.778-5.017a83.719 83.719 0 00-13.956-14.538L9.799 33l2.86-2.332A104.39 104.39 0 0030.1 12.5l2.24-2.98 1.736 2.298a111.905 111.905 0 0018.608 19.384l2.206 1.81 2.861-2.333a104.13 104.13 0 005.297-4.641C59.978 11.294 47.409.26 32.349.26 14.997.26.92 14.923.92 33c0 18.076 14.077 32.74 31.43 32.74 15.102 0 27.715-11.103 30.73-25.892a75.808 75.808 0 00-3.375-2.912h.011z">');const en=e=>(()=>{var n=Jt(),t=n.firstChild;return c.createRenderEffect(r=>{var o=e.size??24,a=e.size??24,i=e.class,l=e.style,s=e.fill??"currentColor";return o!==r.e&&u(n,"width",r.e=o),a!==r.t&&u(n,"height",r.t=a),i!==r.a&&u(n,"class",r.a=i),r.o=z(n,l,r.o),s!==r.i&&u(t,"fill",r.i=s),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),n})();var tn=b('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M3 7V5a2 2 0 0 1 2-2h2"></path><path d="M17 3h2a2 2 0 0 1 2 2v2"></path><path d="M21 17v2a2 2 0 0 1-2 2h-2"></path><path d="M7 21H5a2 2 0 0 1-2-2v-2">');const nn=e=>(()=>{var n=tn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var rn=b('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z">');const an=e=>(()=>{var n=rn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var on=b('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M3 6h18"></path><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"></path><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"></path><line x1=10 x2=10 y1=11 y2=17></line><line x1=14 x2=14 y1=11 y2=17>');const Be=e=>(()=>{var n=on();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var cn=b('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><circle cx=12 cy=12 r=10></circle><path d="m9 12 2 2 4-4">');const sn=e=>(()=>{var n=cn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var ln=b('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><circle cx=12 cy=12 r=10></circle><path d="m15 9-6 6"></path><path d="m9 9 6 6">');const dn=e=>(()=>{var n=ln();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var un=b('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M18 6 6 18"></path><path d="m6 6 12 12">');const ue=e=>(()=>{var n=un();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var hn=b('<div class=echo-drawing-toolbar data-hide-when-drawing=true role=toolbar aria-label="Drawing Tools"><button class=echo-drawing-toolbar-button title="Clear drawings"aria-label="Clear all drawings"role=button>'),fn=b("<button class=echo-drawing-toolbar-button role=button>");const gn={rectangle:nn,path:an},mn=()=>{const e=x(),n=Object.values(F);return(()=>{var t=hn(),r=t.firstChild;return v(t,c.createComponent(c.For,{each:n,children:o=>{const a=gn[o.id];return(()=>{var i=fn();return i.$$click=()=>e.drawing.setState({selectedTool:o.id}),v(i,c.createComponent(a,{class:"echo-drawing-toolbar-icon","aria-hidden":"true"})),c.createRenderEffect(l=>{var s=o.label,d=e.drawing.state.selectedTool===o.id,h=o.label,f=e.drawing.state.selectedTool===o.id;return s!==l.e&&u(i,"title",l.e=s),d!==l.t&&u(i,"data-selected",l.t=d),h!==l.a&&u(i,"aria-label",l.a=h),f!==l.o&&u(i,"aria-pressed",l.o=f),l},{e:void 0,t:void 0,a:void 0,o:void 0}),i})()}}),r),v(t,c.createComponent(Gt,{}),r),r.$$click=()=>e.drawing.setState({shapes:[]},!0),v(r,c.createComponent(Be,{class:"echo-drawing-toolbar-icon","aria-hidden":"true"})),t})()};E(["click"]);var vn=b("<div class=echo-drawing-tooltip data-hide-when-drawing=true>");const bn=()=>{const e=x(),n=c.createMemo(()=>e.drawing.state.showTooltip&&e.drawing.state.mousePosition.y&&e.drawing.state.mousePosition.x&&e.widget.state.isOpen&&!zt());return c.createComponent(c.Show,{get when(){return n()},get children(){var t=vn();return v(t,()=>e.widget.state.text.drawingTooltip.text),c.createRenderEffect(r=>{var o=`${e.drawing.state.mousePosition.y+20}px`,a=`${e.drawing.state.mousePosition.x+10}px`;return o!==r.e&&((r.e=o)!=null?t.style.setProperty("top",o):t.style.removeProperty("top")),a!==r.t&&((r.t=a)!=null?t.style.setProperty("left",a):t.style.removeProperty("left")),r},{e:void 0,t:void 0}),t}})};var wn=b("<button>");const L=e=>{const n=()=>e.variant||"primary",t=()=>e.size||"md";return(()=>{var r=wn();return it(r,c.mergeProps(e,{get class(){return`echo-button echo-button-${n()} echo-button-${t()} ${e.class}`}}),!1),r})()};var pn=b('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1=10 y1=14 x2=21 y2=3>');const yn=e=>(()=>{var n=pn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var xn=b("<div class=echo-stored-feedback-empty>No unsubmitted feedback"),kn=b("<div class=echo-stored-feedback><div class=echo-stored-feedback-header><h3>Unsubmitted Feedback</h3></div><div class=echo-stored-feedback-list>"),Cn=b("<div><div class=echo-stored-feedback-content><div class=echo-stored-feedback-path></div><div class=echo-stored-feedback-preview></div></div><div class=echo-stored-feedback-actions>");const Sn=()=>{const e=x();let n;const[t,r]=c.createSignal(ve()),[o,a]=c.createSignal(window.location.pathname),i=m=>{m.key==="Escape"&&e.widget.state.isStoredFeedbackOpen&&e.widget.setState({isStoredFeedbackOpen:!1})},l=m=>{if(!e.widget.state.isStoredFeedbackOpen||!n)return;m.composedPath().includes(n)||e.widget.setState({isStoredFeedbackOpen:!1})},s=()=>{const m=ve();r(m),e.widget.setState({pagesCount:m.length})},d=()=>{a(window.location.pathname)};T({event:"echo-storage-change",callback:s}),T({event:"popstate",callback:d}),ye({target:document.documentElement,options:{childList:!0,subtree:!0},callback:()=>{a(window.location.pathname)}}),T({event:"keydown",callback:i}),T({event:"click",callback:l});const h=(m,w)=>{const S=w?`${m}${w}`:m;window.location.href=S,e.widget.setState({isStoredFeedbackOpen:!1})},f=m=>{o()===m&&e.methods.reset(),Oe(m);const w=ve();r(w),e.widget.setState({pagesCount:w.length})},g=m=>{if(m==="/")return"/";const w=m.split("/");return w.length<=4?m:`/${w[1]}/.../${w[w.length-1]}`};return c.createComponent(c.Show,{get when(){return e.widget.state.isStoredFeedbackOpen},get children(){var m=kn(),w=m.firstChild;w.firstChild;var S=w.nextSibling,k=n;return typeof k=="function"?D(k,m):n=m,v(w,c.createComponent(L,{variant:"secondary",size:"sm",onClick:()=>e.widget.setState({isStoredFeedbackOpen:!1}),get children(){return c.createComponent(ue,{size:20})}}),null),v(S,c.createComponent(c.For,{get each(){return t()},children:C=>{const p=c.createMemo(()=>C.path===o());return(()=>{var $=Cn(),P=$.firstChild,y=P.firstChild,W=y.nextSibling,j=P.nextSibling;return v(y,()=>g(C.path)),v(W,()=>C.state.feedback.message),v(j,(()=>{var O=c.createMemo(()=>!p());return()=>O()&&c.createComponent(L,{class:"echo-stored-feedback-link",variant:"secondary",size:"sm",onClick:()=>h(C.path,C.state.latestQuery),get children(){return c.createComponent(yn,{})}})})(),null),v(j,c.createComponent(L,{class:"echo-stored-feedback-delete",variant:"secondary",size:"sm",onClick:()=>f(C.path),children:"Delete"}),null),c.createRenderEffect(O=>{var Ue=`echo-stored-feedback-item ${p()?"echo-stored-feedback-item-current":""}`,He=C.path;return Ue!==O.e&&Ce($,O.e=Ue),He!==O.t&&u(y,"title",O.t=He),O},{e:void 0,t:void 0}),$})()}}),null),v(S,c.createComponent(c.Show,{get when(){return t().length===0},get children(){return xn()}}),null),m}})};var En=b('<button class=echo-launcher-button aria-label="Open feedback form"role=button>'),$n=b("<span class=echo-launcher-button-count role=button tabindex=0>");const Pn=()=>{const e=x(),[n,t]=c.createSignal(!1);let r;const o=()=>{r&&window.clearTimeout(r),!e.widget.state.disableMinimization&&(r=window.setTimeout(()=>{const d=V("welcome_message_shown",!1);!e.widget.state.isOpen&&!e.widget.state.isStoredFeedbackOpen&&d&&t(!0)},4e3))},a=()=>{t(!1)},i=()=>{o()},l=d=>{e.widget.setState({isOpen:!e.widget.state.isOpen}),e.widget.setState({welcomeMessageIsClosing:!0}),G("welcome_message_shown",!0)};c.createEffect(()=>{e.widget.state.isOpen||(t(!1),e.widget.state.disableMinimization||o()),e.widget.state.isStoredFeedbackOpen&&t(!1)});const s=d=>{d.stopPropagation(),e.widget.setState({isStoredFeedbackOpen:!e.widget.state.isStoredFeedbackOpen}),t(!1)};return[(()=>{var d=En();return d.addEventListener("pointerleave",i),d.addEventListener("pointerenter",a),d.$$click=l,v(d,c.createComponent(en,{stroke:"white",fill:"#ffffff","aria-hidden":"true"}),null),v(d,(()=>{var h=c.createMemo(()=>e.widget.state.pagesCount>0);return()=>h()&&(()=>{var f=$n();return f.$$click=s,v(f,()=>e.widget.state.pagesCount),c.createRenderEffect(()=>u(f,"aria-label",`View ${e.widget.state.pagesCount} stored feedback items`)),f})()})(),null),c.createRenderEffect(h=>{var f=e.widget.state.isOpen,g=`translateX(${n()?"45px":"0"})`,m=e.widget.state.isOpen;return f!==h.e&&u(d,"data-hidden",h.e=f),g!==h.t&&((h.t=g)!=null?d.style.setProperty("transform",g):d.style.removeProperty("transform")),m!==h.a&&u(d,"aria-expanded",h.a=m),h},{e:void 0,t:void 0,a:void 0}),d})(),c.createComponent(Sn,{})]};E(["click"]);var zn=b("<div class=echo-notification><div class=echo-notification-icon></div><div class=echo-notification-content><div class=echo-notification-title></div><div class=echo-notification-message>");const Mn=()=>{const e=x(),n=()=>{e.widget.setState({notification:{...e.widget.state.notification,show:!1}})},t=()=>{switch(e.widget.state.notification.type){case"success":return e.widget.state.text.notification.successTitle;case"error":return e.widget.state.text.notification.errorTitle;default:return""}};return(()=>{var r=zn(),o=r.firstChild,a=o.nextSibling,i=a.firstChild,l=i.nextSibling;return v(r,c.createComponent(L,{class:"echo-notification-hide",variant:"secondary",size:"sm",onClick:n,get title(){return e.widget.state.text.notification.hideTitle},get children(){return c.createComponent(ue,{size:20})}}),o),v(o,(()=>{var s=c.createMemo(()=>e.widget.state.notification.type==="success");return()=>s()?c.createComponent(sn,{size:32}):(()=>{var d=c.createMemo(()=>e.widget.state.notification.type==="error");return()=>d()?c.createComponent(dn,{size:32}):null})()})()),v(i,t),v(l,()=>{var s;return(s=e.widget.state.notification)==null?void 0:s.message}),c.createRenderEffect(s=>{var d=e.widget.state.notification.type,h=!e.widget.state.notification.type,f=!e.widget.state.notification.show;return d!==s.e&&u(r,"data-type",s.e=d),h!==s.t&&u(r,"data-empty",s.t=h),f!==s.a&&u(r,"data-hidden",s.a=f),s},{e:void 0,t:void 0,a:void 0}),r})()};var Tn=b("<div class=echo-shape-actions data-hide-when-drawing=true>");const On=()=>{const e=x();let n;const[t,r]=c.createSignal({x:window.scrollX,y:window.scrollY});T({event:"scroll",callback:()=>{r({x:window.scrollX,y:window.scrollY})}});const a=()=>{e.drawing.state.selectedShapeId&&e.drawing.setState({shapes:e.drawing.state.shapes.filter(s=>s.id!==e.drawing.state.selectedShapeId),selectedShapeId:null})},i=c.createMemo(()=>e.drawing.state.selectedShapeId?e.drawing.state.shapes.find(s=>s.id===e.drawing.state.selectedShapeId):null),l=c.createMemo(()=>{const s=i(),d=n==null?void 0:n.getBoundingClientRect();if(!s||!d)return null;let h=null;if(s.type==="rectangle"){const m=je(s.points);if(!m)return null;h={x:m.x+m.width/2,y:m.y}}else if(s.type==="path"&&s.points.length>0)h={x:s.points[0].x,y:s.points[0].y};else return null;const f=8,g=t();return{x:Math.max(d.width/2+f,Math.min(window.innerWidth-d.width/2-f,h.x-g.x)),y:Math.max(d.height+f,Math.min(window.innerHeight-f,h.y-g.y))}});return(()=>{var s=Tn(),d=n;return typeof d=="function"?D(d,s):n=s,s.style.setProperty("top","0"),s.style.setProperty("left","0"),v(s,c.createComponent(L,{onClick:a,size:"sm",variant:"secondary",title:"Delete shape",get children(){return c.createComponent(Be,{size:20})}})),c.createRenderEffect(h=>{var m,w;var f=!l(),g=`translate(calc(${(m=l())==null?void 0:m.x}px - 50%), calc(${(w=l())==null?void 0:w.y}px - 125%))`;return f!==h.e&&(s.hidden=h.e=f),g!==h.t&&((h.t=g)!=null?s.style.setProperty("transform",g):s.style.removeProperty("transform")),h},{e:void 0,t:void 0}),s})()};var In=b("<button class=echo-welcome-message><span class=echo-welcome-message-pulsar></span><div class=echo-welcome-message-close role=button tabindex=0>");const Rn=()=>{const e=x(),n=V("welcome_message_shown",!1),t=o=>{o.stopPropagation(),e.widget.setState({welcomeMessageIsClosing:!0}),G("welcome_message_shown",!0)},r=()=>{e.widget.setState({isOpen:!0}),e.widget.setState({welcomeMessageIsClosing:!0}),G("welcome_message_shown",!0)};return n?null:(()=>{var o=In(),a=o.firstChild,i=a.nextSibling;return o.$$click=r,o.style.setProperty("bottom","80px"),o.style.setProperty("right","20px"),v(o,()=>e.widget.state.text.welcomeMessage.text,i),i.$$keydown=l=>l.key==="Enter"&&t(l),i.$$click=t,v(i,c.createComponent(ue,{size:16,strokeWidth:3})),c.createRenderEffect(l=>{var s=e.widget.state.welcomeMessageIsClosing,d=e.widget.state.text.welcomeMessage.closeAriaLabel;return s!==l.e&&u(o,"data-hidden",l.e=s),d!==l.t&&u(i,"aria-label",l.t=d),l},{e:void 0,t:void 0}),o})()};E(["click","keydown"]);var An=b("<svg><rect class=echo-shape fill=transparent vector-effect=non-scaling-stroke role=img></svg>",!1,!0),Dn=b("<svg><path class=echo-shape fill=none vector-effect=non-scaling-stroke stroke-linecap=round role=img></svg>",!1,!0);const Ye=e=>{const n=c.createMemo(()=>e.id===e.selectedShapeId);return[c.createComponent(c.Show,{get when(){return e.type==="rectangle"},get children(){return c.createComponent(Fn,c.mergeProps(e,{get isSelected(){return n()}}))}}),c.createComponent(c.Show,{get when(){return e.type==="path"},get children(){return c.createComponent(Ln,c.mergeProps(e,{get isSelected(){return n()}}))}})]},Fn=e=>{const n=c.createMemo(()=>je(e.points));return c.createComponent(c.Show,{get when(){return n()},get children(){var t=An();return t.$$keydown=r=>{var o;return r.key==="Enter"&&((o=e.onShapeClick)==null?void 0:o.call(e,e.id))},t.$$click=()=>{var r;return(r=e.onShapeClick)==null?void 0:r.call(e,e.id)},c.createRenderEffect(r=>{var o=e.id,a=e.isSelected,i=n().x,l=n().y,s=n().width,d=n().height,h=e.color,f=F.rectangle.strokeWidth,g=e.isSelected?F.rectangle.opacity.selected:F.rectangle.opacity.default,m=e.isSelected?"5,5":"none",w=e.isSelected?"move":"pointer",S=`Rectangle shape ${e.isSelected?"(selected)":""}`,k=e.onShapeClick?0:-1;return o!==r.e&&u(t,"data-shape-id",r.e=o),a!==r.t&&u(t,"data-selected",r.t=a),i!==r.a&&u(t,"x",r.a=i),l!==r.o&&u(t,"y",r.o=l),s!==r.i&&u(t,"width",r.i=s),d!==r.n&&u(t,"height",r.n=d),h!==r.s&&u(t,"stroke",r.s=h),f!==r.h&&u(t,"stroke-width",r.h=f),g!==r.r&&u(t,"opacity",r.r=g),m!==r.d&&u(t,"stroke-dasharray",r.d=m),w!==r.l&&u(t,"cursor",r.l=w),S!==r.u&&u(t,"aria-label",r.u=S),k!==r.c&&u(t,"tabindex",r.c=k),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),t}})},Ln=e=>{const n=c.createMemo(()=>Mt(e.points));return c.createComponent(c.Show,{get when(){return n()},get children(){var t=Dn();return t.$$keydown=r=>{var o;return r.key==="Enter"&&((o=e.onShapeClick)==null?void 0:o.call(e,e.id))},t.$$click=()=>{var r;return(r=e.onShapeClick)==null?void 0:r.call(e,e.id)},c.createRenderEffect(r=>{var o=e.id,a=e.isSelected,i=n(),l=e.color,s=F.path.strokeWidth,d=e.isSelected?F.path.opacity.selected:F.path.opacity.default,h=e.isSelected?"move":"pointer",f=`Freehand shape ${e.isSelected?"(selected)":""}`,g=e.onShapeClick?0:-1;return o!==r.e&&u(t,"data-shape-id",r.e=o),a!==r.t&&u(t,"data-selected",r.t=a),i!==r.a&&u(t,"d",r.a=i),l!==r.o&&u(t,"stroke",r.o=l),s!==r.i&&u(t,"stroke-width",r.i=s),d!==r.n&&u(t,"opacity",r.n=d),h!==r.s&&u(t,"cursor",r.s=h),f!==r.h&&u(t,"aria-label",r.h=f),g!==r.r&&u(t,"tabindex",r.r=g),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),t}})};E(["click","keydown"]);var jn=b('<div class=echo-drawing-layer-container role=application aria-label="Drawing Canvas"><svg width=100% height=100% class=echo-drawing-layer preserveAspectRatio=none role=img aria-label="Drawing Area"><path class=echo-drawing-layer-mask fill="rgba(33, 43, 55, 1)"fill-opacity=0.2 fill-rule=evenodd aria-hidden=true>');const Nn=()=>{const e=x();let n;return c.onMount(()=>{n==null||n.addEventListener("mousemove",e.drawing.methods.handleMove),n==null||n.addEventListener("mouseup",e.drawing.methods.handleEnd),n==null||n.addEventListener("touchmove",e.drawing.methods.handleMove,{passive:!1}),n==null||n.addEventListener("touchend",e.drawing.methods.handleEnd)}),c.onCleanup(()=>{n==null||n.removeEventListener("mousemove",e.drawing.methods.handleMove),n==null||n.removeEventListener("mouseup",e.drawing.methods.handleEnd),n==null||n.removeEventListener("touchmove",e.drawing.methods.handleMove),n==null||n.removeEventListener("touchend",e.drawing.methods.handleEnd)}),(()=>{var t=jn(),r=t.firstChild,o=r.firstChild,a=n;return typeof a=="function"?D(a,t):n=t,v(t,c.createComponent(bn,{}),r),v(t,c.createComponent(On,{}),r),N(r,"touchend",e.drawing.methods.handleLeave,!0),N(r,"mouseleave",e.drawing.methods.handleLeave),N(r,"mouseenter",e.drawing.methods.handleEnter),r.$$touchmove=i=>{i.preventDefault(),e.drawing.methods.handleMove(i)},N(r,"mousemove",e.drawing.methods.handleMove,!0),r.$$touchstart=i=>{i.preventDefault(),e.drawing.methods.handleStart(i),e.drawing.methods.handleEnter(i),e.drawing.setState({showTooltip:!1,hasDrawn:!0})},r.$$mousedown=i=>{e.drawing.methods.handleStart(i),e.drawing.setState({showTooltip:!1,hasDrawn:!0})},v(r,c.createComponent(c.For,{get each(){return e.drawing.state.shapes},children:i=>c.createComponent(Ye,{get id(){return i.id},get type(){return i.type},get color(){return i.color},get points(){return i.points},get selectedShapeId(){return e.drawing.state.selectedShapeId},get onShapeClick(){return e.drawing.methods.handleShapeClick}})}),null),v(r,c.createComponent(Ye,{id:"temp",get type(){return e.drawing.state.selectedTool},get color(){return e.drawing.state.selectedColor},get points(){return e.drawing.state.currentPoints},get selectedShapeId(){return e.drawing.state.selectedShapeId}}),null),c.createRenderEffect(i=>{var l=e.drawing.state.cursor,s=Ft({width:e.widget.state.dimensions.width,height:e.widget.state.dimensions.height},e.drawing.state.currentPoints,e.drawing.state.shapes);return l!==i.e&&((i.e=l)!=null?t.style.setProperty("cursor",l):t.style.removeProperty("cursor")),s!==i.t&&u(o,"d",i.t=s),i},{e:void 0,t:void 0}),t})()};E(["mousedown","touchstart","mousemove","touchmove","touchend"]);const re=e=>({handleTextChange:a=>{const i=a.target;e(i.value)},handleSelectChange:a=>{e(a)},handleCheckboxChange:(a,i,l)=>{const s=l?[...a,i]:a.filter(d=>d!==i);e(s)},getCheckboxValue:a=>Array.isArray(a)?a:[]});var qn=b("<div class=echo-input role=group>"),Vn=b("<label class=echo-input-label><span>"),Wn=b('<span class=echo-input-required aria-label="Required field">*');const ae=e=>(()=>{var n=qn();return v(n,(()=>{var t=c.createMemo(()=>!!e.label);return()=>t()&&(()=>{var r=Vn(),o=r.firstChild;return v(o,()=>e.label),v(r,(()=>{var a=c.createMemo(()=>!!e.required);return()=>a()&&Wn()})(),null),r})()})(),null),v(n,()=>e.children,null),n})();var Bn=b("<textarea class=echo-input-field rows=5>"),Yn=b("<div class=visually-hidden>");const _e=e=>{const{handleTextChange:n}=re(e.onChange);return c.createComponent(ae,{get label(){return e.config.label},get required(){return e.config.required},get children(){return[(()=>{var t=Bn();return N(t,"input",n,!0),c.createRenderEffect(r=>{var o=e.config.id,a=e.config.placeholder,i=e.config.required,l=e.config.label||e.config.placeholder,s=e.config.required,d=e.value==="",h=`${e.config.id}-description`;return o!==r.e&&u(t,"id",r.e=o),a!==r.t&&u(t,"placeholder",r.t=a),i!==r.a&&(t.required=r.a=i),l!==r.o&&u(t,"aria-label",r.o=l),s!==r.i&&u(t,"aria-required",r.i=s),d!==r.n&&u(t,"aria-invalid",r.n=d),h!==r.s&&u(t,"aria-describedby",r.s=h),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),c.createRenderEffect(()=>t.value=e.value===void 0?"":e.value),t})(),(()=>{var t=Yn();return v(t,()=>e.config.placeholder),c.createRenderEffect(()=>u(t,"id",`${e.config.id}-description`)),t})()]}})};E(["input"]);var _n=b("<fieldset class=echo-input-options role=group>"),Un=b("<label class=echo-input-option><input type=checkbox><span>");const Hn=e=>{const{handleCheckboxChange:n,getCheckboxValue:t}=re(e.onChange),r=()=>t(e.value),o=()=>r().length>0;return c.createComponent(ae,{get label(){return e.config.label},get required(){return e.config.required},get children(){var a=_n();return v(a,c.createComponent(c.For,{get each(){return e.config.options},children:(i,l)=>(()=>{var s=Un(),d=s.firstChild,h=d.nextSibling;return d.addEventListener("change",f=>n(r(),i.value,f.currentTarget.checked)),v(h,()=>i.label),c.createRenderEffect(()=>d.required=e.config.required&&!o()&&l()===0),c.createRenderEffect(()=>d.value=i.value),c.createRenderEffect(()=>d.checked=r().includes(i.value)),s})()})),c.createRenderEffect(()=>u(a,"aria-required",e.config.required)),a}})};var Xn=b("<fieldset class=echo-input-options role=radiogroup>"),Kn=b("<label class=echo-input-option><input type=radio><span>");const Gn=e=>{const{handleSelectChange:n}=re(e.onChange);return c.createComponent(ae,{get label(){return e.config.label},get required(){return e.config.required},get children(){var t=Xn();return v(t,c.createComponent(c.For,{get each(){return e.config.options},children:r=>(()=>{var o=Kn(),a=o.firstChild,i=a.nextSibling;return a.addEventListener("change",()=>n(r.value)),v(i,()=>r.label),c.createRenderEffect(l=>{var s=e.config.id,d=e.config.required;return s!==l.e&&u(a,"name",l.e=s),d!==l.t&&(a.required=l.t=d),l},{e:void 0,t:void 0}),c.createRenderEffect(()=>a.value=r.value),c.createRenderEffect(()=>a.checked=e.value===r.value),o})()})),c.createRenderEffect(()=>u(t,"aria-required",e.config.required)),t}})};var Zn=b("<div class=echo-select-dropdown role=listbox>"),Qn=b('<div class=echo-select><button type=button class=echo-select-trigger aria-haspopup=listbox><span></span><svg class=echo-select-arrow width=16 height=16 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="m6 9 6 6 6-6"></path></svg></button><input type=text class=visually-hidden aria-hidden=true>'),Jn=b("<button type=button class=echo-select-option role=option>");const er=e=>{const{handleSelectChange:n}=re(e.onChange),[t,r]=c.createSignal(!1);let o,a,i;const l=()=>e.config.options.find(f=>f.value===(e.value===void 0?"":e.value)),s=(f,g)=>{g.stopPropagation(),f.value===e.value?e.config.required||n(""):n(f.value),r(!1)},d=()=>{r(!t())};return T({event:"mousedown",callback:f=>{if(!t()||!o)return;f.composedPath().includes(o)||r(!1)}}),c.createComponent(ae,{get label(){return e.config.label},get required(){return e.config.required},get children(){var f=Qn(),g=f.firstChild,m=g.firstChild,w=g.nextSibling,S=o;typeof S=="function"?D(S,f):o=f,g.$$click=p=>{p.stopPropagation(),d()};var k=a;typeof k=="function"?D(k,g):a=g,v(m,()=>{var p;return((p=l())==null?void 0:p.label)||e.config.placeholder}),v(f,c.createComponent(c.Show,{get when(){return t()},get children(){var p=Zn();return v(p,c.createComponent(c.For,{get each(){return e.config.options},children:$=>(()=>{var P=Jn();return P.$$click=y=>s($,y),v(P,()=>$.label),c.createRenderEffect(y=>{var W=$.value===e.value,j=$.value===e.value;return W!==y.e&&u(P,"aria-selected",y.e=W),j!==y.t&&u(P,"data-selected",y.t=j),y},{e:void 0,t:void 0}),P})()})),p}}),w);var C=i;return typeof C=="function"?D(C,w):i=w,c.createRenderEffect(p=>{var $=t(),P=!e.value,y=e.config.required,W=t(),j=e.config.required,O=e.config.required;return $!==p.e&&u(g,"data-open",p.e=$),P!==p.t&&u(g,"data-placeholder",p.t=P),y!==p.a&&u(g,"data-required",p.a=y),W!==p.o&&u(g,"aria-expanded",p.o=W),j!==p.i&&u(g,"aria-required",p.i=j),O!==p.n&&(w.required=p.n=O),p},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),c.createRenderEffect(()=>w.value=e.value===void 0?"":e.value),f}})};E(["click"]);var tr=b("<input type=text class=echo-input-field>");const nr=e=>{const{handleTextChange:n}=re(e.onChange);return c.createComponent(ae,{get label(){return e.config.label},get required(){return e.config.required},get children(){var t=tr();return N(t,"input",n,!0),c.createRenderEffect(r=>{var o=e.config.placeholder,a=e.config.required,i=e.config.disabled;return o!==r.e&&u(t,"placeholder",r.e=o),a!==r.t&&(t.required=r.t=a),i!==r.a&&(t.disabled=r.a=i),r},{e:void 0,t:void 0,a:void 0}),c.createRenderEffect(()=>t.value=e.value===void 0?"":e.value),t}})};E(["input"]);var rr=b("<div class=echo-input-error>Invalid input type"),ar=b("<div class=echo-input-error>Unsupported input type: ");const or=e=>c.createComponent(c.Show,{get when(){return e.config.type},keyed:!0,get fallback(){return rr()},get children(){return c.createComponent(c.Switch,{get fallback(){return(()=>{var n=ar();return n.firstChild,v(n,()=>e.config.type,null),n})()},get children(){return[c.createComponent(c.Match,{get when(){return e.config.type==="text"},get children(){return c.createComponent(nr,c.mergeProps(e,{get value(){return e.value},get config(){return e.config}}))}}),c.createComponent(c.Match,{get when(){return e.config.type==="textarea"},get children(){return c.createComponent(_e,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}}),c.createComponent(c.Match,{get when(){return e.config.type==="radio"},get children(){return c.createComponent(Gn,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}}),c.createComponent(c.Match,{get when(){return e.config.type==="checkbox"},get children(){return c.createComponent(Hn,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}}),c.createComponent(c.Match,{get when(){return e.config.type==="select"},get children(){return c.createComponent(er,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}})]}})}}),ir=()=>{const e=navigator.connection;return{effectiveType:e==null?void 0:e.effectiveType,downlink:e==null?void 0:e.downlink,rtt:e==null?void 0:e.rtt,saveData:e==null?void 0:e.saveData}},cr=()=>({width:window.innerWidth,height:window.innerHeight,screenWidth:window.screen.width,screenHeight:window.screen.height,language:navigator.language,languages:navigator.languages,doNotTrack:navigator.doNotTrack,cookiesEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,maxTouchPoints:navigator.maxTouchPoints,colorDepth:window.screen.colorDepth,pixelRatio:window.devicePixelRatio,availableWidth:window.screen.availWidth,availableHeight:window.screen.availHeight}),sr=()=>{const e=new URL(window.location.href),n={};return e.searchParams.forEach((t,r)=>{n[r]=t}),{url:e.href,origin:e.origin,pathname:e.pathname,searchParams:n,referrer:document.referrer}},lr=()=>({timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,localDateTime:new Date().toISOString()}),dr=()=>({userAgent:navigator.userAgent,browserInfo:cr(),networkInfo:ir(),locationInfo:sr(),timeInfo:lr(),console:Pt()});var ur=b("<fieldset class=echo-input-options-wrapper><legend class=visually-hidden>Additional Information"),hr=b('<section class=echo-feedback data-hide-when-drawing=true role=dialog aria-label="Feedback Form"><form class=echo-feedback-content aria-label="Submit Feedback"><header class=echo-feedback-header><h3 class=echo-feedback-title id=feedback-form-title></h3><div class=echo-feedback-header-actions role=toolbar aria-label="Form controls"></div></header><fieldset class=echo-input-options-wrapper><legend class=visually-hidden>Feedback Message</legend></fieldset><footer class=echo-feedback-footer>');const fr=()=>{const e=x(),n=async o=>{o.preventDefault();const a=await Dt(),i={message:e.feedback.state.message,screenshot:a,metadata:dr(),customInputs:e.feedback.state.customInputValues};e.methods.submit(i)},t=o=>{o.stopPropagation(),e.feedback.setState({isMinimized:!0})},r=()=>{e.feedback.setState({isMinimized:!1})};return c.createEffect(()=>{e.widget.state.isOpen&&requestAnimationFrame(()=>{var o;(o=document.querySelector(".echo-input-field"))==null||o.focus()})}),(()=>{var o=hr(),a=o.firstChild,i=a.firstChild,l=i.firstChild,s=l.nextSibling,d=i.nextSibling;d.firstChild;var h=d.nextSibling;return o.$$click=()=>e.feedback.state.isMinimized&&r(),a.addEventListener("submit",n),v(l,()=>e.widget.state.text.feedbackForm.title),v(s,c.createComponent(L,{type:"button",title:"Hide form",variant:"secondary",size:"sm",onClick:t,"aria-label":"Minimize feedback form",get children(){return c.createComponent(Qt,{size:20})}}),null),v(s,c.createComponent(L,{type:"button",title:"Close form",variant:"secondary",size:"sm",onClick:()=>e.widget.setState({isOpen:!1}),"aria-label":"Close feedback form",get children(){return c.createComponent(ue,{size:20})}}),null),v(d,c.createComponent(_e,{get config(){return{type:"textarea",id:"message",placeholder:e.widget.state.text.feedbackForm.placeholder,label:"Feedback Message",required:!0}},get value(){return e.feedback.state.message},onChange:f=>e.feedback.setState({message:f})}),null),v(a,c.createComponent(c.Show,{get when(){var f;return(f=e.widget.state.customInputs)==null?void 0:f.length},get children(){var f=ur();return f.firstChild,v(f,c.createComponent(c.For,{get each(){return e.widget.state.customInputs},children:g=>c.createComponent(or,{config:g,get value(){return e.feedback.state.customInputValues[g.id]},onChange:m=>e.feedback.setState({customInputValues:{...e.feedback.state.customInputValues,[g.id]:m}})})}),null),f}}),h),v(h,c.createComponent(L,{type:"submit",variant:"primary",size:"lg",style:{width:"100%"},"aria-label":"Submit feedback",get children(){return e.widget.state.text.feedbackForm.submitButton}})),c.createRenderEffect(f=>{var g=e.feedback.state.isMinimized,m=e.feedback.state.isMinimized?"pointer":"default",w=!e.feedback.state.isMinimized;return g!==f.e&&u(o,"data-minimized",f.e=g),m!==f.t&&((f.t=m)!=null?o.style.setProperty("cursor",m):o.style.removeProperty("cursor")),w!==f.a&&u(o,"aria-expanded",f.a=w),f},{e:void 0,t:void 0,a:void 0}),o})()};E(["click"]);var gr=b("<style>"),mr=b("<div class=echo-launcher>"),vr=b("<dialog class=echo-overlay>"),br=b("<div class=echo-root>");const wr=e=>{const[n,t]=c.createSignal();return c.createEffect(()=>{const r=n();r&&Tt(r.shadowRoot)}),c.createComponent(ht,{ref:t,useShadow:!0,get mount(){return document.body},get children(){return c.createComponent(Wt,c.mergeProps(e,{get children(){return c.createComponent(kr,{get children(){return[c.createComponent(pr,{get primaryColor(){return e.primaryColor}}),c.createComponent(yr,{})]}})}}))}})},pr=e=>{const[n,t]=c.createSignal("");return c.createEffect(()=>{const r=`
3
+ Location: ${t}:${r}:${o}`,timestamp:new Date().toISOString()})}))},$t=()=>{M&&(console.log=M.log,console.warn=M.warn,console.error=M.error,M=null),_&&(window.onerror=_,_=null),U&&(window.onunhandledrejection=U,U=null),window.removeEventListener("error",()=>{}),R=[]},Pt=()=>[...R],zt=()=>{var e;return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||((e=window.matchMedia)==null?void 0:e.call(window,"(max-width: 768px)").matches)},se=(e,{useClientCoords:n=!1}={})=>{const r=typeof TouchEvent<"u"&&e instanceof TouchEvent?e.touches[0]:null;return{x:r?n?r.clientX:r.pageX:n?e.clientX:e.pageX,y:r?n?r.clientY:r.pageY:n?e.clientY:e.pageY}},Le=(e,n)=>{const t=n.x-e.x,r=n.y-e.y;return Math.sqrt(t*t+r*r)},je=e=>{if(e.length!==2)return null;const[n,t]=e;return{x:Math.min(n.x,t.x),y:Math.min(n.y,t.y),width:Math.abs(t.x-n.x),height:Math.abs(t.y-n.y)}},Mt=e=>e.length<2?null:`M ${e[0].x} ${e[0].y} ${e.slice(1).map(n=>`L ${n.x} ${n.y}`).join(" ")}`,le=window.EventTarget.prototype.addEventListener,H=window.EventTarget.prototype.removeEventListener;let de=!1,ee=null;const te=new WeakMap,Tt=e=>{ee=e},ne=e=>{if(!ee||!e)return!1;if(e===ee)return!0;const n=e.getRootNode();if(n&&n.nodeName==="#document"){const r=n.querySelector("#top-layer");if(r!=null&&r.contains(e))return!0}let t=e;for(;t;){if(t.getRootNode()===ee)return!0;t=t.parentNode}return!1},Ot=e=>{de||(de=!0,window.EventTarget.prototype.addEventListener=function(n,t,r){if(!t||typeof t!="function")return le.call(this,n,t,r);if(!(this instanceof Node&&!ne(this)))return le.call(this,n,t,r);const a=Rt(t,e);te.has(this)||te.set(this,new Map),te.get(this).set(t,a),le.call(this,n,a,r)},window.EventTarget.prototype.removeEventListener=function(n,t,r){if(!t||typeof this!="object")return H.call(this,n,t,r);if(this instanceof Node&&ne(this))return H.call(this,n,t,r);const a=te.get(this);if(!a)return H.call(this,n,t,r);const i=a.get(t);i?(H.call(this,n,i,r),a.delete(t),a.size===0&&te.delete(this)):H.call(this,n,t,r)})},It=()=>{de&&(window.EventTarget.prototype.addEventListener=le,window.EventTarget.prototype.removeEventListener=H,de=!1,ee=null)},T=e=>{const{event:n,callback:t,onMount:r,onCleanup:o}=e;c.onMount(()=>{r==null||r(),window.addEventListener(n,t)}),c.onCleanup(()=>{o==null||o(),window.removeEventListener(n,t)})},ye=e=>{const{target:n,options:t,callback:r,onMount:o,onCleanup:a}=e,i=new MutationObserver(r);c.onMount(()=>{o==null||o(),i.observe(n,t)}),c.onCleanup(()=>{a==null||a(),i.disconnect()})},Rt=(e,n)=>function(t){(!(t.target instanceof Node)||!ne(t.target))&&n(t),e.call(this,t)},At=e=>e.hasAttribute("data-hide-when-drawing"),Dt=async()=>{var e;try{const n=document.createElement("style");document.head.appendChild(n),(e=n.sheet)==null||e.insertRule("body > div:last-child img { display: inline-block; }");const t=await Xe(document.body,{logging:!1,useCORS:!0,scale:window.devicePixelRatio,allowTaint:!0,ignoreElements:r=>At(r)});return n.remove(),t.toDataURL("image/png")}catch(n){console.error("Failed to capture screenshot:",n);return}},Ft=(e,n,t)=>{let r=`M0 0 H${e.width} V${e.height} H0 Z`;if(n.length===2){const[o,a]=n;r+=` M${o.x} ${o.y} h${a.x-o.x} v${a.y-o.y} h${o.x-a.x} v${o.y-a.y}`}for(const o of t)if(o.type==="rectangle"){const[a,i]=o.points;r+=` M${a.x} ${a.y} h${i.x-a.x} v${i.y-a.y} h${a.x-i.x} v${a.y-i.y}`}return r},Lt=e=>{if(typeof e!="object"||e===null)throw new Error("Echo initialization failed: options must be an object");if(typeof e.onSubmit!="function")throw new Error("Echo initialization failed: onSubmit must be a function");if(e.primaryColor&&!/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(e.primaryColor))throw new Error("Echo initialization failed: primaryColor must be a valid hex color")},Ne=5,qe=(e,n)=>F[e].getCursor(n),jt=(e,n,t)=>{var l,s;const[r,o]=be({isDrawing:!1,currentPoints:[],selectedShapeId:null,selectedTool:"rectangle",showTooltip:!0,mousePosition:{x:0,y:0},selectedColor:e.primaryColor,shapes:((s=(l=me(n))==null?void 0:l.drawing)==null?void 0:s.shapes)||[],hasDrawn:!1,isDragging:!1,dragStartPos:null,initialClickPos:null,dragOffset:null,cursor:qe("rectangle",e.primaryColor)}),a=(d,h=!1)=>{if(d.selectedTool||d.selectedColor){const f=d.selectedTool||r.selectedTool,g=d.selectedColor||r.selectedColor;d.cursor=qe(f,g)}o(d),t==null||t(d,h)},i={startDrawing:d=>{a({isDrawing:!0,currentPoints:[d],selectedShapeId:null})},updateDrawing:d=>{r.selectedTool==="rectangle"?a({currentPoints:[r.currentPoints[0],d]}):r.selectedTool==="path"&&a({currentPoints:[...r.currentPoints,d]})},finishDrawing:()=>{if(r.currentPoints.length>=2){const d={id:Math.random().toString(36).substring(2),type:r.selectedTool,color:r.selectedColor,points:r.currentPoints};a({shapes:[...r.shapes,d]})}a({isDrawing:!1,currentPoints:[]})},handleShapeClick:d=>{},handleStart:d=>{if(d instanceof MouseEvent){const f=d.target;if(!f.classList.contains("echo-drawing-layer-mask")&&!f.classList.contains("echo-shape"))return}const h=se(d);if(d.target instanceof SVGElement&&d.target.classList.contains("echo-shape")){const f=d.target.dataset.shapeId;if(f&&r.selectedShapeId===f){const g=r.shapes.find(m=>m.id===f);if(g){i.startDrag(h),i.updateDragOffset(g,h);return}}}i.setInitialClick(h)},handleMove:d=>{const h=se(d,{useClientCoords:!0}),f=se(d);if(a({mousePosition:h}),r.isDragging&&r.selectedShapeId&&r.dragStartPos&&r.shapes.find(m=>m.id===r.selectedShapeId)){const m=f.x-r.dragStartPos.x,b=f.y-r.dragStartPos.y,S=r.shapes.map(k=>k.id===r.selectedShapeId?{...k,points:k.points.map(C=>({x:C.x+m,y:C.y+b}))}:k);a({shapes:S}),i.startDrag(f);return}if(r.initialClickPos&&!r.isDrawing){Le(r.initialClickPos,f)>=Ne&&i.startDrawing(r.initialClickPos);return}r.isDrawing&&i.updateDrawing(f)},handleEnd:d=>{if(r.isDragging){i.stopDrag();return}if(r.initialClickPos&&!r.isDrawing){const h=se(d);if(Le(r.initialClickPos,h)<Ne&&d.target instanceof SVGElement&&d.target.classList.contains("echo-shape")){const g=d.target.dataset.shapeId;g&&a({selectedShapeId:g})}}i.setInitialClick(null),i.finishDrawing()},handleEnter:d=>{d.target===d.currentTarget&&!r.hasDrawn&&a({showTooltip:!0})},handleLeave:d=>{d.target===d.currentTarget&&a({showTooltip:!1})},startDrag:d=>{a({isDragging:!0,dragStartPos:d})},stopDrag:()=>{a({isDragging:!1,dragStartPos:null,dragOffset:null})},setInitialClick:d=>{a({initialClickPos:d})},updateDragOffset:(d,h)=>{a({dragOffset:{x:h.x-d.points[0].x,y:h.y-d.points[0].y}})}};return{state:r,setState:a,methods:i}},Nt=(e,n,t,r)=>{var f;const o=(r==null?void 0:r.reduce((g,m)=>(g[m.id]=m.defaultValue??(m.type==="checkbox"?[]:""),g),{}))||{},a=me(n),i=(a==null?void 0:a.feedback.customInputValues)||{},l={...o,...i},[s,d]=be({message:((f=a==null?void 0:a.feedback)==null?void 0:f.message)||"",screenshot:void 0,isCapturing:!1,isMinimized:!1,customInputValues:l,hasUserInteracted:!1});return{state:s,setState:(g,m=!1)=>{const b="isCapturing"in g||"isMinimized"in g||m;!b&&!s.hasUserInteracted&&d({hasUserInteracted:!0}),d(g),(s.hasUserInteracted||b)&&(t==null||t(g,m))}}},qt=(e,n)=>{const[t,r]=be({text:e.textConfig,isOpen:!1,primaryColor:e.primaryColor,notification:{show:!1,type:null,message:null},dimensions:{width:document.documentElement.clientWidth,height:document.documentElement.scrollHeight},isStoredFeedbackOpen:!1,pagesCount:Ie(),welcomeMessageIsClosing:!1,position:e.position,customInputs:e.customInputs,disableMinimization:e.disableMinimization});return{state:t,setState:r}},Ve=e=>{var n;return((n=e.customInputs)==null?void 0:n.reduce((t,r)=>(t[r.id]=r.defaultValue??(r.type==="checkbox"?[]:""),t),{}))||{}},Vt=e=>{let n=ge();const t=qt(e),r=bt(t),o=gt(t),a=Nt(e,n,(d,h)=>{r(n,{feedback:{...a.state,...d},drawing:i.state},h)},e.customInputs),i=jt(e,n,(d,h)=>{r(n,{feedback:a.state,drawing:{...i.state,...d}},h)}),l=d=>{n=d;const h=me(n),f={...Ve(e),...h==null?void 0:h.feedback.customInputValues};a.setState({message:(h==null?void 0:h.feedback.message)||"",customInputValues:f,hasUserInteracted:!1}),i.setState({shapes:(h==null?void 0:h.drawing.shapes)||[]})},s=()=>{Oe(n);const d={feedback:{message:"",screenshot:void 0,isCapturing:!1,isMinimized:!1,hasUserInteracted:!1,customInputValues:Ve(e)},drawing:{isDrawing:!1,currentPoints:[],shapes:[],selectedShapeId:null,selectedTool:"rectangle",selectedColor:e.primaryColor,showTooltip:!0,mousePosition:{x:0,y:0},hasDrawn:!1,isDragging:!1,dragStartPos:null,initialClickPos:null,dragOffset:null,cursor:i.state.cursor},widget:{isOpen:!1}};a.setState(d.feedback,!0),i.setState(d.drawing,!0),t.setState(d.widget)};return{feedback:a,drawing:i,widget:t,methods:{reset:s,handlePageChange:l,submit:async d=>{t.setState({isOpen:!1});try{const h=await e.onSubmit(d);return h instanceof Response&&!h.ok?(o.show({type:"error",message:"Submission failed"}),h):(s(),o.show({type:"success",message:"Feedback submitted"}),h)}catch{o.show({type:"error",message:"Submission failed"})}}}}},We=c.createContext(),Wt=e=>{const n=Vt({primaryColor:e.primaryColor,onSubmit:e.onSubmit,textConfig:e.textConfig,position:e.position,customInputs:e.customInputs,disableMinimization:e.disableMinimization});return c.createComponent(We.Provider,{value:n,get children(){return e.children}})},x=()=>{const e=c.useContext(We);if(!e)throw new Error("useEchoStore must be used within EchoProvider");return e},Bt=e=>{const[n,t]=c.createSignal({width:document.documentElement.clientWidth,height:document.documentElement.scrollHeight}),r=()=>{requestAnimationFrame(()=>{const o=e();o&&(o.style.height="0px",o.style.height=`${document.documentElement.scrollHeight}px`,t({width:document.documentElement.clientWidth,height:document.documentElement.scrollHeight}))})};return T({event:"resize",callback:r,onMount:r}),ye({target:document.documentElement,options:{childList:!0,subtree:!0,attributes:!0},callback:r}),n},Yt=({onUrlChange:e})=>{let n=ge();const t=()=>{const r=ge();r!==n&&(n=r,e(r))};T({event:"popstate",callback:t}),T({event:"pushstate",callback:t}),T({event:"replacestate",callback:t}),ye({target:document.documentElement,options:{childList:!0,subtree:!0},callback:t})},_t=`*,*:before,*:after{box-sizing:border-box}.echo-root{position:absolute;top:0;left:0;z-index:var(--z-root);isolation:isolate;pointer-events:none;--z-root: 999999;--z-launcher: 2;--z-overlay: 1;--z-drawing-toolbar: 3;--z-drawing-tooltip: 3;--z-shape-actions: 3;--z-notification: 2;--z-welcome-message: 2;--z-widget-button: 2;--z-feedback-form: 4;--primary-color: #000;--primary-text-color: #fff;--error-color: #f44336;--success-color: var(--primary-color);--text-dark: #1a1a1a;--text-medium: #333;--text-light: #666;--text-lighter: #999;--border-color: rgba(0, 0, 0, .1);--border-color-light: rgba(0, 0, 0, .05);--border-color-medium: rgba(0, 0, 0, .08);--background-color: #fff;--primary-color-lighter: color-mix(in srgb, var(--primary-color) 100%, white 40%);--primary-color-lightest: color-mix(in srgb, var(--primary-color) 7%, white 100%);--hover-color: color-mix(in srgb, var(--primary-color) 80%, #fff);--shadow-color-dark: rgba(0, 0, 0, .6);--shadow-color-light: rgba(255, 255, 255, .1);--shadow-color-medium: rgba(0, 0, 0, .2);--shadow-sm: 0 1px 3px;--shadow-md: 0 4px 10px;--shadow-lg: 0 10px 20px;--shadow-black-sm: var(--shadow-sm) rgba(0, 0, 0, .5);--shadow-black-md: var(--shadow-md) rgba(0, 0, 0, .5);--shadow-black-lg: var(--shadow-lg) rgba(0, 0, 0, .5);--shadow-black-lightened-sm: var(--shadow-sm) var(--shadow-color-medium);--shadow-black-lightened-md: var(--shadow-md) var(--shadow-color-medium);--shadow-black-lightened-lg: var(--shadow-lg) var(--shadow-color-medium);--shadow-primary-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color) 60%, transparent 80%);--shadow-primary-md: var(--shadow-md) color-mix(in srgb, var(--primary-color) 50%, transparent 80%);--shadow-primary-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color) 40%, transparent 80%);--shadow-primary-lighter-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color-lighter) 70%, transparent 80%);--shadow-primary-lighter-md: var(--shadow-md) color-mix(in srgb, var(--primary-color-lighter) 60%, transparent 80%);--shadow-primary-lighter-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color-lighter) 50%, transparent 80%);--shadow-primary-lightest-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color-lightest) 70%, transparent 80%);--shadow-primary-lightest-md: var(--shadow-md) color-mix(in srgb, var(--primary-color-lightest) 60%, transparent 80%);--shadow-primary-lightest-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color-lightest) 50%, transparent 80%);--shadow-combined-sm: var(--shadow-primary-sm), var(--shadow-black-lightened-sm);--shadow-combined-md: var(--shadow-primary-md), var(--shadow-black-lightened-md);--shadow-combined-lg: var(--shadow-primary-lg), var(--shadow-black-lightened-lg);--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 20px;--spacing-2xl: 24px;--spacing-3xl: 32px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--font-xs: .8125rem;--font-sm: .875rem;--font-base: .9375rem;--font-md: 1rem;--font-lg: 1.125rem;--duration-fast: .1s;--duration-base: .2s;--duration-slow: .3s;--duration-slower: .4s;--duration-slowest: .6s;--ease-default: ease;--ease-in-out: ease-in-out;--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.16, 1, .3, 1)}.echo-stored-feedback{position:absolute;display:flex;flex-direction:column;bottom:calc(100% + var(--spacing-lg));right:0;width:320px;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-black-lightened-lg);animation:slideUpFade var(--duration-base) var(--ease-smooth);z-index:calc(var(--z-widget-button) + 1);transform-origin:bottom right;transition:all var(--duration-base) var(--ease-smooth)}.echo-stored-feedback-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg)}.echo-stored-feedback-header h3{margin:0;font-size:var(--font-md);font-weight:600}.echo-stored-feedback-list{max-height:400px;overflow-y:auto;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-stored-feedback-item{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--border-color-light);transition:all var(--duration-base) var(--ease-smooth);background:#fff;position:relative}.echo-stored-feedback-item:hover{background:var(--primary-color-lightest)}.echo-stored-feedback-item-current{background:var(--primary-color-lightest);padding-left:calc(var(--spacing-lg) - 3px)}.echo-stored-feedback-item-current:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--primary-color);border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.echo-stored-feedback-item:last-child{border-bottom:none;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-stored-feedback-item:last-child.echo-stored-feedback-item-current:before{border-bottom-left-radius:var(--radius-lg)}.echo-stored-feedback-content{flex:1;min-width:0;margin-right:var(--spacing-md)}.echo-stored-feedback-path{font-size:var(--font-sm);font-weight:500;color:var(--text-medium);margin-bottom:var(--spacing-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.echo-stored-feedback-preview{font-size:var(--font-xs);color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.echo-stored-feedback-actions{display:flex;align-items:center;gap:var(--spacing-sm)}.echo-stored-feedback-link{color:var(--text-light)}.echo-stored-feedback-link:hover{color:var(--primary-color)}.echo-stored-feedback-delete{color:var(--text-light);font-size:var(--font-xs);padding:var(--spacing-xs) var(--spacing-md)}.echo-stored-feedback-delete:hover{color:var(--error-color);background:color-mix(in srgb,var(--error-color) 10%,transparent)}.echo-stored-feedback-empty{padding:var(--spacing-3xl) var(--spacing-lg);text-align:center;color:var(--text-light);font-size:var(--font-sm);border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-launcher{position:fixed;z-index:var(--z-launcher);bottom:var(--spacing-xl);right:var(--spacing-xl);pointer-events:none}.echo-overlay{position:absolute;top:0;left:0;margin:0;padding:0;max-width:none;max-height:none;border:3px solid var(--primary-color);background:transparent}.echo-overlay::backdrop{background:transparent}[data-hidden=true],[data-hidden=false]{transition:opacity var(--duration-slow) var(--ease-in-out),visibility var(--duration-slow) var(--ease-in-out)}[data-hidden=true]{opacity:0;visibility:hidden;pointer-events:none}[data-hidden=false]{opacity:1;visibility:visible;pointer-events:auto;user-select:none;-webkit-user-select:none}.echo-launcher-button{z-index:var(--z-widget-button);position:relative;display:flex;align-items:center;justify-content:center;cursor:pointer;background:radial-gradient(circle at 40% 40%,var(--primary-color) 0%,var(--primary-color-lighter) 65%,var(--primary-color-lighter) 100%);border:none;border-radius:var(--radius-full);width:48px;height:48px;box-shadow:var(--shadow-black-md);transition:all var(--duration-slow) var(--ease-default),transform var(--duration-slower) var(--ease-smooth),opacity var(--duration-slow) var(--ease-in-out);will-change:transform}.echo-launcher-button:hover{box-shadow:var(--shadow-black-lg);transform:translateY(-2px)}.echo-launcher-button:active{transform:scale(.95)}.echo-launcher-button-count{position:absolute;top:calc(-1 * var(--spacing-xs));left:calc(-1 * var(--spacing-xs));background:var(--primary-color-lightest);color:var(--primary-color-lighter);border-radius:var(--radius-md);min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-black-sm);padding:0 var(--spacing-xs);font-weight:600;pointer-events:auto;cursor:pointer;transform-origin:center center;animation:popIn var(--duration-slow) var(--ease-bounce);transition:transform var(--duration-base) var(--ease-default)}.echo-launcher-button-count:hover{transform:scale(1.1)}.echo-feedback{position:fixed;bottom:var(--spacing-xl);right:var(--spacing-xl);width:min(calc(100vw - var(--spacing-xl) * 2),24rem);max-height:calc(100vh - var(--spacing-xl) * 2);z-index:var(--z-feedback-form);box-shadow:var(--shadow-black-lightened-lg);display:flex;flex-direction:column;gap:var(--spacing-lg);background:var(--background-color);border-radius:var(--radius-lg);overflow-y:auto;will-change:transform;padding:0 var(--spacing-lg)}.echo-feedback[data-minimized=true]{transition:transform .4s var(--ease-default),box-shadow .4s var(--ease-default);transform:translate(calc(100% - 48px),calc(100% - 48px));box-shadow:0 8px 16px #0003}.echo-feedback[data-minimized=true]:hover{cursor:pointer;transform:translate(calc(100% - 48px),calc(100% - 48px)) rotate(-2deg) scale(1.1);box-shadow:0 12px 24px #00000040}.echo-feedback[data-minimized=false]{transition:transform .4s var(--ease-smooth),box-shadow .4s var(--ease-smooth);transform:translate(0)}.echo-feedback[style*=transition]{pointer-events:none}.echo-feedback-content{display:flex;flex-direction:column;gap:var(--spacing-lg)}.echo-feedback-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg) 0;background-color:var(--background-color);position:sticky;top:0;z-index:1}.echo-feedback-footer{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg) 0;background-color:var(--background-color);position:sticky;bottom:0;z-index:1}.echo-feedback-title{font-size:var(--font-lg);font-weight:600;color:var(--text-dark);margin:0}.echo-feedback-header-actions{display:flex;gap:var(--spacing-xs);margin:calc(-1 * var(--spacing-sm)) calc(-1 * var(--spacing-sm)) calc(-1 * var(--spacing-sm)) 0}[data-hide-when-drawing=true]{opacity:1;visibility:visible;transition:opacity .3s ease-in-out,visibility .3s ease-in-out}[data-drawing=true] [data-hide-when-drawing=true]{opacity:0;visibility:hidden;pointer-events:none;user-select:none;-webkit-user-select:none}.echo-drawing-layer,.echo-drawing-layer-container{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;user-select:none;-webkit-user-select:none}.echo-drawing-layer-container svg{pointer-events:auto}.echo-drawing-toolbar{position:fixed;top:var(--spacing-xl);left:var(--spacing-xl);display:flex;flex-direction:column;gap:var(--spacing-sm);z-index:var(--z-drawing-toolbar);opacity:1;transition:opacity var(--duration-base) var(--ease-default)}.echo-drawing-toolbar-button{width:50px;height:50px;border-radius:var(--radius-full);border:2px solid #ddd;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:all var(--duration-base) var(--ease-default);box-shadow:var(--shadow-black-sm);position:relative}.echo-drawing-toolbar-icon{width:25px;height:25px;color:var(--primary-color);transition:color var(--duration-base) var(--ease-default)}.echo-drawing-toolbar-button:hover{transform:scale(1.05);border-color:var(--hover-color)}.echo-drawing-toolbar-button[data-selected=true]{background:var(--primary-color-lightest);border-color:var(--primary-color)}.echo-color-selector{position:relative}.echo-color-selector:hover .echo-drawing-toolbar-button{border-top-right-radius:0;border-bottom-right-radius:0;transform:scale(1.05);border-right-color:transparent;background:rgba(var(--primary-color),.9);border-color:var(--hover-color)}.echo-color-swatch-wrapper{position:absolute;left:calc(100% - 2px);top:50%;transform:translateY(-50%);height:52.5px;padding-right:var(--spacing-sm);display:none}.echo-color-selector:hover .echo-color-swatch-wrapper{display:block}.echo-color-swatch{height:100%;background:#fff;border-radius:var(--radius-md);border-top-left-radius:0;border-bottom-left-radius:0;padding:var(--spacing-sm);padding-left:var(--spacing-md);box-shadow:var(--shadow-black-sm);display:flex;align-items:center;gap:var(--spacing-sm);border:2px solid #ddd;border-left:none}.echo-color-selector:hover .echo-color-swatch{border-color:var(--hover-color)}.echo-color-swatch-button{width:24px;height:24px;border-radius:var(--radius-full);border:2px solid transparent;cursor:pointer;padding:0;transition:transform var(--duration-base) var(--ease-default)}.echo-color-swatch-button:hover{transform:scale(1.1)}.echo-color-swatch-button[data-selected=true]{border-color:var(--primary-color)}.echo-drawing-tooltip{display:flex;text-wrap:nowrap;position:fixed;background:#fff;padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-lg);box-shadow:var(--shadow-combined-sm);font-size:var(--font-sm);color:var(--primary-color);z-index:var(--z-drawing-tooltip);pointer-events:none;animation:slideDownFade var(--duration-slow) var(--ease-default);border:1px solid var(--primary-color);background:var(--primary-color-lightest)}.echo-shape-actions{position:fixed;z-index:var(--z-shape-actions);display:flex;gap:var(--spacing-xs);background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-combined-md);transform:translate(-50%,-100%) translateY(calc(-1 * var(--spacing-sm)));animation:popInSlideDown var(--duration-fast) var(--ease-default);cursor:default;pointer-events:auto;padding:var(--spacing-xs);border:1px solid var(--primary-color)}.echo-shape-actions-divider{width:1px;margin:var(--spacing-sm) 0;background:var(--border-color);pointer-events:none}.echo-shape-actions[hidden]{display:none}.echo-notification{position:absolute;z-index:var(--z-notification);bottom:70px;right:0;width:300px;padding:var(--spacing-2xl);border-radius:var(--radius-lg);font-size:var(--font-md);font-weight:500;box-shadow:var(--shadow-combined-md);background:#fff;border:1px solid var(--primary-color);transform-origin:bottom right;display:flex;flex-direction:column;align-items:center;gap:var(--spacing-xl);opacity:1;pointer-events:auto;transition:all var(--duration-base) var(--ease-smooth)}.echo-notification:not([data-empty=true]){animation:popInSlideUp var(--duration-slower) var(--ease-spring)}.echo-notification[data-empty=true]{opacity:0;pointer-events:none;transform:translateY(var(--spacing-sm)) scale(.95);transition:none}.echo-notification-hide{position:absolute;top:var(--spacing-lg);right:var(--spacing-lg);width:24px;height:24px;padding:var(--spacing-xs);border:none;background:transparent;color:var(--text-light);opacity:.7;cursor:pointer;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;transition:all var(--duration-base) var(--ease-bounce);flex-shrink:0}.echo-notification-hide:hover{opacity:1;background:var(--primary-color-lightest);transform:scale(1.1);color:var(--primary-color)}.echo-notification-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;transform:scale(1.5);background:var(--primary-color-lightest);padding:var(--spacing-md);border-radius:var(--radius-full);margin-top:var(--spacing-md);transition:all var(--duration-base) var(--ease-bounce)}.echo-notification[data-type=success]{border-color:var(--success-color)}.echo-notification[data-type=success] .echo-notification-icon{color:var(--success-color)}.echo-notification[data-type=error]{border-color:var(--error-color)}.echo-notification[data-type=error] .echo-notification-icon{color:var(--error-color);background:color-mix(in srgb,var(--error-color) 10%,white)}.echo-notification-content{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;padding:0 12px}.echo-notification-title{font-size:1rem;font-weight:600;color:#1a1a1a}.echo-notification-message{font-size:.875rem;font-weight:400;color:#666;line-height:1.4;max-width:100%}@media (max-width: 768px){.echo-notification{right:0;width:calc(100vw - 40px);height:auto;min-height:180px;-webkit-backdrop-filter:none;backdrop-filter:none;font-size:.9375rem;padding:20px;gap:16px;bottom:calc(100% + 20px)}.echo-notification-icon{transform:scale(1.3);padding:10px;margin-top:8px}.echo-notification-title{font-size:.9375rem}.echo-notification-message{font-size:.8125rem}}.echo-welcome-message{display:flex;align-items:center;gap:var(--spacing-xs);position:fixed;z-index:var(--z-welcome-message);background:var(--primary-color-lightest);border:1px solid var(--primary-color);color:var(--primary-color);padding:var(--spacing-md) var(--spacing-lg);border-radius:var(--radius-lg);font-size:var(--font-sm);font-weight:500;box-shadow:var(--shadow-combined-md);opacity:1;transform:translateY(0) scale(1);transition:all var(--duration-slow) var(--ease-smooth);animation:bounceIn var(--duration-slowest) var(--ease-bounce);user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;cursor:pointer;text-align:left}.echo-welcome-message:hover{transform:translateY(-2px) scale(1.02);background:var(--primary-color-lightest);box-shadow:var(--shadow-combined-lg)}.echo-welcome-message:active{transform:translateY(0) scale(.98)}.echo-welcome-message-close{width:20px;height:20px;padding:2px;margin-left:var(--spacing-xs);border:none;background:transparent;opacity:.7;cursor:pointer;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;transition:all var(--duration-base) var(--ease-default)}.echo-welcome-message-close:hover{opacity:1;background:var(--shadow-color-light);transform:scale(1.1)}.echo-welcome-message-close:active{transform:scale(.95)}.echo-welcome-message:after{content:"";position:absolute;bottom:-4px;right:17px;width:16px;height:16px;background:inherit;transform:rotate(45deg);border-radius:var(--radius-xs);border:1px solid var(--primary-color);z-index:-2}.echo-welcome-message:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:var(--primary-color-lightest);z-index:-1;border-radius:var(--radius-lg)}.echo-welcome-message-pulsar{content:"";display:inline-block;width:6px;height:6px;background:var(--primary-color);border-radius:50%;margin-right:8px;animation:pulse 1.5s var(--ease-in-out) infinite}.echo-button{display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius-md);font-weight:500;cursor:pointer;transition:all var(--duration-base) var(--ease-default);line-height:1}.echo-button:focus-visible{outline:2px solid var(--primary-color);outline-offset:2px}.echo-button-primary{background:var(--primary-color);color:#fff}.echo-button-primary:hover{background:var(--hover-color);transform:translateY(-1px)}.echo-button-primary:active{transform:translateY(0)}.echo-button-secondary{background:transparent;color:var(--text-light)}.echo-button-secondary:hover{background-color:var(--primary-color-lightest);color:var(--primary-color)}.echo-button-xs{padding:var(--spacing-xs);font-size:var(--font-xs)}.echo-button-sm{padding:var(--spacing-xs);font-size:var(--font-sm)}.echo-button-md{padding:var(--spacing-md) var(--spacing-2xl);font-size:var(--font-base)}.echo-button-lg{padding:var(--spacing-md) var(--spacing-3xl);font-size:var(--font-md)}@keyframes slideUpFade{0%{opacity:0;transform:translateY(var(--spacing-sm))}to{opacity:1;transform:translateY(0)}}@keyframes slideDownFade{0%{opacity:0;transform:translateY(calc(-1 * var(--spacing-sm)))}to{opacity:1;transform:translateY(0)}}@keyframes popIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes popInSlideUp{0%{opacity:0;transform:translateY(var(--spacing-sm)) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes popInSlideDown{0%{opacity:0;transform:translate(-50%,-100%) translateY(calc(-1 * var(--spacing-xs))) scale(.95)}to{opacity:1;transform:translate(-50%,-100%) translateY(calc(-1 * var(--spacing-sm))) scale(1)}}@keyframes bounceIn{0%{opacity:0;transform:translateY(var(--spacing-xl)) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.5}to{transform:scale(1);opacity:1}}.echo-inputs{display:flex;flex-direction:column;gap:1rem;margin-bottom:1rem}.echo-input{display:flex;flex-direction:column;gap:.5rem}.echo-input-label{font-size:.875rem;font-weight:500;color:var(--text-color)}.echo-input-required{color:#dc2626;margin-left:.25rem}.echo-input-field{width:100%;padding:.5rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:#fff;color:var(--text-medium);font-size:var(--font-sm);transition:all var(--duration-base) var(--ease-default)}.echo-input-field:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-input-field:disabled{opacity:.5}.echo-input-field::placeholder{color:var(--text-lighter)}textarea.echo-input-field{resize:vertical;max-width:100%;max-height:20rem;box-sizing:border-box}select.echo-input-field{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center;padding-right:2.5rem;cursor:pointer}.echo-input-options-wrapper{display:flex;flex-direction:column;gap:var(--spacing-xl);border:none;margin:0;padding:0}.echo-input-options{display:flex;flex-direction:column;gap:var(--spacing-sm);border:none;margin:0;padding:0}.echo-input-option{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:var(--spacing-xs);border-radius:var(--radius-sm);transition:all var(--duration-base) var(--ease-default)}.echo-input-option:hover{background:var(--primary-color-lightest)}.echo-input-option input[type=radio],.echo-input-option input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;width:18px;height:18px;border:1px solid var(--border-color);background-color:#fff;display:grid;place-content:center;cursor:pointer;transition:all var(--duration-base) var(--ease-default)}.echo-input-option input[type=radio]{border-radius:50%}.echo-input-option input[type=radio]:before{content:"";width:10px;height:10px;border-radius:50%;transform:scale(0);transition:transform var(--duration-base) var(--ease-default);background-color:var(--primary-color)}.echo-input-option input[type=radio]:checked:before{transform:scale(1)}.echo-input-option input[type=checkbox]{border-radius:var(--radius-sm)}.echo-input-option input[type=checkbox]:before{content:"";width:12px;height:12px;transform:scale(0);transition:all var(--duration-base) var(--ease-default);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");background-size:contain;background-repeat:no-repeat;background-position:center}.echo-input-option input[type=checkbox]:checked{background-color:var(--primary-color-lighter);border-color:var(--primary-color-lighter)}.echo-input-option input[type=checkbox]:checked:before{transform:scale(1)}.echo-input-option input[type=radio]:hover,.echo-input-option input[type=checkbox]:hover{border-color:var(--primary-color-lighter)}.echo-input-option input[type=radio]:focus,.echo-input-option input[type=checkbox]:focus{outline:none;border-color:var(--primary-color-lighter);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-input-option input[type=radio]:checked,.echo-input-option input[type=checkbox]:checked{border-color:var(--primary-color-lighter)}.echo-input-option span{font-size:var(--font-sm);color:var(--text-medium);-webkit-user-select:none;user-select:none}.echo-select{position:relative;width:100%}.echo-select-trigger{width:100%;padding:.5rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:#fff;color:var(--text-medium);font-size:var(--font-sm);transition:all var(--duration-base) var(--ease-default);cursor:pointer;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:.5rem;outline:none}.echo-select-trigger[data-placeholder=true]{color:var(--text-lighter)}.echo-select-trigger:hover{border-color:var(--border-color-medium)}.echo-select-trigger:focus,.echo-select-trigger[data-open=true]{border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-select-arrow{flex-shrink:0;transition:transform var(--duration-base) var(--ease-default)}.echo-select-trigger[data-open=true] .echo-select-arrow{transform:rotate(180deg)}.echo-select-dropdown{position:absolute;top:calc(100% + .25rem);left:0;right:0;background:#fff;border:1px solid var(--border-color-medium);border-radius:var(--radius-md);box-shadow:var(--shadow-black-lightened-md);max-height:15rem;overflow-y:auto;z-index:10;animation:slideDownFade var(--duration-base) var(--ease-default);padding:var(--spacing-xs)}.echo-select-option{width:100%;padding:.5rem .75rem;background:none;border:none;text-align:left;color:var(--text-medium);font-size:var(--font-sm);cursor:pointer;transition:all var(--duration-base) var(--ease-default);outline:none;border-radius:var(--radius-sm)}.echo-select-option:hover{background:var(--primary-color-lightest)}.echo-select-option:focus{background:var(--primary-color-lightest);box-shadow:0 0 0 1px var(--primary-color) inset}.echo-select-option[data-selected=true]{background:var(--primary-color-lightest);color:var(--primary-color);font-weight:500}select.echo-input-field{display:none}.visually-hidden{position:absolute;left:50%;bottom:0;transform:translate(-50%);width:1px;height:1px;padding:0;margin:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}`;var Ut=w('<div class=echo-color-selector role=group aria-label="Color Selection"><button class=echo-drawing-toolbar-button title="Current Color"></button><div class=echo-color-swatch-wrapper role=listbox aria-label="Available Colors"><div class=echo-color-swatch>'),Ht=w("<button class=echo-color-swatch-button role=option>");const Xt=["#ff6b6b","#69db7c","#74c0fc","#ffd43b","#da77f2","#66d9e8","#ffa94d","#e599f7"],Kt={"#ff6b6b":"Soft Red","#69db7c":"Soft Green","#74c0fc":"Soft Blue","#ffd43b":"Soft Yellow","#da77f2":"Soft Purple","#66d9e8":"Soft Cyan","#ffa94d":"Soft Orange","#e599f7":"Soft Pink"},xe=e=>Kt[e]||"Primary",Gt=()=>{const e=x();return(()=>{var n=Ut(),t=n.firstChild,r=t.nextSibling,o=r.firstChild;return u(t,"aria-expanded",!1),v(o,c.createComponent(c.For,{get each(){return[e.widget.state.primaryColor,...Xt]},children:a=>(()=>{var i=Ht();return i.$$click=()=>e.drawing.setState({selectedColor:a}),a!=null?i.style.setProperty("background-color",a):i.style.removeProperty("background-color"),c.createRenderEffect(l=>{var s=`Select ${xe(a)} color`,d=e.drawing.state.selectedColor===a,h=`${xe(a)} color`,f=e.drawing.state.selectedColor===a;return s!==l.e&&u(i,"title",l.e=s),d!==l.t&&u(i,"data-selected",l.t=d),h!==l.a&&u(i,"aria-label",l.a=h),f!==l.o&&u(i,"aria-selected",l.o=f),l},{e:void 0,t:void 0,a:void 0,o:void 0}),i})()})),c.createRenderEffect(a=>{var i=`Current color: ${xe(e.drawing.state.selectedColor)}`,l=e.drawing.state.selectedColor;return i!==a.e&&u(t,"aria-label",a.e=i),l!==a.t&&((a.t=l)!=null?t.style.setProperty("background-color",l):t.style.removeProperty("background-color")),a},{e:void 0,t:void 0}),n})()};E(["click"]);var Zt=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="m9 18 6-6-6-6">');const Qt=e=>(()=>{var n=Zt();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=$(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var Jt=w('<svg viewBox="0 0 64 66"fill=none><path d="M59.716 36.936L54.9 33l-6.17 5.108a77.278 77.278 0 00-12.744 13.469l-3.637 4.914-3.778-5.017a83.719 83.719 0 00-13.956-14.538L9.799 33l2.86-2.332A104.39 104.39 0 0030.1 12.5l2.24-2.98 1.736 2.298a111.905 111.905 0 0018.608 19.384l2.206 1.81 2.861-2.333a104.13 104.13 0 005.297-4.641C59.978 11.294 47.409.26 32.349.26 14.997.26.92 14.923.92 33c0 18.076 14.077 32.74 31.43 32.74 15.102 0 27.715-11.103 30.73-25.892a75.808 75.808 0 00-3.375-2.912h.011z">');const en=e=>(()=>{var n=Jt(),t=n.firstChild;return c.createRenderEffect(r=>{var o=e.size??24,a=e.size??24,i=e.class,l=e.style,s=e.fill??"currentColor";return o!==r.e&&u(n,"width",r.e=o),a!==r.t&&u(n,"height",r.t=a),i!==r.a&&u(n,"class",r.a=i),r.o=$(n,l,r.o),s!==r.i&&u(t,"fill",r.i=s),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),n})();var tn=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M3 7V5a2 2 0 0 1 2-2h2"></path><path d="M17 3h2a2 2 0 0 1 2 2v2"></path><path d="M21 17v2a2 2 0 0 1-2 2h-2"></path><path d="M7 21H5a2 2 0 0 1-2-2v-2">');const nn=e=>(()=>{var n=tn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=$(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var rn=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z">');const an=e=>(()=>{var n=rn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=$(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var on=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M3 6h18"></path><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"></path><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"></path><line x1=10 x2=10 y1=11 y2=17></line><line x1=14 x2=14 y1=11 y2=17>');const Be=e=>(()=>{var n=on();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=$(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var cn=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><circle cx=12 cy=12 r=10></circle><path d="m9 12 2 2 4-4">');const sn=e=>(()=>{var n=cn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=$(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var ln=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><circle cx=12 cy=12 r=10></circle><path d="m15 9-6 6"></path><path d="m9 9 6 6">');const dn=e=>(()=>{var n=ln();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=$(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var un=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M18 6 6 18"></path><path d="m6 6 12 12">');const ue=e=>(()=>{var n=un();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=$(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var hn=w('<div class=echo-drawing-toolbar data-hide-when-drawing=true role=toolbar aria-label="Drawing Tools"><button class=echo-drawing-toolbar-button title="Clear drawings"aria-label="Clear all drawings"role=button>'),fn=w("<button class=echo-drawing-toolbar-button role=button>");const gn={rectangle:nn,path:an},mn=()=>{const e=x(),n=Object.values(F);return(()=>{var t=hn(),r=t.firstChild;return v(t,c.createComponent(c.For,{each:n,children:o=>{const a=gn[o.id];return(()=>{var i=fn();return i.$$click=()=>e.drawing.setState({selectedTool:o.id}),v(i,c.createComponent(a,{class:"echo-drawing-toolbar-icon","aria-hidden":"true"})),c.createRenderEffect(l=>{var s=o.label,d=e.drawing.state.selectedTool===o.id,h=o.label,f=e.drawing.state.selectedTool===o.id;return s!==l.e&&u(i,"title",l.e=s),d!==l.t&&u(i,"data-selected",l.t=d),h!==l.a&&u(i,"aria-label",l.a=h),f!==l.o&&u(i,"aria-pressed",l.o=f),l},{e:void 0,t:void 0,a:void 0,o:void 0}),i})()}}),r),v(t,c.createComponent(Gt,{}),r),r.$$click=()=>e.drawing.setState({shapes:[]},!0),v(r,c.createComponent(Be,{class:"echo-drawing-toolbar-icon","aria-hidden":"true"})),t})()};E(["click"]);var vn=w("<div class=echo-drawing-tooltip data-hide-when-drawing=true>");const wn=()=>{const e=x(),n=c.createMemo(()=>e.drawing.state.showTooltip&&e.drawing.state.mousePosition.y&&e.drawing.state.mousePosition.x&&e.widget.state.isOpen&&!zt());return c.createComponent(c.Show,{get when(){return n()},get children(){var t=vn();return v(t,()=>e.widget.state.text.drawingTooltip.text),c.createRenderEffect(r=>{var o=`${e.drawing.state.mousePosition.y+20}px`,a=`${e.drawing.state.mousePosition.x+10}px`;return o!==r.e&&((r.e=o)!=null?t.style.setProperty("top",o):t.style.removeProperty("top")),a!==r.t&&((r.t=a)!=null?t.style.setProperty("left",a):t.style.removeProperty("left")),r},{e:void 0,t:void 0}),t}})};var bn=w("<button>");const L=e=>{const n=()=>e.variant||"primary",t=()=>e.size||"md";return(()=>{var r=bn();return it(r,c.mergeProps(e,{get class(){return`echo-button echo-button-${n()} echo-button-${t()} ${e.class}`}}),!1),r})()};var pn=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1=10 y1=14 x2=21 y2=3>');const yn=e=>(()=>{var n=pn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=$(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var xn=w("<div class=echo-stored-feedback-empty>No unsubmitted feedback"),kn=w("<div class=echo-stored-feedback><div class=echo-stored-feedback-header><h3>Unsubmitted Feedback</h3></div><div class=echo-stored-feedback-list>"),Cn=w("<div><div class=echo-stored-feedback-content><div class=echo-stored-feedback-path></div><div class=echo-stored-feedback-preview></div></div><div class=echo-stored-feedback-actions>");const Sn=()=>{const e=x();let n;const[t,r]=c.createSignal(ve()),[o,a]=c.createSignal(window.location.pathname),i=m=>{m.key==="Escape"&&e.widget.state.isStoredFeedbackOpen&&e.widget.setState({isStoredFeedbackOpen:!1})},l=m=>{if(!e.widget.state.isStoredFeedbackOpen||!n)return;m.composedPath().includes(n)||e.widget.setState({isStoredFeedbackOpen:!1})},s=()=>{const m=ve();r(m),e.widget.setState({pagesCount:m.length})},d=()=>{a(window.location.pathname)};T({event:"echo-storage-change",callback:s}),T({event:"popstate",callback:d}),ye({target:document.documentElement,options:{childList:!0,subtree:!0},callback:()=>{a(window.location.pathname)}}),T({event:"keydown",callback:i}),T({event:"click",callback:l});const h=(m,b)=>{const S=b?`${m}${b}`:m;window.location.href=S,e.widget.setState({isStoredFeedbackOpen:!1})},f=m=>{o()===m&&e.methods.reset(),Oe(m);const b=ve();r(b),e.widget.setState({pagesCount:b.length})},g=m=>{if(m==="/")return"/";const b=m.split("/");return b.length<=4?m:`/${b[1]}/.../${b[b.length-1]}`};return c.createComponent(c.Show,{get when(){return e.widget.state.isStoredFeedbackOpen},get children(){var m=kn(),b=m.firstChild;b.firstChild;var S=b.nextSibling,k=n;return typeof k=="function"?D(k,m):n=m,v(b,c.createComponent(L,{variant:"secondary",size:"sm",onClick:()=>e.widget.setState({isStoredFeedbackOpen:!1}),get children(){return c.createComponent(ue,{size:20})}}),null),v(S,c.createComponent(c.For,{get each(){return t()},children:C=>{const p=c.createMemo(()=>C.path===o());return(()=>{var P=Cn(),z=P.firstChild,y=z.firstChild,W=y.nextSibling,j=z.nextSibling;return v(y,()=>g(C.path)),v(W,()=>C.state.feedback.message),v(j,(()=>{var O=c.createMemo(()=>!p());return()=>O()&&c.createComponent(L,{class:"echo-stored-feedback-link",variant:"secondary",size:"sm",onClick:()=>h(C.path,C.state.latestQuery),get children(){return c.createComponent(yn,{})}})})(),null),v(j,c.createComponent(L,{class:"echo-stored-feedback-delete",variant:"secondary",size:"sm",onClick:()=>f(C.path),children:"Delete"}),null),c.createRenderEffect(O=>{var Ue=`echo-stored-feedback-item ${p()?"echo-stored-feedback-item-current":""}`,He=C.path;return Ue!==O.e&&Ce(P,O.e=Ue),He!==O.t&&u(y,"title",O.t=He),O},{e:void 0,t:void 0}),P})()}}),null),v(S,c.createComponent(c.Show,{get when(){return t().length===0},get children(){return xn()}}),null),m}})};var En=w('<button class=echo-launcher-button aria-label="Open feedback form"role=button>'),$n=w("<span class=echo-launcher-button-count role=button tabindex=0>");const Pn=()=>{const e=x(),[n,t]=c.createSignal(!1);let r;const o=()=>{r&&window.clearTimeout(r),!e.widget.state.disableMinimization&&(r=window.setTimeout(()=>{const d=V("welcome_message_shown",!1);!e.widget.state.isOpen&&!e.widget.state.isStoredFeedbackOpen&&d&&t(!0)},4e3))},a=()=>{t(!1)},i=()=>{o()},l=d=>{e.widget.setState({isOpen:!e.widget.state.isOpen}),e.widget.setState({welcomeMessageIsClosing:!0}),G("welcome_message_shown",!0)};c.createEffect(()=>{e.widget.state.isOpen||(t(!1),e.widget.state.disableMinimization||o()),e.widget.state.isStoredFeedbackOpen&&t(!1)});const s=d=>{d.stopPropagation(),e.widget.setState({isStoredFeedbackOpen:!e.widget.state.isStoredFeedbackOpen}),t(!1)};return[(()=>{var d=En();return d.addEventListener("pointerleave",i),d.addEventListener("pointerenter",a),d.$$click=l,v(d,c.createComponent(en,{stroke:"white",fill:"#ffffff","aria-hidden":"true"}),null),v(d,(()=>{var h=c.createMemo(()=>e.widget.state.pagesCount>0);return()=>h()&&(()=>{var f=$n();return f.$$click=s,v(f,()=>e.widget.state.pagesCount),c.createRenderEffect(()=>u(f,"aria-label",`View ${e.widget.state.pagesCount} stored feedback items`)),f})()})(),null),c.createRenderEffect(h=>{var f=e.widget.state.isOpen,g=`translateX(${n()?"45px":"0"})`,m=e.widget.state.isOpen;return f!==h.e&&u(d,"data-hidden",h.e=f),g!==h.t&&((h.t=g)!=null?d.style.setProperty("transform",g):d.style.removeProperty("transform")),m!==h.a&&u(d,"aria-expanded",h.a=m),h},{e:void 0,t:void 0,a:void 0}),d})(),c.createComponent(Sn,{})]};E(["click"]);var zn=w("<div class=echo-notification><div class=echo-notification-icon></div><div class=echo-notification-content><div class=echo-notification-title></div><div class=echo-notification-message>");const Mn=()=>{const e=x(),n=()=>{e.widget.setState({notification:{...e.widget.state.notification,show:!1}})},t=()=>{switch(e.widget.state.notification.type){case"success":return e.widget.state.text.notification.successTitle;case"error":return e.widget.state.text.notification.errorTitle;default:return""}};return(()=>{var r=zn(),o=r.firstChild,a=o.nextSibling,i=a.firstChild,l=i.nextSibling;return v(r,c.createComponent(L,{class:"echo-notification-hide",variant:"secondary",size:"sm",onClick:n,get title(){return e.widget.state.text.notification.hideTitle},get children(){return c.createComponent(ue,{size:20})}}),o),v(o,(()=>{var s=c.createMemo(()=>e.widget.state.notification.type==="success");return()=>s()?c.createComponent(sn,{size:32}):(()=>{var d=c.createMemo(()=>e.widget.state.notification.type==="error");return()=>d()?c.createComponent(dn,{size:32}):null})()})()),v(i,t),v(l,()=>{var s;return(s=e.widget.state.notification)==null?void 0:s.message}),c.createRenderEffect(s=>{var d=e.widget.state.notification.type,h=!e.widget.state.notification.type,f=!e.widget.state.notification.show;return d!==s.e&&u(r,"data-type",s.e=d),h!==s.t&&u(r,"data-empty",s.t=h),f!==s.a&&u(r,"data-hidden",s.a=f),s},{e:void 0,t:void 0,a:void 0}),r})()};var Tn=w("<div class=echo-shape-actions data-hide-when-drawing=true>");const On=()=>{const e=x();let n;const[t,r]=c.createSignal({x:window.scrollX,y:window.scrollY});T({event:"scroll",callback:()=>{r({x:window.scrollX,y:window.scrollY})}});const a=()=>{e.drawing.state.selectedShapeId&&e.drawing.setState({shapes:e.drawing.state.shapes.filter(s=>s.id!==e.drawing.state.selectedShapeId),selectedShapeId:null})},i=c.createMemo(()=>e.drawing.state.selectedShapeId?e.drawing.state.shapes.find(s=>s.id===e.drawing.state.selectedShapeId):null),l=c.createMemo(()=>{const s=i(),d=n==null?void 0:n.getBoundingClientRect();if(!s||!d)return null;let h=null;if(s.type==="rectangle"){const m=je(s.points);if(!m)return null;h={x:m.x+m.width/2,y:m.y}}else if(s.type==="path"&&s.points.length>0)h={x:s.points[0].x,y:s.points[0].y};else return null;const f=8,g=t();return{x:Math.max(d.width/2+f,Math.min(window.innerWidth-d.width/2-f,h.x-g.x)),y:Math.max(d.height+f,Math.min(window.innerHeight-f,h.y-g.y))}});return(()=>{var s=Tn(),d=n;return typeof d=="function"?D(d,s):n=s,s.style.setProperty("top","0"),s.style.setProperty("left","0"),v(s,c.createComponent(L,{onClick:a,size:"sm",variant:"secondary",title:"Delete shape",get children(){return c.createComponent(Be,{size:20})}})),c.createRenderEffect(h=>{var m,b;var f=!l(),g=`translate(calc(${(m=l())==null?void 0:m.x}px - 50%), calc(${(b=l())==null?void 0:b.y}px - 125%))`;return f!==h.e&&(s.hidden=h.e=f),g!==h.t&&((h.t=g)!=null?s.style.setProperty("transform",g):s.style.removeProperty("transform")),h},{e:void 0,t:void 0}),s})()};var In=w("<button class=echo-welcome-message><span class=echo-welcome-message-pulsar></span><div class=echo-welcome-message-close role=button tabindex=0>");const Rn=()=>{const e=x(),n=V("welcome_message_shown",!1),t=o=>{o.stopPropagation(),e.widget.setState({welcomeMessageIsClosing:!0}),G("welcome_message_shown",!0)},r=()=>{e.widget.setState({isOpen:!0}),e.widget.setState({welcomeMessageIsClosing:!0}),G("welcome_message_shown",!0)};return n?null:(()=>{var o=In(),a=o.firstChild,i=a.nextSibling;return o.$$click=r,o.style.setProperty("bottom","80px"),o.style.setProperty("right","20px"),v(o,()=>e.widget.state.text.welcomeMessage.text,i),i.$$keydown=l=>l.key==="Enter"&&t(l),i.$$click=t,v(i,c.createComponent(ue,{size:16,strokeWidth:3})),c.createRenderEffect(l=>{var s=e.widget.state.welcomeMessageIsClosing,d=e.widget.state.text.welcomeMessage.closeAriaLabel;return s!==l.e&&u(o,"data-hidden",l.e=s),d!==l.t&&u(i,"aria-label",l.t=d),l},{e:void 0,t:void 0}),o})()};E(["click","keydown"]);var An=w("<svg><rect class=echo-shape fill=transparent vector-effect=non-scaling-stroke role=img></svg>",!1,!0),Dn=w("<svg><path class=echo-shape fill=none vector-effect=non-scaling-stroke stroke-linecap=round role=img></svg>",!1,!0);const Ye=e=>{const n=c.createMemo(()=>e.id===e.selectedShapeId);return[c.createComponent(c.Show,{get when(){return e.type==="rectangle"},get children(){return c.createComponent(Fn,c.mergeProps(e,{get isSelected(){return n()}}))}}),c.createComponent(c.Show,{get when(){return e.type==="path"},get children(){return c.createComponent(Ln,c.mergeProps(e,{get isSelected(){return n()}}))}})]},Fn=e=>{const n=c.createMemo(()=>je(e.points));return c.createComponent(c.Show,{get when(){return n()},get children(){var t=An();return t.$$keydown=r=>{var o;return r.key==="Enter"&&((o=e.onShapeClick)==null?void 0:o.call(e,e.id))},t.$$click=()=>{var r;return(r=e.onShapeClick)==null?void 0:r.call(e,e.id)},c.createRenderEffect(r=>{var o=e.id,a=e.isSelected,i=n().x,l=n().y,s=n().width,d=n().height,h=e.color,f=F.rectangle.strokeWidth,g=e.isSelected?F.rectangle.opacity.selected:F.rectangle.opacity.default,m=e.isSelected?"5,5":"none",b=e.isSelected?"move":"pointer",S=`Rectangle shape ${e.isSelected?"(selected)":""}`,k=e.onShapeClick?0:-1;return o!==r.e&&u(t,"data-shape-id",r.e=o),a!==r.t&&u(t,"data-selected",r.t=a),i!==r.a&&u(t,"x",r.a=i),l!==r.o&&u(t,"y",r.o=l),s!==r.i&&u(t,"width",r.i=s),d!==r.n&&u(t,"height",r.n=d),h!==r.s&&u(t,"stroke",r.s=h),f!==r.h&&u(t,"stroke-width",r.h=f),g!==r.r&&u(t,"opacity",r.r=g),m!==r.d&&u(t,"stroke-dasharray",r.d=m),b!==r.l&&u(t,"cursor",r.l=b),S!==r.u&&u(t,"aria-label",r.u=S),k!==r.c&&u(t,"tabindex",r.c=k),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),t}})},Ln=e=>{const n=c.createMemo(()=>Mt(e.points));return c.createComponent(c.Show,{get when(){return n()},get children(){var t=Dn();return t.$$keydown=r=>{var o;return r.key==="Enter"&&((o=e.onShapeClick)==null?void 0:o.call(e,e.id))},t.$$click=()=>{var r;return(r=e.onShapeClick)==null?void 0:r.call(e,e.id)},c.createRenderEffect(r=>{var o=e.id,a=e.isSelected,i=n(),l=e.color,s=F.path.strokeWidth,d=e.isSelected?F.path.opacity.selected:F.path.opacity.default,h=e.isSelected?"move":"pointer",f=`Freehand shape ${e.isSelected?"(selected)":""}`,g=e.onShapeClick?0:-1;return o!==r.e&&u(t,"data-shape-id",r.e=o),a!==r.t&&u(t,"data-selected",r.t=a),i!==r.a&&u(t,"d",r.a=i),l!==r.o&&u(t,"stroke",r.o=l),s!==r.i&&u(t,"stroke-width",r.i=s),d!==r.n&&u(t,"opacity",r.n=d),h!==r.s&&u(t,"cursor",r.s=h),f!==r.h&&u(t,"aria-label",r.h=f),g!==r.r&&u(t,"tabindex",r.r=g),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),t}})};E(["click","keydown"]);var jn=w('<div class=echo-drawing-layer-container role=application aria-label="Drawing Canvas"><svg width=100% height=100% class=echo-drawing-layer preserveAspectRatio=none role=img aria-label="Drawing Area"><path class=echo-drawing-layer-mask fill="rgba(33, 43, 55, 1)"fill-opacity=0.2 fill-rule=evenodd aria-hidden=true>');const Nn=()=>{const e=x();let n;return c.onMount(()=>{n==null||n.addEventListener("mousemove",e.drawing.methods.handleMove),n==null||n.addEventListener("mouseup",e.drawing.methods.handleEnd),n==null||n.addEventListener("touchmove",e.drawing.methods.handleMove,{passive:!1}),n==null||n.addEventListener("touchend",e.drawing.methods.handleEnd)}),c.onCleanup(()=>{n==null||n.removeEventListener("mousemove",e.drawing.methods.handleMove),n==null||n.removeEventListener("mouseup",e.drawing.methods.handleEnd),n==null||n.removeEventListener("touchmove",e.drawing.methods.handleMove),n==null||n.removeEventListener("touchend",e.drawing.methods.handleEnd)}),(()=>{var t=jn(),r=t.firstChild,o=r.firstChild,a=n;return typeof a=="function"?D(a,t):n=t,v(t,c.createComponent(wn,{}),r),v(t,c.createComponent(On,{}),r),N(r,"touchend",e.drawing.methods.handleLeave,!0),N(r,"mouseleave",e.drawing.methods.handleLeave),N(r,"mouseenter",e.drawing.methods.handleEnter),r.$$touchmove=i=>{i.preventDefault(),e.drawing.methods.handleMove(i)},N(r,"mousemove",e.drawing.methods.handleMove,!0),r.$$touchstart=i=>{i.preventDefault(),e.drawing.methods.handleStart(i),e.drawing.methods.handleEnter(i),e.drawing.setState({showTooltip:!1,hasDrawn:!0})},r.$$mousedown=i=>{e.drawing.methods.handleStart(i),e.drawing.setState({showTooltip:!1,hasDrawn:!0})},v(r,c.createComponent(c.For,{get each(){return e.drawing.state.shapes},children:i=>c.createComponent(Ye,{get id(){return i.id},get type(){return i.type},get color(){return i.color},get points(){return i.points},get selectedShapeId(){return e.drawing.state.selectedShapeId},get onShapeClick(){return e.drawing.methods.handleShapeClick}})}),null),v(r,c.createComponent(Ye,{id:"temp",get type(){return e.drawing.state.selectedTool},get color(){return e.drawing.state.selectedColor},get points(){return e.drawing.state.currentPoints},get selectedShapeId(){return e.drawing.state.selectedShapeId}}),null),c.createRenderEffect(i=>{var l=e.drawing.state.cursor,s=Ft({width:e.widget.state.dimensions.width,height:e.widget.state.dimensions.height},e.drawing.state.currentPoints,e.drawing.state.shapes);return l!==i.e&&((i.e=l)!=null?t.style.setProperty("cursor",l):t.style.removeProperty("cursor")),s!==i.t&&u(o,"d",i.t=s),i},{e:void 0,t:void 0}),t})()};E(["mousedown","touchstart","mousemove","touchmove","touchend"]);const re=e=>({handleTextChange:a=>{const i=a.target;e(i.value)},handleSelectChange:a=>{e(a)},handleCheckboxChange:(a,i,l)=>{const s=l?[...a,i]:a.filter(d=>d!==i);e(s)},getCheckboxValue:a=>Array.isArray(a)?a:[]});var qn=w("<div class=echo-input role=group>"),Vn=w("<label class=echo-input-label><span>"),Wn=w('<span class=echo-input-required aria-label="Required field">*');const ae=e=>(()=>{var n=qn();return v(n,(()=>{var t=c.createMemo(()=>!!e.label);return()=>t()&&(()=>{var r=Vn(),o=r.firstChild;return v(o,()=>e.label),v(r,(()=>{var a=c.createMemo(()=>!!e.required);return()=>a()&&Wn()})(),null),r})()})(),null),v(n,()=>e.children,null),n})();var Bn=w("<textarea class=echo-input-field rows=5>"),Yn=w("<div class=visually-hidden>");const _e=e=>{const{handleTextChange:n}=re(e.onChange);return c.createComponent(ae,{get label(){return e.config.label},get required(){return e.config.required},get children(){return[(()=>{var t=Bn();return N(t,"input",n,!0),c.createRenderEffect(r=>{var o=e.config.id,a=e.config.placeholder,i=e.config.required,l=e.config.label||e.config.placeholder,s=e.config.required,d=e.value==="",h=`${e.config.id}-description`;return o!==r.e&&u(t,"id",r.e=o),a!==r.t&&u(t,"placeholder",r.t=a),i!==r.a&&(t.required=r.a=i),l!==r.o&&u(t,"aria-label",r.o=l),s!==r.i&&u(t,"aria-required",r.i=s),d!==r.n&&u(t,"aria-invalid",r.n=d),h!==r.s&&u(t,"aria-describedby",r.s=h),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),c.createRenderEffect(()=>t.value=e.value===void 0?"":e.value),t})(),(()=>{var t=Yn();return v(t,()=>e.config.placeholder),c.createRenderEffect(()=>u(t,"id",`${e.config.id}-description`)),t})()]}})};E(["input"]);var _n=w("<fieldset class=echo-input-options role=group>"),Un=w("<label class=echo-input-option><input type=checkbox><span>");const Hn=e=>{const{handleCheckboxChange:n,getCheckboxValue:t}=re(e.onChange),r=()=>t(e.value),o=()=>r().length>0;return c.createComponent(ae,{get label(){return e.config.label},get required(){return e.config.required},get children(){var a=_n();return v(a,c.createComponent(c.For,{get each(){return e.config.options},children:(i,l)=>(()=>{var s=Un(),d=s.firstChild,h=d.nextSibling;return d.addEventListener("change",f=>n(r(),i.value,f.currentTarget.checked)),v(h,()=>i.label),c.createRenderEffect(()=>d.required=e.config.required&&!o()&&l()===0),c.createRenderEffect(()=>d.value=i.value),c.createRenderEffect(()=>d.checked=r().includes(i.value)),s})()})),c.createRenderEffect(()=>u(a,"aria-required",e.config.required)),a}})};var Xn=w("<fieldset class=echo-input-options role=radiogroup>"),Kn=w("<label class=echo-input-option><input type=radio><span>");const Gn=e=>{const{handleSelectChange:n}=re(e.onChange);return c.createComponent(ae,{get label(){return e.config.label},get required(){return e.config.required},get children(){var t=Xn();return v(t,c.createComponent(c.For,{get each(){return e.config.options},children:r=>(()=>{var o=Kn(),a=o.firstChild,i=a.nextSibling;return a.addEventListener("change",()=>n(r.value)),v(i,()=>r.label),c.createRenderEffect(l=>{var s=e.config.id,d=e.config.required;return s!==l.e&&u(a,"name",l.e=s),d!==l.t&&(a.required=l.t=d),l},{e:void 0,t:void 0}),c.createRenderEffect(()=>a.value=r.value),c.createRenderEffect(()=>a.checked=e.value===r.value),o})()})),c.createRenderEffect(()=>u(t,"aria-required",e.config.required)),t}})};var Zn=w("<div class=echo-select-dropdown role=listbox>"),Qn=w('<div class=echo-select><button type=button class=echo-select-trigger aria-haspopup=listbox><span></span><svg class=echo-select-arrow width=16 height=16 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="m6 9 6 6 6-6"></path></svg></button><input type=text class=visually-hidden aria-hidden=true>'),Jn=w("<button type=button class=echo-select-option role=option>");const er=e=>{const{handleSelectChange:n}=re(e.onChange),[t,r]=c.createSignal(!1);let o,a,i;const l=()=>e.config.options.find(f=>f.value===(e.value===void 0?"":e.value)),s=(f,g)=>{g.stopPropagation(),f.value===e.value?e.config.required||n(""):n(f.value),r(!1)},d=()=>{r(!t())};return T({event:"mousedown",callback:f=>{if(!t()||!o)return;f.composedPath().includes(o)||r(!1)}}),c.createComponent(ae,{get label(){return e.config.label},get required(){return e.config.required},get children(){var f=Qn(),g=f.firstChild,m=g.firstChild,b=g.nextSibling,S=o;typeof S=="function"?D(S,f):o=f,g.$$click=p=>{p.stopPropagation(),d()};var k=a;typeof k=="function"?D(k,g):a=g,v(m,()=>{var p;return((p=l())==null?void 0:p.label)||e.config.placeholder}),v(f,c.createComponent(c.Show,{get when(){return t()},get children(){var p=Zn();return v(p,c.createComponent(c.For,{get each(){return e.config.options},children:P=>(()=>{var z=Jn();return z.$$click=y=>s(P,y),v(z,()=>P.label),c.createRenderEffect(y=>{var W=P.value===e.value,j=P.value===e.value;return W!==y.e&&u(z,"aria-selected",y.e=W),j!==y.t&&u(z,"data-selected",y.t=j),y},{e:void 0,t:void 0}),z})()})),p}}),b);var C=i;return typeof C=="function"?D(C,b):i=b,c.createRenderEffect(p=>{var P=t(),z=!e.value,y=e.config.required,W=t(),j=e.config.required,O=e.config.required;return P!==p.e&&u(g,"data-open",p.e=P),z!==p.t&&u(g,"data-placeholder",p.t=z),y!==p.a&&u(g,"data-required",p.a=y),W!==p.o&&u(g,"aria-expanded",p.o=W),j!==p.i&&u(g,"aria-required",p.i=j),O!==p.n&&(b.required=p.n=O),p},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),c.createRenderEffect(()=>b.value=e.value===void 0?"":e.value),f}})};E(["click"]);var tr=w("<input type=text class=echo-input-field>");const nr=e=>{const{handleTextChange:n}=re(e.onChange);return c.createComponent(ae,{get label(){return e.config.label},get required(){return e.config.required},get children(){var t=tr();return N(t,"input",n,!0),c.createRenderEffect(r=>{var o=e.config.placeholder,a=e.config.required,i=e.config.disabled;return o!==r.e&&u(t,"placeholder",r.e=o),a!==r.t&&(t.required=r.t=a),i!==r.a&&(t.disabled=r.a=i),r},{e:void 0,t:void 0,a:void 0}),c.createRenderEffect(()=>t.value=e.value===void 0?"":e.value),t}})};E(["input"]);var rr=w("<div class=echo-input-error>Invalid input type"),ar=w("<div class=echo-input-error>Unsupported input type: ");const or=e=>c.createComponent(c.Show,{get when(){return e.config.type},keyed:!0,get fallback(){return rr()},get children(){return c.createComponent(c.Switch,{get fallback(){return(()=>{var n=ar();return n.firstChild,v(n,()=>e.config.type,null),n})()},get children(){return[c.createComponent(c.Match,{get when(){return e.config.type==="text"},get children(){return c.createComponent(nr,c.mergeProps(e,{get value(){return e.value},get config(){return e.config}}))}}),c.createComponent(c.Match,{get when(){return e.config.type==="textarea"},get children(){return c.createComponent(_e,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}}),c.createComponent(c.Match,{get when(){return e.config.type==="radio"},get children(){return c.createComponent(Gn,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}}),c.createComponent(c.Match,{get when(){return e.config.type==="checkbox"},get children(){return c.createComponent(Hn,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}}),c.createComponent(c.Match,{get when(){return e.config.type==="select"},get children(){return c.createComponent(er,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}})]}})}}),ir=()=>{const e=navigator.connection;return{effectiveType:e==null?void 0:e.effectiveType,downlink:e==null?void 0:e.downlink,rtt:e==null?void 0:e.rtt,saveData:e==null?void 0:e.saveData}},cr=()=>({width:window.innerWidth,height:window.innerHeight,screenWidth:window.screen.width,screenHeight:window.screen.height,language:navigator.language,languages:navigator.languages,doNotTrack:navigator.doNotTrack,cookiesEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,maxTouchPoints:navigator.maxTouchPoints,colorDepth:window.screen.colorDepth,pixelRatio:window.devicePixelRatio,availableWidth:window.screen.availWidth,availableHeight:window.screen.availHeight}),sr=()=>{const e=new URL(window.location.href),n={};return e.searchParams.forEach((t,r)=>{n[r]=t}),{url:e.href,origin:e.origin,pathname:e.pathname,searchParams:n,referrer:document.referrer}},lr=()=>({timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,localDateTime:new Date().toISOString()}),dr=()=>({userAgent:navigator.userAgent,browserInfo:cr(),networkInfo:ir(),locationInfo:sr(),timeInfo:lr(),console:Pt()});var ur=w("<fieldset class=echo-input-options-wrapper><legend class=visually-hidden>Additional Information"),hr=w('<section class=echo-feedback data-hide-when-drawing=true role=dialog aria-label="Feedback Form"><form class=echo-feedback-content aria-label="Submit Feedback"><header class=echo-feedback-header><h3 class=echo-feedback-title id=feedback-form-title></h3><div class=echo-feedback-header-actions role=toolbar aria-label="Form controls"></div></header><fieldset class=echo-input-options-wrapper><legend class=visually-hidden>Feedback Message</legend></fieldset><footer class=echo-feedback-footer>');const fr=()=>{const e=x(),n=async o=>{o.preventDefault();const a=await Dt(),i={message:e.feedback.state.message,screenshot:a,metadata:dr(),customInputs:e.feedback.state.customInputValues};e.methods.submit(i)},t=o=>{o.stopPropagation(),e.feedback.setState({isMinimized:!0})},r=()=>{e.feedback.setState({isMinimized:!1})};return c.createEffect(()=>{e.widget.state.isOpen&&requestAnimationFrame(()=>{var o;(o=document.querySelector(".echo-input-field"))==null||o.focus()})}),(()=>{var o=hr(),a=o.firstChild,i=a.firstChild,l=i.firstChild,s=l.nextSibling,d=i.nextSibling;d.firstChild;var h=d.nextSibling;return o.$$click=()=>e.feedback.state.isMinimized&&r(),a.addEventListener("submit",n),v(l,()=>e.widget.state.text.feedbackForm.title),v(s,c.createComponent(L,{type:"button",title:"Hide form",variant:"secondary",size:"sm",onClick:t,"aria-label":"Minimize feedback form",get children(){return c.createComponent(Qt,{size:20})}}),null),v(s,c.createComponent(L,{type:"button",title:"Close form",variant:"secondary",size:"sm",onClick:()=>e.widget.setState({isOpen:!1}),"aria-label":"Close feedback form",get children(){return c.createComponent(ue,{size:20})}}),null),v(d,c.createComponent(_e,{get config(){return{type:"textarea",id:"message",placeholder:e.widget.state.text.feedbackForm.placeholder,label:"Feedback Message",required:!0}},get value(){return e.feedback.state.message},onChange:f=>e.feedback.setState({message:f})}),null),v(a,c.createComponent(c.Show,{get when(){var f;return(f=e.widget.state.customInputs)==null?void 0:f.length},get children(){var f=ur();return f.firstChild,v(f,c.createComponent(c.For,{get each(){return e.widget.state.customInputs},children:g=>c.createComponent(or,{config:g,get value(){return e.feedback.state.customInputValues[g.id]},onChange:m=>e.feedback.setState({customInputValues:{...e.feedback.state.customInputValues,[g.id]:m}})})}),null),f}}),h),v(h,c.createComponent(L,{type:"submit",variant:"primary",size:"lg",style:{width:"100%"},"aria-label":"Submit feedback",get children(){return e.widget.state.text.feedbackForm.submitButton}})),c.createRenderEffect(f=>{var g=e.feedback.state.isMinimized,m=e.feedback.state.isMinimized?"pointer":"default",b=!e.feedback.state.isMinimized;return g!==f.e&&u(o,"data-minimized",f.e=g),m!==f.t&&((f.t=m)!=null?o.style.setProperty("cursor",m):o.style.removeProperty("cursor")),b!==f.a&&u(o,"aria-expanded",f.a=b),f},{e:void 0,t:void 0,a:void 0}),o})()};E(["click"]);var gr=w("<style>"),mr=w("<div class=echo-launcher>"),vr=w("<dialog class=echo-overlay>"),wr=w("<div class=echo-root>");const br=e=>{const[n,t]=c.createSignal();return c.createEffect(()=>{const r=n();r&&Tt(r.shadowRoot)}),c.createComponent(ht,{ref:t,useShadow:!0,get mount(){return document.body},get children(){return c.createComponent(Wt,c.mergeProps(e,{get children(){return c.createComponent(kr,{get children(){return[c.createComponent(pr,{get primaryColor(){return e.primaryColor}}),c.createComponent(yr,{})]}})}}))}})},pr=e=>{const[n,t]=c.createSignal("");return c.createEffect(()=>{const r=`
4
4
  .echo-root {
5
5
  --primary-color: ${e.primaryColor};
6
6
  --primary-text-color: ${St(e.primaryColor)};
7
7
  }
8
- `;t(r)}),(()=>{var r=gr();return v(r,_t,null),v(r,n,null),r})()},yr=()=>{const e=x();return[(()=>{var n=mr();return v(n,c.createComponent(Pn,{}),null),v(n,c.createComponent(Rn,{}),null),v(n,c.createComponent(Mn,{}),null),c.createRenderEffect(()=>u(n,"data-hidden",e.widget.state.isOpen)),n})(),c.createComponent(xr,{get children(){return[c.createComponent(fr,{}),c.createComponent(mn,{}),c.createComponent(Nn,{})]}})]},xr=e=>{const[n,t]=c.createSignal(),r=x(),o=Bt(()=>n());return c.createEffect(()=>{n()&&r.widget.setState({dimensions:o()})}),c.createEffect(()=>{var a,i;r.widget.state.isOpen?(a=n())==null||a.showModal():(i=n())==null||i.close()}),(()=>{var a=vr();return a.addEventListener("close",()=>r.widget.setState({isOpen:!1})),D(t,a),v(a,()=>e.children),c.createRenderEffect(i=>{var l=`${o().height}px`,s=`${o().width}px`,d=!r.widget.state.isOpen;return l!==i.e&&((i.e=l)!=null?a.style.setProperty("height",l):a.style.removeProperty("height")),s!==i.t&&((i.t=s)!=null?a.style.setProperty("width",s):a.style.removeProperty("width")),d!==i.a&&u(a,"data-hidden",i.a=d),i},{e:void 0,t:void 0,a:void 0}),a})()},kr=e=>{const n=x();return Yt({onUrlChange:t=>n.methods.handlePageChange(t)}),c.onMount(()=>{Et(),Ot(t=>{t.target instanceof Document||t.target instanceof Window||t.target instanceof Element&&t.target.shadowRoot&&ne(t.target.shadowRoot)||t.target instanceof Node&&ne(t.target)})}),c.onCleanup(()=>{$t(),It()}),(()=>{var t=br();return v(t,()=>e.children),c.createRenderEffect(()=>u(t,"data-drawing",n.drawing.state.isDrawing)),t})()},Cr={welcomeMessage:{text:"Click here to leave feedback",closeAriaLabel:"Close welcome message"},feedbackForm:{title:"Send Feedback",placeholder:"What's on your mind? We'd love to hear your feedback...",screenshotAlt:"Screenshot Preview",submitButton:"Send Feedback",minimizeTitle:"Minimize",expandTitle:"Expand",closeTitle:"Close",showFormTitle:"Show Feedback Form"},notification:{successTitle:"Thank you for your feedback!",errorTitle:"Something went wrong.",errorMessage:"Failed to send feedback. Please try again.",hideTitle:"Hide notification"},drawingTooltip:{text:"Click & drag to draw"}};let he=null;function Sr(e){he&&(console.warn("Echo widget is already initialized. Cleaning up previous instance..."),he());try{Lt(e);const{position:n="bottom-right",primaryColor:t="#6227dc",onSubmit:r,textConfig:o={},customInputs:a=[],disableMinimization:i=!1}=e,l=Pe(Cr,o),s=document.createElement("div");document.body.appendChild(s);const d=rt(()=>c.createComponent(wr,{position:n,primaryColor:t,textConfig:l,onSubmit:r,customInputs:a,disableMinimization:i}),s);s.remove();const h=()=>{d(),he=null};return window.addEventListener("unload",h,{once:!0}),he=h,h}catch(n){throw console.error("Echo initialization failed:",n),n}}A.initEcho=Sr,Object.defineProperty(A,Symbol.toStringTag,{value:"Module"})});
8
+ `;t(r)}),(()=>{var r=gr();return v(r,_t,null),v(r,n,null),r})()},yr=()=>{const e=x();return[(()=>{var n=mr();return v(n,c.createComponent(Pn,{}),null),v(n,c.createComponent(Rn,{}),null),v(n,c.createComponent(Mn,{}),null),c.createRenderEffect(t=>{var r={...e.widget.state.position.includes("top")?{top:"var(--spacing-xl)"}:{bottom:"var(--spacing-xl)"},...e.widget.state.position.includes("left")?{left:"var(--spacing-xl)"}:{right:"var(--spacing-xl)"}},o=e.widget.state.isOpen;return t.e=$(n,r,t.e),o!==t.t&&u(n,"data-hidden",t.t=o),t},{e:void 0,t:void 0}),n})(),c.createComponent(xr,{get children(){return[c.createComponent(fr,{}),c.createComponent(mn,{}),c.createComponent(Nn,{})]}})]},xr=e=>{const[n,t]=c.createSignal(),r=x(),o=Bt(()=>n());return c.createEffect(()=>{n()&&r.widget.setState({dimensions:o()})}),c.createEffect(()=>{var a,i;r.widget.state.isOpen?(a=n())==null||a.showModal():(i=n())==null||i.close()}),(()=>{var a=vr();return a.addEventListener("close",()=>r.widget.setState({isOpen:!1})),D(t,a),v(a,()=>e.children),c.createRenderEffect(i=>{var l=`${o().height}px`,s=`${o().width}px`,d=!r.widget.state.isOpen;return l!==i.e&&((i.e=l)!=null?a.style.setProperty("height",l):a.style.removeProperty("height")),s!==i.t&&((i.t=s)!=null?a.style.setProperty("width",s):a.style.removeProperty("width")),d!==i.a&&u(a,"data-hidden",i.a=d),i},{e:void 0,t:void 0,a:void 0}),a})()},kr=e=>{const n=x();return Yt({onUrlChange:t=>n.methods.handlePageChange(t)}),c.onMount(()=>{Et(),Ot(t=>{t.target instanceof Document||t.target instanceof Window||t.target instanceof Element&&t.target.shadowRoot&&ne(t.target.shadowRoot)||t.target instanceof Node&&ne(t.target)})}),c.onCleanup(()=>{$t(),It()}),(()=>{var t=wr();return v(t,()=>e.children),c.createRenderEffect(()=>u(t,"data-drawing",n.drawing.state.isDrawing)),t})()},Cr={welcomeMessage:{text:"Click here to leave feedback",closeAriaLabel:"Close welcome message"},feedbackForm:{title:"Send Feedback",placeholder:"What's on your mind? We'd love to hear your feedback...",screenshotAlt:"Screenshot Preview",submitButton:"Send Feedback",minimizeTitle:"Minimize",expandTitle:"Expand",closeTitle:"Close",showFormTitle:"Show Feedback Form"},notification:{successTitle:"Thank you for your feedback!",errorTitle:"Something went wrong.",errorMessage:"Failed to send feedback. Please try again.",hideTitle:"Hide notification"},drawingTooltip:{text:"Click & drag to draw"}};let he=null;function Sr(e){he&&(console.warn("Echo widget is already initialized. Cleaning up previous instance..."),he());try{Lt(e);const{position:n="bottom-right",primaryColor:t="#6227dc",onSubmit:r,textConfig:o={},customInputs:a=[],disableMinimization:i=!1}=e,l=Pe(Cr,o),s=document.createElement("div");document.body.appendChild(s);const d=rt(()=>c.createComponent(br,{position:n,primaryColor:t,textConfig:l,onSubmit:r,customInputs:a,disableMinimization:i}),s);s.remove();const h=()=>{d(),he=null};return window.addEventListener("unload",h,{once:!0}),he=h,h}catch(n){throw console.error("Echo initialization failed:",n),n}}A.initEcho=Sr,Object.defineProperty(A,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@contember/echo",
3
3
  "license": "Apache-2.0",
4
- "version": "0.0.33-beta.5",
4
+ "version": "0.0.33-beta.6",
5
5
  "type": "module",
6
6
  "author": "neumie@neumie.dev",
7
7
  "keywords": [