@contember/echo 0.0.31 → 0.0.33-beta.1

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 k, createSignal as A, onCleanup as te, $PROXY as R, $TRACK as Fe, getListener as $e, batch as ct, onMount as pe, createContext as dt, createComponent as f, useContext as ut, For as _, Show as D, mergeProps as ge, Switch as ht, Match as ne } from "solid-js";
2
- import ft from "html2canvas";
3
- const gt = [
1
+ import { sharedConfig as L, createRoot as Ye, createRenderEffect as b, untrack as Ke, getOwner as Le, createEffect as H, runWithOwner as dt, createMemo as k, createSignal as T, onCleanup as te, $PROXY as Y, $TRACK as Ne, getListener as Pe, batch as ut, onMount as ke, createContext as ht, createComponent as g, useContext as gt, For as B, Show as D, mergeProps as ie, Switch as ft, Match as ne } from "solid-js";
2
+ import mt from "html2canvas";
3
+ const vt = [
4
4
  "allowfullscreen",
5
5
  "async",
6
6
  "autofocus",
@@ -26,7 +26,7 @@ const gt = [
26
26
  "reversed",
27
27
  "seamless",
28
28
  "selected"
29
- ], mt = /* @__PURE__ */ new Set([
29
+ ], bt = /* @__PURE__ */ new Set([
30
30
  "className",
31
31
  "value",
32
32
  "readOnly",
@@ -34,16 +34,16 @@ const gt = [
34
34
  "isMap",
35
35
  "noModule",
36
36
  "playsInline",
37
- ...gt
38
- ]), vt = /* @__PURE__ */ new Set([
37
+ ...vt
38
+ ]), wt = /* @__PURE__ */ new Set([
39
39
  "innerHTML",
40
40
  "textContent",
41
41
  "innerText",
42
42
  "children"
43
- ]), bt = /* @__PURE__ */ Object.assign(/* @__PURE__ */ Object.create(null), {
43
+ ]), yt = /* @__PURE__ */ Object.assign(/* @__PURE__ */ Object.create(null), {
44
44
  className: "class",
45
45
  htmlFor: "for"
46
- }), wt = /* @__PURE__ */ Object.assign(/* @__PURE__ */ Object.create(null), {
46
+ }), pt = /* @__PURE__ */ Object.assign(/* @__PURE__ */ Object.create(null), {
47
47
  class: "className",
48
48
  formnovalidate: {
49
49
  $: "formNoValidate",
@@ -68,11 +68,11 @@ const gt = [
68
68
  TEXTAREA: 1
69
69
  }
70
70
  });
71
- function yt(e, n) {
72
- const t = wt[e];
71
+ function xt(e, n) {
72
+ const t = pt[e];
73
73
  return typeof t == "object" ? t[n] ? t.$ : void 0 : t;
74
74
  }
75
- const pt = /* @__PURE__ */ new Set([
75
+ const kt = /* @__PURE__ */ new Set([
76
76
  "beforeinput",
77
77
  "click",
78
78
  "dblclick",
@@ -96,7 +96,7 @@ const pt = /* @__PURE__ */ new Set([
96
96
  "touchmove",
97
97
  "touchstart"
98
98
  ]);
99
- function xt(e, n, t) {
99
+ function St(e, n, t) {
100
100
  let r = t.length, a = n.length, o = r, i = 0, l = 0, s = n[a - 1].nextSibling, c = null;
101
101
  for (; i < a || l < o; ) {
102
102
  if (n[i] === t[l]) {
@@ -106,39 +106,39 @@ function xt(e, n, t) {
106
106
  for (; n[a - 1] === t[o - 1]; )
107
107
  a--, o--;
108
108
  if (a === i) {
109
- const d = o < r ? l ? t[l - 1].nextSibling : t[o - l] : s;
110
- for (; l < o; ) e.insertBefore(t[l++], d);
109
+ const u = o < r ? l ? t[l - 1].nextSibling : t[o - l] : s;
110
+ for (; l < o; ) e.insertBefore(t[l++], u);
111
111
  } else if (o === l)
112
112
  for (; i < a; )
113
113
  (!c || !c.has(n[i])) && n[i].remove(), i++;
114
114
  else if (n[i] === t[o - 1] && t[l] === n[a - 1]) {
115
- const d = n[--a].nextSibling;
116
- e.insertBefore(t[l++], n[i++].nextSibling), e.insertBefore(t[--o], d), n[a] = t[o];
115
+ const u = n[--a].nextSibling;
116
+ e.insertBefore(t[l++], n[i++].nextSibling), e.insertBefore(t[--o], u), n[a] = t[o];
117
117
  } else {
118
118
  if (!c) {
119
119
  c = /* @__PURE__ */ new Map();
120
120
  let h = l;
121
121
  for (; h < o; ) c.set(t[h], h++);
122
122
  }
123
- const d = c.get(n[i]);
124
- if (d != null)
125
- if (l < d && d < o) {
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) {
123
+ const u = c.get(n[i]);
124
+ if (u != null)
125
+ if (l < u && u < o) {
126
+ let h = i, f = 1, m;
127
+ for (; ++h < a && h < o && !((m = c.get(n[h])) == null || m !== u + f); )
128
+ f++;
129
+ if (f > u - l) {
130
130
  const y = n[i];
131
- for (; l < d; ) e.insertBefore(t[l++], y);
131
+ for (; l < u; ) e.insertBefore(t[l++], y);
132
132
  } else e.replaceChild(t[l++], n[i++]);
133
133
  } else i++;
134
134
  else n[i++].remove();
135
135
  }
136
136
  }
137
137
  }
138
- const Le = "_$DX_DELEGATE";
139
- function kt(e, n, t, r = {}) {
138
+ const je = "_$DX_DELEGATE";
139
+ function Ct(e, n, t, r = {}) {
140
140
  let a;
141
- return Ue((o) => {
141
+ return Ye((o) => {
142
142
  a = o, n === document ? e() : v(n, e(), n.firstChild ? null : void 0, t);
143
143
  }, r.owner), () => {
144
144
  a(), n.textContent = "";
@@ -149,24 +149,24 @@ function w(e, n, t) {
149
149
  const a = () => {
150
150
  const i = document.createElement("template");
151
151
  return i.innerHTML = e, t ? i.content.firstChild.firstChild : i.content.firstChild;
152
- }, o = n ? () => Ye(() => document.importNode(r || (r = a()), !0)) : () => (r || (r = a())).cloneNode(!0);
152
+ }, o = n ? () => Ke(() => document.importNode(r || (r = a()), !0)) : () => (r || (r = a())).cloneNode(!0);
153
153
  return o.cloneNode = o, o;
154
154
  }
155
- function T(e, n = window.document) {
156
- const t = n[Le] || (n[Le] = /* @__PURE__ */ new Set());
155
+ function I(e, n = window.document) {
156
+ const t = n[je] || (n[je] = /* @__PURE__ */ new Set());
157
157
  for (let r = 0, a = e.length; r < a; r++) {
158
158
  const o = e[r];
159
- t.has(o) || (t.add(o), n.addEventListener(o, zt));
159
+ t.has(o) || (t.add(o), n.addEventListener(o, It));
160
160
  }
161
161
  }
162
- function u(e, n, t) {
163
- ce(e) || (t == null ? e.removeAttribute(n) : e.setAttribute(n, t));
162
+ function d(e, n, t) {
163
+ he(e) || (t == null ? e.removeAttribute(n) : e.setAttribute(n, t));
164
164
  }
165
- function St(e, n, t) {
166
- ce(e) || (t ? e.setAttribute(n, "") : e.removeAttribute(n));
165
+ function $t(e, n, t) {
166
+ he(e) || (t ? e.setAttribute(n, "") : e.removeAttribute(n));
167
167
  }
168
- function Re(e, n) {
169
- ce(e) || (n == null ? e.removeAttribute("class") : e.className = n);
168
+ function Ge(e, n) {
169
+ he(e) || (n == null ? e.removeAttribute("class") : e.className = n);
170
170
  }
171
171
  function U(e, n, t, r) {
172
172
  if (r)
@@ -176,21 +176,21 @@ function U(e, n, t, r) {
176
176
  e.addEventListener(n, t[0] = (o) => a.call(e, t[1], o));
177
177
  } else e.addEventListener(n, t, typeof t != "function" && t);
178
178
  }
179
- function Ct(e, n, t = {}) {
179
+ function Et(e, n, t = {}) {
180
180
  const r = Object.keys(n || {}), a = Object.keys(t);
181
181
  let o, i;
182
182
  for (o = 0, i = a.length; o < i; o++) {
183
183
  const l = a[o];
184
- !l || l === "undefined" || n[l] || (je(e, l, !1), delete t[l]);
184
+ !l || l === "undefined" || n[l] || (qe(e, l, !1), delete t[l]);
185
185
  }
186
186
  for (o = 0, i = r.length; o < i; o++) {
187
187
  const l = r[o], s = !!n[l];
188
- !l || l === "undefined" || t[l] === s || !s || (je(e, l, !0), t[l] = s);
188
+ !l || l === "undefined" || t[l] === s || !s || (qe(e, l, !0), t[l] = s);
189
189
  }
190
190
  return t;
191
191
  }
192
192
  function F(e, n, t) {
193
- if (!n) return t ? u(e, "style") : n;
193
+ if (!n) return t ? d(e, "style") : n;
194
194
  const r = e.style;
195
195
  if (typeof n == "string") return r.cssText = n;
196
196
  typeof t == "string" && (r.cssText = t = void 0), t || (t = {}), n || (n = {});
@@ -201,78 +201,78 @@ function F(e, n, t) {
201
201
  a = n[o], a !== t[o] && (r.setProperty(o, a), t[o] = a);
202
202
  return t;
203
203
  }
204
- function $t(e, n = {}, t, r) {
204
+ function Pt(e, n = {}, t, r) {
205
205
  const a = {};
206
206
  return b(
207
- () => a.children = ae(e, n.children, a.children)
208
- ), b(() => typeof n.ref == "function" && V(n.ref, e)), b(() => Et(e, n, t, !0, a, !0)), a;
207
+ () => a.children = se(e, n.children, a.children)
208
+ ), b(() => typeof n.ref == "function" && R(n.ref, e)), b(() => zt(e, n, t, !0, a, !0)), a;
209
209
  }
210
- function V(e, n, t) {
211
- return Ye(() => e(n, t));
210
+ function R(e, n, t) {
211
+ return Ke(() => e(n, t));
212
212
  }
213
213
  function v(e, n, 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);
214
+ if (t !== void 0 && !r && (r = []), typeof n != "function") return se(e, n, r, t);
215
+ b((a) => se(e, n(), a, t), r);
216
216
  }
217
- function Et(e, n, t, r, a = {}, o = !1) {
217
+ function zt(e, n, t, r, a = {}, o = !1) {
218
218
  n || (n = {});
219
219
  for (const i in a)
220
220
  if (!(i in n)) {
221
221
  if (i === "children") continue;
222
- a[i] = Ne(e, i, null, a[i], t, o, n);
222
+ a[i] = Re(e, i, null, a[i], t, o, n);
223
223
  }
224
224
  for (const i in n) {
225
225
  if (i === "children")
226
226
  continue;
227
227
  const l = n[i];
228
- a[i] = Ne(e, i, l, a[i], t, o, n);
228
+ a[i] = Re(e, i, l, a[i], t, o, n);
229
229
  }
230
230
  }
231
- function ce(e) {
231
+ function he(e) {
232
232
  return !!L.context && !L.done && (!e || e.isConnected);
233
233
  }
234
- function Pt(e) {
234
+ function Tt(e) {
235
235
  return e.toLowerCase().replace(/-([a-z])/g, (n, t) => t.toUpperCase());
236
236
  }
237
- function je(e, n, t) {
237
+ function qe(e, n, t) {
238
238
  const r = n.trim().split(/\s+/);
239
239
  for (let a = 0, o = r.length; a < o; a++)
240
240
  e.classList.toggle(r[a], t);
241
241
  }
242
- function Ne(e, n, t, r, a, o, i) {
243
- let l, s, c, d, h;
242
+ function Re(e, n, t, r, a, o, i) {
243
+ let l, s, c, u, h;
244
244
  if (n === "style") return F(e, t, r);
245
- if (n === "classList") return Ct(e, t, r);
245
+ if (n === "classList") return Et(e, t, r);
246
246
  if (t === r) return r;
247
247
  if (n === "ref")
248
248
  o || t(e);
249
249
  else if (n.slice(0, 3) === "on:") {
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);
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);
252
252
  } else if (n.slice(0, 10) === "oncapture:") {
253
- const g = n.slice(10);
254
- r && e.removeEventListener(g, r, !0), t && e.addEventListener(g, t, !0);
253
+ const f = n.slice(10);
254
+ r && e.removeEventListener(f, r, !0), t && e.addEventListener(f, t, !0);
255
255
  } else if (n.slice(0, 2) === "on") {
256
- const g = n.slice(2).toLowerCase(), m = pt.has(g);
256
+ const f = n.slice(2).toLowerCase(), m = kt.has(f);
257
257
  if (!m && r) {
258
258
  const y = Array.isArray(r) ? r[0] : r;
259
- e.removeEventListener(g, y);
259
+ e.removeEventListener(f, y);
260
260
  }
261
- (m || t) && (U(e, g, t, m), m && T([g]));
261
+ (m || t) && (U(e, f, t, m), m && I([f]));
262
262
  } else if (n.slice(0, 5) === "attr:")
263
- u(e, n.slice(5), t);
263
+ d(e, n.slice(5), t);
264
264
  else if (n.slice(0, 5) === "bool:")
265
- St(e, n.slice(5), t);
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)) {
265
+ $t(e, n.slice(5), t);
266
+ else if ((h = n.slice(0, 5) === "prop:") || (c = wt.has(n)) || (u = xt(n, e.tagName)) || (s = bt.has(n)) || (l = e.nodeName.includes("-") || "is" in i)) {
267
267
  if (h)
268
268
  n = n.slice(5), s = !0;
269
- else if (ce(e)) return t;
270
- n === "class" || n === "className" ? Re(e, t) : l && !s && !c ? e[Pt(n)] = t : e[d || n] = t;
269
+ else if (he(e)) return t;
270
+ n === "class" || n === "className" ? Ge(e, t) : l && !s && !c ? e[Tt(n)] = t : e[u || n] = t;
271
271
  } else
272
- u(e, bt[n] || n, t);
272
+ d(e, yt[n] || n, t);
273
273
  return t;
274
274
  }
275
- function zt(e) {
275
+ function It(e) {
276
276
  if (L.registry && L.events && L.events.find(([s, c]) => c === e))
277
277
  return;
278
278
  let n = e.target;
@@ -308,14 +308,14 @@ function zt(e) {
308
308
  } else l();
309
309
  o(r);
310
310
  }
311
- function ae(e, n, t, r, a) {
312
- const o = ce(e);
311
+ function se(e, n, t, r, a) {
312
+ const o = he(e);
313
313
  if (o) {
314
314
  !t && (t = [...e.childNodes]);
315
315
  let s = [];
316
316
  for (let c = 0; c < t.length; c++) {
317
- const d = t[c];
318
- d.nodeType === 8 && d.data.slice(0, 2) === "!$" ? d.remove() : s.push(d);
317
+ const u = t[c];
318
+ u.nodeType === 8 && u.data.slice(0, 2) === "!$" ? u.remove() : s.push(u);
319
319
  }
320
320
  t = s;
321
321
  }
@@ -338,24 +338,24 @@ function ae(e, n, t, r, a) {
338
338
  return b(() => {
339
339
  let s = n();
340
340
  for (; typeof s == "function"; ) s = s();
341
- t = ae(e, s, t, r);
341
+ t = se(e, s, t, r);
342
342
  }), () => t;
343
343
  if (Array.isArray(n)) {
344
344
  const s = [], c = t && Array.isArray(t);
345
- if (Ee(s, n, t, a))
346
- return b(() => t = ae(e, s, t, r, !0)), () => t;
345
+ if (ze(s, n, t, a))
346
+ return b(() => t = se(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];
350
- let d = s[0];
351
- if (d.parentNode !== e) return t;
352
- const h = [d];
353
- for (; (d = d.nextSibling) !== r; ) h.push(d);
350
+ let u = s[0];
351
+ if (u.parentNode !== e) return t;
352
+ const h = [u];
353
+ for (; (u = u.nextSibling) !== r; ) h.push(u);
354
354
  return t = h;
355
355
  }
356
356
  if (s.length === 0) {
357
357
  if (t = X(e, t, r), l) return t;
358
- } else c ? t.length === 0 ? qe(e, s, r) : xt(e, t, s) : (t && X(e), qe(e, s));
358
+ } else c ? t.length === 0 ? Ve(e, s, r) : St(e, t, s) : (t && X(e), Ve(e, s));
359
359
  t = s;
360
360
  } else if (n.nodeType) {
361
361
  if (o && n.parentNode) return t = l ? [n] : n;
@@ -368,18 +368,18 @@ function ae(e, n, t, r, a) {
368
368
  }
369
369
  return t;
370
370
  }
371
- function Ee(e, n, t, r) {
371
+ function ze(e, n, t, r) {
372
372
  let a = !1;
373
373
  for (let o = 0, i = n.length; o < i; o++) {
374
374
  let l = n[o], s = t && t[e.length], c;
375
375
  if (!(l == null || l === !0 || l === !1)) if ((c = typeof l) == "object" && l.nodeType)
376
376
  e.push(l);
377
377
  else if (Array.isArray(l))
378
- a = Ee(e, l, s) || a;
378
+ a = ze(e, l, s) || a;
379
379
  else if (c === "function")
380
380
  if (r) {
381
381
  for (; typeof l == "function"; ) l = l();
382
- a = Ee(
382
+ a = ze(
383
383
  e,
384
384
  Array.isArray(l) ? l : [l],
385
385
  Array.isArray(s) ? s : [s]
@@ -387,13 +387,13 @@ function Ee(e, n, t, r) {
387
387
  } else
388
388
  e.push(l), a = !0;
389
389
  else {
390
- const d = String(l);
391
- s && s.nodeType === 3 && s.data === d ? e.push(s) : e.push(document.createTextNode(d));
390
+ const u = String(l);
391
+ s && s.nodeType === 3 && s.data === u ? e.push(s) : e.push(document.createTextNode(u));
392
392
  }
393
393
  }
394
394
  return a;
395
395
  }
396
- function qe(e, n, t = null) {
396
+ function Ve(e, n, t = null) {
397
397
  for (let r = 0, a = n.length; r < a; r++) e.insertBefore(n[r], t);
398
398
  }
399
399
  function X(e, n, t, r) {
@@ -411,22 +411,22 @@ function X(e, n, t, r) {
411
411
  } else e.insertBefore(a, t);
412
412
  return [a];
413
413
  }
414
- const Tt = "http://www.w3.org/2000/svg";
415
- function It(e, n = !1) {
416
- return n ? document.createElementNS(Tt, e) : document.createElement(e);
414
+ const Ot = "http://www.w3.org/2000/svg";
415
+ function Mt(e, n = !1) {
416
+ return n ? document.createElementNS(Ot, e) : document.createElement(e);
417
417
  }
418
- function Ot(e) {
419
- const { useShadow: n } = e, t = document.createTextNode(""), r = () => e.mount || document.body, a = De();
418
+ function At(e) {
419
+ const { useShadow: n } = e, t = document.createTextNode(""), r = () => e.mount || document.body, a = Le();
420
420
  let o, i = !!L.context;
421
- return Y(
421
+ return H(
422
422
  () => {
423
- i && (De().user = i = !1), o || (o = lt(a, () => k(() => e.children)));
423
+ i && (Le().user = i = !1), o || (o = dt(a, () => k(() => e.children)));
424
424
  const l = r();
425
425
  if (l instanceof HTMLHeadElement) {
426
- const [s, c] = A(!1), d = () => c(!0);
427
- Ue((h) => v(l, () => s() ? h() : o(), null)), te(d);
426
+ const [s, c] = T(!1), u = () => c(!0);
427
+ Ye((h) => v(l, () => s() ? h() : o(), null)), te(u);
428
428
  } else {
429
- const s = It(e.isSVG ? "g" : "div", e.isSVG), c = n && s.attachShadow ? s.attachShadow({
429
+ const s = Mt(e.isSVG ? "g" : "div", e.isSVG), c = n && s.attachShadow ? s.attachShadow({
430
430
  mode: "open"
431
431
  }) : s;
432
432
  Object.defineProperty(s, "_$host", {
@@ -443,7 +443,7 @@ function Ot(e) {
443
443
  }
444
444
  ), t;
445
445
  }
446
- const Mt = 5e3, At = (e) => {
446
+ const Dt = 5e3, Ft = (e) => {
447
447
  let n = null;
448
448
  const t = () => {
449
449
  n !== null && (window.clearTimeout(n), n = null);
@@ -462,7 +462,7 @@ const Mt = 5e3, At = (e) => {
462
462
  show: !1
463
463
  }
464
464
  }), n = null;
465
- }, Mt);
465
+ }, Dt);
466
466
  },
467
467
  clear: () => {
468
468
  t(), e.setState({
@@ -474,94 +474,94 @@ const Mt = 5e3, At = (e) => {
474
474
  });
475
475
  }
476
476
  };
477
- }, Ke = (e, n) => {
477
+ }, Xe = (e, n) => {
478
478
  if (!n) return e;
479
479
  const t = { ...e };
480
480
  for (const r in n)
481
- n[r] && typeof n[r] == "object" && !Array.isArray(n[r]) ? t[r] = Ke(e[r], n[r]) : t[r] = n[r];
481
+ n[r] && typeof n[r] == "object" && !Array.isArray(n[r]) ? t[r] = Xe(e[r], n[r]) : t[r] = n[r];
482
482
  return t;
483
- }, Dt = (e, n) => {
483
+ }, Lt = (e, n) => {
484
484
  let t;
485
485
  return (...r) => {
486
486
  clearTimeout(t), t = window.setTimeout(() => e(...r), n);
487
487
  };
488
- }, Ft = "echo_", K = "echo-pages", Ge = (e) => {
488
+ }, Nt = "echo_", K = "echo-pages", Je = (e) => {
489
489
  if (!e || e === "/") return "/";
490
490
  const n = e.split("/");
491
491
  return n.length <= 4 ? e : `/${n[1]}/.../${n[n.length - 1]}`;
492
- }, Xe = () => {
492
+ }, Ze = () => {
493
493
  window.dispatchEvent(new Event("echo-storage-change"));
494
- }, Je = (e) => `${Ft}${e}`, G = (e, n) => {
494
+ }, Qe = (e) => `${Nt}${e}`, G = (e, n) => {
495
495
  try {
496
- const t = localStorage.getItem(Je(e));
496
+ const t = localStorage.getItem(Qe(e));
497
497
  return t ? JSON.parse(t) : n;
498
498
  } catch {
499
499
  return n;
500
500
  }
501
- }, ie = (e, n) => {
501
+ }, le = (e, n) => {
502
502
  try {
503
- localStorage.setItem(Je(e), JSON.stringify(n));
503
+ localStorage.setItem(Qe(e), JSON.stringify(n));
504
504
  } catch (t) {
505
505
  console.warn("Failed to save to localStorage:", t);
506
506
  }
507
- }, Pe = () => {
507
+ }, Te = () => {
508
508
  const e = window.location.pathname || "/", n = window.location.search;
509
509
  return `${e}${n}`;
510
- }, Lt = (e, n) => {
510
+ }, jt = (e, n) => {
511
511
  try {
512
512
  if (!n.feedback.hasUserInteracted && n.drawing.shapes.length < 1) return;
513
513
  const t = {
514
514
  message: n.feedback.message,
515
515
  customInputValues: n.feedback.customInputValues
516
- }, r = G(K, {}), a = Ge(e);
516
+ }, r = G(K, {}), a = Je(e);
517
517
  (t || n.drawing.shapes.length > 0) && (r[a] = {
518
518
  ...r[a] || {},
519
519
  ...t ? { feedback: t } : {},
520
520
  drawing: {
521
521
  shapes: n.drawing.shapes
522
522
  }
523
- }), ie(K, r), Xe();
523
+ }), le(K, r), Ze();
524
524
  } catch (t) {
525
525
  console.warn("Failed to save page state:", t);
526
526
  }
527
- }, Te = (e) => {
527
+ }, Oe = (e) => {
528
528
  try {
529
529
  return G(K, {})[e];
530
530
  } catch (n) {
531
531
  console.error("Failed to load page state:", n);
532
532
  return;
533
533
  }
534
- }, Ze = (e) => {
534
+ }, et = (e) => {
535
535
  try {
536
536
  const n = G(K, {});
537
- delete n[e], ie(K, n), Xe();
537
+ delete n[e], le(K, n), Ze();
538
538
  } catch (n) {
539
539
  console.error("Failed to clear page state:", n);
540
540
  }
541
- }, Qe = () => {
541
+ }, tt = () => {
542
542
  try {
543
543
  const e = G(K, {});
544
544
  return Object.keys(e).length;
545
545
  } catch (e) {
546
546
  return console.error("Failed to get stored pages count:", e), 0;
547
547
  }
548
- }, ke = () => {
548
+ }, Ce = () => {
549
549
  try {
550
550
  const e = G(K, {});
551
551
  return Object.entries(e).map(([n, t]) => ({
552
- path: Ge(n),
552
+ path: Je(n),
553
553
  state: t
554
554
  }));
555
555
  } catch (e) {
556
556
  return console.error("Failed to get stored pages:", e), [];
557
557
  }
558
- }, jt = (e) => Dt((n, t, r = !1) => {
559
- (!r || t.feedback.message.trim().length > 0 || t.drawing.shapes.length > 0) && (Lt(n, t), e.setState({ pagesCount: Qe() }));
560
- }, 1e3), ze = Symbol("store-raw"), Z = Symbol("store-node"), j = Symbol("store-has"), et = Symbol("store-self");
561
- function tt(e) {
562
- let n = e[R];
563
- if (!n && (Object.defineProperty(e, R, {
564
- value: n = new Proxy(e, Vt)
558
+ }, qt = (e) => Lt((n, t, r = !1) => {
559
+ (!r || t.feedback.message.trim().length > 0 || t.drawing.shapes.length > 0) && (jt(n, t), e.setState({ pagesCount: tt() }));
560
+ }, 1e3), Ie = Symbol("store-raw"), Z = Symbol("store-node"), N = Symbol("store-has"), nt = Symbol("store-self");
561
+ function rt(e) {
562
+ let n = e[Y];
563
+ if (!n && (Object.defineProperty(e, Y, {
564
+ value: n = new Proxy(e, Wt)
565
565
  }), !Array.isArray(e))) {
566
566
  const t = Object.keys(e), r = Object.getOwnPropertyDescriptors(e);
567
567
  for (let a = 0, o = t.length; a < o; a++) {
@@ -574,67 +574,67 @@ function tt(e) {
574
574
  }
575
575
  return n;
576
576
  }
577
- function me(e) {
577
+ function we(e) {
578
578
  let n;
579
- return e != null && typeof e == "object" && (e[R] || !(n = Object.getPrototypeOf(e)) || n === Object.prototype || Array.isArray(e));
579
+ return e != null && typeof e == "object" && (e[Y] || !(n = Object.getPrototypeOf(e)) || n === Object.prototype || Array.isArray(e));
580
580
  }
581
- function se(e, n = /* @__PURE__ */ new Set()) {
581
+ function ce(e, n = /* @__PURE__ */ new Set()) {
582
582
  let t, r, a, o;
583
- if (t = e != null && e[ze]) return t;
584
- if (!me(e) || n.has(e)) return e;
583
+ if (t = e != null && e[Ie]) return t;
584
+ if (!we(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 = se(a, n)) !== a && (e[i] = r);
588
+ a = e[i], (r = ce(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 = se(a, n)) !== a && (e[o] = r));
593
+ o = i[s], !l[o].get && (a = e[o], (r = ce(a, n)) !== a && (e[o] = r));
594
594
  }
595
595
  return e;
596
596
  }
597
- function ve(e, n) {
597
+ function ye(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 le(e, n, t) {
603
+ function de(e, n, t) {
604
604
  if (e[n]) return e[n];
605
- const [r, a] = A(t, {
605
+ const [r, a] = T(t, {
606
606
  equals: !1,
607
607
  internal: !0
608
608
  });
609
609
  return r.$ = a, e[n] = r;
610
610
  }
611
- function Nt(e, n) {
611
+ function Rt(e, n) {
612
612
  const t = Reflect.getOwnPropertyDescriptor(e, n);
613
- return !t || t.get || !t.configurable || n === R || n === Z || (delete t.value, delete t.writable, t.get = () => e[R][n]), t;
613
+ return !t || t.get || !t.configurable || n === Y || n === Z || (delete t.value, delete t.writable, t.get = () => e[Y][n]), t;
614
614
  }
615
- function nt(e) {
616
- $e() && le(ve(e, Z), et)();
615
+ function ot(e) {
616
+ Pe() && de(ye(e, Z), nt)();
617
617
  }
618
- function qt(e) {
619
- return nt(e), Reflect.ownKeys(e);
618
+ function Vt(e) {
619
+ return ot(e), Reflect.ownKeys(e);
620
620
  }
621
- const Vt = {
621
+ const Wt = {
622
622
  get(e, n, t) {
623
- if (n === ze) return e;
624
- if (n === R) return t;
625
- if (n === Fe)
626
- return nt(e), t;
627
- const r = ve(e, Z), a = r[n];
623
+ if (n === Ie) return e;
624
+ if (n === Y) return t;
625
+ if (n === Ne)
626
+ return ot(e), t;
627
+ const r = ye(e, Z), a = r[n];
628
628
  let o = a ? a() : e[n];
629
- if (n === Z || n === j || n === "__proto__") return o;
629
+ if (n === Z || n === N || n === "__proto__") return o;
630
630
  if (!a) {
631
631
  const i = Object.getOwnPropertyDescriptor(e, n);
632
- $e() && (typeof o != "function" || e.hasOwnProperty(n)) && !(i && i.get) && (o = le(r, n, o)());
632
+ Pe() && (typeof o != "function" || e.hasOwnProperty(n)) && !(i && i.get) && (o = de(r, n, o)());
633
633
  }
634
- return me(o) ? tt(o) : o;
634
+ return we(o) ? rt(o) : o;
635
635
  },
636
636
  has(e, n) {
637
- return n === ze || n === R || n === Fe || n === Z || n === j || n === "__proto__" ? !0 : ($e() && le(ve(e, j), n)(), n in e);
637
+ return n === Ie || n === Y || n === Ne || n === Z || n === N || n === "__proto__" ? !0 : (Pe() && de(ye(e, N), n)(), n in e);
638
638
  },
639
639
  set() {
640
640
  return !0;
@@ -642,37 +642,37 @@ const Vt = {
642
642
  deleteProperty() {
643
643
  return !0;
644
644
  },
645
- ownKeys: qt,
646
- getOwnPropertyDescriptor: Nt
645
+ ownKeys: Vt,
646
+ getOwnPropertyDescriptor: Rt
647
647
  };
648
- function be(e, n, t, r = !1) {
648
+ function pe(e, n, t, r = !1) {
649
649
  if (!r && e[n] === t) return;
650
650
  const a = e[n], o = e.length;
651
- t === void 0 ? (delete e[n], e[j] && e[j][n] && a !== void 0 && e[j][n].$()) : (e[n] = t, e[j] && e[j][n] && a === void 0 && e[j][n].$());
652
- let i = ve(e, Z), l;
653
- if ((l = le(i, n, a)) && l.$(() => t), Array.isArray(e) && e.length !== o) {
651
+ t === void 0 ? (delete e[n], e[N] && e[N][n] && a !== void 0 && e[N][n].$()) : (e[n] = t, e[N] && e[N][n] && a === void 0 && e[N][n].$());
652
+ let i = ye(e, Z), l;
653
+ if ((l = de(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 = le(i, "length", o)) && l.$(e.length);
655
+ (l = de(i, "length", o)) && l.$(e.length);
656
656
  }
657
- (l = i[et]) && l.$();
657
+ (l = i[nt]) && l.$();
658
658
  }
659
- function rt(e, n) {
659
+ function at(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
- be(e, a, n[a]);
663
+ pe(e, a, n[a]);
664
664
  }
665
665
  }
666
666
  function Bt(e, n) {
667
- if (typeof n == "function" && (n = n(e)), n = se(n), Array.isArray(n)) {
667
+ if (typeof n == "function" && (n = n(e)), n = ce(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 && be(e, t, a);
672
+ e[t] !== a && pe(e, t, a);
673
673
  }
674
- be(e, "length", r);
675
- } else rt(e, n);
674
+ pe(e, "length", r);
675
+ } else at(e, n);
676
676
  }
677
677
  function oe(e, n, t = []) {
678
678
  let r, a = e;
@@ -688,8 +688,8 @@ function oe(e, n, t = []) {
688
688
  r(e[s], s) && oe(e, [s].concat(n), t);
689
689
  return;
690
690
  } else if (l && i === "object") {
691
- const { from: s = 0, to: c = e.length - 1, by: d = 1 } = r;
692
- for (let h = s; h <= c; h += d)
691
+ const { from: s = 0, to: c = e.length - 1, by: u = 1 } = r;
692
+ for (let h = s; h <= c; h += u)
693
693
  oe(e, [h].concat(n), t);
694
694
  return;
695
695
  } else if (n.length > 1) {
@@ -699,18 +699,18 @@ function oe(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 = se(o), r === void 0 || me(a) && me(o) && !Array.isArray(o) ? rt(a, o) : be(e, r, o));
702
+ typeof o == "function" && (o = o(a, t), o === a) || r === void 0 && o == null || (o = ce(o), r === void 0 || we(a) && we(o) && !Array.isArray(o) ? at(a, o) : pe(e, r, o));
703
703
  }
704
- function Ie(...[e, n]) {
705
- const t = se(e || {}), r = Array.isArray(t), a = tt(t);
704
+ function Me(...[e, n]) {
705
+ const t = ce(e || {}), r = Array.isArray(t), a = rt(t);
706
706
  function o(...i) {
707
- ct(() => {
707
+ ut(() => {
708
708
  r && i.length === 1 ? Bt(t, i[0]) : oe(t, i);
709
709
  });
710
710
  }
711
711
  return [a, o];
712
712
  }
713
- const B = {
713
+ const V = {
714
714
  rectangle: {
715
715
  id: "rectangle",
716
716
  label: "Highlight",
@@ -731,12 +731,12 @@ const B = {
731
731
  default: 1
732
732
  }
733
733
  }
734
- }, Wt = (e) => {
734
+ }, _t = (e) => {
735
735
  const n = e.replace("#", ""), t = Number.parseInt(n.slice(0, 2), 16) / 255, r = Number.parseInt(n.slice(2, 2), 16) / 255, a = Number.parseInt(n.slice(4, 2), 16) / 255;
736
736
  return 0.2126 * t + 0.7152 * r + 0.0722 * a;
737
- }, _t = (e) => Wt(e) < 0.5 ? "#FFFFFF" : "#000000";
738
- let N = [], O = null, Q = null, ee = null;
739
- const Se = (e, n) => (...t) => {
737
+ }, Ut = (e) => _t(e) < 0.5 ? "#FFFFFF" : "#000000";
738
+ let j = [], M = null, Q = null, ee = null;
739
+ const $e = (e, n) => (...t) => {
740
740
  const r = (o) => {
741
741
  if (typeof o == "string") return o;
742
742
  if (o instanceof Error) return o.stack || o.message;
@@ -754,19 +754,19 @@ const Se = (e, n) => (...t) => {
754
754
  return "[Unable to stringify value]";
755
755
  }
756
756
  }, a = t.map(r).join(" ");
757
- N.push({
757
+ j.push({
758
758
  type: e,
759
759
  message: a,
760
760
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
761
- }), N.length > 1e3 && (N = N.slice(-1e3)), n.apply(console, t);
761
+ }), j.length > 1e3 && (j = j.slice(-1e3)), n.apply(console, t);
762
762
  }, Ht = () => {
763
- O || (O = {
763
+ M || (M = {
764
764
  log: console.log,
765
765
  warn: console.warn,
766
766
  error: console.error
767
767
  }, Q = window.onerror, ee = window.onunhandledrejection, window.onerror = (e, n, t, r, a) => {
768
768
  const o = (a == null ? void 0 : a.stack) || (a == null ? void 0 : a.message) || e;
769
- return N.push({
769
+ return j.push({
770
770
  type: "error",
771
771
  message: `Uncaught Error: ${o}
772
772
  Location: ${n}:${t}:${r}`,
@@ -774,36 +774,36 @@ Location: ${n}:${t}:${r}`,
774
774
  }), Q ? Q(e, n, t, r, a) : !1;
775
775
  }, window.onunhandledrejection = (e) => {
776
776
  const n = e.reason;
777
- N.push({
777
+ j.push({
778
778
  type: "error",
779
779
  message: `Unhandled Promise Rejection: ${(n == null ? void 0 : n.stack) || (n == null ? void 0 : n.message) || n}`,
780
780
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
781
781
  }), ee && ee(e);
782
- }, console.log = Se("log", O.log), console.warn = Se("warn", O.warn), console.error = Se("error", O.error), window.addEventListener("error", (e) => {
782
+ }, console.log = $e("log", M.log), console.warn = $e("warn", M.warn), console.error = $e("error", M.error), window.addEventListener("error", (e) => {
783
783
  const { message: n, filename: t, lineno: r, colno: a, error: o } = e, i = (o == null ? void 0 : o.stack) || (o == null ? void 0 : o.message) || n;
784
- N.push({
784
+ j.push({
785
785
  type: "error",
786
786
  message: `Uncaught Error: ${i}
787
787
  Location: ${t}:${r}:${a}`,
788
788
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
789
789
  });
790
790
  }));
791
- }, Ut = () => {
792
- O && (console.log = O.log, console.warn = O.warn, console.error = O.error, O = null), Q && (window.onerror = Q, Q = null), ee && (window.onunhandledrejection = ee, ee = null), window.removeEventListener("error", () => {
793
- }), N = [];
794
- }, Yt = () => [...N], Rt = () => {
791
+ }, Yt = () => {
792
+ M && (console.log = M.log, console.warn = M.warn, console.error = M.error, M = null), Q && (window.onerror = Q, Q = null), ee && (window.onunhandledrejection = ee, ee = null), window.removeEventListener("error", () => {
793
+ }), j = [];
794
+ }, Kt = () => [...j], Gt = () => {
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
- }, he = (e, { useClientCoords: n = !1 } = {}) => {
797
+ }, me = (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,
801
801
  y: r ? n ? r.clientY : r.pageY : n ? e.clientY : e.pageY
802
802
  };
803
- }, Ve = (e, n) => {
803
+ }, We = (e, n) => {
804
804
  const t = n.x - e.x, r = n.y - e.y;
805
805
  return Math.sqrt(t * t + r * r);
806
- }, ot = (e) => {
806
+ }, it = (e) => {
807
807
  if (e.length !== 2) return null;
808
808
  const [n, t] = e;
809
809
  return {
@@ -812,67 +812,82 @@ 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(" ")}`, we = window.EventTarget.prototype.addEventListener, J = window.EventTarget.prototype.removeEventListener;
816
- let ye = !1;
817
- const Gt = (e, n, t, r) => {
818
- we.call(e, n, t, r);
819
- }, Xt = (e, n, t, r) => {
820
- J.call(e, n, t, r);
821
- }, re = /* @__PURE__ */ new WeakMap(), Jt = (e) => {
822
- ye || (ye = !0, window.EventTarget.prototype.addEventListener = function(n, t, r) {
823
- if (!this || typeof this != "object")
824
- return we.call(this, n, t, r);
825
- const a = Qt(t, e);
826
- re.has(this) || re.set(this, /* @__PURE__ */ new Map());
827
- const o = { listener: t }, i = re.get(this);
828
- i && i.set(t, o), we.call(this, n, a, r);
815
+ }, Xt = (e) => e.length < 2 ? null : `M ${e[0].x} ${e[0].y} ${e.slice(1).map((n) => `L ${n.x} ${n.y}`).join(" ")}`, be = window.EventTarget.prototype.addEventListener, J = window.EventTarget.prototype.removeEventListener;
816
+ let xe = !1, ae = null;
817
+ const re = /* @__PURE__ */ new WeakMap(), Jt = (e) => {
818
+ ae = e;
819
+ }, ue = (e) => {
820
+ if (!ae || !e)
821
+ return !1;
822
+ if (e === ae) return !0;
823
+ const n = e.getRootNode();
824
+ if (n && n.nodeName === "#document") {
825
+ const r = n.querySelector("#top-layer");
826
+ if (r != null && r.contains(e))
827
+ return !0;
828
+ }
829
+ let t = e;
830
+ for (; t; ) {
831
+ if (t.getRootNode() === ae)
832
+ return !0;
833
+ t = t.parentNode;
834
+ }
835
+ return !1;
836
+ }, Zt = (e) => {
837
+ xe || (xe = !0, window.EventTarget.prototype.addEventListener = function(n, t, r) {
838
+ if (!t || typeof t != "function")
839
+ return be.call(this, n, t, r);
840
+ if (!(this instanceof Node && !ue(this)))
841
+ return be.call(this, n, t, r);
842
+ const o = en(t, e);
843
+ re.has(this) || re.set(this, /* @__PURE__ */ new Map()), re.get(this).set(t, o), be.call(this, n, o, r);
829
844
  }, window.EventTarget.prototype.removeEventListener = function(n, t, r) {
830
- if (!this || typeof this != "object")
845
+ if (!t || typeof this != "object")
831
846
  return J.call(this, n, t, r);
832
- const a = re.get(this);
833
- if (!a) {
834
- J.call(this, n, t, r);
835
- return;
836
- }
837
- const o = a.get(t);
838
- o ? (J.call(this, n, o.listener, r), a.delete(t), a.size === 0 && re.delete(this)) : J.call(this, n, t, r);
847
+ if (this instanceof Node && ue(this))
848
+ return J.call(this, n, t, r);
849
+ const o = re.get(this);
850
+ if (!o)
851
+ return J.call(this, n, t, r);
852
+ const i = o.get(t);
853
+ i ? (J.call(this, n, i, r), o.delete(t), o.size === 0 && re.delete(this)) : J.call(this, n, t, r);
839
854
  });
840
- }, Zt = () => {
841
- ye && (window.EventTarget.prototype.addEventListener = we, window.EventTarget.prototype.removeEventListener = J, ye = !1);
842
- }, M = (e) => {
843
- const { event: n, callback: t, onMount: r, onCleanup: a, useOriginal: o = !0 } = e;
844
- pe(() => {
845
- r == null || r(), o ? Gt(window, n, t) : window.addEventListener(n, t);
855
+ }, Qt = () => {
856
+ xe && (window.EventTarget.prototype.addEventListener = be, window.EventTarget.prototype.removeEventListener = J, xe = !1, ae = null);
857
+ }, A = (e) => {
858
+ const { event: n, callback: t, onMount: r, onCleanup: a } = e;
859
+ ke(() => {
860
+ r == null || r(), window.addEventListener(n, t);
846
861
  }), te(() => {
847
- a == null || a(), o ? Xt(window, n, t) : window.removeEventListener(n, t);
862
+ a == null || a(), window.removeEventListener(n, t);
848
863
  });
849
- }, Oe = (e) => {
864
+ }, Ae = (e) => {
850
865
  const { target: n, options: t, callback: r, onMount: a, onCleanup: o } = e, i = new MutationObserver(r);
851
- pe(() => {
866
+ ke(() => {
852
867
  a == null || a(), i.observe(n, t);
853
868
  }), te(() => {
854
869
  o == null || o(), i.disconnect();
855
870
  });
856
- }, Qt = (e, n) => function(t) {
857
- n(t), typeof e == "function" ? e.call(this, t) : e.handleEvent(t);
858
- }, en = (e) => e.hasAttribute("data-hide-when-drawing"), tn = async () => {
871
+ }, en = (e, n) => function(t) {
872
+ (!(t.target instanceof Node) || !ue(t.target)) && n(t), e.call(this, t);
873
+ }, tn = (e) => e.hasAttribute("data-hide-when-drawing"), nn = async () => {
859
874
  var e;
860
875
  try {
861
876
  const n = document.createElement("style");
862
877
  document.head.appendChild(n), (e = n.sheet) == null || e.insertRule("body > div:last-child img { display: inline-block; }");
863
- const t = await ft(document.body, {
878
+ const t = await mt(document.body, {
864
879
  logging: !1,
865
880
  useCORS: !0,
866
881
  scale: window.devicePixelRatio,
867
882
  allowTaint: !0,
868
- ignoreElements: (r) => en(r)
883
+ ignoreElements: (r) => tn(r)
869
884
  });
870
885
  return n.remove(), t.toDataURL("image/png");
871
886
  } catch (n) {
872
887
  console.error("Failed to capture screenshot:", n);
873
888
  return;
874
889
  }
875
- }, nn = (e, n, t) => {
890
+ }, rn = (e, n, t) => {
876
891
  let r = `M0 0 H${e.width} V${e.height} H0 Z`;
877
892
  if (n.length === 2) {
878
893
  const [a, o] = n;
@@ -884,16 +899,16 @@ const Gt = (e, n, t, r) => {
884
899
  r += ` M${o.x} ${o.y} h${i.x - o.x} v${i.y - o.y} h${o.x - i.x} v${o.y - i.y}`;
885
900
  }
886
901
  return r;
887
- }, rn = (e) => {
902
+ }, on = (e) => {
888
903
  if (typeof e != "object" || e === null)
889
904
  throw new Error("Echo initialization failed: options must be an object");
890
905
  if (typeof e.onSubmit != "function")
891
906
  throw new Error("Echo initialization failed: onSubmit must be a function");
892
907
  if (e.primaryColor && !/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(e.primaryColor))
893
908
  throw new Error("Echo initialization failed: primaryColor must be a valid hex color");
894
- }, Be = 5, We = (e, n) => B[e].getCursor(n), on = (e, n, t) => {
909
+ }, Be = 5, _e = (e, n) => V[e].getCursor(n), an = (e, n, t) => {
895
910
  var l, s;
896
- const [r, a] = Ie({
911
+ const [r, a] = Me({
897
912
  isDrawing: !1,
898
913
  currentPoints: [],
899
914
  selectedShapeId: null,
@@ -901,19 +916,19 @@ const Gt = (e, n, t, r) => {
901
916
  showTooltip: !0,
902
917
  mousePosition: { x: 0, y: 0 },
903
918
  selectedColor: e.primaryColor,
904
- shapes: ((s = (l = Te(n)) == null ? void 0 : l.drawing) == null ? void 0 : s.shapes) || [],
919
+ shapes: ((s = (l = Oe(n)) == null ? void 0 : l.drawing) == null ? void 0 : s.shapes) || [],
905
920
  hasDrawn: !1,
906
921
  isDragging: !1,
907
922
  dragStartPos: null,
908
923
  initialClickPos: null,
909
924
  dragOffset: null,
910
- cursor: We("rectangle", e.primaryColor)
911
- }), o = (c, d = !1) => {
925
+ cursor: _e("rectangle", e.primaryColor)
926
+ }), o = (c, u = !1) => {
912
927
  if (c.selectedTool || c.selectedColor) {
913
- const h = c.selectedTool || r.selectedTool, g = c.selectedColor || r.selectedColor;
914
- c.cursor = We(h, g);
928
+ const h = c.selectedTool || r.selectedTool, f = c.selectedColor || r.selectedColor;
929
+ c.cursor = _e(h, f);
915
930
  }
916
- a(c), t == null || t(c, d);
931
+ a(c), t == null || t(c, u);
917
932
  }, i = {
918
933
  startDrawing: (c) => {
919
934
  o({
@@ -947,22 +962,22 @@ const Gt = (e, n, t, r) => {
947
962
  if (!h.classList.contains("echo-drawing-layer-mask") && !h.classList.contains("echo-shape"))
948
963
  return;
949
964
  }
950
- const d = he(c);
965
+ const u = me(c);
951
966
  if (c.target instanceof SVGElement && c.target.classList.contains("echo-shape")) {
952
967
  const h = c.target.dataset.shapeId;
953
968
  if (h && r.selectedShapeId === h) {
954
- const g = r.shapes.find((m) => m.id === h);
955
- if (g) {
956
- i.startDrag(d), i.updateDragOffset(g, d);
969
+ const f = r.shapes.find((m) => m.id === h);
970
+ if (f) {
971
+ i.startDrag(u), i.updateDragOffset(f, u);
957
972
  return;
958
973
  }
959
974
  }
960
975
  }
961
- i.setInitialClick(d);
976
+ i.setInitialClick(u);
962
977
  },
963
978
  handleMove: (c) => {
964
- const d = he(c, { useClientCoords: !0 }), h = he(c);
965
- if (o({ mousePosition: d }), r.isDragging && r.selectedShapeId && r.dragStartPos && r.shapes.find((m) => m.id === r.selectedShapeId)) {
979
+ const u = me(c, { useClientCoords: !0 }), h = me(c);
980
+ if (o({ mousePosition: u }), r.isDragging && r.selectedShapeId && r.dragStartPos && r.shapes.find((m) => m.id === r.selectedShapeId)) {
966
981
  const m = h.x - r.dragStartPos.x, y = h.y - r.dragStartPos.y, E = r.shapes.map((S) => S.id === r.selectedShapeId ? {
967
982
  ...S,
968
983
  points: S.points.map((C) => ({
@@ -974,7 +989,7 @@ const Gt = (e, n, t, r) => {
974
989
  return;
975
990
  }
976
991
  if (r.initialClickPos && !r.isDrawing) {
977
- Ve(r.initialClickPos, h) >= Be && i.startDrawing(r.initialClickPos);
992
+ We(r.initialClickPos, h) >= Be && i.startDrawing(r.initialClickPos);
978
993
  return;
979
994
  }
980
995
  r.isDrawing && i.updateDrawing(h);
@@ -985,10 +1000,10 @@ const Gt = (e, n, t, r) => {
985
1000
  return;
986
1001
  }
987
1002
  if (r.initialClickPos && !r.isDrawing) {
988
- const d = he(c);
989
- if (Ve(r.initialClickPos, d) < Be && c.target instanceof SVGElement && c.target.classList.contains("echo-shape")) {
990
- const g = c.target.dataset.shapeId;
991
- g && o({ selectedShapeId: g });
1003
+ const u = me(c);
1004
+ if (We(r.initialClickPos, u) < Be && c.target instanceof SVGElement && c.target.classList.contains("echo-shape")) {
1005
+ const f = c.target.dataset.shapeId;
1006
+ f && o({ selectedShapeId: f });
992
1007
  }
993
1008
  }
994
1009
  i.setInitialClick(null), i.finishDrawing();
@@ -1017,11 +1032,11 @@ const Gt = (e, n, t, r) => {
1017
1032
  initialClickPos: c
1018
1033
  });
1019
1034
  },
1020
- updateDragOffset: (c, d) => {
1035
+ updateDragOffset: (c, u) => {
1021
1036
  o({
1022
1037
  dragOffset: {
1023
- x: d.x - c.points[0].x,
1024
- y: d.y - c.points[0].y
1038
+ x: u.x - c.points[0].x,
1039
+ y: u.y - c.points[0].y
1025
1040
  }
1026
1041
  });
1027
1042
  }
@@ -1031,15 +1046,15 @@ const Gt = (e, n, t, r) => {
1031
1046
  setState: o,
1032
1047
  methods: i
1033
1048
  };
1034
- }, an = (e, n, t, r) => {
1049
+ }, sn = (e, n, t, r) => {
1035
1050
  var h;
1036
1051
  const a = (r == null ? void 0 : r.reduce(
1037
- (g, m) => (g[m.id] = m.defaultValue ?? (m.type === "checkbox" ? [] : ""), g),
1052
+ (f, m) => (f[m.id] = m.defaultValue ?? (m.type === "checkbox" ? [] : ""), f),
1038
1053
  {}
1039
- )) || {}, o = Te(n), i = (o == null ? void 0 : o.feedback.customInputValues) || {}, l = {
1054
+ )) || {}, o = Oe(n), i = (o == null ? void 0 : o.feedback.customInputValues) || {}, l = {
1040
1055
  ...a,
1041
1056
  ...i
1042
- }, [s, c] = Ie({
1057
+ }, [s, c] = Me({
1043
1058
  message: ((h = o == null ? void 0 : o.feedback) == null ? void 0 : h.message) || "",
1044
1059
  screenshot: void 0,
1045
1060
  isCapturing: !1,
@@ -1049,13 +1064,13 @@ const Gt = (e, n, t, r) => {
1049
1064
  });
1050
1065
  return {
1051
1066
  state: s,
1052
- setState: (g, m = !1) => {
1053
- const y = "isCapturing" in g || "isMinimized" in g || m;
1054
- !y && !s.hasUserInteracted && c({ hasUserInteracted: !0 }), c(g), (s.hasUserInteracted || y) && (t == null || t(g, m));
1067
+ setState: (f, m = !1) => {
1068
+ const y = "isCapturing" in f || "isMinimized" in f || m;
1069
+ !y && !s.hasUserInteracted && c({ hasUserInteracted: !0 }), c(f), (s.hasUserInteracted || y) && (t == null || t(f, m));
1055
1070
  }
1056
1071
  };
1057
- }, sn = (e, n) => {
1058
- const [t, r] = Ie({
1072
+ }, ln = (e, n) => {
1073
+ const [t, r] = Me({
1059
1074
  text: e.textConfig,
1060
1075
  isOpen: !1,
1061
1076
  primaryColor: e.primaryColor,
@@ -1069,7 +1084,7 @@ const Gt = (e, n, t, r) => {
1069
1084
  height: document.documentElement.scrollHeight
1070
1085
  },
1071
1086
  isStoredFeedbackOpen: !1,
1072
- pagesCount: Qe(),
1087
+ pagesCount: tt(),
1073
1088
  welcomeMessageIsClosing: !1,
1074
1089
  position: e.position,
1075
1090
  customInputs: e.customInputs
@@ -1078,52 +1093,52 @@ const Gt = (e, n, t, r) => {
1078
1093
  state: t,
1079
1094
  setState: r
1080
1095
  };
1081
- }, _e = (e) => {
1096
+ }, Ue = (e) => {
1082
1097
  var n;
1083
1098
  return ((n = e.customInputs) == null ? void 0 : n.reduce(
1084
1099
  (t, r) => (t[r.id] = r.defaultValue ?? (r.type === "checkbox" ? [] : ""), t),
1085
1100
  {}
1086
1101
  )) || {};
1087
- }, ln = (e) => {
1088
- let n = Pe();
1089
- const t = sn(e), r = jt(t), a = At(t), o = an(
1102
+ }, cn = (e) => {
1103
+ let n = Te();
1104
+ const t = ln(e), r = qt(t), a = Ft(t), o = sn(
1090
1105
  e,
1091
1106
  n,
1092
- (c, d) => {
1107
+ (c, u) => {
1093
1108
  r(
1094
1109
  n,
1095
1110
  {
1096
1111
  feedback: { ...o.state, ...c },
1097
1112
  drawing: i.state
1098
1113
  },
1099
- d
1114
+ u
1100
1115
  );
1101
1116
  },
1102
1117
  e.customInputs
1103
- ), i = on(e, n, (c, d) => {
1118
+ ), i = an(e, n, (c, u) => {
1104
1119
  r(
1105
1120
  n,
1106
1121
  {
1107
1122
  feedback: o.state,
1108
1123
  drawing: { ...i.state, ...c }
1109
1124
  },
1110
- d
1125
+ u
1111
1126
  );
1112
1127
  }), l = (c) => {
1113
1128
  n = c;
1114
- const d = Te(n), h = {
1115
- ..._e(e),
1116
- ...d == null ? void 0 : d.feedback.customInputValues
1129
+ const u = Oe(n), h = {
1130
+ ...Ue(e),
1131
+ ...u == null ? void 0 : u.feedback.customInputValues
1117
1132
  };
1118
1133
  o.setState({
1119
- message: (d == null ? void 0 : d.feedback.message) || "",
1134
+ message: (u == null ? void 0 : u.feedback.message) || "",
1120
1135
  customInputValues: h,
1121
1136
  hasUserInteracted: !1
1122
1137
  }), i.setState({
1123
- shapes: (d == null ? void 0 : d.drawing.shapes) || []
1138
+ shapes: (u == null ? void 0 : u.drawing.shapes) || []
1124
1139
  });
1125
1140
  }, s = () => {
1126
- Ze(n);
1141
+ et(n);
1127
1142
  const c = {
1128
1143
  feedback: {
1129
1144
  message: "",
@@ -1131,7 +1146,7 @@ const Gt = (e, n, t, r) => {
1131
1146
  isCapturing: !1,
1132
1147
  isMinimized: !1,
1133
1148
  hasUserInteracted: !1,
1134
- customInputValues: _e(e)
1149
+ customInputValues: Ue(e)
1135
1150
  },
1136
1151
  drawing: {
1137
1152
  isDrawing: !1,
@@ -1165,35 +1180,35 @@ const Gt = (e, n, t, r) => {
1165
1180
  submit: async (c) => {
1166
1181
  t.setState({ isOpen: !1 });
1167
1182
  try {
1168
- const d = await e.onSubmit(c);
1169
- return d instanceof Response && !d.ok ? (a.show({ type: "error", message: "Submission failed" }), d) : (s(), a.show({ type: "success", message: "Feedback submitted" }), d);
1183
+ const u = await e.onSubmit(c);
1184
+ return u instanceof Response && !u.ok ? (a.show({ type: "error", message: "Submission failed" }), u) : (s(), a.show({ type: "success", message: "Feedback submitted" }), u);
1170
1185
  } catch {
1171
1186
  a.show({ type: "error", message: "Submission failed" });
1172
1187
  }
1173
1188
  }
1174
1189
  }
1175
1190
  };
1176
- }, at = dt(), cn = (e) => {
1177
- const n = ln({
1191
+ }, st = ht(), dn = (e) => {
1192
+ const n = cn({
1178
1193
  primaryColor: e.primaryColor,
1179
1194
  onSubmit: e.onSubmit,
1180
1195
  textConfig: e.textConfig,
1181
1196
  position: e.position,
1182
1197
  customInputs: e.customInputs
1183
1198
  });
1184
- return f(at.Provider, {
1199
+ return g(st.Provider, {
1185
1200
  value: n,
1186
1201
  get children() {
1187
1202
  return e.children;
1188
1203
  }
1189
1204
  });
1190
1205
  }, $ = () => {
1191
- const e = ut(at);
1206
+ const e = gt(st);
1192
1207
  if (!e)
1193
1208
  throw new Error("useEchoStore must be used within EchoProvider");
1194
1209
  return e;
1195
- }, dn = (e) => {
1196
- const [n, t] = A({
1210
+ }, un = (e) => {
1211
+ const [n, t] = T({
1197
1212
  width: document.documentElement.clientWidth,
1198
1213
  height: document.documentElement.scrollHeight
1199
1214
  }), r = () => {
@@ -1205,11 +1220,11 @@ const Gt = (e, n, t, r) => {
1205
1220
  }));
1206
1221
  });
1207
1222
  };
1208
- return M({
1223
+ return A({
1209
1224
  event: "resize",
1210
1225
  callback: r,
1211
1226
  onMount: r
1212
- }), Oe({
1227
+ }), Ae({
1213
1228
  target: document.documentElement,
1214
1229
  options: {
1215
1230
  childList: !0,
@@ -1218,13 +1233,13 @@ const Gt = (e, n, t, r) => {
1218
1233
  },
1219
1234
  callback: r
1220
1235
  }), n;
1221
- }, un = ({ onUrlChange: e }) => {
1222
- let n = Pe();
1236
+ }, hn = ({ onUrlChange: e }) => {
1237
+ let n = Te();
1223
1238
  const t = () => {
1224
- const r = Pe();
1239
+ const r = Te();
1225
1240
  r !== n && (n = r, e(r));
1226
1241
  };
1227
- M({ event: "popstate", callback: t }), M({ event: "pushstate", callback: t }), M({ event: "replacestate", callback: t }), Oe({
1242
+ A({ event: "popstate", callback: t }), A({ event: "pushstate", callback: t }), A({ event: "replacestate", callback: t }), Ae({
1228
1243
  target: document.documentElement,
1229
1244
  options: {
1230
1245
  childList: !0,
@@ -1232,9 +1247,9 @@ const Gt = (e, n, t, r) => {
1232
1247
  },
1233
1248
  callback: t
1234
1249
  });
1235
- }, 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}`;
1236
- 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>");
1237
- const mn = [
1250
+ }, gn = `*,*:before,*:after{box-sizing:border-box}.echo-root{position:absolute;top:0;left:0;z-index:var(--z-root);isolation:isolate;pointer-events:none;--z-root: 999999;--z-launcher: 2;--z-overlay: 1;--z-drawing-toolbar: 3;--z-drawing-tooltip: 3;--z-shape-actions: 3;--z-notification: 2;--z-welcome-message: 2;--z-widget-button: 2;--z-feedback-form: 4;--primary-color: #000;--primary-text-color: #fff;--error-color: #f44336;--success-color: var(--primary-color);--text-dark: #1a1a1a;--text-medium: #333;--text-light: #666;--text-lighter: #999;--border-color: rgba(0, 0, 0, .1);--border-color-light: rgba(0, 0, 0, .05);--border-color-medium: rgba(0, 0, 0, .08);--background-color: #fff;--primary-color-lighter: color-mix(in srgb, var(--primary-color) 100%, white 40%);--primary-color-lightest: color-mix(in srgb, var(--primary-color) 7%, white 100%);--hover-color: color-mix(in srgb, var(--primary-color) 80%, #fff);--shadow-color-dark: rgba(0, 0, 0, .6);--shadow-color-light: rgba(255, 255, 255, .1);--shadow-color-medium: rgba(0, 0, 0, .2);--shadow-sm: 0 1px 3px;--shadow-md: 0 4px 10px;--shadow-lg: 0 10px 20px;--shadow-black-sm: var(--shadow-sm) rgba(0, 0, 0, .5);--shadow-black-md: var(--shadow-md) rgba(0, 0, 0, .5);--shadow-black-lg: var(--shadow-lg) rgba(0, 0, 0, .5);--shadow-black-lightened-sm: var(--shadow-sm) var(--shadow-color-medium);--shadow-black-lightened-md: var(--shadow-md) var(--shadow-color-medium);--shadow-black-lightened-lg: var(--shadow-lg) var(--shadow-color-medium);--shadow-primary-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color) 60%, transparent 80%);--shadow-primary-md: var(--shadow-md) color-mix(in srgb, var(--primary-color) 50%, transparent 80%);--shadow-primary-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color) 40%, transparent 80%);--shadow-primary-lighter-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color-lighter) 70%, transparent 80%);--shadow-primary-lighter-md: var(--shadow-md) color-mix(in srgb, var(--primary-color-lighter) 60%, transparent 80%);--shadow-primary-lighter-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color-lighter) 50%, transparent 80%);--shadow-primary-lightest-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color-lightest) 70%, transparent 80%);--shadow-primary-lightest-md: var(--shadow-md) color-mix(in srgb, var(--primary-color-lightest) 60%, transparent 80%);--shadow-primary-lightest-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color-lightest) 50%, transparent 80%);--shadow-combined-sm: var(--shadow-primary-sm), var(--shadow-black-lightened-sm);--shadow-combined-md: var(--shadow-primary-md), var(--shadow-black-lightened-md);--shadow-combined-lg: var(--shadow-primary-lg), var(--shadow-black-lightened-lg);--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 20px;--spacing-2xl: 24px;--spacing-3xl: 32px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--font-xs: .8125rem;--font-sm: .875rem;--font-base: .9375rem;--font-md: 1rem;--font-lg: 1.125rem;--duration-fast: .1s;--duration-base: .2s;--duration-slow: .3s;--duration-slower: .4s;--duration-slowest: .6s;--ease-default: ease;--ease-in-out: ease-in-out;--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.16, 1, .3, 1)}.echo-stored-feedback{position:absolute;display:flex;flex-direction:column;bottom:calc(100% + var(--spacing-lg));right:0;width:320px;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-black-lightened-lg);animation:slideUpFade var(--duration-base) var(--ease-smooth);z-index:calc(var(--z-widget-button) + 1);transform-origin:bottom right;transition:all var(--duration-base) var(--ease-smooth)}.echo-stored-feedback-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg)}.echo-stored-feedback-header h3{margin:0;font-size:var(--font-md);font-weight:600}.echo-stored-feedback-list{max-height:400px;overflow-y:auto;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-stored-feedback-item{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--border-color-light);transition:all var(--duration-base) var(--ease-smooth);background:#fff;position:relative}.echo-stored-feedback-item:hover{background:var(--primary-color-lightest)}.echo-stored-feedback-item-current{background:var(--primary-color-lightest);padding-left:calc(var(--spacing-lg) - 3px)}.echo-stored-feedback-item-current:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--primary-color);border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.echo-stored-feedback-item:last-child{border-bottom:none;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-stored-feedback-item:last-child.echo-stored-feedback-item-current:before{border-bottom-left-radius:var(--radius-lg)}.echo-stored-feedback-content{flex:1;min-width:0;margin-right:var(--spacing-md)}.echo-stored-feedback-path{font-size:var(--font-sm);font-weight:500;color:var(--text-medium);margin-bottom:var(--spacing-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.echo-stored-feedback-preview{font-size:var(--font-xs);color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.echo-stored-feedback-actions{display:flex;align-items:center;gap:var(--spacing-sm)}.echo-stored-feedback-link{color:var(--text-light)}.echo-stored-feedback-link:hover{color:var(--primary-color)}.echo-stored-feedback-delete{color:var(--text-light);font-size:var(--font-xs);padding:var(--spacing-xs) var(--spacing-md)}.echo-stored-feedback-delete:hover{color:var(--error-color);background:color-mix(in srgb,var(--error-color) 10%,transparent)}.echo-stored-feedback-empty{padding:var(--spacing-3xl) var(--spacing-lg);text-align:center;color:var(--text-light);font-size:var(--font-sm);border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-launcher{position:fixed;z-index:var(--z-launcher);bottom:var(--spacing-xl);right:var(--spacing-xl);pointer-events:none}.echo-overlay{position:absolute;top:0;left:0;margin:0;padding:0;max-width:none;max-height:none;border:3px solid var(--primary-color);background:transparent}.echo-overlay::backdrop{background:transparent}[data-hidden=true],[data-hidden=false]{transition:opacity var(--duration-slow) var(--ease-in-out),visibility var(--duration-slow) var(--ease-in-out)}[data-hidden=true]{opacity:0;visibility:hidden;pointer-events:none}[data-hidden=false]{opacity:1;visibility:visible;pointer-events:auto;user-select:none;-webkit-user-select:none}.echo-launcher-button{z-index:var(--z-widget-button);position:relative;display:flex;align-items:center;justify-content:center;cursor:pointer;background:radial-gradient(circle at 40% 40%,var(--primary-color) 0%,var(--primary-color-lighter) 65%,var(--primary-color-lighter) 100%);border:none;border-radius:var(--radius-full);width:48px;height:48px;box-shadow:var(--shadow-black-md);transition:all var(--duration-slow) var(--ease-default),transform var(--duration-slower) var(--ease-smooth),opacity var(--duration-slow) var(--ease-in-out);will-change:transform}.echo-launcher-button:hover{box-shadow:var(--shadow-black-lg);transform:translateY(-2px)}.echo-launcher-button:active{transform:scale(.95)}.echo-launcher-button-count{position:absolute;top:calc(-1 * var(--spacing-xs));left:calc(-1 * var(--spacing-xs));background:var(--primary-color-lightest);color:var(--primary-color-lighter);border-radius:var(--radius-md);min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-black-sm);padding:0 var(--spacing-xs);font-weight:600;pointer-events:auto;cursor:pointer;transform-origin:center center;animation:popIn var(--duration-slow) var(--ease-bounce);transition:transform var(--duration-base) var(--ease-default)}.echo-launcher-button-count:hover{transform:scale(1.1)}.echo-feedback{position:fixed;bottom:var(--spacing-xl);right:var(--spacing-xl);width:min(calc(100vw - var(--spacing-xl) * 2),24rem);max-height:calc(100vh - var(--spacing-xl) * 2);z-index:var(--z-feedback-form);box-shadow:var(--shadow-black-lightened-lg);display:flex;flex-direction:column;gap:var(--spacing-lg);background:var(--background-color);border-radius:var(--radius-lg);overflow-y:auto;will-change:transform;padding:0 var(--spacing-lg)}.echo-feedback[data-minimized=true]{transition:transform .4s var(--ease-default),box-shadow .4s var(--ease-default);transform:translate(calc(100% - 48px),calc(100% - 48px));box-shadow:0 8px 16px #0003}.echo-feedback[data-minimized=true]:hover{cursor:pointer;transform:translate(calc(100% - 48px),calc(100% - 48px)) rotate(-2deg) scale(1.1);box-shadow:0 12px 24px #00000040}.echo-feedback[data-minimized=false]{transition:transform .4s var(--ease-smooth),box-shadow .4s var(--ease-smooth);transform:translate(0)}.echo-feedback[style*=transition]{pointer-events:none}.echo-feedback-content{display:flex;flex-direction:column;gap:var(--spacing-lg)}.echo-feedback-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg) 0;background-color:var(--background-color);position:sticky;top:0;z-index:1}.echo-feedback-footer{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg) 0;background-color:var(--background-color);position:sticky;bottom:0;z-index:1}.echo-feedback-title{font-size:var(--font-lg);font-weight:600;color:var(--text-dark);margin:0}.echo-feedback-header-actions{display:flex;gap:var(--spacing-xs);margin:calc(-1 * var(--spacing-sm)) calc(-1 * var(--spacing-sm)) calc(-1 * var(--spacing-sm)) 0}[data-hide-when-drawing=true]{opacity:1;visibility:visible;transition:opacity .3s ease-in-out,visibility .3s ease-in-out}[data-drawing=true] [data-hide-when-drawing=true]{opacity:0;visibility:hidden;pointer-events:none;user-select:none;-webkit-user-select:none}.echo-drawing-layer,.echo-drawing-layer-container{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;user-select:none;-webkit-user-select:none}.echo-drawing-layer-container svg{pointer-events:auto}.echo-drawing-toolbar{position:fixed;top:var(--spacing-xl);left:var(--spacing-xl);display:flex;flex-direction:column;gap:var(--spacing-sm);z-index:var(--z-drawing-toolbar);opacity:1;transition:opacity var(--duration-base) var(--ease-default)}.echo-drawing-toolbar-button{width:50px;height:50px;border-radius:var(--radius-full);border:2px solid #ddd;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:all var(--duration-base) var(--ease-default);box-shadow:var(--shadow-black-sm);position:relative}.echo-drawing-toolbar-icon{width:25px;height:25px;color:var(--primary-color);transition:color var(--duration-base) var(--ease-default)}.echo-drawing-toolbar-button:hover{transform:scale(1.05);border-color:var(--hover-color)}.echo-drawing-toolbar-button[data-selected=true]{background:var(--primary-color-lightest);border-color:var(--primary-color)}.echo-color-selector{position:relative}.echo-color-selector:hover .echo-drawing-toolbar-button{border-top-right-radius:0;border-bottom-right-radius:0;transform:scale(1.05);border-right-color:transparent;background:rgba(var(--primary-color),.9);border-color:var(--hover-color)}.echo-color-swatch-wrapper{position:absolute;left:calc(100% - 2px);top:50%;transform:translateY(-50%);height:52.5px;padding-right:var(--spacing-sm);display:none}.echo-color-selector:hover .echo-color-swatch-wrapper{display:block}.echo-color-swatch{height:100%;background:#fff;border-radius:var(--radius-md);border-top-left-radius:0;border-bottom-left-radius:0;padding:var(--spacing-sm);padding-left:var(--spacing-md);box-shadow:var(--shadow-black-sm);display:flex;align-items:center;gap:var(--spacing-sm);border:2px solid #ddd;border-left:none}.echo-color-selector:hover .echo-color-swatch{border-color:var(--hover-color)}.echo-color-swatch-button{width:24px;height:24px;border-radius:var(--radius-full);border:2px solid transparent;cursor:pointer;padding:0;transition:transform var(--duration-base) var(--ease-default)}.echo-color-swatch-button:hover{transform:scale(1.1)}.echo-color-swatch-button[data-selected=true]{border-color:var(--primary-color)}.echo-drawing-tooltip{display:flex;text-wrap:nowrap;position:fixed;background:#fff;padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-lg);box-shadow:var(--shadow-combined-sm);font-size:var(--font-sm);color:var(--primary-color);z-index:var(--z-drawing-tooltip);pointer-events:none;animation:slideDownFade var(--duration-slow) var(--ease-default);border:1px solid var(--primary-color);background:var(--primary-color-lightest)}.echo-shape-actions{position:fixed;z-index:var(--z-shape-actions);display:flex;gap:var(--spacing-xs);background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-combined-md);transform:translate(-50%,-100%) translateY(calc(-1 * var(--spacing-sm)));animation:popInSlideDown var(--duration-fast) var(--ease-default);cursor:default;pointer-events:auto;padding:var(--spacing-xs);border:1px solid var(--primary-color)}.echo-shape-actions-divider{width:1px;margin:var(--spacing-sm) 0;background:var(--border-color);pointer-events:none}.echo-shape-actions[hidden]{display:none}.echo-notification{position:absolute;z-index:var(--z-notification);bottom:70px;right:0;width:300px;padding:var(--spacing-2xl);border-radius:var(--radius-lg);font-size:var(--font-md);font-weight:500;box-shadow:var(--shadow-combined-md);background:#fff;border:1px solid var(--primary-color);transform-origin:bottom right;display:flex;flex-direction:column;align-items:center;gap:var(--spacing-xl);opacity:1;pointer-events:auto;transition:all var(--duration-base) var(--ease-smooth)}.echo-notification:not([data-empty=true]){animation:popInSlideUp var(--duration-slower) var(--ease-spring)}.echo-notification[data-empty=true]{opacity:0;pointer-events:none;transform:translateY(var(--spacing-sm)) scale(.95);transition:none}.echo-notification-hide{position:absolute;top:var(--spacing-lg);right:var(--spacing-lg);width:24px;height:24px;padding:var(--spacing-xs);border:none;background:transparent;color:var(--text-light);opacity:.7;cursor:pointer;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;transition:all var(--duration-base) var(--ease-bounce);flex-shrink:0}.echo-notification-hide:hover{opacity:1;background:var(--primary-color-lightest);transform:scale(1.1);color:var(--primary-color)}.echo-notification-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;transform:scale(1.5);background:var(--primary-color-lightest);padding:var(--spacing-md);border-radius:var(--radius-full);margin-top:var(--spacing-md);transition:all var(--duration-base) var(--ease-bounce)}.echo-notification[data-type=success]{border-color:var(--success-color)}.echo-notification[data-type=success] .echo-notification-icon{color:var(--success-color)}.echo-notification[data-type=error]{border-color:var(--error-color)}.echo-notification[data-type=error] .echo-notification-icon{color:var(--error-color);background:color-mix(in srgb,var(--error-color) 10%,white)}.echo-notification-content{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;padding:0 12px}.echo-notification-title{font-size:1rem;font-weight:600;color:#1a1a1a}.echo-notification-message{font-size:.875rem;font-weight:400;color:#666;line-height:1.4;max-width:100%}@media (max-width: 768px){.echo-notification{right:0;width:calc(100vw - 40px);height:auto;min-height:180px;-webkit-backdrop-filter:none;backdrop-filter:none;font-size:.9375rem;padding:20px;gap:16px;bottom:calc(100% + 20px)}.echo-notification-icon{transform:scale(1.3);padding:10px;margin-top:8px}.echo-notification-title{font-size:.9375rem}.echo-notification-message{font-size:.8125rem}}.echo-welcome-message{display:flex;align-items:center;gap:var(--spacing-xs);position:fixed;z-index:var(--z-welcome-message);background:var(--primary-color-lightest);border:1px solid var(--primary-color);color:var(--primary-color);padding:var(--spacing-md) var(--spacing-lg);border-radius:var(--radius-lg);font-size:var(--font-sm);font-weight:500;box-shadow:var(--shadow-combined-md);opacity:1;transform:translateY(0) scale(1);transition:all var(--duration-slow) var(--ease-smooth);animation:bounceIn var(--duration-slowest) var(--ease-bounce);user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;cursor:pointer;text-align:left}.echo-welcome-message:hover{transform:translateY(-2px) scale(1.02);background:var(--primary-color-lightest);box-shadow:var(--shadow-combined-lg)}.echo-welcome-message:active{transform:translateY(0) scale(.98)}.echo-welcome-message-close{width:20px;height:20px;padding:2px;margin-left:var(--spacing-xs);border:none;background:transparent;opacity:.7;cursor:pointer;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;transition:all var(--duration-base) var(--ease-default)}.echo-welcome-message-close:hover{opacity:1;background:var(--shadow-color-light);transform:scale(1.1)}.echo-welcome-message-close:active{transform:scale(.95)}.echo-welcome-message:after{content:"";position:absolute;bottom:-4px;right:17px;width:16px;height:16px;background:inherit;transform:rotate(45deg);border-radius:var(--radius-xs);border:1px solid var(--primary-color);z-index:-2}.echo-welcome-message:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:var(--primary-color-lightest);z-index:-1;border-radius:var(--radius-lg)}.echo-welcome-message-pulsar{content:"";display:inline-block;width:6px;height:6px;background:var(--primary-color);border-radius:50%;margin-right:8px;animation:pulse 1.5s var(--ease-in-out) infinite}.echo-button{display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius-md);font-weight:500;cursor:pointer;transition:all var(--duration-base) var(--ease-default);line-height:1}.echo-button:focus-visible{outline:2px solid var(--primary-color);outline-offset:2px}.echo-button-primary{background:var(--primary-color);color:#fff}.echo-button-primary:hover{background:var(--hover-color);transform:translateY(-1px)}.echo-button-primary:active{transform:translateY(0)}.echo-button-secondary{background:transparent;color:var(--text-light)}.echo-button-secondary:hover{background-color:var(--primary-color-lightest);color:var(--primary-color)}.echo-button-xs{padding:var(--spacing-xs);font-size:var(--font-xs)}.echo-button-sm{padding:var(--spacing-xs);font-size:var(--font-sm)}.echo-button-md{padding:var(--spacing-md) var(--spacing-2xl);font-size:var(--font-base)}.echo-button-lg{padding:var(--spacing-md) var(--spacing-3xl);font-size:var(--font-md)}@keyframes slideUpFade{0%{opacity:0;transform:translateY(var(--spacing-sm))}to{opacity:1;transform:translateY(0)}}@keyframes slideDownFade{0%{opacity:0;transform:translateY(calc(-1 * var(--spacing-sm)))}to{opacity:1;transform:translateY(0)}}@keyframes popIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes popInSlideUp{0%{opacity:0;transform:translateY(var(--spacing-sm)) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes popInSlideDown{0%{opacity:0;transform:translate(-50%,-100%) translateY(calc(-1 * var(--spacing-xs))) scale(.95)}to{opacity:1;transform:translate(-50%,-100%) translateY(calc(-1 * var(--spacing-sm))) scale(1)}}@keyframes bounceIn{0%{opacity:0;transform:translateY(var(--spacing-xl)) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.5}to{transform:scale(1);opacity:1}}.echo-inputs{display:flex;flex-direction:column;gap:1rem;margin-bottom:1rem}.echo-input{display:flex;flex-direction:column;gap:.5rem}.echo-input-label{font-size:.875rem;font-weight:500;color:var(--text-color)}.echo-input-required{color:#dc2626;margin-left:.25rem}.echo-input-field{width:100%;padding:.5rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:#fff;color:var(--text-medium);font-size:var(--font-sm);transition:all var(--duration-base) var(--ease-default)}.echo-input-field:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-input-field:disabled{opacity:.5}.echo-input-field::placeholder{color:var(--text-lighter)}textarea.echo-input-field{resize:vertical;max-width:100%;max-height:20rem;box-sizing:border-box}select.echo-input-field{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center;padding-right:2.5rem;cursor:pointer}.echo-input-options-wrapper{display:flex;flex-direction:column;gap:var(--spacing-xl);border:none;margin:0;padding:0}.echo-input-options{display:flex;flex-direction:column;gap:var(--spacing-sm);border:none;margin:0;padding:0}.echo-input-option{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:var(--spacing-xs);border-radius:var(--radius-sm);transition:all var(--duration-base) var(--ease-default)}.echo-input-option:hover{background:var(--primary-color-lightest)}.echo-input-option input[type=radio],.echo-input-option input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;width:18px;height:18px;border:1px solid var(--border-color);background-color:#fff;display:grid;place-content:center;cursor:pointer;transition:all var(--duration-base) var(--ease-default)}.echo-input-option input[type=radio]{border-radius:50%}.echo-input-option input[type=radio]:before{content:"";width:10px;height:10px;border-radius:50%;transform:scale(0);transition:transform var(--duration-base) var(--ease-default);background-color:var(--primary-color)}.echo-input-option input[type=radio]:checked:before{transform:scale(1)}.echo-input-option input[type=checkbox]{border-radius:var(--radius-sm)}.echo-input-option input[type=checkbox]:before{content:"";width:12px;height:12px;transform:scale(0);transition:all var(--duration-base) var(--ease-default);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");background-size:contain;background-repeat:no-repeat;background-position:center}.echo-input-option input[type=checkbox]:checked{background-color:var(--primary-color-lighter);border-color:var(--primary-color-lighter)}.echo-input-option input[type=checkbox]:checked:before{transform:scale(1)}.echo-input-option input[type=radio]:hover,.echo-input-option input[type=checkbox]:hover{border-color:var(--primary-color-lighter)}.echo-input-option input[type=radio]:focus,.echo-input-option input[type=checkbox]:focus{outline:none;border-color:var(--primary-color-lighter);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-input-option input[type=radio]:checked,.echo-input-option input[type=checkbox]:checked{border-color:var(--primary-color-lighter)}.echo-input-option span{font-size:var(--font-sm);color:var(--text-medium);-webkit-user-select:none;user-select:none}.echo-select{position:relative;width:100%}.echo-select-trigger{width:100%;padding:.5rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:#fff;color:var(--text-medium);font-size:var(--font-sm);transition:all var(--duration-base) var(--ease-default);cursor:pointer;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:.5rem;outline:none}.echo-select-trigger[data-placeholder=true]{color:var(--text-lighter)}.echo-select-trigger:hover{border-color:var(--border-color-medium)}.echo-select-trigger:focus,.echo-select-trigger[data-open=true]{border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-select-arrow{flex-shrink:0;transition:transform var(--duration-base) var(--ease-default)}.echo-select-trigger[data-open=true] .echo-select-arrow{transform:rotate(180deg)}.echo-select-dropdown{position:absolute;top:calc(100% + .25rem);left:0;right:0;background:#fff;border:1px solid var(--border-color-medium);border-radius:var(--radius-md);box-shadow:var(--shadow-black-lightened-md);max-height:15rem;overflow-y:auto;z-index:10;animation:slideDownFade var(--duration-base) var(--ease-default);padding:var(--spacing-xs)}.echo-select-option{width:100%;padding:.5rem .75rem;background:none;border:none;text-align:left;color:var(--text-medium);font-size:var(--font-sm);cursor:pointer;transition:all var(--duration-base) var(--ease-default);outline:none;border-radius:var(--radius-sm)}.echo-select-option:hover{background:var(--primary-color-lightest)}.echo-select-option:focus{background:var(--primary-color-lightest);box-shadow:0 0 0 1px var(--primary-color) inset}.echo-select-option[data-selected=true]{background:var(--primary-color-lightest);color:var(--primary-color);font-weight:500}select.echo-input-field{display:none}.visually-hidden{position:absolute;left:50%;bottom:0;transform:translate(-50%);width:1px;height:1px;padding:0;margin:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}`;
1251
+ 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>'), mn = /* @__PURE__ */ w("<button class=echo-color-swatch-button role=option>");
1252
+ const vn = [
1238
1253
  "#ff6b6b",
1239
1254
  // Soft Red
1240
1255
  "#69db7c",
@@ -1251,7 +1266,7 @@ const mn = [
1251
1266
  // Soft Orange
1252
1267
  "#e599f7"
1253
1268
  // Soft Pink
1254
- ], vn = {
1269
+ ], bn = {
1255
1270
  "#ff6b6b": "Soft Red",
1256
1271
  "#69db7c": "Soft Green",
1257
1272
  "#74c0fc": "Soft Blue",
@@ -1260,21 +1275,21 @@ const mn = [
1260
1275
  "#66d9e8": "Soft Cyan",
1261
1276
  "#ffa94d": "Soft Orange",
1262
1277
  "#e599f7": "Soft Pink"
1263
- }, Ce = (e) => vn[e] || "Primary", bn = () => {
1278
+ }, Ee = (e) => bn[e] || "Primary", wn = () => {
1264
1279
  const e = $();
1265
1280
  return (() => {
1266
1281
  var n = fn(), t = n.firstChild, r = t.nextSibling, a = r.firstChild;
1267
- return u(t, "aria-expanded", !1), v(a, f(_, {
1282
+ return d(t, "aria-expanded", !1), v(a, g(B, {
1268
1283
  get each() {
1269
- return [e.widget.state.primaryColor, ...mn];
1284
+ return [e.widget.state.primaryColor, ...vn];
1270
1285
  },
1271
1286
  children: (o) => (() => {
1272
- var i = gn();
1287
+ var i = mn();
1273
1288
  return i.$$click = () => e.drawing.setState({
1274
1289
  selectedColor: o
1275
1290
  }), o != null ? i.style.setProperty("background-color", o) : i.style.removeProperty("background-color"), b((l) => {
1276
- var s = `Select ${Ce(o)} color`, c = e.drawing.state.selectedColor === o, d = `${Ce(o)} color`, h = e.drawing.state.selectedColor === o;
1277
- return s !== l.e && u(i, "title", l.e = s), c !== l.t && u(i, "data-selected", l.t = c), d !== l.a && u(i, "aria-label", l.a = d), h !== l.o && u(i, "aria-selected", l.o = h), l;
1291
+ var s = `Select ${Ee(o)} color`, c = e.drawing.state.selectedColor === o, u = `${Ee(o)} color`, h = e.drawing.state.selectedColor === o;
1292
+ return s !== l.e && d(i, "title", l.e = s), c !== l.t && d(i, "data-selected", l.t = c), u !== l.a && d(i, "aria-label", l.a = u), h !== l.o && d(i, "aria-selected", l.o = h), l;
1278
1293
  }, {
1279
1294
  e: void 0,
1280
1295
  t: void 0,
@@ -1283,21 +1298,21 @@ const mn = [
1283
1298
  }), i;
1284
1299
  })()
1285
1300
  })), b((o) => {
1286
- var i = `Current color: ${Ce(e.drawing.state.selectedColor)}`, l = e.drawing.state.selectedColor;
1287
- return i !== o.e && u(t, "aria-label", o.e = i), l !== o.t && ((o.t = l) != null ? t.style.setProperty("background-color", l) : t.style.removeProperty("background-color")), o;
1301
+ var i = `Current color: ${Ee(e.drawing.state.selectedColor)}`, l = e.drawing.state.selectedColor;
1302
+ return i !== o.e && d(t, "aria-label", o.e = i), l !== o.t && ((o.t = l) != null ? t.style.setProperty("background-color", l) : t.style.removeProperty("background-color")), o;
1288
1303
  }, {
1289
1304
  e: void 0,
1290
1305
  t: void 0
1291
1306
  }), n;
1292
1307
  })();
1293
1308
  };
1294
- T(["click"]);
1295
- var wn = /* @__PURE__ */ w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="m9 18 6-6-6-6">');
1296
- const yn = (e) => (() => {
1297
- var n = wn();
1309
+ I(["click"]);
1310
+ var yn = /* @__PURE__ */ w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="m9 18 6-6-6-6">');
1311
+ const pn = (e) => (() => {
1312
+ var n = yn();
1298
1313
  return b((t) => {
1299
1314
  var r = e.size ?? 24, a = e.size ?? 24, o = e.fill ?? "none", i = e.stroke ?? "currentColor", l = e.strokeWidth ?? 2, s = e.class, c = e.style;
1300
- return r !== t.e && u(n, "width", t.e = r), a !== t.t && u(n, "height", t.t = a), o !== t.a && u(n, "fill", t.a = o), i !== t.o && u(n, "stroke", t.o = i), l !== t.i && u(n, "stroke-width", t.i = l), s !== t.n && u(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1315
+ return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1301
1316
  }, {
1302
1317
  e: void 0,
1303
1318
  t: void 0,
@@ -1308,12 +1323,12 @@ const yn = (e) => (() => {
1308
1323
  s: void 0
1309
1324
  }), n;
1310
1325
  })();
1311
- var pn = /* @__PURE__ */ w('<svg viewBox="0 0 64 66"fill=none><path d="M59.716 36.936L54.9 33l-6.17 5.108a77.278 77.278 0 00-12.744 13.469l-3.637 4.914-3.778-5.017a83.719 83.719 0 00-13.956-14.538L9.799 33l2.86-2.332A104.39 104.39 0 0030.1 12.5l2.24-2.98 1.736 2.298a111.905 111.905 0 0018.608 19.384l2.206 1.81 2.861-2.333a104.13 104.13 0 005.297-4.641C59.978 11.294 47.409.26 32.349.26 14.997.26.92 14.923.92 33c0 18.076 14.077 32.74 31.43 32.74 15.102 0 27.715-11.103 30.73-25.892a75.808 75.808 0 00-3.375-2.912h.011z">');
1312
- const xn = (e) => (() => {
1313
- var n = pn(), t = n.firstChild;
1326
+ var xn = /* @__PURE__ */ w('<svg viewBox="0 0 64 66"fill=none><path d="M59.716 36.936L54.9 33l-6.17 5.108a77.278 77.278 0 00-12.744 13.469l-3.637 4.914-3.778-5.017a83.719 83.719 0 00-13.956-14.538L9.799 33l2.86-2.332A104.39 104.39 0 0030.1 12.5l2.24-2.98 1.736 2.298a111.905 111.905 0 0018.608 19.384l2.206 1.81 2.861-2.333a104.13 104.13 0 005.297-4.641C59.978 11.294 47.409.26 32.349.26 14.997.26.92 14.923.92 33c0 18.076 14.077 32.74 31.43 32.74 15.102 0 27.715-11.103 30.73-25.892a75.808 75.808 0 00-3.375-2.912h.011z">');
1327
+ const kn = (e) => (() => {
1328
+ var n = xn(), t = n.firstChild;
1314
1329
  return b((r) => {
1315
1330
  var a = e.size ?? 24, o = e.size ?? 24, i = e.class, l = e.style, s = e.fill ?? "currentColor";
1316
- return a !== r.e && u(n, "width", r.e = a), o !== r.t && u(n, "height", r.t = o), i !== r.a && u(n, "class", r.a = i), r.o = F(n, l, r.o), s !== r.i && u(t, "fill", r.i = s), r;
1331
+ return a !== r.e && d(n, "width", r.e = a), o !== r.t && d(n, "height", r.t = o), i !== r.a && d(n, "class", r.a = i), r.o = F(n, l, r.o), s !== r.i && d(t, "fill", r.i = s), r;
1317
1332
  }, {
1318
1333
  e: void 0,
1319
1334
  t: void 0,
@@ -1322,12 +1337,12 @@ const xn = (e) => (() => {
1322
1337
  i: void 0
1323
1338
  }), n;
1324
1339
  })();
1325
- var kn = /* @__PURE__ */ w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M3 7V5a2 2 0 0 1 2-2h2"></path><path d="M17 3h2a2 2 0 0 1 2 2v2"></path><path d="M21 17v2a2 2 0 0 1-2 2h-2"></path><path d="M7 21H5a2 2 0 0 1-2-2v-2">');
1326
- const Sn = (e) => (() => {
1327
- var n = kn();
1340
+ var Sn = /* @__PURE__ */ w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M3 7V5a2 2 0 0 1 2-2h2"></path><path d="M17 3h2a2 2 0 0 1 2 2v2"></path><path d="M21 17v2a2 2 0 0 1-2 2h-2"></path><path d="M7 21H5a2 2 0 0 1-2-2v-2">');
1341
+ const Cn = (e) => (() => {
1342
+ var n = Sn();
1328
1343
  return b((t) => {
1329
1344
  var r = e.size ?? 24, a = e.size ?? 24, o = e.fill ?? "none", i = e.stroke ?? "currentColor", l = e.strokeWidth ?? 2, s = e.class, c = e.style;
1330
- return r !== t.e && u(n, "width", t.e = r), a !== t.t && u(n, "height", t.t = a), o !== t.a && u(n, "fill", t.a = o), i !== t.o && u(n, "stroke", t.o = i), l !== t.i && u(n, "stroke-width", t.i = l), s !== t.n && u(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1345
+ return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1331
1346
  }, {
1332
1347
  e: void 0,
1333
1348
  t: void 0,
@@ -1338,12 +1353,12 @@ const Sn = (e) => (() => {
1338
1353
  s: void 0
1339
1354
  }), n;
1340
1355
  })();
1341
- var Cn = /* @__PURE__ */ w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z">');
1342
- const $n = (e) => (() => {
1343
- var n = Cn();
1356
+ var $n = /* @__PURE__ */ w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z">');
1357
+ const En = (e) => (() => {
1358
+ var n = $n();
1344
1359
  return b((t) => {
1345
1360
  var r = e.size ?? 24, a = e.size ?? 24, o = e.fill ?? "none", i = e.stroke ?? "currentColor", l = e.strokeWidth ?? 2, s = e.class, c = e.style;
1346
- return r !== t.e && u(n, "width", t.e = r), a !== t.t && u(n, "height", t.t = a), o !== t.a && u(n, "fill", t.a = o), i !== t.o && u(n, "stroke", t.o = i), l !== t.i && u(n, "stroke-width", t.i = l), s !== t.n && u(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1361
+ return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1347
1362
  }, {
1348
1363
  e: void 0,
1349
1364
  t: void 0,
@@ -1354,12 +1369,12 @@ const $n = (e) => (() => {
1354
1369
  s: void 0
1355
1370
  }), n;
1356
1371
  })();
1357
- var En = /* @__PURE__ */ w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M3 6h18"></path><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"></path><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"></path><line x1=10 x2=10 y1=11 y2=17></line><line x1=14 x2=14 y1=11 y2=17>');
1358
- const it = (e) => (() => {
1359
- var n = En();
1372
+ var Pn = /* @__PURE__ */ w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M3 6h18"></path><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"></path><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"></path><line x1=10 x2=10 y1=11 y2=17></line><line x1=14 x2=14 y1=11 y2=17>');
1373
+ const lt = (e) => (() => {
1374
+ var n = Pn();
1360
1375
  return b((t) => {
1361
1376
  var r = e.size ?? 24, a = e.size ?? 24, o = e.fill ?? "none", i = e.stroke ?? "currentColor", l = e.strokeWidth ?? 2, s = e.class, c = e.style;
1362
- return r !== t.e && u(n, "width", t.e = r), a !== t.t && u(n, "height", t.t = a), o !== t.a && u(n, "fill", t.a = o), i !== t.o && u(n, "stroke", t.o = i), l !== t.i && u(n, "stroke-width", t.i = l), s !== t.n && u(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1377
+ return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1363
1378
  }, {
1364
1379
  e: void 0,
1365
1380
  t: void 0,
@@ -1370,12 +1385,12 @@ const it = (e) => (() => {
1370
1385
  s: void 0
1371
1386
  }), n;
1372
1387
  })();
1373
- var Pn = /* @__PURE__ */ w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><circle cx=12 cy=12 r=10></circle><path d="m9 12 2 2 4-4">');
1374
- const zn = (e) => (() => {
1375
- var n = Pn();
1388
+ var zn = /* @__PURE__ */ w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><circle cx=12 cy=12 r=10></circle><path d="m9 12 2 2 4-4">');
1389
+ const Tn = (e) => (() => {
1390
+ var n = zn();
1376
1391
  return b((t) => {
1377
1392
  var r = e.size ?? 24, a = e.size ?? 24, o = e.fill ?? "none", i = e.stroke ?? "currentColor", l = e.strokeWidth ?? 2, s = e.class, c = e.style;
1378
- return r !== t.e && u(n, "width", t.e = r), a !== t.t && u(n, "height", t.t = a), o !== t.a && u(n, "fill", t.a = o), i !== t.o && u(n, "stroke", t.o = i), l !== t.i && u(n, "stroke-width", t.i = l), s !== t.n && u(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1393
+ return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1379
1394
  }, {
1380
1395
  e: void 0,
1381
1396
  t: void 0,
@@ -1386,12 +1401,12 @@ const zn = (e) => (() => {
1386
1401
  s: void 0
1387
1402
  }), n;
1388
1403
  })();
1389
- var Tn = /* @__PURE__ */ w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><circle cx=12 cy=12 r=10></circle><path d="m15 9-6 6"></path><path d="m9 9 6 6">');
1390
- const In = (e) => (() => {
1391
- var n = Tn();
1404
+ var In = /* @__PURE__ */ w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><circle cx=12 cy=12 r=10></circle><path d="m15 9-6 6"></path><path d="m9 9 6 6">');
1405
+ const On = (e) => (() => {
1406
+ var n = In();
1392
1407
  return b((t) => {
1393
1408
  var r = e.size ?? 24, a = e.size ?? 24, o = e.fill ?? "none", i = e.stroke ?? "currentColor", l = e.strokeWidth ?? 2, s = e.class, c = e.style;
1394
- return r !== t.e && u(n, "width", t.e = r), a !== t.t && u(n, "height", t.t = a), o !== t.a && u(n, "fill", t.a = o), i !== t.o && u(n, "stroke", t.o = i), l !== t.i && u(n, "stroke-width", t.i = l), s !== t.n && u(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1409
+ return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1395
1410
  }, {
1396
1411
  e: void 0,
1397
1412
  t: void 0,
@@ -1402,12 +1417,12 @@ const In = (e) => (() => {
1402
1417
  s: void 0
1403
1418
  }), n;
1404
1419
  })();
1405
- var On = /* @__PURE__ */ w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M18 6 6 18"></path><path d="m6 6 12 12">');
1406
- const xe = (e) => (() => {
1407
- var n = On();
1420
+ var Mn = /* @__PURE__ */ w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M18 6 6 18"></path><path d="m6 6 12 12">');
1421
+ const Se = (e) => (() => {
1422
+ var n = Mn();
1408
1423
  return b((t) => {
1409
1424
  var r = e.size ?? 24, a = e.size ?? 24, o = e.fill ?? "none", i = e.stroke ?? "currentColor", l = e.strokeWidth ?? 2, s = e.class, c = e.style;
1410
- return r !== t.e && u(n, "width", t.e = r), a !== t.t && u(n, "height", t.t = a), o !== t.a && u(n, "fill", t.a = o), i !== t.o && u(n, "stroke", t.o = i), l !== t.i && u(n, "stroke-width", t.i = l), s !== t.n && u(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1425
+ return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1411
1426
  }, {
1412
1427
  e: void 0,
1413
1428
  t: void 0,
@@ -1418,28 +1433,28 @@ const xe = (e) => (() => {
1418
1433
  s: void 0
1419
1434
  }), n;
1420
1435
  })();
1421
- var Mn = /* @__PURE__ */ w('<div class=echo-drawing-toolbar data-hide-when-drawing=true role=toolbar aria-label="Drawing Tools"><button class=echo-drawing-toolbar-button title="Clear drawings"aria-label="Clear all drawings"role=button>'), An = /* @__PURE__ */ w("<button class=echo-drawing-toolbar-button role=button>");
1422
- const Dn = {
1423
- rectangle: Sn,
1424
- path: $n
1425
- }, Fn = () => {
1426
- const e = $(), n = Object.values(B);
1436
+ var An = /* @__PURE__ */ w('<div class=echo-drawing-toolbar data-hide-when-drawing=true role=toolbar aria-label="Drawing Tools"><button class=echo-drawing-toolbar-button title="Clear drawings"aria-label="Clear all drawings"role=button>'), Dn = /* @__PURE__ */ w("<button class=echo-drawing-toolbar-button role=button>");
1437
+ const Fn = {
1438
+ rectangle: Cn,
1439
+ path: En
1440
+ }, Ln = () => {
1441
+ const e = $(), n = Object.values(V);
1427
1442
  return (() => {
1428
- var t = Mn(), r = t.firstChild;
1429
- return v(t, f(_, {
1443
+ var t = An(), r = t.firstChild;
1444
+ return v(t, g(B, {
1430
1445
  each: n,
1431
1446
  children: (a) => {
1432
- const o = Dn[a.id];
1447
+ const o = Fn[a.id];
1433
1448
  return (() => {
1434
- var i = An();
1449
+ var i = Dn();
1435
1450
  return i.$$click = () => e.drawing.setState({
1436
1451
  selectedTool: a.id
1437
- }), v(i, f(o, {
1452
+ }), v(i, g(o, {
1438
1453
  class: "echo-drawing-toolbar-icon",
1439
1454
  "aria-hidden": "true"
1440
1455
  })), b((l) => {
1441
- var s = a.label, c = e.drawing.state.selectedTool === a.id, d = a.label, h = e.drawing.state.selectedTool === a.id;
1442
- return s !== l.e && u(i, "title", l.e = s), c !== l.t && u(i, "data-selected", l.t = c), d !== l.a && u(i, "aria-label", l.a = d), h !== l.o && u(i, "aria-pressed", l.o = h), l;
1456
+ var s = a.label, c = e.drawing.state.selectedTool === a.id, u = a.label, h = e.drawing.state.selectedTool === a.id;
1457
+ return s !== l.e && d(i, "title", l.e = s), c !== l.t && d(i, "data-selected", l.t = c), u !== l.a && d(i, "aria-label", l.a = u), h !== l.o && d(i, "aria-pressed", l.o = h), l;
1443
1458
  }, {
1444
1459
  e: void 0,
1445
1460
  t: void 0,
@@ -1448,24 +1463,24 @@ const Dn = {
1448
1463
  }), i;
1449
1464
  })();
1450
1465
  }
1451
- }), r), v(t, f(bn, {}), r), r.$$click = () => e.drawing.setState({
1466
+ }), r), v(t, g(wn, {}), r), r.$$click = () => e.drawing.setState({
1452
1467
  shapes: []
1453
- }, !0), v(r, f(it, {
1468
+ }, !0), v(r, g(lt, {
1454
1469
  class: "echo-drawing-toolbar-icon",
1455
1470
  "aria-hidden": "true"
1456
1471
  })), t;
1457
1472
  })();
1458
1473
  };
1459
- T(["click"]);
1460
- var Ln = /* @__PURE__ */ w("<div class=echo-drawing-tooltip data-hide-when-drawing=true>");
1474
+ I(["click"]);
1475
+ var Nn = /* @__PURE__ */ w("<div class=echo-drawing-tooltip data-hide-when-drawing=true>");
1461
1476
  const jn = () => {
1462
- const e = $(), n = k(() => e.drawing.state.showTooltip && e.drawing.state.mousePosition.y && e.drawing.state.mousePosition.x && e.widget.state.isOpen && !Rt());
1463
- return f(D, {
1477
+ const e = $(), n = k(() => e.drawing.state.showTooltip && e.drawing.state.mousePosition.y && e.drawing.state.mousePosition.x && e.widget.state.isOpen && !Gt());
1478
+ return g(D, {
1464
1479
  get when() {
1465
1480
  return n();
1466
1481
  },
1467
1482
  get children() {
1468
- var t = Ln();
1483
+ var t = Nn();
1469
1484
  return v(t, () => e.widget.state.text.drawingTooltip.text), b((r) => {
1470
1485
  var a = `${e.drawing.state.mousePosition.y + 20}px`, o = `${e.drawing.state.mousePosition.x + 10}px`;
1471
1486
  return a !== r.e && ((r.e = a) != null ? t.style.setProperty("top", a) : t.style.removeProperty("top")), o !== r.t && ((r.t = o) != null ? t.style.setProperty("left", o) : t.style.removeProperty("left")), r;
@@ -1476,24 +1491,24 @@ const jn = () => {
1476
1491
  }
1477
1492
  });
1478
1493
  };
1479
- var Nn = /* @__PURE__ */ w("<button>");
1494
+ var qn = /* @__PURE__ */ w("<button>");
1480
1495
  const W = (e) => {
1481
1496
  const n = () => e.variant || "primary", t = () => e.size || "md";
1482
1497
  return (() => {
1483
- var r = Nn();
1484
- return $t(r, ge(e, {
1498
+ var r = qn();
1499
+ return Pt(r, ie(e, {
1485
1500
  get class() {
1486
1501
  return `echo-button echo-button-${n()} echo-button-${t()} ${e.class}`;
1487
1502
  }
1488
1503
  }), !1), r;
1489
1504
  })();
1490
1505
  };
1491
- var qn = /* @__PURE__ */ w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1=10 y1=14 x2=21 y2=3>');
1506
+ var Rn = /* @__PURE__ */ w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1=10 y1=14 x2=21 y2=3>');
1492
1507
  const Vn = (e) => (() => {
1493
- var n = qn();
1508
+ var n = Rn();
1494
1509
  return b((t) => {
1495
1510
  var r = e.size ?? 24, a = e.size ?? 24, o = e.fill ?? "none", i = e.stroke ?? "currentColor", l = e.strokeWidth ?? 2, s = e.class, c = e.style;
1496
- return r !== t.e && u(n, "width", t.e = r), a !== t.t && u(n, "height", t.t = a), o !== t.a && u(n, "fill", t.a = o), i !== t.o && u(n, "stroke", t.o = i), l !== t.i && u(n, "stroke-width", t.i = l), s !== t.n && u(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1511
+ return r !== t.e && d(n, "width", t.e = r), a !== t.t && d(n, "height", t.t = a), o !== t.a && d(n, "fill", t.a = o), i !== t.o && d(n, "stroke", t.o = i), l !== t.i && d(n, "stroke-width", t.i = l), s !== t.n && d(n, "class", t.n = s), t.s = F(n, c, t.s), t;
1497
1512
  }, {
1498
1513
  e: void 0,
1499
1514
  t: void 0,
@@ -1504,11 +1519,11 @@ const Vn = (e) => (() => {
1504
1519
  s: void 0
1505
1520
  }), n;
1506
1521
  })();
1507
- 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>");
1508
- const Hn = () => {
1522
+ var Wn = /* @__PURE__ */ w("<div class=echo-stored-feedback-empty>No unsubmitted feedback"), Bn = /* @__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>");
1523
+ const Un = () => {
1509
1524
  const e = $();
1510
1525
  let n;
1511
- const [t, r] = A(ke()), [a, o] = A(window.location.pathname), i = (m) => {
1526
+ const [t, r] = T(Ce()), [a, o] = T(window.location.pathname), i = (m) => {
1512
1527
  m.key === "Escape" && e.widget.state.isStoredFeedbackOpen && e.widget.setState({
1513
1528
  isStoredFeedbackOpen: !1
1514
1529
  });
@@ -1518,20 +1533,20 @@ const Hn = () => {
1518
1533
  isStoredFeedbackOpen: !1
1519
1534
  });
1520
1535
  }, s = () => {
1521
- const m = ke();
1536
+ const m = Ce();
1522
1537
  r(m), e.widget.setState({
1523
1538
  pagesCount: m.length
1524
1539
  });
1525
1540
  }, c = () => {
1526
1541
  o(window.location.pathname);
1527
1542
  };
1528
- M({
1543
+ A({
1529
1544
  event: "echo-storage-change",
1530
1545
  callback: s
1531
- }), M({
1546
+ }), A({
1532
1547
  event: "popstate",
1533
1548
  callback: c
1534
- }), Oe({
1549
+ }), Ae({
1535
1550
  target: document.documentElement,
1536
1551
  options: {
1537
1552
  childList: !0,
@@ -1540,96 +1555,96 @@ const Hn = () => {
1540
1555
  callback: () => {
1541
1556
  o(window.location.pathname);
1542
1557
  }
1543
- }), M({
1558
+ }), A({
1544
1559
  event: "keydown",
1545
1560
  callback: i
1546
- }), M({
1561
+ }), A({
1547
1562
  event: "click",
1548
1563
  callback: l
1549
1564
  });
1550
- const d = (m, y) => {
1565
+ const u = (m, y) => {
1551
1566
  const E = y ? `${m}${y}` : m;
1552
1567
  window.location.href = E, e.widget.setState({
1553
1568
  isStoredFeedbackOpen: !1
1554
1569
  });
1555
1570
  }, h = (m) => {
1556
- a() === m && e.methods.reset(), Ze(m);
1557
- const y = ke();
1571
+ a() === m && e.methods.reset(), et(m);
1572
+ const y = Ce();
1558
1573
  r(y), e.widget.setState({
1559
1574
  pagesCount: y.length
1560
1575
  });
1561
- }, g = (m) => {
1576
+ }, f = (m) => {
1562
1577
  if (m === "/") return "/";
1563
1578
  const y = m.split("/");
1564
1579
  return y.length <= 4 ? m : `/${y[1]}/.../${y[y.length - 1]}`;
1565
1580
  };
1566
- return f(D, {
1581
+ return g(D, {
1567
1582
  get when() {
1568
1583
  return e.widget.state.isStoredFeedbackOpen;
1569
1584
  },
1570
1585
  get children() {
1571
- var m = Wn(), y = m.firstChild;
1586
+ var m = Bn(), y = m.firstChild;
1572
1587
  y.firstChild;
1573
1588
  var E = y.nextSibling, S = n;
1574
- return typeof S == "function" ? V(S, m) : n = m, v(y, f(W, {
1589
+ return typeof S == "function" ? R(S, m) : n = m, v(y, g(W, {
1575
1590
  variant: "secondary",
1576
1591
  size: "sm",
1577
1592
  onClick: () => e.widget.setState({
1578
1593
  isStoredFeedbackOpen: !1
1579
1594
  }),
1580
1595
  get children() {
1581
- return f(xe, {
1596
+ return g(Se, {
1582
1597
  size: 20
1583
1598
  });
1584
1599
  }
1585
- }), null), v(E, f(_, {
1600
+ }), null), v(E, g(B, {
1586
1601
  get each() {
1587
1602
  return t();
1588
1603
  },
1589
1604
  children: (C) => {
1590
1605
  const p = k(() => C.path === a());
1591
1606
  return (() => {
1592
- var P = _n(), z = P.firstChild, x = z.firstChild, H = x.nextSibling, q = z.nextSibling;
1593
- return v(x, () => g(C.path)), v(H, () => C.state.feedback.message), v(q, (() => {
1594
- var I = k(() => !p());
1595
- return () => I() && f(W, {
1607
+ var P = _n(), z = P.firstChild, x = z.firstChild, _ = x.nextSibling, q = z.nextSibling;
1608
+ return v(x, () => f(C.path)), v(_, () => C.state.feedback.message), v(q, (() => {
1609
+ var O = k(() => !p());
1610
+ return () => O() && g(W, {
1596
1611
  class: "echo-stored-feedback-link",
1597
1612
  variant: "secondary",
1598
1613
  size: "sm",
1599
- onClick: () => d(C.path, C.state.latestQuery),
1614
+ onClick: () => u(C.path, C.state.latestQuery),
1600
1615
  get children() {
1601
- return f(Vn, {});
1616
+ return g(Vn, {});
1602
1617
  }
1603
1618
  });
1604
- })(), null), v(q, f(W, {
1619
+ })(), null), v(q, g(W, {
1605
1620
  class: "echo-stored-feedback-delete",
1606
1621
  variant: "secondary",
1607
1622
  size: "sm",
1608
1623
  onClick: () => h(C.path),
1609
1624
  children: "Delete"
1610
- }), null), b((I) => {
1611
- var Me = `echo-stored-feedback-item ${p() ? "echo-stored-feedback-item-current" : ""}`, Ae = C.path;
1612
- return Me !== I.e && Re(P, I.e = Me), Ae !== I.t && u(x, "title", I.t = Ae), I;
1625
+ }), null), b((O) => {
1626
+ var De = `echo-stored-feedback-item ${p() ? "echo-stored-feedback-item-current" : ""}`, Fe = C.path;
1627
+ return De !== O.e && Ge(P, O.e = De), Fe !== O.t && d(x, "title", O.t = Fe), O;
1613
1628
  }, {
1614
1629
  e: void 0,
1615
1630
  t: void 0
1616
1631
  }), P;
1617
1632
  })();
1618
1633
  }
1619
- }), null), v(E, f(D, {
1634
+ }), null), v(E, g(D, {
1620
1635
  get when() {
1621
1636
  return t().length === 0;
1622
1637
  },
1623
1638
  get children() {
1624
- return Bn();
1639
+ return Wn();
1625
1640
  }
1626
1641
  }), null), m;
1627
1642
  }
1628
1643
  });
1629
1644
  };
1630
- 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>");
1631
- const Rn = () => {
1632
- const e = $(), [n, t] = A(!1);
1645
+ var Hn = /* @__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>");
1646
+ const Kn = () => {
1647
+ const e = $(), [n, t] = T(!1);
1633
1648
  let r;
1634
1649
  const a = () => {
1635
1650
  r && window.clearTimeout(r), r = window.setTimeout(() => {
@@ -1640,14 +1655,14 @@ const Rn = () => {
1640
1655
  t(!1);
1641
1656
  }, i = () => {
1642
1657
  a();
1643
- }, l = () => {
1658
+ }, l = (c) => {
1644
1659
  e.widget.setState({
1645
1660
  isOpen: !e.widget.state.isOpen
1646
1661
  }), e.widget.setState({
1647
1662
  welcomeMessageIsClosing: !0
1648
- }), ie("welcome_message_shown", !0);
1663
+ }), le("welcome_message_shown", !0);
1649
1664
  };
1650
- Y(() => {
1665
+ H(() => {
1651
1666
  e.widget.state.isOpen || (t(!1), a()), e.widget.state.isStoredFeedbackOpen && t(!1);
1652
1667
  });
1653
1668
  const s = (c) => {
@@ -1656,30 +1671,30 @@ const Rn = () => {
1656
1671
  }), t(!1);
1657
1672
  };
1658
1673
  return [(() => {
1659
- var c = Un();
1660
- return c.addEventListener("pointerleave", i), c.addEventListener("pointerenter", o), c.$$click = l, v(c, f(xn, {
1674
+ var c = Hn();
1675
+ return c.addEventListener("pointerleave", i), c.addEventListener("pointerenter", o), c.$$click = l, v(c, g(kn, {
1661
1676
  stroke: "white",
1662
1677
  fill: "#ffffff",
1663
1678
  "aria-hidden": "true"
1664
1679
  }), null), v(c, (() => {
1665
- var d = k(() => e.widget.state.pagesCount > 0);
1666
- return () => d() && (() => {
1680
+ var u = k(() => e.widget.state.pagesCount > 0);
1681
+ return () => u() && (() => {
1667
1682
  var h = Yn();
1668
- return h.$$click = s, v(h, () => e.widget.state.pagesCount), b(() => u(h, "aria-label", `View ${e.widget.state.pagesCount} stored feedback items`)), h;
1683
+ return h.$$click = s, v(h, () => e.widget.state.pagesCount), b(() => d(h, "aria-label", `View ${e.widget.state.pagesCount} stored feedback items`)), h;
1669
1684
  })();
1670
- })(), null), b((d) => {
1671
- var h = e.widget.state.isOpen, g = `translateX(${n() ? "45px" : "0"})`, m = e.widget.state.isOpen;
1672
- 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;
1685
+ })(), null), b((u) => {
1686
+ var h = e.widget.state.isOpen, f = `translateX(${n() ? "45px" : "0"})`, m = e.widget.state.isOpen;
1687
+ return h !== u.e && d(c, "data-hidden", u.e = h), f !== u.t && ((u.t = f) != null ? c.style.setProperty("transform", f) : c.style.removeProperty("transform")), m !== u.a && d(c, "aria-expanded", u.a = m), u;
1673
1688
  }, {
1674
1689
  e: void 0,
1675
1690
  t: void 0,
1676
1691
  a: void 0
1677
1692
  }), c;
1678
- })(), f(Hn, {})];
1693
+ })(), g(Un, {})];
1679
1694
  };
1680
- T(["click"]);
1681
- 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>");
1682
- const Gn = () => {
1695
+ I(["click"]);
1696
+ var Gn = /* @__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>");
1697
+ const Xn = () => {
1683
1698
  const e = $(), n = () => {
1684
1699
  e.widget.setState({
1685
1700
  notification: {
@@ -1698,8 +1713,8 @@ const Gn = () => {
1698
1713
  }
1699
1714
  };
1700
1715
  return (() => {
1701
- var r = Kn(), a = r.firstChild, o = a.nextSibling, i = o.firstChild, l = i.nextSibling;
1702
- return v(r, f(W, {
1716
+ var r = Gn(), a = r.firstChild, o = a.nextSibling, i = o.firstChild, l = i.nextSibling;
1717
+ return v(r, g(W, {
1703
1718
  class: "echo-notification-hide",
1704
1719
  variant: "secondary",
1705
1720
  size: "sm",
@@ -1708,17 +1723,17 @@ const Gn = () => {
1708
1723
  return e.widget.state.text.notification.hideTitle;
1709
1724
  },
1710
1725
  get children() {
1711
- return f(xe, {
1726
+ return g(Se, {
1712
1727
  size: 20
1713
1728
  });
1714
1729
  }
1715
1730
  }), a), v(a, (() => {
1716
1731
  var s = k(() => e.widget.state.notification.type === "success");
1717
- return () => s() ? f(zn, {
1732
+ return () => s() ? g(Tn, {
1718
1733
  size: 32
1719
1734
  }) : (() => {
1720
1735
  var c = k(() => e.widget.state.notification.type === "error");
1721
- return () => c() ? f(In, {
1736
+ return () => c() ? g(On, {
1722
1737
  size: 32
1723
1738
  }) : null;
1724
1739
  })();
@@ -1726,8 +1741,8 @@ const Gn = () => {
1726
1741
  var s;
1727
1742
  return (s = e.widget.state.notification) == null ? void 0 : s.message;
1728
1743
  }), b((s) => {
1729
- var c = e.widget.state.notification.type, d = !e.widget.state.notification.type, h = !e.widget.state.notification.show;
1730
- return c !== s.e && u(r, "data-type", s.e = c), d !== s.t && u(r, "data-empty", s.t = d), h !== s.a && u(r, "data-hidden", s.a = h), s;
1744
+ var c = e.widget.state.notification.type, u = !e.widget.state.notification.type, h = !e.widget.state.notification.show;
1745
+ return c !== s.e && d(r, "data-type", s.e = c), u !== s.t && d(r, "data-empty", s.t = u), h !== s.a && d(r, "data-hidden", s.a = h), s;
1731
1746
  }, {
1732
1747
  e: void 0,
1733
1748
  t: void 0,
@@ -1735,15 +1750,15 @@ const Gn = () => {
1735
1750
  }), r;
1736
1751
  })();
1737
1752
  };
1738
- var Xn = /* @__PURE__ */ w("<div class=echo-shape-actions data-hide-when-drawing=true>");
1739
- const Jn = () => {
1753
+ var Jn = /* @__PURE__ */ w("<div class=echo-shape-actions data-hide-when-drawing=true>");
1754
+ const Zn = () => {
1740
1755
  const e = $();
1741
1756
  let n;
1742
- const [t, r] = A({
1757
+ const [t, r] = T({
1743
1758
  x: window.scrollX,
1744
1759
  y: window.scrollY
1745
1760
  });
1746
- M({
1761
+ A({
1747
1762
  event: "scroll",
1748
1763
  callback: () => {
1749
1764
  r({
@@ -1760,111 +1775,111 @@ const Jn = () => {
1760
1775
  }, i = k(() => e.drawing.state.selectedShapeId ? e.drawing.state.shapes.find((s) => s.id === e.drawing.state.selectedShapeId) : null), l = k(() => {
1761
1776
  const s = i(), c = n == null ? void 0 : n.getBoundingClientRect();
1762
1777
  if (!s || !c) return null;
1763
- let d = null;
1778
+ let u = null;
1764
1779
  if (s.type === "rectangle") {
1765
- const m = ot(s.points);
1780
+ const m = it(s.points);
1766
1781
  if (!m) return null;
1767
- d = {
1782
+ u = {
1768
1783
  x: m.x + m.width / 2,
1769
1784
  y: m.y
1770
1785
  };
1771
1786
  } else if (s.type === "path" && s.points.length > 0)
1772
- d = {
1787
+ u = {
1773
1788
  x: s.points[0].x,
1774
1789
  y: s.points[0].y
1775
1790
  };
1776
1791
  else
1777
1792
  return null;
1778
- const h = 8, g = t();
1793
+ const h = 8, f = t();
1779
1794
  return {
1780
- x: Math.max(c.width / 2 + h, Math.min(window.innerWidth - c.width / 2 - h, d.x - g.x)),
1781
- y: Math.max(c.height + h, Math.min(window.innerHeight - h, d.y - g.y))
1795
+ x: Math.max(c.width / 2 + h, Math.min(window.innerWidth - c.width / 2 - h, u.x - f.x)),
1796
+ y: Math.max(c.height + h, Math.min(window.innerHeight - h, u.y - f.y))
1782
1797
  };
1783
1798
  });
1784
1799
  return (() => {
1785
- var s = Xn(), c = n;
1786
- return typeof c == "function" ? V(c, s) : n = s, s.style.setProperty("top", "0"), s.style.setProperty("left", "0"), v(s, f(W, {
1800
+ var s = Jn(), c = n;
1801
+ return typeof c == "function" ? R(c, s) : n = s, s.style.setProperty("top", "0"), s.style.setProperty("left", "0"), v(s, g(W, {
1787
1802
  onClick: o,
1788
1803
  size: "sm",
1789
1804
  variant: "secondary",
1790
1805
  title: "Delete shape",
1791
1806
  get children() {
1792
- return f(it, {
1807
+ return g(lt, {
1793
1808
  size: 20
1794
1809
  });
1795
1810
  }
1796
- })), b((d) => {
1811
+ })), b((u) => {
1797
1812
  var m, y;
1798
- 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%))`;
1799
- 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;
1813
+ var h = !l(), f = `translate(calc(${(m = l()) == null ? void 0 : m.x}px - 50%), calc(${(y = l()) == null ? void 0 : y.y}px - 125%))`;
1814
+ return h !== u.e && (s.hidden = u.e = h), f !== u.t && ((u.t = f) != null ? s.style.setProperty("transform", f) : s.style.removeProperty("transform")), u;
1800
1815
  }, {
1801
1816
  e: void 0,
1802
1817
  t: void 0
1803
1818
  }), s;
1804
1819
  })();
1805
1820
  };
1806
- 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>");
1807
- const Qn = () => {
1821
+ var Qn = /* @__PURE__ */ w("<button class=echo-welcome-message><span class=echo-welcome-message-pulsar></span><div class=echo-welcome-message-close role=button tabindex=0>");
1822
+ const er = () => {
1808
1823
  const e = $(), n = G("welcome_message_shown", !1), t = (a) => {
1809
1824
  a.stopPropagation(), e.widget.setState({
1810
1825
  welcomeMessageIsClosing: !0
1811
- }), ie("welcome_message_shown", !0);
1826
+ }), le("welcome_message_shown", !0);
1812
1827
  }, r = () => {
1813
1828
  e.widget.setState({
1814
1829
  isOpen: !0
1815
1830
  }), e.widget.setState({
1816
1831
  welcomeMessageIsClosing: !0
1817
- }), ie("welcome_message_shown", !0);
1832
+ }), le("welcome_message_shown", !0);
1818
1833
  };
1819
1834
  return n ? null : (() => {
1820
- var a = Zn(), o = a.firstChild, i = o.nextSibling;
1821
- return a.$$click = r, a.style.setProperty("bottom", "80px"), a.style.setProperty("right", "20px"), v(a, () => e.widget.state.text.welcomeMessage.text, i), i.$$keydown = (l) => l.key === "Enter" && t(l), i.$$click = t, v(i, f(xe, {
1835
+ var a = Qn(), o = a.firstChild, i = o.nextSibling;
1836
+ 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(Se, {
1822
1837
  size: 16,
1823
1838
  strokeWidth: 3
1824
1839
  })), b((l) => {
1825
1840
  var s = e.widget.state.welcomeMessageIsClosing, c = e.widget.state.text.welcomeMessage.closeAriaLabel;
1826
- return s !== l.e && u(a, "data-hidden", l.e = s), c !== l.t && u(i, "aria-label", l.t = c), l;
1841
+ return s !== l.e && d(a, "data-hidden", l.e = s), c !== l.t && d(i, "aria-label", l.t = c), l;
1827
1842
  }, {
1828
1843
  e: void 0,
1829
1844
  t: void 0
1830
1845
  }), a;
1831
1846
  })();
1832
1847
  };
1833
- T(["click", "keydown"]);
1834
- 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);
1848
+ I(["click", "keydown"]);
1849
+ var tr = /* @__PURE__ */ w("<svg><rect class=echo-shape fill=transparent vector-effect=non-scaling-stroke role=img></svg>", !1, !0), nr = /* @__PURE__ */ w("<svg><path class=echo-shape fill=none vector-effect=non-scaling-stroke stroke-linecap=round role=img></svg>", !1, !0);
1835
1850
  const He = (e) => {
1836
1851
  const n = k(() => e.id === e.selectedShapeId);
1837
- return [f(D, {
1852
+ return [g(D, {
1838
1853
  get when() {
1839
1854
  return e.type === "rectangle";
1840
1855
  },
1841
1856
  get children() {
1842
- return f(nr, ge(e, {
1857
+ return g(rr, ie(e, {
1843
1858
  get isSelected() {
1844
1859
  return n();
1845
1860
  }
1846
1861
  }));
1847
1862
  }
1848
- }), f(D, {
1863
+ }), g(D, {
1849
1864
  get when() {
1850
1865
  return e.type === "path";
1851
1866
  },
1852
1867
  get children() {
1853
- return f(rr, ge(e, {
1868
+ return g(or, ie(e, {
1854
1869
  get isSelected() {
1855
1870
  return n();
1856
1871
  }
1857
1872
  }));
1858
1873
  }
1859
1874
  })];
1860
- }, nr = (e) => {
1861
- const n = k(() => ot(e.points));
1862
- return f(D, {
1875
+ }, rr = (e) => {
1876
+ const n = k(() => it(e.points));
1877
+ return g(D, {
1863
1878
  get when() {
1864
1879
  return n();
1865
1880
  },
1866
1881
  get children() {
1867
- var t = er();
1882
+ var t = tr();
1868
1883
  return t.$$keydown = (r) => {
1869
1884
  var a;
1870
1885
  return r.key === "Enter" && ((a = e.onShapeClick) == null ? void 0 : a.call(e, e.id));
@@ -1872,8 +1887,8 @@ const He = (e) => {
1872
1887
  var r;
1873
1888
  return (r = e.onShapeClick) == null ? void 0 : r.call(e, e.id);
1874
1889
  }, b((r) => {
1875
- 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;
1876
- 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;
1890
+ var a = e.id, o = e.isSelected, i = n().x, l = n().y, s = n().width, c = n().height, u = e.color, h = V.rectangle.strokeWidth, f = e.isSelected ? V.rectangle.opacity.selected : V.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;
1891
+ return a !== r.e && d(t, "data-shape-id", r.e = a), o !== r.t && d(t, "data-selected", r.t = o), i !== r.a && d(t, "x", r.a = i), l !== r.o && d(t, "y", r.o = l), s !== r.i && d(t, "width", r.i = s), c !== r.n && d(t, "height", r.n = c), u !== r.s && d(t, "stroke", r.s = u), h !== r.h && d(t, "stroke-width", r.h = h), f !== r.r && d(t, "opacity", r.r = f), m !== r.d && d(t, "stroke-dasharray", r.d = m), y !== r.l && d(t, "cursor", r.l = y), E !== r.u && d(t, "aria-label", r.u = E), S !== r.c && d(t, "tabindex", r.c = S), r;
1877
1892
  }, {
1878
1893
  e: void 0,
1879
1894
  t: void 0,
@@ -1891,14 +1906,14 @@ const He = (e) => {
1891
1906
  }), t;
1892
1907
  }
1893
1908
  });
1894
- }, rr = (e) => {
1895
- const n = k(() => Kt(e.points));
1896
- return f(D, {
1909
+ }, or = (e) => {
1910
+ const n = k(() => Xt(e.points));
1911
+ return g(D, {
1897
1912
  get when() {
1898
1913
  return n();
1899
1914
  },
1900
1915
  get children() {
1901
- var t = tr();
1916
+ var t = nr();
1902
1917
  return t.$$keydown = (r) => {
1903
1918
  var a;
1904
1919
  return r.key === "Enter" && ((a = e.onShapeClick) == null ? void 0 : a.call(e, e.id));
@@ -1906,8 +1921,8 @@ const He = (e) => {
1906
1921
  var r;
1907
1922
  return (r = e.onShapeClick) == null ? void 0 : r.call(e, e.id);
1908
1923
  }, b((r) => {
1909
- 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;
1910
- 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;
1924
+ var a = e.id, o = e.isSelected, i = n(), l = e.color, s = V.path.strokeWidth, c = e.isSelected ? V.path.opacity.selected : V.path.opacity.default, u = e.isSelected ? "move" : "pointer", h = `Freehand shape ${e.isSelected ? "(selected)" : ""}`, f = e.onShapeClick ? 0 : -1;
1925
+ return a !== r.e && d(t, "data-shape-id", r.e = a), o !== r.t && d(t, "data-selected", r.t = o), i !== r.a && d(t, "d", r.a = i), l !== r.o && d(t, "stroke", r.o = l), s !== r.i && d(t, "stroke-width", r.i = s), c !== r.n && d(t, "opacity", r.n = c), u !== r.s && d(t, "cursor", r.s = u), h !== r.h && d(t, "aria-label", r.h = h), f !== r.r && d(t, "tabindex", r.r = f), r;
1911
1926
  }, {
1912
1927
  e: void 0,
1913
1928
  t: void 0,
@@ -1922,20 +1937,20 @@ const He = (e) => {
1922
1937
  }
1923
1938
  });
1924
1939
  };
1925
- T(["click", "keydown"]);
1926
- 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>');
1927
- const ar = () => {
1940
+ I(["click", "keydown"]);
1941
+ var ar = /* @__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>');
1942
+ const ir = () => {
1928
1943
  const e = $();
1929
1944
  let n;
1930
- return pe(() => {
1945
+ return ke(() => {
1931
1946
  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, {
1932
1947
  passive: !1
1933
1948
  }), n == null || n.addEventListener("touchend", e.drawing.methods.handleEnd);
1934
1949
  }), te(() => {
1935
1950
  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);
1936
1951
  }), (() => {
1937
- var t = or(), r = t.firstChild, a = r.firstChild, o = n;
1938
- 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) => {
1952
+ var t = ar(), r = t.firstChild, a = r.firstChild, o = n;
1953
+ return typeof o == "function" ? R(o, t) : n = t, v(t, g(jn, {}), r), v(t, g(Zn, {}), 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) => {
1939
1954
  i.preventDefault(), e.drawing.methods.handleMove(i);
1940
1955
  }, U(r, "mousemove", e.drawing.methods.handleMove, !0), r.$$touchstart = (i) => {
1941
1956
  i.preventDefault(), e.drawing.methods.handleStart(i), e.drawing.methods.handleEnter(i), e.drawing.setState({
@@ -1947,11 +1962,11 @@ const ar = () => {
1947
1962
  showTooltip: !1,
1948
1963
  hasDrawn: !0
1949
1964
  });
1950
- }, v(r, f(_, {
1965
+ }, v(r, g(B, {
1951
1966
  get each() {
1952
1967
  return e.drawing.state.shapes;
1953
1968
  },
1954
- children: (i) => f(He, {
1969
+ children: (i) => g(He, {
1955
1970
  get id() {
1956
1971
  return i.id;
1957
1972
  },
@@ -1971,7 +1986,7 @@ const ar = () => {
1971
1986
  return e.drawing.methods.handleShapeClick;
1972
1987
  }
1973
1988
  })
1974
- }), null), v(r, f(He, {
1989
+ }), null), v(r, g(He, {
1975
1990
  id: "temp",
1976
1991
  get type() {
1977
1992
  return e.drawing.state.selectedTool;
@@ -1986,19 +2001,19 @@ const ar = () => {
1986
2001
  return e.drawing.state.selectedShapeId;
1987
2002
  }
1988
2003
  }), null), b((i) => {
1989
- var l = e.drawing.state.cursor, s = nn({
2004
+ var l = e.drawing.state.cursor, s = rn({
1990
2005
  width: e.widget.state.dimensions.width,
1991
2006
  height: e.widget.state.dimensions.height
1992
2007
  }, e.drawing.state.currentPoints, e.drawing.state.shapes);
1993
- return l !== i.e && ((i.e = l) != null ? t.style.setProperty("cursor", l) : t.style.removeProperty("cursor")), s !== i.t && u(a, "d", i.t = s), i;
2008
+ return l !== i.e && ((i.e = l) != null ? t.style.setProperty("cursor", l) : t.style.removeProperty("cursor")), s !== i.t && d(a, "d", i.t = s), i;
1994
2009
  }, {
1995
2010
  e: void 0,
1996
2011
  t: void 0
1997
2012
  }), t;
1998
2013
  })();
1999
2014
  };
2000
- T(["mousedown", "touchstart", "mousemove", "touchmove", "touchend"]);
2001
- const de = (e) => ({
2015
+ I(["mousedown", "touchstart", "mousemove", "touchmove", "touchend"]);
2016
+ const ge = (e) => ({
2002
2017
  handleTextChange: (o) => {
2003
2018
  const i = o.target;
2004
2019
  e(i.value);
@@ -2012,26 +2027,26 @@ const de = (e) => ({
2012
2027
  },
2013
2028
  getCheckboxValue: (o) => Array.isArray(o) ? o : []
2014
2029
  });
2015
- 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">*');
2016
- const ue = (e) => (() => {
2017
- var n = ir();
2030
+ var sr = /* @__PURE__ */ w("<div class=echo-input role=group>"), lr = /* @__PURE__ */ w("<label class=echo-input-label><span>"), cr = /* @__PURE__ */ w('<span class=echo-input-required aria-label="Required field">*');
2031
+ const fe = (e) => (() => {
2032
+ var n = sr();
2018
2033
  return v(n, (() => {
2019
2034
  var t = k(() => !!e.label);
2020
2035
  return () => t() && (() => {
2021
- var r = sr(), a = r.firstChild;
2036
+ var r = lr(), a = r.firstChild;
2022
2037
  return v(a, () => e.label), v(r, (() => {
2023
2038
  var o = k(() => !!e.required);
2024
- return () => o() && lr();
2039
+ return () => o() && cr();
2025
2040
  })(), null), r;
2026
2041
  })();
2027
2042
  })(), null), v(n, () => e.children, null), n;
2028
2043
  })();
2029
- var cr = /* @__PURE__ */ w("<textarea class=echo-input-field rows=5>"), dr = /* @__PURE__ */ w("<div class=visually-hidden>");
2030
- const st = (e) => {
2044
+ var dr = /* @__PURE__ */ w("<textarea class=echo-input-field rows=5>"), ur = /* @__PURE__ */ w("<div class=visually-hidden>");
2045
+ const ct = (e) => {
2031
2046
  const {
2032
2047
  handleTextChange: n
2033
- } = de(e.onChange);
2034
- return f(ue, {
2048
+ } = ge(e.onChange);
2049
+ return g(fe, {
2035
2050
  get label() {
2036
2051
  return e.config.label;
2037
2052
  },
@@ -2040,10 +2055,10 @@ const st = (e) => {
2040
2055
  },
2041
2056
  get children() {
2042
2057
  return [(() => {
2043
- var t = cr();
2058
+ var t = dr();
2044
2059
  return U(t, "input", n, !0), b((r) => {
2045
- var a = e.config.id, o = e.config.placeholder, i = e.config.required, l = e.config.label || e.config.placeholder, s = e.config.required, c = e.value === "", d = `${e.config.id}-description`;
2046
- return a !== r.e && u(t, "id", r.e = a), o !== r.t && u(t, "placeholder", r.t = o), i !== r.a && (t.required = r.a = i), l !== r.o && u(t, "aria-label", r.o = l), s !== r.i && u(t, "aria-required", r.i = s), c !== r.n && u(t, "aria-invalid", r.n = c), d !== r.s && u(t, "aria-describedby", r.s = d), r;
2060
+ var a = e.config.id, o = e.config.placeholder, i = e.config.required, l = e.config.label || e.config.placeholder, s = e.config.required, c = e.value === "", u = `${e.config.id}-description`;
2061
+ return a !== r.e && d(t, "id", r.e = a), o !== r.t && d(t, "placeholder", r.t = o), i !== r.a && (t.required = r.a = i), l !== r.o && d(t, "aria-label", r.o = l), s !== r.i && d(t, "aria-required", r.i = s), c !== r.n && d(t, "aria-invalid", r.n = c), u !== r.s && d(t, "aria-describedby", r.s = u), r;
2047
2062
  }, {
2048
2063
  e: void 0,
2049
2064
  t: void 0,
@@ -2054,20 +2069,20 @@ const st = (e) => {
2054
2069
  s: void 0
2055
2070
  }), b(() => t.value = e.value === void 0 ? "" : e.value), t;
2056
2071
  })(), (() => {
2057
- var t = dr();
2058
- return v(t, () => e.config.placeholder), b(() => u(t, "id", `${e.config.id}-description`)), t;
2072
+ var t = ur();
2073
+ return v(t, () => e.config.placeholder), b(() => d(t, "id", `${e.config.id}-description`)), t;
2059
2074
  })()];
2060
2075
  }
2061
2076
  });
2062
2077
  };
2063
- T(["input"]);
2064
- var ur = /* @__PURE__ */ w("<fieldset class=echo-input-options role=group>"), hr = /* @__PURE__ */ w("<label class=echo-input-option><input type=checkbox><span>");
2078
+ I(["input"]);
2079
+ var hr = /* @__PURE__ */ w("<fieldset class=echo-input-options role=group>"), gr = /* @__PURE__ */ w("<label class=echo-input-option><input type=checkbox><span>");
2065
2080
  const fr = (e) => {
2066
2081
  const {
2067
2082
  handleCheckboxChange: n,
2068
2083
  getCheckboxValue: t
2069
- } = de(e.onChange), r = () => t(e.value), a = () => r().length > 0;
2070
- return f(ue, {
2084
+ } = ge(e.onChange), r = () => t(e.value), a = () => r().length > 0;
2085
+ return g(fe, {
2071
2086
  get label() {
2072
2087
  return e.config.label;
2073
2088
  },
@@ -2075,25 +2090,25 @@ const fr = (e) => {
2075
2090
  return e.config.required;
2076
2091
  },
2077
2092
  get children() {
2078
- var o = ur();
2079
- return v(o, f(_, {
2093
+ var o = hr();
2094
+ return v(o, g(B, {
2080
2095
  get each() {
2081
2096
  return e.config.options;
2082
2097
  },
2083
2098
  children: (i, l) => (() => {
2084
- var s = hr(), c = s.firstChild, d = c.nextSibling;
2085
- return c.addEventListener("change", (h) => n(r(), i.value, h.currentTarget.checked)), v(d, () => i.label), b(() => c.required = e.config.required && !a() && l() === 0), b(() => c.value = i.value), b(() => c.checked = r().includes(i.value)), s;
2099
+ var s = gr(), c = s.firstChild, u = c.nextSibling;
2100
+ return c.addEventListener("change", (h) => n(r(), i.value, h.currentTarget.checked)), v(u, () => i.label), b(() => c.required = e.config.required && !a() && l() === 0), b(() => c.value = i.value), b(() => c.checked = r().includes(i.value)), s;
2086
2101
  })()
2087
- })), b(() => u(o, "aria-required", e.config.required)), o;
2102
+ })), b(() => d(o, "aria-required", e.config.required)), o;
2088
2103
  }
2089
2104
  });
2090
2105
  };
2091
- var gr = /* @__PURE__ */ w("<fieldset class=echo-input-options role=radiogroup>"), mr = /* @__PURE__ */ w("<label class=echo-input-option><input type=radio><span>");
2092
- const vr = (e) => {
2106
+ var mr = /* @__PURE__ */ w("<fieldset class=echo-input-options role=radiogroup>"), vr = /* @__PURE__ */ w("<label class=echo-input-option><input type=radio><span>");
2107
+ const br = (e) => {
2093
2108
  const {
2094
2109
  handleSelectChange: n
2095
- } = de(e.onChange);
2096
- return f(ue, {
2110
+ } = ge(e.onChange);
2111
+ return g(fe, {
2097
2112
  get label() {
2098
2113
  return e.config.label;
2099
2114
  },
@@ -2101,43 +2116,43 @@ const vr = (e) => {
2101
2116
  return e.config.required;
2102
2117
  },
2103
2118
  get children() {
2104
- var t = gr();
2105
- return v(t, f(_, {
2119
+ var t = mr();
2120
+ return v(t, g(B, {
2106
2121
  get each() {
2107
2122
  return e.config.options;
2108
2123
  },
2109
2124
  children: (r) => (() => {
2110
- var a = mr(), o = a.firstChild, i = o.nextSibling;
2125
+ var a = vr(), o = a.firstChild, i = o.nextSibling;
2111
2126
  return o.addEventListener("change", () => n(r.value)), v(i, () => r.label), b((l) => {
2112
2127
  var s = e.config.id, c = e.config.required;
2113
- return s !== l.e && u(o, "name", l.e = s), c !== l.t && (o.required = l.t = c), l;
2128
+ return s !== l.e && d(o, "name", l.e = s), c !== l.t && (o.required = l.t = c), l;
2114
2129
  }, {
2115
2130
  e: void 0,
2116
2131
  t: void 0
2117
2132
  }), b(() => o.value = r.value), b(() => o.checked = e.value === r.value), a;
2118
2133
  })()
2119
- })), b(() => u(t, "aria-required", e.config.required)), t;
2134
+ })), b(() => d(t, "aria-required", e.config.required)), t;
2120
2135
  }
2121
2136
  });
2122
2137
  };
2123
- var br = /* @__PURE__ */ w("<div class=echo-select-dropdown role=listbox>"), wr = /* @__PURE__ */ w('<div class=echo-select><button type=button class=echo-select-trigger aria-haspopup=listbox><span></span><svg class=echo-select-arrow width=16 height=16 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="m6 9 6 6 6-6"></path></svg></button><input type=text class=visually-hidden aria-hidden=true>'), yr = /* @__PURE__ */ w("<button type=button class=echo-select-option role=option>");
2124
- const pr = (e) => {
2138
+ var wr = /* @__PURE__ */ w("<div class=echo-select-dropdown role=listbox>"), yr = /* @__PURE__ */ w('<div class=echo-select><button type=button class=echo-select-trigger aria-haspopup=listbox><span></span><svg class=echo-select-arrow width=16 height=16 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="m6 9 6 6 6-6"></path></svg></button><input type=text class=visually-hidden aria-hidden=true>'), pr = /* @__PURE__ */ w("<button type=button class=echo-select-option role=option>");
2139
+ const xr = (e) => {
2125
2140
  const {
2126
2141
  handleSelectChange: n
2127
- } = de(e.onChange), [t, r] = A(!1);
2142
+ } = ge(e.onChange), [t, r] = T(!1);
2128
2143
  let a, o, i;
2129
- const l = () => e.config.options.find((h) => h.value === (e.value === void 0 ? "" : e.value)), s = (h, g) => {
2130
- g.stopPropagation(), h.value === e.value ? e.config.required || n("") : n(h.value), r(!1);
2144
+ const l = () => e.config.options.find((h) => h.value === (e.value === void 0 ? "" : e.value)), s = (h, f) => {
2145
+ f.stopPropagation(), h.value === e.value ? e.config.required || n("") : n(h.value), r(!1);
2131
2146
  }, c = () => {
2132
2147
  r(!t());
2133
2148
  };
2134
- return M({
2149
+ return A({
2135
2150
  event: "mousedown",
2136
2151
  callback: (h) => {
2137
2152
  if (!t() || !a) return;
2138
2153
  h.composedPath().includes(a) || r(!1);
2139
2154
  }
2140
- }), f(ue, {
2155
+ }), g(fe, {
2141
2156
  get label() {
2142
2157
  return e.config.label;
2143
2158
  },
@@ -2145,29 +2160,29 @@ const pr = (e) => {
2145
2160
  return e.config.required;
2146
2161
  },
2147
2162
  get children() {
2148
- var h = wr(), g = h.firstChild, m = g.firstChild, y = g.nextSibling, E = a;
2149
- typeof E == "function" ? V(E, h) : a = h, g.$$click = (p) => {
2163
+ var h = yr(), f = h.firstChild, m = f.firstChild, y = f.nextSibling, E = a;
2164
+ typeof E == "function" ? R(E, h) : a = h, f.$$click = (p) => {
2150
2165
  p.stopPropagation(), c();
2151
2166
  };
2152
2167
  var S = o;
2153
- typeof S == "function" ? V(S, g) : o = g, v(m, () => {
2168
+ typeof S == "function" ? R(S, f) : o = f, v(m, () => {
2154
2169
  var p;
2155
2170
  return ((p = l()) == null ? void 0 : p.label) || e.config.placeholder;
2156
- }), v(h, f(D, {
2171
+ }), v(h, g(D, {
2157
2172
  get when() {
2158
2173
  return t();
2159
2174
  },
2160
2175
  get children() {
2161
- var p = br();
2162
- return v(p, f(_, {
2176
+ var p = wr();
2177
+ return v(p, g(B, {
2163
2178
  get each() {
2164
2179
  return e.config.options;
2165
2180
  },
2166
2181
  children: (P) => (() => {
2167
- var z = yr();
2182
+ var z = pr();
2168
2183
  return z.$$click = (x) => s(P, x), v(z, () => P.label), b((x) => {
2169
- var H = P.value === e.value, q = P.value === e.value;
2170
- return H !== x.e && u(z, "aria-selected", x.e = H), q !== x.t && u(z, "data-selected", x.t = q), x;
2184
+ var _ = P.value === e.value, q = P.value === e.value;
2185
+ return _ !== x.e && d(z, "aria-selected", x.e = _), q !== x.t && d(z, "data-selected", x.t = q), x;
2171
2186
  }, {
2172
2187
  e: void 0,
2173
2188
  t: void 0
@@ -2177,9 +2192,9 @@ const pr = (e) => {
2177
2192
  }
2178
2193
  }), y);
2179
2194
  var C = i;
2180
- return typeof C == "function" ? V(C, y) : i = y, b((p) => {
2181
- var P = t(), z = !e.value, x = e.config.required, H = t(), q = e.config.required, I = e.config.required;
2182
- 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;
2195
+ return typeof C == "function" ? R(C, y) : i = y, b((p) => {
2196
+ var P = t(), z = !e.value, x = e.config.required, _ = t(), q = e.config.required, O = e.config.required;
2197
+ return P !== p.e && d(f, "data-open", p.e = P), z !== p.t && d(f, "data-placeholder", p.t = z), x !== p.a && d(f, "data-required", p.a = x), _ !== p.o && d(f, "aria-expanded", p.o = _), q !== p.i && d(f, "aria-required", p.i = q), O !== p.n && (y.required = p.n = O), p;
2183
2198
  }, {
2184
2199
  e: void 0,
2185
2200
  t: void 0,
@@ -2191,13 +2206,13 @@ const pr = (e) => {
2191
2206
  }
2192
2207
  });
2193
2208
  };
2194
- T(["click"]);
2195
- var xr = /* @__PURE__ */ w("<input type=text class=echo-input-field>");
2196
- const kr = (e) => {
2209
+ I(["click"]);
2210
+ var kr = /* @__PURE__ */ w("<input type=text class=echo-input-field>");
2211
+ const Sr = (e) => {
2197
2212
  const {
2198
2213
  handleTextChange: n
2199
- } = de(e.onChange);
2200
- return f(ue, {
2214
+ } = ge(e.onChange);
2215
+ return g(fe, {
2201
2216
  get label() {
2202
2217
  return e.config.label;
2203
2218
  },
@@ -2205,59 +2220,57 @@ const kr = (e) => {
2205
2220
  return e.config.required;
2206
2221
  },
2207
2222
  get children() {
2208
- var t = xr();
2223
+ var t = kr();
2209
2224
  return U(t, "input", n, !0), b((r) => {
2210
- var a = e.config.placeholder, o = e.config.required;
2211
- return a !== r.e && u(t, "placeholder", r.e = a), o !== r.t && (t.required = r.t = o), r;
2225
+ var a = e.config.placeholder, o = e.config.required, i = e.config.disabled;
2226
+ return a !== r.e && d(t, "placeholder", r.e = a), o !== r.t && (t.required = r.t = o), i !== r.a && (t.disabled = r.a = i), r;
2212
2227
  }, {
2213
2228
  e: void 0,
2214
- t: void 0
2229
+ t: void 0,
2230
+ a: void 0
2215
2231
  }), b(() => t.value = e.value === void 0 ? "" : e.value), t;
2216
2232
  }
2217
2233
  });
2218
2234
  };
2219
- T(["input"]);
2220
- var Sr = /* @__PURE__ */ w("<div class=echo-input-error>Invalid input type"), Cr = /* @__PURE__ */ w("<div class=echo-input-error>Unsupported input type: ");
2221
- const $r = (e) => f(D, {
2235
+ I(["input"]);
2236
+ var Cr = /* @__PURE__ */ w("<div class=echo-input-error>Invalid input type"), $r = /* @__PURE__ */ w("<div class=echo-input-error>Unsupported input type: ");
2237
+ const Er = (e) => g(D, {
2222
2238
  get when() {
2223
2239
  return e.config.type;
2224
2240
  },
2225
2241
  keyed: !0,
2226
2242
  get fallback() {
2227
- return Sr();
2243
+ return Cr();
2228
2244
  },
2229
2245
  get children() {
2230
- return f(ht, {
2246
+ return g(ft, {
2231
2247
  get fallback() {
2232
2248
  return (() => {
2233
- var n = Cr();
2249
+ var n = $r();
2234
2250
  return n.firstChild, v(n, () => e.config.type, null), n;
2235
2251
  })();
2236
2252
  },
2237
2253
  get children() {
2238
- return [f(ne, {
2254
+ return [g(ne, {
2239
2255
  get when() {
2240
2256
  return e.config.type === "text";
2241
2257
  },
2242
2258
  get children() {
2243
- return f(kr, {
2244
- get config() {
2245
- return e.config;
2246
- },
2259
+ return g(Sr, ie(e, {
2247
2260
  get value() {
2248
2261
  return e.value;
2249
2262
  },
2250
- get onChange() {
2251
- return e.onChange;
2263
+ get config() {
2264
+ return e.config;
2252
2265
  }
2253
- });
2266
+ }));
2254
2267
  }
2255
- }), f(ne, {
2268
+ }), g(ne, {
2256
2269
  get when() {
2257
2270
  return e.config.type === "textarea";
2258
2271
  },
2259
2272
  get children() {
2260
- return f(st, {
2273
+ return g(ct, {
2261
2274
  get config() {
2262
2275
  return e.config;
2263
2276
  },
@@ -2269,12 +2282,12 @@ const $r = (e) => f(D, {
2269
2282
  }
2270
2283
  });
2271
2284
  }
2272
- }), f(ne, {
2285
+ }), g(ne, {
2273
2286
  get when() {
2274
2287
  return e.config.type === "radio";
2275
2288
  },
2276
2289
  get children() {
2277
- return f(vr, {
2290
+ return g(br, {
2278
2291
  get config() {
2279
2292
  return e.config;
2280
2293
  },
@@ -2286,12 +2299,12 @@ const $r = (e) => f(D, {
2286
2299
  }
2287
2300
  });
2288
2301
  }
2289
- }), f(ne, {
2302
+ }), g(ne, {
2290
2303
  get when() {
2291
2304
  return e.config.type === "checkbox";
2292
2305
  },
2293
2306
  get children() {
2294
- return f(fr, {
2307
+ return g(fr, {
2295
2308
  get config() {
2296
2309
  return e.config;
2297
2310
  },
@@ -2303,12 +2316,12 @@ const $r = (e) => f(D, {
2303
2316
  }
2304
2317
  });
2305
2318
  }
2306
- }), f(ne, {
2319
+ }), g(ne, {
2307
2320
  get when() {
2308
2321
  return e.config.type === "select";
2309
2322
  },
2310
2323
  get children() {
2311
- return f(pr, {
2324
+ return g(xr, {
2312
2325
  get config() {
2313
2326
  return e.config;
2314
2327
  },
@@ -2324,7 +2337,7 @@ const $r = (e) => f(D, {
2324
2337
  }
2325
2338
  });
2326
2339
  }
2327
- }), Er = () => {
2340
+ }), Pr = () => {
2328
2341
  const e = navigator.connection;
2329
2342
  return {
2330
2343
  effectiveType: e == null ? void 0 : e.effectiveType,
@@ -2332,7 +2345,7 @@ const $r = (e) => f(D, {
2332
2345
  rtt: e == null ? void 0 : e.rtt,
2333
2346
  saveData: e == null ? void 0 : e.saveData
2334
2347
  };
2335
- }, Pr = () => ({
2348
+ }, zr = () => ({
2336
2349
  width: window.innerWidth,
2337
2350
  height: window.innerHeight,
2338
2351
  screenWidth: window.screen.width,
@@ -2347,7 +2360,7 @@ const $r = (e) => f(D, {
2347
2360
  pixelRatio: window.devicePixelRatio,
2348
2361
  availableWidth: window.screen.availWidth,
2349
2362
  availableHeight: window.screen.availHeight
2350
- }), zr = () => {
2363
+ }), Tr = () => {
2351
2364
  const e = new URL(window.location.href), n = {};
2352
2365
  return e.searchParams.forEach((t, r) => {
2353
2366
  n[r] = t;
@@ -2358,25 +2371,25 @@ const $r = (e) => f(D, {
2358
2371
  searchParams: n,
2359
2372
  referrer: document.referrer
2360
2373
  };
2361
- }, Tr = () => ({
2374
+ }, Ir = () => ({
2362
2375
  timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
2363
2376
  localDateTime: (/* @__PURE__ */ new Date()).toISOString()
2364
- }), Ir = () => ({
2377
+ }), Or = () => ({
2365
2378
  userAgent: navigator.userAgent,
2366
- browserInfo: Pr(),
2367
- networkInfo: Er(),
2368
- locationInfo: zr(),
2369
- timeInfo: Tr(),
2370
- console: Yt()
2379
+ browserInfo: zr(),
2380
+ networkInfo: Pr(),
2381
+ locationInfo: Tr(),
2382
+ timeInfo: Ir(),
2383
+ console: Kt()
2371
2384
  });
2372
- 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');
2373
- const Ar = () => {
2385
+ var Mr = /* @__PURE__ */ w("<fieldset class=echo-input-options-wrapper><legend class=visually-hidden>Additional Information"), Ar = /* @__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-wrapper><legend class=visually-hidden>Feedback Message</legend></fieldset><footer class=echo-feedback-footer>');
2386
+ const Dr = () => {
2374
2387
  const e = $(), n = async (a) => {
2375
2388
  a.preventDefault();
2376
- const o = await tn(), i = {
2389
+ const o = await nn(), i = {
2377
2390
  message: e.feedback.state.message,
2378
2391
  screenshot: o,
2379
- metadata: Ir(),
2392
+ metadata: Or(),
2380
2393
  customInputs: e.feedback.state.customInputValues
2381
2394
  };
2382
2395
  e.methods.submit(i);
@@ -2389,14 +2402,16 @@ const Ar = () => {
2389
2402
  isMinimized: !1
2390
2403
  });
2391
2404
  };
2392
- return Y(() => {
2405
+ return H(() => {
2393
2406
  e.widget.state.isOpen && requestAnimationFrame(() => {
2394
2407
  var a;
2395
2408
  (a = document.querySelector(".echo-input-field")) == null || a.focus();
2396
2409
  });
2397
2410
  }), (() => {
2398
- var a = Mr(), o = a.firstChild, i = o.firstChild, l = i.firstChild, s = l.nextSibling, c = i.nextSibling;
2399
- 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, {
2411
+ var a = Ar(), o = a.firstChild, i = o.firstChild, l = i.firstChild, s = l.nextSibling, c = i.nextSibling;
2412
+ c.firstChild;
2413
+ var u = c.nextSibling;
2414
+ return a.$$click = () => e.feedback.state.isMinimized && r(), o.addEventListener("submit", n), v(l, () => e.widget.state.text.feedbackForm.title), v(s, g(W, {
2400
2415
  type: "button",
2401
2416
  title: "Hide form",
2402
2417
  variant: "secondary",
@@ -2404,11 +2419,11 @@ const Ar = () => {
2404
2419
  onClick: t,
2405
2420
  "aria-label": "Minimize feedback form",
2406
2421
  get children() {
2407
- return f(yn, {
2422
+ return g(pn, {
2408
2423
  size: 20
2409
2424
  });
2410
2425
  }
2411
- }), null), v(s, f(W, {
2426
+ }), null), v(s, g(W, {
2412
2427
  type: "button",
2413
2428
  title: "Close form",
2414
2429
  variant: "secondary",
@@ -2418,11 +2433,11 @@ const Ar = () => {
2418
2433
  }),
2419
2434
  "aria-label": "Close feedback form",
2420
2435
  get children() {
2421
- return f(xe, {
2436
+ return g(Se, {
2422
2437
  size: 20
2423
2438
  });
2424
2439
  }
2425
- }), null), v(c, f(st, {
2440
+ }), null), v(c, g(ct, {
2426
2441
  get config() {
2427
2442
  return {
2428
2443
  type: "textarea",
@@ -2435,35 +2450,35 @@ const Ar = () => {
2435
2450
  get value() {
2436
2451
  return e.feedback.state.message;
2437
2452
  },
2438
- onChange: (d) => e.feedback.setState({
2439
- message: d
2453
+ onChange: (h) => e.feedback.setState({
2454
+ message: h
2440
2455
  })
2441
- }), null), v(o, f(D, {
2456
+ }), null), v(o, g(D, {
2442
2457
  get when() {
2443
- var d;
2444
- return (d = e.widget.state.customInputs) == null ? void 0 : d.length;
2458
+ var h;
2459
+ return (h = e.widget.state.customInputs) == null ? void 0 : h.length;
2445
2460
  },
2446
2461
  get children() {
2447
- var d = Or();
2448
- return d.firstChild, v(d, f(_, {
2462
+ var h = Mr();
2463
+ return h.firstChild, v(h, g(B, {
2449
2464
  get each() {
2450
2465
  return e.widget.state.customInputs;
2451
2466
  },
2452
- children: (h) => f($r, {
2453
- config: h,
2467
+ children: (f) => g(Er, {
2468
+ config: f,
2454
2469
  get value() {
2455
- return e.feedback.state.customInputValues[h.id];
2470
+ return e.feedback.state.customInputValues[f.id];
2456
2471
  },
2457
- onChange: (g) => e.feedback.setState({
2472
+ onChange: (m) => e.feedback.setState({
2458
2473
  customInputValues: {
2459
2474
  ...e.feedback.state.customInputValues,
2460
- [h.id]: g
2475
+ [f.id]: m
2461
2476
  }
2462
2477
  })
2463
2478
  })
2464
- }), null), d;
2479
+ }), null), h;
2465
2480
  }
2466
- }), null), v(o, f(W, {
2481
+ }), u), v(u, g(W, {
2467
2482
  type: "submit",
2468
2483
  variant: "primary",
2469
2484
  size: "lg",
@@ -2474,9 +2489,9 @@ const Ar = () => {
2474
2489
  get children() {
2475
2490
  return e.widget.state.text.feedbackForm.submitButton;
2476
2491
  }
2477
- }), null), b((d) => {
2478
- var h = e.feedback.state.isMinimized, g = e.feedback.state.isMinimized ? "pointer" : "default", m = !e.feedback.state.isMinimized;
2479
- 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;
2492
+ })), b((h) => {
2493
+ var f = e.feedback.state.isMinimized, m = e.feedback.state.isMinimized ? "pointer" : "default", y = !e.feedback.state.isMinimized;
2494
+ return f !== h.e && d(a, "data-minimized", h.e = f), m !== h.t && ((h.t = m) != null ? a.style.setProperty("cursor", m) : a.style.removeProperty("cursor")), y !== h.a && d(a, "aria-expanded", h.a = y), h;
2480
2495
  }, {
2481
2496
  e: void 0,
2482
2497
  t: void 0,
@@ -2484,93 +2499,94 @@ const Ar = () => {
2484
2499
  }), a;
2485
2500
  })();
2486
2501
  };
2487
- T(["click"]);
2488
- 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>");
2489
- const Nr = (e) => f(Ot, {
2490
- useShadow: !0,
2491
- get mount() {
2492
- return document.body;
2493
- },
2494
- get children() {
2495
- return f(cn, ge(e, {
2496
- get children() {
2497
- return f(Wr, {
2498
- get children() {
2499
- return [f(qr, {
2500
- get primaryColor() {
2501
- return e.primaryColor;
2502
- }
2503
- }), f(Vr, {})];
2504
- }
2505
- });
2506
- }
2507
- }));
2508
- }
2509
- }), qr = (e) => {
2510
- const [n, t] = A("");
2511
- return Y(() => {
2502
+ I(["click"]);
2503
+ var Fr = /* @__PURE__ */ w("<style>"), Lr = /* @__PURE__ */ w("<div class=echo-launcher>"), Nr = /* @__PURE__ */ w("<dialog class=echo-overlay>"), jr = /* @__PURE__ */ w("<div class=echo-root>");
2504
+ const qr = (e) => {
2505
+ const [n, t] = T();
2506
+ return H(() => {
2507
+ const r = n();
2508
+ r && Jt(r.shadowRoot);
2509
+ }), g(At, {
2510
+ ref: t,
2511
+ useShadow: !0,
2512
+ get mount() {
2513
+ return document.body;
2514
+ },
2515
+ get children() {
2516
+ return g(dn, ie(e, {
2517
+ get children() {
2518
+ return g(Br, {
2519
+ get children() {
2520
+ return [g(Rr, {
2521
+ get primaryColor() {
2522
+ return e.primaryColor;
2523
+ }
2524
+ }), g(Vr, {})];
2525
+ }
2526
+ });
2527
+ }
2528
+ }));
2529
+ }
2530
+ });
2531
+ }, Rr = (e) => {
2532
+ const [n, t] = T("");
2533
+ return H(() => {
2512
2534
  const r = `
2513
2535
  .echo-root {
2514
2536
  --primary-color: ${e.primaryColor};
2515
- --primary-text-color: ${_t(e.primaryColor)};
2537
+ --primary-text-color: ${Ut(e.primaryColor)};
2516
2538
  }
2517
2539
  `;
2518
2540
  t(r);
2519
2541
  }), (() => {
2520
- var r = Dr();
2521
- return v(r, hn, null), v(r, n, null), r;
2542
+ var r = Fr();
2543
+ return v(r, gn, null), v(r, n, null), r;
2522
2544
  })();
2523
2545
  }, Vr = () => {
2524
2546
  const e = $();
2525
- return Y(() => {
2526
- }), [(() => {
2527
- var n = Fr();
2528
- 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;
2529
- })(), f(Br, {
2547
+ return [(() => {
2548
+ var n = Lr();
2549
+ return v(n, g(Kn, {}), null), v(n, g(er, {}), null), v(n, g(Xn, {}), null), b(() => d(n, "data-hidden", e.widget.state.isOpen)), n;
2550
+ })(), g(Wr, {
2530
2551
  get children() {
2531
- return [f(Ar, {}), f(Fn, {}), f(ar, {})];
2552
+ return [g(Dr, {}), g(Ln, {}), g(ir, {})];
2532
2553
  }
2533
2554
  })];
2534
- }, Br = (e) => {
2535
- const [n, t] = A(), r = $(), a = dn(() => n());
2536
- return Y(() => {
2555
+ }, Wr = (e) => {
2556
+ const [n, t] = T(), r = $(), a = un(() => n());
2557
+ return H(() => {
2537
2558
  n() && r.widget.setState({
2538
2559
  dimensions: a()
2539
2560
  });
2540
- }), Y(() => {
2561
+ }), H(() => {
2541
2562
  var o, i;
2542
2563
  r.widget.state.isOpen ? (o = n()) == null || o.showModal() : (i = n()) == null || i.close();
2543
2564
  }), (() => {
2544
- var o = Lr();
2565
+ var o = Nr();
2545
2566
  return o.addEventListener("close", () => r.widget.setState({
2546
2567
  isOpen: !1
2547
- })), V(t, o), v(o, () => e.children), b((i) => {
2568
+ })), R(t, o), v(o, () => e.children), b((i) => {
2548
2569
  var l = `${a().height}px`, s = `${a().width}px`, c = !r.widget.state.isOpen;
2549
- return l !== i.e && ((i.e = l) != null ? o.style.setProperty("height", l) : o.style.removeProperty("height")), s !== i.t && ((i.t = s) != null ? o.style.setProperty("width", s) : o.style.removeProperty("width")), c !== i.a && u(o, "data-hidden", i.a = c), i;
2570
+ return l !== i.e && ((i.e = l) != null ? o.style.setProperty("height", l) : o.style.removeProperty("height")), s !== i.t && ((i.t = s) != null ? o.style.setProperty("width", s) : o.style.removeProperty("width")), c !== i.a && d(o, "data-hidden", i.a = c), i;
2550
2571
  }, {
2551
2572
  e: void 0,
2552
2573
  t: void 0,
2553
2574
  a: void 0
2554
2575
  }), o;
2555
2576
  })();
2556
- }, Wr = (e) => {
2577
+ }, Br = (e) => {
2557
2578
  const n = $();
2558
- return un({
2579
+ return hn({
2559
2580
  onUrlChange: (t) => n.methods.handlePageChange(t)
2560
- }), pe(() => {
2561
- Ht(), Jt((t) => {
2562
- if (n.widget.state.isOpen && t.type === "keydown")
2563
- switch (t.key) {
2564
- case "Escape":
2565
- t.stopImmediatePropagation();
2566
- break;
2567
- }
2581
+ }), ke(() => {
2582
+ Ht(), Zt((t) => {
2583
+ t.target instanceof Document || t.target instanceof Window || t.target instanceof Element && t.target.shadowRoot && ue(t.target.shadowRoot) || t.target instanceof Node && ue(t.target);
2568
2584
  });
2569
2585
  }), te(() => {
2570
- Ut(), Zt();
2586
+ Yt(), Qt();
2571
2587
  }), (() => {
2572
2588
  var t = jr();
2573
- return v(t, () => e.children), b(() => u(t, "data-drawing", n.drawing.state.isDrawing)), t;
2589
+ return v(t, () => e.children), b(() => d(t, "data-drawing", n.drawing.state.isDrawing)), t;
2574
2590
  })();
2575
2591
  }, _r = {
2576
2592
  welcomeMessage: {
@@ -2597,31 +2613,33 @@ const Nr = (e) => f(Ot, {
2597
2613
  text: "Click & drag to draw"
2598
2614
  }
2599
2615
  };
2600
- let fe = null;
2616
+ let ve = null;
2601
2617
  function Yr(e) {
2602
- fe && (console.warn("Echo widget is already initialized. Cleaning up previous instance..."), fe());
2618
+ ve && (console.warn("Echo widget is already initialized. Cleaning up previous instance..."), ve());
2603
2619
  try {
2604
- rn(e);
2620
+ on(e);
2605
2621
  const {
2606
2622
  position: n = "bottom-right",
2607
2623
  primaryColor: t = "#6227dc",
2608
2624
  onSubmit: r,
2609
2625
  textConfig: a = {},
2610
2626
  customInputs: o = []
2611
- } = e, i = Ke(_r, a), l = document.createElement("div");
2612
- l.id = "echo-container", document.body.appendChild(l);
2613
- const s = kt(() => f(Nr, {
2627
+ } = e, i = Xe(_r, a), l = document.createElement("div");
2628
+ document.body.appendChild(l);
2629
+ const s = Ct(() => g(qr, {
2614
2630
  position: n,
2615
2631
  primaryColor: t,
2616
2632
  textConfig: i,
2617
2633
  onSubmit: r,
2618
2634
  customInputs: o
2619
- }), l), c = () => {
2620
- s(), l.remove(), fe = null;
2635
+ }), l);
2636
+ l.remove();
2637
+ const c = () => {
2638
+ s(), ve = null;
2621
2639
  };
2622
2640
  return window.addEventListener("unload", c, {
2623
2641
  once: !0
2624
- }), fe = c, c;
2642
+ }), ve = c, c;
2625
2643
  } catch (n) {
2626
2644
  throw console.error("Echo initialization failed:", n), n;
2627
2645
  }