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