@contember/echo 0.0.29 → 0.0.30

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,6 +1,6 @@
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 S, 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 g, useContext as ut, For as _, Show as D, mergeProps as ge, Switch as ht, Match as te } from "solid-js";
2
- import gt from "html2canvas";
3
- const ft = [
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";
2
+ import ft from "html2canvas";
3
+ const gt = [
4
4
  "allowfullscreen",
5
5
  "async",
6
6
  "autofocus",
@@ -34,7 +34,7 @@ const ft = [
34
34
  "isMap",
35
35
  "noModule",
36
36
  "playsInline",
37
- ...ft
37
+ ...gt
38
38
  ]), vt = /* @__PURE__ */ new Set([
39
39
  "innerHTML",
40
40
  "textContent",
@@ -123,10 +123,10 @@ function xt(e, n, t) {
123
123
  const d = c.get(n[i]);
124
124
  if (d != null)
125
125
  if (l < d && d < o) {
126
- let h = i, f = 1, m;
127
- for (; ++h < a && h < o && !((m = c.get(n[h])) == null || m !== d + f); )
128
- f++;
129
- if (f > d - l) {
126
+ let h = i, g = 1, m;
127
+ for (; ++h < a && h < o && !((m = c.get(n[h])) == null || m !== d + g); )
128
+ g++;
129
+ if (g > d - l) {
130
130
  const y = n[i];
131
131
  for (; l < d; ) e.insertBefore(t[l++], y);
132
132
  } else e.replaceChild(t[l++], n[i++]);
@@ -160,13 +160,13 @@ function T(e, n = window.document) {
160
160
  }
161
161
  }
162
162
  function u(e, n, t) {
163
- le(e) || (t == null ? e.removeAttribute(n) : e.setAttribute(n, t));
163
+ ce(e) || (t == null ? e.removeAttribute(n) : e.setAttribute(n, t));
164
164
  }
165
165
  function St(e, n, t) {
166
- le(e) || (t ? e.setAttribute(n, "") : e.removeAttribute(n));
166
+ ce(e) || (t ? e.setAttribute(n, "") : e.removeAttribute(n));
167
167
  }
168
168
  function Re(e, n) {
169
- le(e) || (n == null ? e.removeAttribute("class") : e.className = n);
169
+ ce(e) || (n == null ? e.removeAttribute("class") : e.className = n);
170
170
  }
171
171
  function U(e, n, t, r) {
172
172
  if (r)
@@ -204,15 +204,15 @@ function F(e, n, t) {
204
204
  function $t(e, n = {}, t, r) {
205
205
  const a = {};
206
206
  return b(
207
- () => a.children = oe(e, n.children, a.children)
207
+ () => a.children = ae(e, n.children, a.children)
208
208
  ), b(() => typeof n.ref == "function" && V(n.ref, e)), b(() => Et(e, n, t, !0, a, !0)), a;
209
209
  }
210
210
  function V(e, n, t) {
211
211
  return Ye(() => e(n, t));
212
212
  }
213
213
  function v(e, n, t, r) {
214
- if (t !== void 0 && !r && (r = []), typeof n != "function") return oe(e, n, r, t);
215
- b((a) => oe(e, n(), a, t), r);
214
+ if (t !== void 0 && !r && (r = []), typeof n != "function") return ae(e, n, r, t);
215
+ b((a) => ae(e, n(), a, t), r);
216
216
  }
217
217
  function Et(e, n, t, r, a = {}, o = !1) {
218
218
  n || (n = {});
@@ -228,7 +228,7 @@ function Et(e, n, t, r, a = {}, o = !1) {
228
228
  a[i] = Ne(e, i, l, a[i], t, o, n);
229
229
  }
230
230
  }
231
- function le(e) {
231
+ function ce(e) {
232
232
  return !!L.context && !L.done && (!e || e.isConnected);
233
233
  }
234
234
  function Pt(e) {
@@ -247,18 +247,18 @@ function Ne(e, n, t, r, a, o, i) {
247
247
  if (n === "ref")
248
248
  o || t(e);
249
249
  else if (n.slice(0, 3) === "on:") {
250
- const f = n.slice(3);
251
- r && e.removeEventListener(f, r, typeof r != "function" && r), t && e.addEventListener(f, t, typeof t != "function" && t);
250
+ const g = n.slice(3);
251
+ r && e.removeEventListener(g, r, typeof r != "function" && r), t && e.addEventListener(g, t, typeof t != "function" && t);
252
252
  } else if (n.slice(0, 10) === "oncapture:") {
253
- const f = n.slice(10);
254
- r && e.removeEventListener(f, r, !0), t && e.addEventListener(f, t, !0);
253
+ const g = n.slice(10);
254
+ r && e.removeEventListener(g, r, !0), t && e.addEventListener(g, t, !0);
255
255
  } else if (n.slice(0, 2) === "on") {
256
- const f = n.slice(2).toLowerCase(), m = pt.has(f);
256
+ const g = n.slice(2).toLowerCase(), m = pt.has(g);
257
257
  if (!m && r) {
258
258
  const y = Array.isArray(r) ? r[0] : r;
259
- e.removeEventListener(f, y);
259
+ e.removeEventListener(g, y);
260
260
  }
261
- (m || t) && (U(e, f, t, m), m && T([f]));
261
+ (m || t) && (U(e, g, t, m), m && T([g]));
262
262
  } else if (n.slice(0, 5) === "attr:")
263
263
  u(e, n.slice(5), t);
264
264
  else if (n.slice(0, 5) === "bool:")
@@ -266,7 +266,7 @@ function Ne(e, n, t, r, a, o, i) {
266
266
  else if ((h = n.slice(0, 5) === "prop:") || (c = vt.has(n)) || (d = yt(n, e.tagName)) || (s = mt.has(n)) || (l = e.nodeName.includes("-") || "is" in i)) {
267
267
  if (h)
268
268
  n = n.slice(5), s = !0;
269
- else if (le(e)) return t;
269
+ else if (ce(e)) return t;
270
270
  n === "class" || n === "className" ? Re(e, t) : l && !s && !c ? e[Pt(n)] = t : e[d || n] = t;
271
271
  } else
272
272
  u(e, bt[n] || n, t);
@@ -308,8 +308,8 @@ function zt(e) {
308
308
  } else l();
309
309
  o(r);
310
310
  }
311
- function oe(e, n, t, r, a) {
312
- const o = le(e);
311
+ function ae(e, n, t, r, a) {
312
+ const o = ce(e);
313
313
  if (o) {
314
314
  !t && (t = [...e.childNodes]);
315
315
  let s = [];
@@ -338,12 +338,12 @@ function oe(e, n, t, r, a) {
338
338
  return b(() => {
339
339
  let s = n();
340
340
  for (; typeof s == "function"; ) s = s();
341
- t = oe(e, s, t, r);
341
+ t = ae(e, s, t, r);
342
342
  }), () => t;
343
343
  if (Array.isArray(n)) {
344
344
  const s = [], c = t && Array.isArray(t);
345
345
  if ($e(s, n, t, a))
346
- return b(() => t = oe(e, s, t, r, !0)), () => t;
346
+ return b(() => t = ae(e, s, t, r, !0)), () => t;
347
347
  if (o) {
348
348
  if (!s.length) return t;
349
349
  if (r === void 0) return t = [...e.childNodes];
@@ -420,7 +420,7 @@ function Ot(e) {
420
420
  let o, i = !!L.context;
421
421
  return Y(
422
422
  () => {
423
- i && (De().user = i = !1), o || (o = lt(a, () => S(() => e.children)));
423
+ i && (De().user = i = !1), o || (o = lt(a, () => k(() => e.children)));
424
424
  const l = r();
425
425
  if (l instanceof HTMLHeadElement) {
426
426
  const [s, c] = A(!1), d = () => c(!0);
@@ -498,7 +498,7 @@ const Mt = 5e3, At = (e) => {
498
498
  } catch {
499
499
  return n;
500
500
  }
501
- }, ae = (e, n) => {
501
+ }, ie = (e, n) => {
502
502
  try {
503
503
  localStorage.setItem(Je(e), JSON.stringify(n));
504
504
  } catch (t) {
@@ -520,7 +520,7 @@ const Mt = 5e3, At = (e) => {
520
520
  drawing: {
521
521
  shapes: n.drawing.shapes
522
522
  }
523
- }), ae(K, r), Xe();
523
+ }), ie(K, r), Xe();
524
524
  } catch (t) {
525
525
  console.warn("Failed to save page state:", t);
526
526
  }
@@ -534,7 +534,7 @@ const Mt = 5e3, At = (e) => {
534
534
  }, Ze = (e) => {
535
535
  try {
536
536
  const n = G(K, {});
537
- delete n[e], ae(K, n), Xe();
537
+ delete n[e], ie(K, n), Xe();
538
538
  } catch (n) {
539
539
  console.error("Failed to clear page state:", n);
540
540
  }
@@ -574,33 +574,33 @@ function tt(e) {
574
574
  }
575
575
  return n;
576
576
  }
577
- function fe(e) {
577
+ function me(e) {
578
578
  let n;
579
579
  return e != null && typeof e == "object" && (e[R] || !(n = Object.getPrototypeOf(e)) || n === Object.prototype || Array.isArray(e));
580
580
  }
581
- function ie(e, n = /* @__PURE__ */ new Set()) {
581
+ function se(e, n = /* @__PURE__ */ new Set()) {
582
582
  let t, r, a, o;
583
583
  if (t = e != null && e[Pe]) return t;
584
- if (!fe(e) || n.has(e)) return e;
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);
587
587
  for (let i = 0, l = e.length; i < l; i++)
588
- a = e[i], (r = ie(a, n)) !== a && (e[i] = r);
588
+ a = e[i], (r = se(a, n)) !== a && (e[i] = r);
589
589
  } else {
590
590
  Object.isFrozen(e) ? e = Object.assign({}, e) : n.add(e);
591
591
  const i = Object.keys(e), l = Object.getOwnPropertyDescriptors(e);
592
592
  for (let s = 0, c = i.length; s < c; s++)
593
- o = i[s], !l[o].get && (a = e[o], (r = ie(a, n)) !== a && (e[o] = r));
593
+ o = i[s], !l[o].get && (a = e[o], (r = se(a, n)) !== a && (e[o] = r));
594
594
  }
595
595
  return e;
596
596
  }
597
- function me(e, n) {
597
+ function ve(e, n) {
598
598
  let t = e[n];
599
599
  return t || Object.defineProperty(e, n, {
600
600
  value: t = /* @__PURE__ */ Object.create(null)
601
601
  }), t;
602
602
  }
603
- function se(e, n, t) {
603
+ function le(e, n, t) {
604
604
  if (e[n]) return e[n];
605
605
  const [r, a] = A(t, {
606
606
  equals: !1,
@@ -613,7 +613,7 @@ function Nt(e, n) {
613
613
  return !t || t.get || !t.configurable || n === R || n === J || (delete t.value, delete t.writable, t.get = () => e[R][n]), t;
614
614
  }
615
615
  function nt(e) {
616
- Ce() && se(me(e, J), et)();
616
+ Ce() && le(ve(e, J), et)();
617
617
  }
618
618
  function qt(e) {
619
619
  return nt(e), Reflect.ownKeys(e);
@@ -624,17 +624,17 @@ const Vt = {
624
624
  if (n === R) return t;
625
625
  if (n === Fe)
626
626
  return nt(e), t;
627
- const r = me(e, J), a = r[n];
627
+ const r = ve(e, J), a = r[n];
628
628
  let o = a ? a() : e[n];
629
629
  if (n === J || 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 = se(r, n, o)());
632
+ Ce() && (typeof o != "function" || e.hasOwnProperty(n)) && !(i && i.get) && (o = le(r, n, o)());
633
633
  }
634
- return fe(o) ? tt(o) : o;
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() && se(me(e, j), n)(), n in e);
637
+ return n === Pe || n === R || n === Fe || n === J || n === j || n === "__proto__" ? !0 : (Ce() && le(ve(e, j), n)(), n in e);
638
638
  },
639
639
  set() {
640
640
  return !0;
@@ -645,14 +645,14 @@ const Vt = {
645
645
  ownKeys: qt,
646
646
  getOwnPropertyDescriptor: Nt
647
647
  };
648
- function ve(e, n, t, r = !1) {
648
+ 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 = me(e, J), l;
653
- if ((l = se(i, n, a)) && l.$(() => t), Array.isArray(e) && e.length !== o) {
652
+ let i = ve(e, J), l;
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
- (l = se(i, "length", o)) && l.$(e.length);
655
+ (l = le(i, "length", o)) && l.$(e.length);
656
656
  }
657
657
  (l = i[et]) && l.$();
658
658
  }
@@ -660,18 +660,18 @@ function rt(e, n) {
660
660
  const t = Object.keys(n);
661
661
  for (let r = 0; r < t.length; r += 1) {
662
662
  const a = t[r];
663
- ve(e, a, n[a]);
663
+ be(e, a, n[a]);
664
664
  }
665
665
  }
666
666
  function Bt(e, n) {
667
- if (typeof n == "function" && (n = n(e)), n = ie(n), Array.isArray(n)) {
667
+ if (typeof n == "function" && (n = n(e)), n = se(n), Array.isArray(n)) {
668
668
  if (e === n) return;
669
669
  let t = 0, r = n.length;
670
670
  for (; t < r; t++) {
671
671
  const a = n[t];
672
- e[t] !== a && ve(e, t, a);
672
+ e[t] !== a && be(e, t, a);
673
673
  }
674
- ve(e, "length", r);
674
+ be(e, "length", r);
675
675
  } else rt(e, n);
676
676
  }
677
677
  function re(e, n, t = []) {
@@ -699,10 +699,10 @@ function re(e, n, t = []) {
699
699
  a = e[r], t = [r].concat(t);
700
700
  }
701
701
  let o = n[0];
702
- typeof o == "function" && (o = o(a, t), o === a) || r === void 0 && o == null || (o = ie(o), r === void 0 || fe(a) && fe(o) && !Array.isArray(o) ? rt(a, o) : ve(e, r, o));
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
704
  function Te(...[e, n]) {
705
- const t = ie(e || {}), r = Array.isArray(t), a = tt(t);
705
+ const t = se(e || {}), r = Array.isArray(t), a = tt(t);
706
706
  function o(...i) {
707
707
  ct(() => {
708
708
  r && i.length === 1 ? Bt(t, i[0]) : re(t, i);
@@ -794,7 +794,7 @@ Location: ${t}:${r}:${a}`,
794
794
  }, Yt = () => [...N], Rt = () => {
795
795
  var e;
796
796
  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);
797
- }, ue = (e, { useClientCoords: n = !1 } = {}) => {
797
+ }, he = (e, { useClientCoords: n = !1 } = {}) => {
798
798
  const r = typeof TouchEvent < "u" && e instanceof TouchEvent ? e.touches[0] : null;
799
799
  return {
800
800
  x: r ? n ? r.clientX : r.pageX : n ? e.clientX : e.pageX,
@@ -812,23 +812,29 @@ 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, be = window.EventTarget.prototype.removeEventListener;
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
816
  let we = !1;
817
817
  const Gt = (e, n, t, r) => {
818
818
  Ie.call(e, n, t, r);
819
819
  }, Xt = (e, n, t, r) => {
820
- be.call(e, n, t, r);
820
+ oe.call(e, n, t, r);
821
821
  }, ne = /* @__PURE__ */ new WeakMap(), Jt = (e) => {
822
822
  we || (we = !0, window.EventTarget.prototype.addEventListener = function(n, t, r) {
823
823
  const a = Qt(t, e);
824
- ne.has(this) || ne.set(this, /* @__PURE__ */ new WeakMap()), ne.get(this).set(t, a), Ie.call(this, n, a, r);
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);
825
827
  }, window.EventTarget.prototype.removeEventListener = function(n, t, r) {
826
- var o, i;
827
- const a = (o = ne.get(this)) == null ? void 0 : o.get(t);
828
- a ? (be.call(this, n, a, r), (i = ne.get(this)) == null || i.delete(t)) : be.call(this, n, t, r);
828
+ const a = ne.get(this);
829
+ if (!a) {
830
+ oe.call(this, n, t, r);
831
+ return;
832
+ }
833
+ 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);
829
835
  });
830
836
  }, Zt = () => {
831
- we && (window.EventTarget.prototype.addEventListener = Ie, window.EventTarget.prototype.removeEventListener = be, we = !1);
837
+ we && (window.EventTarget.prototype.addEventListener = Ie, window.EventTarget.prototype.removeEventListener = oe, we = !1);
832
838
  }, M = (e) => {
833
839
  const { event: n, callback: t, onMount: r, onCleanup: a, useOriginal: o = !0 } = e;
834
840
  ye(() => {
@@ -850,7 +856,7 @@ const Gt = (e, n, t, r) => {
850
856
  try {
851
857
  const n = document.createElement("style");
852
858
  document.head.appendChild(n), (e = n.sheet) == null || e.insertRule("body > div:last-child img { display: inline-block; }");
853
- const t = await gt(document.body, {
859
+ const t = await ft(document.body, {
854
860
  logging: !1,
855
861
  useCORS: !0,
856
862
  scale: window.devicePixelRatio,
@@ -900,8 +906,8 @@ const Gt = (e, n, t, r) => {
900
906
  cursor: We("rectangle", e.primaryColor)
901
907
  }), o = (c, d = !1) => {
902
908
  if (c.selectedTool || c.selectedColor) {
903
- const h = c.selectedTool || r.selectedTool, f = c.selectedColor || r.selectedColor;
904
- c.cursor = We(h, f);
909
+ const h = c.selectedTool || r.selectedTool, g = c.selectedColor || r.selectedColor;
910
+ c.cursor = We(h, g);
905
911
  }
906
912
  a(c), t == null || t(c, d);
907
913
  }, i = {
@@ -937,13 +943,13 @@ const Gt = (e, n, t, r) => {
937
943
  if (!h.classList.contains("echo-drawing-layer-mask") && !h.classList.contains("echo-shape"))
938
944
  return;
939
945
  }
940
- const d = ue(c);
946
+ const d = he(c);
941
947
  if (c.target instanceof SVGElement && c.target.classList.contains("echo-shape")) {
942
948
  const h = c.target.dataset.shapeId;
943
949
  if (h && r.selectedShapeId === h) {
944
- const f = r.shapes.find((m) => m.id === h);
945
- if (f) {
946
- i.startDrag(d), i.updateDragOffset(f, d);
950
+ const g = r.shapes.find((m) => m.id === h);
951
+ if (g) {
952
+ i.startDrag(d), i.updateDragOffset(g, d);
947
953
  return;
948
954
  }
949
955
  }
@@ -951,16 +957,16 @@ const Gt = (e, n, t, r) => {
951
957
  i.setInitialClick(d);
952
958
  },
953
959
  handleMove: (c) => {
954
- const d = ue(c, { useClientCoords: !0 }), h = ue(c);
960
+ const d = he(c, { useClientCoords: !0 }), h = he(c);
955
961
  if (o({ mousePosition: d }), r.isDragging && r.selectedShapeId && r.dragStartPos && r.shapes.find((m) => m.id === r.selectedShapeId)) {
956
- const m = h.x - r.dragStartPos.x, y = h.y - r.dragStartPos.y, x = r.shapes.map((C) => C.id === r.selectedShapeId ? {
957
- ...C,
958
- points: C.points.map(($) => ({
959
- x: $.x + m,
960
- y: $.y + y
962
+ const m = h.x - r.dragStartPos.x, y = h.y - r.dragStartPos.y, E = r.shapes.map((S) => S.id === r.selectedShapeId ? {
963
+ ...S,
964
+ points: S.points.map((C) => ({
965
+ x: C.x + m,
966
+ y: C.y + y
961
967
  }))
962
- } : C);
963
- o({ shapes: x }), i.startDrag(h);
968
+ } : S);
969
+ o({ shapes: E }), i.startDrag(h);
964
970
  return;
965
971
  }
966
972
  if (r.initialClickPos && !r.isDrawing) {
@@ -975,10 +981,10 @@ const Gt = (e, n, t, r) => {
975
981
  return;
976
982
  }
977
983
  if (r.initialClickPos && !r.isDrawing) {
978
- const d = ue(c);
984
+ const d = he(c);
979
985
  if (Ve(r.initialClickPos, d) < Be && c.target instanceof SVGElement && c.target.classList.contains("echo-shape")) {
980
- const f = c.target.dataset.shapeId;
981
- f && o({ selectedShapeId: f });
986
+ const g = c.target.dataset.shapeId;
987
+ g && o({ selectedShapeId: g });
982
988
  }
983
989
  }
984
990
  i.setInitialClick(null), i.finishDrawing();
@@ -1024,7 +1030,7 @@ const Gt = (e, n, t, r) => {
1024
1030
  }, an = (e, n, t, r) => {
1025
1031
  var h;
1026
1032
  const a = (r == null ? void 0 : r.reduce(
1027
- (f, m) => (f[m.id] = m.defaultValue ?? (m.type === "checkbox" ? [] : ""), f),
1033
+ (g, m) => (g[m.id] = m.defaultValue ?? (m.type === "checkbox" ? [] : ""), g),
1028
1034
  {}
1029
1035
  )) || {}, o = ze(n), i = (o == null ? void 0 : o.feedback.customInputValues) || {}, l = {
1030
1036
  ...a,
@@ -1039,9 +1045,9 @@ const Gt = (e, n, t, r) => {
1039
1045
  });
1040
1046
  return {
1041
1047
  state: s,
1042
- setState: (f, m = !1) => {
1043
- const y = "isCapturing" in f || "isMinimized" in f || m;
1044
- !y && !s.hasUserInteracted && c({ hasUserInteracted: !0 }), c(f), (s.hasUserInteracted || y) && (t == null || t(f, m));
1048
+ setState: (g, m = !1) => {
1049
+ const y = "isCapturing" in g || "isMinimized" in g || m;
1050
+ !y && !s.hasUserInteracted && c({ hasUserInteracted: !0 }), c(g), (s.hasUserInteracted || y) && (t == null || t(g, m));
1045
1051
  }
1046
1052
  };
1047
1053
  }, sn = (e, n) => {
@@ -1171,13 +1177,13 @@ const Gt = (e, n, t, r) => {
1171
1177
  position: e.position,
1172
1178
  customInputs: e.customInputs
1173
1179
  });
1174
- return g(at.Provider, {
1180
+ return f(at.Provider, {
1175
1181
  value: n,
1176
1182
  get children() {
1177
1183
  return e.children;
1178
1184
  }
1179
1185
  });
1180
- }, E = () => {
1186
+ }, $ = () => {
1181
1187
  const e = ut(at);
1182
1188
  if (!e)
1183
1189
  throw new Error("useEchoStore must be used within EchoProvider");
@@ -1222,8 +1228,8 @@ const Gt = (e, n, t, r) => {
1222
1228
  },
1223
1229
  callback: t
1224
1230
  });
1225
- }, hn = `*,*: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)}.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),left var(--duration-slower) var(--ease-smooth),opacity var(--duration-slow) var(--ease-in-out)}.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}`;
1226
- var gn = /* @__PURE__ */ 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>'), fn = /* @__PURE__ */ w("<button class=echo-color-swatch-button role=option>");
1231
+ }, hn = `*,*: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}`;
1232
+ var fn = /* @__PURE__ */ 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>'), gn = /* @__PURE__ */ w("<button class=echo-color-swatch-button role=option>");
1227
1233
  const mn = [
1228
1234
  "#ff6b6b",
1229
1235
  // Soft Red
@@ -1251,15 +1257,15 @@ const mn = [
1251
1257
  "#ffa94d": "Soft Orange",
1252
1258
  "#e599f7": "Soft Pink"
1253
1259
  }, Se = (e) => vn[e] || "Primary", bn = () => {
1254
- const e = E();
1260
+ const e = $();
1255
1261
  return (() => {
1256
- var n = gn(), t = n.firstChild, r = t.nextSibling, a = r.firstChild;
1257
- return u(t, "aria-expanded", !1), v(a, g(_, {
1262
+ var n = fn(), t = n.firstChild, r = t.nextSibling, a = r.firstChild;
1263
+ return u(t, "aria-expanded", !1), v(a, f(_, {
1258
1264
  get each() {
1259
1265
  return [e.widget.state.primaryColor, ...mn];
1260
1266
  },
1261
1267
  children: (o) => (() => {
1262
- var i = fn();
1268
+ var i = gn();
1263
1269
  return i.$$click = () => e.drawing.setState({
1264
1270
  selectedColor: o
1265
1271
  }), o != null ? i.style.setProperty("background-color", o) : i.style.removeProperty("background-color"), b((l) => {
@@ -1413,10 +1419,10 @@ const Dn = {
1413
1419
  rectangle: Sn,
1414
1420
  path: $n
1415
1421
  }, Fn = () => {
1416
- const e = E(), n = Object.values(B);
1422
+ const e = $(), n = Object.values(B);
1417
1423
  return (() => {
1418
1424
  var t = Mn(), r = t.firstChild;
1419
- return v(t, g(_, {
1425
+ return v(t, f(_, {
1420
1426
  each: n,
1421
1427
  children: (a) => {
1422
1428
  const o = Dn[a.id];
@@ -1424,7 +1430,7 @@ const Dn = {
1424
1430
  var i = An();
1425
1431
  return i.$$click = () => e.drawing.setState({
1426
1432
  selectedTool: a.id
1427
- }), v(i, g(o, {
1433
+ }), v(i, f(o, {
1428
1434
  class: "echo-drawing-toolbar-icon",
1429
1435
  "aria-hidden": "true"
1430
1436
  })), b((l) => {
@@ -1438,9 +1444,9 @@ const Dn = {
1438
1444
  }), i;
1439
1445
  })();
1440
1446
  }
1441
- }), r), v(t, g(bn, {}), r), r.$$click = () => e.drawing.setState({
1447
+ }), r), v(t, f(bn, {}), r), r.$$click = () => e.drawing.setState({
1442
1448
  shapes: []
1443
- }, !0), v(r, g(it, {
1449
+ }, !0), v(r, f(it, {
1444
1450
  class: "echo-drawing-toolbar-icon",
1445
1451
  "aria-hidden": "true"
1446
1452
  })), t;
@@ -1449,8 +1455,8 @@ const Dn = {
1449
1455
  T(["click"]);
1450
1456
  var Ln = /* @__PURE__ */ w("<div class=echo-drawing-tooltip data-hide-when-drawing=true>");
1451
1457
  const jn = () => {
1452
- const e = E(), n = S(() => e.drawing.state.showTooltip && e.drawing.state.mousePosition.y && e.drawing.state.mousePosition.x && e.widget.state.isOpen && !Rt());
1453
- return g(D, {
1458
+ const e = $(), n = k(() => e.drawing.state.showTooltip && e.drawing.state.mousePosition.y && e.drawing.state.mousePosition.x && e.widget.state.isOpen && !Rt());
1459
+ return f(D, {
1454
1460
  get when() {
1455
1461
  return n();
1456
1462
  },
@@ -1496,7 +1502,7 @@ const Vn = (e) => (() => {
1496
1502
  })();
1497
1503
  var Bn = /* @__PURE__ */ w("<div class=echo-stored-feedback-empty>No unsubmitted feedback"), Wn = /* @__PURE__ */ w("<div class=echo-stored-feedback><div class=echo-stored-feedback-header><h3>Unsubmitted Feedback</h3></div><div class=echo-stored-feedback-list>"), _n = /* @__PURE__ */ 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>");
1498
1504
  const Hn = () => {
1499
- const e = E();
1505
+ const e = $();
1500
1506
  let n;
1501
1507
  const [t, r] = A(xe()), [a, o] = A(window.location.pathname), i = (m) => {
1502
1508
  m.key === "Escape" && e.widget.state.isStoredFeedbackOpen && e.widget.setState({
@@ -1538,8 +1544,8 @@ const Hn = () => {
1538
1544
  callback: l
1539
1545
  });
1540
1546
  const d = (m, y) => {
1541
- const x = y ? `${m}${y}` : m;
1542
- window.location.href = x, e.widget.setState({
1547
+ const E = y ? `${m}${y}` : m;
1548
+ window.location.href = E, e.widget.setState({
1543
1549
  isStoredFeedbackOpen: !1
1544
1550
  });
1545
1551
  }, h = (m) => {
@@ -1548,65 +1554,65 @@ const Hn = () => {
1548
1554
  r(y), e.widget.setState({
1549
1555
  pagesCount: y.length
1550
1556
  });
1551
- }, f = (m) => {
1557
+ }, g = (m) => {
1552
1558
  if (m === "/") return "/";
1553
1559
  const y = m.split("/");
1554
1560
  return y.length <= 4 ? m : `/${y[1]}/.../${y[y.length - 1]}`;
1555
1561
  };
1556
- return g(D, {
1562
+ return f(D, {
1557
1563
  get when() {
1558
1564
  return e.widget.state.isStoredFeedbackOpen;
1559
1565
  },
1560
1566
  get children() {
1561
1567
  var m = Wn(), y = m.firstChild;
1562
1568
  y.firstChild;
1563
- var x = y.nextSibling, C = n;
1564
- return typeof C == "function" ? V(C, m) : n = m, v(y, g(W, {
1569
+ var E = y.nextSibling, S = n;
1570
+ return typeof S == "function" ? V(S, m) : n = m, v(y, f(W, {
1565
1571
  variant: "secondary",
1566
1572
  size: "sm",
1567
1573
  onClick: () => e.widget.setState({
1568
1574
  isStoredFeedbackOpen: !1
1569
1575
  }),
1570
1576
  get children() {
1571
- return g(pe, {
1577
+ return f(pe, {
1572
1578
  size: 20
1573
1579
  });
1574
1580
  }
1575
- }), null), v(x, g(_, {
1581
+ }), null), v(E, f(_, {
1576
1582
  get each() {
1577
1583
  return t();
1578
1584
  },
1579
- children: ($) => {
1580
- const p = S(() => $.path === a());
1585
+ children: (C) => {
1586
+ const p = k(() => C.path === a());
1581
1587
  return (() => {
1582
- var P = _n(), z = P.firstChild, k = z.firstChild, H = k.nextSibling, q = z.nextSibling;
1583
- return v(k, () => f($.path)), v(H, () => $.state.feedback.message), v(q, (() => {
1584
- var I = S(() => !p());
1585
- return () => I() && g(W, {
1588
+ var P = _n(), z = P.firstChild, x = z.firstChild, H = x.nextSibling, q = z.nextSibling;
1589
+ return v(x, () => g(C.path)), v(H, () => C.state.feedback.message), v(q, (() => {
1590
+ var I = k(() => !p());
1591
+ return () => I() && f(W, {
1586
1592
  class: "echo-stored-feedback-link",
1587
1593
  variant: "secondary",
1588
1594
  size: "sm",
1589
- onClick: () => d($.path, $.state.latestQuery),
1595
+ onClick: () => d(C.path, C.state.latestQuery),
1590
1596
  get children() {
1591
- return g(Vn, {});
1597
+ return f(Vn, {});
1592
1598
  }
1593
1599
  });
1594
- })(), null), v(q, g(W, {
1600
+ })(), null), v(q, f(W, {
1595
1601
  class: "echo-stored-feedback-delete",
1596
1602
  variant: "secondary",
1597
1603
  size: "sm",
1598
- onClick: () => h($.path),
1604
+ onClick: () => h(C.path),
1599
1605
  children: "Delete"
1600
1606
  }), null), b((I) => {
1601
- var Me = `echo-stored-feedback-item ${p() ? "echo-stored-feedback-item-current" : ""}`, Ae = $.path;
1602
- return Me !== I.e && Re(P, I.e = Me), Ae !== I.t && u(k, "title", I.t = Ae), I;
1607
+ var Me = `echo-stored-feedback-item ${p() ? "echo-stored-feedback-item-current" : ""}`, Ae = C.path;
1608
+ return Me !== I.e && Re(P, I.e = Me), Ae !== I.t && u(x, "title", I.t = Ae), I;
1603
1609
  }, {
1604
1610
  e: void 0,
1605
1611
  t: void 0
1606
1612
  }), P;
1607
1613
  })();
1608
1614
  }
1609
- }), null), v(x, g(D, {
1615
+ }), null), v(E, f(D, {
1610
1616
  get when() {
1611
1617
  return t().length === 0;
1612
1618
  },
@@ -1619,7 +1625,7 @@ const Hn = () => {
1619
1625
  };
1620
1626
  var Un = /* @__PURE__ */ w('<button class=echo-launcher-button aria-label="Open feedback form"role=button>'), Yn = /* @__PURE__ */ w("<span class=echo-launcher-button-count role=button tabindex=0>");
1621
1627
  const Rn = () => {
1622
- const e = E(), [n, t] = A(!1);
1628
+ const e = $(), [n, t] = A(!1);
1623
1629
  let r;
1624
1630
  const a = () => {
1625
1631
  r && window.clearTimeout(r), r = window.setTimeout(() => {
@@ -1635,7 +1641,7 @@ const Rn = () => {
1635
1641
  isOpen: !e.widget.state.isOpen
1636
1642
  }), e.widget.setState({
1637
1643
  welcomeMessageIsClosing: !0
1638
- }), ae("welcome_message_shown", !0);
1644
+ }), ie("welcome_message_shown", !0);
1639
1645
  };
1640
1646
  Y(() => {
1641
1647
  e.widget.state.isOpen || (t(!1), a()), e.widget.state.isStoredFeedbackOpen && t(!1);
@@ -1647,30 +1653,30 @@ const Rn = () => {
1647
1653
  };
1648
1654
  return [(() => {
1649
1655
  var c = Un();
1650
- return c.addEventListener("pointerleave", i), c.addEventListener("pointerenter", o), c.$$click = l, v(c, g(xn, {
1656
+ return c.addEventListener("pointerleave", i), c.addEventListener("pointerenter", o), c.$$click = l, v(c, f(xn, {
1651
1657
  stroke: "white",
1652
1658
  fill: "#ffffff",
1653
1659
  "aria-hidden": "true"
1654
1660
  }), null), v(c, (() => {
1655
- var d = S(() => e.widget.state.pagesCount > 0);
1661
+ var d = k(() => e.widget.state.pagesCount > 0);
1656
1662
  return () => d() && (() => {
1657
1663
  var h = Yn();
1658
1664
  return h.$$click = s, v(h, () => e.widget.state.pagesCount), b(() => u(h, "aria-label", `View ${e.widget.state.pagesCount} stored feedback items`)), h;
1659
1665
  })();
1660
1666
  })(), null), b((d) => {
1661
- var h = e.widget.state.isOpen, f = n() ? "45px" : "0", m = e.widget.state.isOpen;
1662
- return h !== d.e && u(c, "data-hidden", d.e = h), f !== d.t && ((d.t = f) != null ? c.style.setProperty("left", f) : c.style.removeProperty("left")), m !== d.a && u(c, "aria-expanded", d.a = m), d;
1667
+ var h = e.widget.state.isOpen, g = `translateX(${n() ? "45px" : "0"})`, m = e.widget.state.isOpen;
1668
+ return h !== d.e && u(c, "data-hidden", d.e = h), g !== d.t && ((d.t = g) != null ? c.style.setProperty("transform", g) : c.style.removeProperty("transform")), m !== d.a && u(c, "aria-expanded", d.a = m), d;
1663
1669
  }, {
1664
1670
  e: void 0,
1665
1671
  t: void 0,
1666
1672
  a: void 0
1667
1673
  }), c;
1668
- })(), g(Hn, {})];
1674
+ })(), f(Hn, {})];
1669
1675
  };
1670
1676
  T(["click"]);
1671
1677
  var Kn = /* @__PURE__ */ 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>");
1672
1678
  const Gn = () => {
1673
- const e = E(), n = () => {
1679
+ const e = $(), n = () => {
1674
1680
  e.widget.setState({
1675
1681
  notification: {
1676
1682
  ...e.widget.state.notification,
@@ -1689,7 +1695,7 @@ const Gn = () => {
1689
1695
  };
1690
1696
  return (() => {
1691
1697
  var r = Kn(), a = r.firstChild, o = a.nextSibling, i = o.firstChild, l = i.nextSibling;
1692
- return v(r, g(W, {
1698
+ return v(r, f(W, {
1693
1699
  class: "echo-notification-hide",
1694
1700
  variant: "secondary",
1695
1701
  size: "sm",
@@ -1698,17 +1704,17 @@ const Gn = () => {
1698
1704
  return e.widget.state.text.notification.hideTitle;
1699
1705
  },
1700
1706
  get children() {
1701
- return g(pe, {
1707
+ return f(pe, {
1702
1708
  size: 20
1703
1709
  });
1704
1710
  }
1705
1711
  }), a), v(a, (() => {
1706
- var s = S(() => e.widget.state.notification.type === "success");
1707
- return () => s() ? g(zn, {
1712
+ var s = k(() => e.widget.state.notification.type === "success");
1713
+ return () => s() ? f(zn, {
1708
1714
  size: 32
1709
1715
  }) : (() => {
1710
- var c = S(() => e.widget.state.notification.type === "error");
1711
- return () => c() ? g(In, {
1716
+ var c = k(() => e.widget.state.notification.type === "error");
1717
+ return () => c() ? f(In, {
1712
1718
  size: 32
1713
1719
  }) : null;
1714
1720
  })();
@@ -1727,7 +1733,7 @@ const Gn = () => {
1727
1733
  };
1728
1734
  var Xn = /* @__PURE__ */ w("<div class=echo-shape-actions data-hide-when-drawing=true>");
1729
1735
  const Jn = () => {
1730
- const e = E();
1736
+ const e = $();
1731
1737
  let n;
1732
1738
  const [t, r] = A({
1733
1739
  x: window.scrollX,
@@ -1747,7 +1753,7 @@ const Jn = () => {
1747
1753
  shapes: e.drawing.state.shapes.filter((s) => s.id !== e.drawing.state.selectedShapeId),
1748
1754
  selectedShapeId: null
1749
1755
  });
1750
- }, i = S(() => e.drawing.state.selectedShapeId ? e.drawing.state.shapes.find((s) => s.id === e.drawing.state.selectedShapeId) : null), l = S(() => {
1756
+ }, i = k(() => e.drawing.state.selectedShapeId ? e.drawing.state.shapes.find((s) => s.id === e.drawing.state.selectedShapeId) : null), l = k(() => {
1751
1757
  const s = i(), c = n == null ? void 0 : n.getBoundingClientRect();
1752
1758
  if (!s || !c) return null;
1753
1759
  let d = null;
@@ -1765,51 +1771,50 @@ const Jn = () => {
1765
1771
  };
1766
1772
  else
1767
1773
  return null;
1768
- const h = 8, f = t();
1774
+ const h = 8, g = t();
1769
1775
  return {
1770
- x: Math.max(c.width / 2 + h, Math.min(window.innerWidth - c.width / 2 - h, d.x - f.x)),
1771
- y: Math.max(c.height + h, Math.min(window.innerHeight - h, d.y - f.y))
1776
+ x: Math.max(c.width / 2 + h, Math.min(window.innerWidth - c.width / 2 - h, d.x - g.x)),
1777
+ y: Math.max(c.height + h, Math.min(window.innerHeight - h, d.y - g.y))
1772
1778
  };
1773
1779
  });
1774
1780
  return (() => {
1775
1781
  var s = Xn(), c = n;
1776
- return typeof c == "function" ? V(c, s) : n = s, v(s, g(W, {
1782
+ return typeof c == "function" ? V(c, s) : n = s, s.style.setProperty("top", "0"), s.style.setProperty("left", "0"), v(s, f(W, {
1777
1783
  onClick: o,
1778
1784
  size: "sm",
1779
1785
  variant: "secondary",
1780
1786
  title: "Delete shape",
1781
1787
  get children() {
1782
- return g(it, {
1788
+ return f(it, {
1783
1789
  size: 20
1784
1790
  });
1785
1791
  }
1786
1792
  })), b((d) => {
1787
- var y, x;
1788
- var h = !l(), f = l() ? `${(y = l()) == null ? void 0 : y.x}px` : "0", m = l() ? `${(x = l()) == null ? void 0 : x.y}px` : "0";
1789
- return h !== d.e && (s.hidden = d.e = h), f !== d.t && ((d.t = f) != null ? s.style.setProperty("left", f) : s.style.removeProperty("left")), m !== d.a && ((d.a = m) != null ? s.style.setProperty("top", m) : s.style.removeProperty("top")), d;
1793
+ var m, y;
1794
+ var h = !l(), g = `translate(calc(${(m = l()) == null ? void 0 : m.x}px - 50%), calc(${(y = l()) == null ? void 0 : y.y}px - 125%))`;
1795
+ return h !== d.e && (s.hidden = d.e = h), g !== d.t && ((d.t = g) != null ? s.style.setProperty("transform", g) : s.style.removeProperty("transform")), d;
1790
1796
  }, {
1791
1797
  e: void 0,
1792
- t: void 0,
1793
- a: void 0
1798
+ t: void 0
1794
1799
  }), s;
1795
1800
  })();
1796
1801
  };
1797
1802
  var Zn = /* @__PURE__ */ w("<button class=echo-welcome-message><span class=echo-welcome-message-pulsar></span><div class=echo-welcome-message-close role=button tabindex=0>");
1798
1803
  const Qn = () => {
1799
- const e = E(), n = G("welcome_message_shown", !1), t = (a) => {
1804
+ const e = $(), n = G("welcome_message_shown", !1), t = (a) => {
1800
1805
  a.stopPropagation(), e.widget.setState({
1801
1806
  welcomeMessageIsClosing: !0
1802
- }), ae("welcome_message_shown", !0);
1807
+ }), ie("welcome_message_shown", !0);
1803
1808
  }, r = () => {
1804
1809
  e.widget.setState({
1805
1810
  isOpen: !0
1806
1811
  }), e.widget.setState({
1807
1812
  welcomeMessageIsClosing: !0
1808
- }), ae("welcome_message_shown", !0);
1813
+ }), ie("welcome_message_shown", !0);
1809
1814
  };
1810
1815
  return n ? null : (() => {
1811
1816
  var a = Zn(), o = a.firstChild, i = o.nextSibling;
1812
- 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, g(pe, {
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, {
1813
1818
  size: 16,
1814
1819
  strokeWidth: 3
1815
1820
  })), b((l) => {
@@ -1824,24 +1829,24 @@ const Qn = () => {
1824
1829
  T(["click", "keydown"]);
1825
1830
  var er = /* @__PURE__ */ w("<svg><rect class=echo-shape fill=transparent vector-effect=non-scaling-stroke role=img></svg>", !1, !0), tr = /* @__PURE__ */ w("<svg><path class=echo-shape fill=none vector-effect=non-scaling-stroke stroke-linecap=round role=img></svg>", !1, !0);
1826
1831
  const He = (e) => {
1827
- const n = S(() => e.id === e.selectedShapeId);
1828
- return [g(D, {
1832
+ const n = k(() => e.id === e.selectedShapeId);
1833
+ return [f(D, {
1829
1834
  get when() {
1830
1835
  return e.type === "rectangle";
1831
1836
  },
1832
1837
  get children() {
1833
- return g(nr, ge(e, {
1838
+ return f(nr, ge(e, {
1834
1839
  get isSelected() {
1835
1840
  return n();
1836
1841
  }
1837
1842
  }));
1838
1843
  }
1839
- }), g(D, {
1844
+ }), f(D, {
1840
1845
  get when() {
1841
1846
  return e.type === "path";
1842
1847
  },
1843
1848
  get children() {
1844
- return g(rr, ge(e, {
1849
+ return f(rr, ge(e, {
1845
1850
  get isSelected() {
1846
1851
  return n();
1847
1852
  }
@@ -1849,8 +1854,8 @@ const He = (e) => {
1849
1854
  }
1850
1855
  })];
1851
1856
  }, nr = (e) => {
1852
- const n = S(() => ot(e.points));
1853
- return g(D, {
1857
+ const n = k(() => ot(e.points));
1858
+ return f(D, {
1854
1859
  get when() {
1855
1860
  return n();
1856
1861
  },
@@ -1863,8 +1868,8 @@ const He = (e) => {
1863
1868
  var r;
1864
1869
  return (r = e.onShapeClick) == null ? void 0 : r.call(e, e.id);
1865
1870
  }, b((r) => {
1866
- var a = e.id, o = e.isSelected, i = n().x, l = n().y, s = n().width, c = n().height, d = e.color, h = B.rectangle.strokeWidth, f = e.isSelected ? B.rectangle.opacity.selected : B.rectangle.opacity.default, m = e.isSelected ? "5,5" : "none", y = e.isSelected ? "move" : "pointer", x = `Rectangle shape ${e.isSelected ? "(selected)" : ""}`, C = e.onShapeClick ? 0 : -1;
1867
- return a !== r.e && u(t, "data-shape-id", r.e = a), o !== r.t && u(t, "data-selected", r.t = o), i !== r.a && u(t, "x", r.a = i), l !== r.o && u(t, "y", r.o = l), s !== r.i && u(t, "width", r.i = s), c !== r.n && u(t, "height", r.n = c), d !== r.s && u(t, "stroke", r.s = d), h !== r.h && u(t, "stroke-width", r.h = h), f !== r.r && u(t, "opacity", r.r = f), m !== r.d && u(t, "stroke-dasharray", r.d = m), y !== r.l && u(t, "cursor", r.l = y), x !== r.u && u(t, "aria-label", r.u = x), C !== r.c && u(t, "tabindex", r.c = C), r;
1871
+ var a = e.id, o = e.isSelected, i = n().x, l = n().y, s = n().width, c = n().height, d = e.color, h = B.rectangle.strokeWidth, g = e.isSelected ? B.rectangle.opacity.selected : B.rectangle.opacity.default, m = e.isSelected ? "5,5" : "none", y = e.isSelected ? "move" : "pointer", E = `Rectangle shape ${e.isSelected ? "(selected)" : ""}`, S = e.onShapeClick ? 0 : -1;
1872
+ return a !== r.e && u(t, "data-shape-id", r.e = a), o !== r.t && u(t, "data-selected", r.t = o), i !== r.a && u(t, "x", r.a = i), l !== r.o && u(t, "y", r.o = l), s !== r.i && u(t, "width", r.i = s), c !== r.n && u(t, "height", r.n = c), d !== r.s && u(t, "stroke", r.s = d), h !== r.h && u(t, "stroke-width", r.h = h), g !== r.r && u(t, "opacity", r.r = g), m !== r.d && u(t, "stroke-dasharray", r.d = m), y !== r.l && u(t, "cursor", r.l = y), E !== r.u && u(t, "aria-label", r.u = E), S !== r.c && u(t, "tabindex", r.c = S), r;
1868
1873
  }, {
1869
1874
  e: void 0,
1870
1875
  t: void 0,
@@ -1883,8 +1888,8 @@ const He = (e) => {
1883
1888
  }
1884
1889
  });
1885
1890
  }, rr = (e) => {
1886
- const n = S(() => Kt(e.points));
1887
- return g(D, {
1891
+ const n = k(() => Kt(e.points));
1892
+ return f(D, {
1888
1893
  get when() {
1889
1894
  return n();
1890
1895
  },
@@ -1897,8 +1902,8 @@ const He = (e) => {
1897
1902
  var r;
1898
1903
  return (r = e.onShapeClick) == null ? void 0 : r.call(e, e.id);
1899
1904
  }, b((r) => {
1900
- var a = e.id, o = e.isSelected, i = n(), l = e.color, s = B.path.strokeWidth, c = e.isSelected ? B.path.opacity.selected : B.path.opacity.default, d = e.isSelected ? "move" : "pointer", h = `Freehand shape ${e.isSelected ? "(selected)" : ""}`, f = e.onShapeClick ? 0 : -1;
1901
- return a !== r.e && u(t, "data-shape-id", r.e = a), o !== r.t && u(t, "data-selected", r.t = o), i !== r.a && u(t, "d", r.a = i), l !== r.o && u(t, "stroke", r.o = l), s !== r.i && u(t, "stroke-width", r.i = s), c !== r.n && u(t, "opacity", r.n = c), d !== r.s && u(t, "cursor", r.s = d), h !== r.h && u(t, "aria-label", r.h = h), f !== r.r && u(t, "tabindex", r.r = f), r;
1905
+ var a = e.id, o = e.isSelected, i = n(), l = e.color, s = B.path.strokeWidth, c = e.isSelected ? B.path.opacity.selected : B.path.opacity.default, d = e.isSelected ? "move" : "pointer", h = `Freehand shape ${e.isSelected ? "(selected)" : ""}`, g = e.onShapeClick ? 0 : -1;
1906
+ return a !== r.e && u(t, "data-shape-id", r.e = a), o !== r.t && u(t, "data-selected", r.t = o), i !== r.a && u(t, "d", r.a = i), l !== r.o && u(t, "stroke", r.o = l), s !== r.i && u(t, "stroke-width", r.i = s), c !== r.n && u(t, "opacity", r.n = c), d !== r.s && u(t, "cursor", r.s = d), h !== r.h && u(t, "aria-label", r.h = h), g !== r.r && u(t, "tabindex", r.r = g), r;
1902
1907
  }, {
1903
1908
  e: void 0,
1904
1909
  t: void 0,
@@ -1916,7 +1921,7 @@ const He = (e) => {
1916
1921
  T(["click", "keydown"]);
1917
1922
  var or = /* @__PURE__ */ 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>');
1918
1923
  const ar = () => {
1919
- const e = E();
1924
+ const e = $();
1920
1925
  let n;
1921
1926
  return ye(() => {
1922
1927
  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, {
@@ -1926,7 +1931,7 @@ const ar = () => {
1926
1931
  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);
1927
1932
  }), (() => {
1928
1933
  var t = or(), r = t.firstChild, a = r.firstChild, o = n;
1929
- return typeof o == "function" ? V(o, t) : n = t, v(t, g(jn, {}), r), v(t, g(Jn, {}), r), U(r, "touchend", e.drawing.methods.handleLeave, !0), U(r, "mouseleave", e.drawing.methods.handleLeave), U(r, "mouseenter", e.drawing.methods.handleEnter), r.$$touchmove = (i) => {
1934
+ return typeof o == "function" ? V(o, t) : n = t, v(t, f(jn, {}), r), v(t, f(Jn, {}), r), U(r, "touchend", e.drawing.methods.handleLeave, !0), U(r, "mouseleave", e.drawing.methods.handleLeave), U(r, "mouseenter", e.drawing.methods.handleEnter), r.$$touchmove = (i) => {
1930
1935
  i.preventDefault(), e.drawing.methods.handleMove(i);
1931
1936
  }, U(r, "mousemove", e.drawing.methods.handleMove, !0), r.$$touchstart = (i) => {
1932
1937
  i.preventDefault(), e.drawing.methods.handleStart(i), e.drawing.methods.handleEnter(i), e.drawing.setState({
@@ -1938,11 +1943,11 @@ const ar = () => {
1938
1943
  showTooltip: !1,
1939
1944
  hasDrawn: !0
1940
1945
  });
1941
- }, v(r, g(_, {
1946
+ }, v(r, f(_, {
1942
1947
  get each() {
1943
1948
  return e.drawing.state.shapes;
1944
1949
  },
1945
- children: (i) => g(He, {
1950
+ children: (i) => f(He, {
1946
1951
  get id() {
1947
1952
  return i.id;
1948
1953
  },
@@ -1962,7 +1967,7 @@ const ar = () => {
1962
1967
  return e.drawing.methods.handleShapeClick;
1963
1968
  }
1964
1969
  })
1965
- }), null), v(r, g(He, {
1970
+ }), null), v(r, f(He, {
1966
1971
  id: "temp",
1967
1972
  get type() {
1968
1973
  return e.drawing.state.selectedTool;
@@ -1989,7 +1994,7 @@ const ar = () => {
1989
1994
  })();
1990
1995
  };
1991
1996
  T(["mousedown", "touchstart", "mousemove", "touchmove", "touchend"]);
1992
- const ce = (e) => ({
1997
+ const de = (e) => ({
1993
1998
  handleTextChange: (o) => {
1994
1999
  const i = o.target;
1995
2000
  e(i.value);
@@ -2004,14 +2009,14 @@ const ce = (e) => ({
2004
2009
  getCheckboxValue: (o) => Array.isArray(o) ? o : []
2005
2010
  });
2006
2011
  var ir = /* @__PURE__ */ w("<div class=echo-input role=group>"), sr = /* @__PURE__ */ w("<label class=echo-input-label><span>"), lr = /* @__PURE__ */ w('<span class=echo-input-required aria-label="Required field">*');
2007
- const de = (e) => (() => {
2012
+ const ue = (e) => (() => {
2008
2013
  var n = ir();
2009
2014
  return v(n, (() => {
2010
- var t = S(() => !!e.label);
2015
+ var t = k(() => !!e.label);
2011
2016
  return () => t() && (() => {
2012
2017
  var r = sr(), a = r.firstChild;
2013
2018
  return v(a, () => e.label), v(r, (() => {
2014
- var o = S(() => !!e.required);
2019
+ var o = k(() => !!e.required);
2015
2020
  return () => o() && lr();
2016
2021
  })(), null), r;
2017
2022
  })();
@@ -2021,8 +2026,8 @@ var cr = /* @__PURE__ */ w("<textarea class=echo-input-field rows=5>"), dr = /*
2021
2026
  const st = (e) => {
2022
2027
  const {
2023
2028
  handleTextChange: n
2024
- } = ce(e.onChange);
2025
- return g(de, {
2029
+ } = de(e.onChange);
2030
+ return f(ue, {
2026
2031
  get label() {
2027
2032
  return e.config.label;
2028
2033
  },
@@ -2053,12 +2058,12 @@ const st = (e) => {
2053
2058
  };
2054
2059
  T(["input"]);
2055
2060
  var ur = /* @__PURE__ */ w("<fieldset class=echo-input-options role=group>"), hr = /* @__PURE__ */ w("<label class=echo-input-option><input type=checkbox><span>");
2056
- const gr = (e) => {
2061
+ const fr = (e) => {
2057
2062
  const {
2058
2063
  handleCheckboxChange: n,
2059
2064
  getCheckboxValue: t
2060
- } = ce(e.onChange), r = () => t(e.value), a = () => r().length > 0;
2061
- return g(de, {
2065
+ } = de(e.onChange), r = () => t(e.value), a = () => r().length > 0;
2066
+ return f(ue, {
2062
2067
  get label() {
2063
2068
  return e.config.label;
2064
2069
  },
@@ -2067,7 +2072,7 @@ const gr = (e) => {
2067
2072
  },
2068
2073
  get children() {
2069
2074
  var o = ur();
2070
- return v(o, g(_, {
2075
+ return v(o, f(_, {
2071
2076
  get each() {
2072
2077
  return e.config.options;
2073
2078
  },
@@ -2079,12 +2084,12 @@ const gr = (e) => {
2079
2084
  }
2080
2085
  });
2081
2086
  };
2082
- var fr = /* @__PURE__ */ w("<fieldset class=echo-input-options role=radiogroup>"), mr = /* @__PURE__ */ w("<label class=echo-input-option><input type=radio><span>");
2087
+ var gr = /* @__PURE__ */ w("<fieldset class=echo-input-options role=radiogroup>"), mr = /* @__PURE__ */ w("<label class=echo-input-option><input type=radio><span>");
2083
2088
  const vr = (e) => {
2084
2089
  const {
2085
2090
  handleSelectChange: n
2086
- } = ce(e.onChange);
2087
- return g(de, {
2091
+ } = de(e.onChange);
2092
+ return f(ue, {
2088
2093
  get label() {
2089
2094
  return e.config.label;
2090
2095
  },
@@ -2092,8 +2097,8 @@ const vr = (e) => {
2092
2097
  return e.config.required;
2093
2098
  },
2094
2099
  get children() {
2095
- var t = fr();
2096
- return v(t, g(_, {
2100
+ var t = gr();
2101
+ return v(t, f(_, {
2097
2102
  get each() {
2098
2103
  return e.config.options;
2099
2104
  },
@@ -2115,10 +2120,10 @@ var br = /* @__PURE__ */ w("<div class=echo-select-dropdown role=listbox>"), wr
2115
2120
  const pr = (e) => {
2116
2121
  const {
2117
2122
  handleSelectChange: n
2118
- } = ce(e.onChange), [t, r] = A(!1);
2123
+ } = de(e.onChange), [t, r] = A(!1);
2119
2124
  let a, o, i;
2120
- const l = () => e.config.options.find((h) => h.value === (e.value === void 0 ? "" : e.value)), s = (h, f) => {
2121
- f.stopPropagation(), h.value === e.value ? e.config.required || n("") : n(h.value), r(!1);
2125
+ const l = () => e.config.options.find((h) => h.value === (e.value === void 0 ? "" : e.value)), s = (h, g) => {
2126
+ g.stopPropagation(), h.value === e.value ? e.config.required || n("") : n(h.value), r(!1);
2122
2127
  }, c = () => {
2123
2128
  r(!t());
2124
2129
  };
@@ -2128,7 +2133,7 @@ const pr = (e) => {
2128
2133
  if (!t() || !a) return;
2129
2134
  h.composedPath().includes(a) || r(!1);
2130
2135
  }
2131
- }), g(de, {
2136
+ }), f(ue, {
2132
2137
  get label() {
2133
2138
  return e.config.label;
2134
2139
  },
@@ -2136,29 +2141,29 @@ const pr = (e) => {
2136
2141
  return e.config.required;
2137
2142
  },
2138
2143
  get children() {
2139
- var h = wr(), f = h.firstChild, m = f.firstChild, y = f.nextSibling, x = a;
2140
- typeof x == "function" ? V(x, h) : a = h, f.$$click = (p) => {
2144
+ var h = wr(), g = h.firstChild, m = g.firstChild, y = g.nextSibling, E = a;
2145
+ typeof E == "function" ? V(E, h) : a = h, g.$$click = (p) => {
2141
2146
  p.stopPropagation(), c();
2142
2147
  };
2143
- var C = o;
2144
- typeof C == "function" ? V(C, f) : o = f, v(m, () => {
2148
+ var S = o;
2149
+ typeof S == "function" ? V(S, g) : o = g, v(m, () => {
2145
2150
  var p;
2146
2151
  return ((p = l()) == null ? void 0 : p.label) || e.config.placeholder;
2147
- }), v(h, g(D, {
2152
+ }), v(h, f(D, {
2148
2153
  get when() {
2149
2154
  return t();
2150
2155
  },
2151
2156
  get children() {
2152
2157
  var p = br();
2153
- return v(p, g(_, {
2158
+ return v(p, f(_, {
2154
2159
  get each() {
2155
2160
  return e.config.options;
2156
2161
  },
2157
2162
  children: (P) => (() => {
2158
2163
  var z = yr();
2159
- return z.$$click = (k) => s(P, k), v(z, () => P.label), b((k) => {
2164
+ return z.$$click = (x) => s(P, x), v(z, () => P.label), b((x) => {
2160
2165
  var H = P.value === e.value, q = P.value === e.value;
2161
- return H !== k.e && u(z, "aria-selected", k.e = H), q !== k.t && u(z, "data-selected", k.t = q), k;
2166
+ return H !== x.e && u(z, "aria-selected", x.e = H), q !== x.t && u(z, "data-selected", x.t = q), x;
2162
2167
  }, {
2163
2168
  e: void 0,
2164
2169
  t: void 0
@@ -2167,10 +2172,10 @@ const pr = (e) => {
2167
2172
  })), p;
2168
2173
  }
2169
2174
  }), y);
2170
- var $ = i;
2171
- return typeof $ == "function" ? V($, y) : i = y, b((p) => {
2172
- var P = t(), z = !e.value, k = e.config.required, H = t(), q = e.config.required, I = e.config.required;
2173
- return P !== p.e && u(f, "data-open", p.e = P), z !== p.t && u(f, "data-placeholder", p.t = z), k !== p.a && u(f, "data-required", p.a = k), H !== p.o && u(f, "aria-expanded", p.o = H), q !== p.i && u(f, "aria-required", p.i = q), I !== p.n && (y.required = p.n = I), p;
2175
+ var C = i;
2176
+ return typeof C == "function" ? V(C, y) : i = y, b((p) => {
2177
+ var P = t(), z = !e.value, x = e.config.required, H = t(), q = e.config.required, I = e.config.required;
2178
+ return P !== p.e && u(g, "data-open", p.e = P), z !== p.t && u(g, "data-placeholder", p.t = z), x !== p.a && u(g, "data-required", p.a = x), H !== p.o && u(g, "aria-expanded", p.o = H), q !== p.i && u(g, "aria-required", p.i = q), I !== p.n && (y.required = p.n = I), p;
2174
2179
  }, {
2175
2180
  e: void 0,
2176
2181
  t: void 0,
@@ -2187,8 +2192,8 @@ var xr = /* @__PURE__ */ w("<input type=text class=echo-input-field>");
2187
2192
  const kr = (e) => {
2188
2193
  const {
2189
2194
  handleTextChange: n
2190
- } = ce(e.onChange);
2191
- return g(de, {
2195
+ } = de(e.onChange);
2196
+ return f(ue, {
2192
2197
  get label() {
2193
2198
  return e.config.label;
2194
2199
  },
@@ -2209,7 +2214,7 @@ const kr = (e) => {
2209
2214
  };
2210
2215
  T(["input"]);
2211
2216
  var Sr = /* @__PURE__ */ w("<div class=echo-input-error>Invalid input type"), Cr = /* @__PURE__ */ w("<div class=echo-input-error>Unsupported input type: ");
2212
- const $r = (e) => g(D, {
2217
+ const $r = (e) => f(D, {
2213
2218
  get when() {
2214
2219
  return e.config.type;
2215
2220
  },
@@ -2218,7 +2223,7 @@ const $r = (e) => g(D, {
2218
2223
  return Sr();
2219
2224
  },
2220
2225
  get children() {
2221
- return g(ht, {
2226
+ return f(ht, {
2222
2227
  get fallback() {
2223
2228
  return (() => {
2224
2229
  var n = Cr();
@@ -2226,12 +2231,12 @@ const $r = (e) => g(D, {
2226
2231
  })();
2227
2232
  },
2228
2233
  get children() {
2229
- return [g(te, {
2234
+ return [f(te, {
2230
2235
  get when() {
2231
2236
  return e.config.type === "text";
2232
2237
  },
2233
2238
  get children() {
2234
- return g(kr, {
2239
+ return f(kr, {
2235
2240
  get config() {
2236
2241
  return e.config;
2237
2242
  },
@@ -2243,12 +2248,12 @@ const $r = (e) => g(D, {
2243
2248
  }
2244
2249
  });
2245
2250
  }
2246
- }), g(te, {
2251
+ }), f(te, {
2247
2252
  get when() {
2248
2253
  return e.config.type === "textarea";
2249
2254
  },
2250
2255
  get children() {
2251
- return g(st, {
2256
+ return f(st, {
2252
2257
  get config() {
2253
2258
  return e.config;
2254
2259
  },
@@ -2260,12 +2265,12 @@ const $r = (e) => g(D, {
2260
2265
  }
2261
2266
  });
2262
2267
  }
2263
- }), g(te, {
2268
+ }), f(te, {
2264
2269
  get when() {
2265
2270
  return e.config.type === "radio";
2266
2271
  },
2267
2272
  get children() {
2268
- return g(vr, {
2273
+ return f(vr, {
2269
2274
  get config() {
2270
2275
  return e.config;
2271
2276
  },
@@ -2277,12 +2282,12 @@ const $r = (e) => g(D, {
2277
2282
  }
2278
2283
  });
2279
2284
  }
2280
- }), g(te, {
2285
+ }), f(te, {
2281
2286
  get when() {
2282
2287
  return e.config.type === "checkbox";
2283
2288
  },
2284
2289
  get children() {
2285
- return g(gr, {
2290
+ return f(fr, {
2286
2291
  get config() {
2287
2292
  return e.config;
2288
2293
  },
@@ -2294,12 +2299,12 @@ const $r = (e) => g(D, {
2294
2299
  }
2295
2300
  });
2296
2301
  }
2297
- }), g(te, {
2302
+ }), f(te, {
2298
2303
  get when() {
2299
2304
  return e.config.type === "select";
2300
2305
  },
2301
2306
  get children() {
2302
- return g(pr, {
2307
+ return f(pr, {
2303
2308
  get config() {
2304
2309
  return e.config;
2305
2310
  },
@@ -2362,7 +2367,7 @@ const $r = (e) => g(D, {
2362
2367
  });
2363
2368
  var Or = /* @__PURE__ */ w("<fieldset class=echo-input-options><legend class=visually-hidden>Additional Information"), Mr = /* @__PURE__ */ 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');
2364
2369
  const Ar = () => {
2365
- const e = E(), n = async (a) => {
2370
+ const e = $(), n = async (a) => {
2366
2371
  a.preventDefault();
2367
2372
  const o = await tn(), i = {
2368
2373
  message: e.feedback.state.message,
@@ -2387,7 +2392,7 @@ const Ar = () => {
2387
2392
  });
2388
2393
  }), (() => {
2389
2394
  var a = Mr(), o = a.firstChild, i = o.firstChild, l = i.firstChild, s = l.nextSibling, c = i.nextSibling;
2390
- return c.firstChild, a.$$click = () => e.feedback.state.isMinimized && r(), o.addEventListener("submit", n), v(l, () => e.widget.state.text.feedbackForm.title), v(s, g(W, {
2395
+ return c.firstChild, a.$$click = () => e.feedback.state.isMinimized && r(), o.addEventListener("submit", n), v(l, () => e.widget.state.text.feedbackForm.title), v(s, f(W, {
2391
2396
  type: "button",
2392
2397
  title: "Hide form",
2393
2398
  variant: "secondary",
@@ -2395,11 +2400,11 @@ const Ar = () => {
2395
2400
  onClick: t,
2396
2401
  "aria-label": "Minimize feedback form",
2397
2402
  get children() {
2398
- return g(yn, {
2403
+ return f(yn, {
2399
2404
  size: 20
2400
2405
  });
2401
2406
  }
2402
- }), null), v(s, g(W, {
2407
+ }), null), v(s, f(W, {
2403
2408
  type: "button",
2404
2409
  title: "Close form",
2405
2410
  variant: "secondary",
@@ -2409,11 +2414,11 @@ const Ar = () => {
2409
2414
  }),
2410
2415
  "aria-label": "Close feedback form",
2411
2416
  get children() {
2412
- return g(pe, {
2417
+ return f(pe, {
2413
2418
  size: 20
2414
2419
  });
2415
2420
  }
2416
- }), null), v(c, g(st, {
2421
+ }), null), v(c, f(st, {
2417
2422
  get config() {
2418
2423
  return {
2419
2424
  type: "textarea",
@@ -2429,32 +2434,32 @@ const Ar = () => {
2429
2434
  onChange: (d) => e.feedback.setState({
2430
2435
  message: d
2431
2436
  })
2432
- }), null), v(o, g(D, {
2437
+ }), null), v(o, f(D, {
2433
2438
  get when() {
2434
2439
  var d;
2435
2440
  return (d = e.widget.state.customInputs) == null ? void 0 : d.length;
2436
2441
  },
2437
2442
  get children() {
2438
2443
  var d = Or();
2439
- return d.firstChild, v(d, g(_, {
2444
+ return d.firstChild, v(d, f(_, {
2440
2445
  get each() {
2441
2446
  return e.widget.state.customInputs;
2442
2447
  },
2443
- children: (h) => g($r, {
2448
+ children: (h) => f($r, {
2444
2449
  config: h,
2445
2450
  get value() {
2446
2451
  return e.feedback.state.customInputValues[h.id];
2447
2452
  },
2448
- onChange: (f) => e.feedback.setState({
2453
+ onChange: (g) => e.feedback.setState({
2449
2454
  customInputValues: {
2450
2455
  ...e.feedback.state.customInputValues,
2451
- [h.id]: f
2456
+ [h.id]: g
2452
2457
  }
2453
2458
  })
2454
2459
  })
2455
2460
  }), null), d;
2456
2461
  }
2457
- }), null), v(o, g(W, {
2462
+ }), null), v(o, f(W, {
2458
2463
  type: "submit",
2459
2464
  variant: "primary",
2460
2465
  size: "lg",
@@ -2466,8 +2471,8 @@ const Ar = () => {
2466
2471
  return e.widget.state.text.feedbackForm.submitButton;
2467
2472
  }
2468
2473
  }), null), b((d) => {
2469
- var h = e.feedback.state.isMinimized, f = e.feedback.state.isMinimized ? "pointer" : "default", m = !e.feedback.state.isMinimized;
2470
- return h !== d.e && u(a, "data-minimized", d.e = h), f !== d.t && ((d.t = f) != null ? a.style.setProperty("cursor", f) : a.style.removeProperty("cursor")), m !== d.a && u(a, "aria-expanded", d.a = m), d;
2474
+ var h = e.feedback.state.isMinimized, g = e.feedback.state.isMinimized ? "pointer" : "default", m = !e.feedback.state.isMinimized;
2475
+ return h !== d.e && u(a, "data-minimized", d.e = h), g !== d.t && ((d.t = g) != null ? a.style.setProperty("cursor", g) : a.style.removeProperty("cursor")), m !== d.a && u(a, "aria-expanded", d.a = m), d;
2471
2476
  }, {
2472
2477
  e: void 0,
2473
2478
  t: void 0,
@@ -2477,21 +2482,21 @@ const Ar = () => {
2477
2482
  };
2478
2483
  T(["click"]);
2479
2484
  var Dr = /* @__PURE__ */ w("<style>"), Fr = /* @__PURE__ */ w("<div class=echo-launcher>"), Lr = /* @__PURE__ */ w("<dialog class=echo-overlay>"), jr = /* @__PURE__ */ w("<div class=echo-root>");
2480
- const Nr = (e) => g(Ot, {
2485
+ const Nr = (e) => f(Ot, {
2481
2486
  useShadow: !0,
2482
2487
  get mount() {
2483
2488
  return document.body;
2484
2489
  },
2485
2490
  get children() {
2486
- return g(cn, ge(e, {
2491
+ return f(cn, ge(e, {
2487
2492
  get children() {
2488
- return g(Wr, {
2493
+ return f(Wr, {
2489
2494
  get children() {
2490
- return [g(qr, {
2495
+ return [f(qr, {
2491
2496
  get primaryColor() {
2492
2497
  return e.primaryColor;
2493
2498
  }
2494
- }), g(Vr, {})];
2499
+ }), f(Vr, {})];
2495
2500
  }
2496
2501
  });
2497
2502
  }
@@ -2512,18 +2517,18 @@ const Nr = (e) => g(Ot, {
2512
2517
  return v(r, hn, null), v(r, n, null), r;
2513
2518
  })();
2514
2519
  }, Vr = () => {
2515
- const e = E();
2520
+ const e = $();
2516
2521
  return Y(() => {
2517
2522
  }), [(() => {
2518
2523
  var n = Fr();
2519
- return v(n, g(Rn, {}), null), v(n, g(Qn, {}), null), v(n, g(Gn, {}), null), b(() => u(n, "data-hidden", e.widget.state.isOpen)), n;
2520
- })(), g(Br, {
2524
+ return v(n, f(Rn, {}), null), v(n, f(Qn, {}), null), v(n, f(Gn, {}), null), b(() => u(n, "data-hidden", e.widget.state.isOpen)), n;
2525
+ })(), f(Br, {
2521
2526
  get children() {
2522
- return [g(Ar, {}), g(Fn, {}), g(ar, {})];
2527
+ return [f(Ar, {}), f(Fn, {}), f(ar, {})];
2523
2528
  }
2524
2529
  })];
2525
2530
  }, Br = (e) => {
2526
- const [n, t] = A(), r = E(), a = dn(() => n());
2531
+ const [n, t] = A(), r = $(), a = dn(() => n());
2527
2532
  return Y(() => {
2528
2533
  n() && r.widget.setState({
2529
2534
  dimensions: a()
@@ -2545,7 +2550,7 @@ const Nr = (e) => g(Ot, {
2545
2550
  }), o;
2546
2551
  })();
2547
2552
  }, Wr = (e) => {
2548
- const n = E();
2553
+ const n = $();
2549
2554
  return un({
2550
2555
  onUrlChange: (t) => n.methods.handlePageChange(t)
2551
2556
  }), ye(() => {
@@ -2588,9 +2593,9 @@ const Nr = (e) => g(Ot, {
2588
2593
  text: "Click & drag to draw"
2589
2594
  }
2590
2595
  };
2591
- let he = null;
2596
+ let fe = null;
2592
2597
  function Yr(e) {
2593
- he && (console.warn("Echo widget is already initialized. Cleaning up previous instance..."), he());
2598
+ fe && (console.warn("Echo widget is already initialized. Cleaning up previous instance..."), fe());
2594
2599
  try {
2595
2600
  rn(e);
2596
2601
  const {
@@ -2601,18 +2606,18 @@ function Yr(e) {
2601
2606
  customInputs: o = []
2602
2607
  } = e, i = Ke(_r, a), l = document.createElement("div");
2603
2608
  l.id = "echo-container", document.body.appendChild(l);
2604
- const s = kt(() => g(Nr, {
2609
+ const s = kt(() => f(Nr, {
2605
2610
  position: n,
2606
2611
  primaryColor: t,
2607
2612
  textConfig: i,
2608
2613
  onSubmit: r,
2609
2614
  customInputs: o
2610
2615
  }), l), c = () => {
2611
- s(), l.remove(), he = null;
2616
+ s(), l.remove(), fe = null;
2612
2617
  };
2613
2618
  return window.addEventListener("unload", c, {
2614
2619
  once: !0
2615
- }), he = c, c;
2620
+ }), fe = c, c;
2616
2621
  } catch (n) {
2617
2622
  throw console.error("Echo initialization failed:", n), n;
2618
2623
  }