@contember/echo 0.0.30 → 0.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/echo.es.js +84 -80
- package/dist/echo.umd.js +4 -4
- package/package.json +1 -1
package/dist/echo.es.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { sharedConfig as L, createRoot as Ue, createRenderEffect as b, untrack as Ye, getOwner as De, createEffect as Y, runWithOwner as lt, createMemo as k, createSignal as A, onCleanup as
|
1
|
+
import { sharedConfig as L, createRoot as Ue, createRenderEffect as b, untrack as Ye, getOwner as De, createEffect as Y, runWithOwner as lt, createMemo as k, createSignal as A, onCleanup as te, $PROXY as R, $TRACK as Fe, getListener as $e, batch as ct, onMount as pe, createContext as dt, createComponent as f, useContext as ut, For as _, Show as D, mergeProps as ge, Switch as ht, Match as ne } from "solid-js";
|
2
2
|
import ft from "html2canvas";
|
3
3
|
const gt = [
|
4
4
|
"allowfullscreen",
|
@@ -342,7 +342,7 @@ function ae(e, n, t, r, a) {
|
|
342
342
|
}), () => t;
|
343
343
|
if (Array.isArray(n)) {
|
344
344
|
const s = [], c = t && Array.isArray(t);
|
345
|
-
if (
|
345
|
+
if (Ee(s, n, t, a))
|
346
346
|
return b(() => t = ae(e, s, t, r, !0)), () => t;
|
347
347
|
if (o) {
|
348
348
|
if (!s.length) return t;
|
@@ -368,18 +368,18 @@ function ae(e, n, t, r, a) {
|
|
368
368
|
}
|
369
369
|
return t;
|
370
370
|
}
|
371
|
-
function
|
371
|
+
function Ee(e, n, t, r) {
|
372
372
|
let a = !1;
|
373
373
|
for (let o = 0, i = n.length; o < i; o++) {
|
374
374
|
let l = n[o], s = t && t[e.length], c;
|
375
375
|
if (!(l == null || l === !0 || l === !1)) if ((c = typeof l) == "object" && l.nodeType)
|
376
376
|
e.push(l);
|
377
377
|
else if (Array.isArray(l))
|
378
|
-
a =
|
378
|
+
a = Ee(e, l, s) || a;
|
379
379
|
else if (c === "function")
|
380
380
|
if (r) {
|
381
381
|
for (; typeof l == "function"; ) l = l();
|
382
|
-
a =
|
382
|
+
a = Ee(
|
383
383
|
e,
|
384
384
|
Array.isArray(l) ? l : [l],
|
385
385
|
Array.isArray(s) ? s : [s]
|
@@ -424,7 +424,7 @@ function Ot(e) {
|
|
424
424
|
const l = r();
|
425
425
|
if (l instanceof HTMLHeadElement) {
|
426
426
|
const [s, c] = A(!1), d = () => c(!0);
|
427
|
-
Ue((h) => v(l, () => s() ? h() : o(), null)),
|
427
|
+
Ue((h) => v(l, () => s() ? h() : o(), null)), te(d);
|
428
428
|
} else {
|
429
429
|
const s = It(e.isSVG ? "g" : "div", e.isSVG), c = n && s.attachShadow ? s.attachShadow({
|
430
430
|
mode: "open"
|
@@ -434,7 +434,7 @@ function Ot(e) {
|
|
434
434
|
return t.parentNode;
|
435
435
|
},
|
436
436
|
configurable: !0
|
437
|
-
}), v(c, o), l.appendChild(s), e.ref && e.ref(s),
|
437
|
+
}), v(c, o), l.appendChild(s), e.ref && e.ref(s), te(() => l.removeChild(s));
|
438
438
|
}
|
439
439
|
},
|
440
440
|
void 0,
|
@@ -504,7 +504,7 @@ const Mt = 5e3, At = (e) => {
|
|
504
504
|
} catch (t) {
|
505
505
|
console.warn("Failed to save to localStorage:", t);
|
506
506
|
}
|
507
|
-
},
|
507
|
+
}, Pe = () => {
|
508
508
|
const e = window.location.pathname || "/", n = window.location.search;
|
509
509
|
return `${e}${n}`;
|
510
510
|
}, Lt = (e, n) => {
|
@@ -524,7 +524,7 @@ const Mt = 5e3, At = (e) => {
|
|
524
524
|
} catch (t) {
|
525
525
|
console.warn("Failed to save page state:", t);
|
526
526
|
}
|
527
|
-
},
|
527
|
+
}, Te = (e) => {
|
528
528
|
try {
|
529
529
|
return G(K, {})[e];
|
530
530
|
} catch (n) {
|
@@ -545,7 +545,7 @@ const Mt = 5e3, At = (e) => {
|
|
545
545
|
} catch (e) {
|
546
546
|
return console.error("Failed to get stored pages count:", e), 0;
|
547
547
|
}
|
548
|
-
},
|
548
|
+
}, ke = () => {
|
549
549
|
try {
|
550
550
|
const e = G(K, {});
|
551
551
|
return Object.entries(e).map(([n, t]) => ({
|
@@ -557,7 +557,7 @@ const Mt = 5e3, At = (e) => {
|
|
557
557
|
}
|
558
558
|
}, jt = (e) => Dt((n, t, r = !1) => {
|
559
559
|
(!r || t.feedback.message.trim().length > 0 || t.drawing.shapes.length > 0) && (Lt(n, t), e.setState({ pagesCount: Qe() }));
|
560
|
-
}, 1e3),
|
560
|
+
}, 1e3), ze = Symbol("store-raw"), Z = Symbol("store-node"), j = Symbol("store-has"), et = Symbol("store-self");
|
561
561
|
function tt(e) {
|
562
562
|
let n = e[R];
|
563
563
|
if (!n && (Object.defineProperty(e, R, {
|
@@ -580,7 +580,7 @@ function me(e) {
|
|
580
580
|
}
|
581
581
|
function se(e, n = /* @__PURE__ */ new Set()) {
|
582
582
|
let t, r, a, o;
|
583
|
-
if (t = e != null && e[
|
583
|
+
if (t = e != null && e[ze]) return t;
|
584
584
|
if (!me(e) || n.has(e)) return e;
|
585
585
|
if (Array.isArray(e)) {
|
586
586
|
Object.isFrozen(e) ? e = e.slice(0) : n.add(e);
|
@@ -610,31 +610,31 @@ function le(e, n, t) {
|
|
610
610
|
}
|
611
611
|
function Nt(e, n) {
|
612
612
|
const t = Reflect.getOwnPropertyDescriptor(e, n);
|
613
|
-
return !t || t.get || !t.configurable || n === R || n ===
|
613
|
+
return !t || t.get || !t.configurable || n === R || n === Z || (delete t.value, delete t.writable, t.get = () => e[R][n]), t;
|
614
614
|
}
|
615
615
|
function nt(e) {
|
616
|
-
|
616
|
+
$e() && le(ve(e, Z), et)();
|
617
617
|
}
|
618
618
|
function qt(e) {
|
619
619
|
return nt(e), Reflect.ownKeys(e);
|
620
620
|
}
|
621
621
|
const Vt = {
|
622
622
|
get(e, n, t) {
|
623
|
-
if (n ===
|
623
|
+
if (n === ze) return e;
|
624
624
|
if (n === R) return t;
|
625
625
|
if (n === Fe)
|
626
626
|
return nt(e), t;
|
627
|
-
const r = ve(e,
|
627
|
+
const r = ve(e, Z), a = r[n];
|
628
628
|
let o = a ? a() : e[n];
|
629
|
-
if (n ===
|
629
|
+
if (n === Z || n === j || n === "__proto__") return o;
|
630
630
|
if (!a) {
|
631
631
|
const i = Object.getOwnPropertyDescriptor(e, n);
|
632
|
-
|
632
|
+
$e() && (typeof o != "function" || e.hasOwnProperty(n)) && !(i && i.get) && (o = le(r, n, o)());
|
633
633
|
}
|
634
634
|
return me(o) ? tt(o) : o;
|
635
635
|
},
|
636
636
|
has(e, n) {
|
637
|
-
return n ===
|
637
|
+
return n === ze || n === R || n === Fe || n === Z || n === j || n === "__proto__" ? !0 : ($e() && le(ve(e, j), n)(), n in e);
|
638
638
|
},
|
639
639
|
set() {
|
640
640
|
return !0;
|
@@ -649,7 +649,7 @@ function be(e, n, t, r = !1) {
|
|
649
649
|
if (!r && e[n] === t) return;
|
650
650
|
const a = e[n], o = e.length;
|
651
651
|
t === void 0 ? (delete e[n], e[j] && e[j][n] && a !== void 0 && e[j][n].$()) : (e[n] = t, e[j] && e[j][n] && a === void 0 && e[j][n].$());
|
652
|
-
let i = ve(e,
|
652
|
+
let i = ve(e, Z), l;
|
653
653
|
if ((l = le(i, n, a)) && l.$(() => t), Array.isArray(e) && e.length !== o) {
|
654
654
|
for (let s = e.length; s < o; s++) (l = i[s]) && l.$();
|
655
655
|
(l = le(i, "length", o)) && l.$(e.length);
|
@@ -674,26 +674,26 @@ function Bt(e, n) {
|
|
674
674
|
be(e, "length", r);
|
675
675
|
} else rt(e, n);
|
676
676
|
}
|
677
|
-
function
|
677
|
+
function oe(e, n, t = []) {
|
678
678
|
let r, a = e;
|
679
679
|
if (n.length > 1) {
|
680
680
|
r = n.shift();
|
681
681
|
const i = typeof r, l = Array.isArray(e);
|
682
682
|
if (Array.isArray(r)) {
|
683
683
|
for (let s = 0; s < r.length; s++)
|
684
|
-
|
684
|
+
oe(e, [r[s]].concat(n), t);
|
685
685
|
return;
|
686
686
|
} else if (l && i === "function") {
|
687
687
|
for (let s = 0; s < e.length; s++)
|
688
|
-
r(e[s], s) &&
|
688
|
+
r(e[s], s) && oe(e, [s].concat(n), t);
|
689
689
|
return;
|
690
690
|
} else if (l && i === "object") {
|
691
691
|
const { from: s = 0, to: c = e.length - 1, by: d = 1 } = r;
|
692
692
|
for (let h = s; h <= c; h += d)
|
693
|
-
|
693
|
+
oe(e, [h].concat(n), t);
|
694
694
|
return;
|
695
695
|
} else if (n.length > 1) {
|
696
|
-
|
696
|
+
oe(e[r], n, [r].concat(t));
|
697
697
|
return;
|
698
698
|
}
|
699
699
|
a = e[r], t = [r].concat(t);
|
@@ -701,11 +701,11 @@ function re(e, n, t = []) {
|
|
701
701
|
let o = n[0];
|
702
702
|
typeof o == "function" && (o = o(a, t), o === a) || r === void 0 && o == null || (o = se(o), r === void 0 || me(a) && me(o) && !Array.isArray(o) ? rt(a, o) : be(e, r, o));
|
703
703
|
}
|
704
|
-
function
|
704
|
+
function Ie(...[e, n]) {
|
705
705
|
const t = se(e || {}), r = Array.isArray(t), a = tt(t);
|
706
706
|
function o(...i) {
|
707
707
|
ct(() => {
|
708
|
-
r && i.length === 1 ? Bt(t, i[0]) :
|
708
|
+
r && i.length === 1 ? Bt(t, i[0]) : oe(t, i);
|
709
709
|
});
|
710
710
|
}
|
711
711
|
return [a, o];
|
@@ -735,8 +735,8 @@ const B = {
|
|
735
735
|
const n = e.replace("#", ""), t = Number.parseInt(n.slice(0, 2), 16) / 255, r = Number.parseInt(n.slice(2, 2), 16) / 255, a = Number.parseInt(n.slice(4, 2), 16) / 255;
|
736
736
|
return 0.2126 * t + 0.7152 * r + 0.0722 * a;
|
737
737
|
}, _t = (e) => Wt(e) < 0.5 ? "#FFFFFF" : "#000000";
|
738
|
-
let N = [], O = null,
|
739
|
-
const
|
738
|
+
let N = [], O = null, Q = null, ee = null;
|
739
|
+
const Se = (e, n) => (...t) => {
|
740
740
|
const r = (o) => {
|
741
741
|
if (typeof o == "string") return o;
|
742
742
|
if (o instanceof Error) return o.stack || o.message;
|
@@ -764,22 +764,22 @@ const ke = (e, n) => (...t) => {
|
|
764
764
|
log: console.log,
|
765
765
|
warn: console.warn,
|
766
766
|
error: console.error
|
767
|
-
},
|
767
|
+
}, Q = window.onerror, ee = window.onunhandledrejection, window.onerror = (e, n, t, r, a) => {
|
768
768
|
const o = (a == null ? void 0 : a.stack) || (a == null ? void 0 : a.message) || e;
|
769
769
|
return N.push({
|
770
770
|
type: "error",
|
771
771
|
message: `Uncaught Error: ${o}
|
772
772
|
Location: ${n}:${t}:${r}`,
|
773
773
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
774
|
-
}),
|
774
|
+
}), Q ? Q(e, n, t, r, a) : !1;
|
775
775
|
}, window.onunhandledrejection = (e) => {
|
776
776
|
const n = e.reason;
|
777
777
|
N.push({
|
778
778
|
type: "error",
|
779
779
|
message: `Unhandled Promise Rejection: ${(n == null ? void 0 : n.stack) || (n == null ? void 0 : n.message) || n}`,
|
780
780
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
781
|
-
}),
|
782
|
-
}, console.log =
|
781
|
+
}), ee && ee(e);
|
782
|
+
}, console.log = Se("log", O.log), console.warn = Se("warn", O.warn), console.error = Se("error", O.error), window.addEventListener("error", (e) => {
|
783
783
|
const { message: n, filename: t, lineno: r, colno: a, error: o } = e, i = (o == null ? void 0 : o.stack) || (o == null ? void 0 : o.message) || n;
|
784
784
|
N.push({
|
785
785
|
type: "error",
|
@@ -789,7 +789,7 @@ Location: ${t}:${r}:${a}`,
|
|
789
789
|
});
|
790
790
|
}));
|
791
791
|
}, Ut = () => {
|
792
|
-
O && (console.log = O.log, console.warn = O.warn, console.error = O.error, O = null),
|
792
|
+
O && (console.log = O.log, console.warn = O.warn, console.error = O.error, O = null), Q && (window.onerror = Q, Q = null), ee && (window.onunhandledrejection = ee, ee = null), window.removeEventListener("error", () => {
|
793
793
|
}), N = [];
|
794
794
|
}, Yt = () => [...N], Rt = () => {
|
795
795
|
var e;
|
@@ -812,41 +812,45 @@ Location: ${t}:${r}:${a}`,
|
|
812
812
|
width: Math.abs(t.x - n.x),
|
813
813
|
height: Math.abs(t.y - n.y)
|
814
814
|
};
|
815
|
-
}, Kt = (e) => e.length < 2 ? null : `M ${e[0].x} ${e[0].y} ${e.slice(1).map((n) => `L ${n.x} ${n.y}`).join(" ")}`,
|
816
|
-
let
|
815
|
+
}, Kt = (e) => e.length < 2 ? null : `M ${e[0].x} ${e[0].y} ${e.slice(1).map((n) => `L ${n.x} ${n.y}`).join(" ")}`, we = window.EventTarget.prototype.addEventListener, J = window.EventTarget.prototype.removeEventListener;
|
816
|
+
let ye = !1;
|
817
817
|
const Gt = (e, n, t, r) => {
|
818
|
-
|
818
|
+
we.call(e, n, t, r);
|
819
819
|
}, Xt = (e, n, t, r) => {
|
820
|
-
|
821
|
-
},
|
822
|
-
|
820
|
+
J.call(e, n, t, r);
|
821
|
+
}, re = /* @__PURE__ */ new WeakMap(), Jt = (e) => {
|
822
|
+
ye || (ye = !0, window.EventTarget.prototype.addEventListener = function(n, t, r) {
|
823
|
+
if (!this || typeof this != "object")
|
824
|
+
return we.call(this, n, t, r);
|
823
825
|
const a = Qt(t, e);
|
824
|
-
|
825
|
-
const o = { listener: t }, i =
|
826
|
-
i && i.set(t, o),
|
826
|
+
re.has(this) || re.set(this, /* @__PURE__ */ new Map());
|
827
|
+
const o = { listener: t }, i = re.get(this);
|
828
|
+
i && i.set(t, o), we.call(this, n, a, r);
|
827
829
|
}, window.EventTarget.prototype.removeEventListener = function(n, t, r) {
|
828
|
-
|
830
|
+
if (!this || typeof this != "object")
|
831
|
+
return J.call(this, n, t, r);
|
832
|
+
const a = re.get(this);
|
829
833
|
if (!a) {
|
830
|
-
|
834
|
+
J.call(this, n, t, r);
|
831
835
|
return;
|
832
836
|
}
|
833
837
|
const o = a.get(t);
|
834
|
-
o ? (
|
838
|
+
o ? (J.call(this, n, o.listener, r), a.delete(t), a.size === 0 && re.delete(this)) : J.call(this, n, t, r);
|
835
839
|
});
|
836
840
|
}, Zt = () => {
|
837
|
-
|
841
|
+
ye && (window.EventTarget.prototype.addEventListener = we, window.EventTarget.prototype.removeEventListener = J, ye = !1);
|
838
842
|
}, M = (e) => {
|
839
843
|
const { event: n, callback: t, onMount: r, onCleanup: a, useOriginal: o = !0 } = e;
|
840
|
-
|
844
|
+
pe(() => {
|
841
845
|
r == null || r(), o ? Gt(window, n, t) : window.addEventListener(n, t);
|
842
|
-
}),
|
846
|
+
}), te(() => {
|
843
847
|
a == null || a(), o ? Xt(window, n, t) : window.removeEventListener(n, t);
|
844
848
|
});
|
845
849
|
}, Oe = (e) => {
|
846
850
|
const { target: n, options: t, callback: r, onMount: a, onCleanup: o } = e, i = new MutationObserver(r);
|
847
|
-
|
851
|
+
pe(() => {
|
848
852
|
a == null || a(), i.observe(n, t);
|
849
|
-
}),
|
853
|
+
}), te(() => {
|
850
854
|
o == null || o(), i.disconnect();
|
851
855
|
});
|
852
856
|
}, Qt = (e, n) => function(t) {
|
@@ -889,7 +893,7 @@ const Gt = (e, n, t, r) => {
|
|
889
893
|
throw new Error("Echo initialization failed: primaryColor must be a valid hex color");
|
890
894
|
}, Be = 5, We = (e, n) => B[e].getCursor(n), on = (e, n, t) => {
|
891
895
|
var l, s;
|
892
|
-
const [r, a] =
|
896
|
+
const [r, a] = Ie({
|
893
897
|
isDrawing: !1,
|
894
898
|
currentPoints: [],
|
895
899
|
selectedShapeId: null,
|
@@ -897,7 +901,7 @@ const Gt = (e, n, t, r) => {
|
|
897
901
|
showTooltip: !0,
|
898
902
|
mousePosition: { x: 0, y: 0 },
|
899
903
|
selectedColor: e.primaryColor,
|
900
|
-
shapes: ((s = (l =
|
904
|
+
shapes: ((s = (l = Te(n)) == null ? void 0 : l.drawing) == null ? void 0 : s.shapes) || [],
|
901
905
|
hasDrawn: !1,
|
902
906
|
isDragging: !1,
|
903
907
|
dragStartPos: null,
|
@@ -1032,10 +1036,10 @@ const Gt = (e, n, t, r) => {
|
|
1032
1036
|
const a = (r == null ? void 0 : r.reduce(
|
1033
1037
|
(g, m) => (g[m.id] = m.defaultValue ?? (m.type === "checkbox" ? [] : ""), g),
|
1034
1038
|
{}
|
1035
|
-
)) || {}, o =
|
1039
|
+
)) || {}, o = Te(n), i = (o == null ? void 0 : o.feedback.customInputValues) || {}, l = {
|
1036
1040
|
...a,
|
1037
1041
|
...i
|
1038
|
-
}, [s, c] =
|
1042
|
+
}, [s, c] = Ie({
|
1039
1043
|
message: ((h = o == null ? void 0 : o.feedback) == null ? void 0 : h.message) || "",
|
1040
1044
|
screenshot: void 0,
|
1041
1045
|
isCapturing: !1,
|
@@ -1051,7 +1055,7 @@ const Gt = (e, n, t, r) => {
|
|
1051
1055
|
}
|
1052
1056
|
};
|
1053
1057
|
}, sn = (e, n) => {
|
1054
|
-
const [t, r] =
|
1058
|
+
const [t, r] = Ie({
|
1055
1059
|
text: e.textConfig,
|
1056
1060
|
isOpen: !1,
|
1057
1061
|
primaryColor: e.primaryColor,
|
@@ -1081,7 +1085,7 @@ const Gt = (e, n, t, r) => {
|
|
1081
1085
|
{}
|
1082
1086
|
)) || {};
|
1083
1087
|
}, ln = (e) => {
|
1084
|
-
let n =
|
1088
|
+
let n = Pe();
|
1085
1089
|
const t = sn(e), r = jt(t), a = At(t), o = an(
|
1086
1090
|
e,
|
1087
1091
|
n,
|
@@ -1107,7 +1111,7 @@ const Gt = (e, n, t, r) => {
|
|
1107
1111
|
);
|
1108
1112
|
}), l = (c) => {
|
1109
1113
|
n = c;
|
1110
|
-
const d =
|
1114
|
+
const d = Te(n), h = {
|
1111
1115
|
..._e(e),
|
1112
1116
|
...d == null ? void 0 : d.feedback.customInputValues
|
1113
1117
|
};
|
@@ -1215,9 +1219,9 @@ const Gt = (e, n, t, r) => {
|
|
1215
1219
|
callback: r
|
1216
1220
|
}), n;
|
1217
1221
|
}, un = ({ onUrlChange: e }) => {
|
1218
|
-
let n =
|
1222
|
+
let n = Pe();
|
1219
1223
|
const t = () => {
|
1220
|
-
const r =
|
1224
|
+
const r = Pe();
|
1221
1225
|
r !== n && (n = r, e(r));
|
1222
1226
|
};
|
1223
1227
|
M({ event: "popstate", callback: t }), M({ event: "pushstate", callback: t }), M({ event: "replacestate", callback: t }), Oe({
|
@@ -1256,7 +1260,7 @@ const mn = [
|
|
1256
1260
|
"#66d9e8": "Soft Cyan",
|
1257
1261
|
"#ffa94d": "Soft Orange",
|
1258
1262
|
"#e599f7": "Soft Pink"
|
1259
|
-
},
|
1263
|
+
}, Ce = (e) => vn[e] || "Primary", bn = () => {
|
1260
1264
|
const e = $();
|
1261
1265
|
return (() => {
|
1262
1266
|
var n = fn(), t = n.firstChild, r = t.nextSibling, a = r.firstChild;
|
@@ -1269,7 +1273,7 @@ const mn = [
|
|
1269
1273
|
return i.$$click = () => e.drawing.setState({
|
1270
1274
|
selectedColor: o
|
1271
1275
|
}), o != null ? i.style.setProperty("background-color", o) : i.style.removeProperty("background-color"), b((l) => {
|
1272
|
-
var s = `Select ${
|
1276
|
+
var s = `Select ${Ce(o)} color`, c = e.drawing.state.selectedColor === o, d = `${Ce(o)} color`, h = e.drawing.state.selectedColor === o;
|
1273
1277
|
return s !== l.e && u(i, "title", l.e = s), c !== l.t && u(i, "data-selected", l.t = c), d !== l.a && u(i, "aria-label", l.a = d), h !== l.o && u(i, "aria-selected", l.o = h), l;
|
1274
1278
|
}, {
|
1275
1279
|
e: void 0,
|
@@ -1279,7 +1283,7 @@ const mn = [
|
|
1279
1283
|
}), i;
|
1280
1284
|
})()
|
1281
1285
|
})), b((o) => {
|
1282
|
-
var i = `Current color: ${
|
1286
|
+
var i = `Current color: ${Ce(e.drawing.state.selectedColor)}`, l = e.drawing.state.selectedColor;
|
1283
1287
|
return i !== o.e && u(t, "aria-label", o.e = i), l !== o.t && ((o.t = l) != null ? t.style.setProperty("background-color", l) : t.style.removeProperty("background-color")), o;
|
1284
1288
|
}, {
|
1285
1289
|
e: void 0,
|
@@ -1399,7 +1403,7 @@ const In = (e) => (() => {
|
|
1399
1403
|
}), n;
|
1400
1404
|
})();
|
1401
1405
|
var On = /* @__PURE__ */ w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M18 6 6 18"></path><path d="m6 6 12 12">');
|
1402
|
-
const
|
1406
|
+
const xe = (e) => (() => {
|
1403
1407
|
var n = On();
|
1404
1408
|
return b((t) => {
|
1405
1409
|
var r = e.size ?? 24, a = e.size ?? 24, o = e.fill ?? "none", i = e.stroke ?? "currentColor", l = e.strokeWidth ?? 2, s = e.class, c = e.style;
|
@@ -1504,7 +1508,7 @@ var Bn = /* @__PURE__ */ w("<div class=echo-stored-feedback-empty>No unsubmitted
|
|
1504
1508
|
const Hn = () => {
|
1505
1509
|
const e = $();
|
1506
1510
|
let n;
|
1507
|
-
const [t, r] = A(
|
1511
|
+
const [t, r] = A(ke()), [a, o] = A(window.location.pathname), i = (m) => {
|
1508
1512
|
m.key === "Escape" && e.widget.state.isStoredFeedbackOpen && e.widget.setState({
|
1509
1513
|
isStoredFeedbackOpen: !1
|
1510
1514
|
});
|
@@ -1514,7 +1518,7 @@ const Hn = () => {
|
|
1514
1518
|
isStoredFeedbackOpen: !1
|
1515
1519
|
});
|
1516
1520
|
}, s = () => {
|
1517
|
-
const m =
|
1521
|
+
const m = ke();
|
1518
1522
|
r(m), e.widget.setState({
|
1519
1523
|
pagesCount: m.length
|
1520
1524
|
});
|
@@ -1550,7 +1554,7 @@ const Hn = () => {
|
|
1550
1554
|
});
|
1551
1555
|
}, h = (m) => {
|
1552
1556
|
a() === m && e.methods.reset(), Ze(m);
|
1553
|
-
const y =
|
1557
|
+
const y = ke();
|
1554
1558
|
r(y), e.widget.setState({
|
1555
1559
|
pagesCount: y.length
|
1556
1560
|
});
|
@@ -1574,7 +1578,7 @@ const Hn = () => {
|
|
1574
1578
|
isStoredFeedbackOpen: !1
|
1575
1579
|
}),
|
1576
1580
|
get children() {
|
1577
|
-
return f(
|
1581
|
+
return f(xe, {
|
1578
1582
|
size: 20
|
1579
1583
|
});
|
1580
1584
|
}
|
@@ -1704,7 +1708,7 @@ const Gn = () => {
|
|
1704
1708
|
return e.widget.state.text.notification.hideTitle;
|
1705
1709
|
},
|
1706
1710
|
get children() {
|
1707
|
-
return f(
|
1711
|
+
return f(xe, {
|
1708
1712
|
size: 20
|
1709
1713
|
});
|
1710
1714
|
}
|
@@ -1814,7 +1818,7 @@ const Qn = () => {
|
|
1814
1818
|
};
|
1815
1819
|
return n ? null : (() => {
|
1816
1820
|
var a = Zn(), o = a.firstChild, i = o.nextSibling;
|
1817
|
-
return a.$$click = r, a.style.setProperty("bottom", "80px"), a.style.setProperty("right", "20px"), v(a, () => e.widget.state.text.welcomeMessage.text, i), i.$$keydown = (l) => l.key === "Enter" && t(l), i.$$click = t, v(i, f(
|
1821
|
+
return a.$$click = r, a.style.setProperty("bottom", "80px"), a.style.setProperty("right", "20px"), v(a, () => e.widget.state.text.welcomeMessage.text, i), i.$$keydown = (l) => l.key === "Enter" && t(l), i.$$click = t, v(i, f(xe, {
|
1818
1822
|
size: 16,
|
1819
1823
|
strokeWidth: 3
|
1820
1824
|
})), b((l) => {
|
@@ -1923,11 +1927,11 @@ var or = /* @__PURE__ */ w('<div class=echo-drawing-layer-container role=applica
|
|
1923
1927
|
const ar = () => {
|
1924
1928
|
const e = $();
|
1925
1929
|
let n;
|
1926
|
-
return
|
1930
|
+
return pe(() => {
|
1927
1931
|
n == null || n.addEventListener("mousemove", e.drawing.methods.handleMove), n == null || n.addEventListener("mouseup", e.drawing.methods.handleEnd), n == null || n.addEventListener("touchmove", e.drawing.methods.handleMove, {
|
1928
1932
|
passive: !1
|
1929
1933
|
}), n == null || n.addEventListener("touchend", e.drawing.methods.handleEnd);
|
1930
|
-
}),
|
1934
|
+
}), te(() => {
|
1931
1935
|
n == null || n.removeEventListener("mousemove", e.drawing.methods.handleMove), n == null || n.removeEventListener("mouseup", e.drawing.methods.handleEnd), n == null || n.removeEventListener("touchmove", e.drawing.methods.handleMove), n == null || n.removeEventListener("touchend", e.drawing.methods.handleEnd);
|
1932
1936
|
}), (() => {
|
1933
1937
|
var t = or(), r = t.firstChild, a = r.firstChild, o = n;
|
@@ -2231,7 +2235,7 @@ const $r = (e) => f(D, {
|
|
2231
2235
|
})();
|
2232
2236
|
},
|
2233
2237
|
get children() {
|
2234
|
-
return [f(
|
2238
|
+
return [f(ne, {
|
2235
2239
|
get when() {
|
2236
2240
|
return e.config.type === "text";
|
2237
2241
|
},
|
@@ -2248,7 +2252,7 @@ const $r = (e) => f(D, {
|
|
2248
2252
|
}
|
2249
2253
|
});
|
2250
2254
|
}
|
2251
|
-
}), f(
|
2255
|
+
}), f(ne, {
|
2252
2256
|
get when() {
|
2253
2257
|
return e.config.type === "textarea";
|
2254
2258
|
},
|
@@ -2265,7 +2269,7 @@ const $r = (e) => f(D, {
|
|
2265
2269
|
}
|
2266
2270
|
});
|
2267
2271
|
}
|
2268
|
-
}), f(
|
2272
|
+
}), f(ne, {
|
2269
2273
|
get when() {
|
2270
2274
|
return e.config.type === "radio";
|
2271
2275
|
},
|
@@ -2282,7 +2286,7 @@ const $r = (e) => f(D, {
|
|
2282
2286
|
}
|
2283
2287
|
});
|
2284
2288
|
}
|
2285
|
-
}), f(
|
2289
|
+
}), f(ne, {
|
2286
2290
|
get when() {
|
2287
2291
|
return e.config.type === "checkbox";
|
2288
2292
|
},
|
@@ -2299,7 +2303,7 @@ const $r = (e) => f(D, {
|
|
2299
2303
|
}
|
2300
2304
|
});
|
2301
2305
|
}
|
2302
|
-
}), f(
|
2306
|
+
}), f(ne, {
|
2303
2307
|
get when() {
|
2304
2308
|
return e.config.type === "select";
|
2305
2309
|
},
|
@@ -2414,7 +2418,7 @@ const Ar = () => {
|
|
2414
2418
|
}),
|
2415
2419
|
"aria-label": "Close feedback form",
|
2416
2420
|
get children() {
|
2417
|
-
return f(
|
2421
|
+
return f(xe, {
|
2418
2422
|
size: 20
|
2419
2423
|
});
|
2420
2424
|
}
|
@@ -2553,7 +2557,7 @@ const Nr = (e) => f(Ot, {
|
|
2553
2557
|
const n = $();
|
2554
2558
|
return un({
|
2555
2559
|
onUrlChange: (t) => n.methods.handlePageChange(t)
|
2556
|
-
}),
|
2560
|
+
}), pe(() => {
|
2557
2561
|
Ht(), Jt((t) => {
|
2558
2562
|
if (n.widget.state.isOpen && t.type === "keydown")
|
2559
2563
|
switch (t.key) {
|
@@ -2562,7 +2566,7 @@ const Nr = (e) => f(Ot, {
|
|
2562
2566
|
break;
|
2563
2567
|
}
|
2564
2568
|
});
|
2565
|
-
}),
|
2569
|
+
}), te(() => {
|
2566
2570
|
Ut(), Zt();
|
2567
2571
|
}), (() => {
|
2568
2572
|
var t = jr();
|
package/dist/echo.umd.js
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
(function(D,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("solid-js"),require("html2canvas")):typeof define=="function"&&define.amd?define(["exports","solid-js","html2canvas"],c):(D=typeof globalThis<"u"?globalThis:D||self,c(D.Echo={},D.Solid,D.html2canvas))})(this,function(D,c,He){"use strict";const Ue=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","hidden","indeterminate","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected"],Xe=new Set(["className","value","readOnly","formNoValidate","isMap","noModule","playsInline",...Ue]),Ke=new Set(["innerHTML","textContent","innerText","children"]),Ge=Object.assign(Object.create(null),{className:"class",htmlFor:"for"}),Ze=Object.assign(Object.create(null),{class:"className",formnovalidate:{$:"formNoValidate",BUTTON:1,INPUT:1},ismap:{$:"isMap",IMG:1},nomodule:{$:"noModule",SCRIPT:1},playsinline:{$:"playsInline",VIDEO:1},readonly:{$:"readOnly",INPUT:1,TEXTAREA:1}});function Qe(e,n){const t=Ze[e];return typeof t=="object"?t[n]?t.$:void 0:t}const Je=new Set(["beforeinput","click","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"]);function et(e,n,t){let r=t.length,o=n.length,a=r,i=0,l=0,s=n[o-1].nextSibling,d=null;for(;i<o||l<a;){if(n[i]===t[l]){i++,l++;continue}for(;n[o-1]===t[a-1];)o--,a--;if(o===i){const u=a<r?l?t[l-1].nextSibling:t[a-l]:s;for(;l<a;)e.insertBefore(t[l++],u)}else if(a===l)for(;i<o;)(!d||!d.has(n[i]))&&n[i].remove(),i++;else if(n[i]===t[a-1]&&t[l]===n[o-1]){const u=n[--o].nextSibling;e.insertBefore(t[l++],n[i++].nextSibling),e.insertBefore(t[--a],u),n[o]=t[a]}else{if(!d){d=new Map;let f=l;for(;f<a;)d.set(t[f],f++)}const u=d.get(n[i]);if(u!=null)if(l<u&&u<a){let f=i,g=1,m;for(;++f<o&&f<a&&!((m=d.get(n[f]))==null||m!==u+g);)g++;if(g>u-l){const b=n[i];for(;l<u;)e.insertBefore(t[l++],b)}else e.replaceChild(t[l++],n[i++])}else i++;else n[i++].remove()}}}const ye="_$DX_DELEGATE";function tt(e,n,t,r={}){let o;return c.createRoot(a=>{o=a,n===document?e():v(n,e(),n.firstChild?null:void 0,t)},r.owner),()=>{o(),n.textContent=""}}function w(e,n,t){let r;const o=()=>{const i=document.createElement("template");return i.innerHTML=e,t?i.content.firstChild.firstChild:i.content.firstChild},a=n?()=>c.untrack(()=>document.importNode(r||(r=o()),!0)):()=>(r||(r=o())).cloneNode(!0);return a.cloneNode=a,a}function E(e,n=window.document){const t=n[ye]||(n[ye]=new Set);for(let r=0,o=e.length;r<o;r++){const a=e[r];t.has(a)||(t.add(a),n.addEventListener(a,ct))}}function h(e,n,t){U(e)||(t==null?e.removeAttribute(n):e.setAttribute(n,t))}function nt(e,n,t){U(e)||(t?e.setAttribute(n,""):e.removeAttribute(n))}function xe(e,n){U(e)||(n==null?e.removeAttribute("class"):e.className=n)}function N(e,n,t,r){if(r)Array.isArray(t)?(e[`$$${n}`]=t[0],e[`$$${n}Data`]=t[1]):e[`$$${n}`]=t;else if(Array.isArray(t)){const o=t[0];e.addEventListener(n,t[0]=a=>o.call(e,t[1],a))}else e.addEventListener(n,t,typeof t!="function"&&t)}function rt(e,n,t={}){const r=Object.keys(n||{}),o=Object.keys(t);let a,i;for(a=0,i=o.length;a<i;a++){const l=o[a];!l||l==="undefined"||n[l]||(ke(e,l,!1),delete t[l])}for(a=0,i=r.length;a<i;a++){const l=r[a],s=!!n[l];!l||l==="undefined"||t[l]===s||!s||(ke(e,l,!0),t[l]=s)}return t}function z(e,n,t){if(!n)return t?h(e,"style"):n;const r=e.style;if(typeof n=="string")return r.cssText=n;typeof t=="string"&&(r.cssText=t=void 0),t||(t={}),n||(n={});let o,a;for(a in t)n[a]==null&&r.removeProperty(a),delete t[a];for(a in n)o=n[a],o!==t[a]&&(r.setProperty(a,o),t[a]=o);return t}function at(e,n={},t,r){const o={};return c.createRenderEffect(()=>o.children=X(e,n.children,o.children)),c.createRenderEffect(()=>typeof n.ref=="function"&&R(n.ref,e)),c.createRenderEffect(()=>ot(e,n,t,!0,o,!0)),o}function R(e,n,t){return c.untrack(()=>e(n,t))}function v(e,n,t,r){if(t!==void 0&&!r&&(r=[]),typeof n!="function")return X(e,n,r,t);c.createRenderEffect(o=>X(e,n(),o,t),r)}function ot(e,n,t,r,o={},a=!1){n||(n={});for(const i in o)if(!(i in n)){if(i==="children")continue;o[i]=Ce(e,i,null,o[i],t,a,n)}for(const i in n){if(i==="children")continue;const l=n[i];o[i]=Ce(e,i,l,o[i],t,a,n)}}function U(e){return!!c.sharedConfig.context&&!c.sharedConfig.done&&(!e||e.isConnected)}function it(e){return e.toLowerCase().replace(/-([a-z])/g,(n,t)=>t.toUpperCase())}function ke(e,n,t){const r=n.trim().split(/\s+/);for(let o=0,a=r.length;o<a;o++)e.classList.toggle(r[o],t)}function Ce(e,n,t,r,o,a,i){let l,s,d,u,f;if(n==="style")return z(e,t,r);if(n==="classList")return rt(e,t,r);if(t===r)return r;if(n==="ref")a||t(e);else if(n.slice(0,3)==="on:"){const g=n.slice(3);r&&e.removeEventListener(g,r,typeof r!="function"&&r),t&&e.addEventListener(g,t,typeof t!="function"&&t)}else if(n.slice(0,10)==="oncapture:"){const g=n.slice(10);r&&e.removeEventListener(g,r,!0),t&&e.addEventListener(g,t,!0)}else if(n.slice(0,2)==="on"){const g=n.slice(2).toLowerCase(),m=Je.has(g);if(!m&&r){const b=Array.isArray(r)?r[0]:r;e.removeEventListener(g,b)}(m||t)&&(N(e,g,t,m),m&&E([g]))}else if(n.slice(0,5)==="attr:")h(e,n.slice(5),t);else if(n.slice(0,5)==="bool:")nt(e,n.slice(5),t);else if((f=n.slice(0,5)==="prop:")||(d=Ke.has(n))||(u=Qe(n,e.tagName))||(s=Xe.has(n))||(l=e.nodeName.includes("-")||"is"in i)){if(f)n=n.slice(5),s=!0;else if(U(e))return t;n==="class"||n==="className"?xe(e,t):l&&!s&&!d?e[it(n)]=t:e[u||n]=t}else h(e,Ge[n]||n,t);return t}function ct(e){if(c.sharedConfig.registry&&c.sharedConfig.events&&c.sharedConfig.events.find(([s,d])=>d===e))return;let n=e.target;const t=`$$${e.type}`,r=e.target,o=e.currentTarget,a=s=>Object.defineProperty(e,"target",{configurable:!0,value:s}),i=()=>{const s=n[t];if(s&&!n.disabled){const d=n[`${t}Data`];if(d!==void 0?s.call(n,d,e):s.call(n,e),e.cancelBubble)return}return n.host&&typeof n.host!="string"&&!n.host._$host&&n.contains(e.target)&&a(n.host),!0},l=()=>{for(;i()&&(n=n._$host||n.parentNode||n.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return n||document}}),c.sharedConfig.registry&&!c.sharedConfig.done&&(c.sharedConfig.done=_$HY.done=!0),e.composedPath){const s=e.composedPath();a(s[0]);for(let d=0;d<s.length-2&&(n=s[d],!!i());d++){if(n._$host){n=n._$host,l();break}if(n.parentNode===o)break}}else l();a(r)}function X(e,n,t,r,o){const a=U(e);if(a){!t&&(t=[...e.childNodes]);let s=[];for(let d=0;d<t.length;d++){const u=t[d];u.nodeType===8&&u.data.slice(0,2)==="!$"?u.remove():s.push(u)}t=s}for(;typeof t=="function";)t=t();if(n===t)return t;const i=typeof n,l=r!==void 0;if(e=l&&t[0]&&t[0].parentNode||e,i==="string"||i==="number"){if(a||i==="number"&&(n=n.toString(),n===t))return t;if(l){let s=t[0];s&&s.nodeType===3?s.data!==n&&(s.data=n):s=document.createTextNode(n),t=W(e,t,r,s)}else t!==""&&typeof t=="string"?t=e.firstChild.data=n:t=e.textContent=n}else if(n==null||i==="boolean"){if(a)return t;t=W(e,t,r)}else{if(i==="function")return c.createRenderEffect(()=>{let s=n();for(;typeof s=="function";)s=s();t=X(e,s,t,r)}),()=>t;if(Array.isArray(n)){const s=[],d=t&&Array.isArray(t);if(de(s,n,t,o))return c.createRenderEffect(()=>t=X(e,s,t,r,!0)),()=>t;if(a){if(!s.length)return t;if(r===void 0)return t=[...e.childNodes];let u=s[0];if(u.parentNode!==e)return t;const f=[u];for(;(u=u.nextSibling)!==r;)f.push(u);return t=f}if(s.length===0){if(t=W(e,t,r),l)return t}else d?t.length===0?Se(e,s,r):et(e,t,s):(t&&W(e),Se(e,s));t=s}else if(n.nodeType){if(a&&n.parentNode)return t=l?[n]:n;if(Array.isArray(t)){if(l)return t=W(e,t,r,n);W(e,t,null,n)}else t==null||t===""||!e.firstChild?e.appendChild(n):e.replaceChild(n,e.firstChild);t=n}}return t}function de(e,n,t,r){let o=!1;for(let a=0,i=n.length;a<i;a++){let l=n[a],s=t&&t[e.length],d;if(!(l==null||l===!0||l===!1))if((d=typeof l)=="object"&&l.nodeType)e.push(l);else if(Array.isArray(l))o=de(e,l,s)||o;else if(d==="function")if(r){for(;typeof l=="function";)l=l();o=de(e,Array.isArray(l)?l:[l],Array.isArray(s)?s:[s])||o}else e.push(l),o=!0;else{const u=String(l);s&&s.nodeType===3&&s.data===u?e.push(s):e.push(document.createTextNode(u))}}return o}function Se(e,n,t=null){for(let r=0,o=n.length;r<o;r++)e.insertBefore(n[r],t)}function W(e,n,t,r){if(t===void 0)return e.textContent="";const o=r||document.createTextNode("");if(n.length){let a=!1;for(let i=n.length-1;i>=0;i--){const l=n[i];if(o!==l){const s=l.parentNode===e;!a&&!i?s?e.replaceChild(o,l):e.insertBefore(o,t):s&&l.remove()}else a=!0}}else e.insertBefore(o,t);return[o]}const st="http://www.w3.org/2000/svg";function lt(e,n=!1){return n?document.createElementNS(st,e):document.createElement(e)}function dt(e){const{useShadow:n}=e,t=document.createTextNode(""),r=()=>e.mount||document.body,o=c.getOwner();let a,i=!!c.sharedConfig.context;return c.createEffect(()=>{i&&(c.getOwner().user=i=!1),a||(a=c.runWithOwner(o,()=>c.createMemo(()=>e.children)));const l=r();if(l instanceof HTMLHeadElement){const[s,d]=c.createSignal(!1),u=()=>d(!0);c.createRoot(f=>v(l,()=>s()?f():a(),null)),c.onCleanup(u)}else{const s=lt(e.isSVG?"g":"div",e.isSVG),d=n&&s.attachShadow?s.attachShadow({mode:"open"}):s;Object.defineProperty(s,"_$host",{get(){return t.parentNode},configurable:!0}),v(d,a),l.appendChild(s),e.ref&&e.ref(s),c.onCleanup(()=>l.removeChild(s))}},void 0,{render:!i}),t}const ut=5e3,ht=e=>{let n=null;const t=()=>{n!==null&&(window.clearTimeout(n),n=null)};return{show:r=>{t(),e.setState({notification:{...r,show:!0}}),n=window.setTimeout(()=>{e.setState({notification:{...r,show:!1}}),n=null},ut)},clear:()=>{t(),e.setState({notification:{show:!1,type:null,message:null}})}}},Ee=(e,n)=>{if(!n)return e;const t={...e};for(const r in n)n[r]&&typeof n[r]=="object"&&!Array.isArray(n[r])?t[r]=Ee(e[r],n[r]):t[r]=n[r];return t},ft=(e,n)=>{let t;return(...r)=>{clearTimeout(t),t=window.setTimeout(()=>e(...r),n)}},gt="echo_",q="echo-pages",$e=e=>{if(!e||e==="/")return"/";const n=e.split("/");return n.length<=4?e:`/${n[1]}/.../${n[n.length-1]}`},Pe=()=>{window.dispatchEvent(new Event("echo-storage-change"))},ze=e=>`${gt}${e}`,V=(e,n)=>{try{const t=localStorage.getItem(ze(e));return t?JSON.parse(t):n}catch{return n}},K=(e,n)=>{try{localStorage.setItem(ze(e),JSON.stringify(n))}catch(t){console.warn("Failed to save to localStorage:",t)}},ue=()=>{const e=window.location.pathname||"/",n=window.location.search;return`${e}${n}`},mt=(e,n)=>{try{if(!n.feedback.hasUserInteracted&&n.drawing.shapes.length<1)return;const t={message:n.feedback.message,customInputValues:n.feedback.customInputValues},r=V(q,{}),o=$e(e);(t||n.drawing.shapes.length>0)&&(r[o]={...r[o]||{},...t?{feedback:t}:{},drawing:{shapes:n.drawing.shapes}}),K(q,r),Pe()}catch(t){console.warn("Failed to save page state:",t)}},he=e=>{try{return V(q,{})[e]}catch(n){console.error("Failed to load page state:",n);return}},Te=e=>{try{const n=V(q,{});delete n[e],K(q,n),Pe()}catch(n){console.error("Failed to clear page state:",n)}},Oe=()=>{try{const e=V(q,{});return Object.keys(e).length}catch(e){return console.error("Failed to get stored pages count:",e),0}},fe=()=>{try{const e=V(q,{});return Object.entries(e).map(([n,t])=>({path:$e(n),state:t}))}catch(e){return console.error("Failed to get stored pages:",e),[]}},vt=e=>ft((n,t,r=!1)=>{(!r||t.feedback.message.trim().length>0||t.drawing.shapes.length>0)&&(mt(n,t),e.setState({pagesCount:Oe()}))},1e3),ge=Symbol("store-raw"),Y=Symbol("store-node"),M=Symbol("store-has"),Ie=Symbol("store-self");function Me(e){let n=e[c.$PROXY];if(!n&&(Object.defineProperty(e,c.$PROXY,{value:n=new Proxy(e,pt)}),!Array.isArray(e))){const t=Object.keys(e),r=Object.getOwnPropertyDescriptors(e);for(let o=0,a=t.length;o<a;o++){const i=t[o];r[i].get&&Object.defineProperty(e,i,{enumerable:r[i].enumerable,get:r[i].get.bind(n)})}}return n}function re(e){let n;return e!=null&&typeof e=="object"&&(e[c.$PROXY]||!(n=Object.getPrototypeOf(e))||n===Object.prototype||Array.isArray(e))}function G(e,n=new Set){let t,r,o,a;if(t=e!=null&&e[ge])return t;if(!re(e)||n.has(e))return e;if(Array.isArray(e)){Object.isFrozen(e)?e=e.slice(0):n.add(e);for(let i=0,l=e.length;i<l;i++)o=e[i],(r=G(o,n))!==o&&(e[i]=r)}else{Object.isFrozen(e)?e=Object.assign({},e):n.add(e);const i=Object.keys(e),l=Object.getOwnPropertyDescriptors(e);for(let s=0,d=i.length;s<d;s++)a=i[s],!l[a].get&&(o=e[a],(r=G(o,n))!==o&&(e[a]=r))}return e}function ae(e,n){let t=e[n];return t||Object.defineProperty(e,n,{value:t=Object.create(null)}),t}function Z(e,n,t){if(e[n])return e[n];const[r,o]=c.createSignal(t,{equals:!1,internal:!0});return r.$=o,e[n]=r}function wt(e,n){const t=Reflect.getOwnPropertyDescriptor(e,n);return!t||t.get||!t.configurable||n===c.$PROXY||n===Y||(delete t.value,delete t.writable,t.get=()=>e[c.$PROXY][n]),t}function Ae(e){c.getListener()&&Z(ae(e,Y),Ie)()}function bt(e){return Ae(e),Reflect.ownKeys(e)}const pt={get(e,n,t){if(n===ge)return e;if(n===c.$PROXY)return t;if(n===c.$TRACK)return Ae(e),t;const r=ae(e,Y),o=r[n];let a=o?o():e[n];if(n===Y||n===M||n==="__proto__")return a;if(!o){const i=Object.getOwnPropertyDescriptor(e,n);c.getListener()&&(typeof a!="function"||e.hasOwnProperty(n))&&!(i&&i.get)&&(a=Z(r,n,a)())}return re(a)?Me(a):a},has(e,n){return n===ge||n===c.$PROXY||n===c.$TRACK||n===Y||n===M||n==="__proto__"?!0:(c.getListener()&&Z(ae(e,M),n)(),n in e)},set(){return!0},deleteProperty(){return!0},ownKeys:bt,getOwnPropertyDescriptor:wt};function oe(e,n,t,r=!1){if(!r&&e[n]===t)return;const o=e[n],a=e.length;t===void 0?(delete e[n],e[M]&&e[M][n]&&o!==void 0&&e[M][n].$()):(e[n]=t,e[M]&&e[M][n]&&o===void 0&&e[M][n].$());let i=ae(e,Y),l;if((l=Z(i,n,o))&&l.$(()=>t),Array.isArray(e)&&e.length!==a){for(let s=e.length;s<a;s++)(l=i[s])&&l.$();(l=Z(i,"length",a))&&l.$(e.length)}(l=i[Ie])&&l.$()}function De(e,n){const t=Object.keys(n);for(let r=0;r<t.length;r+=1){const o=t[r];oe(e,o,n[o])}}function yt(e,n){if(typeof n=="function"&&(n=n(e)),n=G(n),Array.isArray(n)){if(e===n)return;let t=0,r=n.length;for(;t<r;t++){const o=n[t];e[t]!==o&&oe(e,t,o)}oe(e,"length",r)}else De(e,n)}function Q(e,n,t=[]){let r,o=e;if(n.length>1){r=n.shift();const i=typeof r,l=Array.isArray(e);if(Array.isArray(r)){for(let s=0;s<r.length;s++)Q(e,[r[s]].concat(n),t);return}else if(l&&i==="function"){for(let s=0;s<e.length;s++)r(e[s],s)&&Q(e,[s].concat(n),t);return}else if(l&&i==="object"){const{from:s=0,to:d=e.length-1,by:u=1}=r;for(let f=s;f<=d;f+=u)Q(e,[f].concat(n),t);return}else if(n.length>1){Q(e[r],n,[r].concat(t));return}o=e[r],t=[r].concat(t)}let a=n[0];typeof a=="function"&&(a=a(o,t),a===o)||r===void 0&&a==null||(a=G(a),r===void 0||re(o)&&re(a)&&!Array.isArray(a)?De(o,a):oe(e,r,a))}function me(...[e,n]){const t=G(e||{}),r=Array.isArray(t),o=Me(t);function a(...i){c.batch(()=>{r&&i.length===1?yt(t,i[0]):Q(t,i)})}return[o,a]}const F={rectangle:{id:"rectangle",label:"Highlight",getCursor:()=>"crosshair",strokeWidth:2,opacity:{selected:1,default:1}},path:{id:"path",label:"Pen",getCursor:e=>`url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48" fill="none" stroke="${e.replace("#","%23")}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="24" cy="24" r="8"/></svg>') 24 24, auto`,strokeWidth:6,opacity:{selected:.6,default:1}}},xt=e=>{const n=e.replace("#",""),t=Number.parseInt(n.slice(0,2),16)/255,r=Number.parseInt(n.slice(2,2),16)/255,o=Number.parseInt(n.slice(4,2),16)/255;return .2126*t+.7152*r+.0722*o},kt=e=>xt(e)<.5?"#FFFFFF":"#000000";let A=[],T=null,_=null,H=null;const ve=(e,n)=>(...t)=>{const r=a=>{if(typeof a=="string")return a;if(a instanceof Error)return a.stack||a.message;try{const i=new WeakSet;return JSON.stringify(a,(s,d)=>{if(typeof d=="object"&&d!==null){if(d instanceof Node)return`[${d.nodeName} Element]`;if(i.has(d))return"[Circular Reference]";i.add(d)}return d})}catch{return"[Unable to stringify value]"}},o=t.map(r).join(" ");A.push({type:e,message:o,timestamp:new Date().toISOString()}),A.length>1e3&&(A=A.slice(-1e3)),n.apply(console,t)},Ct=()=>{T||(T={log:console.log,warn:console.warn,error:console.error},_=window.onerror,H=window.onunhandledrejection,window.onerror=(e,n,t,r,o)=>{const a=(o==null?void 0:o.stack)||(o==null?void 0:o.message)||e;return A.push({type:"error",message:`Uncaught Error: ${a}
|
2
|
-
Location: ${n}:${t}:${r}`,timestamp:new Date().toISOString()}),_?_(e,n,t,r,o):!1},window.onunhandledrejection=e=>{const n=e.reason;A.push({type:"error",message:`Unhandled Promise Rejection: ${(n==null?void 0:n.stack)||(n==null?void 0:n.message)||n}`,timestamp:new Date().toISOString()}),H&&H(e)},console.log=
|
3
|
-
Location: ${t}:${r}:${o}`,timestamp:new Date().toISOString()})}))},St=()=>{T&&(console.log=T.log,console.warn=T.warn,console.error=T.error,T=null),_&&(window.onerror=_,_=null),H&&(window.onunhandledrejection=H,H=null),window.removeEventListener("error",()=>{}),A=[]},Et=()=>[...A],$t=()=>{var e;return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||((e=window.matchMedia)==null?void 0:e.call(window,"(max-width: 768px)").matches)},ie=(e,{useClientCoords:n=!1}={})=>{const r=typeof TouchEvent<"u"&&e instanceof TouchEvent?e.touches[0]:null;return{x:r?n?r.clientX:r.pageX:n?e.clientX:e.pageX,y:r?n?r.clientY:r.pageY:n?e.clientY:e.pageY}},Re=(e,n)=>{const t=n.x-e.x,r=n.y-e.y;return Math.sqrt(t*t+r*r)},Fe=e=>{if(e.length!==2)return null;const[n,t]=e;return{x:Math.min(n.x,t.x),y:Math.min(n.y,t.y),width:Math.abs(t.x-n.x),height:Math.abs(t.y-n.y)}},Pt=e=>e.length<2?null:`M ${e[0].x} ${e[0].y} ${e.slice(1).map(n=>`L ${n.x} ${n.y}`).join(" ")}`,we=window.EventTarget.prototype.addEventListener,J=window.EventTarget.prototype.removeEventListener;let ce=!1;const zt=(e,n,t,r)=>{we.call(e,n,t,r)},Tt=(e,n,t,r)=>{J.call(e,n,t,r)},ee=new WeakMap,Ot=e=>{ce||(ce=!0,window.EventTarget.prototype.addEventListener=function(n,t,r){const o=Mt(t,e);ee.has(this)||ee.set(this,new Map);const a={listener:t},i=ee.get(this);i&&i.set(t,a),we.call(this,n,o,r)},window.EventTarget.prototype.removeEventListener=function(n,t,r){const o=ee.get(this);if(!o){J.call(this,n,t,r);return}const a=o.get(t);a?(J.call(this,n,a.listener,r),o.delete(t),o.size===0&&ee.delete(this)):J.call(this,n,t,r)})},It=()=>{ce&&(window.EventTarget.prototype.addEventListener=we,window.EventTarget.prototype.removeEventListener=J,ce=!1)},O=e=>{const{event:n,callback:t,onMount:r,onCleanup:o,useOriginal:a=!0}=e;c.onMount(()=>{r==null||r(),a?zt(window,n,t):window.addEventListener(n,t)}),c.onCleanup(()=>{o==null||o(),a?Tt(window,n,t):window.removeEventListener(n,t)})},be=e=>{const{target:n,options:t,callback:r,onMount:o,onCleanup:a}=e,i=new MutationObserver(r);c.onMount(()=>{o==null||o(),i.observe(n,t)}),c.onCleanup(()=>{a==null||a(),i.disconnect()})},Mt=(e,n)=>function(t){n(t),typeof e=="function"?e.call(this,t):e.handleEvent(t)},At=e=>e.hasAttribute("data-hide-when-drawing"),Dt=async()=>{var e;try{const n=document.createElement("style");document.head.appendChild(n),(e=n.sheet)==null||e.insertRule("body > div:last-child img { display: inline-block; }");const t=await He(document.body,{logging:!1,useCORS:!0,scale:window.devicePixelRatio,allowTaint:!0,ignoreElements:r=>At(r)});return n.remove(),t.toDataURL("image/png")}catch(n){console.error("Failed to capture screenshot:",n);return}},Rt=(e,n,t)=>{let r=`M0 0 H${e.width} V${e.height} H0 Z`;if(n.length===2){const[o,a]=n;r+=` M${o.x} ${o.y} h${a.x-o.x} v${a.y-o.y} h${o.x-a.x} v${o.y-a.y}`}for(const o of t)if(o.type==="rectangle"){const[a,i]=o.points;r+=` M${a.x} ${a.y} h${i.x-a.x} v${i.y-a.y} h${a.x-i.x} v${a.y-i.y}`}return r},Ft=e=>{if(typeof e!="object"||e===null)throw new Error("Echo initialization failed: options must be an object");if(typeof e.onSubmit!="function")throw new Error("Echo initialization failed: onSubmit must be a function");if(e.primaryColor&&!/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(e.primaryColor))throw new Error("Echo initialization failed: primaryColor must be a valid hex color")},Le=5,je=(e,n)=>F[e].getCursor(n),Lt=(e,n,t)=>{var l,s;const[r,o]=me({isDrawing:!1,currentPoints:[],selectedShapeId:null,selectedTool:"rectangle",showTooltip:!0,mousePosition:{x:0,y:0},selectedColor:e.primaryColor,shapes:((s=(l=he(n))==null?void 0:l.drawing)==null?void 0:s.shapes)||[],hasDrawn:!1,isDragging:!1,dragStartPos:null,initialClickPos:null,dragOffset:null,cursor:je("rectangle",e.primaryColor)}),a=(d,u=!1)=>{if(d.selectedTool||d.selectedColor){const f=d.selectedTool||r.selectedTool,g=d.selectedColor||r.selectedColor;d.cursor=je(f,g)}o(d),t==null||t(d,u)},i={startDrawing:d=>{a({isDrawing:!0,currentPoints:[d],selectedShapeId:null})},updateDrawing:d=>{r.selectedTool==="rectangle"?a({currentPoints:[r.currentPoints[0],d]}):r.selectedTool==="path"&&a({currentPoints:[...r.currentPoints,d]})},finishDrawing:()=>{if(r.currentPoints.length>=2){const d={id:Math.random().toString(36).substring(2),type:r.selectedTool,color:r.selectedColor,points:r.currentPoints};a({shapes:[...r.shapes,d]})}a({isDrawing:!1,currentPoints:[]})},handleShapeClick:d=>{},handleStart:d=>{if(d instanceof MouseEvent){const f=d.target;if(!f.classList.contains("echo-drawing-layer-mask")&&!f.classList.contains("echo-shape"))return}const u=ie(d);if(d.target instanceof SVGElement&&d.target.classList.contains("echo-shape")){const f=d.target.dataset.shapeId;if(f&&r.selectedShapeId===f){const g=r.shapes.find(m=>m.id===f);if(g){i.startDrag(u),i.updateDragOffset(g,u);return}}}i.setInitialClick(u)},handleMove:d=>{const u=ie(d,{useClientCoords:!0}),f=ie(d);if(a({mousePosition:u}),r.isDragging&&r.selectedShapeId&&r.dragStartPos&&r.shapes.find(m=>m.id===r.selectedShapeId)){const m=f.x-r.dragStartPos.x,b=f.y-r.dragStartPos.y,S=r.shapes.map(k=>k.id===r.selectedShapeId?{...k,points:k.points.map(C=>({x:C.x+m,y:C.y+b}))}:k);a({shapes:S}),i.startDrag(f);return}if(r.initialClickPos&&!r.isDrawing){Re(r.initialClickPos,f)>=Le&&i.startDrawing(r.initialClickPos);return}r.isDrawing&&i.updateDrawing(f)},handleEnd:d=>{if(r.isDragging){i.stopDrag();return}if(r.initialClickPos&&!r.isDrawing){const u=ie(d);if(Re(r.initialClickPos,u)<Le&&d.target instanceof SVGElement&&d.target.classList.contains("echo-shape")){const g=d.target.dataset.shapeId;g&&a({selectedShapeId:g})}}i.setInitialClick(null),i.finishDrawing()},handleEnter:d=>{d.target===d.currentTarget&&!r.hasDrawn&&a({showTooltip:!0})},handleLeave:d=>{d.target===d.currentTarget&&a({showTooltip:!1})},startDrag:d=>{a({isDragging:!0,dragStartPos:d})},stopDrag:()=>{a({isDragging:!1,dragStartPos:null,dragOffset:null})},setInitialClick:d=>{a({initialClickPos:d})},updateDragOffset:(d,u)=>{a({dragOffset:{x:u.x-d.points[0].x,y:u.y-d.points[0].y}})}};return{state:r,setState:a,methods:i}},jt=(e,n,t,r)=>{var f;const o=(r==null?void 0:r.reduce((g,m)=>(g[m.id]=m.defaultValue??(m.type==="checkbox"?[]:""),g),{}))||{},a=he(n),i=(a==null?void 0:a.feedback.customInputValues)||{},l={...o,...i},[s,d]=me({message:((f=a==null?void 0:a.feedback)==null?void 0:f.message)||"",screenshot:void 0,isCapturing:!1,isMinimized:!1,customInputValues:l,hasUserInteracted:!1});return{state:s,setState:(g,m=!1)=>{const b="isCapturing"in g||"isMinimized"in g||m;!b&&!s.hasUserInteracted&&d({hasUserInteracted:!0}),d(g),(s.hasUserInteracted||b)&&(t==null||t(g,m))}}},Nt=(e,n)=>{const[t,r]=me({text:e.textConfig,isOpen:!1,primaryColor:e.primaryColor,notification:{show:!1,type:null,message:null},dimensions:{width:document.documentElement.clientWidth,height:document.documentElement.scrollHeight},isStoredFeedbackOpen:!1,pagesCount:Oe(),welcomeMessageIsClosing:!1,position:e.position,customInputs:e.customInputs});return{state:t,setState:r}},Ne=e=>{var n;return((n=e.customInputs)==null?void 0:n.reduce((t,r)=>(t[r.id]=r.defaultValue??(r.type==="checkbox"?[]:""),t),{}))||{}},qt=e=>{let n=ue();const t=Nt(e),r=vt(t),o=ht(t),a=jt(e,n,(d,u)=>{r(n,{feedback:{...a.state,...d},drawing:i.state},u)},e.customInputs),i=Lt(e,n,(d,u)=>{r(n,{feedback:a.state,drawing:{...i.state,...d}},u)}),l=d=>{n=d;const u=he(n),f={...Ne(e),...u==null?void 0:u.feedback.customInputValues};a.setState({message:(u==null?void 0:u.feedback.message)||"",customInputValues:f,hasUserInteracted:!1}),i.setState({shapes:(u==null?void 0:u.drawing.shapes)||[]})},s=()=>{Te(n);const d={feedback:{message:"",screenshot:void 0,isCapturing:!1,isMinimized:!1,hasUserInteracted:!1,customInputValues:Ne(e)},drawing:{isDrawing:!1,currentPoints:[],shapes:[],selectedShapeId:null,selectedTool:"rectangle",selectedColor:e.primaryColor,showTooltip:!0,mousePosition:{x:0,y:0},hasDrawn:!1,isDragging:!1,dragStartPos:null,initialClickPos:null,dragOffset:null,cursor:i.state.cursor},widget:{isOpen:!1}};a.setState(d.feedback,!0),i.setState(d.drawing,!0),t.setState(d.widget)};return{feedback:a,drawing:i,widget:t,methods:{reset:s,handlePageChange:l,submit:async d=>{t.setState({isOpen:!1});try{const u=await e.onSubmit(d);return u instanceof Response&&!u.ok?(o.show({type:"error",message:"Submission failed"}),u):(s(),o.show({type:"success",message:"Feedback submitted"}),u)}catch{o.show({type:"error",message:"Submission failed"})}}}}},qe=c.createContext(),Vt=e=>{const n=qt({primaryColor:e.primaryColor,onSubmit:e.onSubmit,textConfig:e.textConfig,position:e.position,customInputs:e.customInputs});return c.createComponent(qe.Provider,{value:n,get children(){return e.children}})},x=()=>{const e=c.useContext(qe);if(!e)throw new Error("useEchoStore must be used within EchoProvider");return e},Bt=e=>{const[n,t]=c.createSignal({width:document.documentElement.clientWidth,height:document.documentElement.scrollHeight}),r=()=>{requestAnimationFrame(()=>{const o=e();o&&(o.style.height="0px",o.style.height=`${document.documentElement.scrollHeight}px`,t({width:document.documentElement.clientWidth,height:document.documentElement.scrollHeight}))})};return O({event:"resize",callback:r,onMount:r}),be({target:document.documentElement,options:{childList:!0,subtree:!0,attributes:!0},callback:r}),n},Wt=({onUrlChange:e})=>{let n=ue();const t=()=>{const r=ue();r!==n&&(n=r,e(r))};O({event:"popstate",callback:t}),O({event:"pushstate",callback:t}),O({event:"replacestate",callback:t}),be({target:document.documentElement,options:{childList:!0,subtree:!0},callback:t})},Yt=`*,*:before,*:after{box-sizing:border-box}.echo-root{position:absolute;top:0;left:0;z-index:var(--z-root);isolation:isolate;pointer-events:none;--z-root: 999999;--z-launcher: 2;--z-overlay: 1;--z-drawing-toolbar: 3;--z-drawing-tooltip: 3;--z-shape-actions: 3;--z-notification: 2;--z-welcome-message: 2;--z-widget-button: 2;--z-feedback-form: 4;--primary-color: #000;--primary-text-color: #fff;--error-color: #f44336;--success-color: var(--primary-color);--text-dark: #1a1a1a;--text-medium: #333;--text-light: #666;--text-lighter: #999;--border-color: rgba(0, 0, 0, .1);--border-color-light: rgba(0, 0, 0, .05);--border-color-medium: rgba(0, 0, 0, .08);--primary-color-lighter: color-mix(in srgb, var(--primary-color) 100%, white 40%);--primary-color-lightest: color-mix(in srgb, var(--primary-color) 7%, white 100%);--hover-color: color-mix(in srgb, var(--primary-color) 80%, #fff);--shadow-color-dark: rgba(0, 0, 0, .6);--shadow-color-light: rgba(255, 255, 255, .1);--shadow-color-medium: rgba(0, 0, 0, .2);--shadow-sm: 0 1px 3px;--shadow-md: 0 4px 10px;--shadow-lg: 0 10px 20px;--shadow-black-sm: var(--shadow-sm) rgba(0, 0, 0, .5);--shadow-black-md: var(--shadow-md) rgba(0, 0, 0, .5);--shadow-black-lg: var(--shadow-lg) rgba(0, 0, 0, .5);--shadow-black-lightened-sm: var(--shadow-sm) var(--shadow-color-medium);--shadow-black-lightened-md: var(--shadow-md) var(--shadow-color-medium);--shadow-black-lightened-lg: var(--shadow-lg) var(--shadow-color-medium);--shadow-primary-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color) 60%, transparent 80%);--shadow-primary-md: var(--shadow-md) color-mix(in srgb, var(--primary-color) 50%, transparent 80%);--shadow-primary-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color) 40%, transparent 80%);--shadow-primary-lighter-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color-lighter) 70%, transparent 80%);--shadow-primary-lighter-md: var(--shadow-md) color-mix(in srgb, var(--primary-color-lighter) 60%, transparent 80%);--shadow-primary-lighter-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color-lighter) 50%, transparent 80%);--shadow-primary-lightest-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color-lightest) 70%, transparent 80%);--shadow-primary-lightest-md: var(--shadow-md) color-mix(in srgb, var(--primary-color-lightest) 60%, transparent 80%);--shadow-primary-lightest-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color-lightest) 50%, transparent 80%);--shadow-combined-sm: var(--shadow-primary-sm), var(--shadow-black-lightened-sm);--shadow-combined-md: var(--shadow-primary-md), var(--shadow-black-lightened-md);--shadow-combined-lg: var(--shadow-primary-lg), var(--shadow-black-lightened-lg);--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 20px;--spacing-2xl: 24px;--spacing-3xl: 32px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--font-xs: .8125rem;--font-sm: .875rem;--font-base: .9375rem;--font-md: 1rem;--font-lg: 1.125rem;--duration-fast: .1s;--duration-base: .2s;--duration-slow: .3s;--duration-slower: .4s;--duration-slowest: .6s;--ease-default: ease;--ease-in-out: ease-in-out;--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.16, 1, .3, 1)}.echo-stored-feedback{position:absolute;display:flex;flex-direction:column;bottom:calc(100% + var(--spacing-lg));right:0;width:320px;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-black-lightened-lg);animation:slideUpFade var(--duration-base) var(--ease-smooth);z-index:calc(var(--z-widget-button) + 1);transform-origin:bottom right;transition:all var(--duration-base) var(--ease-smooth)}.echo-stored-feedback-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg)}.echo-stored-feedback-header h3{margin:0;font-size:var(--font-md);font-weight:600}.echo-stored-feedback-list{max-height:400px;overflow-y:auto;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-stored-feedback-item{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--border-color-light);transition:all var(--duration-base) var(--ease-smooth);background:#fff;position:relative}.echo-stored-feedback-item:hover{background:var(--primary-color-lightest)}.echo-stored-feedback-item-current{background:var(--primary-color-lightest);padding-left:calc(var(--spacing-lg) - 3px)}.echo-stored-feedback-item-current:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--primary-color);border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.echo-stored-feedback-item:last-child{border-bottom:none;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-stored-feedback-item:last-child.echo-stored-feedback-item-current:before{border-bottom-left-radius:var(--radius-lg)}.echo-stored-feedback-content{flex:1;min-width:0;margin-right:var(--spacing-md)}.echo-stored-feedback-path{font-size:var(--font-sm);font-weight:500;color:var(--text-medium);margin-bottom:var(--spacing-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.echo-stored-feedback-preview{font-size:var(--font-xs);color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.echo-stored-feedback-actions{display:flex;align-items:center;gap:var(--spacing-sm)}.echo-stored-feedback-link{color:var(--text-light)}.echo-stored-feedback-link:hover{color:var(--primary-color)}.echo-stored-feedback-delete{color:var(--text-light);font-size:var(--font-xs);padding:var(--spacing-xs) var(--spacing-md)}.echo-stored-feedback-delete:hover{color:var(--error-color);background:color-mix(in srgb,var(--error-color) 10%,transparent)}.echo-stored-feedback-empty{padding:var(--spacing-3xl) var(--spacing-lg);text-align:center;color:var(--text-light);font-size:var(--font-sm);border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-launcher{position:fixed;z-index:var(--z-launcher);bottom:var(--spacing-xl);right:var(--spacing-xl);pointer-events:none}.echo-overlay{position:absolute;top:0;left:0;margin:0;padding:0;max-width:none;max-height:none;border:3px solid var(--primary-color);background:transparent}.echo-overlay::backdrop{background:transparent}[data-hidden=true],[data-hidden=false]{transition:opacity var(--duration-slow) var(--ease-in-out),visibility var(--duration-slow) var(--ease-in-out)}[data-hidden=true]{opacity:0;visibility:hidden;pointer-events:none}[data-hidden=false]{opacity:1;visibility:visible;pointer-events:auto;user-select:none;-webkit-user-select:none}.echo-launcher-button{z-index:var(--z-widget-button);position:relative;display:flex;align-items:center;justify-content:center;cursor:pointer;background:radial-gradient(circle at 40% 40%,var(--primary-color) 0%,var(--primary-color-lighter) 65%,var(--primary-color-lighter) 100%);border:none;border-radius:var(--radius-full);width:48px;height:48px;box-shadow:var(--shadow-black-md);transition:all var(--duration-slow) var(--ease-default),transform var(--duration-slower) var(--ease-smooth),opacity var(--duration-slow) var(--ease-in-out);will-change:transform}.echo-launcher-button:hover{box-shadow:var(--shadow-black-lg);transform:translateY(-2px)}.echo-launcher-button:active{transform:scale(.95)}.echo-launcher-button-count{position:absolute;top:calc(-1 * var(--spacing-xs));right:calc(-1 * var(--spacing-xs));background:var(--primary-color-lightest);color:var(--primary-color-lighter);border-radius:var(--radius-md);min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-black-sm);padding:0 var(--spacing-xs);font-weight:600;pointer-events:auto;cursor:pointer;transform-origin:center center;animation:popIn var(--duration-slow) var(--ease-bounce);transition:transform var(--duration-base) var(--ease-default)}.echo-launcher-button-count:hover{transform:scale(1.1)}.echo-feedback{position:fixed;bottom:var(--spacing-xl);right:var(--spacing-xl);width:min(calc(100vw - var(--spacing-2xl)),24rem);z-index:var(--z-feedback-form);box-shadow:var(--shadow-black-lightened-lg);display:flex;flex-direction:column;gap:var(--spacing-lg);background:#fff;border-radius:var(--radius-lg);will-change:transform;padding:var(--spacing-lg)}.echo-feedback[data-minimized=true]{transition:transform .4s var(--ease-default),box-shadow .4s var(--ease-default);transform:translate(calc(100% - 48px),calc(100% - 48px));box-shadow:0 8px 16px #0003}.echo-feedback[data-minimized=true]:hover{cursor:pointer;transform:translate(calc(100% - 48px),calc(100% - 48px)) rotate(-2deg) scale(1.1);box-shadow:0 12px 24px #00000040}.echo-feedback[data-minimized=false]{transition:transform .4s var(--ease-smooth),box-shadow .4s var(--ease-smooth);transform:translate(0)}.echo-feedback[style*=transition]{pointer-events:none}.echo-feedback-content{display:flex;flex-direction:column;gap:var(--spacing-lg)}.echo-feedback-header{display:flex;justify-content:space-between;align-items:center}.echo-feedback-title{font-size:var(--font-lg);font-weight:600;color:var(--text-dark);margin:0}.echo-feedback-header-actions{display:flex;gap:var(--spacing-xs);margin:calc(-1 * var(--spacing-sm)) calc(-1 * var(--spacing-sm)) calc(-1 * var(--spacing-sm)) 0}.echo-feedback-form-textarea{width:100%;padding:.5rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:#fff;color:var(--text-medium);font-size:var(--font-sm);transition:all var(--duration-base) var(--ease-default);min-height:120px;resize:vertical;font-family:inherit}.echo-feedback-form-textarea:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-feedback-form-textarea::placeholder{color:var(--text-lighter)}[data-hide-when-drawing=true]{opacity:1;visibility:visible;transition:opacity .3s ease-in-out,visibility .3s ease-in-out}[data-drawing=true] [data-hide-when-drawing=true]{opacity:0;visibility:hidden;pointer-events:none;user-select:none;-webkit-user-select:none}.echo-drawing-layer,.echo-drawing-layer-container{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;user-select:none;-webkit-user-select:none}.echo-drawing-layer-container svg{pointer-events:auto}.echo-drawing-toolbar{position:fixed;top:var(--spacing-xl);left:var(--spacing-xl);display:flex;flex-direction:column;gap:var(--spacing-sm);z-index:var(--z-drawing-toolbar);opacity:1;transition:opacity var(--duration-base) var(--ease-default)}.echo-drawing-toolbar-button{width:50px;height:50px;border-radius:var(--radius-full);border:2px solid #ddd;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:all var(--duration-base) var(--ease-default);box-shadow:var(--shadow-black-sm);position:relative}.echo-drawing-toolbar-icon{width:25px;height:25px;color:var(--primary-color);transition:color var(--duration-base) var(--ease-default)}.echo-drawing-toolbar-button:hover{transform:scale(1.05);border-color:var(--hover-color)}.echo-drawing-toolbar-button[data-selected=true]{background:var(--primary-color-lightest);border-color:var(--primary-color)}.echo-color-selector{position:relative}.echo-color-selector:hover .echo-drawing-toolbar-button{border-top-right-radius:0;border-bottom-right-radius:0;transform:scale(1.05);border-right-color:transparent;background:rgba(var(--primary-color),.9);border-color:var(--hover-color)}.echo-color-swatch-wrapper{position:absolute;left:calc(100% - 2px);top:50%;transform:translateY(-50%);height:52.5px;padding-right:var(--spacing-sm);display:none}.echo-color-selector:hover .echo-color-swatch-wrapper{display:block}.echo-color-swatch{height:100%;background:#fff;border-radius:var(--radius-md);border-top-left-radius:0;border-bottom-left-radius:0;padding:var(--spacing-sm);padding-left:var(--spacing-md);box-shadow:var(--shadow-black-sm);display:flex;align-items:center;gap:var(--spacing-sm);border:2px solid #ddd;border-left:none}.echo-color-selector:hover .echo-color-swatch{border-color:var(--hover-color)}.echo-color-swatch-button{width:24px;height:24px;border-radius:var(--radius-full);border:2px solid transparent;cursor:pointer;padding:0;transition:transform var(--duration-base) var(--ease-default)}.echo-color-swatch-button:hover{transform:scale(1.1)}.echo-color-swatch-button[data-selected=true]{border-color:var(--primary-color)}.echo-drawing-tooltip{display:flex;text-wrap:nowrap;position:fixed;background:#fff;padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-lg);box-shadow:var(--shadow-combined-sm);font-size:var(--font-sm);color:var(--primary-color);z-index:var(--z-drawing-tooltip);pointer-events:none;animation:slideDownFade var(--duration-slow) var(--ease-default);border:1px solid var(--primary-color);background:var(--primary-color-lightest)}.echo-shape-actions{position:fixed;z-index:var(--z-shape-actions);display:flex;gap:var(--spacing-xs);background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-combined-md);transform:translate(-50%,-100%) translateY(calc(-1 * var(--spacing-sm)));animation:popInSlideDown var(--duration-fast) var(--ease-default);cursor:default;pointer-events:auto;padding:var(--spacing-xs);border:1px solid var(--primary-color)}.echo-shape-actions-divider{width:1px;margin:var(--spacing-sm) 0;background:var(--border-color);pointer-events:none}.echo-shape-actions[hidden]{display:none}.echo-notification{position:absolute;z-index:var(--z-notification);bottom:70px;right:0;width:300px;padding:var(--spacing-2xl);border-radius:var(--radius-lg);font-size:var(--font-md);font-weight:500;box-shadow:var(--shadow-combined-md);background:#fff;border:1px solid var(--primary-color);transform-origin:bottom right;display:flex;flex-direction:column;align-items:center;gap:var(--spacing-xl);opacity:1;pointer-events:auto;transition:all var(--duration-base) var(--ease-smooth)}.echo-notification:not([data-empty=true]){animation:popInSlideUp var(--duration-slower) var(--ease-spring)}.echo-notification[data-empty=true]{opacity:0;pointer-events:none;transform:translateY(var(--spacing-sm)) scale(.95);transition:none}.echo-notification-hide{position:absolute;top:var(--spacing-lg);right:var(--spacing-lg);width:24px;height:24px;padding:var(--spacing-xs);border:none;background:transparent;color:var(--text-light);opacity:.7;cursor:pointer;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;transition:all var(--duration-base) var(--ease-bounce);flex-shrink:0}.echo-notification-hide:hover{opacity:1;background:var(--primary-color-lightest);transform:scale(1.1);color:var(--primary-color)}.echo-notification-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;transform:scale(1.5);background:var(--primary-color-lightest);padding:var(--spacing-md);border-radius:var(--radius-full);margin-top:var(--spacing-md);transition:all var(--duration-base) var(--ease-bounce)}.echo-notification[data-type=success]{border-color:var(--success-color)}.echo-notification[data-type=success] .echo-notification-icon{color:var(--success-color)}.echo-notification[data-type=error]{border-color:var(--error-color)}.echo-notification[data-type=error] .echo-notification-icon{color:var(--error-color);background:color-mix(in srgb,var(--error-color) 10%,white)}.echo-notification-content{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;padding:0 12px}.echo-notification-title{font-size:1rem;font-weight:600;color:#1a1a1a}.echo-notification-message{font-size:.875rem;font-weight:400;color:#666;line-height:1.4;max-width:100%}@media (max-width: 768px){.echo-notification{right:0;width:calc(100vw - 40px);height:auto;min-height:180px;-webkit-backdrop-filter:none;backdrop-filter:none;font-size:.9375rem;padding:20px;gap:16px;bottom:calc(100% + 20px)}.echo-notification-icon{transform:scale(1.3);padding:10px;margin-top:8px}.echo-notification-title{font-size:.9375rem}.echo-notification-message{font-size:.8125rem}}.echo-welcome-message{display:flex;align-items:center;gap:var(--spacing-xs);position:fixed;z-index:var(--z-welcome-message);background:var(--primary-color-lightest);border:1px solid var(--primary-color);color:var(--primary-color);padding:var(--spacing-md) var(--spacing-lg);border-radius:var(--radius-lg);font-size:var(--font-sm);font-weight:500;box-shadow:var(--shadow-combined-md);opacity:1;transform:translateY(0) scale(1);transition:all var(--duration-slow) var(--ease-smooth);animation:bounceIn var(--duration-slowest) var(--ease-bounce);user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;cursor:pointer;text-align:left}.echo-welcome-message:hover{transform:translateY(-2px) scale(1.02);background:var(--primary-color-lightest);box-shadow:var(--shadow-combined-lg)}.echo-welcome-message:active{transform:translateY(0) scale(.98)}.echo-welcome-message-close{width:20px;height:20px;padding:2px;margin-left:var(--spacing-xs);border:none;background:transparent;opacity:.7;cursor:pointer;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;transition:all var(--duration-base) var(--ease-default)}.echo-welcome-message-close:hover{opacity:1;background:var(--shadow-color-light);transform:scale(1.1)}.echo-welcome-message-close:active{transform:scale(.95)}.echo-welcome-message:after{content:"";position:absolute;bottom:-4px;right:17px;width:16px;height:16px;background:inherit;transform:rotate(45deg);border-radius:var(--radius-xs);border:1px solid var(--primary-color);z-index:-2}.echo-welcome-message:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:var(--primary-color-lightest);z-index:-1;border-radius:var(--radius-lg)}.echo-welcome-message-pulsar{content:"";display:inline-block;width:6px;height:6px;background:var(--primary-color);border-radius:50%;margin-right:8px;animation:pulse 1.5s var(--ease-in-out) infinite}.echo-button{display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius-md);font-weight:500;cursor:pointer;transition:all var(--duration-base) var(--ease-default);line-height:1}.echo-button:focus-visible{outline:2px solid var(--primary-color);outline-offset:2px}.echo-button-primary{background:var(--primary-color);color:#fff}.echo-button-primary:hover{background:var(--hover-color);transform:translateY(-1px)}.echo-button-primary:active{transform:translateY(0)}.echo-button-secondary{background:transparent;color:var(--text-light)}.echo-button-secondary:hover{background-color:var(--primary-color-lightest);color:var(--primary-color)}.echo-button-xs{padding:var(--spacing-xs);font-size:var(--font-xs)}.echo-button-sm{padding:var(--spacing-xs);font-size:var(--font-sm)}.echo-button-md{padding:var(--spacing-md) var(--spacing-2xl);font-size:var(--font-base)}.echo-button-lg{padding:var(--spacing-md) var(--spacing-3xl);font-size:var(--font-md)}@keyframes slideUpFade{0%{opacity:0;transform:translateY(var(--spacing-sm))}to{opacity:1;transform:translateY(0)}}@keyframes slideDownFade{0%{opacity:0;transform:translateY(calc(-1 * var(--spacing-sm)))}to{opacity:1;transform:translateY(0)}}@keyframes popIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes popInSlideUp{0%{opacity:0;transform:translateY(var(--spacing-sm)) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes popInSlideDown{0%{opacity:0;transform:translate(-50%,-100%) translateY(calc(-1 * var(--spacing-xs))) scale(.95)}to{opacity:1;transform:translate(-50%,-100%) translateY(calc(-1 * var(--spacing-sm))) scale(1)}}@keyframes bounceIn{0%{opacity:0;transform:translateY(var(--spacing-xl)) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.5}to{transform:scale(1);opacity:1}}.echo-inputs{display:flex;flex-direction:column;gap:1rem;margin-bottom:1rem}.echo-input{display:flex;flex-direction:column;gap:.5rem}.echo-input-label{font-size:.875rem;font-weight:500;color:var(--text-color)}.echo-input-required{color:#dc2626;margin-left:.25rem}.echo-input-field{width:100%;padding:.5rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:#fff;color:var(--text-medium);font-size:var(--font-sm);transition:all var(--duration-base) var(--ease-default)}.echo-input-field:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-input-field::placeholder{color:var(--text-lighter)}select.echo-input-field{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center;padding-right:2.5rem;cursor:pointer}.echo-input-options{display:flex;flex-direction:column;gap:var(--spacing-sm);border:none;margin:0;padding:0}.echo-input-option{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:var(--spacing-xs);border-radius:var(--radius-sm);transition:all var(--duration-base) var(--ease-default)}.echo-input-option:hover{background:var(--primary-color-lightest)}.echo-input-option input[type=radio],.echo-input-option input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;width:18px;height:18px;border:1px solid var(--border-color);background-color:#fff;display:grid;place-content:center;cursor:pointer;transition:all var(--duration-base) var(--ease-default)}.echo-input-option input[type=radio]{border-radius:50%}.echo-input-option input[type=radio]:before{content:"";width:10px;height:10px;border-radius:50%;transform:scale(0);transition:transform var(--duration-base) var(--ease-default);background-color:var(--primary-color)}.echo-input-option input[type=radio]:checked:before{transform:scale(1)}.echo-input-option input[type=checkbox]{border-radius:var(--radius-sm)}.echo-input-option input[type=checkbox]:before{content:"";width:12px;height:12px;transform:scale(0);transition:all var(--duration-base) var(--ease-default);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");background-size:contain;background-repeat:no-repeat;background-position:center}.echo-input-option input[type=checkbox]:checked{background-color:var(--primary-color-lighter);border-color:var(--primary-color-lighter)}.echo-input-option input[type=checkbox]:checked:before{transform:scale(1)}.echo-input-option input[type=radio]:hover,.echo-input-option input[type=checkbox]:hover{border-color:var(--primary-color-lighter)}.echo-input-option input[type=radio]:focus,.echo-input-option input[type=checkbox]:focus{outline:none;border-color:var(--primary-color-lighter);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-input-option input[type=radio]:checked,.echo-input-option input[type=checkbox]:checked{border-color:var(--primary-color-lighter)}.echo-input-option span{font-size:var(--font-sm);color:var(--text-medium);-webkit-user-select:none;user-select:none}.echo-select{position:relative;width:100%}.echo-select-trigger{width:100%;padding:.5rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:#fff;color:var(--text-medium);font-size:var(--font-sm);transition:all var(--duration-base) var(--ease-default);cursor:pointer;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:.5rem;outline:none}.echo-select-trigger[data-placeholder=true]{color:var(--text-lighter)}.echo-select-trigger:hover{border-color:var(--border-color-medium)}.echo-select-trigger:focus,.echo-select-trigger[data-open=true]{border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-select-arrow{flex-shrink:0;transition:transform var(--duration-base) var(--ease-default)}.echo-select-trigger[data-open=true] .echo-select-arrow{transform:rotate(180deg)}.echo-select-dropdown{position:absolute;top:calc(100% + .25rem);left:0;right:0;background:#fff;border:1px solid var(--border-color-medium);border-radius:var(--radius-md);box-shadow:var(--shadow-black-lightened-md);max-height:15rem;overflow-y:auto;z-index:10;animation:slideDownFade var(--duration-base) var(--ease-default);padding:var(--spacing-xs)}.echo-select-option{width:100%;padding:.5rem .75rem;background:none;border:none;text-align:left;color:var(--text-medium);font-size:var(--font-sm);cursor:pointer;transition:all var(--duration-base) var(--ease-default);outline:none;border-radius:var(--radius-sm)}.echo-select-option:hover{background:var(--primary-color-lightest)}.echo-select-option:focus{background:var(--primary-color-lightest);box-shadow:0 0 0 1px var(--primary-color) inset}.echo-select-option[data-selected=true]{background:var(--primary-color-lightest);color:var(--primary-color);font-weight:500}select.echo-input-field{display:none}.visually-hidden{position:absolute;left:50%;bottom:0;transform:translate(-50%);width:1px;height:1px;padding:0;margin:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}`;var _t=w('<div class=echo-color-selector role=group aria-label="Color Selection"><button class=echo-drawing-toolbar-button title="Current Color"></button><div class=echo-color-swatch-wrapper role=listbox aria-label="Available Colors"><div class=echo-color-swatch>'),Ht=w("<button class=echo-color-swatch-button role=option>");const Ut=["#ff6b6b","#69db7c","#74c0fc","#ffd43b","#da77f2","#66d9e8","#ffa94d","#e599f7"],Xt={"#ff6b6b":"Soft Red","#69db7c":"Soft Green","#74c0fc":"Soft Blue","#ffd43b":"Soft Yellow","#da77f2":"Soft Purple","#66d9e8":"Soft Cyan","#ffa94d":"Soft Orange","#e599f7":"Soft Pink"},pe=e=>Xt[e]||"Primary",Kt=()=>{const e=x();return(()=>{var n=_t(),t=n.firstChild,r=t.nextSibling,o=r.firstChild;return h(t,"aria-expanded",!1),v(o,c.createComponent(c.For,{get each(){return[e.widget.state.primaryColor,...Ut]},children:a=>(()=>{var i=Ht();return i.$$click=()=>e.drawing.setState({selectedColor:a}),a!=null?i.style.setProperty("background-color",a):i.style.removeProperty("background-color"),c.createRenderEffect(l=>{var s=`Select ${pe(a)} color`,d=e.drawing.state.selectedColor===a,u=`${pe(a)} color`,f=e.drawing.state.selectedColor===a;return s!==l.e&&h(i,"title",l.e=s),d!==l.t&&h(i,"data-selected",l.t=d),u!==l.a&&h(i,"aria-label",l.a=u),f!==l.o&&h(i,"aria-selected",l.o=f),l},{e:void 0,t:void 0,a:void 0,o:void 0}),i})()})),c.createRenderEffect(a=>{var i=`Current color: ${pe(e.drawing.state.selectedColor)}`,l=e.drawing.state.selectedColor;return i!==a.e&&h(t,"aria-label",a.e=i),l!==a.t&&((a.t=l)!=null?t.style.setProperty("background-color",l):t.style.removeProperty("background-color")),a},{e:void 0,t:void 0}),n})()};E(["click"]);var Gt=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="m9 18 6-6-6-6">');const Zt=e=>(()=>{var n=Gt();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var Qt=w('<svg viewBox="0 0 64 66"fill=none><path d="M59.716 36.936L54.9 33l-6.17 5.108a77.278 77.278 0 00-12.744 13.469l-3.637 4.914-3.778-5.017a83.719 83.719 0 00-13.956-14.538L9.799 33l2.86-2.332A104.39 104.39 0 0030.1 12.5l2.24-2.98 1.736 2.298a111.905 111.905 0 0018.608 19.384l2.206 1.81 2.861-2.333a104.13 104.13 0 005.297-4.641C59.978 11.294 47.409.26 32.349.26 14.997.26.92 14.923.92 33c0 18.076 14.077 32.74 31.43 32.74 15.102 0 27.715-11.103 30.73-25.892a75.808 75.808 0 00-3.375-2.912h.011z">');const Jt=e=>(()=>{var n=Qt(),t=n.firstChild;return c.createRenderEffect(r=>{var o=e.size??24,a=e.size??24,i=e.class,l=e.style,s=e.fill??"currentColor";return o!==r.e&&h(n,"width",r.e=o),a!==r.t&&h(n,"height",r.t=a),i!==r.a&&h(n,"class",r.a=i),r.o=z(n,l,r.o),s!==r.i&&h(t,"fill",r.i=s),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),n})();var en=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M3 7V5a2 2 0 0 1 2-2h2"></path><path d="M17 3h2a2 2 0 0 1 2 2v2"></path><path d="M21 17v2a2 2 0 0 1-2 2h-2"></path><path d="M7 21H5a2 2 0 0 1-2-2v-2">');const tn=e=>(()=>{var n=en();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var nn=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z">');const rn=e=>(()=>{var n=nn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var an=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M3 6h18"></path><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"></path><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"></path><line x1=10 x2=10 y1=11 y2=17></line><line x1=14 x2=14 y1=11 y2=17>');const Ve=e=>(()=>{var n=an();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var on=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><circle cx=12 cy=12 r=10></circle><path d="m9 12 2 2 4-4">');const cn=e=>(()=>{var n=on();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var sn=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><circle cx=12 cy=12 r=10></circle><path d="m15 9-6 6"></path><path d="m9 9 6 6">');const ln=e=>(()=>{var n=sn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var dn=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M18 6 6 18"></path><path d="m6 6 12 12">');const se=e=>(()=>{var n=dn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var un=w('<div class=echo-drawing-toolbar data-hide-when-drawing=true role=toolbar aria-label="Drawing Tools"><button class=echo-drawing-toolbar-button title="Clear drawings"aria-label="Clear all drawings"role=button>'),hn=w("<button class=echo-drawing-toolbar-button role=button>");const fn={rectangle:tn,path:rn},gn=()=>{const e=x(),n=Object.values(F);return(()=>{var t=un(),r=t.firstChild;return v(t,c.createComponent(c.For,{each:n,children:o=>{const a=fn[o.id];return(()=>{var i=hn();return i.$$click=()=>e.drawing.setState({selectedTool:o.id}),v(i,c.createComponent(a,{class:"echo-drawing-toolbar-icon","aria-hidden":"true"})),c.createRenderEffect(l=>{var s=o.label,d=e.drawing.state.selectedTool===o.id,u=o.label,f=e.drawing.state.selectedTool===o.id;return s!==l.e&&h(i,"title",l.e=s),d!==l.t&&h(i,"data-selected",l.t=d),u!==l.a&&h(i,"aria-label",l.a=u),f!==l.o&&h(i,"aria-pressed",l.o=f),l},{e:void 0,t:void 0,a:void 0,o:void 0}),i})()}}),r),v(t,c.createComponent(Kt,{}),r),r.$$click=()=>e.drawing.setState({shapes:[]},!0),v(r,c.createComponent(Ve,{class:"echo-drawing-toolbar-icon","aria-hidden":"true"})),t})()};E(["click"]);var mn=w("<div class=echo-drawing-tooltip data-hide-when-drawing=true>");const vn=()=>{const e=x(),n=c.createMemo(()=>e.drawing.state.showTooltip&&e.drawing.state.mousePosition.y&&e.drawing.state.mousePosition.x&&e.widget.state.isOpen&&!$t());return c.createComponent(c.Show,{get when(){return n()},get children(){var t=mn();return v(t,()=>e.widget.state.text.drawingTooltip.text),c.createRenderEffect(r=>{var o=`${e.drawing.state.mousePosition.y+20}px`,a=`${e.drawing.state.mousePosition.x+10}px`;return o!==r.e&&((r.e=o)!=null?t.style.setProperty("top",o):t.style.removeProperty("top")),a!==r.t&&((r.t=a)!=null?t.style.setProperty("left",a):t.style.removeProperty("left")),r},{e:void 0,t:void 0}),t}})};var wn=w("<button>");const L=e=>{const n=()=>e.variant||"primary",t=()=>e.size||"md";return(()=>{var r=wn();return at(r,c.mergeProps(e,{get class(){return`echo-button echo-button-${n()} echo-button-${t()} ${e.class}`}}),!1),r})()};var bn=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1=10 y1=14 x2=21 y2=3>');const pn=e=>(()=>{var n=bn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var yn=w("<div class=echo-stored-feedback-empty>No unsubmitted feedback"),xn=w("<div class=echo-stored-feedback><div class=echo-stored-feedback-header><h3>Unsubmitted Feedback</h3></div><div class=echo-stored-feedback-list>"),kn=w("<div><div class=echo-stored-feedback-content><div class=echo-stored-feedback-path></div><div class=echo-stored-feedback-preview></div></div><div class=echo-stored-feedback-actions>");const Cn=()=>{const e=x();let n;const[t,r]=c.createSignal(fe()),[o,a]=c.createSignal(window.location.pathname),i=m=>{m.key==="Escape"&&e.widget.state.isStoredFeedbackOpen&&e.widget.setState({isStoredFeedbackOpen:!1})},l=m=>{if(!e.widget.state.isStoredFeedbackOpen||!n)return;m.composedPath().includes(n)||e.widget.setState({isStoredFeedbackOpen:!1})},s=()=>{const m=fe();r(m),e.widget.setState({pagesCount:m.length})},d=()=>{a(window.location.pathname)};O({event:"echo-storage-change",callback:s}),O({event:"popstate",callback:d}),be({target:document.documentElement,options:{childList:!0,subtree:!0},callback:()=>{a(window.location.pathname)}}),O({event:"keydown",callback:i}),O({event:"click",callback:l});const u=(m,b)=>{const S=b?`${m}${b}`:m;window.location.href=S,e.widget.setState({isStoredFeedbackOpen:!1})},f=m=>{o()===m&&e.methods.reset(),Te(m);const b=fe();r(b),e.widget.setState({pagesCount:b.length})},g=m=>{if(m==="/")return"/";const b=m.split("/");return b.length<=4?m:`/${b[1]}/.../${b[b.length-1]}`};return c.createComponent(c.Show,{get when(){return e.widget.state.isStoredFeedbackOpen},get children(){var m=xn(),b=m.firstChild;b.firstChild;var S=b.nextSibling,k=n;return typeof k=="function"?R(k,m):n=m,v(b,c.createComponent(L,{variant:"secondary",size:"sm",onClick:()=>e.widget.setState({isStoredFeedbackOpen:!1}),get children(){return c.createComponent(se,{size:20})}}),null),v(S,c.createComponent(c.For,{get each(){return t()},children:C=>{const p=c.createMemo(()=>C.path===o());return(()=>{var $=kn(),P=$.firstChild,y=P.firstChild,B=y.nextSibling,j=P.nextSibling;return v(y,()=>g(C.path)),v(B,()=>C.state.feedback.message),v(j,(()=>{var I=c.createMemo(()=>!p());return()=>I()&&c.createComponent(L,{class:"echo-stored-feedback-link",variant:"secondary",size:"sm",onClick:()=>u(C.path,C.state.latestQuery),get children(){return c.createComponent(pn,{})}})})(),null),v(j,c.createComponent(L,{class:"echo-stored-feedback-delete",variant:"secondary",size:"sm",onClick:()=>f(C.path),children:"Delete"}),null),c.createRenderEffect(I=>{var Ye=`echo-stored-feedback-item ${p()?"echo-stored-feedback-item-current":""}`,_e=C.path;return Ye!==I.e&&xe($,I.e=Ye),_e!==I.t&&h(y,"title",I.t=_e),I},{e:void 0,t:void 0}),$})()}}),null),v(S,c.createComponent(c.Show,{get when(){return t().length===0},get children(){return yn()}}),null),m}})};var Sn=w('<button class=echo-launcher-button aria-label="Open feedback form"role=button>'),En=w("<span class=echo-launcher-button-count role=button tabindex=0>");const $n=()=>{const e=x(),[n,t]=c.createSignal(!1);let r;const o=()=>{r&&window.clearTimeout(r),r=window.setTimeout(()=>{const d=V("welcome_message_shown",!1);!e.widget.state.isOpen&&!e.widget.state.isStoredFeedbackOpen&&d&&t(!0)},4e3)},a=()=>{t(!1)},i=()=>{o()},l=()=>{e.widget.setState({isOpen:!e.widget.state.isOpen}),e.widget.setState({welcomeMessageIsClosing:!0}),K("welcome_message_shown",!0)};c.createEffect(()=>{e.widget.state.isOpen||(t(!1),o()),e.widget.state.isStoredFeedbackOpen&&t(!1)});const s=d=>{d.stopPropagation(),e.widget.setState({isStoredFeedbackOpen:!e.widget.state.isStoredFeedbackOpen}),t(!1)};return[(()=>{var d=Sn();return d.addEventListener("pointerleave",i),d.addEventListener("pointerenter",a),d.$$click=l,v(d,c.createComponent(Jt,{stroke:"white",fill:"#ffffff","aria-hidden":"true"}),null),v(d,(()=>{var u=c.createMemo(()=>e.widget.state.pagesCount>0);return()=>u()&&(()=>{var f=En();return f.$$click=s,v(f,()=>e.widget.state.pagesCount),c.createRenderEffect(()=>h(f,"aria-label",`View ${e.widget.state.pagesCount} stored feedback items`)),f})()})(),null),c.createRenderEffect(u=>{var f=e.widget.state.isOpen,g=`translateX(${n()?"45px":"0"})`,m=e.widget.state.isOpen;return f!==u.e&&h(d,"data-hidden",u.e=f),g!==u.t&&((u.t=g)!=null?d.style.setProperty("transform",g):d.style.removeProperty("transform")),m!==u.a&&h(d,"aria-expanded",u.a=m),u},{e:void 0,t:void 0,a:void 0}),d})(),c.createComponent(Cn,{})]};E(["click"]);var Pn=w("<div class=echo-notification><div class=echo-notification-icon></div><div class=echo-notification-content><div class=echo-notification-title></div><div class=echo-notification-message>");const zn=()=>{const e=x(),n=()=>{e.widget.setState({notification:{...e.widget.state.notification,show:!1}})},t=()=>{switch(e.widget.state.notification.type){case"success":return e.widget.state.text.notification.successTitle;case"error":return e.widget.state.text.notification.errorTitle;default:return""}};return(()=>{var r=Pn(),o=r.firstChild,a=o.nextSibling,i=a.firstChild,l=i.nextSibling;return v(r,c.createComponent(L,{class:"echo-notification-hide",variant:"secondary",size:"sm",onClick:n,get title(){return e.widget.state.text.notification.hideTitle},get children(){return c.createComponent(se,{size:20})}}),o),v(o,(()=>{var s=c.createMemo(()=>e.widget.state.notification.type==="success");return()=>s()?c.createComponent(cn,{size:32}):(()=>{var d=c.createMemo(()=>e.widget.state.notification.type==="error");return()=>d()?c.createComponent(ln,{size:32}):null})()})()),v(i,t),v(l,()=>{var s;return(s=e.widget.state.notification)==null?void 0:s.message}),c.createRenderEffect(s=>{var d=e.widget.state.notification.type,u=!e.widget.state.notification.type,f=!e.widget.state.notification.show;return d!==s.e&&h(r,"data-type",s.e=d),u!==s.t&&h(r,"data-empty",s.t=u),f!==s.a&&h(r,"data-hidden",s.a=f),s},{e:void 0,t:void 0,a:void 0}),r})()};var Tn=w("<div class=echo-shape-actions data-hide-when-drawing=true>");const On=()=>{const e=x();let n;const[t,r]=c.createSignal({x:window.scrollX,y:window.scrollY});O({event:"scroll",callback:()=>{r({x:window.scrollX,y:window.scrollY})}});const a=()=>{e.drawing.state.selectedShapeId&&e.drawing.setState({shapes:e.drawing.state.shapes.filter(s=>s.id!==e.drawing.state.selectedShapeId),selectedShapeId:null})},i=c.createMemo(()=>e.drawing.state.selectedShapeId?e.drawing.state.shapes.find(s=>s.id===e.drawing.state.selectedShapeId):null),l=c.createMemo(()=>{const s=i(),d=n==null?void 0:n.getBoundingClientRect();if(!s||!d)return null;let u=null;if(s.type==="rectangle"){const m=Fe(s.points);if(!m)return null;u={x:m.x+m.width/2,y:m.y}}else if(s.type==="path"&&s.points.length>0)u={x:s.points[0].x,y:s.points[0].y};else return null;const f=8,g=t();return{x:Math.max(d.width/2+f,Math.min(window.innerWidth-d.width/2-f,u.x-g.x)),y:Math.max(d.height+f,Math.min(window.innerHeight-f,u.y-g.y))}});return(()=>{var s=Tn(),d=n;return typeof d=="function"?R(d,s):n=s,s.style.setProperty("top","0"),s.style.setProperty("left","0"),v(s,c.createComponent(L,{onClick:a,size:"sm",variant:"secondary",title:"Delete shape",get children(){return c.createComponent(Ve,{size:20})}})),c.createRenderEffect(u=>{var m,b;var f=!l(),g=`translate(calc(${(m=l())==null?void 0:m.x}px - 50%), calc(${(b=l())==null?void 0:b.y}px - 125%))`;return f!==u.e&&(s.hidden=u.e=f),g!==u.t&&((u.t=g)!=null?s.style.setProperty("transform",g):s.style.removeProperty("transform")),u},{e:void 0,t:void 0}),s})()};var In=w("<button class=echo-welcome-message><span class=echo-welcome-message-pulsar></span><div class=echo-welcome-message-close role=button tabindex=0>");const Mn=()=>{const e=x(),n=V("welcome_message_shown",!1),t=o=>{o.stopPropagation(),e.widget.setState({welcomeMessageIsClosing:!0}),K("welcome_message_shown",!0)},r=()=>{e.widget.setState({isOpen:!0}),e.widget.setState({welcomeMessageIsClosing:!0}),K("welcome_message_shown",!0)};return n?null:(()=>{var o=In(),a=o.firstChild,i=a.nextSibling;return o.$$click=r,o.style.setProperty("bottom","80px"),o.style.setProperty("right","20px"),v(o,()=>e.widget.state.text.welcomeMessage.text,i),i.$$keydown=l=>l.key==="Enter"&&t(l),i.$$click=t,v(i,c.createComponent(se,{size:16,strokeWidth:3})),c.createRenderEffect(l=>{var s=e.widget.state.welcomeMessageIsClosing,d=e.widget.state.text.welcomeMessage.closeAriaLabel;return s!==l.e&&h(o,"data-hidden",l.e=s),d!==l.t&&h(i,"aria-label",l.t=d),l},{e:void 0,t:void 0}),o})()};E(["click","keydown"]);var An=w("<svg><rect class=echo-shape fill=transparent vector-effect=non-scaling-stroke role=img></svg>",!1,!0),Dn=w("<svg><path class=echo-shape fill=none vector-effect=non-scaling-stroke stroke-linecap=round role=img></svg>",!1,!0);const Be=e=>{const n=c.createMemo(()=>e.id===e.selectedShapeId);return[c.createComponent(c.Show,{get when(){return e.type==="rectangle"},get children(){return c.createComponent(Rn,c.mergeProps(e,{get isSelected(){return n()}}))}}),c.createComponent(c.Show,{get when(){return e.type==="path"},get children(){return c.createComponent(Fn,c.mergeProps(e,{get isSelected(){return n()}}))}})]},Rn=e=>{const n=c.createMemo(()=>Fe(e.points));return c.createComponent(c.Show,{get when(){return n()},get children(){var t=An();return t.$$keydown=r=>{var o;return r.key==="Enter"&&((o=e.onShapeClick)==null?void 0:o.call(e,e.id))},t.$$click=()=>{var r;return(r=e.onShapeClick)==null?void 0:r.call(e,e.id)},c.createRenderEffect(r=>{var o=e.id,a=e.isSelected,i=n().x,l=n().y,s=n().width,d=n().height,u=e.color,f=F.rectangle.strokeWidth,g=e.isSelected?F.rectangle.opacity.selected:F.rectangle.opacity.default,m=e.isSelected?"5,5":"none",b=e.isSelected?"move":"pointer",S=`Rectangle shape ${e.isSelected?"(selected)":""}`,k=e.onShapeClick?0:-1;return o!==r.e&&h(t,"data-shape-id",r.e=o),a!==r.t&&h(t,"data-selected",r.t=a),i!==r.a&&h(t,"x",r.a=i),l!==r.o&&h(t,"y",r.o=l),s!==r.i&&h(t,"width",r.i=s),d!==r.n&&h(t,"height",r.n=d),u!==r.s&&h(t,"stroke",r.s=u),f!==r.h&&h(t,"stroke-width",r.h=f),g!==r.r&&h(t,"opacity",r.r=g),m!==r.d&&h(t,"stroke-dasharray",r.d=m),b!==r.l&&h(t,"cursor",r.l=b),S!==r.u&&h(t,"aria-label",r.u=S),k!==r.c&&h(t,"tabindex",r.c=k),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),t}})},Fn=e=>{const n=c.createMemo(()=>Pt(e.points));return c.createComponent(c.Show,{get when(){return n()},get children(){var t=Dn();return t.$$keydown=r=>{var o;return r.key==="Enter"&&((o=e.onShapeClick)==null?void 0:o.call(e,e.id))},t.$$click=()=>{var r;return(r=e.onShapeClick)==null?void 0:r.call(e,e.id)},c.createRenderEffect(r=>{var o=e.id,a=e.isSelected,i=n(),l=e.color,s=F.path.strokeWidth,d=e.isSelected?F.path.opacity.selected:F.path.opacity.default,u=e.isSelected?"move":"pointer",f=`Freehand shape ${e.isSelected?"(selected)":""}`,g=e.onShapeClick?0:-1;return o!==r.e&&h(t,"data-shape-id",r.e=o),a!==r.t&&h(t,"data-selected",r.t=a),i!==r.a&&h(t,"d",r.a=i),l!==r.o&&h(t,"stroke",r.o=l),s!==r.i&&h(t,"stroke-width",r.i=s),d!==r.n&&h(t,"opacity",r.n=d),u!==r.s&&h(t,"cursor",r.s=u),f!==r.h&&h(t,"aria-label",r.h=f),g!==r.r&&h(t,"tabindex",r.r=g),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),t}})};E(["click","keydown"]);var Ln=w('<div class=echo-drawing-layer-container role=application aria-label="Drawing Canvas"><svg width=100% height=100% class=echo-drawing-layer preserveAspectRatio=none role=img aria-label="Drawing Area"><path class=echo-drawing-layer-mask fill="rgba(33, 43, 55, 1)"fill-opacity=0.2 fill-rule=evenodd aria-hidden=true>');const jn=()=>{const e=x();let n;return c.onMount(()=>{n==null||n.addEventListener("mousemove",e.drawing.methods.handleMove),n==null||n.addEventListener("mouseup",e.drawing.methods.handleEnd),n==null||n.addEventListener("touchmove",e.drawing.methods.handleMove,{passive:!1}),n==null||n.addEventListener("touchend",e.drawing.methods.handleEnd)}),c.onCleanup(()=>{n==null||n.removeEventListener("mousemove",e.drawing.methods.handleMove),n==null||n.removeEventListener("mouseup",e.drawing.methods.handleEnd),n==null||n.removeEventListener("touchmove",e.drawing.methods.handleMove),n==null||n.removeEventListener("touchend",e.drawing.methods.handleEnd)}),(()=>{var t=Ln(),r=t.firstChild,o=r.firstChild,a=n;return typeof a=="function"?R(a,t):n=t,v(t,c.createComponent(vn,{}),r),v(t,c.createComponent(On,{}),r),N(r,"touchend",e.drawing.methods.handleLeave,!0),N(r,"mouseleave",e.drawing.methods.handleLeave),N(r,"mouseenter",e.drawing.methods.handleEnter),r.$$touchmove=i=>{i.preventDefault(),e.drawing.methods.handleMove(i)},N(r,"mousemove",e.drawing.methods.handleMove,!0),r.$$touchstart=i=>{i.preventDefault(),e.drawing.methods.handleStart(i),e.drawing.methods.handleEnter(i),e.drawing.setState({showTooltip:!1,hasDrawn:!0})},r.$$mousedown=i=>{e.drawing.methods.handleStart(i),e.drawing.setState({showTooltip:!1,hasDrawn:!0})},v(r,c.createComponent(c.For,{get each(){return e.drawing.state.shapes},children:i=>c.createComponent(Be,{get id(){return i.id},get type(){return i.type},get color(){return i.color},get points(){return i.points},get selectedShapeId(){return e.drawing.state.selectedShapeId},get onShapeClick(){return e.drawing.methods.handleShapeClick}})}),null),v(r,c.createComponent(Be,{id:"temp",get type(){return e.drawing.state.selectedTool},get color(){return e.drawing.state.selectedColor},get points(){return e.drawing.state.currentPoints},get selectedShapeId(){return e.drawing.state.selectedShapeId}}),null),c.createRenderEffect(i=>{var l=e.drawing.state.cursor,s=Rt({width:e.widget.state.dimensions.width,height:e.widget.state.dimensions.height},e.drawing.state.currentPoints,e.drawing.state.shapes);return l!==i.e&&((i.e=l)!=null?t.style.setProperty("cursor",l):t.style.removeProperty("cursor")),s!==i.t&&h(o,"d",i.t=s),i},{e:void 0,t:void 0}),t})()};E(["mousedown","touchstart","mousemove","touchmove","touchend"]);const te=e=>({handleTextChange:a=>{const i=a.target;e(i.value)},handleSelectChange:a=>{e(a)},handleCheckboxChange:(a,i,l)=>{const s=l?[...a,i]:a.filter(d=>d!==i);e(s)},getCheckboxValue:a=>Array.isArray(a)?a:[]});var Nn=w("<div class=echo-input role=group>"),qn=w("<label class=echo-input-label><span>"),Vn=w('<span class=echo-input-required aria-label="Required field">*');const ne=e=>(()=>{var n=Nn();return v(n,(()=>{var t=c.createMemo(()=>!!e.label);return()=>t()&&(()=>{var r=qn(),o=r.firstChild;return v(o,()=>e.label),v(r,(()=>{var a=c.createMemo(()=>!!e.required);return()=>a()&&Vn()})(),null),r})()})(),null),v(n,()=>e.children,null),n})();var Bn=w("<textarea class=echo-input-field rows=5>"),Wn=w("<div class=visually-hidden>");const We=e=>{const{handleTextChange:n}=te(e.onChange);return c.createComponent(ne,{get label(){return e.config.label},get required(){return e.config.required},get children(){return[(()=>{var t=Bn();return N(t,"input",n,!0),c.createRenderEffect(r=>{var o=e.config.id,a=e.config.placeholder,i=e.config.required,l=e.config.label||e.config.placeholder,s=e.config.required,d=e.value==="",u=`${e.config.id}-description`;return o!==r.e&&h(t,"id",r.e=o),a!==r.t&&h(t,"placeholder",r.t=a),i!==r.a&&(t.required=r.a=i),l!==r.o&&h(t,"aria-label",r.o=l),s!==r.i&&h(t,"aria-required",r.i=s),d!==r.n&&h(t,"aria-invalid",r.n=d),u!==r.s&&h(t,"aria-describedby",r.s=u),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),c.createRenderEffect(()=>t.value=e.value===void 0?"":e.value),t})(),(()=>{var t=Wn();return v(t,()=>e.config.placeholder),c.createRenderEffect(()=>h(t,"id",`${e.config.id}-description`)),t})()]}})};E(["input"]);var Yn=w("<fieldset class=echo-input-options role=group>"),_n=w("<label class=echo-input-option><input type=checkbox><span>");const Hn=e=>{const{handleCheckboxChange:n,getCheckboxValue:t}=te(e.onChange),r=()=>t(e.value),o=()=>r().length>0;return c.createComponent(ne,{get label(){return e.config.label},get required(){return e.config.required},get children(){var a=Yn();return v(a,c.createComponent(c.For,{get each(){return e.config.options},children:(i,l)=>(()=>{var s=_n(),d=s.firstChild,u=d.nextSibling;return d.addEventListener("change",f=>n(r(),i.value,f.currentTarget.checked)),v(u,()=>i.label),c.createRenderEffect(()=>d.required=e.config.required&&!o()&&l()===0),c.createRenderEffect(()=>d.value=i.value),c.createRenderEffect(()=>d.checked=r().includes(i.value)),s})()})),c.createRenderEffect(()=>h(a,"aria-required",e.config.required)),a}})};var Un=w("<fieldset class=echo-input-options role=radiogroup>"),Xn=w("<label class=echo-input-option><input type=radio><span>");const Kn=e=>{const{handleSelectChange:n}=te(e.onChange);return c.createComponent(ne,{get label(){return e.config.label},get required(){return e.config.required},get children(){var t=Un();return v(t,c.createComponent(c.For,{get each(){return e.config.options},children:r=>(()=>{var o=Xn(),a=o.firstChild,i=a.nextSibling;return a.addEventListener("change",()=>n(r.value)),v(i,()=>r.label),c.createRenderEffect(l=>{var s=e.config.id,d=e.config.required;return s!==l.e&&h(a,"name",l.e=s),d!==l.t&&(a.required=l.t=d),l},{e:void 0,t:void 0}),c.createRenderEffect(()=>a.value=r.value),c.createRenderEffect(()=>a.checked=e.value===r.value),o})()})),c.createRenderEffect(()=>h(t,"aria-required",e.config.required)),t}})};var Gn=w("<div class=echo-select-dropdown role=listbox>"),Zn=w('<div class=echo-select><button type=button class=echo-select-trigger aria-haspopup=listbox><span></span><svg class=echo-select-arrow width=16 height=16 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="m6 9 6 6 6-6"></path></svg></button><input type=text class=visually-hidden aria-hidden=true>'),Qn=w("<button type=button class=echo-select-option role=option>");const Jn=e=>{const{handleSelectChange:n}=te(e.onChange),[t,r]=c.createSignal(!1);let o,a,i;const l=()=>e.config.options.find(f=>f.value===(e.value===void 0?"":e.value)),s=(f,g)=>{g.stopPropagation(),f.value===e.value?e.config.required||n(""):n(f.value),r(!1)},d=()=>{r(!t())};return O({event:"mousedown",callback:f=>{if(!t()||!o)return;f.composedPath().includes(o)||r(!1)}}),c.createComponent(ne,{get label(){return e.config.label},get required(){return e.config.required},get children(){var f=Zn(),g=f.firstChild,m=g.firstChild,b=g.nextSibling,S=o;typeof S=="function"?R(S,f):o=f,g.$$click=p=>{p.stopPropagation(),d()};var k=a;typeof k=="function"?R(k,g):a=g,v(m,()=>{var p;return((p=l())==null?void 0:p.label)||e.config.placeholder}),v(f,c.createComponent(c.Show,{get when(){return t()},get children(){var p=Gn();return v(p,c.createComponent(c.For,{get each(){return e.config.options},children:$=>(()=>{var P=Qn();return P.$$click=y=>s($,y),v(P,()=>$.label),c.createRenderEffect(y=>{var B=$.value===e.value,j=$.value===e.value;return B!==y.e&&h(P,"aria-selected",y.e=B),j!==y.t&&h(P,"data-selected",y.t=j),y},{e:void 0,t:void 0}),P})()})),p}}),b);var C=i;return typeof C=="function"?R(C,b):i=b,c.createRenderEffect(p=>{var $=t(),P=!e.value,y=e.config.required,B=t(),j=e.config.required,I=e.config.required;return $!==p.e&&h(g,"data-open",p.e=$),P!==p.t&&h(g,"data-placeholder",p.t=P),y!==p.a&&h(g,"data-required",p.a=y),B!==p.o&&h(g,"aria-expanded",p.o=B),j!==p.i&&h(g,"aria-required",p.i=j),I!==p.n&&(b.required=p.n=I),p},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),c.createRenderEffect(()=>b.value=e.value===void 0?"":e.value),f}})};E(["click"]);var er=w("<input type=text class=echo-input-field>");const tr=e=>{const{handleTextChange:n}=te(e.onChange);return c.createComponent(ne,{get label(){return e.config.label},get required(){return e.config.required},get children(){var t=er();return N(t,"input",n,!0),c.createRenderEffect(r=>{var o=e.config.placeholder,a=e.config.required;return o!==r.e&&h(t,"placeholder",r.e=o),a!==r.t&&(t.required=r.t=a),r},{e:void 0,t:void 0}),c.createRenderEffect(()=>t.value=e.value===void 0?"":e.value),t}})};E(["input"]);var nr=w("<div class=echo-input-error>Invalid input type"),rr=w("<div class=echo-input-error>Unsupported input type: ");const ar=e=>c.createComponent(c.Show,{get when(){return e.config.type},keyed:!0,get fallback(){return nr()},get children(){return c.createComponent(c.Switch,{get fallback(){return(()=>{var n=rr();return n.firstChild,v(n,()=>e.config.type,null),n})()},get children(){return[c.createComponent(c.Match,{get when(){return e.config.type==="text"},get children(){return c.createComponent(tr,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}}),c.createComponent(c.Match,{get when(){return e.config.type==="textarea"},get children(){return c.createComponent(We,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}}),c.createComponent(c.Match,{get when(){return e.config.type==="radio"},get children(){return c.createComponent(Kn,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}}),c.createComponent(c.Match,{get when(){return e.config.type==="checkbox"},get children(){return c.createComponent(Hn,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}}),c.createComponent(c.Match,{get when(){return e.config.type==="select"},get children(){return c.createComponent(Jn,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}})]}})}}),or=()=>{const e=navigator.connection;return{effectiveType:e==null?void 0:e.effectiveType,downlink:e==null?void 0:e.downlink,rtt:e==null?void 0:e.rtt,saveData:e==null?void 0:e.saveData}},ir=()=>({width:window.innerWidth,height:window.innerHeight,screenWidth:window.screen.width,screenHeight:window.screen.height,language:navigator.language,languages:navigator.languages,doNotTrack:navigator.doNotTrack,cookiesEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,maxTouchPoints:navigator.maxTouchPoints,colorDepth:window.screen.colorDepth,pixelRatio:window.devicePixelRatio,availableWidth:window.screen.availWidth,availableHeight:window.screen.availHeight}),cr=()=>{const e=new URL(window.location.href),n={};return e.searchParams.forEach((t,r)=>{n[r]=t}),{url:e.href,origin:e.origin,pathname:e.pathname,searchParams:n,referrer:document.referrer}},sr=()=>({timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,localDateTime:new Date().toISOString()}),lr=()=>({userAgent:navigator.userAgent,browserInfo:ir(),networkInfo:or(),locationInfo:cr(),timeInfo:sr(),console:Et()});var dr=w("<fieldset class=echo-input-options><legend class=visually-hidden>Additional Information"),ur=w('<section class=echo-feedback data-hide-when-drawing=true role=dialog aria-label="Feedback Form"><form class=echo-feedback-content aria-label="Submit Feedback"><header class=echo-feedback-header><h3 class=echo-feedback-title id=feedback-form-title></h3><div class=echo-feedback-header-actions role=toolbar aria-label="Form controls"></div></header><fieldset class=echo-input-options><legend class=visually-hidden>Feedback Message');const hr=()=>{const e=x(),n=async o=>{o.preventDefault();const a=await Dt(),i={message:e.feedback.state.message,screenshot:a,metadata:lr(),customInputs:e.feedback.state.customInputValues};e.methods.submit(i)},t=o=>{o.stopPropagation(),e.feedback.setState({isMinimized:!0})},r=()=>{e.feedback.setState({isMinimized:!1})};return c.createEffect(()=>{e.widget.state.isOpen&&requestAnimationFrame(()=>{var o;(o=document.querySelector(".echo-input-field"))==null||o.focus()})}),(()=>{var o=ur(),a=o.firstChild,i=a.firstChild,l=i.firstChild,s=l.nextSibling,d=i.nextSibling;return d.firstChild,o.$$click=()=>e.feedback.state.isMinimized&&r(),a.addEventListener("submit",n),v(l,()=>e.widget.state.text.feedbackForm.title),v(s,c.createComponent(L,{type:"button",title:"Hide form",variant:"secondary",size:"sm",onClick:t,"aria-label":"Minimize feedback form",get children(){return c.createComponent(Zt,{size:20})}}),null),v(s,c.createComponent(L,{type:"button",title:"Close form",variant:"secondary",size:"sm",onClick:()=>e.widget.setState({isOpen:!1}),"aria-label":"Close feedback form",get children(){return c.createComponent(se,{size:20})}}),null),v(d,c.createComponent(We,{get config(){return{type:"textarea",id:"message",placeholder:e.widget.state.text.feedbackForm.placeholder,label:"Feedback Message",required:!0}},get value(){return e.feedback.state.message},onChange:u=>e.feedback.setState({message:u})}),null),v(a,c.createComponent(c.Show,{get when(){var u;return(u=e.widget.state.customInputs)==null?void 0:u.length},get children(){var u=dr();return u.firstChild,v(u,c.createComponent(c.For,{get each(){return e.widget.state.customInputs},children:f=>c.createComponent(ar,{config:f,get value(){return e.feedback.state.customInputValues[f.id]},onChange:g=>e.feedback.setState({customInputValues:{...e.feedback.state.customInputValues,[f.id]:g}})})}),null),u}}),null),v(a,c.createComponent(L,{type:"submit",variant:"primary",size:"lg",style:{width:"100%"},"aria-label":"Submit feedback",get children(){return e.widget.state.text.feedbackForm.submitButton}}),null),c.createRenderEffect(u=>{var f=e.feedback.state.isMinimized,g=e.feedback.state.isMinimized?"pointer":"default",m=!e.feedback.state.isMinimized;return f!==u.e&&h(o,"data-minimized",u.e=f),g!==u.t&&((u.t=g)!=null?o.style.setProperty("cursor",g):o.style.removeProperty("cursor")),m!==u.a&&h(o,"aria-expanded",u.a=m),u},{e:void 0,t:void 0,a:void 0}),o})()};E(["click"]);var fr=w("<style>"),gr=w("<div class=echo-launcher>"),mr=w("<dialog class=echo-overlay>"),vr=w("<div class=echo-root>");const wr=e=>c.createComponent(dt,{useShadow:!0,get mount(){return document.body},get children(){return c.createComponent(Vt,c.mergeProps(e,{get children(){return c.createComponent(xr,{get children(){return[c.createComponent(br,{get primaryColor(){return e.primaryColor}}),c.createComponent(pr,{})]}})}}))}}),br=e=>{const[n,t]=c.createSignal("");return c.createEffect(()=>{const r=`
|
1
|
+
(function(D,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("solid-js"),require("html2canvas")):typeof define=="function"&&define.amd?define(["exports","solid-js","html2canvas"],c):(D=typeof globalThis<"u"?globalThis:D||self,c(D.Echo={},D.Solid,D.html2canvas))})(this,function(D,c,He){"use strict";const Ue=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","hidden","indeterminate","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected"],Xe=new Set(["className","value","readOnly","formNoValidate","isMap","noModule","playsInline",...Ue]),Ke=new Set(["innerHTML","textContent","innerText","children"]),Ge=Object.assign(Object.create(null),{className:"class",htmlFor:"for"}),Ze=Object.assign(Object.create(null),{class:"className",formnovalidate:{$:"formNoValidate",BUTTON:1,INPUT:1},ismap:{$:"isMap",IMG:1},nomodule:{$:"noModule",SCRIPT:1},playsinline:{$:"playsInline",VIDEO:1},readonly:{$:"readOnly",INPUT:1,TEXTAREA:1}});function Qe(e,n){const t=Ze[e];return typeof t=="object"?t[n]?t.$:void 0:t}const Je=new Set(["beforeinput","click","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"]);function et(e,n,t){let r=t.length,o=n.length,a=r,i=0,l=0,s=n[o-1].nextSibling,d=null;for(;i<o||l<a;){if(n[i]===t[l]){i++,l++;continue}for(;n[o-1]===t[a-1];)o--,a--;if(o===i){const u=a<r?l?t[l-1].nextSibling:t[a-l]:s;for(;l<a;)e.insertBefore(t[l++],u)}else if(a===l)for(;i<o;)(!d||!d.has(n[i]))&&n[i].remove(),i++;else if(n[i]===t[a-1]&&t[l]===n[o-1]){const u=n[--o].nextSibling;e.insertBefore(t[l++],n[i++].nextSibling),e.insertBefore(t[--a],u),n[o]=t[a]}else{if(!d){d=new Map;let f=l;for(;f<a;)d.set(t[f],f++)}const u=d.get(n[i]);if(u!=null)if(l<u&&u<a){let f=i,g=1,m;for(;++f<o&&f<a&&!((m=d.get(n[f]))==null||m!==u+g);)g++;if(g>u-l){const b=n[i];for(;l<u;)e.insertBefore(t[l++],b)}else e.replaceChild(t[l++],n[i++])}else i++;else n[i++].remove()}}}const ye="_$DX_DELEGATE";function tt(e,n,t,r={}){let o;return c.createRoot(a=>{o=a,n===document?e():v(n,e(),n.firstChild?null:void 0,t)},r.owner),()=>{o(),n.textContent=""}}function w(e,n,t){let r;const o=()=>{const i=document.createElement("template");return i.innerHTML=e,t?i.content.firstChild.firstChild:i.content.firstChild},a=n?()=>c.untrack(()=>document.importNode(r||(r=o()),!0)):()=>(r||(r=o())).cloneNode(!0);return a.cloneNode=a,a}function E(e,n=window.document){const t=n[ye]||(n[ye]=new Set);for(let r=0,o=e.length;r<o;r++){const a=e[r];t.has(a)||(t.add(a),n.addEventListener(a,ct))}}function h(e,n,t){X(e)||(t==null?e.removeAttribute(n):e.setAttribute(n,t))}function nt(e,n,t){X(e)||(t?e.setAttribute(n,""):e.removeAttribute(n))}function xe(e,n){X(e)||(n==null?e.removeAttribute("class"):e.className=n)}function N(e,n,t,r){if(r)Array.isArray(t)?(e[`$$${n}`]=t[0],e[`$$${n}Data`]=t[1]):e[`$$${n}`]=t;else if(Array.isArray(t)){const o=t[0];e.addEventListener(n,t[0]=a=>o.call(e,t[1],a))}else e.addEventListener(n,t,typeof t!="function"&&t)}function rt(e,n,t={}){const r=Object.keys(n||{}),o=Object.keys(t);let a,i;for(a=0,i=o.length;a<i;a++){const l=o[a];!l||l==="undefined"||n[l]||(ke(e,l,!1),delete t[l])}for(a=0,i=r.length;a<i;a++){const l=r[a],s=!!n[l];!l||l==="undefined"||t[l]===s||!s||(ke(e,l,!0),t[l]=s)}return t}function z(e,n,t){if(!n)return t?h(e,"style"):n;const r=e.style;if(typeof n=="string")return r.cssText=n;typeof t=="string"&&(r.cssText=t=void 0),t||(t={}),n||(n={});let o,a;for(a in t)n[a]==null&&r.removeProperty(a),delete t[a];for(a in n)o=n[a],o!==t[a]&&(r.setProperty(a,o),t[a]=o);return t}function at(e,n={},t,r){const o={};return c.createRenderEffect(()=>o.children=K(e,n.children,o.children)),c.createRenderEffect(()=>typeof n.ref=="function"&&R(n.ref,e)),c.createRenderEffect(()=>ot(e,n,t,!0,o,!0)),o}function R(e,n,t){return c.untrack(()=>e(n,t))}function v(e,n,t,r){if(t!==void 0&&!r&&(r=[]),typeof n!="function")return K(e,n,r,t);c.createRenderEffect(o=>K(e,n(),o,t),r)}function ot(e,n,t,r,o={},a=!1){n||(n={});for(const i in o)if(!(i in n)){if(i==="children")continue;o[i]=Ce(e,i,null,o[i],t,a,n)}for(const i in n){if(i==="children")continue;const l=n[i];o[i]=Ce(e,i,l,o[i],t,a,n)}}function X(e){return!!c.sharedConfig.context&&!c.sharedConfig.done&&(!e||e.isConnected)}function it(e){return e.toLowerCase().replace(/-([a-z])/g,(n,t)=>t.toUpperCase())}function ke(e,n,t){const r=n.trim().split(/\s+/);for(let o=0,a=r.length;o<a;o++)e.classList.toggle(r[o],t)}function Ce(e,n,t,r,o,a,i){let l,s,d,u,f;if(n==="style")return z(e,t,r);if(n==="classList")return rt(e,t,r);if(t===r)return r;if(n==="ref")a||t(e);else if(n.slice(0,3)==="on:"){const g=n.slice(3);r&&e.removeEventListener(g,r,typeof r!="function"&&r),t&&e.addEventListener(g,t,typeof t!="function"&&t)}else if(n.slice(0,10)==="oncapture:"){const g=n.slice(10);r&&e.removeEventListener(g,r,!0),t&&e.addEventListener(g,t,!0)}else if(n.slice(0,2)==="on"){const g=n.slice(2).toLowerCase(),m=Je.has(g);if(!m&&r){const b=Array.isArray(r)?r[0]:r;e.removeEventListener(g,b)}(m||t)&&(N(e,g,t,m),m&&E([g]))}else if(n.slice(0,5)==="attr:")h(e,n.slice(5),t);else if(n.slice(0,5)==="bool:")nt(e,n.slice(5),t);else if((f=n.slice(0,5)==="prop:")||(d=Ke.has(n))||(u=Qe(n,e.tagName))||(s=Xe.has(n))||(l=e.nodeName.includes("-")||"is"in i)){if(f)n=n.slice(5),s=!0;else if(X(e))return t;n==="class"||n==="className"?xe(e,t):l&&!s&&!d?e[it(n)]=t:e[u||n]=t}else h(e,Ge[n]||n,t);return t}function ct(e){if(c.sharedConfig.registry&&c.sharedConfig.events&&c.sharedConfig.events.find(([s,d])=>d===e))return;let n=e.target;const t=`$$${e.type}`,r=e.target,o=e.currentTarget,a=s=>Object.defineProperty(e,"target",{configurable:!0,value:s}),i=()=>{const s=n[t];if(s&&!n.disabled){const d=n[`${t}Data`];if(d!==void 0?s.call(n,d,e):s.call(n,e),e.cancelBubble)return}return n.host&&typeof n.host!="string"&&!n.host._$host&&n.contains(e.target)&&a(n.host),!0},l=()=>{for(;i()&&(n=n._$host||n.parentNode||n.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return n||document}}),c.sharedConfig.registry&&!c.sharedConfig.done&&(c.sharedConfig.done=_$HY.done=!0),e.composedPath){const s=e.composedPath();a(s[0]);for(let d=0;d<s.length-2&&(n=s[d],!!i());d++){if(n._$host){n=n._$host,l();break}if(n.parentNode===o)break}}else l();a(r)}function K(e,n,t,r,o){const a=X(e);if(a){!t&&(t=[...e.childNodes]);let s=[];for(let d=0;d<t.length;d++){const u=t[d];u.nodeType===8&&u.data.slice(0,2)==="!$"?u.remove():s.push(u)}t=s}for(;typeof t=="function";)t=t();if(n===t)return t;const i=typeof n,l=r!==void 0;if(e=l&&t[0]&&t[0].parentNode||e,i==="string"||i==="number"){if(a||i==="number"&&(n=n.toString(),n===t))return t;if(l){let s=t[0];s&&s.nodeType===3?s.data!==n&&(s.data=n):s=document.createTextNode(n),t=W(e,t,r,s)}else t!==""&&typeof t=="string"?t=e.firstChild.data=n:t=e.textContent=n}else if(n==null||i==="boolean"){if(a)return t;t=W(e,t,r)}else{if(i==="function")return c.createRenderEffect(()=>{let s=n();for(;typeof s=="function";)s=s();t=K(e,s,t,r)}),()=>t;if(Array.isArray(n)){const s=[],d=t&&Array.isArray(t);if(ue(s,n,t,o))return c.createRenderEffect(()=>t=K(e,s,t,r,!0)),()=>t;if(a){if(!s.length)return t;if(r===void 0)return t=[...e.childNodes];let u=s[0];if(u.parentNode!==e)return t;const f=[u];for(;(u=u.nextSibling)!==r;)f.push(u);return t=f}if(s.length===0){if(t=W(e,t,r),l)return t}else d?t.length===0?Se(e,s,r):et(e,t,s):(t&&W(e),Se(e,s));t=s}else if(n.nodeType){if(a&&n.parentNode)return t=l?[n]:n;if(Array.isArray(t)){if(l)return t=W(e,t,r,n);W(e,t,null,n)}else t==null||t===""||!e.firstChild?e.appendChild(n):e.replaceChild(n,e.firstChild);t=n}}return t}function ue(e,n,t,r){let o=!1;for(let a=0,i=n.length;a<i;a++){let l=n[a],s=t&&t[e.length],d;if(!(l==null||l===!0||l===!1))if((d=typeof l)=="object"&&l.nodeType)e.push(l);else if(Array.isArray(l))o=ue(e,l,s)||o;else if(d==="function")if(r){for(;typeof l=="function";)l=l();o=ue(e,Array.isArray(l)?l:[l],Array.isArray(s)?s:[s])||o}else e.push(l),o=!0;else{const u=String(l);s&&s.nodeType===3&&s.data===u?e.push(s):e.push(document.createTextNode(u))}}return o}function Se(e,n,t=null){for(let r=0,o=n.length;r<o;r++)e.insertBefore(n[r],t)}function W(e,n,t,r){if(t===void 0)return e.textContent="";const o=r||document.createTextNode("");if(n.length){let a=!1;for(let i=n.length-1;i>=0;i--){const l=n[i];if(o!==l){const s=l.parentNode===e;!a&&!i?s?e.replaceChild(o,l):e.insertBefore(o,t):s&&l.remove()}else a=!0}}else e.insertBefore(o,t);return[o]}const st="http://www.w3.org/2000/svg";function lt(e,n=!1){return n?document.createElementNS(st,e):document.createElement(e)}function dt(e){const{useShadow:n}=e,t=document.createTextNode(""),r=()=>e.mount||document.body,o=c.getOwner();let a,i=!!c.sharedConfig.context;return c.createEffect(()=>{i&&(c.getOwner().user=i=!1),a||(a=c.runWithOwner(o,()=>c.createMemo(()=>e.children)));const l=r();if(l instanceof HTMLHeadElement){const[s,d]=c.createSignal(!1),u=()=>d(!0);c.createRoot(f=>v(l,()=>s()?f():a(),null)),c.onCleanup(u)}else{const s=lt(e.isSVG?"g":"div",e.isSVG),d=n&&s.attachShadow?s.attachShadow({mode:"open"}):s;Object.defineProperty(s,"_$host",{get(){return t.parentNode},configurable:!0}),v(d,a),l.appendChild(s),e.ref&&e.ref(s),c.onCleanup(()=>l.removeChild(s))}},void 0,{render:!i}),t}const ut=5e3,ht=e=>{let n=null;const t=()=>{n!==null&&(window.clearTimeout(n),n=null)};return{show:r=>{t(),e.setState({notification:{...r,show:!0}}),n=window.setTimeout(()=>{e.setState({notification:{...r,show:!1}}),n=null},ut)},clear:()=>{t(),e.setState({notification:{show:!1,type:null,message:null}})}}},Ee=(e,n)=>{if(!n)return e;const t={...e};for(const r in n)n[r]&&typeof n[r]=="object"&&!Array.isArray(n[r])?t[r]=Ee(e[r],n[r]):t[r]=n[r];return t},ft=(e,n)=>{let t;return(...r)=>{clearTimeout(t),t=window.setTimeout(()=>e(...r),n)}},gt="echo_",q="echo-pages",$e=e=>{if(!e||e==="/")return"/";const n=e.split("/");return n.length<=4?e:`/${n[1]}/.../${n[n.length-1]}`},Pe=()=>{window.dispatchEvent(new Event("echo-storage-change"))},ze=e=>`${gt}${e}`,V=(e,n)=>{try{const t=localStorage.getItem(ze(e));return t?JSON.parse(t):n}catch{return n}},G=(e,n)=>{try{localStorage.setItem(ze(e),JSON.stringify(n))}catch(t){console.warn("Failed to save to localStorage:",t)}},he=()=>{const e=window.location.pathname||"/",n=window.location.search;return`${e}${n}`},mt=(e,n)=>{try{if(!n.feedback.hasUserInteracted&&n.drawing.shapes.length<1)return;const t={message:n.feedback.message,customInputValues:n.feedback.customInputValues},r=V(q,{}),o=$e(e);(t||n.drawing.shapes.length>0)&&(r[o]={...r[o]||{},...t?{feedback:t}:{},drawing:{shapes:n.drawing.shapes}}),G(q,r),Pe()}catch(t){console.warn("Failed to save page state:",t)}},fe=e=>{try{return V(q,{})[e]}catch(n){console.error("Failed to load page state:",n);return}},Te=e=>{try{const n=V(q,{});delete n[e],G(q,n),Pe()}catch(n){console.error("Failed to clear page state:",n)}},Oe=()=>{try{const e=V(q,{});return Object.keys(e).length}catch(e){return console.error("Failed to get stored pages count:",e),0}},ge=()=>{try{const e=V(q,{});return Object.entries(e).map(([n,t])=>({path:$e(n),state:t}))}catch(e){return console.error("Failed to get stored pages:",e),[]}},vt=e=>ft((n,t,r=!1)=>{(!r||t.feedback.message.trim().length>0||t.drawing.shapes.length>0)&&(mt(n,t),e.setState({pagesCount:Oe()}))},1e3),me=Symbol("store-raw"),Y=Symbol("store-node"),M=Symbol("store-has"),Ie=Symbol("store-self");function Me(e){let n=e[c.$PROXY];if(!n&&(Object.defineProperty(e,c.$PROXY,{value:n=new Proxy(e,pt)}),!Array.isArray(e))){const t=Object.keys(e),r=Object.getOwnPropertyDescriptors(e);for(let o=0,a=t.length;o<a;o++){const i=t[o];r[i].get&&Object.defineProperty(e,i,{enumerable:r[i].enumerable,get:r[i].get.bind(n)})}}return n}function re(e){let n;return e!=null&&typeof e=="object"&&(e[c.$PROXY]||!(n=Object.getPrototypeOf(e))||n===Object.prototype||Array.isArray(e))}function Z(e,n=new Set){let t,r,o,a;if(t=e!=null&&e[me])return t;if(!re(e)||n.has(e))return e;if(Array.isArray(e)){Object.isFrozen(e)?e=e.slice(0):n.add(e);for(let i=0,l=e.length;i<l;i++)o=e[i],(r=Z(o,n))!==o&&(e[i]=r)}else{Object.isFrozen(e)?e=Object.assign({},e):n.add(e);const i=Object.keys(e),l=Object.getOwnPropertyDescriptors(e);for(let s=0,d=i.length;s<d;s++)a=i[s],!l[a].get&&(o=e[a],(r=Z(o,n))!==o&&(e[a]=r))}return e}function ae(e,n){let t=e[n];return t||Object.defineProperty(e,n,{value:t=Object.create(null)}),t}function Q(e,n,t){if(e[n])return e[n];const[r,o]=c.createSignal(t,{equals:!1,internal:!0});return r.$=o,e[n]=r}function wt(e,n){const t=Reflect.getOwnPropertyDescriptor(e,n);return!t||t.get||!t.configurable||n===c.$PROXY||n===Y||(delete t.value,delete t.writable,t.get=()=>e[c.$PROXY][n]),t}function Ae(e){c.getListener()&&Q(ae(e,Y),Ie)()}function bt(e){return Ae(e),Reflect.ownKeys(e)}const pt={get(e,n,t){if(n===me)return e;if(n===c.$PROXY)return t;if(n===c.$TRACK)return Ae(e),t;const r=ae(e,Y),o=r[n];let a=o?o():e[n];if(n===Y||n===M||n==="__proto__")return a;if(!o){const i=Object.getOwnPropertyDescriptor(e,n);c.getListener()&&(typeof a!="function"||e.hasOwnProperty(n))&&!(i&&i.get)&&(a=Q(r,n,a)())}return re(a)?Me(a):a},has(e,n){return n===me||n===c.$PROXY||n===c.$TRACK||n===Y||n===M||n==="__proto__"?!0:(c.getListener()&&Q(ae(e,M),n)(),n in e)},set(){return!0},deleteProperty(){return!0},ownKeys:bt,getOwnPropertyDescriptor:wt};function oe(e,n,t,r=!1){if(!r&&e[n]===t)return;const o=e[n],a=e.length;t===void 0?(delete e[n],e[M]&&e[M][n]&&o!==void 0&&e[M][n].$()):(e[n]=t,e[M]&&e[M][n]&&o===void 0&&e[M][n].$());let i=ae(e,Y),l;if((l=Q(i,n,o))&&l.$(()=>t),Array.isArray(e)&&e.length!==a){for(let s=e.length;s<a;s++)(l=i[s])&&l.$();(l=Q(i,"length",a))&&l.$(e.length)}(l=i[Ie])&&l.$()}function De(e,n){const t=Object.keys(n);for(let r=0;r<t.length;r+=1){const o=t[r];oe(e,o,n[o])}}function yt(e,n){if(typeof n=="function"&&(n=n(e)),n=Z(n),Array.isArray(n)){if(e===n)return;let t=0,r=n.length;for(;t<r;t++){const o=n[t];e[t]!==o&&oe(e,t,o)}oe(e,"length",r)}else De(e,n)}function J(e,n,t=[]){let r,o=e;if(n.length>1){r=n.shift();const i=typeof r,l=Array.isArray(e);if(Array.isArray(r)){for(let s=0;s<r.length;s++)J(e,[r[s]].concat(n),t);return}else if(l&&i==="function"){for(let s=0;s<e.length;s++)r(e[s],s)&&J(e,[s].concat(n),t);return}else if(l&&i==="object"){const{from:s=0,to:d=e.length-1,by:u=1}=r;for(let f=s;f<=d;f+=u)J(e,[f].concat(n),t);return}else if(n.length>1){J(e[r],n,[r].concat(t));return}o=e[r],t=[r].concat(t)}let a=n[0];typeof a=="function"&&(a=a(o,t),a===o)||r===void 0&&a==null||(a=Z(a),r===void 0||re(o)&&re(a)&&!Array.isArray(a)?De(o,a):oe(e,r,a))}function ve(...[e,n]){const t=Z(e||{}),r=Array.isArray(t),o=Me(t);function a(...i){c.batch(()=>{r&&i.length===1?yt(t,i[0]):J(t,i)})}return[o,a]}const F={rectangle:{id:"rectangle",label:"Highlight",getCursor:()=>"crosshair",strokeWidth:2,opacity:{selected:1,default:1}},path:{id:"path",label:"Pen",getCursor:e=>`url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48" fill="none" stroke="${e.replace("#","%23")}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="24" cy="24" r="8"/></svg>') 24 24, auto`,strokeWidth:6,opacity:{selected:.6,default:1}}},xt=e=>{const n=e.replace("#",""),t=Number.parseInt(n.slice(0,2),16)/255,r=Number.parseInt(n.slice(2,2),16)/255,o=Number.parseInt(n.slice(4,2),16)/255;return .2126*t+.7152*r+.0722*o},kt=e=>xt(e)<.5?"#FFFFFF":"#000000";let A=[],T=null,_=null,H=null;const we=(e,n)=>(...t)=>{const r=a=>{if(typeof a=="string")return a;if(a instanceof Error)return a.stack||a.message;try{const i=new WeakSet;return JSON.stringify(a,(s,d)=>{if(typeof d=="object"&&d!==null){if(d instanceof Node)return`[${d.nodeName} Element]`;if(i.has(d))return"[Circular Reference]";i.add(d)}return d})}catch{return"[Unable to stringify value]"}},o=t.map(r).join(" ");A.push({type:e,message:o,timestamp:new Date().toISOString()}),A.length>1e3&&(A=A.slice(-1e3)),n.apply(console,t)},Ct=()=>{T||(T={log:console.log,warn:console.warn,error:console.error},_=window.onerror,H=window.onunhandledrejection,window.onerror=(e,n,t,r,o)=>{const a=(o==null?void 0:o.stack)||(o==null?void 0:o.message)||e;return A.push({type:"error",message:`Uncaught Error: ${a}
|
2
|
+
Location: ${n}:${t}:${r}`,timestamp:new Date().toISOString()}),_?_(e,n,t,r,o):!1},window.onunhandledrejection=e=>{const n=e.reason;A.push({type:"error",message:`Unhandled Promise Rejection: ${(n==null?void 0:n.stack)||(n==null?void 0:n.message)||n}`,timestamp:new Date().toISOString()}),H&&H(e)},console.log=we("log",T.log),console.warn=we("warn",T.warn),console.error=we("error",T.error),window.addEventListener("error",e=>{const{message:n,filename:t,lineno:r,colno:o,error:a}=e,i=(a==null?void 0:a.stack)||(a==null?void 0:a.message)||n;A.push({type:"error",message:`Uncaught Error: ${i}
|
3
|
+
Location: ${t}:${r}:${o}`,timestamp:new Date().toISOString()})}))},St=()=>{T&&(console.log=T.log,console.warn=T.warn,console.error=T.error,T=null),_&&(window.onerror=_,_=null),H&&(window.onunhandledrejection=H,H=null),window.removeEventListener("error",()=>{}),A=[]},Et=()=>[...A],$t=()=>{var e;return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||((e=window.matchMedia)==null?void 0:e.call(window,"(max-width: 768px)").matches)},ie=(e,{useClientCoords:n=!1}={})=>{const r=typeof TouchEvent<"u"&&e instanceof TouchEvent?e.touches[0]:null;return{x:r?n?r.clientX:r.pageX:n?e.clientX:e.pageX,y:r?n?r.clientY:r.pageY:n?e.clientY:e.pageY}},Re=(e,n)=>{const t=n.x-e.x,r=n.y-e.y;return Math.sqrt(t*t+r*r)},Fe=e=>{if(e.length!==2)return null;const[n,t]=e;return{x:Math.min(n.x,t.x),y:Math.min(n.y,t.y),width:Math.abs(t.x-n.x),height:Math.abs(t.y-n.y)}},Pt=e=>e.length<2?null:`M ${e[0].x} ${e[0].y} ${e.slice(1).map(n=>`L ${n.x} ${n.y}`).join(" ")}`,ce=window.EventTarget.prototype.addEventListener,U=window.EventTarget.prototype.removeEventListener;let se=!1;const zt=(e,n,t,r)=>{ce.call(e,n,t,r)},Tt=(e,n,t,r)=>{U.call(e,n,t,r)},ee=new WeakMap,Ot=e=>{se||(se=!0,window.EventTarget.prototype.addEventListener=function(n,t,r){if(!this||typeof this!="object")return ce.call(this,n,t,r);const o=Mt(t,e);ee.has(this)||ee.set(this,new Map);const a={listener:t},i=ee.get(this);i&&i.set(t,a),ce.call(this,n,o,r)},window.EventTarget.prototype.removeEventListener=function(n,t,r){if(!this||typeof this!="object")return U.call(this,n,t,r);const o=ee.get(this);if(!o){U.call(this,n,t,r);return}const a=o.get(t);a?(U.call(this,n,a.listener,r),o.delete(t),o.size===0&&ee.delete(this)):U.call(this,n,t,r)})},It=()=>{se&&(window.EventTarget.prototype.addEventListener=ce,window.EventTarget.prototype.removeEventListener=U,se=!1)},O=e=>{const{event:n,callback:t,onMount:r,onCleanup:o,useOriginal:a=!0}=e;c.onMount(()=>{r==null||r(),a?zt(window,n,t):window.addEventListener(n,t)}),c.onCleanup(()=>{o==null||o(),a?Tt(window,n,t):window.removeEventListener(n,t)})},be=e=>{const{target:n,options:t,callback:r,onMount:o,onCleanup:a}=e,i=new MutationObserver(r);c.onMount(()=>{o==null||o(),i.observe(n,t)}),c.onCleanup(()=>{a==null||a(),i.disconnect()})},Mt=(e,n)=>function(t){n(t),typeof e=="function"?e.call(this,t):e.handleEvent(t)},At=e=>e.hasAttribute("data-hide-when-drawing"),Dt=async()=>{var e;try{const n=document.createElement("style");document.head.appendChild(n),(e=n.sheet)==null||e.insertRule("body > div:last-child img { display: inline-block; }");const t=await He(document.body,{logging:!1,useCORS:!0,scale:window.devicePixelRatio,allowTaint:!0,ignoreElements:r=>At(r)});return n.remove(),t.toDataURL("image/png")}catch(n){console.error("Failed to capture screenshot:",n);return}},Rt=(e,n,t)=>{let r=`M0 0 H${e.width} V${e.height} H0 Z`;if(n.length===2){const[o,a]=n;r+=` M${o.x} ${o.y} h${a.x-o.x} v${a.y-o.y} h${o.x-a.x} v${o.y-a.y}`}for(const o of t)if(o.type==="rectangle"){const[a,i]=o.points;r+=` M${a.x} ${a.y} h${i.x-a.x} v${i.y-a.y} h${a.x-i.x} v${a.y-i.y}`}return r},Ft=e=>{if(typeof e!="object"||e===null)throw new Error("Echo initialization failed: options must be an object");if(typeof e.onSubmit!="function")throw new Error("Echo initialization failed: onSubmit must be a function");if(e.primaryColor&&!/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(e.primaryColor))throw new Error("Echo initialization failed: primaryColor must be a valid hex color")},Le=5,je=(e,n)=>F[e].getCursor(n),Lt=(e,n,t)=>{var l,s;const[r,o]=ve({isDrawing:!1,currentPoints:[],selectedShapeId:null,selectedTool:"rectangle",showTooltip:!0,mousePosition:{x:0,y:0},selectedColor:e.primaryColor,shapes:((s=(l=fe(n))==null?void 0:l.drawing)==null?void 0:s.shapes)||[],hasDrawn:!1,isDragging:!1,dragStartPos:null,initialClickPos:null,dragOffset:null,cursor:je("rectangle",e.primaryColor)}),a=(d,u=!1)=>{if(d.selectedTool||d.selectedColor){const f=d.selectedTool||r.selectedTool,g=d.selectedColor||r.selectedColor;d.cursor=je(f,g)}o(d),t==null||t(d,u)},i={startDrawing:d=>{a({isDrawing:!0,currentPoints:[d],selectedShapeId:null})},updateDrawing:d=>{r.selectedTool==="rectangle"?a({currentPoints:[r.currentPoints[0],d]}):r.selectedTool==="path"&&a({currentPoints:[...r.currentPoints,d]})},finishDrawing:()=>{if(r.currentPoints.length>=2){const d={id:Math.random().toString(36).substring(2),type:r.selectedTool,color:r.selectedColor,points:r.currentPoints};a({shapes:[...r.shapes,d]})}a({isDrawing:!1,currentPoints:[]})},handleShapeClick:d=>{},handleStart:d=>{if(d instanceof MouseEvent){const f=d.target;if(!f.classList.contains("echo-drawing-layer-mask")&&!f.classList.contains("echo-shape"))return}const u=ie(d);if(d.target instanceof SVGElement&&d.target.classList.contains("echo-shape")){const f=d.target.dataset.shapeId;if(f&&r.selectedShapeId===f){const g=r.shapes.find(m=>m.id===f);if(g){i.startDrag(u),i.updateDragOffset(g,u);return}}}i.setInitialClick(u)},handleMove:d=>{const u=ie(d,{useClientCoords:!0}),f=ie(d);if(a({mousePosition:u}),r.isDragging&&r.selectedShapeId&&r.dragStartPos&&r.shapes.find(m=>m.id===r.selectedShapeId)){const m=f.x-r.dragStartPos.x,b=f.y-r.dragStartPos.y,S=r.shapes.map(k=>k.id===r.selectedShapeId?{...k,points:k.points.map(C=>({x:C.x+m,y:C.y+b}))}:k);a({shapes:S}),i.startDrag(f);return}if(r.initialClickPos&&!r.isDrawing){Re(r.initialClickPos,f)>=Le&&i.startDrawing(r.initialClickPos);return}r.isDrawing&&i.updateDrawing(f)},handleEnd:d=>{if(r.isDragging){i.stopDrag();return}if(r.initialClickPos&&!r.isDrawing){const u=ie(d);if(Re(r.initialClickPos,u)<Le&&d.target instanceof SVGElement&&d.target.classList.contains("echo-shape")){const g=d.target.dataset.shapeId;g&&a({selectedShapeId:g})}}i.setInitialClick(null),i.finishDrawing()},handleEnter:d=>{d.target===d.currentTarget&&!r.hasDrawn&&a({showTooltip:!0})},handleLeave:d=>{d.target===d.currentTarget&&a({showTooltip:!1})},startDrag:d=>{a({isDragging:!0,dragStartPos:d})},stopDrag:()=>{a({isDragging:!1,dragStartPos:null,dragOffset:null})},setInitialClick:d=>{a({initialClickPos:d})},updateDragOffset:(d,u)=>{a({dragOffset:{x:u.x-d.points[0].x,y:u.y-d.points[0].y}})}};return{state:r,setState:a,methods:i}},jt=(e,n,t,r)=>{var f;const o=(r==null?void 0:r.reduce((g,m)=>(g[m.id]=m.defaultValue??(m.type==="checkbox"?[]:""),g),{}))||{},a=fe(n),i=(a==null?void 0:a.feedback.customInputValues)||{},l={...o,...i},[s,d]=ve({message:((f=a==null?void 0:a.feedback)==null?void 0:f.message)||"",screenshot:void 0,isCapturing:!1,isMinimized:!1,customInputValues:l,hasUserInteracted:!1});return{state:s,setState:(g,m=!1)=>{const b="isCapturing"in g||"isMinimized"in g||m;!b&&!s.hasUserInteracted&&d({hasUserInteracted:!0}),d(g),(s.hasUserInteracted||b)&&(t==null||t(g,m))}}},Nt=(e,n)=>{const[t,r]=ve({text:e.textConfig,isOpen:!1,primaryColor:e.primaryColor,notification:{show:!1,type:null,message:null},dimensions:{width:document.documentElement.clientWidth,height:document.documentElement.scrollHeight},isStoredFeedbackOpen:!1,pagesCount:Oe(),welcomeMessageIsClosing:!1,position:e.position,customInputs:e.customInputs});return{state:t,setState:r}},Ne=e=>{var n;return((n=e.customInputs)==null?void 0:n.reduce((t,r)=>(t[r.id]=r.defaultValue??(r.type==="checkbox"?[]:""),t),{}))||{}},qt=e=>{let n=he();const t=Nt(e),r=vt(t),o=ht(t),a=jt(e,n,(d,u)=>{r(n,{feedback:{...a.state,...d},drawing:i.state},u)},e.customInputs),i=Lt(e,n,(d,u)=>{r(n,{feedback:a.state,drawing:{...i.state,...d}},u)}),l=d=>{n=d;const u=fe(n),f={...Ne(e),...u==null?void 0:u.feedback.customInputValues};a.setState({message:(u==null?void 0:u.feedback.message)||"",customInputValues:f,hasUserInteracted:!1}),i.setState({shapes:(u==null?void 0:u.drawing.shapes)||[]})},s=()=>{Te(n);const d={feedback:{message:"",screenshot:void 0,isCapturing:!1,isMinimized:!1,hasUserInteracted:!1,customInputValues:Ne(e)},drawing:{isDrawing:!1,currentPoints:[],shapes:[],selectedShapeId:null,selectedTool:"rectangle",selectedColor:e.primaryColor,showTooltip:!0,mousePosition:{x:0,y:0},hasDrawn:!1,isDragging:!1,dragStartPos:null,initialClickPos:null,dragOffset:null,cursor:i.state.cursor},widget:{isOpen:!1}};a.setState(d.feedback,!0),i.setState(d.drawing,!0),t.setState(d.widget)};return{feedback:a,drawing:i,widget:t,methods:{reset:s,handlePageChange:l,submit:async d=>{t.setState({isOpen:!1});try{const u=await e.onSubmit(d);return u instanceof Response&&!u.ok?(o.show({type:"error",message:"Submission failed"}),u):(s(),o.show({type:"success",message:"Feedback submitted"}),u)}catch{o.show({type:"error",message:"Submission failed"})}}}}},qe=c.createContext(),Vt=e=>{const n=qt({primaryColor:e.primaryColor,onSubmit:e.onSubmit,textConfig:e.textConfig,position:e.position,customInputs:e.customInputs});return c.createComponent(qe.Provider,{value:n,get children(){return e.children}})},x=()=>{const e=c.useContext(qe);if(!e)throw new Error("useEchoStore must be used within EchoProvider");return e},Bt=e=>{const[n,t]=c.createSignal({width:document.documentElement.clientWidth,height:document.documentElement.scrollHeight}),r=()=>{requestAnimationFrame(()=>{const o=e();o&&(o.style.height="0px",o.style.height=`${document.documentElement.scrollHeight}px`,t({width:document.documentElement.clientWidth,height:document.documentElement.scrollHeight}))})};return O({event:"resize",callback:r,onMount:r}),be({target:document.documentElement,options:{childList:!0,subtree:!0,attributes:!0},callback:r}),n},Wt=({onUrlChange:e})=>{let n=he();const t=()=>{const r=he();r!==n&&(n=r,e(r))};O({event:"popstate",callback:t}),O({event:"pushstate",callback:t}),O({event:"replacestate",callback:t}),be({target:document.documentElement,options:{childList:!0,subtree:!0},callback:t})},Yt=`*,*:before,*:after{box-sizing:border-box}.echo-root{position:absolute;top:0;left:0;z-index:var(--z-root);isolation:isolate;pointer-events:none;--z-root: 999999;--z-launcher: 2;--z-overlay: 1;--z-drawing-toolbar: 3;--z-drawing-tooltip: 3;--z-shape-actions: 3;--z-notification: 2;--z-welcome-message: 2;--z-widget-button: 2;--z-feedback-form: 4;--primary-color: #000;--primary-text-color: #fff;--error-color: #f44336;--success-color: var(--primary-color);--text-dark: #1a1a1a;--text-medium: #333;--text-light: #666;--text-lighter: #999;--border-color: rgba(0, 0, 0, .1);--border-color-light: rgba(0, 0, 0, .05);--border-color-medium: rgba(0, 0, 0, .08);--primary-color-lighter: color-mix(in srgb, var(--primary-color) 100%, white 40%);--primary-color-lightest: color-mix(in srgb, var(--primary-color) 7%, white 100%);--hover-color: color-mix(in srgb, var(--primary-color) 80%, #fff);--shadow-color-dark: rgba(0, 0, 0, .6);--shadow-color-light: rgba(255, 255, 255, .1);--shadow-color-medium: rgba(0, 0, 0, .2);--shadow-sm: 0 1px 3px;--shadow-md: 0 4px 10px;--shadow-lg: 0 10px 20px;--shadow-black-sm: var(--shadow-sm) rgba(0, 0, 0, .5);--shadow-black-md: var(--shadow-md) rgba(0, 0, 0, .5);--shadow-black-lg: var(--shadow-lg) rgba(0, 0, 0, .5);--shadow-black-lightened-sm: var(--shadow-sm) var(--shadow-color-medium);--shadow-black-lightened-md: var(--shadow-md) var(--shadow-color-medium);--shadow-black-lightened-lg: var(--shadow-lg) var(--shadow-color-medium);--shadow-primary-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color) 60%, transparent 80%);--shadow-primary-md: var(--shadow-md) color-mix(in srgb, var(--primary-color) 50%, transparent 80%);--shadow-primary-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color) 40%, transparent 80%);--shadow-primary-lighter-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color-lighter) 70%, transparent 80%);--shadow-primary-lighter-md: var(--shadow-md) color-mix(in srgb, var(--primary-color-lighter) 60%, transparent 80%);--shadow-primary-lighter-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color-lighter) 50%, transparent 80%);--shadow-primary-lightest-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color-lightest) 70%, transparent 80%);--shadow-primary-lightest-md: var(--shadow-md) color-mix(in srgb, var(--primary-color-lightest) 60%, transparent 80%);--shadow-primary-lightest-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color-lightest) 50%, transparent 80%);--shadow-combined-sm: var(--shadow-primary-sm), var(--shadow-black-lightened-sm);--shadow-combined-md: var(--shadow-primary-md), var(--shadow-black-lightened-md);--shadow-combined-lg: var(--shadow-primary-lg), var(--shadow-black-lightened-lg);--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 20px;--spacing-2xl: 24px;--spacing-3xl: 32px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--font-xs: .8125rem;--font-sm: .875rem;--font-base: .9375rem;--font-md: 1rem;--font-lg: 1.125rem;--duration-fast: .1s;--duration-base: .2s;--duration-slow: .3s;--duration-slower: .4s;--duration-slowest: .6s;--ease-default: ease;--ease-in-out: ease-in-out;--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.16, 1, .3, 1)}.echo-stored-feedback{position:absolute;display:flex;flex-direction:column;bottom:calc(100% + var(--spacing-lg));right:0;width:320px;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-black-lightened-lg);animation:slideUpFade var(--duration-base) var(--ease-smooth);z-index:calc(var(--z-widget-button) + 1);transform-origin:bottom right;transition:all var(--duration-base) var(--ease-smooth)}.echo-stored-feedback-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg)}.echo-stored-feedback-header h3{margin:0;font-size:var(--font-md);font-weight:600}.echo-stored-feedback-list{max-height:400px;overflow-y:auto;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-stored-feedback-item{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--border-color-light);transition:all var(--duration-base) var(--ease-smooth);background:#fff;position:relative}.echo-stored-feedback-item:hover{background:var(--primary-color-lightest)}.echo-stored-feedback-item-current{background:var(--primary-color-lightest);padding-left:calc(var(--spacing-lg) - 3px)}.echo-stored-feedback-item-current:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--primary-color);border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.echo-stored-feedback-item:last-child{border-bottom:none;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-stored-feedback-item:last-child.echo-stored-feedback-item-current:before{border-bottom-left-radius:var(--radius-lg)}.echo-stored-feedback-content{flex:1;min-width:0;margin-right:var(--spacing-md)}.echo-stored-feedback-path{font-size:var(--font-sm);font-weight:500;color:var(--text-medium);margin-bottom:var(--spacing-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.echo-stored-feedback-preview{font-size:var(--font-xs);color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.echo-stored-feedback-actions{display:flex;align-items:center;gap:var(--spacing-sm)}.echo-stored-feedback-link{color:var(--text-light)}.echo-stored-feedback-link:hover{color:var(--primary-color)}.echo-stored-feedback-delete{color:var(--text-light);font-size:var(--font-xs);padding:var(--spacing-xs) var(--spacing-md)}.echo-stored-feedback-delete:hover{color:var(--error-color);background:color-mix(in srgb,var(--error-color) 10%,transparent)}.echo-stored-feedback-empty{padding:var(--spacing-3xl) var(--spacing-lg);text-align:center;color:var(--text-light);font-size:var(--font-sm);border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-launcher{position:fixed;z-index:var(--z-launcher);bottom:var(--spacing-xl);right:var(--spacing-xl);pointer-events:none}.echo-overlay{position:absolute;top:0;left:0;margin:0;padding:0;max-width:none;max-height:none;border:3px solid var(--primary-color);background:transparent}.echo-overlay::backdrop{background:transparent}[data-hidden=true],[data-hidden=false]{transition:opacity var(--duration-slow) var(--ease-in-out),visibility var(--duration-slow) var(--ease-in-out)}[data-hidden=true]{opacity:0;visibility:hidden;pointer-events:none}[data-hidden=false]{opacity:1;visibility:visible;pointer-events:auto;user-select:none;-webkit-user-select:none}.echo-launcher-button{z-index:var(--z-widget-button);position:relative;display:flex;align-items:center;justify-content:center;cursor:pointer;background:radial-gradient(circle at 40% 40%,var(--primary-color) 0%,var(--primary-color-lighter) 65%,var(--primary-color-lighter) 100%);border:none;border-radius:var(--radius-full);width:48px;height:48px;box-shadow:var(--shadow-black-md);transition:all var(--duration-slow) var(--ease-default),transform var(--duration-slower) var(--ease-smooth),opacity var(--duration-slow) var(--ease-in-out);will-change:transform}.echo-launcher-button:hover{box-shadow:var(--shadow-black-lg);transform:translateY(-2px)}.echo-launcher-button:active{transform:scale(.95)}.echo-launcher-button-count{position:absolute;top:calc(-1 * var(--spacing-xs));right:calc(-1 * var(--spacing-xs));background:var(--primary-color-lightest);color:var(--primary-color-lighter);border-radius:var(--radius-md);min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-black-sm);padding:0 var(--spacing-xs);font-weight:600;pointer-events:auto;cursor:pointer;transform-origin:center center;animation:popIn var(--duration-slow) var(--ease-bounce);transition:transform var(--duration-base) var(--ease-default)}.echo-launcher-button-count:hover{transform:scale(1.1)}.echo-feedback{position:fixed;bottom:var(--spacing-xl);right:var(--spacing-xl);width:min(calc(100vw - var(--spacing-2xl)),24rem);z-index:var(--z-feedback-form);box-shadow:var(--shadow-black-lightened-lg);display:flex;flex-direction:column;gap:var(--spacing-lg);background:#fff;border-radius:var(--radius-lg);will-change:transform;padding:var(--spacing-lg)}.echo-feedback[data-minimized=true]{transition:transform .4s var(--ease-default),box-shadow .4s var(--ease-default);transform:translate(calc(100% - 48px),calc(100% - 48px));box-shadow:0 8px 16px #0003}.echo-feedback[data-minimized=true]:hover{cursor:pointer;transform:translate(calc(100% - 48px),calc(100% - 48px)) rotate(-2deg) scale(1.1);box-shadow:0 12px 24px #00000040}.echo-feedback[data-minimized=false]{transition:transform .4s var(--ease-smooth),box-shadow .4s var(--ease-smooth);transform:translate(0)}.echo-feedback[style*=transition]{pointer-events:none}.echo-feedback-content{display:flex;flex-direction:column;gap:var(--spacing-lg)}.echo-feedback-header{display:flex;justify-content:space-between;align-items:center}.echo-feedback-title{font-size:var(--font-lg);font-weight:600;color:var(--text-dark);margin:0}.echo-feedback-header-actions{display:flex;gap:var(--spacing-xs);margin:calc(-1 * var(--spacing-sm)) calc(-1 * var(--spacing-sm)) calc(-1 * var(--spacing-sm)) 0}.echo-feedback-form-textarea{width:100%;padding:.5rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:#fff;color:var(--text-medium);font-size:var(--font-sm);transition:all var(--duration-base) var(--ease-default);min-height:120px;resize:vertical;font-family:inherit}.echo-feedback-form-textarea:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-feedback-form-textarea::placeholder{color:var(--text-lighter)}[data-hide-when-drawing=true]{opacity:1;visibility:visible;transition:opacity .3s ease-in-out,visibility .3s ease-in-out}[data-drawing=true] [data-hide-when-drawing=true]{opacity:0;visibility:hidden;pointer-events:none;user-select:none;-webkit-user-select:none}.echo-drawing-layer,.echo-drawing-layer-container{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;user-select:none;-webkit-user-select:none}.echo-drawing-layer-container svg{pointer-events:auto}.echo-drawing-toolbar{position:fixed;top:var(--spacing-xl);left:var(--spacing-xl);display:flex;flex-direction:column;gap:var(--spacing-sm);z-index:var(--z-drawing-toolbar);opacity:1;transition:opacity var(--duration-base) var(--ease-default)}.echo-drawing-toolbar-button{width:50px;height:50px;border-radius:var(--radius-full);border:2px solid #ddd;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:all var(--duration-base) var(--ease-default);box-shadow:var(--shadow-black-sm);position:relative}.echo-drawing-toolbar-icon{width:25px;height:25px;color:var(--primary-color);transition:color var(--duration-base) var(--ease-default)}.echo-drawing-toolbar-button:hover{transform:scale(1.05);border-color:var(--hover-color)}.echo-drawing-toolbar-button[data-selected=true]{background:var(--primary-color-lightest);border-color:var(--primary-color)}.echo-color-selector{position:relative}.echo-color-selector:hover .echo-drawing-toolbar-button{border-top-right-radius:0;border-bottom-right-radius:0;transform:scale(1.05);border-right-color:transparent;background:rgba(var(--primary-color),.9);border-color:var(--hover-color)}.echo-color-swatch-wrapper{position:absolute;left:calc(100% - 2px);top:50%;transform:translateY(-50%);height:52.5px;padding-right:var(--spacing-sm);display:none}.echo-color-selector:hover .echo-color-swatch-wrapper{display:block}.echo-color-swatch{height:100%;background:#fff;border-radius:var(--radius-md);border-top-left-radius:0;border-bottom-left-radius:0;padding:var(--spacing-sm);padding-left:var(--spacing-md);box-shadow:var(--shadow-black-sm);display:flex;align-items:center;gap:var(--spacing-sm);border:2px solid #ddd;border-left:none}.echo-color-selector:hover .echo-color-swatch{border-color:var(--hover-color)}.echo-color-swatch-button{width:24px;height:24px;border-radius:var(--radius-full);border:2px solid transparent;cursor:pointer;padding:0;transition:transform var(--duration-base) var(--ease-default)}.echo-color-swatch-button:hover{transform:scale(1.1)}.echo-color-swatch-button[data-selected=true]{border-color:var(--primary-color)}.echo-drawing-tooltip{display:flex;text-wrap:nowrap;position:fixed;background:#fff;padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-lg);box-shadow:var(--shadow-combined-sm);font-size:var(--font-sm);color:var(--primary-color);z-index:var(--z-drawing-tooltip);pointer-events:none;animation:slideDownFade var(--duration-slow) var(--ease-default);border:1px solid var(--primary-color);background:var(--primary-color-lightest)}.echo-shape-actions{position:fixed;z-index:var(--z-shape-actions);display:flex;gap:var(--spacing-xs);background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-combined-md);transform:translate(-50%,-100%) translateY(calc(-1 * var(--spacing-sm)));animation:popInSlideDown var(--duration-fast) var(--ease-default);cursor:default;pointer-events:auto;padding:var(--spacing-xs);border:1px solid var(--primary-color)}.echo-shape-actions-divider{width:1px;margin:var(--spacing-sm) 0;background:var(--border-color);pointer-events:none}.echo-shape-actions[hidden]{display:none}.echo-notification{position:absolute;z-index:var(--z-notification);bottom:70px;right:0;width:300px;padding:var(--spacing-2xl);border-radius:var(--radius-lg);font-size:var(--font-md);font-weight:500;box-shadow:var(--shadow-combined-md);background:#fff;border:1px solid var(--primary-color);transform-origin:bottom right;display:flex;flex-direction:column;align-items:center;gap:var(--spacing-xl);opacity:1;pointer-events:auto;transition:all var(--duration-base) var(--ease-smooth)}.echo-notification:not([data-empty=true]){animation:popInSlideUp var(--duration-slower) var(--ease-spring)}.echo-notification[data-empty=true]{opacity:0;pointer-events:none;transform:translateY(var(--spacing-sm)) scale(.95);transition:none}.echo-notification-hide{position:absolute;top:var(--spacing-lg);right:var(--spacing-lg);width:24px;height:24px;padding:var(--spacing-xs);border:none;background:transparent;color:var(--text-light);opacity:.7;cursor:pointer;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;transition:all var(--duration-base) var(--ease-bounce);flex-shrink:0}.echo-notification-hide:hover{opacity:1;background:var(--primary-color-lightest);transform:scale(1.1);color:var(--primary-color)}.echo-notification-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;transform:scale(1.5);background:var(--primary-color-lightest);padding:var(--spacing-md);border-radius:var(--radius-full);margin-top:var(--spacing-md);transition:all var(--duration-base) var(--ease-bounce)}.echo-notification[data-type=success]{border-color:var(--success-color)}.echo-notification[data-type=success] .echo-notification-icon{color:var(--success-color)}.echo-notification[data-type=error]{border-color:var(--error-color)}.echo-notification[data-type=error] .echo-notification-icon{color:var(--error-color);background:color-mix(in srgb,var(--error-color) 10%,white)}.echo-notification-content{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;padding:0 12px}.echo-notification-title{font-size:1rem;font-weight:600;color:#1a1a1a}.echo-notification-message{font-size:.875rem;font-weight:400;color:#666;line-height:1.4;max-width:100%}@media (max-width: 768px){.echo-notification{right:0;width:calc(100vw - 40px);height:auto;min-height:180px;-webkit-backdrop-filter:none;backdrop-filter:none;font-size:.9375rem;padding:20px;gap:16px;bottom:calc(100% + 20px)}.echo-notification-icon{transform:scale(1.3);padding:10px;margin-top:8px}.echo-notification-title{font-size:.9375rem}.echo-notification-message{font-size:.8125rem}}.echo-welcome-message{display:flex;align-items:center;gap:var(--spacing-xs);position:fixed;z-index:var(--z-welcome-message);background:var(--primary-color-lightest);border:1px solid var(--primary-color);color:var(--primary-color);padding:var(--spacing-md) var(--spacing-lg);border-radius:var(--radius-lg);font-size:var(--font-sm);font-weight:500;box-shadow:var(--shadow-combined-md);opacity:1;transform:translateY(0) scale(1);transition:all var(--duration-slow) var(--ease-smooth);animation:bounceIn var(--duration-slowest) var(--ease-bounce);user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;cursor:pointer;text-align:left}.echo-welcome-message:hover{transform:translateY(-2px) scale(1.02);background:var(--primary-color-lightest);box-shadow:var(--shadow-combined-lg)}.echo-welcome-message:active{transform:translateY(0) scale(.98)}.echo-welcome-message-close{width:20px;height:20px;padding:2px;margin-left:var(--spacing-xs);border:none;background:transparent;opacity:.7;cursor:pointer;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;transition:all var(--duration-base) var(--ease-default)}.echo-welcome-message-close:hover{opacity:1;background:var(--shadow-color-light);transform:scale(1.1)}.echo-welcome-message-close:active{transform:scale(.95)}.echo-welcome-message:after{content:"";position:absolute;bottom:-4px;right:17px;width:16px;height:16px;background:inherit;transform:rotate(45deg);border-radius:var(--radius-xs);border:1px solid var(--primary-color);z-index:-2}.echo-welcome-message:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:var(--primary-color-lightest);z-index:-1;border-radius:var(--radius-lg)}.echo-welcome-message-pulsar{content:"";display:inline-block;width:6px;height:6px;background:var(--primary-color);border-radius:50%;margin-right:8px;animation:pulse 1.5s var(--ease-in-out) infinite}.echo-button{display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius-md);font-weight:500;cursor:pointer;transition:all var(--duration-base) var(--ease-default);line-height:1}.echo-button:focus-visible{outline:2px solid var(--primary-color);outline-offset:2px}.echo-button-primary{background:var(--primary-color);color:#fff}.echo-button-primary:hover{background:var(--hover-color);transform:translateY(-1px)}.echo-button-primary:active{transform:translateY(0)}.echo-button-secondary{background:transparent;color:var(--text-light)}.echo-button-secondary:hover{background-color:var(--primary-color-lightest);color:var(--primary-color)}.echo-button-xs{padding:var(--spacing-xs);font-size:var(--font-xs)}.echo-button-sm{padding:var(--spacing-xs);font-size:var(--font-sm)}.echo-button-md{padding:var(--spacing-md) var(--spacing-2xl);font-size:var(--font-base)}.echo-button-lg{padding:var(--spacing-md) var(--spacing-3xl);font-size:var(--font-md)}@keyframes slideUpFade{0%{opacity:0;transform:translateY(var(--spacing-sm))}to{opacity:1;transform:translateY(0)}}@keyframes slideDownFade{0%{opacity:0;transform:translateY(calc(-1 * var(--spacing-sm)))}to{opacity:1;transform:translateY(0)}}@keyframes popIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes popInSlideUp{0%{opacity:0;transform:translateY(var(--spacing-sm)) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes popInSlideDown{0%{opacity:0;transform:translate(-50%,-100%) translateY(calc(-1 * var(--spacing-xs))) scale(.95)}to{opacity:1;transform:translate(-50%,-100%) translateY(calc(-1 * var(--spacing-sm))) scale(1)}}@keyframes bounceIn{0%{opacity:0;transform:translateY(var(--spacing-xl)) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.5}to{transform:scale(1);opacity:1}}.echo-inputs{display:flex;flex-direction:column;gap:1rem;margin-bottom:1rem}.echo-input{display:flex;flex-direction:column;gap:.5rem}.echo-input-label{font-size:.875rem;font-weight:500;color:var(--text-color)}.echo-input-required{color:#dc2626;margin-left:.25rem}.echo-input-field{width:100%;padding:.5rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:#fff;color:var(--text-medium);font-size:var(--font-sm);transition:all var(--duration-base) var(--ease-default)}.echo-input-field:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-input-field::placeholder{color:var(--text-lighter)}select.echo-input-field{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center;padding-right:2.5rem;cursor:pointer}.echo-input-options{display:flex;flex-direction:column;gap:var(--spacing-sm);border:none;margin:0;padding:0}.echo-input-option{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:var(--spacing-xs);border-radius:var(--radius-sm);transition:all var(--duration-base) var(--ease-default)}.echo-input-option:hover{background:var(--primary-color-lightest)}.echo-input-option input[type=radio],.echo-input-option input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;width:18px;height:18px;border:1px solid var(--border-color);background-color:#fff;display:grid;place-content:center;cursor:pointer;transition:all var(--duration-base) var(--ease-default)}.echo-input-option input[type=radio]{border-radius:50%}.echo-input-option input[type=radio]:before{content:"";width:10px;height:10px;border-radius:50%;transform:scale(0);transition:transform var(--duration-base) var(--ease-default);background-color:var(--primary-color)}.echo-input-option input[type=radio]:checked:before{transform:scale(1)}.echo-input-option input[type=checkbox]{border-radius:var(--radius-sm)}.echo-input-option input[type=checkbox]:before{content:"";width:12px;height:12px;transform:scale(0);transition:all var(--duration-base) var(--ease-default);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");background-size:contain;background-repeat:no-repeat;background-position:center}.echo-input-option input[type=checkbox]:checked{background-color:var(--primary-color-lighter);border-color:var(--primary-color-lighter)}.echo-input-option input[type=checkbox]:checked:before{transform:scale(1)}.echo-input-option input[type=radio]:hover,.echo-input-option input[type=checkbox]:hover{border-color:var(--primary-color-lighter)}.echo-input-option input[type=radio]:focus,.echo-input-option input[type=checkbox]:focus{outline:none;border-color:var(--primary-color-lighter);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-input-option input[type=radio]:checked,.echo-input-option input[type=checkbox]:checked{border-color:var(--primary-color-lighter)}.echo-input-option span{font-size:var(--font-sm);color:var(--text-medium);-webkit-user-select:none;user-select:none}.echo-select{position:relative;width:100%}.echo-select-trigger{width:100%;padding:.5rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:#fff;color:var(--text-medium);font-size:var(--font-sm);transition:all var(--duration-base) var(--ease-default);cursor:pointer;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:.5rem;outline:none}.echo-select-trigger[data-placeholder=true]{color:var(--text-lighter)}.echo-select-trigger:hover{border-color:var(--border-color-medium)}.echo-select-trigger:focus,.echo-select-trigger[data-open=true]{border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-select-arrow{flex-shrink:0;transition:transform var(--duration-base) var(--ease-default)}.echo-select-trigger[data-open=true] .echo-select-arrow{transform:rotate(180deg)}.echo-select-dropdown{position:absolute;top:calc(100% + .25rem);left:0;right:0;background:#fff;border:1px solid var(--border-color-medium);border-radius:var(--radius-md);box-shadow:var(--shadow-black-lightened-md);max-height:15rem;overflow-y:auto;z-index:10;animation:slideDownFade var(--duration-base) var(--ease-default);padding:var(--spacing-xs)}.echo-select-option{width:100%;padding:.5rem .75rem;background:none;border:none;text-align:left;color:var(--text-medium);font-size:var(--font-sm);cursor:pointer;transition:all var(--duration-base) var(--ease-default);outline:none;border-radius:var(--radius-sm)}.echo-select-option:hover{background:var(--primary-color-lightest)}.echo-select-option:focus{background:var(--primary-color-lightest);box-shadow:0 0 0 1px var(--primary-color) inset}.echo-select-option[data-selected=true]{background:var(--primary-color-lightest);color:var(--primary-color);font-weight:500}select.echo-input-field{display:none}.visually-hidden{position:absolute;left:50%;bottom:0;transform:translate(-50%);width:1px;height:1px;padding:0;margin:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}`;var _t=w('<div class=echo-color-selector role=group aria-label="Color Selection"><button class=echo-drawing-toolbar-button title="Current Color"></button><div class=echo-color-swatch-wrapper role=listbox aria-label="Available Colors"><div class=echo-color-swatch>'),Ht=w("<button class=echo-color-swatch-button role=option>");const Ut=["#ff6b6b","#69db7c","#74c0fc","#ffd43b","#da77f2","#66d9e8","#ffa94d","#e599f7"],Xt={"#ff6b6b":"Soft Red","#69db7c":"Soft Green","#74c0fc":"Soft Blue","#ffd43b":"Soft Yellow","#da77f2":"Soft Purple","#66d9e8":"Soft Cyan","#ffa94d":"Soft Orange","#e599f7":"Soft Pink"},pe=e=>Xt[e]||"Primary",Kt=()=>{const e=x();return(()=>{var n=_t(),t=n.firstChild,r=t.nextSibling,o=r.firstChild;return h(t,"aria-expanded",!1),v(o,c.createComponent(c.For,{get each(){return[e.widget.state.primaryColor,...Ut]},children:a=>(()=>{var i=Ht();return i.$$click=()=>e.drawing.setState({selectedColor:a}),a!=null?i.style.setProperty("background-color",a):i.style.removeProperty("background-color"),c.createRenderEffect(l=>{var s=`Select ${pe(a)} color`,d=e.drawing.state.selectedColor===a,u=`${pe(a)} color`,f=e.drawing.state.selectedColor===a;return s!==l.e&&h(i,"title",l.e=s),d!==l.t&&h(i,"data-selected",l.t=d),u!==l.a&&h(i,"aria-label",l.a=u),f!==l.o&&h(i,"aria-selected",l.o=f),l},{e:void 0,t:void 0,a:void 0,o:void 0}),i})()})),c.createRenderEffect(a=>{var i=`Current color: ${pe(e.drawing.state.selectedColor)}`,l=e.drawing.state.selectedColor;return i!==a.e&&h(t,"aria-label",a.e=i),l!==a.t&&((a.t=l)!=null?t.style.setProperty("background-color",l):t.style.removeProperty("background-color")),a},{e:void 0,t:void 0}),n})()};E(["click"]);var Gt=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="m9 18 6-6-6-6">');const Zt=e=>(()=>{var n=Gt();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var Qt=w('<svg viewBox="0 0 64 66"fill=none><path d="M59.716 36.936L54.9 33l-6.17 5.108a77.278 77.278 0 00-12.744 13.469l-3.637 4.914-3.778-5.017a83.719 83.719 0 00-13.956-14.538L9.799 33l2.86-2.332A104.39 104.39 0 0030.1 12.5l2.24-2.98 1.736 2.298a111.905 111.905 0 0018.608 19.384l2.206 1.81 2.861-2.333a104.13 104.13 0 005.297-4.641C59.978 11.294 47.409.26 32.349.26 14.997.26.92 14.923.92 33c0 18.076 14.077 32.74 31.43 32.74 15.102 0 27.715-11.103 30.73-25.892a75.808 75.808 0 00-3.375-2.912h.011z">');const Jt=e=>(()=>{var n=Qt(),t=n.firstChild;return c.createRenderEffect(r=>{var o=e.size??24,a=e.size??24,i=e.class,l=e.style,s=e.fill??"currentColor";return o!==r.e&&h(n,"width",r.e=o),a!==r.t&&h(n,"height",r.t=a),i!==r.a&&h(n,"class",r.a=i),r.o=z(n,l,r.o),s!==r.i&&h(t,"fill",r.i=s),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),n})();var en=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M3 7V5a2 2 0 0 1 2-2h2"></path><path d="M17 3h2a2 2 0 0 1 2 2v2"></path><path d="M21 17v2a2 2 0 0 1-2 2h-2"></path><path d="M7 21H5a2 2 0 0 1-2-2v-2">');const tn=e=>(()=>{var n=en();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var nn=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z">');const rn=e=>(()=>{var n=nn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var an=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M3 6h18"></path><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"></path><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"></path><line x1=10 x2=10 y1=11 y2=17></line><line x1=14 x2=14 y1=11 y2=17>');const Ve=e=>(()=>{var n=an();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var on=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><circle cx=12 cy=12 r=10></circle><path d="m9 12 2 2 4-4">');const cn=e=>(()=>{var n=on();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var sn=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><circle cx=12 cy=12 r=10></circle><path d="m15 9-6 6"></path><path d="m9 9 6 6">');const ln=e=>(()=>{var n=sn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var dn=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M18 6 6 18"></path><path d="m6 6 12 12">');const le=e=>(()=>{var n=dn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var un=w('<div class=echo-drawing-toolbar data-hide-when-drawing=true role=toolbar aria-label="Drawing Tools"><button class=echo-drawing-toolbar-button title="Clear drawings"aria-label="Clear all drawings"role=button>'),hn=w("<button class=echo-drawing-toolbar-button role=button>");const fn={rectangle:tn,path:rn},gn=()=>{const e=x(),n=Object.values(F);return(()=>{var t=un(),r=t.firstChild;return v(t,c.createComponent(c.For,{each:n,children:o=>{const a=fn[o.id];return(()=>{var i=hn();return i.$$click=()=>e.drawing.setState({selectedTool:o.id}),v(i,c.createComponent(a,{class:"echo-drawing-toolbar-icon","aria-hidden":"true"})),c.createRenderEffect(l=>{var s=o.label,d=e.drawing.state.selectedTool===o.id,u=o.label,f=e.drawing.state.selectedTool===o.id;return s!==l.e&&h(i,"title",l.e=s),d!==l.t&&h(i,"data-selected",l.t=d),u!==l.a&&h(i,"aria-label",l.a=u),f!==l.o&&h(i,"aria-pressed",l.o=f),l},{e:void 0,t:void 0,a:void 0,o:void 0}),i})()}}),r),v(t,c.createComponent(Kt,{}),r),r.$$click=()=>e.drawing.setState({shapes:[]},!0),v(r,c.createComponent(Ve,{class:"echo-drawing-toolbar-icon","aria-hidden":"true"})),t})()};E(["click"]);var mn=w("<div class=echo-drawing-tooltip data-hide-when-drawing=true>");const vn=()=>{const e=x(),n=c.createMemo(()=>e.drawing.state.showTooltip&&e.drawing.state.mousePosition.y&&e.drawing.state.mousePosition.x&&e.widget.state.isOpen&&!$t());return c.createComponent(c.Show,{get when(){return n()},get children(){var t=mn();return v(t,()=>e.widget.state.text.drawingTooltip.text),c.createRenderEffect(r=>{var o=`${e.drawing.state.mousePosition.y+20}px`,a=`${e.drawing.state.mousePosition.x+10}px`;return o!==r.e&&((r.e=o)!=null?t.style.setProperty("top",o):t.style.removeProperty("top")),a!==r.t&&((r.t=a)!=null?t.style.setProperty("left",a):t.style.removeProperty("left")),r},{e:void 0,t:void 0}),t}})};var wn=w("<button>");const L=e=>{const n=()=>e.variant||"primary",t=()=>e.size||"md";return(()=>{var r=wn();return at(r,c.mergeProps(e,{get class(){return`echo-button echo-button-${n()} echo-button-${t()} ${e.class}`}}),!1),r})()};var bn=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1=10 y1=14 x2=21 y2=3>');const pn=e=>(()=>{var n=bn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&h(n,"width",t.e=r),o!==t.t&&h(n,"height",t.t=o),a!==t.a&&h(n,"fill",t.a=a),i!==t.o&&h(n,"stroke",t.o=i),l!==t.i&&h(n,"stroke-width",t.i=l),s!==t.n&&h(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var yn=w("<div class=echo-stored-feedback-empty>No unsubmitted feedback"),xn=w("<div class=echo-stored-feedback><div class=echo-stored-feedback-header><h3>Unsubmitted Feedback</h3></div><div class=echo-stored-feedback-list>"),kn=w("<div><div class=echo-stored-feedback-content><div class=echo-stored-feedback-path></div><div class=echo-stored-feedback-preview></div></div><div class=echo-stored-feedback-actions>");const Cn=()=>{const e=x();let n;const[t,r]=c.createSignal(ge()),[o,a]=c.createSignal(window.location.pathname),i=m=>{m.key==="Escape"&&e.widget.state.isStoredFeedbackOpen&&e.widget.setState({isStoredFeedbackOpen:!1})},l=m=>{if(!e.widget.state.isStoredFeedbackOpen||!n)return;m.composedPath().includes(n)||e.widget.setState({isStoredFeedbackOpen:!1})},s=()=>{const m=ge();r(m),e.widget.setState({pagesCount:m.length})},d=()=>{a(window.location.pathname)};O({event:"echo-storage-change",callback:s}),O({event:"popstate",callback:d}),be({target:document.documentElement,options:{childList:!0,subtree:!0},callback:()=>{a(window.location.pathname)}}),O({event:"keydown",callback:i}),O({event:"click",callback:l});const u=(m,b)=>{const S=b?`${m}${b}`:m;window.location.href=S,e.widget.setState({isStoredFeedbackOpen:!1})},f=m=>{o()===m&&e.methods.reset(),Te(m);const b=ge();r(b),e.widget.setState({pagesCount:b.length})},g=m=>{if(m==="/")return"/";const b=m.split("/");return b.length<=4?m:`/${b[1]}/.../${b[b.length-1]}`};return c.createComponent(c.Show,{get when(){return e.widget.state.isStoredFeedbackOpen},get children(){var m=xn(),b=m.firstChild;b.firstChild;var S=b.nextSibling,k=n;return typeof k=="function"?R(k,m):n=m,v(b,c.createComponent(L,{variant:"secondary",size:"sm",onClick:()=>e.widget.setState({isStoredFeedbackOpen:!1}),get children(){return c.createComponent(le,{size:20})}}),null),v(S,c.createComponent(c.For,{get each(){return t()},children:C=>{const p=c.createMemo(()=>C.path===o());return(()=>{var $=kn(),P=$.firstChild,y=P.firstChild,B=y.nextSibling,j=P.nextSibling;return v(y,()=>g(C.path)),v(B,()=>C.state.feedback.message),v(j,(()=>{var I=c.createMemo(()=>!p());return()=>I()&&c.createComponent(L,{class:"echo-stored-feedback-link",variant:"secondary",size:"sm",onClick:()=>u(C.path,C.state.latestQuery),get children(){return c.createComponent(pn,{})}})})(),null),v(j,c.createComponent(L,{class:"echo-stored-feedback-delete",variant:"secondary",size:"sm",onClick:()=>f(C.path),children:"Delete"}),null),c.createRenderEffect(I=>{var Ye=`echo-stored-feedback-item ${p()?"echo-stored-feedback-item-current":""}`,_e=C.path;return Ye!==I.e&&xe($,I.e=Ye),_e!==I.t&&h(y,"title",I.t=_e),I},{e:void 0,t:void 0}),$})()}}),null),v(S,c.createComponent(c.Show,{get when(){return t().length===0},get children(){return yn()}}),null),m}})};var Sn=w('<button class=echo-launcher-button aria-label="Open feedback form"role=button>'),En=w("<span class=echo-launcher-button-count role=button tabindex=0>");const $n=()=>{const e=x(),[n,t]=c.createSignal(!1);let r;const o=()=>{r&&window.clearTimeout(r),r=window.setTimeout(()=>{const d=V("welcome_message_shown",!1);!e.widget.state.isOpen&&!e.widget.state.isStoredFeedbackOpen&&d&&t(!0)},4e3)},a=()=>{t(!1)},i=()=>{o()},l=()=>{e.widget.setState({isOpen:!e.widget.state.isOpen}),e.widget.setState({welcomeMessageIsClosing:!0}),G("welcome_message_shown",!0)};c.createEffect(()=>{e.widget.state.isOpen||(t(!1),o()),e.widget.state.isStoredFeedbackOpen&&t(!1)});const s=d=>{d.stopPropagation(),e.widget.setState({isStoredFeedbackOpen:!e.widget.state.isStoredFeedbackOpen}),t(!1)};return[(()=>{var d=Sn();return d.addEventListener("pointerleave",i),d.addEventListener("pointerenter",a),d.$$click=l,v(d,c.createComponent(Jt,{stroke:"white",fill:"#ffffff","aria-hidden":"true"}),null),v(d,(()=>{var u=c.createMemo(()=>e.widget.state.pagesCount>0);return()=>u()&&(()=>{var f=En();return f.$$click=s,v(f,()=>e.widget.state.pagesCount),c.createRenderEffect(()=>h(f,"aria-label",`View ${e.widget.state.pagesCount} stored feedback items`)),f})()})(),null),c.createRenderEffect(u=>{var f=e.widget.state.isOpen,g=`translateX(${n()?"45px":"0"})`,m=e.widget.state.isOpen;return f!==u.e&&h(d,"data-hidden",u.e=f),g!==u.t&&((u.t=g)!=null?d.style.setProperty("transform",g):d.style.removeProperty("transform")),m!==u.a&&h(d,"aria-expanded",u.a=m),u},{e:void 0,t:void 0,a:void 0}),d})(),c.createComponent(Cn,{})]};E(["click"]);var Pn=w("<div class=echo-notification><div class=echo-notification-icon></div><div class=echo-notification-content><div class=echo-notification-title></div><div class=echo-notification-message>");const zn=()=>{const e=x(),n=()=>{e.widget.setState({notification:{...e.widget.state.notification,show:!1}})},t=()=>{switch(e.widget.state.notification.type){case"success":return e.widget.state.text.notification.successTitle;case"error":return e.widget.state.text.notification.errorTitle;default:return""}};return(()=>{var r=Pn(),o=r.firstChild,a=o.nextSibling,i=a.firstChild,l=i.nextSibling;return v(r,c.createComponent(L,{class:"echo-notification-hide",variant:"secondary",size:"sm",onClick:n,get title(){return e.widget.state.text.notification.hideTitle},get children(){return c.createComponent(le,{size:20})}}),o),v(o,(()=>{var s=c.createMemo(()=>e.widget.state.notification.type==="success");return()=>s()?c.createComponent(cn,{size:32}):(()=>{var d=c.createMemo(()=>e.widget.state.notification.type==="error");return()=>d()?c.createComponent(ln,{size:32}):null})()})()),v(i,t),v(l,()=>{var s;return(s=e.widget.state.notification)==null?void 0:s.message}),c.createRenderEffect(s=>{var d=e.widget.state.notification.type,u=!e.widget.state.notification.type,f=!e.widget.state.notification.show;return d!==s.e&&h(r,"data-type",s.e=d),u!==s.t&&h(r,"data-empty",s.t=u),f!==s.a&&h(r,"data-hidden",s.a=f),s},{e:void 0,t:void 0,a:void 0}),r})()};var Tn=w("<div class=echo-shape-actions data-hide-when-drawing=true>");const On=()=>{const e=x();let n;const[t,r]=c.createSignal({x:window.scrollX,y:window.scrollY});O({event:"scroll",callback:()=>{r({x:window.scrollX,y:window.scrollY})}});const a=()=>{e.drawing.state.selectedShapeId&&e.drawing.setState({shapes:e.drawing.state.shapes.filter(s=>s.id!==e.drawing.state.selectedShapeId),selectedShapeId:null})},i=c.createMemo(()=>e.drawing.state.selectedShapeId?e.drawing.state.shapes.find(s=>s.id===e.drawing.state.selectedShapeId):null),l=c.createMemo(()=>{const s=i(),d=n==null?void 0:n.getBoundingClientRect();if(!s||!d)return null;let u=null;if(s.type==="rectangle"){const m=Fe(s.points);if(!m)return null;u={x:m.x+m.width/2,y:m.y}}else if(s.type==="path"&&s.points.length>0)u={x:s.points[0].x,y:s.points[0].y};else return null;const f=8,g=t();return{x:Math.max(d.width/2+f,Math.min(window.innerWidth-d.width/2-f,u.x-g.x)),y:Math.max(d.height+f,Math.min(window.innerHeight-f,u.y-g.y))}});return(()=>{var s=Tn(),d=n;return typeof d=="function"?R(d,s):n=s,s.style.setProperty("top","0"),s.style.setProperty("left","0"),v(s,c.createComponent(L,{onClick:a,size:"sm",variant:"secondary",title:"Delete shape",get children(){return c.createComponent(Ve,{size:20})}})),c.createRenderEffect(u=>{var m,b;var f=!l(),g=`translate(calc(${(m=l())==null?void 0:m.x}px - 50%), calc(${(b=l())==null?void 0:b.y}px - 125%))`;return f!==u.e&&(s.hidden=u.e=f),g!==u.t&&((u.t=g)!=null?s.style.setProperty("transform",g):s.style.removeProperty("transform")),u},{e:void 0,t:void 0}),s})()};var In=w("<button class=echo-welcome-message><span class=echo-welcome-message-pulsar></span><div class=echo-welcome-message-close role=button tabindex=0>");const Mn=()=>{const e=x(),n=V("welcome_message_shown",!1),t=o=>{o.stopPropagation(),e.widget.setState({welcomeMessageIsClosing:!0}),G("welcome_message_shown",!0)},r=()=>{e.widget.setState({isOpen:!0}),e.widget.setState({welcomeMessageIsClosing:!0}),G("welcome_message_shown",!0)};return n?null:(()=>{var o=In(),a=o.firstChild,i=a.nextSibling;return o.$$click=r,o.style.setProperty("bottom","80px"),o.style.setProperty("right","20px"),v(o,()=>e.widget.state.text.welcomeMessage.text,i),i.$$keydown=l=>l.key==="Enter"&&t(l),i.$$click=t,v(i,c.createComponent(le,{size:16,strokeWidth:3})),c.createRenderEffect(l=>{var s=e.widget.state.welcomeMessageIsClosing,d=e.widget.state.text.welcomeMessage.closeAriaLabel;return s!==l.e&&h(o,"data-hidden",l.e=s),d!==l.t&&h(i,"aria-label",l.t=d),l},{e:void 0,t:void 0}),o})()};E(["click","keydown"]);var An=w("<svg><rect class=echo-shape fill=transparent vector-effect=non-scaling-stroke role=img></svg>",!1,!0),Dn=w("<svg><path class=echo-shape fill=none vector-effect=non-scaling-stroke stroke-linecap=round role=img></svg>",!1,!0);const Be=e=>{const n=c.createMemo(()=>e.id===e.selectedShapeId);return[c.createComponent(c.Show,{get when(){return e.type==="rectangle"},get children(){return c.createComponent(Rn,c.mergeProps(e,{get isSelected(){return n()}}))}}),c.createComponent(c.Show,{get when(){return e.type==="path"},get children(){return c.createComponent(Fn,c.mergeProps(e,{get isSelected(){return n()}}))}})]},Rn=e=>{const n=c.createMemo(()=>Fe(e.points));return c.createComponent(c.Show,{get when(){return n()},get children(){var t=An();return t.$$keydown=r=>{var o;return r.key==="Enter"&&((o=e.onShapeClick)==null?void 0:o.call(e,e.id))},t.$$click=()=>{var r;return(r=e.onShapeClick)==null?void 0:r.call(e,e.id)},c.createRenderEffect(r=>{var o=e.id,a=e.isSelected,i=n().x,l=n().y,s=n().width,d=n().height,u=e.color,f=F.rectangle.strokeWidth,g=e.isSelected?F.rectangle.opacity.selected:F.rectangle.opacity.default,m=e.isSelected?"5,5":"none",b=e.isSelected?"move":"pointer",S=`Rectangle shape ${e.isSelected?"(selected)":""}`,k=e.onShapeClick?0:-1;return o!==r.e&&h(t,"data-shape-id",r.e=o),a!==r.t&&h(t,"data-selected",r.t=a),i!==r.a&&h(t,"x",r.a=i),l!==r.o&&h(t,"y",r.o=l),s!==r.i&&h(t,"width",r.i=s),d!==r.n&&h(t,"height",r.n=d),u!==r.s&&h(t,"stroke",r.s=u),f!==r.h&&h(t,"stroke-width",r.h=f),g!==r.r&&h(t,"opacity",r.r=g),m!==r.d&&h(t,"stroke-dasharray",r.d=m),b!==r.l&&h(t,"cursor",r.l=b),S!==r.u&&h(t,"aria-label",r.u=S),k!==r.c&&h(t,"tabindex",r.c=k),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),t}})},Fn=e=>{const n=c.createMemo(()=>Pt(e.points));return c.createComponent(c.Show,{get when(){return n()},get children(){var t=Dn();return t.$$keydown=r=>{var o;return r.key==="Enter"&&((o=e.onShapeClick)==null?void 0:o.call(e,e.id))},t.$$click=()=>{var r;return(r=e.onShapeClick)==null?void 0:r.call(e,e.id)},c.createRenderEffect(r=>{var o=e.id,a=e.isSelected,i=n(),l=e.color,s=F.path.strokeWidth,d=e.isSelected?F.path.opacity.selected:F.path.opacity.default,u=e.isSelected?"move":"pointer",f=`Freehand shape ${e.isSelected?"(selected)":""}`,g=e.onShapeClick?0:-1;return o!==r.e&&h(t,"data-shape-id",r.e=o),a!==r.t&&h(t,"data-selected",r.t=a),i!==r.a&&h(t,"d",r.a=i),l!==r.o&&h(t,"stroke",r.o=l),s!==r.i&&h(t,"stroke-width",r.i=s),d!==r.n&&h(t,"opacity",r.n=d),u!==r.s&&h(t,"cursor",r.s=u),f!==r.h&&h(t,"aria-label",r.h=f),g!==r.r&&h(t,"tabindex",r.r=g),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),t}})};E(["click","keydown"]);var Ln=w('<div class=echo-drawing-layer-container role=application aria-label="Drawing Canvas"><svg width=100% height=100% class=echo-drawing-layer preserveAspectRatio=none role=img aria-label="Drawing Area"><path class=echo-drawing-layer-mask fill="rgba(33, 43, 55, 1)"fill-opacity=0.2 fill-rule=evenodd aria-hidden=true>');const jn=()=>{const e=x();let n;return c.onMount(()=>{n==null||n.addEventListener("mousemove",e.drawing.methods.handleMove),n==null||n.addEventListener("mouseup",e.drawing.methods.handleEnd),n==null||n.addEventListener("touchmove",e.drawing.methods.handleMove,{passive:!1}),n==null||n.addEventListener("touchend",e.drawing.methods.handleEnd)}),c.onCleanup(()=>{n==null||n.removeEventListener("mousemove",e.drawing.methods.handleMove),n==null||n.removeEventListener("mouseup",e.drawing.methods.handleEnd),n==null||n.removeEventListener("touchmove",e.drawing.methods.handleMove),n==null||n.removeEventListener("touchend",e.drawing.methods.handleEnd)}),(()=>{var t=Ln(),r=t.firstChild,o=r.firstChild,a=n;return typeof a=="function"?R(a,t):n=t,v(t,c.createComponent(vn,{}),r),v(t,c.createComponent(On,{}),r),N(r,"touchend",e.drawing.methods.handleLeave,!0),N(r,"mouseleave",e.drawing.methods.handleLeave),N(r,"mouseenter",e.drawing.methods.handleEnter),r.$$touchmove=i=>{i.preventDefault(),e.drawing.methods.handleMove(i)},N(r,"mousemove",e.drawing.methods.handleMove,!0),r.$$touchstart=i=>{i.preventDefault(),e.drawing.methods.handleStart(i),e.drawing.methods.handleEnter(i),e.drawing.setState({showTooltip:!1,hasDrawn:!0})},r.$$mousedown=i=>{e.drawing.methods.handleStart(i),e.drawing.setState({showTooltip:!1,hasDrawn:!0})},v(r,c.createComponent(c.For,{get each(){return e.drawing.state.shapes},children:i=>c.createComponent(Be,{get id(){return i.id},get type(){return i.type},get color(){return i.color},get points(){return i.points},get selectedShapeId(){return e.drawing.state.selectedShapeId},get onShapeClick(){return e.drawing.methods.handleShapeClick}})}),null),v(r,c.createComponent(Be,{id:"temp",get type(){return e.drawing.state.selectedTool},get color(){return e.drawing.state.selectedColor},get points(){return e.drawing.state.currentPoints},get selectedShapeId(){return e.drawing.state.selectedShapeId}}),null),c.createRenderEffect(i=>{var l=e.drawing.state.cursor,s=Rt({width:e.widget.state.dimensions.width,height:e.widget.state.dimensions.height},e.drawing.state.currentPoints,e.drawing.state.shapes);return l!==i.e&&((i.e=l)!=null?t.style.setProperty("cursor",l):t.style.removeProperty("cursor")),s!==i.t&&h(o,"d",i.t=s),i},{e:void 0,t:void 0}),t})()};E(["mousedown","touchstart","mousemove","touchmove","touchend"]);const te=e=>({handleTextChange:a=>{const i=a.target;e(i.value)},handleSelectChange:a=>{e(a)},handleCheckboxChange:(a,i,l)=>{const s=l?[...a,i]:a.filter(d=>d!==i);e(s)},getCheckboxValue:a=>Array.isArray(a)?a:[]});var Nn=w("<div class=echo-input role=group>"),qn=w("<label class=echo-input-label><span>"),Vn=w('<span class=echo-input-required aria-label="Required field">*');const ne=e=>(()=>{var n=Nn();return v(n,(()=>{var t=c.createMemo(()=>!!e.label);return()=>t()&&(()=>{var r=qn(),o=r.firstChild;return v(o,()=>e.label),v(r,(()=>{var a=c.createMemo(()=>!!e.required);return()=>a()&&Vn()})(),null),r})()})(),null),v(n,()=>e.children,null),n})();var Bn=w("<textarea class=echo-input-field rows=5>"),Wn=w("<div class=visually-hidden>");const We=e=>{const{handleTextChange:n}=te(e.onChange);return c.createComponent(ne,{get label(){return e.config.label},get required(){return e.config.required},get children(){return[(()=>{var t=Bn();return N(t,"input",n,!0),c.createRenderEffect(r=>{var o=e.config.id,a=e.config.placeholder,i=e.config.required,l=e.config.label||e.config.placeholder,s=e.config.required,d=e.value==="",u=`${e.config.id}-description`;return o!==r.e&&h(t,"id",r.e=o),a!==r.t&&h(t,"placeholder",r.t=a),i!==r.a&&(t.required=r.a=i),l!==r.o&&h(t,"aria-label",r.o=l),s!==r.i&&h(t,"aria-required",r.i=s),d!==r.n&&h(t,"aria-invalid",r.n=d),u!==r.s&&h(t,"aria-describedby",r.s=u),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),c.createRenderEffect(()=>t.value=e.value===void 0?"":e.value),t})(),(()=>{var t=Wn();return v(t,()=>e.config.placeholder),c.createRenderEffect(()=>h(t,"id",`${e.config.id}-description`)),t})()]}})};E(["input"]);var Yn=w("<fieldset class=echo-input-options role=group>"),_n=w("<label class=echo-input-option><input type=checkbox><span>");const Hn=e=>{const{handleCheckboxChange:n,getCheckboxValue:t}=te(e.onChange),r=()=>t(e.value),o=()=>r().length>0;return c.createComponent(ne,{get label(){return e.config.label},get required(){return e.config.required},get children(){var a=Yn();return v(a,c.createComponent(c.For,{get each(){return e.config.options},children:(i,l)=>(()=>{var s=_n(),d=s.firstChild,u=d.nextSibling;return d.addEventListener("change",f=>n(r(),i.value,f.currentTarget.checked)),v(u,()=>i.label),c.createRenderEffect(()=>d.required=e.config.required&&!o()&&l()===0),c.createRenderEffect(()=>d.value=i.value),c.createRenderEffect(()=>d.checked=r().includes(i.value)),s})()})),c.createRenderEffect(()=>h(a,"aria-required",e.config.required)),a}})};var Un=w("<fieldset class=echo-input-options role=radiogroup>"),Xn=w("<label class=echo-input-option><input type=radio><span>");const Kn=e=>{const{handleSelectChange:n}=te(e.onChange);return c.createComponent(ne,{get label(){return e.config.label},get required(){return e.config.required},get children(){var t=Un();return v(t,c.createComponent(c.For,{get each(){return e.config.options},children:r=>(()=>{var o=Xn(),a=o.firstChild,i=a.nextSibling;return a.addEventListener("change",()=>n(r.value)),v(i,()=>r.label),c.createRenderEffect(l=>{var s=e.config.id,d=e.config.required;return s!==l.e&&h(a,"name",l.e=s),d!==l.t&&(a.required=l.t=d),l},{e:void 0,t:void 0}),c.createRenderEffect(()=>a.value=r.value),c.createRenderEffect(()=>a.checked=e.value===r.value),o})()})),c.createRenderEffect(()=>h(t,"aria-required",e.config.required)),t}})};var Gn=w("<div class=echo-select-dropdown role=listbox>"),Zn=w('<div class=echo-select><button type=button class=echo-select-trigger aria-haspopup=listbox><span></span><svg class=echo-select-arrow width=16 height=16 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="m6 9 6 6 6-6"></path></svg></button><input type=text class=visually-hidden aria-hidden=true>'),Qn=w("<button type=button class=echo-select-option role=option>");const Jn=e=>{const{handleSelectChange:n}=te(e.onChange),[t,r]=c.createSignal(!1);let o,a,i;const l=()=>e.config.options.find(f=>f.value===(e.value===void 0?"":e.value)),s=(f,g)=>{g.stopPropagation(),f.value===e.value?e.config.required||n(""):n(f.value),r(!1)},d=()=>{r(!t())};return O({event:"mousedown",callback:f=>{if(!t()||!o)return;f.composedPath().includes(o)||r(!1)}}),c.createComponent(ne,{get label(){return e.config.label},get required(){return e.config.required},get children(){var f=Zn(),g=f.firstChild,m=g.firstChild,b=g.nextSibling,S=o;typeof S=="function"?R(S,f):o=f,g.$$click=p=>{p.stopPropagation(),d()};var k=a;typeof k=="function"?R(k,g):a=g,v(m,()=>{var p;return((p=l())==null?void 0:p.label)||e.config.placeholder}),v(f,c.createComponent(c.Show,{get when(){return t()},get children(){var p=Gn();return v(p,c.createComponent(c.For,{get each(){return e.config.options},children:$=>(()=>{var P=Qn();return P.$$click=y=>s($,y),v(P,()=>$.label),c.createRenderEffect(y=>{var B=$.value===e.value,j=$.value===e.value;return B!==y.e&&h(P,"aria-selected",y.e=B),j!==y.t&&h(P,"data-selected",y.t=j),y},{e:void 0,t:void 0}),P})()})),p}}),b);var C=i;return typeof C=="function"?R(C,b):i=b,c.createRenderEffect(p=>{var $=t(),P=!e.value,y=e.config.required,B=t(),j=e.config.required,I=e.config.required;return $!==p.e&&h(g,"data-open",p.e=$),P!==p.t&&h(g,"data-placeholder",p.t=P),y!==p.a&&h(g,"data-required",p.a=y),B!==p.o&&h(g,"aria-expanded",p.o=B),j!==p.i&&h(g,"aria-required",p.i=j),I!==p.n&&(b.required=p.n=I),p},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),c.createRenderEffect(()=>b.value=e.value===void 0?"":e.value),f}})};E(["click"]);var er=w("<input type=text class=echo-input-field>");const tr=e=>{const{handleTextChange:n}=te(e.onChange);return c.createComponent(ne,{get label(){return e.config.label},get required(){return e.config.required},get children(){var t=er();return N(t,"input",n,!0),c.createRenderEffect(r=>{var o=e.config.placeholder,a=e.config.required;return o!==r.e&&h(t,"placeholder",r.e=o),a!==r.t&&(t.required=r.t=a),r},{e:void 0,t:void 0}),c.createRenderEffect(()=>t.value=e.value===void 0?"":e.value),t}})};E(["input"]);var nr=w("<div class=echo-input-error>Invalid input type"),rr=w("<div class=echo-input-error>Unsupported input type: ");const ar=e=>c.createComponent(c.Show,{get when(){return e.config.type},keyed:!0,get fallback(){return nr()},get children(){return c.createComponent(c.Switch,{get fallback(){return(()=>{var n=rr();return n.firstChild,v(n,()=>e.config.type,null),n})()},get children(){return[c.createComponent(c.Match,{get when(){return e.config.type==="text"},get children(){return c.createComponent(tr,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}}),c.createComponent(c.Match,{get when(){return e.config.type==="textarea"},get children(){return c.createComponent(We,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}}),c.createComponent(c.Match,{get when(){return e.config.type==="radio"},get children(){return c.createComponent(Kn,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}}),c.createComponent(c.Match,{get when(){return e.config.type==="checkbox"},get children(){return c.createComponent(Hn,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}}),c.createComponent(c.Match,{get when(){return e.config.type==="select"},get children(){return c.createComponent(Jn,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}})]}})}}),or=()=>{const e=navigator.connection;return{effectiveType:e==null?void 0:e.effectiveType,downlink:e==null?void 0:e.downlink,rtt:e==null?void 0:e.rtt,saveData:e==null?void 0:e.saveData}},ir=()=>({width:window.innerWidth,height:window.innerHeight,screenWidth:window.screen.width,screenHeight:window.screen.height,language:navigator.language,languages:navigator.languages,doNotTrack:navigator.doNotTrack,cookiesEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,maxTouchPoints:navigator.maxTouchPoints,colorDepth:window.screen.colorDepth,pixelRatio:window.devicePixelRatio,availableWidth:window.screen.availWidth,availableHeight:window.screen.availHeight}),cr=()=>{const e=new URL(window.location.href),n={};return e.searchParams.forEach((t,r)=>{n[r]=t}),{url:e.href,origin:e.origin,pathname:e.pathname,searchParams:n,referrer:document.referrer}},sr=()=>({timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,localDateTime:new Date().toISOString()}),lr=()=>({userAgent:navigator.userAgent,browserInfo:ir(),networkInfo:or(),locationInfo:cr(),timeInfo:sr(),console:Et()});var dr=w("<fieldset class=echo-input-options><legend class=visually-hidden>Additional Information"),ur=w('<section class=echo-feedback data-hide-when-drawing=true role=dialog aria-label="Feedback Form"><form class=echo-feedback-content aria-label="Submit Feedback"><header class=echo-feedback-header><h3 class=echo-feedback-title id=feedback-form-title></h3><div class=echo-feedback-header-actions role=toolbar aria-label="Form controls"></div></header><fieldset class=echo-input-options><legend class=visually-hidden>Feedback Message');const hr=()=>{const e=x(),n=async o=>{o.preventDefault();const a=await Dt(),i={message:e.feedback.state.message,screenshot:a,metadata:lr(),customInputs:e.feedback.state.customInputValues};e.methods.submit(i)},t=o=>{o.stopPropagation(),e.feedback.setState({isMinimized:!0})},r=()=>{e.feedback.setState({isMinimized:!1})};return c.createEffect(()=>{e.widget.state.isOpen&&requestAnimationFrame(()=>{var o;(o=document.querySelector(".echo-input-field"))==null||o.focus()})}),(()=>{var o=ur(),a=o.firstChild,i=a.firstChild,l=i.firstChild,s=l.nextSibling,d=i.nextSibling;return d.firstChild,o.$$click=()=>e.feedback.state.isMinimized&&r(),a.addEventListener("submit",n),v(l,()=>e.widget.state.text.feedbackForm.title),v(s,c.createComponent(L,{type:"button",title:"Hide form",variant:"secondary",size:"sm",onClick:t,"aria-label":"Minimize feedback form",get children(){return c.createComponent(Zt,{size:20})}}),null),v(s,c.createComponent(L,{type:"button",title:"Close form",variant:"secondary",size:"sm",onClick:()=>e.widget.setState({isOpen:!1}),"aria-label":"Close feedback form",get children(){return c.createComponent(le,{size:20})}}),null),v(d,c.createComponent(We,{get config(){return{type:"textarea",id:"message",placeholder:e.widget.state.text.feedbackForm.placeholder,label:"Feedback Message",required:!0}},get value(){return e.feedback.state.message},onChange:u=>e.feedback.setState({message:u})}),null),v(a,c.createComponent(c.Show,{get when(){var u;return(u=e.widget.state.customInputs)==null?void 0:u.length},get children(){var u=dr();return u.firstChild,v(u,c.createComponent(c.For,{get each(){return e.widget.state.customInputs},children:f=>c.createComponent(ar,{config:f,get value(){return e.feedback.state.customInputValues[f.id]},onChange:g=>e.feedback.setState({customInputValues:{...e.feedback.state.customInputValues,[f.id]:g}})})}),null),u}}),null),v(a,c.createComponent(L,{type:"submit",variant:"primary",size:"lg",style:{width:"100%"},"aria-label":"Submit feedback",get children(){return e.widget.state.text.feedbackForm.submitButton}}),null),c.createRenderEffect(u=>{var f=e.feedback.state.isMinimized,g=e.feedback.state.isMinimized?"pointer":"default",m=!e.feedback.state.isMinimized;return f!==u.e&&h(o,"data-minimized",u.e=f),g!==u.t&&((u.t=g)!=null?o.style.setProperty("cursor",g):o.style.removeProperty("cursor")),m!==u.a&&h(o,"aria-expanded",u.a=m),u},{e:void 0,t:void 0,a:void 0}),o})()};E(["click"]);var fr=w("<style>"),gr=w("<div class=echo-launcher>"),mr=w("<dialog class=echo-overlay>"),vr=w("<div class=echo-root>");const wr=e=>c.createComponent(dt,{useShadow:!0,get mount(){return document.body},get children(){return c.createComponent(Vt,c.mergeProps(e,{get children(){return c.createComponent(xr,{get children(){return[c.createComponent(br,{get primaryColor(){return e.primaryColor}}),c.createComponent(pr,{})]}})}}))}}),br=e=>{const[n,t]=c.createSignal("");return c.createEffect(()=>{const r=`
|
4
4
|
.echo-root {
|
5
5
|
--primary-color: ${e.primaryColor};
|
6
6
|
--primary-text-color: ${kt(e.primaryColor)};
|
7
7
|
}
|
8
|
-
`;t(r)}),(()=>{var r=fr();return v(r,Yt,null),v(r,n,null),r})()},pr=()=>{const e=x();return c.createEffect(()=>{}),[(()=>{var n=gr();return v(n,c.createComponent($n,{}),null),v(n,c.createComponent(Mn,{}),null),v(n,c.createComponent(zn,{}),null),c.createRenderEffect(()=>h(n,"data-hidden",e.widget.state.isOpen)),n})(),c.createComponent(yr,{get children(){return[c.createComponent(hr,{}),c.createComponent(gn,{}),c.createComponent(jn,{})]}})]},yr=e=>{const[n,t]=c.createSignal(),r=x(),o=Bt(()=>n());return c.createEffect(()=>{n()&&r.widget.setState({dimensions:o()})}),c.createEffect(()=>{var a,i;r.widget.state.isOpen?(a=n())==null||a.showModal():(i=n())==null||i.close()}),(()=>{var a=mr();return a.addEventListener("close",()=>r.widget.setState({isOpen:!1})),R(t,a),v(a,()=>e.children),c.createRenderEffect(i=>{var l=`${o().height}px`,s=`${o().width}px`,d=!r.widget.state.isOpen;return l!==i.e&&((i.e=l)!=null?a.style.setProperty("height",l):a.style.removeProperty("height")),s!==i.t&&((i.t=s)!=null?a.style.setProperty("width",s):a.style.removeProperty("width")),d!==i.a&&h(a,"data-hidden",i.a=d),i},{e:void 0,t:void 0,a:void 0}),a})()},xr=e=>{const n=x();return Wt({onUrlChange:t=>n.methods.handlePageChange(t)}),c.onMount(()=>{Ct(),Ot(t=>{if(n.widget.state.isOpen&&t.type==="keydown")switch(t.key){case"Escape":t.stopImmediatePropagation();break}})}),c.onCleanup(()=>{St(),It()}),(()=>{var t=vr();return v(t,()=>e.children),c.createRenderEffect(()=>h(t,"data-drawing",n.drawing.state.isDrawing)),t})()},kr={welcomeMessage:{text:"Click here to leave feedback",closeAriaLabel:"Close welcome message"},feedbackForm:{title:"Send Feedback",placeholder:"What's on your mind? We'd love to hear your feedback...",screenshotAlt:"Screenshot Preview",submitButton:"Send Feedback",minimizeTitle:"Minimize",expandTitle:"Expand",closeTitle:"Close",showFormTitle:"Show Feedback Form"},notification:{successTitle:"Thank you for your feedback!",errorTitle:"Something went wrong.",errorMessage:"Failed to send feedback. Please try again.",hideTitle:"Hide notification"},drawingTooltip:{text:"Click & drag to draw"}};let
|
8
|
+
`;t(r)}),(()=>{var r=fr();return v(r,Yt,null),v(r,n,null),r})()},pr=()=>{const e=x();return c.createEffect(()=>{}),[(()=>{var n=gr();return v(n,c.createComponent($n,{}),null),v(n,c.createComponent(Mn,{}),null),v(n,c.createComponent(zn,{}),null),c.createRenderEffect(()=>h(n,"data-hidden",e.widget.state.isOpen)),n})(),c.createComponent(yr,{get children(){return[c.createComponent(hr,{}),c.createComponent(gn,{}),c.createComponent(jn,{})]}})]},yr=e=>{const[n,t]=c.createSignal(),r=x(),o=Bt(()=>n());return c.createEffect(()=>{n()&&r.widget.setState({dimensions:o()})}),c.createEffect(()=>{var a,i;r.widget.state.isOpen?(a=n())==null||a.showModal():(i=n())==null||i.close()}),(()=>{var a=mr();return a.addEventListener("close",()=>r.widget.setState({isOpen:!1})),R(t,a),v(a,()=>e.children),c.createRenderEffect(i=>{var l=`${o().height}px`,s=`${o().width}px`,d=!r.widget.state.isOpen;return l!==i.e&&((i.e=l)!=null?a.style.setProperty("height",l):a.style.removeProperty("height")),s!==i.t&&((i.t=s)!=null?a.style.setProperty("width",s):a.style.removeProperty("width")),d!==i.a&&h(a,"data-hidden",i.a=d),i},{e:void 0,t:void 0,a:void 0}),a})()},xr=e=>{const n=x();return Wt({onUrlChange:t=>n.methods.handlePageChange(t)}),c.onMount(()=>{Ct(),Ot(t=>{if(n.widget.state.isOpen&&t.type==="keydown")switch(t.key){case"Escape":t.stopImmediatePropagation();break}})}),c.onCleanup(()=>{St(),It()}),(()=>{var t=vr();return v(t,()=>e.children),c.createRenderEffect(()=>h(t,"data-drawing",n.drawing.state.isDrawing)),t})()},kr={welcomeMessage:{text:"Click here to leave feedback",closeAriaLabel:"Close welcome message"},feedbackForm:{title:"Send Feedback",placeholder:"What's on your mind? We'd love to hear your feedback...",screenshotAlt:"Screenshot Preview",submitButton:"Send Feedback",minimizeTitle:"Minimize",expandTitle:"Expand",closeTitle:"Close",showFormTitle:"Show Feedback Form"},notification:{successTitle:"Thank you for your feedback!",errorTitle:"Something went wrong.",errorMessage:"Failed to send feedback. Please try again.",hideTitle:"Hide notification"},drawingTooltip:{text:"Click & drag to draw"}};let de=null;function Cr(e){de&&(console.warn("Echo widget is already initialized. Cleaning up previous instance..."),de());try{Ft(e);const{position:n="bottom-right",primaryColor:t="#6227dc",onSubmit:r,textConfig:o={},customInputs:a=[]}=e,i=Ee(kr,o),l=document.createElement("div");l.id="echo-container",document.body.appendChild(l);const s=tt(()=>c.createComponent(wr,{position:n,primaryColor:t,textConfig:i,onSubmit:r,customInputs:a}),l),d=()=>{s(),l.remove(),de=null};return window.addEventListener("unload",d,{once:!0}),de=d,d}catch(n){throw console.error("Echo initialization failed:",n),n}}D.initEcho=Cr,Object.defineProperty(D,Symbol.toStringTag,{value:"Module"})});
|