@contember/echo 0.0.30 → 0.0.31

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 Ue, createRenderEffect as b, untrack as Ye, getOwner as De, createEffect as Y, runWithOwner as lt, createMemo as k, createSignal as A, onCleanup as ee, $PROXY as R, $TRACK as Fe, getListener as Ce, batch as ct, onMount as ye, createContext as dt, createComponent as f, useContext as ut, For as _, Show as D, mergeProps as ge, Switch as ht, Match as te } from "solid-js";
1
+ import { sharedConfig as L, createRoot as Ue, createRenderEffect as b, untrack as Ye, getOwner as De, createEffect as Y, runWithOwner as lt, createMemo as k, createSignal as A, onCleanup as te, $PROXY as R, $TRACK as Fe, getListener as $e, batch as ct, onMount as pe, createContext as dt, createComponent as f, useContext as ut, For as _, Show as D, mergeProps as ge, Switch as ht, Match as ne } from "solid-js";
2
2
  import ft from "html2canvas";
3
3
  const gt = [
4
4
  "allowfullscreen",
@@ -342,7 +342,7 @@ function ae(e, n, t, r, a) {
342
342
  }), () => t;
343
343
  if (Array.isArray(n)) {
344
344
  const s = [], c = t && Array.isArray(t);
345
- if ($e(s, n, t, a))
345
+ if (Ee(s, n, t, a))
346
346
  return b(() => t = ae(e, s, t, r, !0)), () => t;
347
347
  if (o) {
348
348
  if (!s.length) return t;
@@ -368,18 +368,18 @@ function ae(e, n, t, r, a) {
368
368
  }
369
369
  return t;
370
370
  }
371
- function $e(e, n, t, r) {
371
+ function Ee(e, n, t, r) {
372
372
  let a = !1;
373
373
  for (let o = 0, i = n.length; o < i; o++) {
374
374
  let l = n[o], s = t && t[e.length], c;
375
375
  if (!(l == null || l === !0 || l === !1)) if ((c = typeof l) == "object" && l.nodeType)
376
376
  e.push(l);
377
377
  else if (Array.isArray(l))
378
- a = $e(e, l, s) || a;
378
+ a = Ee(e, l, s) || a;
379
379
  else if (c === "function")
380
380
  if (r) {
381
381
  for (; typeof l == "function"; ) l = l();
382
- a = $e(
382
+ a = Ee(
383
383
  e,
384
384
  Array.isArray(l) ? l : [l],
385
385
  Array.isArray(s) ? s : [s]
@@ -424,7 +424,7 @@ function Ot(e) {
424
424
  const l = r();
425
425
  if (l instanceof HTMLHeadElement) {
426
426
  const [s, c] = A(!1), d = () => c(!0);
427
- Ue((h) => v(l, () => s() ? h() : o(), null)), ee(d);
427
+ Ue((h) => v(l, () => s() ? h() : o(), null)), te(d);
428
428
  } else {
429
429
  const s = It(e.isSVG ? "g" : "div", e.isSVG), c = n && s.attachShadow ? s.attachShadow({
430
430
  mode: "open"
@@ -434,7 +434,7 @@ function Ot(e) {
434
434
  return t.parentNode;
435
435
  },
436
436
  configurable: !0
437
- }), v(c, o), l.appendChild(s), e.ref && e.ref(s), ee(() => l.removeChild(s));
437
+ }), v(c, o), l.appendChild(s), e.ref && e.ref(s), te(() => l.removeChild(s));
438
438
  }
439
439
  },
440
440
  void 0,
@@ -504,7 +504,7 @@ const Mt = 5e3, At = (e) => {
504
504
  } catch (t) {
505
505
  console.warn("Failed to save to localStorage:", t);
506
506
  }
507
- }, Ee = () => {
507
+ }, Pe = () => {
508
508
  const e = window.location.pathname || "/", n = window.location.search;
509
509
  return `${e}${n}`;
510
510
  }, Lt = (e, n) => {
@@ -524,7 +524,7 @@ const Mt = 5e3, At = (e) => {
524
524
  } catch (t) {
525
525
  console.warn("Failed to save page state:", t);
526
526
  }
527
- }, ze = (e) => {
527
+ }, Te = (e) => {
528
528
  try {
529
529
  return G(K, {})[e];
530
530
  } catch (n) {
@@ -545,7 +545,7 @@ const Mt = 5e3, At = (e) => {
545
545
  } catch (e) {
546
546
  return console.error("Failed to get stored pages count:", e), 0;
547
547
  }
548
- }, xe = () => {
548
+ }, ke = () => {
549
549
  try {
550
550
  const e = G(K, {});
551
551
  return Object.entries(e).map(([n, t]) => ({
@@ -557,7 +557,7 @@ const Mt = 5e3, At = (e) => {
557
557
  }
558
558
  }, jt = (e) => Dt((n, t, r = !1) => {
559
559
  (!r || t.feedback.message.trim().length > 0 || t.drawing.shapes.length > 0) && (Lt(n, t), e.setState({ pagesCount: Qe() }));
560
- }, 1e3), Pe = Symbol("store-raw"), J = Symbol("store-node"), j = Symbol("store-has"), et = Symbol("store-self");
560
+ }, 1e3), ze = Symbol("store-raw"), Z = Symbol("store-node"), j = Symbol("store-has"), et = Symbol("store-self");
561
561
  function tt(e) {
562
562
  let n = e[R];
563
563
  if (!n && (Object.defineProperty(e, R, {
@@ -580,7 +580,7 @@ function me(e) {
580
580
  }
581
581
  function se(e, n = /* @__PURE__ */ new Set()) {
582
582
  let t, r, a, o;
583
- if (t = e != null && e[Pe]) return t;
583
+ if (t = e != null && e[ze]) return t;
584
584
  if (!me(e) || n.has(e)) return e;
585
585
  if (Array.isArray(e)) {
586
586
  Object.isFrozen(e) ? e = e.slice(0) : n.add(e);
@@ -610,31 +610,31 @@ function le(e, n, t) {
610
610
  }
611
611
  function Nt(e, n) {
612
612
  const t = Reflect.getOwnPropertyDescriptor(e, n);
613
- return !t || t.get || !t.configurable || n === R || n === J || (delete t.value, delete t.writable, t.get = () => e[R][n]), t;
613
+ return !t || t.get || !t.configurable || n === R || n === Z || (delete t.value, delete t.writable, t.get = () => e[R][n]), t;
614
614
  }
615
615
  function nt(e) {
616
- Ce() && le(ve(e, J), et)();
616
+ $e() && le(ve(e, Z), et)();
617
617
  }
618
618
  function qt(e) {
619
619
  return nt(e), Reflect.ownKeys(e);
620
620
  }
621
621
  const Vt = {
622
622
  get(e, n, t) {
623
- if (n === Pe) return e;
623
+ if (n === ze) return e;
624
624
  if (n === R) return t;
625
625
  if (n === Fe)
626
626
  return nt(e), t;
627
- const r = ve(e, J), a = r[n];
627
+ const r = ve(e, Z), a = r[n];
628
628
  let o = a ? a() : e[n];
629
- if (n === J || n === j || n === "__proto__") return o;
629
+ if (n === Z || n === j || n === "__proto__") return o;
630
630
  if (!a) {
631
631
  const i = Object.getOwnPropertyDescriptor(e, n);
632
- Ce() && (typeof o != "function" || e.hasOwnProperty(n)) && !(i && i.get) && (o = le(r, n, o)());
632
+ $e() && (typeof o != "function" || e.hasOwnProperty(n)) && !(i && i.get) && (o = le(r, n, o)());
633
633
  }
634
634
  return me(o) ? tt(o) : o;
635
635
  },
636
636
  has(e, n) {
637
- return n === Pe || n === R || n === Fe || n === J || n === j || n === "__proto__" ? !0 : (Ce() && le(ve(e, j), n)(), n in e);
637
+ return n === ze || n === R || n === Fe || n === Z || n === j || n === "__proto__" ? !0 : ($e() && le(ve(e, j), n)(), n in e);
638
638
  },
639
639
  set() {
640
640
  return !0;
@@ -649,7 +649,7 @@ function be(e, n, t, r = !1) {
649
649
  if (!r && e[n] === t) return;
650
650
  const a = e[n], o = e.length;
651
651
  t === void 0 ? (delete e[n], e[j] && e[j][n] && a !== void 0 && e[j][n].$()) : (e[n] = t, e[j] && e[j][n] && a === void 0 && e[j][n].$());
652
- let i = ve(e, J), l;
652
+ let i = ve(e, Z), l;
653
653
  if ((l = le(i, n, a)) && l.$(() => t), Array.isArray(e) && e.length !== o) {
654
654
  for (let s = e.length; s < o; s++) (l = i[s]) && l.$();
655
655
  (l = le(i, "length", o)) && l.$(e.length);
@@ -674,26 +674,26 @@ function Bt(e, n) {
674
674
  be(e, "length", r);
675
675
  } else rt(e, n);
676
676
  }
677
- function re(e, n, t = []) {
677
+ function oe(e, n, t = []) {
678
678
  let r, a = e;
679
679
  if (n.length > 1) {
680
680
  r = n.shift();
681
681
  const i = typeof r, l = Array.isArray(e);
682
682
  if (Array.isArray(r)) {
683
683
  for (let s = 0; s < r.length; s++)
684
- re(e, [r[s]].concat(n), t);
684
+ oe(e, [r[s]].concat(n), t);
685
685
  return;
686
686
  } else if (l && i === "function") {
687
687
  for (let s = 0; s < e.length; s++)
688
- r(e[s], s) && re(e, [s].concat(n), t);
688
+ r(e[s], s) && oe(e, [s].concat(n), t);
689
689
  return;
690
690
  } else if (l && i === "object") {
691
691
  const { from: s = 0, to: c = e.length - 1, by: d = 1 } = r;
692
692
  for (let h = s; h <= c; h += d)
693
- re(e, [h].concat(n), t);
693
+ oe(e, [h].concat(n), t);
694
694
  return;
695
695
  } else if (n.length > 1) {
696
- re(e[r], n, [r].concat(t));
696
+ oe(e[r], n, [r].concat(t));
697
697
  return;
698
698
  }
699
699
  a = e[r], t = [r].concat(t);
@@ -701,11 +701,11 @@ function re(e, n, t = []) {
701
701
  let o = n[0];
702
702
  typeof o == "function" && (o = o(a, t), o === a) || r === void 0 && o == null || (o = se(o), r === void 0 || me(a) && me(o) && !Array.isArray(o) ? rt(a, o) : be(e, r, o));
703
703
  }
704
- function Te(...[e, n]) {
704
+ function Ie(...[e, n]) {
705
705
  const t = se(e || {}), r = Array.isArray(t), a = tt(t);
706
706
  function o(...i) {
707
707
  ct(() => {
708
- r && i.length === 1 ? Bt(t, i[0]) : re(t, i);
708
+ r && i.length === 1 ? Bt(t, i[0]) : oe(t, i);
709
709
  });
710
710
  }
711
711
  return [a, o];
@@ -735,8 +735,8 @@ const B = {
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
  }, _t = (e) => Wt(e) < 0.5 ? "#FFFFFF" : "#000000";
738
- let N = [], O = null, Z = null, Q = null;
739
- const ke = (e, n) => (...t) => {
738
+ let N = [], O = null, Q = null, ee = null;
739
+ const Se = (e, n) => (...t) => {
740
740
  const r = (o) => {
741
741
  if (typeof o == "string") return o;
742
742
  if (o instanceof Error) return o.stack || o.message;
@@ -764,22 +764,22 @@ const ke = (e, n) => (...t) => {
764
764
  log: console.log,
765
765
  warn: console.warn,
766
766
  error: console.error
767
- }, Z = window.onerror, Q = window.onunhandledrejection, window.onerror = (e, n, t, r, a) => {
767
+ }, Q = window.onerror, ee = window.onunhandledrejection, window.onerror = (e, n, t, r, a) => {
768
768
  const o = (a == null ? void 0 : a.stack) || (a == null ? void 0 : a.message) || e;
769
769
  return N.push({
770
770
  type: "error",
771
771
  message: `Uncaught Error: ${o}
772
772
  Location: ${n}:${t}:${r}`,
773
773
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
774
- }), Z ? Z(e, n, t, r, a) : !1;
774
+ }), Q ? Q(e, n, t, r, a) : !1;
775
775
  }, window.onunhandledrejection = (e) => {
776
776
  const n = e.reason;
777
777
  N.push({
778
778
  type: "error",
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
- }), Q && Q(e);
782
- }, console.log = ke("log", O.log), console.warn = ke("warn", O.warn), console.error = ke("error", O.error), window.addEventListener("error", (e) => {
781
+ }), ee && ee(e);
782
+ }, console.log = Se("log", O.log), console.warn = Se("warn", O.warn), console.error = Se("error", O.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
  N.push({
785
785
  type: "error",
@@ -789,7 +789,7 @@ Location: ${t}:${r}:${a}`,
789
789
  });
790
790
  }));
791
791
  }, Ut = () => {
792
- O && (console.log = O.log, console.warn = O.warn, console.error = O.error, O = null), Z && (window.onerror = Z, Z = null), Q && (window.onunhandledrejection = Q, Q = null), window.removeEventListener("error", () => {
792
+ O && (console.log = O.log, console.warn = O.warn, console.error = O.error, O = null), Q && (window.onerror = Q, Q = null), ee && (window.onunhandledrejection = ee, ee = null), window.removeEventListener("error", () => {
793
793
  }), N = [];
794
794
  }, Yt = () => [...N], Rt = () => {
795
795
  var e;
@@ -812,41 +812,45 @@ Location: ${t}:${r}:${a}`,
812
812
  width: Math.abs(t.x - n.x),
813
813
  height: Math.abs(t.y - n.y)
814
814
  };
815
- }, Kt = (e) => e.length < 2 ? null : `M ${e[0].x} ${e[0].y} ${e.slice(1).map((n) => `L ${n.x} ${n.y}`).join(" ")}`, Ie = window.EventTarget.prototype.addEventListener, oe = window.EventTarget.prototype.removeEventListener;
816
- let we = !1;
815
+ }, Kt = (e) => e.length < 2 ? null : `M ${e[0].x} ${e[0].y} ${e.slice(1).map((n) => `L ${n.x} ${n.y}`).join(" ")}`, we = window.EventTarget.prototype.addEventListener, J = window.EventTarget.prototype.removeEventListener;
816
+ let ye = !1;
817
817
  const Gt = (e, n, t, r) => {
818
- Ie.call(e, n, t, r);
818
+ we.call(e, n, t, r);
819
819
  }, Xt = (e, n, t, r) => {
820
- oe.call(e, n, t, r);
821
- }, ne = /* @__PURE__ */ new WeakMap(), Jt = (e) => {
822
- we || (we = !0, window.EventTarget.prototype.addEventListener = function(n, t, r) {
820
+ J.call(e, n, t, r);
821
+ }, re = /* @__PURE__ */ new WeakMap(), Jt = (e) => {
822
+ ye || (ye = !0, window.EventTarget.prototype.addEventListener = function(n, t, r) {
823
+ if (!this || typeof this != "object")
824
+ return we.call(this, n, t, r);
823
825
  const a = Qt(t, e);
824
- ne.has(this) || ne.set(this, /* @__PURE__ */ new Map());
825
- const o = { listener: t }, i = ne.get(this);
826
- i && i.set(t, o), Ie.call(this, n, a, r);
826
+ re.has(this) || re.set(this, /* @__PURE__ */ new Map());
827
+ const o = { listener: t }, i = re.get(this);
828
+ i && i.set(t, o), we.call(this, n, a, r);
827
829
  }, window.EventTarget.prototype.removeEventListener = function(n, t, r) {
828
- const a = ne.get(this);
830
+ if (!this || typeof this != "object")
831
+ return J.call(this, n, t, r);
832
+ const a = re.get(this);
829
833
  if (!a) {
830
- oe.call(this, n, t, r);
834
+ J.call(this, n, t, r);
831
835
  return;
832
836
  }
833
837
  const o = a.get(t);
834
- o ? (oe.call(this, n, o.listener, r), a.delete(t), a.size === 0 && ne.delete(this)) : oe.call(this, n, t, r);
838
+ o ? (J.call(this, n, o.listener, r), a.delete(t), a.size === 0 && re.delete(this)) : J.call(this, n, t, r);
835
839
  });
836
840
  }, Zt = () => {
837
- we && (window.EventTarget.prototype.addEventListener = Ie, window.EventTarget.prototype.removeEventListener = oe, we = !1);
841
+ ye && (window.EventTarget.prototype.addEventListener = we, window.EventTarget.prototype.removeEventListener = J, ye = !1);
838
842
  }, M = (e) => {
839
843
  const { event: n, callback: t, onMount: r, onCleanup: a, useOriginal: o = !0 } = e;
840
- ye(() => {
844
+ pe(() => {
841
845
  r == null || r(), o ? Gt(window, n, t) : window.addEventListener(n, t);
842
- }), ee(() => {
846
+ }), te(() => {
843
847
  a == null || a(), o ? Xt(window, n, t) : window.removeEventListener(n, t);
844
848
  });
845
849
  }, Oe = (e) => {
846
850
  const { target: n, options: t, callback: r, onMount: a, onCleanup: o } = e, i = new MutationObserver(r);
847
- ye(() => {
851
+ pe(() => {
848
852
  a == null || a(), i.observe(n, t);
849
- }), ee(() => {
853
+ }), te(() => {
850
854
  o == null || o(), i.disconnect();
851
855
  });
852
856
  }, Qt = (e, n) => function(t) {
@@ -889,7 +893,7 @@ const Gt = (e, n, t, r) => {
889
893
  throw new Error("Echo initialization failed: primaryColor must be a valid hex color");
890
894
  }, Be = 5, We = (e, n) => B[e].getCursor(n), on = (e, n, t) => {
891
895
  var l, s;
892
- const [r, a] = Te({
896
+ const [r, a] = Ie({
893
897
  isDrawing: !1,
894
898
  currentPoints: [],
895
899
  selectedShapeId: null,
@@ -897,7 +901,7 @@ const Gt = (e, n, t, r) => {
897
901
  showTooltip: !0,
898
902
  mousePosition: { x: 0, y: 0 },
899
903
  selectedColor: e.primaryColor,
900
- shapes: ((s = (l = ze(n)) == null ? void 0 : l.drawing) == null ? void 0 : s.shapes) || [],
904
+ shapes: ((s = (l = Te(n)) == null ? void 0 : l.drawing) == null ? void 0 : s.shapes) || [],
901
905
  hasDrawn: !1,
902
906
  isDragging: !1,
903
907
  dragStartPos: null,
@@ -1032,10 +1036,10 @@ const Gt = (e, n, t, r) => {
1032
1036
  const a = (r == null ? void 0 : r.reduce(
1033
1037
  (g, m) => (g[m.id] = m.defaultValue ?? (m.type === "checkbox" ? [] : ""), g),
1034
1038
  {}
1035
- )) || {}, o = ze(n), i = (o == null ? void 0 : o.feedback.customInputValues) || {}, l = {
1039
+ )) || {}, o = Te(n), i = (o == null ? void 0 : o.feedback.customInputValues) || {}, l = {
1036
1040
  ...a,
1037
1041
  ...i
1038
- }, [s, c] = Te({
1042
+ }, [s, c] = Ie({
1039
1043
  message: ((h = o == null ? void 0 : o.feedback) == null ? void 0 : h.message) || "",
1040
1044
  screenshot: void 0,
1041
1045
  isCapturing: !1,
@@ -1051,7 +1055,7 @@ const Gt = (e, n, t, r) => {
1051
1055
  }
1052
1056
  };
1053
1057
  }, sn = (e, n) => {
1054
- const [t, r] = Te({
1058
+ const [t, r] = Ie({
1055
1059
  text: e.textConfig,
1056
1060
  isOpen: !1,
1057
1061
  primaryColor: e.primaryColor,
@@ -1081,7 +1085,7 @@ const Gt = (e, n, t, r) => {
1081
1085
  {}
1082
1086
  )) || {};
1083
1087
  }, ln = (e) => {
1084
- let n = Ee();
1088
+ let n = Pe();
1085
1089
  const t = sn(e), r = jt(t), a = At(t), o = an(
1086
1090
  e,
1087
1091
  n,
@@ -1107,7 +1111,7 @@ const Gt = (e, n, t, r) => {
1107
1111
  );
1108
1112
  }), l = (c) => {
1109
1113
  n = c;
1110
- const d = ze(n), h = {
1114
+ const d = Te(n), h = {
1111
1115
  ..._e(e),
1112
1116
  ...d == null ? void 0 : d.feedback.customInputValues
1113
1117
  };
@@ -1215,9 +1219,9 @@ const Gt = (e, n, t, r) => {
1215
1219
  callback: r
1216
1220
  }), n;
1217
1221
  }, un = ({ onUrlChange: e }) => {
1218
- let n = Ee();
1222
+ let n = Pe();
1219
1223
  const t = () => {
1220
- const r = Ee();
1224
+ const r = Pe();
1221
1225
  r !== n && (n = r, e(r));
1222
1226
  };
1223
1227
  M({ event: "popstate", callback: t }), M({ event: "pushstate", callback: t }), M({ event: "replacestate", callback: t }), Oe({
@@ -1256,7 +1260,7 @@ const mn = [
1256
1260
  "#66d9e8": "Soft Cyan",
1257
1261
  "#ffa94d": "Soft Orange",
1258
1262
  "#e599f7": "Soft Pink"
1259
- }, Se = (e) => vn[e] || "Primary", bn = () => {
1263
+ }, Ce = (e) => vn[e] || "Primary", bn = () => {
1260
1264
  const e = $();
1261
1265
  return (() => {
1262
1266
  var n = fn(), t = n.firstChild, r = t.nextSibling, a = r.firstChild;
@@ -1269,7 +1273,7 @@ const mn = [
1269
1273
  return i.$$click = () => e.drawing.setState({
1270
1274
  selectedColor: o
1271
1275
  }), o != null ? i.style.setProperty("background-color", o) : i.style.removeProperty("background-color"), b((l) => {
1272
- var s = `Select ${Se(o)} color`, c = e.drawing.state.selectedColor === o, d = `${Se(o)} color`, h = e.drawing.state.selectedColor === o;
1276
+ var s = `Select ${Ce(o)} color`, c = e.drawing.state.selectedColor === o, d = `${Ce(o)} color`, h = e.drawing.state.selectedColor === o;
1273
1277
  return s !== l.e && u(i, "title", l.e = s), c !== l.t && u(i, "data-selected", l.t = c), d !== l.a && u(i, "aria-label", l.a = d), h !== l.o && u(i, "aria-selected", l.o = h), l;
1274
1278
  }, {
1275
1279
  e: void 0,
@@ -1279,7 +1283,7 @@ const mn = [
1279
1283
  }), i;
1280
1284
  })()
1281
1285
  })), b((o) => {
1282
- var i = `Current color: ${Se(e.drawing.state.selectedColor)}`, l = e.drawing.state.selectedColor;
1286
+ var i = `Current color: ${Ce(e.drawing.state.selectedColor)}`, l = e.drawing.state.selectedColor;
1283
1287
  return i !== o.e && u(t, "aria-label", o.e = i), l !== o.t && ((o.t = l) != null ? t.style.setProperty("background-color", l) : t.style.removeProperty("background-color")), o;
1284
1288
  }, {
1285
1289
  e: void 0,
@@ -1399,7 +1403,7 @@ const In = (e) => (() => {
1399
1403
  }), n;
1400
1404
  })();
1401
1405
  var On = /* @__PURE__ */ 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">');
1402
- const pe = (e) => (() => {
1406
+ const xe = (e) => (() => {
1403
1407
  var n = On();
1404
1408
  return b((t) => {
1405
1409
  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;
@@ -1504,7 +1508,7 @@ var Bn = /* @__PURE__ */ w("<div class=echo-stored-feedback-empty>No unsubmitted
1504
1508
  const Hn = () => {
1505
1509
  const e = $();
1506
1510
  let n;
1507
- const [t, r] = A(xe()), [a, o] = A(window.location.pathname), i = (m) => {
1511
+ const [t, r] = A(ke()), [a, o] = A(window.location.pathname), i = (m) => {
1508
1512
  m.key === "Escape" && e.widget.state.isStoredFeedbackOpen && e.widget.setState({
1509
1513
  isStoredFeedbackOpen: !1
1510
1514
  });
@@ -1514,7 +1518,7 @@ const Hn = () => {
1514
1518
  isStoredFeedbackOpen: !1
1515
1519
  });
1516
1520
  }, s = () => {
1517
- const m = xe();
1521
+ const m = ke();
1518
1522
  r(m), e.widget.setState({
1519
1523
  pagesCount: m.length
1520
1524
  });
@@ -1550,7 +1554,7 @@ const Hn = () => {
1550
1554
  });
1551
1555
  }, h = (m) => {
1552
1556
  a() === m && e.methods.reset(), Ze(m);
1553
- const y = xe();
1557
+ const y = ke();
1554
1558
  r(y), e.widget.setState({
1555
1559
  pagesCount: y.length
1556
1560
  });
@@ -1574,7 +1578,7 @@ const Hn = () => {
1574
1578
  isStoredFeedbackOpen: !1
1575
1579
  }),
1576
1580
  get children() {
1577
- return f(pe, {
1581
+ return f(xe, {
1578
1582
  size: 20
1579
1583
  });
1580
1584
  }
@@ -1704,7 +1708,7 @@ const Gn = () => {
1704
1708
  return e.widget.state.text.notification.hideTitle;
1705
1709
  },
1706
1710
  get children() {
1707
- return f(pe, {
1711
+ return f(xe, {
1708
1712
  size: 20
1709
1713
  });
1710
1714
  }
@@ -1814,7 +1818,7 @@ const Qn = () => {
1814
1818
  };
1815
1819
  return n ? null : (() => {
1816
1820
  var a = Zn(), o = a.firstChild, i = o.nextSibling;
1817
- return a.$$click = r, a.style.setProperty("bottom", "80px"), a.style.setProperty("right", "20px"), v(a, () => e.widget.state.text.welcomeMessage.text, i), i.$$keydown = (l) => l.key === "Enter" && t(l), i.$$click = t, v(i, f(pe, {
1821
+ return a.$$click = r, a.style.setProperty("bottom", "80px"), a.style.setProperty("right", "20px"), v(a, () => e.widget.state.text.welcomeMessage.text, i), i.$$keydown = (l) => l.key === "Enter" && t(l), i.$$click = t, v(i, f(xe, {
1818
1822
  size: 16,
1819
1823
  strokeWidth: 3
1820
1824
  })), b((l) => {
@@ -1923,11 +1927,11 @@ var or = /* @__PURE__ */ w('<div class=echo-drawing-layer-container role=applica
1923
1927
  const ar = () => {
1924
1928
  const e = $();
1925
1929
  let n;
1926
- return ye(() => {
1930
+ return pe(() => {
1927
1931
  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, {
1928
1932
  passive: !1
1929
1933
  }), n == null || n.addEventListener("touchend", e.drawing.methods.handleEnd);
1930
- }), ee(() => {
1934
+ }), te(() => {
1931
1935
  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);
1932
1936
  }), (() => {
1933
1937
  var t = or(), r = t.firstChild, a = r.firstChild, o = n;
@@ -2231,7 +2235,7 @@ const $r = (e) => f(D, {
2231
2235
  })();
2232
2236
  },
2233
2237
  get children() {
2234
- return [f(te, {
2238
+ return [f(ne, {
2235
2239
  get when() {
2236
2240
  return e.config.type === "text";
2237
2241
  },
@@ -2248,7 +2252,7 @@ const $r = (e) => f(D, {
2248
2252
  }
2249
2253
  });
2250
2254
  }
2251
- }), f(te, {
2255
+ }), f(ne, {
2252
2256
  get when() {
2253
2257
  return e.config.type === "textarea";
2254
2258
  },
@@ -2265,7 +2269,7 @@ const $r = (e) => f(D, {
2265
2269
  }
2266
2270
  });
2267
2271
  }
2268
- }), f(te, {
2272
+ }), f(ne, {
2269
2273
  get when() {
2270
2274
  return e.config.type === "radio";
2271
2275
  },
@@ -2282,7 +2286,7 @@ const $r = (e) => f(D, {
2282
2286
  }
2283
2287
  });
2284
2288
  }
2285
- }), f(te, {
2289
+ }), f(ne, {
2286
2290
  get when() {
2287
2291
  return e.config.type === "checkbox";
2288
2292
  },
@@ -2299,7 +2303,7 @@ const $r = (e) => f(D, {
2299
2303
  }
2300
2304
  });
2301
2305
  }
2302
- }), f(te, {
2306
+ }), f(ne, {
2303
2307
  get when() {
2304
2308
  return e.config.type === "select";
2305
2309
  },
@@ -2414,7 +2418,7 @@ const Ar = () => {
2414
2418
  }),
2415
2419
  "aria-label": "Close feedback form",
2416
2420
  get children() {
2417
- return f(pe, {
2421
+ return f(xe, {
2418
2422
  size: 20
2419
2423
  });
2420
2424
  }
@@ -2553,7 +2557,7 @@ const Nr = (e) => f(Ot, {
2553
2557
  const n = $();
2554
2558
  return un({
2555
2559
  onUrlChange: (t) => n.methods.handlePageChange(t)
2556
- }), ye(() => {
2560
+ }), pe(() => {
2557
2561
  Ht(), Jt((t) => {
2558
2562
  if (n.widget.state.isOpen && t.type === "keydown")
2559
2563
  switch (t.key) {
@@ -2562,7 +2566,7 @@ const Nr = (e) => f(Ot, {
2562
2566
  break;
2563
2567
  }
2564
2568
  });
2565
- }), ee(() => {
2569
+ }), te(() => {
2566
2570
  Ut(), Zt();
2567
2571
  }), (() => {
2568
2572
  var t = jr();
package/dist/echo.umd.js CHANGED
@@ -1,8 +1,8 @@
1
- (function(D,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("solid-js"),require("html2canvas")):typeof define=="function"&&define.amd?define(["exports","solid-js","html2canvas"],c):(D=typeof globalThis<"u"?globalThis:D||self,c(D.Echo={},D.Solid,D.html2canvas))})(this,function(D,c,He){"use strict";const Ue=["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"],Xe=new Set(["className","value","readOnly","formNoValidate","isMap","noModule","playsInline",...Ue]),Ke=new Set(["innerHTML","textContent","innerText","children"]),Ge=Object.assign(Object.create(null),{className:"class",htmlFor:"for"}),Ze=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 Qe(e,n){const t=Ze[e];return typeof t=="object"?t[n]?t.$:void 0:t}const Je=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 et(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 u=a<r?l?t[l-1].nextSibling:t[a-l]:s;for(;l<a;)e.insertBefore(t[l++],u)}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 u=n[--o].nextSibling;e.insertBefore(t[l++],n[i++].nextSibling),e.insertBefore(t[--a],u),n[o]=t[a]}else{if(!d){d=new Map;let f=l;for(;f<a;)d.set(t[f],f++)}const u=d.get(n[i]);if(u!=null)if(l<u&&u<a){let f=i,g=1,m;for(;++f<o&&f<a&&!((m=d.get(n[f]))==null||m!==u+g);)g++;if(g>u-l){const b=n[i];for(;l<u;)e.insertBefore(t[l++],b)}else e.replaceChild(t[l++],n[i++])}else i++;else n[i++].remove()}}}const ye="_$DX_DELEGATE";function tt(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[ye]||(n[ye]=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,ct))}}function h(e,n,t){U(e)||(t==null?e.removeAttribute(n):e.setAttribute(n,t))}function nt(e,n,t){U(e)||(t?e.setAttribute(n,""):e.removeAttribute(n))}function xe(e,n){U(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 rt(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]||(ke(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||(ke(e,l,!0),t[l]=s)}return t}function z(e,n,t){if(!n)return t?h(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 at(e,n={},t,r){const o={};return c.createRenderEffect(()=>o.children=X(e,n.children,o.children)),c.createRenderEffect(()=>typeof n.ref=="function"&&R(n.ref,e)),c.createRenderEffect(()=>ot(e,n,t,!0,o,!0)),o}function R(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 X(e,n,r,t);c.createRenderEffect(o=>X(e,n(),o,t),r)}function ot(e,n,t,r,o={},a=!1){n||(n={});for(const i in o)if(!(i in n)){if(i==="children")continue;o[i]=Ce(e,i,null,o[i],t,a,n)}for(const i in n){if(i==="children")continue;const l=n[i];o[i]=Ce(e,i,l,o[i],t,a,n)}}function U(e){return!!c.sharedConfig.context&&!c.sharedConfig.done&&(!e||e.isConnected)}function it(e){return e.toLowerCase().replace(/-([a-z])/g,(n,t)=>t.toUpperCase())}function ke(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 Ce(e,n,t,r,o,a,i){let l,s,d,u,f;if(n==="style")return z(e,t,r);if(n==="classList")return rt(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=Je.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:")h(e,n.slice(5),t);else if(n.slice(0,5)==="bool:")nt(e,n.slice(5),t);else if((f=n.slice(0,5)==="prop:")||(d=Ke.has(n))||(u=Qe(n,e.tagName))||(s=Xe.has(n))||(l=e.nodeName.includes("-")||"is"in i)){if(f)n=n.slice(5),s=!0;else if(U(e))return t;n==="class"||n==="className"?xe(e,t):l&&!s&&!d?e[it(n)]=t:e[u||n]=t}else h(e,Ge[n]||n,t);return t}function ct(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 X(e,n,t,r,o){const a=U(e);if(a){!t&&(t=[...e.childNodes]);let s=[];for(let d=0;d<t.length;d++){const u=t[d];u.nodeType===8&&u.data.slice(0,2)==="!$"?u.remove():s.push(u)}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=W(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=W(e,t,r)}else{if(i==="function")return c.createRenderEffect(()=>{let s=n();for(;typeof s=="function";)s=s();t=X(e,s,t,r)}),()=>t;if(Array.isArray(n)){const s=[],d=t&&Array.isArray(t);if(de(s,n,t,o))return c.createRenderEffect(()=>t=X(e,s,t,r,!0)),()=>t;if(a){if(!s.length)return t;if(r===void 0)return t=[...e.childNodes];let u=s[0];if(u.parentNode!==e)return t;const f=[u];for(;(u=u.nextSibling)!==r;)f.push(u);return t=f}if(s.length===0){if(t=W(e,t,r),l)return t}else d?t.length===0?Se(e,s,r):et(e,t,s):(t&&W(e),Se(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=W(e,t,r,n);W(e,t,null,n)}else t==null||t===""||!e.firstChild?e.appendChild(n):e.replaceChild(n,e.firstChild);t=n}}return t}function de(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=de(e,l,s)||o;else if(d==="function")if(r){for(;typeof l=="function";)l=l();o=de(e,Array.isArray(l)?l:[l],Array.isArray(s)?s:[s])||o}else e.push(l),o=!0;else{const u=String(l);s&&s.nodeType===3&&s.data===u?e.push(s):e.push(document.createTextNode(u))}}return o}function Se(e,n,t=null){for(let r=0,o=n.length;r<o;r++)e.insertBefore(n[r],t)}function W(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 st="http://www.w3.org/2000/svg";function lt(e,n=!1){return n?document.createElementNS(st,e):document.createElement(e)}function dt(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),u=()=>d(!0);c.createRoot(f=>v(l,()=>s()?f():a(),null)),c.onCleanup(u)}else{const s=lt(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 ut=5e3,ht=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},ut)},clear:()=>{t(),e.setState({notification:{show:!1,type:null,message:null}})}}},Ee=(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]=Ee(e[r],n[r]):t[r]=n[r];return t},ft=(e,n)=>{let t;return(...r)=>{clearTimeout(t),t=window.setTimeout(()=>e(...r),n)}},gt="echo_",q="echo-pages",$e=e=>{if(!e||e==="/")return"/";const n=e.split("/");return n.length<=4?e:`/${n[1]}/.../${n[n.length-1]}`},Pe=()=>{window.dispatchEvent(new Event("echo-storage-change"))},ze=e=>`${gt}${e}`,V=(e,n)=>{try{const t=localStorage.getItem(ze(e));return t?JSON.parse(t):n}catch{return n}},K=(e,n)=>{try{localStorage.setItem(ze(e),JSON.stringify(n))}catch(t){console.warn("Failed to save to localStorage:",t)}},ue=()=>{const e=window.location.pathname||"/",n=window.location.search;return`${e}${n}`},mt=(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=$e(e);(t||n.drawing.shapes.length>0)&&(r[o]={...r[o]||{},...t?{feedback:t}:{},drawing:{shapes:n.drawing.shapes}}),K(q,r),Pe()}catch(t){console.warn("Failed to save page state:",t)}},he=e=>{try{return V(q,{})[e]}catch(n){console.error("Failed to load page state:",n);return}},Te=e=>{try{const n=V(q,{});delete n[e],K(q,n),Pe()}catch(n){console.error("Failed to clear page state:",n)}},Oe=()=>{try{const e=V(q,{});return Object.keys(e).length}catch(e){return console.error("Failed to get stored pages count:",e),0}},fe=()=>{try{const e=V(q,{});return Object.entries(e).map(([n,t])=>({path:$e(n),state:t}))}catch(e){return console.error("Failed to get stored pages:",e),[]}},vt=e=>ft((n,t,r=!1)=>{(!r||t.feedback.message.trim().length>0||t.drawing.shapes.length>0)&&(mt(n,t),e.setState({pagesCount:Oe()}))},1e3),ge=Symbol("store-raw"),Y=Symbol("store-node"),M=Symbol("store-has"),Ie=Symbol("store-self");function Me(e){let n=e[c.$PROXY];if(!n&&(Object.defineProperty(e,c.$PROXY,{value:n=new Proxy(e,pt)}),!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 re(e){let n;return e!=null&&typeof e=="object"&&(e[c.$PROXY]||!(n=Object.getPrototypeOf(e))||n===Object.prototype||Array.isArray(e))}function G(e,n=new Set){let t,r,o,a;if(t=e!=null&&e[ge])return t;if(!re(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=G(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=G(o,n))!==o&&(e[a]=r))}return e}function ae(e,n){let t=e[n];return t||Object.defineProperty(e,n,{value:t=Object.create(null)}),t}function Z(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 wt(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 Ae(e){c.getListener()&&Z(ae(e,Y),Ie)()}function bt(e){return Ae(e),Reflect.ownKeys(e)}const pt={get(e,n,t){if(n===ge)return e;if(n===c.$PROXY)return t;if(n===c.$TRACK)return Ae(e),t;const r=ae(e,Y),o=r[n];let a=o?o():e[n];if(n===Y||n===M||n==="__proto__")return a;if(!o){const i=Object.getOwnPropertyDescriptor(e,n);c.getListener()&&(typeof a!="function"||e.hasOwnProperty(n))&&!(i&&i.get)&&(a=Z(r,n,a)())}return re(a)?Me(a):a},has(e,n){return n===ge||n===c.$PROXY||n===c.$TRACK||n===Y||n===M||n==="__proto__"?!0:(c.getListener()&&Z(ae(e,M),n)(),n in e)},set(){return!0},deleteProperty(){return!0},ownKeys:bt,getOwnPropertyDescriptor:wt};function oe(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[M]&&e[M][n]&&o!==void 0&&e[M][n].$()):(e[n]=t,e[M]&&e[M][n]&&o===void 0&&e[M][n].$());let i=ae(e,Y),l;if((l=Z(i,n,o))&&l.$(()=>t),Array.isArray(e)&&e.length!==a){for(let s=e.length;s<a;s++)(l=i[s])&&l.$();(l=Z(i,"length",a))&&l.$(e.length)}(l=i[Ie])&&l.$()}function De(e,n){const t=Object.keys(n);for(let r=0;r<t.length;r+=1){const o=t[r];oe(e,o,n[o])}}function yt(e,n){if(typeof n=="function"&&(n=n(e)),n=G(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&&oe(e,t,o)}oe(e,"length",r)}else De(e,n)}function Q(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++)Q(e,[r[s]].concat(n),t);return}else if(l&&i==="function"){for(let s=0;s<e.length;s++)r(e[s],s)&&Q(e,[s].concat(n),t);return}else if(l&&i==="object"){const{from:s=0,to:d=e.length-1,by:u=1}=r;for(let f=s;f<=d;f+=u)Q(e,[f].concat(n),t);return}else if(n.length>1){Q(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=G(a),r===void 0||re(o)&&re(a)&&!Array.isArray(a)?De(o,a):oe(e,r,a))}function me(...[e,n]){const t=G(e||{}),r=Array.isArray(t),o=Me(t);function a(...i){c.batch(()=>{r&&i.length===1?yt(t,i[0]):Q(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}}},xt=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},kt=e=>xt(e)<.5?"#FFFFFF":"#000000";let A=[],T=null,_=null,H=null;const ve=(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(" ");A.push({type:e,message:o,timestamp:new Date().toISOString()}),A.length>1e3&&(A=A.slice(-1e3)),n.apply(console,t)},Ct=()=>{T||(T={log:console.log,warn:console.warn,error:console.error},_=window.onerror,H=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 A.push({type:"error",message:`Uncaught Error: ${a}
2
- Location: ${n}:${t}:${r}`,timestamp:new Date().toISOString()}),_?_(e,n,t,r,o):!1},window.onunhandledrejection=e=>{const n=e.reason;A.push({type:"error",message:`Unhandled Promise Rejection: ${(n==null?void 0:n.stack)||(n==null?void 0:n.message)||n}`,timestamp:new Date().toISOString()}),H&&H(e)},console.log=ve("log",T.log),console.warn=ve("warn",T.warn),console.error=ve("error",T.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;A.push({type:"error",message:`Uncaught Error: ${i}
3
- Location: ${t}:${r}:${o}`,timestamp:new Date().toISOString()})}))},St=()=>{T&&(console.log=T.log,console.warn=T.warn,console.error=T.error,T=null),_&&(window.onerror=_,_=null),H&&(window.onunhandledrejection=H,H=null),window.removeEventListener("error",()=>{}),A=[]},Et=()=>[...A],$t=()=>{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)},ie=(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}},Re=(e,n)=>{const t=n.x-e.x,r=n.y-e.y;return Math.sqrt(t*t+r*r)},Fe=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)}},Pt=e=>e.length<2?null:`M ${e[0].x} ${e[0].y} ${e.slice(1).map(n=>`L ${n.x} ${n.y}`).join(" ")}`,we=window.EventTarget.prototype.addEventListener,J=window.EventTarget.prototype.removeEventListener;let ce=!1;const zt=(e,n,t,r)=>{we.call(e,n,t,r)},Tt=(e,n,t,r)=>{J.call(e,n,t,r)},ee=new WeakMap,Ot=e=>{ce||(ce=!0,window.EventTarget.prototype.addEventListener=function(n,t,r){const o=Mt(t,e);ee.has(this)||ee.set(this,new Map);const a={listener:t},i=ee.get(this);i&&i.set(t,a),we.call(this,n,o,r)},window.EventTarget.prototype.removeEventListener=function(n,t,r){const o=ee.get(this);if(!o){J.call(this,n,t,r);return}const a=o.get(t);a?(J.call(this,n,a.listener,r),o.delete(t),o.size===0&&ee.delete(this)):J.call(this,n,t,r)})},It=()=>{ce&&(window.EventTarget.prototype.addEventListener=we,window.EventTarget.prototype.removeEventListener=J,ce=!1)},O=e=>{const{event:n,callback:t,onMount:r,onCleanup:o,useOriginal:a=!0}=e;c.onMount(()=>{r==null||r(),a?zt(window,n,t):window.addEventListener(n,t)}),c.onCleanup(()=>{o==null||o(),a?Tt(window,n,t):window.removeEventListener(n,t)})},be=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()})},Mt=(e,n)=>function(t){n(t),typeof e=="function"?e.call(this,t):e.handleEvent(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 He(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}},Rt=(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},Ft=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")},Le=5,je=(e,n)=>F[e].getCursor(n),Lt=(e,n,t)=>{var l,s;const[r,o]=me({isDrawing:!1,currentPoints:[],selectedShapeId:null,selectedTool:"rectangle",showTooltip:!0,mousePosition:{x:0,y:0},selectedColor:e.primaryColor,shapes:((s=(l=he(n))==null?void 0:l.drawing)==null?void 0:s.shapes)||[],hasDrawn:!1,isDragging:!1,dragStartPos:null,initialClickPos:null,dragOffset:null,cursor:je("rectangle",e.primaryColor)}),a=(d,u=!1)=>{if(d.selectedTool||d.selectedColor){const f=d.selectedTool||r.selectedTool,g=d.selectedColor||r.selectedColor;d.cursor=je(f,g)}o(d),t==null||t(d,u)},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 u=ie(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(u),i.updateDragOffset(g,u);return}}}i.setInitialClick(u)},handleMove:d=>{const u=ie(d,{useClientCoords:!0}),f=ie(d);if(a({mousePosition:u}),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){Re(r.initialClickPos,f)>=Le&&i.startDrawing(r.initialClickPos);return}r.isDrawing&&i.updateDrawing(f)},handleEnd:d=>{if(r.isDragging){i.stopDrag();return}if(r.initialClickPos&&!r.isDrawing){const u=ie(d);if(Re(r.initialClickPos,u)<Le&&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,u)=>{a({dragOffset:{x:u.x-d.points[0].x,y:u.y-d.points[0].y}})}};return{state:r,setState:a,methods:i}},jt=(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=he(n),i=(a==null?void 0:a.feedback.customInputValues)||{},l={...o,...i},[s,d]=me({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))}}},Nt=(e,n)=>{const[t,r]=me({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:Oe(),welcomeMessageIsClosing:!1,position:e.position,customInputs:e.customInputs});return{state:t,setState:r}},Ne=e=>{var n;return((n=e.customInputs)==null?void 0:n.reduce((t,r)=>(t[r.id]=r.defaultValue??(r.type==="checkbox"?[]:""),t),{}))||{}},qt=e=>{let n=ue();const t=Nt(e),r=vt(t),o=ht(t),a=jt(e,n,(d,u)=>{r(n,{feedback:{...a.state,...d},drawing:i.state},u)},e.customInputs),i=Lt(e,n,(d,u)=>{r(n,{feedback:a.state,drawing:{...i.state,...d}},u)}),l=d=>{n=d;const u=he(n),f={...Ne(e),...u==null?void 0:u.feedback.customInputValues};a.setState({message:(u==null?void 0:u.feedback.message)||"",customInputValues:f,hasUserInteracted:!1}),i.setState({shapes:(u==null?void 0:u.drawing.shapes)||[]})},s=()=>{Te(n);const d={feedback:{message:"",screenshot:void 0,isCapturing:!1,isMinimized:!1,hasUserInteracted:!1,customInputValues:Ne(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 u=await e.onSubmit(d);return u instanceof Response&&!u.ok?(o.show({type:"error",message:"Submission failed"}),u):(s(),o.show({type:"success",message:"Feedback submitted"}),u)}catch{o.show({type:"error",message:"Submission failed"})}}}}},qe=c.createContext(),Vt=e=>{const n=qt({primaryColor:e.primaryColor,onSubmit:e.onSubmit,textConfig:e.textConfig,position:e.position,customInputs:e.customInputs});return c.createComponent(qe.Provider,{value:n,get children(){return e.children}})},x=()=>{const e=c.useContext(qe);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 O({event:"resize",callback:r,onMount:r}),be({target:document.documentElement,options:{childList:!0,subtree:!0,attributes:!0},callback:r}),n},Wt=({onUrlChange:e})=>{let n=ue();const t=()=>{const r=ue();r!==n&&(n=r,e(r))};O({event:"popstate",callback:t}),O({event:"pushstate",callback:t}),O({event:"replacestate",callback:t}),be({target:document.documentElement,options:{childList:!0,subtree:!0},callback:t})},Yt=`*,*: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);--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));right: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-2xl)),24rem);z-index:var(--z-feedback-form);box-shadow:var(--shadow-black-lightened-lg);display:flex;flex-direction:column;gap:var(--spacing-lg);background:#fff;border-radius:var(--radius-lg);will-change:transform;padding: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}.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}.echo-feedback-form-textarea{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);min-height:120px;resize:vertical;font-family:inherit}.echo-feedback-form-textarea:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-feedback-form-textarea::placeholder{color:var(--text-lighter)}[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::placeholder{color:var(--text-lighter)}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{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 _t=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 Ut=["#ff6b6b","#69db7c","#74c0fc","#ffd43b","#da77f2","#66d9e8","#ffa94d","#e599f7"],Xt={"#ff6b6b":"Soft Red","#69db7c":"Soft Green","#74c0fc":"Soft Blue","#ffd43b":"Soft Yellow","#da77f2":"Soft Purple","#66d9e8":"Soft Cyan","#ffa94d":"Soft Orange","#e599f7":"Soft Pink"},pe=e=>Xt[e]||"Primary",Kt=()=>{const e=x();return(()=>{var n=_t(),t=n.firstChild,r=t.nextSibling,o=r.firstChild;return h(t,"aria-expanded",!1),v(o,c.createComponent(c.For,{get each(){return[e.widget.state.primaryColor,...Ut]},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 ${pe(a)} color`,d=e.drawing.state.selectedColor===a,u=`${pe(a)} color`,f=e.drawing.state.selectedColor===a;return s!==l.e&&h(i,"title",l.e=s),d!==l.t&&h(i,"data-selected",l.t=d),u!==l.a&&h(i,"aria-label",l.a=u),f!==l.o&&h(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: ${pe(e.drawing.state.selectedColor)}`,l=e.drawing.state.selectedColor;return i!==a.e&&h(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 Gt=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 Zt=e=>(()=>{var n=Gt();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&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(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 Qt=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 Jt=e=>(()=>{var n=Qt(),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&&h(n,"width",r.e=o),a!==r.t&&h(n,"height",r.t=a),i!==r.a&&h(n,"class",r.a=i),r.o=z(n,l,r.o),s!==r.i&&h(t,"fill",r.i=s),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),n})();var en=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 tn=e=>(()=>{var n=en();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&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(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 nn=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 rn=e=>(()=>{var n=nn();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&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(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 an=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 Ve=e=>(()=>{var n=an();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&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(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=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 cn=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&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(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 sn=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 ln=e=>(()=>{var n=sn();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&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(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 dn=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 se=e=>(()=>{var n=dn();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&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(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=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>'),hn=w("<button class=echo-drawing-toolbar-button role=button>");const fn={rectangle:tn,path:rn},gn=()=>{const e=x(),n=Object.values(F);return(()=>{var t=un(),r=t.firstChild;return v(t,c.createComponent(c.For,{each:n,children:o=>{const a=fn[o.id];return(()=>{var i=hn();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,u=o.label,f=e.drawing.state.selectedTool===o.id;return s!==l.e&&h(i,"title",l.e=s),d!==l.t&&h(i,"data-selected",l.t=d),u!==l.a&&h(i,"aria-label",l.a=u),f!==l.o&&h(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(Kt,{}),r),r.$$click=()=>e.drawing.setState({shapes:[]},!0),v(r,c.createComponent(Ve,{class:"echo-drawing-toolbar-icon","aria-hidden":"true"})),t})()};E(["click"]);var mn=w("<div class=echo-drawing-tooltip data-hide-when-drawing=true>");const vn=()=>{const e=x(),n=c.createMemo(()=>e.drawing.state.showTooltip&&e.drawing.state.mousePosition.y&&e.drawing.state.mousePosition.x&&e.widget.state.isOpen&&!$t());return c.createComponent(c.Show,{get when(){return n()},get children(){var t=mn();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=w("<button>");const L=e=>{const n=()=>e.variant||"primary",t=()=>e.size||"md";return(()=>{var r=wn();return at(r,c.mergeProps(e,{get class(){return`echo-button echo-button-${n()} echo-button-${t()} ${e.class}`}}),!1),r})()};var bn=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 pn=e=>(()=>{var n=bn();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&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(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 yn=w("<div class=echo-stored-feedback-empty>No unsubmitted feedback"),xn=w("<div class=echo-stored-feedback><div class=echo-stored-feedback-header><h3>Unsubmitted Feedback</h3></div><div class=echo-stored-feedback-list>"),kn=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 Cn=()=>{const e=x();let n;const[t,r]=c.createSignal(fe()),[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=fe();r(m),e.widget.setState({pagesCount:m.length})},d=()=>{a(window.location.pathname)};O({event:"echo-storage-change",callback:s}),O({event:"popstate",callback:d}),be({target:document.documentElement,options:{childList:!0,subtree:!0},callback:()=>{a(window.location.pathname)}}),O({event:"keydown",callback:i}),O({event:"click",callback:l});const u=(m,b)=>{const S=b?`${m}${b}`:m;window.location.href=S,e.widget.setState({isStoredFeedbackOpen:!1})},f=m=>{o()===m&&e.methods.reset(),Te(m);const b=fe();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=xn(),b=m.firstChild;b.firstChild;var S=b.nextSibling,k=n;return typeof k=="function"?R(k,m):n=m,v(b,c.createComponent(L,{variant:"secondary",size:"sm",onClick:()=>e.widget.setState({isStoredFeedbackOpen:!1}),get children(){return c.createComponent(se,{size:20})}}),null),v(S,c.createComponent(c.For,{get each(){return t()},children:C=>{const p=c.createMemo(()=>C.path===o());return(()=>{var $=kn(),P=$.firstChild,y=P.firstChild,B=y.nextSibling,j=P.nextSibling;return v(y,()=>g(C.path)),v(B,()=>C.state.feedback.message),v(j,(()=>{var I=c.createMemo(()=>!p());return()=>I()&&c.createComponent(L,{class:"echo-stored-feedback-link",variant:"secondary",size:"sm",onClick:()=>u(C.path,C.state.latestQuery),get children(){return c.createComponent(pn,{})}})})(),null),v(j,c.createComponent(L,{class:"echo-stored-feedback-delete",variant:"secondary",size:"sm",onClick:()=>f(C.path),children:"Delete"}),null),c.createRenderEffect(I=>{var Ye=`echo-stored-feedback-item ${p()?"echo-stored-feedback-item-current":""}`,_e=C.path;return Ye!==I.e&&xe($,I.e=Ye),_e!==I.t&&h(y,"title",I.t=_e),I},{e:void 0,t:void 0}),$})()}}),null),v(S,c.createComponent(c.Show,{get when(){return t().length===0},get children(){return yn()}}),null),m}})};var Sn=w('<button class=echo-launcher-button aria-label="Open feedback form"role=button>'),En=w("<span class=echo-launcher-button-count role=button tabindex=0>");const $n=()=>{const e=x(),[n,t]=c.createSignal(!1);let r;const o=()=>{r&&window.clearTimeout(r),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=()=>{e.widget.setState({isOpen:!e.widget.state.isOpen}),e.widget.setState({welcomeMessageIsClosing:!0}),K("welcome_message_shown",!0)};c.createEffect(()=>{e.widget.state.isOpen||(t(!1),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=Sn();return d.addEventListener("pointerleave",i),d.addEventListener("pointerenter",a),d.$$click=l,v(d,c.createComponent(Jt,{stroke:"white",fill:"#ffffff","aria-hidden":"true"}),null),v(d,(()=>{var u=c.createMemo(()=>e.widget.state.pagesCount>0);return()=>u()&&(()=>{var f=En();return f.$$click=s,v(f,()=>e.widget.state.pagesCount),c.createRenderEffect(()=>h(f,"aria-label",`View ${e.widget.state.pagesCount} stored feedback items`)),f})()})(),null),c.createRenderEffect(u=>{var f=e.widget.state.isOpen,g=`translateX(${n()?"45px":"0"})`,m=e.widget.state.isOpen;return f!==u.e&&h(d,"data-hidden",u.e=f),g!==u.t&&((u.t=g)!=null?d.style.setProperty("transform",g):d.style.removeProperty("transform")),m!==u.a&&h(d,"aria-expanded",u.a=m),u},{e:void 0,t:void 0,a:void 0}),d})(),c.createComponent(Cn,{})]};E(["click"]);var Pn=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 zn=()=>{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=Pn(),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(se,{size:20})}}),o),v(o,(()=>{var s=c.createMemo(()=>e.widget.state.notification.type==="success");return()=>s()?c.createComponent(cn,{size:32}):(()=>{var d=c.createMemo(()=>e.widget.state.notification.type==="error");return()=>d()?c.createComponent(ln,{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,u=!e.widget.state.notification.type,f=!e.widget.state.notification.show;return d!==s.e&&h(r,"data-type",s.e=d),u!==s.t&&h(r,"data-empty",s.t=u),f!==s.a&&h(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});O({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 u=null;if(s.type==="rectangle"){const m=Fe(s.points);if(!m)return null;u={x:m.x+m.width/2,y:m.y}}else if(s.type==="path"&&s.points.length>0)u={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,u.x-g.x)),y:Math.max(d.height+f,Math.min(window.innerHeight-f,u.y-g.y))}});return(()=>{var s=Tn(),d=n;return typeof d=="function"?R(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(Ve,{size:20})}})),c.createRenderEffect(u=>{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!==u.e&&(s.hidden=u.e=f),g!==u.t&&((u.t=g)!=null?s.style.setProperty("transform",g):s.style.removeProperty("transform")),u},{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 Mn=()=>{const e=x(),n=V("welcome_message_shown",!1),t=o=>{o.stopPropagation(),e.widget.setState({welcomeMessageIsClosing:!0}),K("welcome_message_shown",!0)},r=()=>{e.widget.setState({isOpen:!0}),e.widget.setState({welcomeMessageIsClosing:!0}),K("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(se,{size:16,strokeWidth:3})),c.createRenderEffect(l=>{var s=e.widget.state.welcomeMessageIsClosing,d=e.widget.state.text.welcomeMessage.closeAriaLabel;return s!==l.e&&h(o,"data-hidden",l.e=s),d!==l.t&&h(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 Be=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(Rn,c.mergeProps(e,{get isSelected(){return n()}}))}}),c.createComponent(c.Show,{get when(){return e.type==="path"},get children(){return c.createComponent(Fn,c.mergeProps(e,{get isSelected(){return n()}}))}})]},Rn=e=>{const n=c.createMemo(()=>Fe(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,u=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&&h(t,"data-shape-id",r.e=o),a!==r.t&&h(t,"data-selected",r.t=a),i!==r.a&&h(t,"x",r.a=i),l!==r.o&&h(t,"y",r.o=l),s!==r.i&&h(t,"width",r.i=s),d!==r.n&&h(t,"height",r.n=d),u!==r.s&&h(t,"stroke",r.s=u),f!==r.h&&h(t,"stroke-width",r.h=f),g!==r.r&&h(t,"opacity",r.r=g),m!==r.d&&h(t,"stroke-dasharray",r.d=m),b!==r.l&&h(t,"cursor",r.l=b),S!==r.u&&h(t,"aria-label",r.u=S),k!==r.c&&h(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}})},Fn=e=>{const n=c.createMemo(()=>Pt(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,u=e.isSelected?"move":"pointer",f=`Freehand shape ${e.isSelected?"(selected)":""}`,g=e.onShapeClick?0:-1;return o!==r.e&&h(t,"data-shape-id",r.e=o),a!==r.t&&h(t,"data-selected",r.t=a),i!==r.a&&h(t,"d",r.a=i),l!==r.o&&h(t,"stroke",r.o=l),s!==r.i&&h(t,"stroke-width",r.i=s),d!==r.n&&h(t,"opacity",r.n=d),u!==r.s&&h(t,"cursor",r.s=u),f!==r.h&&h(t,"aria-label",r.h=f),g!==r.r&&h(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 Ln=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 jn=()=>{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=Ln(),r=t.firstChild,o=r.firstChild,a=n;return typeof a=="function"?R(a,t):n=t,v(t,c.createComponent(vn,{}),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(Be,{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(Be,{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=Rt({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&&h(o,"d",i.t=s),i},{e:void 0,t:void 0}),t})()};E(["mousedown","touchstart","mousemove","touchmove","touchend"]);const te=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 Nn=w("<div class=echo-input role=group>"),qn=w("<label class=echo-input-label><span>"),Vn=w('<span class=echo-input-required aria-label="Required field">*');const ne=e=>(()=>{var n=Nn();return v(n,(()=>{var t=c.createMemo(()=>!!e.label);return()=>t()&&(()=>{var r=qn(),o=r.firstChild;return v(o,()=>e.label),v(r,(()=>{var a=c.createMemo(()=>!!e.required);return()=>a()&&Vn()})(),null),r})()})(),null),v(n,()=>e.children,null),n})();var Bn=w("<textarea class=echo-input-field rows=5>"),Wn=w("<div class=visually-hidden>");const We=e=>{const{handleTextChange:n}=te(e.onChange);return c.createComponent(ne,{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==="",u=`${e.config.id}-description`;return o!==r.e&&h(t,"id",r.e=o),a!==r.t&&h(t,"placeholder",r.t=a),i!==r.a&&(t.required=r.a=i),l!==r.o&&h(t,"aria-label",r.o=l),s!==r.i&&h(t,"aria-required",r.i=s),d!==r.n&&h(t,"aria-invalid",r.n=d),u!==r.s&&h(t,"aria-describedby",r.s=u),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=Wn();return v(t,()=>e.config.placeholder),c.createRenderEffect(()=>h(t,"id",`${e.config.id}-description`)),t})()]}})};E(["input"]);var Yn=w("<fieldset class=echo-input-options role=group>"),_n=w("<label class=echo-input-option><input type=checkbox><span>");const Hn=e=>{const{handleCheckboxChange:n,getCheckboxValue:t}=te(e.onChange),r=()=>t(e.value),o=()=>r().length>0;return c.createComponent(ne,{get label(){return e.config.label},get required(){return e.config.required},get children(){var a=Yn();return v(a,c.createComponent(c.For,{get each(){return e.config.options},children:(i,l)=>(()=>{var s=_n(),d=s.firstChild,u=d.nextSibling;return d.addEventListener("change",f=>n(r(),i.value,f.currentTarget.checked)),v(u,()=>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(()=>h(a,"aria-required",e.config.required)),a}})};var Un=w("<fieldset class=echo-input-options role=radiogroup>"),Xn=w("<label class=echo-input-option><input type=radio><span>");const Kn=e=>{const{handleSelectChange:n}=te(e.onChange);return c.createComponent(ne,{get label(){return e.config.label},get required(){return e.config.required},get children(){var t=Un();return v(t,c.createComponent(c.For,{get each(){return e.config.options},children:r=>(()=>{var o=Xn(),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&&h(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(()=>h(t,"aria-required",e.config.required)),t}})};var Gn=w("<div class=echo-select-dropdown role=listbox>"),Zn=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>'),Qn=w("<button type=button class=echo-select-option role=option>");const Jn=e=>{const{handleSelectChange:n}=te(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 O({event:"mousedown",callback:f=>{if(!t()||!o)return;f.composedPath().includes(o)||r(!1)}}),c.createComponent(ne,{get label(){return e.config.label},get required(){return e.config.required},get children(){var f=Zn(),g=f.firstChild,m=g.firstChild,b=g.nextSibling,S=o;typeof S=="function"?R(S,f):o=f,g.$$click=p=>{p.stopPropagation(),d()};var k=a;typeof k=="function"?R(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=Gn();return v(p,c.createComponent(c.For,{get each(){return e.config.options},children:$=>(()=>{var P=Qn();return P.$$click=y=>s($,y),v(P,()=>$.label),c.createRenderEffect(y=>{var B=$.value===e.value,j=$.value===e.value;return B!==y.e&&h(P,"aria-selected",y.e=B),j!==y.t&&h(P,"data-selected",y.t=j),y},{e:void 0,t:void 0}),P})()})),p}}),b);var C=i;return typeof C=="function"?R(C,b):i=b,c.createRenderEffect(p=>{var $=t(),P=!e.value,y=e.config.required,B=t(),j=e.config.required,I=e.config.required;return $!==p.e&&h(g,"data-open",p.e=$),P!==p.t&&h(g,"data-placeholder",p.t=P),y!==p.a&&h(g,"data-required",p.a=y),B!==p.o&&h(g,"aria-expanded",p.o=B),j!==p.i&&h(g,"aria-required",p.i=j),I!==p.n&&(b.required=p.n=I),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 er=w("<input type=text class=echo-input-field>");const tr=e=>{const{handleTextChange:n}=te(e.onChange);return c.createComponent(ne,{get label(){return e.config.label},get required(){return e.config.required},get children(){var t=er();return N(t,"input",n,!0),c.createRenderEffect(r=>{var o=e.config.placeholder,a=e.config.required;return o!==r.e&&h(t,"placeholder",r.e=o),a!==r.t&&(t.required=r.t=a),r},{e:void 0,t:void 0}),c.createRenderEffect(()=>t.value=e.value===void 0?"":e.value),t}})};E(["input"]);var nr=w("<div class=echo-input-error>Invalid input type"),rr=w("<div class=echo-input-error>Unsupported input type: ");const ar=e=>c.createComponent(c.Show,{get when(){return e.config.type},keyed:!0,get fallback(){return nr()},get children(){return c.createComponent(c.Switch,{get fallback(){return(()=>{var n=rr();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(tr,{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==="textarea"},get children(){return c.createComponent(We,{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(Kn,{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(Jn,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}})]}})}}),or=()=>{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}},ir=()=>({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}),cr=()=>{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}},sr=()=>({timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,localDateTime:new Date().toISOString()}),lr=()=>({userAgent:navigator.userAgent,browserInfo:ir(),networkInfo:or(),locationInfo:cr(),timeInfo:sr(),console:Et()});var dr=w("<fieldset class=echo-input-options><legend class=visually-hidden>Additional Information"),ur=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><legend class=visually-hidden>Feedback Message');const hr=()=>{const e=x(),n=async o=>{o.preventDefault();const a=await Dt(),i={message:e.feedback.state.message,screenshot:a,metadata:lr(),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=ur(),a=o.firstChild,i=a.firstChild,l=i.firstChild,s=l.nextSibling,d=i.nextSibling;return d.firstChild,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(Zt,{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(se,{size:20})}}),null),v(d,c.createComponent(We,{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:u=>e.feedback.setState({message:u})}),null),v(a,c.createComponent(c.Show,{get when(){var u;return(u=e.widget.state.customInputs)==null?void 0:u.length},get children(){var u=dr();return u.firstChild,v(u,c.createComponent(c.For,{get each(){return e.widget.state.customInputs},children:f=>c.createComponent(ar,{config:f,get value(){return e.feedback.state.customInputValues[f.id]},onChange:g=>e.feedback.setState({customInputValues:{...e.feedback.state.customInputValues,[f.id]:g}})})}),null),u}}),null),v(a,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}}),null),c.createRenderEffect(u=>{var f=e.feedback.state.isMinimized,g=e.feedback.state.isMinimized?"pointer":"default",m=!e.feedback.state.isMinimized;return f!==u.e&&h(o,"data-minimized",u.e=f),g!==u.t&&((u.t=g)!=null?o.style.setProperty("cursor",g):o.style.removeProperty("cursor")),m!==u.a&&h(o,"aria-expanded",u.a=m),u},{e:void 0,t:void 0,a:void 0}),o})()};E(["click"]);var fr=w("<style>"),gr=w("<div class=echo-launcher>"),mr=w("<dialog class=echo-overlay>"),vr=w("<div class=echo-root>");const wr=e=>c.createComponent(dt,{useShadow:!0,get mount(){return document.body},get children(){return c.createComponent(Vt,c.mergeProps(e,{get children(){return c.createComponent(xr,{get children(){return[c.createComponent(br,{get primaryColor(){return e.primaryColor}}),c.createComponent(pr,{})]}})}}))}}),br=e=>{const[n,t]=c.createSignal("");return c.createEffect(()=>{const r=`
1
+ (function(D,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("solid-js"),require("html2canvas")):typeof define=="function"&&define.amd?define(["exports","solid-js","html2canvas"],c):(D=typeof globalThis<"u"?globalThis:D||self,c(D.Echo={},D.Solid,D.html2canvas))})(this,function(D,c,He){"use strict";const Ue=["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"],Xe=new Set(["className","value","readOnly","formNoValidate","isMap","noModule","playsInline",...Ue]),Ke=new Set(["innerHTML","textContent","innerText","children"]),Ge=Object.assign(Object.create(null),{className:"class",htmlFor:"for"}),Ze=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 Qe(e,n){const t=Ze[e];return typeof t=="object"?t[n]?t.$:void 0:t}const Je=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 et(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 u=a<r?l?t[l-1].nextSibling:t[a-l]:s;for(;l<a;)e.insertBefore(t[l++],u)}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 u=n[--o].nextSibling;e.insertBefore(t[l++],n[i++].nextSibling),e.insertBefore(t[--a],u),n[o]=t[a]}else{if(!d){d=new Map;let f=l;for(;f<a;)d.set(t[f],f++)}const u=d.get(n[i]);if(u!=null)if(l<u&&u<a){let f=i,g=1,m;for(;++f<o&&f<a&&!((m=d.get(n[f]))==null||m!==u+g);)g++;if(g>u-l){const b=n[i];for(;l<u;)e.insertBefore(t[l++],b)}else e.replaceChild(t[l++],n[i++])}else i++;else n[i++].remove()}}}const ye="_$DX_DELEGATE";function tt(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[ye]||(n[ye]=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,ct))}}function h(e,n,t){X(e)||(t==null?e.removeAttribute(n):e.setAttribute(n,t))}function nt(e,n,t){X(e)||(t?e.setAttribute(n,""):e.removeAttribute(n))}function xe(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 rt(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]||(ke(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||(ke(e,l,!0),t[l]=s)}return t}function z(e,n,t){if(!n)return t?h(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 at(e,n={},t,r){const o={};return c.createRenderEffect(()=>o.children=K(e,n.children,o.children)),c.createRenderEffect(()=>typeof n.ref=="function"&&R(n.ref,e)),c.createRenderEffect(()=>ot(e,n,t,!0,o,!0)),o}function R(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 ot(e,n,t,r,o={},a=!1){n||(n={});for(const i in o)if(!(i in n)){if(i==="children")continue;o[i]=Ce(e,i,null,o[i],t,a,n)}for(const i in n){if(i==="children")continue;const l=n[i];o[i]=Ce(e,i,l,o[i],t,a,n)}}function X(e){return!!c.sharedConfig.context&&!c.sharedConfig.done&&(!e||e.isConnected)}function it(e){return e.toLowerCase().replace(/-([a-z])/g,(n,t)=>t.toUpperCase())}function ke(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 Ce(e,n,t,r,o,a,i){let l,s,d,u,f;if(n==="style")return z(e,t,r);if(n==="classList")return rt(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=Je.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:")h(e,n.slice(5),t);else if(n.slice(0,5)==="bool:")nt(e,n.slice(5),t);else if((f=n.slice(0,5)==="prop:")||(d=Ke.has(n))||(u=Qe(n,e.tagName))||(s=Xe.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"?xe(e,t):l&&!s&&!d?e[it(n)]=t:e[u||n]=t}else h(e,Ge[n]||n,t);return t}function ct(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 u=t[d];u.nodeType===8&&u.data.slice(0,2)==="!$"?u.remove():s.push(u)}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=W(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=W(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(ue(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 u=s[0];if(u.parentNode!==e)return t;const f=[u];for(;(u=u.nextSibling)!==r;)f.push(u);return t=f}if(s.length===0){if(t=W(e,t,r),l)return t}else d?t.length===0?Se(e,s,r):et(e,t,s):(t&&W(e),Se(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=W(e,t,r,n);W(e,t,null,n)}else t==null||t===""||!e.firstChild?e.appendChild(n):e.replaceChild(n,e.firstChild);t=n}}return t}function ue(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=ue(e,l,s)||o;else if(d==="function")if(r){for(;typeof l=="function";)l=l();o=ue(e,Array.isArray(l)?l:[l],Array.isArray(s)?s:[s])||o}else e.push(l),o=!0;else{const u=String(l);s&&s.nodeType===3&&s.data===u?e.push(s):e.push(document.createTextNode(u))}}return o}function Se(e,n,t=null){for(let r=0,o=n.length;r<o;r++)e.insertBefore(n[r],t)}function W(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 st="http://www.w3.org/2000/svg";function lt(e,n=!1){return n?document.createElementNS(st,e):document.createElement(e)}function dt(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),u=()=>d(!0);c.createRoot(f=>v(l,()=>s()?f():a(),null)),c.onCleanup(u)}else{const s=lt(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 ut=5e3,ht=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},ut)},clear:()=>{t(),e.setState({notification:{show:!1,type:null,message:null}})}}},Ee=(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]=Ee(e[r],n[r]):t[r]=n[r];return t},ft=(e,n)=>{let t;return(...r)=>{clearTimeout(t),t=window.setTimeout(()=>e(...r),n)}},gt="echo_",q="echo-pages",$e=e=>{if(!e||e==="/")return"/";const n=e.split("/");return n.length<=4?e:`/${n[1]}/.../${n[n.length-1]}`},Pe=()=>{window.dispatchEvent(new Event("echo-storage-change"))},ze=e=>`${gt}${e}`,V=(e,n)=>{try{const t=localStorage.getItem(ze(e));return t?JSON.parse(t):n}catch{return n}},G=(e,n)=>{try{localStorage.setItem(ze(e),JSON.stringify(n))}catch(t){console.warn("Failed to save to localStorage:",t)}},he=()=>{const e=window.location.pathname||"/",n=window.location.search;return`${e}${n}`},mt=(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=$e(e);(t||n.drawing.shapes.length>0)&&(r[o]={...r[o]||{},...t?{feedback:t}:{},drawing:{shapes:n.drawing.shapes}}),G(q,r),Pe()}catch(t){console.warn("Failed to save page state:",t)}},fe=e=>{try{return V(q,{})[e]}catch(n){console.error("Failed to load page state:",n);return}},Te=e=>{try{const n=V(q,{});delete n[e],G(q,n),Pe()}catch(n){console.error("Failed to clear page state:",n)}},Oe=()=>{try{const e=V(q,{});return Object.keys(e).length}catch(e){return console.error("Failed to get stored pages count:",e),0}},ge=()=>{try{const e=V(q,{});return Object.entries(e).map(([n,t])=>({path:$e(n),state:t}))}catch(e){return console.error("Failed to get stored pages:",e),[]}},vt=e=>ft((n,t,r=!1)=>{(!r||t.feedback.message.trim().length>0||t.drawing.shapes.length>0)&&(mt(n,t),e.setState({pagesCount:Oe()}))},1e3),me=Symbol("store-raw"),Y=Symbol("store-node"),M=Symbol("store-has"),Ie=Symbol("store-self");function Me(e){let n=e[c.$PROXY];if(!n&&(Object.defineProperty(e,c.$PROXY,{value:n=new Proxy(e,pt)}),!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 re(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[me])return t;if(!re(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 ae(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 wt(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 Ae(e){c.getListener()&&Q(ae(e,Y),Ie)()}function bt(e){return Ae(e),Reflect.ownKeys(e)}const pt={get(e,n,t){if(n===me)return e;if(n===c.$PROXY)return t;if(n===c.$TRACK)return Ae(e),t;const r=ae(e,Y),o=r[n];let a=o?o():e[n];if(n===Y||n===M||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 re(a)?Me(a):a},has(e,n){return n===me||n===c.$PROXY||n===c.$TRACK||n===Y||n===M||n==="__proto__"?!0:(c.getListener()&&Q(ae(e,M),n)(),n in e)},set(){return!0},deleteProperty(){return!0},ownKeys:bt,getOwnPropertyDescriptor:wt};function oe(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[M]&&e[M][n]&&o!==void 0&&e[M][n].$()):(e[n]=t,e[M]&&e[M][n]&&o===void 0&&e[M][n].$());let i=ae(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[Ie])&&l.$()}function De(e,n){const t=Object.keys(n);for(let r=0;r<t.length;r+=1){const o=t[r];oe(e,o,n[o])}}function yt(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&&oe(e,t,o)}oe(e,"length",r)}else De(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:u=1}=r;for(let f=s;f<=d;f+=u)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||re(o)&&re(a)&&!Array.isArray(a)?De(o,a):oe(e,r,a))}function ve(...[e,n]){const t=Z(e||{}),r=Array.isArray(t),o=Me(t);function a(...i){c.batch(()=>{r&&i.length===1?yt(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}}},xt=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},kt=e=>xt(e)<.5?"#FFFFFF":"#000000";let A=[],T=null,_=null,H=null;const we=(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(" ");A.push({type:e,message:o,timestamp:new Date().toISOString()}),A.length>1e3&&(A=A.slice(-1e3)),n.apply(console,t)},Ct=()=>{T||(T={log:console.log,warn:console.warn,error:console.error},_=window.onerror,H=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 A.push({type:"error",message:`Uncaught Error: ${a}
2
+ Location: ${n}:${t}:${r}`,timestamp:new Date().toISOString()}),_?_(e,n,t,r,o):!1},window.onunhandledrejection=e=>{const n=e.reason;A.push({type:"error",message:`Unhandled Promise Rejection: ${(n==null?void 0:n.stack)||(n==null?void 0:n.message)||n}`,timestamp:new Date().toISOString()}),H&&H(e)},console.log=we("log",T.log),console.warn=we("warn",T.warn),console.error=we("error",T.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;A.push({type:"error",message:`Uncaught Error: ${i}
3
+ Location: ${t}:${r}:${o}`,timestamp:new Date().toISOString()})}))},St=()=>{T&&(console.log=T.log,console.warn=T.warn,console.error=T.error,T=null),_&&(window.onerror=_,_=null),H&&(window.onunhandledrejection=H,H=null),window.removeEventListener("error",()=>{}),A=[]},Et=()=>[...A],$t=()=>{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)},ie=(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}},Re=(e,n)=>{const t=n.x-e.x,r=n.y-e.y;return Math.sqrt(t*t+r*r)},Fe=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)}},Pt=e=>e.length<2?null:`M ${e[0].x} ${e[0].y} ${e.slice(1).map(n=>`L ${n.x} ${n.y}`).join(" ")}`,ce=window.EventTarget.prototype.addEventListener,U=window.EventTarget.prototype.removeEventListener;let se=!1;const zt=(e,n,t,r)=>{ce.call(e,n,t,r)},Tt=(e,n,t,r)=>{U.call(e,n,t,r)},ee=new WeakMap,Ot=e=>{se||(se=!0,window.EventTarget.prototype.addEventListener=function(n,t,r){if(!this||typeof this!="object")return ce.call(this,n,t,r);const o=Mt(t,e);ee.has(this)||ee.set(this,new Map);const a={listener:t},i=ee.get(this);i&&i.set(t,a),ce.call(this,n,o,r)},window.EventTarget.prototype.removeEventListener=function(n,t,r){if(!this||typeof this!="object")return U.call(this,n,t,r);const o=ee.get(this);if(!o){U.call(this,n,t,r);return}const a=o.get(t);a?(U.call(this,n,a.listener,r),o.delete(t),o.size===0&&ee.delete(this)):U.call(this,n,t,r)})},It=()=>{se&&(window.EventTarget.prototype.addEventListener=ce,window.EventTarget.prototype.removeEventListener=U,se=!1)},O=e=>{const{event:n,callback:t,onMount:r,onCleanup:o,useOriginal:a=!0}=e;c.onMount(()=>{r==null||r(),a?zt(window,n,t):window.addEventListener(n,t)}),c.onCleanup(()=>{o==null||o(),a?Tt(window,n,t):window.removeEventListener(n,t)})},be=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()})},Mt=(e,n)=>function(t){n(t),typeof e=="function"?e.call(this,t):e.handleEvent(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 He(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}},Rt=(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},Ft=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")},Le=5,je=(e,n)=>F[e].getCursor(n),Lt=(e,n,t)=>{var l,s;const[r,o]=ve({isDrawing:!1,currentPoints:[],selectedShapeId:null,selectedTool:"rectangle",showTooltip:!0,mousePosition:{x:0,y:0},selectedColor:e.primaryColor,shapes:((s=(l=fe(n))==null?void 0:l.drawing)==null?void 0:s.shapes)||[],hasDrawn:!1,isDragging:!1,dragStartPos:null,initialClickPos:null,dragOffset:null,cursor:je("rectangle",e.primaryColor)}),a=(d,u=!1)=>{if(d.selectedTool||d.selectedColor){const f=d.selectedTool||r.selectedTool,g=d.selectedColor||r.selectedColor;d.cursor=je(f,g)}o(d),t==null||t(d,u)},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 u=ie(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(u),i.updateDragOffset(g,u);return}}}i.setInitialClick(u)},handleMove:d=>{const u=ie(d,{useClientCoords:!0}),f=ie(d);if(a({mousePosition:u}),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){Re(r.initialClickPos,f)>=Le&&i.startDrawing(r.initialClickPos);return}r.isDrawing&&i.updateDrawing(f)},handleEnd:d=>{if(r.isDragging){i.stopDrag();return}if(r.initialClickPos&&!r.isDrawing){const u=ie(d);if(Re(r.initialClickPos,u)<Le&&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,u)=>{a({dragOffset:{x:u.x-d.points[0].x,y:u.y-d.points[0].y}})}};return{state:r,setState:a,methods:i}},jt=(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=fe(n),i=(a==null?void 0:a.feedback.customInputValues)||{},l={...o,...i},[s,d]=ve({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))}}},Nt=(e,n)=>{const[t,r]=ve({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:Oe(),welcomeMessageIsClosing:!1,position:e.position,customInputs:e.customInputs});return{state:t,setState:r}},Ne=e=>{var n;return((n=e.customInputs)==null?void 0:n.reduce((t,r)=>(t[r.id]=r.defaultValue??(r.type==="checkbox"?[]:""),t),{}))||{}},qt=e=>{let n=he();const t=Nt(e),r=vt(t),o=ht(t),a=jt(e,n,(d,u)=>{r(n,{feedback:{...a.state,...d},drawing:i.state},u)},e.customInputs),i=Lt(e,n,(d,u)=>{r(n,{feedback:a.state,drawing:{...i.state,...d}},u)}),l=d=>{n=d;const u=fe(n),f={...Ne(e),...u==null?void 0:u.feedback.customInputValues};a.setState({message:(u==null?void 0:u.feedback.message)||"",customInputValues:f,hasUserInteracted:!1}),i.setState({shapes:(u==null?void 0:u.drawing.shapes)||[]})},s=()=>{Te(n);const d={feedback:{message:"",screenshot:void 0,isCapturing:!1,isMinimized:!1,hasUserInteracted:!1,customInputValues:Ne(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 u=await e.onSubmit(d);return u instanceof Response&&!u.ok?(o.show({type:"error",message:"Submission failed"}),u):(s(),o.show({type:"success",message:"Feedback submitted"}),u)}catch{o.show({type:"error",message:"Submission failed"})}}}}},qe=c.createContext(),Vt=e=>{const n=qt({primaryColor:e.primaryColor,onSubmit:e.onSubmit,textConfig:e.textConfig,position:e.position,customInputs:e.customInputs});return c.createComponent(qe.Provider,{value:n,get children(){return e.children}})},x=()=>{const e=c.useContext(qe);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 O({event:"resize",callback:r,onMount:r}),be({target:document.documentElement,options:{childList:!0,subtree:!0,attributes:!0},callback:r}),n},Wt=({onUrlChange:e})=>{let n=he();const t=()=>{const r=he();r!==n&&(n=r,e(r))};O({event:"popstate",callback:t}),O({event:"pushstate",callback:t}),O({event:"replacestate",callback:t}),be({target:document.documentElement,options:{childList:!0,subtree:!0},callback:t})},Yt=`*,*: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);--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));right: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-2xl)),24rem);z-index:var(--z-feedback-form);box-shadow:var(--shadow-black-lightened-lg);display:flex;flex-direction:column;gap:var(--spacing-lg);background:#fff;border-radius:var(--radius-lg);will-change:transform;padding: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}.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}.echo-feedback-form-textarea{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);min-height:120px;resize:vertical;font-family:inherit}.echo-feedback-form-textarea:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-feedback-form-textarea::placeholder{color:var(--text-lighter)}[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::placeholder{color:var(--text-lighter)}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{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 _t=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 Ut=["#ff6b6b","#69db7c","#74c0fc","#ffd43b","#da77f2","#66d9e8","#ffa94d","#e599f7"],Xt={"#ff6b6b":"Soft Red","#69db7c":"Soft Green","#74c0fc":"Soft Blue","#ffd43b":"Soft Yellow","#da77f2":"Soft Purple","#66d9e8":"Soft Cyan","#ffa94d":"Soft Orange","#e599f7":"Soft Pink"},pe=e=>Xt[e]||"Primary",Kt=()=>{const e=x();return(()=>{var n=_t(),t=n.firstChild,r=t.nextSibling,o=r.firstChild;return h(t,"aria-expanded",!1),v(o,c.createComponent(c.For,{get each(){return[e.widget.state.primaryColor,...Ut]},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 ${pe(a)} color`,d=e.drawing.state.selectedColor===a,u=`${pe(a)} color`,f=e.drawing.state.selectedColor===a;return s!==l.e&&h(i,"title",l.e=s),d!==l.t&&h(i,"data-selected",l.t=d),u!==l.a&&h(i,"aria-label",l.a=u),f!==l.o&&h(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: ${pe(e.drawing.state.selectedColor)}`,l=e.drawing.state.selectedColor;return i!==a.e&&h(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 Gt=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 Zt=e=>(()=>{var n=Gt();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&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(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 Qt=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 Jt=e=>(()=>{var n=Qt(),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&&h(n,"width",r.e=o),a!==r.t&&h(n,"height",r.t=a),i!==r.a&&h(n,"class",r.a=i),r.o=z(n,l,r.o),s!==r.i&&h(t,"fill",r.i=s),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),n})();var en=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 tn=e=>(()=>{var n=en();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&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(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 nn=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 rn=e=>(()=>{var n=nn();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&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(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 an=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 Ve=e=>(()=>{var n=an();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&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(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=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 cn=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&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(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 sn=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 ln=e=>(()=>{var n=sn();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&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(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 dn=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 le=e=>(()=>{var n=dn();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&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(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=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>'),hn=w("<button class=echo-drawing-toolbar-button role=button>");const fn={rectangle:tn,path:rn},gn=()=>{const e=x(),n=Object.values(F);return(()=>{var t=un(),r=t.firstChild;return v(t,c.createComponent(c.For,{each:n,children:o=>{const a=fn[o.id];return(()=>{var i=hn();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,u=o.label,f=e.drawing.state.selectedTool===o.id;return s!==l.e&&h(i,"title",l.e=s),d!==l.t&&h(i,"data-selected",l.t=d),u!==l.a&&h(i,"aria-label",l.a=u),f!==l.o&&h(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(Kt,{}),r),r.$$click=()=>e.drawing.setState({shapes:[]},!0),v(r,c.createComponent(Ve,{class:"echo-drawing-toolbar-icon","aria-hidden":"true"})),t})()};E(["click"]);var mn=w("<div class=echo-drawing-tooltip data-hide-when-drawing=true>");const vn=()=>{const e=x(),n=c.createMemo(()=>e.drawing.state.showTooltip&&e.drawing.state.mousePosition.y&&e.drawing.state.mousePosition.x&&e.widget.state.isOpen&&!$t());return c.createComponent(c.Show,{get when(){return n()},get children(){var t=mn();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=w("<button>");const L=e=>{const n=()=>e.variant||"primary",t=()=>e.size||"md";return(()=>{var r=wn();return at(r,c.mergeProps(e,{get class(){return`echo-button echo-button-${n()} echo-button-${t()} ${e.class}`}}),!1),r})()};var bn=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 pn=e=>(()=>{var n=bn();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&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(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 yn=w("<div class=echo-stored-feedback-empty>No unsubmitted feedback"),xn=w("<div class=echo-stored-feedback><div class=echo-stored-feedback-header><h3>Unsubmitted Feedback</h3></div><div class=echo-stored-feedback-list>"),kn=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 Cn=()=>{const e=x();let n;const[t,r]=c.createSignal(ge()),[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=ge();r(m),e.widget.setState({pagesCount:m.length})},d=()=>{a(window.location.pathname)};O({event:"echo-storage-change",callback:s}),O({event:"popstate",callback:d}),be({target:document.documentElement,options:{childList:!0,subtree:!0},callback:()=>{a(window.location.pathname)}}),O({event:"keydown",callback:i}),O({event:"click",callback:l});const u=(m,b)=>{const S=b?`${m}${b}`:m;window.location.href=S,e.widget.setState({isStoredFeedbackOpen:!1})},f=m=>{o()===m&&e.methods.reset(),Te(m);const b=ge();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=xn(),b=m.firstChild;b.firstChild;var S=b.nextSibling,k=n;return typeof k=="function"?R(k,m):n=m,v(b,c.createComponent(L,{variant:"secondary",size:"sm",onClick:()=>e.widget.setState({isStoredFeedbackOpen:!1}),get children(){return c.createComponent(le,{size:20})}}),null),v(S,c.createComponent(c.For,{get each(){return t()},children:C=>{const p=c.createMemo(()=>C.path===o());return(()=>{var $=kn(),P=$.firstChild,y=P.firstChild,B=y.nextSibling,j=P.nextSibling;return v(y,()=>g(C.path)),v(B,()=>C.state.feedback.message),v(j,(()=>{var I=c.createMemo(()=>!p());return()=>I()&&c.createComponent(L,{class:"echo-stored-feedback-link",variant:"secondary",size:"sm",onClick:()=>u(C.path,C.state.latestQuery),get children(){return c.createComponent(pn,{})}})})(),null),v(j,c.createComponent(L,{class:"echo-stored-feedback-delete",variant:"secondary",size:"sm",onClick:()=>f(C.path),children:"Delete"}),null),c.createRenderEffect(I=>{var Ye=`echo-stored-feedback-item ${p()?"echo-stored-feedback-item-current":""}`,_e=C.path;return Ye!==I.e&&xe($,I.e=Ye),_e!==I.t&&h(y,"title",I.t=_e),I},{e:void 0,t:void 0}),$})()}}),null),v(S,c.createComponent(c.Show,{get when(){return t().length===0},get children(){return yn()}}),null),m}})};var Sn=w('<button class=echo-launcher-button aria-label="Open feedback form"role=button>'),En=w("<span class=echo-launcher-button-count role=button tabindex=0>");const $n=()=>{const e=x(),[n,t]=c.createSignal(!1);let r;const o=()=>{r&&window.clearTimeout(r),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=()=>{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),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=Sn();return d.addEventListener("pointerleave",i),d.addEventListener("pointerenter",a),d.$$click=l,v(d,c.createComponent(Jt,{stroke:"white",fill:"#ffffff","aria-hidden":"true"}),null),v(d,(()=>{var u=c.createMemo(()=>e.widget.state.pagesCount>0);return()=>u()&&(()=>{var f=En();return f.$$click=s,v(f,()=>e.widget.state.pagesCount),c.createRenderEffect(()=>h(f,"aria-label",`View ${e.widget.state.pagesCount} stored feedback items`)),f})()})(),null),c.createRenderEffect(u=>{var f=e.widget.state.isOpen,g=`translateX(${n()?"45px":"0"})`,m=e.widget.state.isOpen;return f!==u.e&&h(d,"data-hidden",u.e=f),g!==u.t&&((u.t=g)!=null?d.style.setProperty("transform",g):d.style.removeProperty("transform")),m!==u.a&&h(d,"aria-expanded",u.a=m),u},{e:void 0,t:void 0,a:void 0}),d})(),c.createComponent(Cn,{})]};E(["click"]);var Pn=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 zn=()=>{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=Pn(),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(le,{size:20})}}),o),v(o,(()=>{var s=c.createMemo(()=>e.widget.state.notification.type==="success");return()=>s()?c.createComponent(cn,{size:32}):(()=>{var d=c.createMemo(()=>e.widget.state.notification.type==="error");return()=>d()?c.createComponent(ln,{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,u=!e.widget.state.notification.type,f=!e.widget.state.notification.show;return d!==s.e&&h(r,"data-type",s.e=d),u!==s.t&&h(r,"data-empty",s.t=u),f!==s.a&&h(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});O({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 u=null;if(s.type==="rectangle"){const m=Fe(s.points);if(!m)return null;u={x:m.x+m.width/2,y:m.y}}else if(s.type==="path"&&s.points.length>0)u={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,u.x-g.x)),y:Math.max(d.height+f,Math.min(window.innerHeight-f,u.y-g.y))}});return(()=>{var s=Tn(),d=n;return typeof d=="function"?R(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(Ve,{size:20})}})),c.createRenderEffect(u=>{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!==u.e&&(s.hidden=u.e=f),g!==u.t&&((u.t=g)!=null?s.style.setProperty("transform",g):s.style.removeProperty("transform")),u},{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 Mn=()=>{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(le,{size:16,strokeWidth:3})),c.createRenderEffect(l=>{var s=e.widget.state.welcomeMessageIsClosing,d=e.widget.state.text.welcomeMessage.closeAriaLabel;return s!==l.e&&h(o,"data-hidden",l.e=s),d!==l.t&&h(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 Be=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(Rn,c.mergeProps(e,{get isSelected(){return n()}}))}}),c.createComponent(c.Show,{get when(){return e.type==="path"},get children(){return c.createComponent(Fn,c.mergeProps(e,{get isSelected(){return n()}}))}})]},Rn=e=>{const n=c.createMemo(()=>Fe(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,u=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&&h(t,"data-shape-id",r.e=o),a!==r.t&&h(t,"data-selected",r.t=a),i!==r.a&&h(t,"x",r.a=i),l!==r.o&&h(t,"y",r.o=l),s!==r.i&&h(t,"width",r.i=s),d!==r.n&&h(t,"height",r.n=d),u!==r.s&&h(t,"stroke",r.s=u),f!==r.h&&h(t,"stroke-width",r.h=f),g!==r.r&&h(t,"opacity",r.r=g),m!==r.d&&h(t,"stroke-dasharray",r.d=m),b!==r.l&&h(t,"cursor",r.l=b),S!==r.u&&h(t,"aria-label",r.u=S),k!==r.c&&h(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}})},Fn=e=>{const n=c.createMemo(()=>Pt(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,u=e.isSelected?"move":"pointer",f=`Freehand shape ${e.isSelected?"(selected)":""}`,g=e.onShapeClick?0:-1;return o!==r.e&&h(t,"data-shape-id",r.e=o),a!==r.t&&h(t,"data-selected",r.t=a),i!==r.a&&h(t,"d",r.a=i),l!==r.o&&h(t,"stroke",r.o=l),s!==r.i&&h(t,"stroke-width",r.i=s),d!==r.n&&h(t,"opacity",r.n=d),u!==r.s&&h(t,"cursor",r.s=u),f!==r.h&&h(t,"aria-label",r.h=f),g!==r.r&&h(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 Ln=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 jn=()=>{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=Ln(),r=t.firstChild,o=r.firstChild,a=n;return typeof a=="function"?R(a,t):n=t,v(t,c.createComponent(vn,{}),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(Be,{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(Be,{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=Rt({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&&h(o,"d",i.t=s),i},{e:void 0,t:void 0}),t})()};E(["mousedown","touchstart","mousemove","touchmove","touchend"]);const te=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 Nn=w("<div class=echo-input role=group>"),qn=w("<label class=echo-input-label><span>"),Vn=w('<span class=echo-input-required aria-label="Required field">*');const ne=e=>(()=>{var n=Nn();return v(n,(()=>{var t=c.createMemo(()=>!!e.label);return()=>t()&&(()=>{var r=qn(),o=r.firstChild;return v(o,()=>e.label),v(r,(()=>{var a=c.createMemo(()=>!!e.required);return()=>a()&&Vn()})(),null),r})()})(),null),v(n,()=>e.children,null),n})();var Bn=w("<textarea class=echo-input-field rows=5>"),Wn=w("<div class=visually-hidden>");const We=e=>{const{handleTextChange:n}=te(e.onChange);return c.createComponent(ne,{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==="",u=`${e.config.id}-description`;return o!==r.e&&h(t,"id",r.e=o),a!==r.t&&h(t,"placeholder",r.t=a),i!==r.a&&(t.required=r.a=i),l!==r.o&&h(t,"aria-label",r.o=l),s!==r.i&&h(t,"aria-required",r.i=s),d!==r.n&&h(t,"aria-invalid",r.n=d),u!==r.s&&h(t,"aria-describedby",r.s=u),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=Wn();return v(t,()=>e.config.placeholder),c.createRenderEffect(()=>h(t,"id",`${e.config.id}-description`)),t})()]}})};E(["input"]);var Yn=w("<fieldset class=echo-input-options role=group>"),_n=w("<label class=echo-input-option><input type=checkbox><span>");const Hn=e=>{const{handleCheckboxChange:n,getCheckboxValue:t}=te(e.onChange),r=()=>t(e.value),o=()=>r().length>0;return c.createComponent(ne,{get label(){return e.config.label},get required(){return e.config.required},get children(){var a=Yn();return v(a,c.createComponent(c.For,{get each(){return e.config.options},children:(i,l)=>(()=>{var s=_n(),d=s.firstChild,u=d.nextSibling;return d.addEventListener("change",f=>n(r(),i.value,f.currentTarget.checked)),v(u,()=>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(()=>h(a,"aria-required",e.config.required)),a}})};var Un=w("<fieldset class=echo-input-options role=radiogroup>"),Xn=w("<label class=echo-input-option><input type=radio><span>");const Kn=e=>{const{handleSelectChange:n}=te(e.onChange);return c.createComponent(ne,{get label(){return e.config.label},get required(){return e.config.required},get children(){var t=Un();return v(t,c.createComponent(c.For,{get each(){return e.config.options},children:r=>(()=>{var o=Xn(),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&&h(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(()=>h(t,"aria-required",e.config.required)),t}})};var Gn=w("<div class=echo-select-dropdown role=listbox>"),Zn=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>'),Qn=w("<button type=button class=echo-select-option role=option>");const Jn=e=>{const{handleSelectChange:n}=te(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 O({event:"mousedown",callback:f=>{if(!t()||!o)return;f.composedPath().includes(o)||r(!1)}}),c.createComponent(ne,{get label(){return e.config.label},get required(){return e.config.required},get children(){var f=Zn(),g=f.firstChild,m=g.firstChild,b=g.nextSibling,S=o;typeof S=="function"?R(S,f):o=f,g.$$click=p=>{p.stopPropagation(),d()};var k=a;typeof k=="function"?R(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=Gn();return v(p,c.createComponent(c.For,{get each(){return e.config.options},children:$=>(()=>{var P=Qn();return P.$$click=y=>s($,y),v(P,()=>$.label),c.createRenderEffect(y=>{var B=$.value===e.value,j=$.value===e.value;return B!==y.e&&h(P,"aria-selected",y.e=B),j!==y.t&&h(P,"data-selected",y.t=j),y},{e:void 0,t:void 0}),P})()})),p}}),b);var C=i;return typeof C=="function"?R(C,b):i=b,c.createRenderEffect(p=>{var $=t(),P=!e.value,y=e.config.required,B=t(),j=e.config.required,I=e.config.required;return $!==p.e&&h(g,"data-open",p.e=$),P!==p.t&&h(g,"data-placeholder",p.t=P),y!==p.a&&h(g,"data-required",p.a=y),B!==p.o&&h(g,"aria-expanded",p.o=B),j!==p.i&&h(g,"aria-required",p.i=j),I!==p.n&&(b.required=p.n=I),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 er=w("<input type=text class=echo-input-field>");const tr=e=>{const{handleTextChange:n}=te(e.onChange);return c.createComponent(ne,{get label(){return e.config.label},get required(){return e.config.required},get children(){var t=er();return N(t,"input",n,!0),c.createRenderEffect(r=>{var o=e.config.placeholder,a=e.config.required;return o!==r.e&&h(t,"placeholder",r.e=o),a!==r.t&&(t.required=r.t=a),r},{e:void 0,t:void 0}),c.createRenderEffect(()=>t.value=e.value===void 0?"":e.value),t}})};E(["input"]);var nr=w("<div class=echo-input-error>Invalid input type"),rr=w("<div class=echo-input-error>Unsupported input type: ");const ar=e=>c.createComponent(c.Show,{get when(){return e.config.type},keyed:!0,get fallback(){return nr()},get children(){return c.createComponent(c.Switch,{get fallback(){return(()=>{var n=rr();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(tr,{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==="textarea"},get children(){return c.createComponent(We,{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(Kn,{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(Jn,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}})]}})}}),or=()=>{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}},ir=()=>({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}),cr=()=>{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}},sr=()=>({timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,localDateTime:new Date().toISOString()}),lr=()=>({userAgent:navigator.userAgent,browserInfo:ir(),networkInfo:or(),locationInfo:cr(),timeInfo:sr(),console:Et()});var dr=w("<fieldset class=echo-input-options><legend class=visually-hidden>Additional Information"),ur=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><legend class=visually-hidden>Feedback Message');const hr=()=>{const e=x(),n=async o=>{o.preventDefault();const a=await Dt(),i={message:e.feedback.state.message,screenshot:a,metadata:lr(),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=ur(),a=o.firstChild,i=a.firstChild,l=i.firstChild,s=l.nextSibling,d=i.nextSibling;return d.firstChild,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(Zt,{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(le,{size:20})}}),null),v(d,c.createComponent(We,{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:u=>e.feedback.setState({message:u})}),null),v(a,c.createComponent(c.Show,{get when(){var u;return(u=e.widget.state.customInputs)==null?void 0:u.length},get children(){var u=dr();return u.firstChild,v(u,c.createComponent(c.For,{get each(){return e.widget.state.customInputs},children:f=>c.createComponent(ar,{config:f,get value(){return e.feedback.state.customInputValues[f.id]},onChange:g=>e.feedback.setState({customInputValues:{...e.feedback.state.customInputValues,[f.id]:g}})})}),null),u}}),null),v(a,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}}),null),c.createRenderEffect(u=>{var f=e.feedback.state.isMinimized,g=e.feedback.state.isMinimized?"pointer":"default",m=!e.feedback.state.isMinimized;return f!==u.e&&h(o,"data-minimized",u.e=f),g!==u.t&&((u.t=g)!=null?o.style.setProperty("cursor",g):o.style.removeProperty("cursor")),m!==u.a&&h(o,"aria-expanded",u.a=m),u},{e:void 0,t:void 0,a:void 0}),o})()};E(["click"]);var fr=w("<style>"),gr=w("<div class=echo-launcher>"),mr=w("<dialog class=echo-overlay>"),vr=w("<div class=echo-root>");const wr=e=>c.createComponent(dt,{useShadow:!0,get mount(){return document.body},get children(){return c.createComponent(Vt,c.mergeProps(e,{get children(){return c.createComponent(xr,{get children(){return[c.createComponent(br,{get primaryColor(){return e.primaryColor}}),c.createComponent(pr,{})]}})}}))}}),br=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: ${kt(e.primaryColor)};
7
7
  }
8
- `;t(r)}),(()=>{var r=fr();return v(r,Yt,null),v(r,n,null),r})()},pr=()=>{const e=x();return c.createEffect(()=>{}),[(()=>{var n=gr();return v(n,c.createComponent($n,{}),null),v(n,c.createComponent(Mn,{}),null),v(n,c.createComponent(zn,{}),null),c.createRenderEffect(()=>h(n,"data-hidden",e.widget.state.isOpen)),n})(),c.createComponent(yr,{get children(){return[c.createComponent(hr,{}),c.createComponent(gn,{}),c.createComponent(jn,{})]}})]},yr=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=mr();return a.addEventListener("close",()=>r.widget.setState({isOpen:!1})),R(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&&h(a,"data-hidden",i.a=d),i},{e:void 0,t:void 0,a:void 0}),a})()},xr=e=>{const n=x();return Wt({onUrlChange:t=>n.methods.handlePageChange(t)}),c.onMount(()=>{Ct(),Ot(t=>{if(n.widget.state.isOpen&&t.type==="keydown")switch(t.key){case"Escape":t.stopImmediatePropagation();break}})}),c.onCleanup(()=>{St(),It()}),(()=>{var t=vr();return v(t,()=>e.children),c.createRenderEffect(()=>h(t,"data-drawing",n.drawing.state.isDrawing)),t})()},kr={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 le=null;function Cr(e){le&&(console.warn("Echo widget is already initialized. Cleaning up previous instance..."),le());try{Ft(e);const{position:n="bottom-right",primaryColor:t="#6227dc",onSubmit:r,textConfig:o={},customInputs:a=[]}=e,i=Ee(kr,o),l=document.createElement("div");l.id="echo-container",document.body.appendChild(l);const s=tt(()=>c.createComponent(wr,{position:n,primaryColor:t,textConfig:i,onSubmit:r,customInputs:a}),l),d=()=>{s(),l.remove(),le=null};return window.addEventListener("unload",d,{once:!0}),le=d,d}catch(n){throw console.error("Echo initialization failed:",n),n}}D.initEcho=Cr,Object.defineProperty(D,Symbol.toStringTag,{value:"Module"})});
8
+ `;t(r)}),(()=>{var r=fr();return v(r,Yt,null),v(r,n,null),r})()},pr=()=>{const e=x();return c.createEffect(()=>{}),[(()=>{var n=gr();return v(n,c.createComponent($n,{}),null),v(n,c.createComponent(Mn,{}),null),v(n,c.createComponent(zn,{}),null),c.createRenderEffect(()=>h(n,"data-hidden",e.widget.state.isOpen)),n})(),c.createComponent(yr,{get children(){return[c.createComponent(hr,{}),c.createComponent(gn,{}),c.createComponent(jn,{})]}})]},yr=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=mr();return a.addEventListener("close",()=>r.widget.setState({isOpen:!1})),R(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&&h(a,"data-hidden",i.a=d),i},{e:void 0,t:void 0,a:void 0}),a})()},xr=e=>{const n=x();return Wt({onUrlChange:t=>n.methods.handlePageChange(t)}),c.onMount(()=>{Ct(),Ot(t=>{if(n.widget.state.isOpen&&t.type==="keydown")switch(t.key){case"Escape":t.stopImmediatePropagation();break}})}),c.onCleanup(()=>{St(),It()}),(()=>{var t=vr();return v(t,()=>e.children),c.createRenderEffect(()=>h(t,"data-drawing",n.drawing.state.isDrawing)),t})()},kr={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 de=null;function Cr(e){de&&(console.warn("Echo widget is already initialized. Cleaning up previous instance..."),de());try{Ft(e);const{position:n="bottom-right",primaryColor:t="#6227dc",onSubmit:r,textConfig:o={},customInputs:a=[]}=e,i=Ee(kr,o),l=document.createElement("div");l.id="echo-container",document.body.appendChild(l);const s=tt(()=>c.createComponent(wr,{position:n,primaryColor:t,textConfig:i,onSubmit:r,customInputs:a}),l),d=()=>{s(),l.remove(),de=null};return window.addEventListener("unload",d,{once:!0}),de=d,d}catch(n){throw console.error("Echo initialization failed:",n),n}}D.initEcho=Cr,Object.defineProperty(D,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.30",
4
+ "version": "0.0.31",
5
5
  "type": "module",
6
6
  "author": "neumie@neumie.dev",
7
7
  "keywords": [