@contember/echo 0.0.32 → 0.0.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/echo.es.js CHANGED
@@ -1,6 +1,6 @@
1
- import { sharedConfig as L, createRoot as Ue, createRenderEffect as b, untrack as Ye, getOwner as De, createEffect as ee, runWithOwner as lt, createMemo as k, createSignal as A, onCleanup as te, $PROXY as Y, $TRACK as Fe, getListener as $e, batch as ct, onMount as ye, createContext as dt, createComponent as g, useContext as ut, For as W, Show as D, mergeProps as ae, Switch as ht, Match as ne } from "solid-js";
2
- import gt from "html2canvas";
3
- const ft = [
1
+ import { sharedConfig as L, createRoot as Ue, createRenderEffect as b, untrack as Ye, getOwner as De, createEffect as ee, runWithOwner as lt, createMemo as k, createSignal as A, onCleanup as te, $PROXY as Y, $TRACK as Fe, getListener as $e, batch as ct, onMount as ye, createContext as dt, createComponent as f, useContext as ut, For as W, Show as D, mergeProps as ae, Switch as ht, Match as ne } from "solid-js";
2
+ import ft from "html2canvas";
3
+ const gt = [
4
4
  "allowfullscreen",
5
5
  "async",
6
6
  "autofocus",
@@ -34,7 +34,7 @@ const ft = [
34
34
  "isMap",
35
35
  "noModule",
36
36
  "playsInline",
37
- ...ft
37
+ ...gt
38
38
  ]), vt = /* @__PURE__ */ new Set([
39
39
  "innerHTML",
40
40
  "textContent",
@@ -123,10 +123,10 @@ function xt(e, n, t) {
123
123
  const u = c.get(n[i]);
124
124
  if (u != null)
125
125
  if (l < u && u < o) {
126
- let h = i, f = 1, m;
127
- for (; ++h < a && h < o && !((m = c.get(n[h])) == null || m !== u + f); )
128
- f++;
129
- if (f > u - l) {
126
+ let h = i, g = 1, m;
127
+ for (; ++h < a && h < o && !((m = c.get(n[h])) == null || m !== u + g); )
128
+ g++;
129
+ if (g > u - l) {
130
130
  const p = n[i];
131
131
  for (; l < u; ) e.insertBefore(t[l++], p);
132
132
  } else e.replaceChild(t[l++], n[i++]);
@@ -247,18 +247,18 @@ function Ne(e, n, t, r, a, o, i) {
247
247
  if (n === "ref")
248
248
  o || t(e);
249
249
  else if (n.slice(0, 3) === "on:") {
250
- const f = n.slice(3);
251
- r && e.removeEventListener(f, r, typeof r != "function" && r), t && e.addEventListener(f, t, typeof t != "function" && t);
250
+ const g = n.slice(3);
251
+ r && e.removeEventListener(g, r, typeof r != "function" && r), t && e.addEventListener(g, t, typeof t != "function" && t);
252
252
  } else if (n.slice(0, 10) === "oncapture:") {
253
- const f = n.slice(10);
254
- r && e.removeEventListener(f, r, !0), t && e.addEventListener(f, t, !0);
253
+ const g = n.slice(10);
254
+ r && e.removeEventListener(g, r, !0), t && e.addEventListener(g, t, !0);
255
255
  } else if (n.slice(0, 2) === "on") {
256
- const f = n.slice(2).toLowerCase(), m = yt.has(f);
256
+ const g = n.slice(2).toLowerCase(), m = yt.has(g);
257
257
  if (!m && r) {
258
258
  const p = Array.isArray(r) ? r[0] : r;
259
- e.removeEventListener(f, p);
259
+ e.removeEventListener(g, p);
260
260
  }
261
- (m || t) && (U(e, f, t, m), m && T([f]));
261
+ (m || t) && (U(e, g, t, m), m && T([g]));
262
262
  } else if (n.slice(0, 5) === "attr:")
263
263
  d(e, n.slice(5), t);
264
264
  else if (n.slice(0, 5) === "bool:")
@@ -794,7 +794,7 @@ Location: ${t}:${r}:${a}`,
794
794
  }, Yt = () => [...N], Rt = () => {
795
795
  var e;
796
796
  return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || ((e = window.matchMedia) == null ? void 0 : e.call(window, "(max-width: 768px)").matches);
797
- }, ge = (e, { useClientCoords: n = !1 } = {}) => {
797
+ }, fe = (e, { useClientCoords: n = !1 } = {}) => {
798
798
  const r = typeof TouchEvent < "u" && e instanceof TouchEvent ? e.touches[0] : null;
799
799
  return {
800
800
  x: r ? n ? r.clientX : r.pageX : n ? e.clientX : e.pageX,
@@ -856,7 +856,7 @@ const re = /* @__PURE__ */ new WeakMap(), Gt = (e, n, t, r) => {
856
856
  try {
857
857
  const n = document.createElement("style");
858
858
  document.head.appendChild(n), (e = n.sheet) == null || e.insertRule("body > div:last-child img { display: inline-block; }");
859
- const t = await gt(document.body, {
859
+ const t = await ft(document.body, {
860
860
  logging: !1,
861
861
  useCORS: !0,
862
862
  scale: window.devicePixelRatio,
@@ -906,8 +906,8 @@ const re = /* @__PURE__ */ new WeakMap(), Gt = (e, n, t, r) => {
906
906
  cursor: _e("rectangle", e.primaryColor)
907
907
  }), o = (c, u = !1) => {
908
908
  if (c.selectedTool || c.selectedColor) {
909
- const h = c.selectedTool || r.selectedTool, f = c.selectedColor || r.selectedColor;
910
- c.cursor = _e(h, f);
909
+ const h = c.selectedTool || r.selectedTool, g = c.selectedColor || r.selectedColor;
910
+ c.cursor = _e(h, g);
911
911
  }
912
912
  a(c), t == null || t(c, u);
913
913
  }, i = {
@@ -943,13 +943,13 @@ const re = /* @__PURE__ */ new WeakMap(), Gt = (e, n, t, r) => {
943
943
  if (!h.classList.contains("echo-drawing-layer-mask") && !h.classList.contains("echo-shape"))
944
944
  return;
945
945
  }
946
- const u = ge(c);
946
+ const u = fe(c);
947
947
  if (c.target instanceof SVGElement && c.target.classList.contains("echo-shape")) {
948
948
  const h = c.target.dataset.shapeId;
949
949
  if (h && r.selectedShapeId === h) {
950
- const f = r.shapes.find((m) => m.id === h);
951
- if (f) {
952
- i.startDrag(u), i.updateDragOffset(f, u);
950
+ const g = r.shapes.find((m) => m.id === h);
951
+ if (g) {
952
+ i.startDrag(u), i.updateDragOffset(g, u);
953
953
  return;
954
954
  }
955
955
  }
@@ -957,7 +957,7 @@ const re = /* @__PURE__ */ new WeakMap(), Gt = (e, n, t, r) => {
957
957
  i.setInitialClick(u);
958
958
  },
959
959
  handleMove: (c) => {
960
- const u = ge(c, { useClientCoords: !0 }), h = ge(c);
960
+ const u = fe(c, { useClientCoords: !0 }), h = fe(c);
961
961
  if (o({ mousePosition: u }), r.isDragging && r.selectedShapeId && r.dragStartPos && r.shapes.find((m) => m.id === r.selectedShapeId)) {
962
962
  const m = h.x - r.dragStartPos.x, p = h.y - r.dragStartPos.y, E = r.shapes.map((S) => S.id === r.selectedShapeId ? {
963
963
  ...S,
@@ -981,10 +981,10 @@ const re = /* @__PURE__ */ new WeakMap(), Gt = (e, n, t, r) => {
981
981
  return;
982
982
  }
983
983
  if (r.initialClickPos && !r.isDrawing) {
984
- const u = ge(c);
984
+ const u = fe(c);
985
985
  if (Ve(r.initialClickPos, u) < Be && c.target instanceof SVGElement && c.target.classList.contains("echo-shape")) {
986
- const f = c.target.dataset.shapeId;
987
- f && o({ selectedShapeId: f });
986
+ const g = c.target.dataset.shapeId;
987
+ g && o({ selectedShapeId: g });
988
988
  }
989
989
  }
990
990
  i.setInitialClick(null), i.finishDrawing();
@@ -1030,7 +1030,7 @@ const re = /* @__PURE__ */ new WeakMap(), Gt = (e, n, t, r) => {
1030
1030
  }, an = (e, n, t, r) => {
1031
1031
  var h;
1032
1032
  const a = (r == null ? void 0 : r.reduce(
1033
- (f, m) => (f[m.id] = m.defaultValue ?? (m.type === "checkbox" ? [] : ""), f),
1033
+ (g, m) => (g[m.id] = m.defaultValue ?? (m.type === "checkbox" ? [] : ""), g),
1034
1034
  {}
1035
1035
  )) || {}, o = Te(n), i = (o == null ? void 0 : o.feedback.customInputValues) || {}, l = {
1036
1036
  ...a,
@@ -1045,9 +1045,9 @@ const re = /* @__PURE__ */ new WeakMap(), Gt = (e, n, t, r) => {
1045
1045
  });
1046
1046
  return {
1047
1047
  state: s,
1048
- setState: (f, m = !1) => {
1049
- const p = "isCapturing" in f || "isMinimized" in f || m;
1050
- !p && !s.hasUserInteracted && c({ hasUserInteracted: !0 }), c(f), (s.hasUserInteracted || p) && (t == null || t(f, m));
1048
+ setState: (g, m = !1) => {
1049
+ const p = "isCapturing" in g || "isMinimized" in g || m;
1050
+ !p && !s.hasUserInteracted && c({ hasUserInteracted: !0 }), c(g), (s.hasUserInteracted || p) && (t == null || t(g, m));
1051
1051
  }
1052
1052
  };
1053
1053
  }, sn = (e, n) => {
@@ -1177,7 +1177,7 @@ const re = /* @__PURE__ */ new WeakMap(), Gt = (e, n, t, r) => {
1177
1177
  position: e.position,
1178
1178
  customInputs: e.customInputs
1179
1179
  });
1180
- return g(at.Provider, {
1180
+ return f(at.Provider, {
1181
1181
  value: n,
1182
1182
  get children() {
1183
1183
  return e.children;
@@ -1229,7 +1229,7 @@ const re = /* @__PURE__ */ new WeakMap(), Gt = (e, n, t, r) => {
1229
1229
  callback: t
1230
1230
  });
1231
1231
  }, hn = `*,*:before,*:after{box-sizing:border-box}.echo-root{position:absolute;top:0;left:0;z-index:var(--z-root);isolation:isolate;pointer-events:none;--z-root: 999999;--z-launcher: 2;--z-overlay: 1;--z-drawing-toolbar: 3;--z-drawing-tooltip: 3;--z-shape-actions: 3;--z-notification: 2;--z-welcome-message: 2;--z-widget-button: 2;--z-feedback-form: 4;--primary-color: #000;--primary-text-color: #fff;--error-color: #f44336;--success-color: var(--primary-color);--text-dark: #1a1a1a;--text-medium: #333;--text-light: #666;--text-lighter: #999;--border-color: rgba(0, 0, 0, .1);--border-color-light: rgba(0, 0, 0, .05);--border-color-medium: rgba(0, 0, 0, .08);--background-color: #fff;--primary-color-lighter: color-mix(in srgb, var(--primary-color) 100%, white 40%);--primary-color-lightest: color-mix(in srgb, var(--primary-color) 7%, white 100%);--hover-color: color-mix(in srgb, var(--primary-color) 80%, #fff);--shadow-color-dark: rgba(0, 0, 0, .6);--shadow-color-light: rgba(255, 255, 255, .1);--shadow-color-medium: rgba(0, 0, 0, .2);--shadow-sm: 0 1px 3px;--shadow-md: 0 4px 10px;--shadow-lg: 0 10px 20px;--shadow-black-sm: var(--shadow-sm) rgba(0, 0, 0, .5);--shadow-black-md: var(--shadow-md) rgba(0, 0, 0, .5);--shadow-black-lg: var(--shadow-lg) rgba(0, 0, 0, .5);--shadow-black-lightened-sm: var(--shadow-sm) var(--shadow-color-medium);--shadow-black-lightened-md: var(--shadow-md) var(--shadow-color-medium);--shadow-black-lightened-lg: var(--shadow-lg) var(--shadow-color-medium);--shadow-primary-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color) 60%, transparent 80%);--shadow-primary-md: var(--shadow-md) color-mix(in srgb, var(--primary-color) 50%, transparent 80%);--shadow-primary-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color) 40%, transparent 80%);--shadow-primary-lighter-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color-lighter) 70%, transparent 80%);--shadow-primary-lighter-md: var(--shadow-md) color-mix(in srgb, var(--primary-color-lighter) 60%, transparent 80%);--shadow-primary-lighter-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color-lighter) 50%, transparent 80%);--shadow-primary-lightest-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color-lightest) 70%, transparent 80%);--shadow-primary-lightest-md: var(--shadow-md) color-mix(in srgb, var(--primary-color-lightest) 60%, transparent 80%);--shadow-primary-lightest-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color-lightest) 50%, transparent 80%);--shadow-combined-sm: var(--shadow-primary-sm), var(--shadow-black-lightened-sm);--shadow-combined-md: var(--shadow-primary-md), var(--shadow-black-lightened-md);--shadow-combined-lg: var(--shadow-primary-lg), var(--shadow-black-lightened-lg);--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 20px;--spacing-2xl: 24px;--spacing-3xl: 32px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--font-xs: .8125rem;--font-sm: .875rem;--font-base: .9375rem;--font-md: 1rem;--font-lg: 1.125rem;--duration-fast: .1s;--duration-base: .2s;--duration-slow: .3s;--duration-slower: .4s;--duration-slowest: .6s;--ease-default: ease;--ease-in-out: ease-in-out;--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.16, 1, .3, 1)}.echo-stored-feedback{position:absolute;display:flex;flex-direction:column;bottom:calc(100% + var(--spacing-lg));right:0;width:320px;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-black-lightened-lg);animation:slideUpFade var(--duration-base) var(--ease-smooth);z-index:calc(var(--z-widget-button) + 1);transform-origin:bottom right;transition:all var(--duration-base) var(--ease-smooth)}.echo-stored-feedback-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg)}.echo-stored-feedback-header h3{margin:0;font-size:var(--font-md);font-weight:600}.echo-stored-feedback-list{max-height:400px;overflow-y:auto;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-stored-feedback-item{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--border-color-light);transition:all var(--duration-base) var(--ease-smooth);background:#fff;position:relative}.echo-stored-feedback-item:hover{background:var(--primary-color-lightest)}.echo-stored-feedback-item-current{background:var(--primary-color-lightest);padding-left:calc(var(--spacing-lg) - 3px)}.echo-stored-feedback-item-current:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--primary-color);border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.echo-stored-feedback-item:last-child{border-bottom:none;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-stored-feedback-item:last-child.echo-stored-feedback-item-current:before{border-bottom-left-radius:var(--radius-lg)}.echo-stored-feedback-content{flex:1;min-width:0;margin-right:var(--spacing-md)}.echo-stored-feedback-path{font-size:var(--font-sm);font-weight:500;color:var(--text-medium);margin-bottom:var(--spacing-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.echo-stored-feedback-preview{font-size:var(--font-xs);color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.echo-stored-feedback-actions{display:flex;align-items:center;gap:var(--spacing-sm)}.echo-stored-feedback-link{color:var(--text-light)}.echo-stored-feedback-link:hover{color:var(--primary-color)}.echo-stored-feedback-delete{color:var(--text-light);font-size:var(--font-xs);padding:var(--spacing-xs) var(--spacing-md)}.echo-stored-feedback-delete:hover{color:var(--error-color);background:color-mix(in srgb,var(--error-color) 10%,transparent)}.echo-stored-feedback-empty{padding:var(--spacing-3xl) var(--spacing-lg);text-align:center;color:var(--text-light);font-size:var(--font-sm);border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-launcher{position:fixed;z-index:var(--z-launcher);bottom:var(--spacing-xl);right:var(--spacing-xl);pointer-events:none}.echo-overlay{position:absolute;top:0;left:0;margin:0;padding:0;max-width:none;max-height:none;border:3px solid var(--primary-color);background:transparent}.echo-overlay::backdrop{background:transparent}[data-hidden=true],[data-hidden=false]{transition:opacity var(--duration-slow) var(--ease-in-out),visibility var(--duration-slow) var(--ease-in-out)}[data-hidden=true]{opacity:0;visibility:hidden;pointer-events:none}[data-hidden=false]{opacity:1;visibility:visible;pointer-events:auto;user-select:none;-webkit-user-select:none}.echo-launcher-button{z-index:var(--z-widget-button);position:relative;display:flex;align-items:center;justify-content:center;cursor:pointer;background:radial-gradient(circle at 40% 40%,var(--primary-color) 0%,var(--primary-color-lighter) 65%,var(--primary-color-lighter) 100%);border:none;border-radius:var(--radius-full);width:48px;height:48px;box-shadow:var(--shadow-black-md);transition:all var(--duration-slow) var(--ease-default),transform var(--duration-slower) var(--ease-smooth),opacity var(--duration-slow) var(--ease-in-out);will-change:transform}.echo-launcher-button:hover{box-shadow:var(--shadow-black-lg);transform:translateY(-2px)}.echo-launcher-button:active{transform:scale(.95)}.echo-launcher-button-count{position:absolute;top:calc(-1 * var(--spacing-xs));left:calc(-1 * var(--spacing-xs));background:var(--primary-color-lightest);color:var(--primary-color-lighter);border-radius:var(--radius-md);min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-black-sm);padding:0 var(--spacing-xs);font-weight:600;pointer-events:auto;cursor:pointer;transform-origin:center center;animation:popIn var(--duration-slow) var(--ease-bounce);transition:transform var(--duration-base) var(--ease-default)}.echo-launcher-button-count:hover{transform:scale(1.1)}.echo-feedback{position:fixed;bottom:var(--spacing-xl);right:var(--spacing-xl);width:min(calc(100vw - var(--spacing-xl) * 2),24rem);max-height:calc(100vh - var(--spacing-xl) * 2);z-index:var(--z-feedback-form);box-shadow:var(--shadow-black-lightened-lg);display:flex;flex-direction:column;gap:var(--spacing-lg);background:var(--background-color);border-radius:var(--radius-lg);overflow-y:auto;will-change:transform;padding:0 var(--spacing-lg)}.echo-feedback[data-minimized=true]{transition:transform .4s var(--ease-default),box-shadow .4s var(--ease-default);transform:translate(calc(100% - 48px),calc(100% - 48px));box-shadow:0 8px 16px #0003}.echo-feedback[data-minimized=true]:hover{cursor:pointer;transform:translate(calc(100% - 48px),calc(100% - 48px)) rotate(-2deg) scale(1.1);box-shadow:0 12px 24px #00000040}.echo-feedback[data-minimized=false]{transition:transform .4s var(--ease-smooth),box-shadow .4s var(--ease-smooth);transform:translate(0)}.echo-feedback[style*=transition]{pointer-events:none}.echo-feedback-content{display:flex;flex-direction:column;gap:var(--spacing-lg)}.echo-feedback-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg) 0;background-color:var(--background-color);position:sticky;top:0;z-index:1}.echo-feedback-footer{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg) 0;background-color:var(--background-color);position:sticky;bottom:0;z-index:1}.echo-feedback-title{font-size:var(--font-lg);font-weight:600;color:var(--text-dark);margin:0}.echo-feedback-header-actions{display:flex;gap:var(--spacing-xs);margin:calc(-1 * var(--spacing-sm)) calc(-1 * var(--spacing-sm)) calc(-1 * var(--spacing-sm)) 0}.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:disabled{opacity:.5}.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-wrapper{display:flex;flex-direction:column;gap:var(--spacing-xl);border:none;margin:0;padding:0}.echo-input-options{display:flex;flex-direction:column;gap:var(--spacing-sm);border:none;margin:0;padding:0}.echo-input-option{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:var(--spacing-xs);border-radius:var(--radius-sm);transition:all var(--duration-base) var(--ease-default)}.echo-input-option:hover{background:var(--primary-color-lightest)}.echo-input-option input[type=radio],.echo-input-option input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;width:18px;height:18px;border:1px solid var(--border-color);background-color:#fff;display:grid;place-content:center;cursor:pointer;transition:all var(--duration-base) var(--ease-default)}.echo-input-option input[type=radio]{border-radius:50%}.echo-input-option input[type=radio]:before{content:"";width:10px;height:10px;border-radius:50%;transform:scale(0);transition:transform var(--duration-base) var(--ease-default);background-color:var(--primary-color)}.echo-input-option input[type=radio]:checked:before{transform:scale(1)}.echo-input-option input[type=checkbox]{border-radius:var(--radius-sm)}.echo-input-option input[type=checkbox]:before{content:"";width:12px;height:12px;transform:scale(0);transition:all var(--duration-base) var(--ease-default);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");background-size:contain;background-repeat:no-repeat;background-position:center}.echo-input-option input[type=checkbox]:checked{background-color:var(--primary-color-lighter);border-color:var(--primary-color-lighter)}.echo-input-option input[type=checkbox]:checked:before{transform:scale(1)}.echo-input-option input[type=radio]:hover,.echo-input-option input[type=checkbox]:hover{border-color:var(--primary-color-lighter)}.echo-input-option input[type=radio]:focus,.echo-input-option input[type=checkbox]:focus{outline:none;border-color:var(--primary-color-lighter);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-input-option input[type=radio]:checked,.echo-input-option input[type=checkbox]:checked{border-color:var(--primary-color-lighter)}.echo-input-option span{font-size:var(--font-sm);color:var(--text-medium);-webkit-user-select:none;user-select:none}.echo-select{position:relative;width:100%}.echo-select-trigger{width:100%;padding:.5rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:#fff;color:var(--text-medium);font-size:var(--font-sm);transition:all var(--duration-base) var(--ease-default);cursor:pointer;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:.5rem;outline:none}.echo-select-trigger[data-placeholder=true]{color:var(--text-lighter)}.echo-select-trigger:hover{border-color:var(--border-color-medium)}.echo-select-trigger:focus,.echo-select-trigger[data-open=true]{border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-select-arrow{flex-shrink:0;transition:transform var(--duration-base) var(--ease-default)}.echo-select-trigger[data-open=true] .echo-select-arrow{transform:rotate(180deg)}.echo-select-dropdown{position:absolute;top:calc(100% + .25rem);left:0;right:0;background:#fff;border:1px solid var(--border-color-medium);border-radius:var(--radius-md);box-shadow:var(--shadow-black-lightened-md);max-height:15rem;overflow-y:auto;z-index:10;animation:slideDownFade var(--duration-base) var(--ease-default);padding:var(--spacing-xs)}.echo-select-option{width:100%;padding:.5rem .75rem;background:none;border:none;text-align:left;color:var(--text-medium);font-size:var(--font-sm);cursor:pointer;transition:all var(--duration-base) var(--ease-default);outline:none;border-radius:var(--radius-sm)}.echo-select-option:hover{background:var(--primary-color-lightest)}.echo-select-option:focus{background:var(--primary-color-lightest);box-shadow:0 0 0 1px var(--primary-color) inset}.echo-select-option[data-selected=true]{background:var(--primary-color-lightest);color:var(--primary-color);font-weight:500}select.echo-input-field{display:none}.visually-hidden{position:absolute;left:50%;bottom:0;transform:translate(-50%);width:1px;height:1px;padding:0;margin:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}`;
1232
- var gn = /* @__PURE__ */ w('<div class=echo-color-selector role=group aria-label="Color Selection"><button class=echo-drawing-toolbar-button title="Current Color"></button><div class=echo-color-swatch-wrapper role=listbox aria-label="Available Colors"><div class=echo-color-swatch>'), fn = /* @__PURE__ */ w("<button class=echo-color-swatch-button role=option>");
1232
+ var fn = /* @__PURE__ */ w('<div class=echo-color-selector role=group aria-label="Color Selection"><button class=echo-drawing-toolbar-button title="Current Color"></button><div class=echo-color-swatch-wrapper role=listbox aria-label="Available Colors"><div class=echo-color-swatch>'), gn = /* @__PURE__ */ w("<button class=echo-color-swatch-button role=option>");
1233
1233
  const mn = [
1234
1234
  "#ff6b6b",
1235
1235
  // Soft Red
@@ -1259,13 +1259,13 @@ const mn = [
1259
1259
  }, Ce = (e) => vn[e] || "Primary", bn = () => {
1260
1260
  const e = $();
1261
1261
  return (() => {
1262
- var n = gn(), t = n.firstChild, r = t.nextSibling, a = r.firstChild;
1263
- return d(t, "aria-expanded", !1), v(a, g(W, {
1262
+ var n = fn(), t = n.firstChild, r = t.nextSibling, a = r.firstChild;
1263
+ return d(t, "aria-expanded", !1), v(a, f(W, {
1264
1264
  get each() {
1265
1265
  return [e.widget.state.primaryColor, ...mn];
1266
1266
  },
1267
1267
  children: (o) => (() => {
1268
- var i = fn();
1268
+ var i = gn();
1269
1269
  return i.$$click = () => e.drawing.setState({
1270
1270
  selectedColor: o
1271
1271
  }), o != null ? i.style.setProperty("background-color", o) : i.style.removeProperty("background-color"), b((l) => {
@@ -1422,7 +1422,7 @@ const Dn = {
1422
1422
  const e = $(), n = Object.values(B);
1423
1423
  return (() => {
1424
1424
  var t = Mn(), r = t.firstChild;
1425
- return v(t, g(W, {
1425
+ return v(t, f(W, {
1426
1426
  each: n,
1427
1427
  children: (a) => {
1428
1428
  const o = Dn[a.id];
@@ -1430,7 +1430,7 @@ const Dn = {
1430
1430
  var i = An();
1431
1431
  return i.$$click = () => e.drawing.setState({
1432
1432
  selectedTool: a.id
1433
- }), v(i, g(o, {
1433
+ }), v(i, f(o, {
1434
1434
  class: "echo-drawing-toolbar-icon",
1435
1435
  "aria-hidden": "true"
1436
1436
  })), b((l) => {
@@ -1444,9 +1444,9 @@ const Dn = {
1444
1444
  }), i;
1445
1445
  })();
1446
1446
  }
1447
- }), r), v(t, g(bn, {}), r), r.$$click = () => e.drawing.setState({
1447
+ }), r), v(t, f(bn, {}), r), r.$$click = () => e.drawing.setState({
1448
1448
  shapes: []
1449
- }, !0), v(r, g(it, {
1449
+ }, !0), v(r, f(it, {
1450
1450
  class: "echo-drawing-toolbar-icon",
1451
1451
  "aria-hidden": "true"
1452
1452
  })), t;
@@ -1456,7 +1456,7 @@ T(["click"]);
1456
1456
  var Ln = /* @__PURE__ */ w("<div class=echo-drawing-tooltip data-hide-when-drawing=true>");
1457
1457
  const jn = () => {
1458
1458
  const e = $(), n = k(() => e.drawing.state.showTooltip && e.drawing.state.mousePosition.y && e.drawing.state.mousePosition.x && e.widget.state.isOpen && !Rt());
1459
- return g(D, {
1459
+ return f(D, {
1460
1460
  get when() {
1461
1461
  return n();
1462
1462
  },
@@ -1554,12 +1554,12 @@ const Hn = () => {
1554
1554
  r(p), e.widget.setState({
1555
1555
  pagesCount: p.length
1556
1556
  });
1557
- }, f = (m) => {
1557
+ }, g = (m) => {
1558
1558
  if (m === "/") return "/";
1559
1559
  const p = m.split("/");
1560
1560
  return p.length <= 4 ? m : `/${p[1]}/.../${p[p.length - 1]}`;
1561
1561
  };
1562
- return g(D, {
1562
+ return f(D, {
1563
1563
  get when() {
1564
1564
  return e.widget.state.isStoredFeedbackOpen;
1565
1565
  },
@@ -1567,18 +1567,18 @@ const Hn = () => {
1567
1567
  var m = _n(), p = m.firstChild;
1568
1568
  p.firstChild;
1569
1569
  var E = p.nextSibling, S = n;
1570
- return typeof S == "function" ? V(S, m) : n = m, v(p, g(_, {
1570
+ return typeof S == "function" ? V(S, m) : n = m, v(p, f(_, {
1571
1571
  variant: "secondary",
1572
1572
  size: "sm",
1573
1573
  onClick: () => e.widget.setState({
1574
1574
  isStoredFeedbackOpen: !1
1575
1575
  }),
1576
1576
  get children() {
1577
- return g(xe, {
1577
+ return f(xe, {
1578
1578
  size: 20
1579
1579
  });
1580
1580
  }
1581
- }), null), v(E, g(W, {
1581
+ }), null), v(E, f(W, {
1582
1582
  get each() {
1583
1583
  return t();
1584
1584
  },
@@ -1586,18 +1586,18 @@ const Hn = () => {
1586
1586
  const y = k(() => C.path === a());
1587
1587
  return (() => {
1588
1588
  var P = Wn(), z = P.firstChild, x = z.firstChild, H = x.nextSibling, q = z.nextSibling;
1589
- return v(x, () => f(C.path)), v(H, () => C.state.feedback.message), v(q, (() => {
1589
+ return v(x, () => g(C.path)), v(H, () => C.state.feedback.message), v(q, (() => {
1590
1590
  var I = k(() => !y());
1591
- return () => I() && g(_, {
1591
+ return () => I() && f(_, {
1592
1592
  class: "echo-stored-feedback-link",
1593
1593
  variant: "secondary",
1594
1594
  size: "sm",
1595
1595
  onClick: () => u(C.path, C.state.latestQuery),
1596
1596
  get children() {
1597
- return g(Vn, {});
1597
+ return f(Vn, {});
1598
1598
  }
1599
1599
  });
1600
- })(), null), v(q, g(_, {
1600
+ })(), null), v(q, f(_, {
1601
1601
  class: "echo-stored-feedback-delete",
1602
1602
  variant: "secondary",
1603
1603
  size: "sm",
@@ -1612,7 +1612,7 @@ const Hn = () => {
1612
1612
  }), P;
1613
1613
  })();
1614
1614
  }
1615
- }), null), v(E, g(D, {
1615
+ }), null), v(E, f(D, {
1616
1616
  get when() {
1617
1617
  return t().length === 0;
1618
1618
  },
@@ -1653,7 +1653,7 @@ const Rn = () => {
1653
1653
  };
1654
1654
  return [(() => {
1655
1655
  var c = Un();
1656
- return c.addEventListener("pointerleave", i), c.addEventListener("pointerenter", o), c.$$click = l, v(c, g(xn, {
1656
+ return c.addEventListener("pointerleave", i), c.addEventListener("pointerenter", o), c.$$click = l, v(c, f(xn, {
1657
1657
  stroke: "white",
1658
1658
  fill: "#ffffff",
1659
1659
  "aria-hidden": "true"
@@ -1664,14 +1664,14 @@ const Rn = () => {
1664
1664
  return h.$$click = s, v(h, () => e.widget.state.pagesCount), b(() => d(h, "aria-label", `View ${e.widget.state.pagesCount} stored feedback items`)), h;
1665
1665
  })();
1666
1666
  })(), null), b((u) => {
1667
- var h = e.widget.state.isOpen, f = `translateX(${n() ? "45px" : "0"})`, m = e.widget.state.isOpen;
1668
- return h !== u.e && d(c, "data-hidden", u.e = h), f !== u.t && ((u.t = f) != null ? c.style.setProperty("transform", f) : c.style.removeProperty("transform")), m !== u.a && d(c, "aria-expanded", u.a = m), u;
1667
+ var h = e.widget.state.isOpen, g = `translateX(${n() ? "45px" : "0"})`, m = e.widget.state.isOpen;
1668
+ return h !== u.e && d(c, "data-hidden", u.e = h), g !== u.t && ((u.t = g) != null ? c.style.setProperty("transform", g) : c.style.removeProperty("transform")), m !== u.a && d(c, "aria-expanded", u.a = m), u;
1669
1669
  }, {
1670
1670
  e: void 0,
1671
1671
  t: void 0,
1672
1672
  a: void 0
1673
1673
  }), c;
1674
- })(), g(Hn, {})];
1674
+ })(), f(Hn, {})];
1675
1675
  };
1676
1676
  T(["click"]);
1677
1677
  var Kn = /* @__PURE__ */ w("<div class=echo-notification><div class=echo-notification-icon></div><div class=echo-notification-content><div class=echo-notification-title></div><div class=echo-notification-message>");
@@ -1695,7 +1695,7 @@ const Gn = () => {
1695
1695
  };
1696
1696
  return (() => {
1697
1697
  var r = Kn(), a = r.firstChild, o = a.nextSibling, i = o.firstChild, l = i.nextSibling;
1698
- return v(r, g(_, {
1698
+ return v(r, f(_, {
1699
1699
  class: "echo-notification-hide",
1700
1700
  variant: "secondary",
1701
1701
  size: "sm",
@@ -1704,17 +1704,17 @@ const Gn = () => {
1704
1704
  return e.widget.state.text.notification.hideTitle;
1705
1705
  },
1706
1706
  get children() {
1707
- return g(xe, {
1707
+ return f(xe, {
1708
1708
  size: 20
1709
1709
  });
1710
1710
  }
1711
1711
  }), a), v(a, (() => {
1712
1712
  var s = k(() => e.widget.state.notification.type === "success");
1713
- return () => s() ? g(zn, {
1713
+ return () => s() ? f(zn, {
1714
1714
  size: 32
1715
1715
  }) : (() => {
1716
1716
  var c = k(() => e.widget.state.notification.type === "error");
1717
- return () => c() ? g(In, {
1717
+ return () => c() ? f(In, {
1718
1718
  size: 32
1719
1719
  }) : null;
1720
1720
  })();
@@ -1771,28 +1771,28 @@ const Jn = () => {
1771
1771
  };
1772
1772
  else
1773
1773
  return null;
1774
- const h = 8, f = t();
1774
+ const h = 8, g = t();
1775
1775
  return {
1776
- x: Math.max(c.width / 2 + h, Math.min(window.innerWidth - c.width / 2 - h, u.x - f.x)),
1777
- y: Math.max(c.height + h, Math.min(window.innerHeight - h, u.y - f.y))
1776
+ x: Math.max(c.width / 2 + h, Math.min(window.innerWidth - c.width / 2 - h, u.x - g.x)),
1777
+ y: Math.max(c.height + h, Math.min(window.innerHeight - h, u.y - g.y))
1778
1778
  };
1779
1779
  });
1780
1780
  return (() => {
1781
1781
  var s = Xn(), c = n;
1782
- return typeof c == "function" ? V(c, s) : n = s, s.style.setProperty("top", "0"), s.style.setProperty("left", "0"), v(s, g(_, {
1782
+ return typeof c == "function" ? V(c, s) : n = s, s.style.setProperty("top", "0"), s.style.setProperty("left", "0"), v(s, f(_, {
1783
1783
  onClick: o,
1784
1784
  size: "sm",
1785
1785
  variant: "secondary",
1786
1786
  title: "Delete shape",
1787
1787
  get children() {
1788
- return g(it, {
1788
+ return f(it, {
1789
1789
  size: 20
1790
1790
  });
1791
1791
  }
1792
1792
  })), b((u) => {
1793
1793
  var m, p;
1794
- var h = !l(), f = `translate(calc(${(m = l()) == null ? void 0 : m.x}px - 50%), calc(${(p = l()) == null ? void 0 : p.y}px - 125%))`;
1795
- return h !== u.e && (s.hidden = u.e = h), f !== u.t && ((u.t = f) != null ? s.style.setProperty("transform", f) : s.style.removeProperty("transform")), u;
1794
+ var h = !l(), g = `translate(calc(${(m = l()) == null ? void 0 : m.x}px - 50%), calc(${(p = l()) == null ? void 0 : p.y}px - 125%))`;
1795
+ return h !== u.e && (s.hidden = u.e = h), g !== u.t && ((u.t = g) != null ? s.style.setProperty("transform", g) : s.style.removeProperty("transform")), u;
1796
1796
  }, {
1797
1797
  e: void 0,
1798
1798
  t: void 0
@@ -1814,7 +1814,7 @@ const Qn = () => {
1814
1814
  };
1815
1815
  return n ? null : (() => {
1816
1816
  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, g(xe, {
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(xe, {
1818
1818
  size: 16,
1819
1819
  strokeWidth: 3
1820
1820
  })), b((l) => {
@@ -1830,23 +1830,23 @@ T(["click", "keydown"]);
1830
1830
  var er = /* @__PURE__ */ w("<svg><rect class=echo-shape fill=transparent vector-effect=non-scaling-stroke role=img></svg>", !1, !0), tr = /* @__PURE__ */ w("<svg><path class=echo-shape fill=none vector-effect=non-scaling-stroke stroke-linecap=round role=img></svg>", !1, !0);
1831
1831
  const He = (e) => {
1832
1832
  const n = k(() => e.id === e.selectedShapeId);
1833
- return [g(D, {
1833
+ return [f(D, {
1834
1834
  get when() {
1835
1835
  return e.type === "rectangle";
1836
1836
  },
1837
1837
  get children() {
1838
- return g(nr, ae(e, {
1838
+ return f(nr, ae(e, {
1839
1839
  get isSelected() {
1840
1840
  return n();
1841
1841
  }
1842
1842
  }));
1843
1843
  }
1844
- }), g(D, {
1844
+ }), f(D, {
1845
1845
  get when() {
1846
1846
  return e.type === "path";
1847
1847
  },
1848
1848
  get children() {
1849
- return g(rr, ae(e, {
1849
+ return f(rr, ae(e, {
1850
1850
  get isSelected() {
1851
1851
  return n();
1852
1852
  }
@@ -1855,7 +1855,7 @@ const He = (e) => {
1855
1855
  })];
1856
1856
  }, nr = (e) => {
1857
1857
  const n = k(() => ot(e.points));
1858
- return g(D, {
1858
+ return f(D, {
1859
1859
  get when() {
1860
1860
  return n();
1861
1861
  },
@@ -1868,8 +1868,8 @@ const He = (e) => {
1868
1868
  var r;
1869
1869
  return (r = e.onShapeClick) == null ? void 0 : r.call(e, e.id);
1870
1870
  }, b((r) => {
1871
- var a = e.id, o = e.isSelected, i = n().x, l = n().y, s = n().width, c = n().height, u = e.color, h = B.rectangle.strokeWidth, f = e.isSelected ? B.rectangle.opacity.selected : B.rectangle.opacity.default, m = e.isSelected ? "5,5" : "none", p = e.isSelected ? "move" : "pointer", E = `Rectangle shape ${e.isSelected ? "(selected)" : ""}`, S = e.onShapeClick ? 0 : -1;
1872
- return a !== r.e && d(t, "data-shape-id", r.e = a), o !== r.t && d(t, "data-selected", r.t = o), i !== r.a && d(t, "x", r.a = i), l !== r.o && d(t, "y", r.o = l), s !== r.i && d(t, "width", r.i = s), c !== r.n && d(t, "height", r.n = c), u !== r.s && d(t, "stroke", r.s = u), h !== r.h && d(t, "stroke-width", r.h = h), f !== r.r && d(t, "opacity", r.r = f), m !== r.d && d(t, "stroke-dasharray", r.d = m), p !== r.l && d(t, "cursor", r.l = p), E !== r.u && d(t, "aria-label", r.u = E), S !== r.c && d(t, "tabindex", r.c = S), r;
1871
+ var a = e.id, o = e.isSelected, i = n().x, l = n().y, s = n().width, c = n().height, u = e.color, h = B.rectangle.strokeWidth, g = e.isSelected ? B.rectangle.opacity.selected : B.rectangle.opacity.default, m = e.isSelected ? "5,5" : "none", p = e.isSelected ? "move" : "pointer", E = `Rectangle shape ${e.isSelected ? "(selected)" : ""}`, S = e.onShapeClick ? 0 : -1;
1872
+ return a !== r.e && d(t, "data-shape-id", r.e = a), o !== r.t && d(t, "data-selected", r.t = o), i !== r.a && d(t, "x", r.a = i), l !== r.o && d(t, "y", r.o = l), s !== r.i && d(t, "width", r.i = s), c !== r.n && d(t, "height", r.n = c), u !== r.s && d(t, "stroke", r.s = u), h !== r.h && d(t, "stroke-width", r.h = h), g !== r.r && d(t, "opacity", r.r = g), m !== r.d && d(t, "stroke-dasharray", r.d = m), p !== r.l && d(t, "cursor", r.l = p), E !== r.u && d(t, "aria-label", r.u = E), S !== r.c && d(t, "tabindex", r.c = S), r;
1873
1873
  }, {
1874
1874
  e: void 0,
1875
1875
  t: void 0,
@@ -1889,7 +1889,7 @@ const He = (e) => {
1889
1889
  });
1890
1890
  }, rr = (e) => {
1891
1891
  const n = k(() => Kt(e.points));
1892
- return g(D, {
1892
+ return f(D, {
1893
1893
  get when() {
1894
1894
  return n();
1895
1895
  },
@@ -1902,8 +1902,8 @@ const He = (e) => {
1902
1902
  var r;
1903
1903
  return (r = e.onShapeClick) == null ? void 0 : r.call(e, e.id);
1904
1904
  }, b((r) => {
1905
- var a = e.id, o = e.isSelected, i = n(), l = e.color, s = B.path.strokeWidth, c = e.isSelected ? B.path.opacity.selected : B.path.opacity.default, u = e.isSelected ? "move" : "pointer", h = `Freehand shape ${e.isSelected ? "(selected)" : ""}`, f = e.onShapeClick ? 0 : -1;
1906
- return a !== r.e && d(t, "data-shape-id", r.e = a), o !== r.t && d(t, "data-selected", r.t = o), i !== r.a && d(t, "d", r.a = i), l !== r.o && d(t, "stroke", r.o = l), s !== r.i && d(t, "stroke-width", r.i = s), c !== r.n && d(t, "opacity", r.n = c), u !== r.s && d(t, "cursor", r.s = u), h !== r.h && d(t, "aria-label", r.h = h), f !== r.r && d(t, "tabindex", r.r = f), r;
1905
+ var a = e.id, o = e.isSelected, i = n(), l = e.color, s = B.path.strokeWidth, c = e.isSelected ? B.path.opacity.selected : B.path.opacity.default, u = e.isSelected ? "move" : "pointer", h = `Freehand shape ${e.isSelected ? "(selected)" : ""}`, g = e.onShapeClick ? 0 : -1;
1906
+ return a !== r.e && d(t, "data-shape-id", r.e = a), o !== r.t && d(t, "data-selected", r.t = o), i !== r.a && d(t, "d", r.a = i), l !== r.o && d(t, "stroke", r.o = l), s !== r.i && d(t, "stroke-width", r.i = s), c !== r.n && d(t, "opacity", r.n = c), u !== r.s && d(t, "cursor", r.s = u), h !== r.h && d(t, "aria-label", r.h = h), g !== r.r && d(t, "tabindex", r.r = g), r;
1907
1907
  }, {
1908
1908
  e: void 0,
1909
1909
  t: void 0,
@@ -1931,7 +1931,7 @@ const ar = () => {
1931
1931
  n == null || n.removeEventListener("mousemove", e.drawing.methods.handleMove), n == null || n.removeEventListener("mouseup", e.drawing.methods.handleEnd), n == null || n.removeEventListener("touchmove", e.drawing.methods.handleMove), n == null || n.removeEventListener("touchend", e.drawing.methods.handleEnd);
1932
1932
  }), (() => {
1933
1933
  var t = or(), r = t.firstChild, a = r.firstChild, o = n;
1934
- return typeof o == "function" ? V(o, t) : n = t, v(t, g(jn, {}), r), v(t, g(Jn, {}), r), U(r, "touchend", e.drawing.methods.handleLeave, !0), U(r, "mouseleave", e.drawing.methods.handleLeave), U(r, "mouseenter", e.drawing.methods.handleEnter), r.$$touchmove = (i) => {
1934
+ return typeof o == "function" ? V(o, t) : n = t, v(t, f(jn, {}), r), v(t, f(Jn, {}), r), U(r, "touchend", e.drawing.methods.handleLeave, !0), U(r, "mouseleave", e.drawing.methods.handleLeave), U(r, "mouseenter", e.drawing.methods.handleEnter), r.$$touchmove = (i) => {
1935
1935
  i.preventDefault(), e.drawing.methods.handleMove(i);
1936
1936
  }, U(r, "mousemove", e.drawing.methods.handleMove, !0), r.$$touchstart = (i) => {
1937
1937
  i.preventDefault(), e.drawing.methods.handleStart(i), e.drawing.methods.handleEnter(i), e.drawing.setState({
@@ -1943,11 +1943,11 @@ const ar = () => {
1943
1943
  showTooltip: !1,
1944
1944
  hasDrawn: !0
1945
1945
  });
1946
- }, v(r, g(W, {
1946
+ }, v(r, f(W, {
1947
1947
  get each() {
1948
1948
  return e.drawing.state.shapes;
1949
1949
  },
1950
- children: (i) => g(He, {
1950
+ children: (i) => f(He, {
1951
1951
  get id() {
1952
1952
  return i.id;
1953
1953
  },
@@ -1967,7 +1967,7 @@ const ar = () => {
1967
1967
  return e.drawing.methods.handleShapeClick;
1968
1968
  }
1969
1969
  })
1970
- }), null), v(r, g(He, {
1970
+ }), null), v(r, f(He, {
1971
1971
  id: "temp",
1972
1972
  get type() {
1973
1973
  return e.drawing.state.selectedTool;
@@ -2027,7 +2027,7 @@ const st = (e) => {
2027
2027
  const {
2028
2028
  handleTextChange: n
2029
2029
  } = ue(e.onChange);
2030
- return g(he, {
2030
+ return f(he, {
2031
2031
  get label() {
2032
2032
  return e.config.label;
2033
2033
  },
@@ -2058,12 +2058,12 @@ const st = (e) => {
2058
2058
  };
2059
2059
  T(["input"]);
2060
2060
  var ur = /* @__PURE__ */ w("<fieldset class=echo-input-options role=group>"), hr = /* @__PURE__ */ w("<label class=echo-input-option><input type=checkbox><span>");
2061
- const gr = (e) => {
2061
+ const fr = (e) => {
2062
2062
  const {
2063
2063
  handleCheckboxChange: n,
2064
2064
  getCheckboxValue: t
2065
2065
  } = ue(e.onChange), r = () => t(e.value), a = () => r().length > 0;
2066
- return g(he, {
2066
+ return f(he, {
2067
2067
  get label() {
2068
2068
  return e.config.label;
2069
2069
  },
@@ -2072,7 +2072,7 @@ const gr = (e) => {
2072
2072
  },
2073
2073
  get children() {
2074
2074
  var o = ur();
2075
- return v(o, g(W, {
2075
+ return v(o, f(W, {
2076
2076
  get each() {
2077
2077
  return e.config.options;
2078
2078
  },
@@ -2084,12 +2084,12 @@ const gr = (e) => {
2084
2084
  }
2085
2085
  });
2086
2086
  };
2087
- var fr = /* @__PURE__ */ w("<fieldset class=echo-input-options role=radiogroup>"), mr = /* @__PURE__ */ w("<label class=echo-input-option><input type=radio><span>");
2087
+ var gr = /* @__PURE__ */ w("<fieldset class=echo-input-options role=radiogroup>"), mr = /* @__PURE__ */ w("<label class=echo-input-option><input type=radio><span>");
2088
2088
  const vr = (e) => {
2089
2089
  const {
2090
2090
  handleSelectChange: n
2091
2091
  } = ue(e.onChange);
2092
- return g(he, {
2092
+ return f(he, {
2093
2093
  get label() {
2094
2094
  return e.config.label;
2095
2095
  },
@@ -2097,8 +2097,8 @@ const vr = (e) => {
2097
2097
  return e.config.required;
2098
2098
  },
2099
2099
  get children() {
2100
- var t = fr();
2101
- return v(t, g(W, {
2100
+ var t = gr();
2101
+ return v(t, f(W, {
2102
2102
  get each() {
2103
2103
  return e.config.options;
2104
2104
  },
@@ -2122,8 +2122,8 @@ const yr = (e) => {
2122
2122
  handleSelectChange: n
2123
2123
  } = ue(e.onChange), [t, r] = A(!1);
2124
2124
  let a, o, i;
2125
- const l = () => e.config.options.find((h) => h.value === (e.value === void 0 ? "" : e.value)), s = (h, f) => {
2126
- f.stopPropagation(), h.value === e.value ? e.config.required || n("") : n(h.value), r(!1);
2125
+ const l = () => e.config.options.find((h) => h.value === (e.value === void 0 ? "" : e.value)), s = (h, g) => {
2126
+ g.stopPropagation(), h.value === e.value ? e.config.required || n("") : n(h.value), r(!1);
2127
2127
  }, c = () => {
2128
2128
  r(!t());
2129
2129
  };
@@ -2133,7 +2133,7 @@ const yr = (e) => {
2133
2133
  if (!t() || !a) return;
2134
2134
  h.composedPath().includes(a) || r(!1);
2135
2135
  }
2136
- }), g(he, {
2136
+ }), f(he, {
2137
2137
  get label() {
2138
2138
  return e.config.label;
2139
2139
  },
@@ -2141,21 +2141,21 @@ const yr = (e) => {
2141
2141
  return e.config.required;
2142
2142
  },
2143
2143
  get children() {
2144
- var h = wr(), f = h.firstChild, m = f.firstChild, p = f.nextSibling, E = a;
2145
- typeof E == "function" ? V(E, h) : a = h, f.$$click = (y) => {
2144
+ var h = wr(), g = h.firstChild, m = g.firstChild, p = g.nextSibling, E = a;
2145
+ typeof E == "function" ? V(E, h) : a = h, g.$$click = (y) => {
2146
2146
  y.stopPropagation(), c();
2147
2147
  };
2148
2148
  var S = o;
2149
- typeof S == "function" ? V(S, f) : o = f, v(m, () => {
2149
+ typeof S == "function" ? V(S, g) : o = g, v(m, () => {
2150
2150
  var y;
2151
2151
  return ((y = l()) == null ? void 0 : y.label) || e.config.placeholder;
2152
- }), v(h, g(D, {
2152
+ }), v(h, f(D, {
2153
2153
  get when() {
2154
2154
  return t();
2155
2155
  },
2156
2156
  get children() {
2157
2157
  var y = br();
2158
- return v(y, g(W, {
2158
+ return v(y, f(W, {
2159
2159
  get each() {
2160
2160
  return e.config.options;
2161
2161
  },
@@ -2175,7 +2175,7 @@ const yr = (e) => {
2175
2175
  var C = i;
2176
2176
  return typeof C == "function" ? V(C, p) : i = p, b((y) => {
2177
2177
  var P = t(), z = !e.value, x = e.config.required, H = t(), q = e.config.required, I = e.config.required;
2178
- return P !== y.e && d(f, "data-open", y.e = P), z !== y.t && d(f, "data-placeholder", y.t = z), x !== y.a && d(f, "data-required", y.a = x), H !== y.o && d(f, "aria-expanded", y.o = H), q !== y.i && d(f, "aria-required", y.i = q), I !== y.n && (p.required = y.n = I), y;
2178
+ return P !== y.e && d(g, "data-open", y.e = P), z !== y.t && d(g, "data-placeholder", y.t = z), x !== y.a && d(g, "data-required", y.a = x), H !== y.o && d(g, "aria-expanded", y.o = H), q !== y.i && d(g, "aria-required", y.i = q), I !== y.n && (p.required = y.n = I), y;
2179
2179
  }, {
2180
2180
  e: void 0,
2181
2181
  t: void 0,
@@ -2193,7 +2193,7 @@ const kr = (e) => {
2193
2193
  const {
2194
2194
  handleTextChange: n
2195
2195
  } = ue(e.onChange);
2196
- return g(he, {
2196
+ return f(he, {
2197
2197
  get label() {
2198
2198
  return e.config.label;
2199
2199
  },
@@ -2215,7 +2215,7 @@ const kr = (e) => {
2215
2215
  };
2216
2216
  T(["input"]);
2217
2217
  var Sr = /* @__PURE__ */ w("<div class=echo-input-error>Invalid input type"), Cr = /* @__PURE__ */ w("<div class=echo-input-error>Unsupported input type: ");
2218
- const $r = (e) => g(D, {
2218
+ const $r = (e) => f(D, {
2219
2219
  get when() {
2220
2220
  return e.config.type;
2221
2221
  },
@@ -2224,7 +2224,7 @@ const $r = (e) => g(D, {
2224
2224
  return Sr();
2225
2225
  },
2226
2226
  get children() {
2227
- return g(ht, {
2227
+ return f(ht, {
2228
2228
  get fallback() {
2229
2229
  return (() => {
2230
2230
  var n = Cr();
@@ -2232,12 +2232,12 @@ const $r = (e) => g(D, {
2232
2232
  })();
2233
2233
  },
2234
2234
  get children() {
2235
- return [g(ne, {
2235
+ return [f(ne, {
2236
2236
  get when() {
2237
2237
  return e.config.type === "text";
2238
2238
  },
2239
2239
  get children() {
2240
- return g(kr, ae(e, {
2240
+ return f(kr, ae(e, {
2241
2241
  get value() {
2242
2242
  return e.value;
2243
2243
  },
@@ -2246,12 +2246,12 @@ const $r = (e) => g(D, {
2246
2246
  }
2247
2247
  }));
2248
2248
  }
2249
- }), g(ne, {
2249
+ }), f(ne, {
2250
2250
  get when() {
2251
2251
  return e.config.type === "textarea";
2252
2252
  },
2253
2253
  get children() {
2254
- return g(st, {
2254
+ return f(st, {
2255
2255
  get config() {
2256
2256
  return e.config;
2257
2257
  },
@@ -2263,12 +2263,12 @@ const $r = (e) => g(D, {
2263
2263
  }
2264
2264
  });
2265
2265
  }
2266
- }), g(ne, {
2266
+ }), f(ne, {
2267
2267
  get when() {
2268
2268
  return e.config.type === "radio";
2269
2269
  },
2270
2270
  get children() {
2271
- return g(vr, {
2271
+ return f(vr, {
2272
2272
  get config() {
2273
2273
  return e.config;
2274
2274
  },
@@ -2280,12 +2280,12 @@ const $r = (e) => g(D, {
2280
2280
  }
2281
2281
  });
2282
2282
  }
2283
- }), g(ne, {
2283
+ }), f(ne, {
2284
2284
  get when() {
2285
2285
  return e.config.type === "checkbox";
2286
2286
  },
2287
2287
  get children() {
2288
- return g(gr, {
2288
+ return f(fr, {
2289
2289
  get config() {
2290
2290
  return e.config;
2291
2291
  },
@@ -2297,12 +2297,12 @@ const $r = (e) => g(D, {
2297
2297
  }
2298
2298
  });
2299
2299
  }
2300
- }), g(ne, {
2300
+ }), f(ne, {
2301
2301
  get when() {
2302
2302
  return e.config.type === "select";
2303
2303
  },
2304
2304
  get children() {
2305
- return g(yr, {
2305
+ return f(yr, {
2306
2306
  get config() {
2307
2307
  return e.config;
2308
2308
  },
@@ -2392,7 +2392,7 @@ const Ar = () => {
2392
2392
  var a = Mr(), o = a.firstChild, i = o.firstChild, l = i.firstChild, s = l.nextSibling, c = i.nextSibling;
2393
2393
  c.firstChild;
2394
2394
  var u = c.nextSibling;
2395
- return a.$$click = () => e.feedback.state.isMinimized && r(), o.addEventListener("submit", n), v(l, () => e.widget.state.text.feedbackForm.title), v(s, g(_, {
2395
+ return a.$$click = () => e.feedback.state.isMinimized && r(), o.addEventListener("submit", n), v(l, () => e.widget.state.text.feedbackForm.title), v(s, f(_, {
2396
2396
  type: "button",
2397
2397
  title: "Hide form",
2398
2398
  variant: "secondary",
@@ -2400,11 +2400,11 @@ const Ar = () => {
2400
2400
  onClick: t,
2401
2401
  "aria-label": "Minimize feedback form",
2402
2402
  get children() {
2403
- return g(pn, {
2403
+ return f(pn, {
2404
2404
  size: 20
2405
2405
  });
2406
2406
  }
2407
- }), null), v(s, g(_, {
2407
+ }), null), v(s, f(_, {
2408
2408
  type: "button",
2409
2409
  title: "Close form",
2410
2410
  variant: "secondary",
@@ -2414,11 +2414,11 @@ const Ar = () => {
2414
2414
  }),
2415
2415
  "aria-label": "Close feedback form",
2416
2416
  get children() {
2417
- return g(xe, {
2417
+ return f(xe, {
2418
2418
  size: 20
2419
2419
  });
2420
2420
  }
2421
- }), null), v(c, g(st, {
2421
+ }), null), v(c, f(st, {
2422
2422
  get config() {
2423
2423
  return {
2424
2424
  type: "textarea",
@@ -2434,32 +2434,32 @@ const Ar = () => {
2434
2434
  onChange: (h) => e.feedback.setState({
2435
2435
  message: h
2436
2436
  })
2437
- }), null), v(o, g(D, {
2437
+ }), null), v(o, f(D, {
2438
2438
  get when() {
2439
2439
  var h;
2440
2440
  return (h = e.widget.state.customInputs) == null ? void 0 : h.length;
2441
2441
  },
2442
2442
  get children() {
2443
2443
  var h = Or();
2444
- return h.firstChild, v(h, g(W, {
2444
+ return h.firstChild, v(h, f(W, {
2445
2445
  get each() {
2446
2446
  return e.widget.state.customInputs;
2447
2447
  },
2448
- children: (f) => g($r, {
2449
- config: f,
2448
+ children: (g) => f($r, {
2449
+ config: g,
2450
2450
  get value() {
2451
- return e.feedback.state.customInputValues[f.id];
2451
+ return e.feedback.state.customInputValues[g.id];
2452
2452
  },
2453
2453
  onChange: (m) => e.feedback.setState({
2454
2454
  customInputValues: {
2455
2455
  ...e.feedback.state.customInputValues,
2456
- [f.id]: m
2456
+ [g.id]: m
2457
2457
  }
2458
2458
  })
2459
2459
  })
2460
2460
  }), null), h;
2461
2461
  }
2462
- }), u), v(u, g(_, {
2462
+ }), u), v(u, f(_, {
2463
2463
  type: "submit",
2464
2464
  variant: "primary",
2465
2465
  size: "lg",
@@ -2471,8 +2471,8 @@ const Ar = () => {
2471
2471
  return e.widget.state.text.feedbackForm.submitButton;
2472
2472
  }
2473
2473
  })), b((h) => {
2474
- var f = e.feedback.state.isMinimized, m = e.feedback.state.isMinimized ? "pointer" : "default", p = !e.feedback.state.isMinimized;
2475
- return f !== h.e && d(a, "data-minimized", h.e = f), m !== h.t && ((h.t = m) != null ? a.style.setProperty("cursor", m) : a.style.removeProperty("cursor")), p !== h.a && d(a, "aria-expanded", h.a = p), h;
2474
+ var g = e.feedback.state.isMinimized, m = e.feedback.state.isMinimized ? "pointer" : "default", p = !e.feedback.state.isMinimized;
2475
+ return g !== h.e && d(a, "data-minimized", h.e = g), m !== h.t && ((h.t = m) != null ? a.style.setProperty("cursor", m) : a.style.removeProperty("cursor")), p !== h.a && d(a, "aria-expanded", h.a = p), h;
2476
2476
  }, {
2477
2477
  e: void 0,
2478
2478
  t: void 0,
@@ -2482,21 +2482,21 @@ const Ar = () => {
2482
2482
  };
2483
2483
  T(["click"]);
2484
2484
  var Dr = /* @__PURE__ */ w("<style>"), Fr = /* @__PURE__ */ w("<div class=echo-launcher>"), Lr = /* @__PURE__ */ w("<dialog class=echo-overlay>"), jr = /* @__PURE__ */ w("<div class=echo-root>");
2485
- const Nr = (e) => g(Ot, {
2485
+ const Nr = (e) => f(Ot, {
2486
2486
  useShadow: !0,
2487
2487
  get mount() {
2488
2488
  return document.body;
2489
2489
  },
2490
2490
  get children() {
2491
- return g(cn, ae(e, {
2491
+ return f(cn, ae(e, {
2492
2492
  get children() {
2493
- return g(_r, {
2493
+ return f(_r, {
2494
2494
  get children() {
2495
- return [g(qr, {
2495
+ return [f(qr, {
2496
2496
  get primaryColor() {
2497
2497
  return e.primaryColor;
2498
2498
  }
2499
- }), g(Vr, {})];
2499
+ }), f(Vr, {})];
2500
2500
  }
2501
2501
  });
2502
2502
  }
@@ -2520,10 +2520,10 @@ const Nr = (e) => g(Ot, {
2520
2520
  const e = $();
2521
2521
  return [(() => {
2522
2522
  var n = Fr();
2523
- return v(n, g(Rn, {}), null), v(n, g(Qn, {}), null), v(n, g(Gn, {}), null), b(() => d(n, "data-hidden", e.widget.state.isOpen)), n;
2524
- })(), g(Br, {
2523
+ return v(n, f(Rn, {}), null), v(n, f(Qn, {}), null), v(n, f(Gn, {}), null), b(() => d(n, "data-hidden", e.widget.state.isOpen)), n;
2524
+ })(), f(Br, {
2525
2525
  get children() {
2526
- return [g(Ar, {}), g(Fn, {}), g(ar, {})];
2526
+ return [f(Ar, {}), f(Fn, {}), f(ar, {})];
2527
2527
  }
2528
2528
  })];
2529
2529
  }, Br = (e) => {
@@ -2553,11 +2553,42 @@ const Nr = (e) => g(Ot, {
2553
2553
  return un({
2554
2554
  onUrlChange: (t) => n.methods.handlePageChange(t)
2555
2555
  }), ye(() => {
2556
- Ht(), Jt((t) => {
2557
- if (n.widget.state.isOpen && t.type === "keydown")
2558
- switch (t.key) {
2556
+ Ht();
2557
+ const t = [
2558
+ // Mouse events
2559
+ "click",
2560
+ "mousedown",
2561
+ "mouseup",
2562
+ "mousemove",
2563
+ "mouseenter",
2564
+ "mouseleave",
2565
+ // Touch events
2566
+ "touchstart",
2567
+ "touchmove",
2568
+ "touchend",
2569
+ "touchcancel",
2570
+ // Pointer events
2571
+ "pointerdown",
2572
+ "pointermove",
2573
+ "pointerup",
2574
+ "pointercancel",
2575
+ // Focus events
2576
+ "focus",
2577
+ "blur",
2578
+ "focusin",
2579
+ "focusout",
2580
+ // Other common events that shouldn't be intercepted
2581
+ "scroll",
2582
+ "resize",
2583
+ "input",
2584
+ "change",
2585
+ "submit"
2586
+ ];
2587
+ Jt((r) => {
2588
+ if (!(t.includes(r.type) || !n.widget.state.isOpen) && r.type === "keydown")
2589
+ switch (r.key) {
2559
2590
  case "Escape":
2560
- t.stopImmediatePropagation();
2591
+ r.stopImmediatePropagation();
2561
2592
  break;
2562
2593
  }
2563
2594
  });
@@ -2592,9 +2623,9 @@ const Nr = (e) => g(Ot, {
2592
2623
  text: "Click & drag to draw"
2593
2624
  }
2594
2625
  };
2595
- let fe = null;
2626
+ let ge = null;
2596
2627
  function Yr(e) {
2597
- fe && (console.warn("Echo widget is already initialized. Cleaning up previous instance..."), fe());
2628
+ ge && (console.warn("Echo widget is already initialized. Cleaning up previous instance..."), ge());
2598
2629
  try {
2599
2630
  rn(e);
2600
2631
  const {
@@ -2605,18 +2636,18 @@ function Yr(e) {
2605
2636
  customInputs: o = []
2606
2637
  } = e, i = Ke(Wr, a), l = document.createElement("div");
2607
2638
  l.id = "echo-container", document.body.appendChild(l);
2608
- const s = kt(() => g(Nr, {
2639
+ const s = kt(() => f(Nr, {
2609
2640
  position: n,
2610
2641
  primaryColor: t,
2611
2642
  textConfig: i,
2612
2643
  onSubmit: r,
2613
2644
  customInputs: o
2614
2645
  }), l), c = () => {
2615
- s(), l.remove(), fe = null;
2646
+ s(), l.remove(), ge = null;
2616
2647
  };
2617
2648
  return window.addEventListener("unload", c, {
2618
2649
  once: !0
2619
- }), fe = c, c;
2650
+ }), ge = c, c;
2620
2651
  } catch (n) {
2621
2652
  throw console.error("Echo initialization failed:", n), n;
2622
2653
  }
package/dist/echo.umd.js CHANGED
@@ -5,4 +5,4 @@ Location: ${t}:${r}:${o}`,timestamp:new Date().toISOString()})}))},St=()=>{T&&(c
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,_t,null),v(r,n,null),r})()},pr=()=>{const e=x();return[(()=>{var n=gr();return v(n,c.createComponent($n,{}),null),v(n,c.createComponent(Mn,{}),null),v(n,c.createComponent(zn,{}),null),c.createRenderEffect(()=>u(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&&u(a,"data-hidden",i.a=d),i},{e:void 0,t:void 0,a:void 0}),a})()},xr=e=>{const n=x();return Yt({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(()=>u(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(br,{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"})});
8
+ `;t(r)}),(()=>{var r=fr();return v(r,_t,null),v(r,n,null),r})()},pr=()=>{const e=x();return[(()=>{var n=gr();return v(n,c.createComponent($n,{}),null),v(n,c.createComponent(Mn,{}),null),v(n,c.createComponent(zn,{}),null),c.createRenderEffect(()=>u(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&&u(a,"data-hidden",i.a=d),i},{e:void 0,t:void 0,a:void 0}),a})()},xr=e=>{const n=x();return Yt({onUrlChange:t=>n.methods.handlePageChange(t)}),c.onMount(()=>{Ct();const t=["click","mousedown","mouseup","mousemove","mouseenter","mouseleave","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointercancel","focus","blur","focusin","focusout","scroll","resize","input","change","submit"];Ot(r=>{if(!(t.includes(r.type)||!n.widget.state.isOpen)&&r.type==="keydown")switch(r.key){case"Escape":r.stopImmediatePropagation();break}})}),c.onCleanup(()=>{St(),It()}),(()=>{var t=vr();return v(t,()=>e.children),c.createRenderEffect(()=>u(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(br,{position:n,primaryColor:t,textConfig:i,onSubmit:r,customInputs:a}),l),d=()=>{s(),l.remove(),de=null};return window.addEventListener("unload",d,{once:!0}),de=d,d}catch(n){throw console.error("Echo initialization failed:",n),n}}D.initEcho=Cr,Object.defineProperty(D,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@contember/echo",
3
3
  "license": "Apache-2.0",
4
- "version": "0.0.32",
4
+ "version": "0.0.33",
5
5
  "type": "module",
6
6
  "author": "neumie@neumie.dev",
7
7
  "keywords": [