@contember/echo 0.0.26 → 0.0.28
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/echo.es.js +766 -782
- package/dist/echo.umd.js +5 -5
- package/dist/stores/echoStore.d.ts +2 -4
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
package/dist/echo.umd.js
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
(function(P,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("solid-js"),require("html2canvas")):typeof define=="function"&&define.amd?define(["exports","solid-js","html2canvas"],l):(P=typeof globalThis<"u"?globalThis:P||self,l(P.Echo={},P.Solid,P.html2canvas))})(this,function(P,l,De){"use strict";const Ae=["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"],je=new Set(["className","value","readOnly","formNoValidate","isMap","noModule","playsInline",...Ae]),Fe=new Set(["innerHTML","textContent","innerText","children"]),Le=Object.assign(Object.create(null),{className:"class",htmlFor:"for"}),Ne=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 Re(e,t){const n=Ne[e];return typeof n=="object"?n[t]?n.$:void 0:n}const Ye=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 Be(e,t,n){let r=n.length,o=t.length,a=r,i=0,c=0,s=t[o-1].nextSibling,d=null;for(;i<o||c<a;){if(t[i]===n[c]){i++,c++;continue}for(;t[o-1]===n[a-1];)o--,a--;if(o===i){const h=a<r?c?n[c-1].nextSibling:n[a-c]:s;for(;c<a;)e.insertBefore(n[c++],h)}else if(a===c)for(;i<o;)(!d||!d.has(t[i]))&&t[i].remove(),i++;else if(t[i]===n[a-1]&&n[c]===t[o-1]){const h=t[--o].nextSibling;e.insertBefore(n[c++],t[i++].nextSibling),e.insertBefore(n[--a],h),t[o]=n[a]}else{if(!d){d=new Map;let f=c;for(;f<a;)d.set(n[f],f++)}const h=d.get(t[i]);if(h!=null)if(c<h&&h<a){let f=i,g=1,v;for(;++f<o&&f<a&&!((v=d.get(t[f]))==null||v!==h+g);)g++;if(g>h-c){const b=t[i];for(;c<h;)e.insertBefore(n[c++],b)}else e.replaceChild(n[c++],t[i++])}else i++;else t[i++].remove()}}}const ie="_$DX_DELEGATE";function He(e,t,n,r={}){let o;return l.createRoot(a=>{o=a,t===document?e():m(t,e(),t.firstChild?null:void 0,n)},r.owner),()=>{o(),t.textContent=""}}function w(e,t,n){let r;const o=()=>{const i=document.createElement("template");return i.innerHTML=e,n?i.content.firstChild.firstChild:i.content.firstChild},a=t?()=>l.untrack(()=>document.importNode(r||(r=o()),!0)):()=>(r||(r=o())).cloneNode(!0);return a.cloneNode=a,a}function $(e,t=window.document){const n=t[ie]||(t[ie]=new Set);for(let r=0,o=e.length;r<o;r++){const a=e[r];n.has(a)||(n.add(a),t.addEventListener(a,Ve))}}function u(e,t,n){Y(e)||(n==null?e.removeAttribute(t):e.setAttribute(t,n))}function We(e,t,n){Y(e)||(n?e.setAttribute(t,""):e.removeAttribute(t))}function se(e,t){Y(e)||(t==null?e.removeAttribute("class"):e.className=t)}function N(e,t,n,r){if(r)Array.isArray(n)?(e[`$$${t}`]=n[0],e[`$$${t}Data`]=n[1]):e[`$$${t}`]=n;else if(Array.isArray(n)){const o=n[0];e.addEventListener(t,n[0]=a=>o.call(e,n[1],a))}else e.addEventListener(t,n,typeof n!="function"&&n)}function _e(e,t,n={}){const r=Object.keys(t||{}),o=Object.keys(n);let a,i;for(a=0,i=o.length;a<i;a++){const c=o[a];!c||c==="undefined"||t[c]||(ce(e,c,!1),delete n[c])}for(a=0,i=r.length;a<i;a++){const c=r[a],s=!!t[c];!c||c==="undefined"||n[c]===s||!s||(ce(e,c,!0),n[c]=s)}return n}function x(e,t,n){if(!t)return n?u(e,"style"):t;const r=e.style;if(typeof t=="string")return r.cssText=t;typeof n=="string"&&(r.cssText=n=void 0),n||(n={}),t||(t={});let o,a;for(a in n)t[a]==null&&r.removeProperty(a),delete n[a];for(a in t)o=t[a],o!==n[a]&&(r.setProperty(a,o),n[a]=o);return n}function Ue(e,t={},n,r){const o={};return l.createRenderEffect(()=>o.children=B(e,t.children,o.children)),l.createRenderEffect(()=>typeof t.ref=="function"&&R(t.ref,e)),l.createRenderEffect(()=>Xe(e,t,n,!0,o,!0)),o}function R(e,t,n){return l.untrack(()=>e(t,n))}function m(e,t,n,r){if(n!==void 0&&!r&&(r=[]),typeof t!="function")return B(e,t,r,n);l.createRenderEffect(o=>B(e,t(),o,n),r)}function Xe(e,t,n,r,o={},a=!1){t||(t={});for(const i in o)if(!(i in t)){if(i==="children")continue;o[i]=le(e,i,null,o[i],n,a,t)}for(const i in t){if(i==="children")continue;const c=t[i];o[i]=le(e,i,c,o[i],n,a,t)}}function Y(e){return!!l.sharedConfig.context&&!l.sharedConfig.done&&(!e||e.isConnected)}function Ke(e){return e.toLowerCase().replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}function ce(e,t,n){const r=t.trim().split(/\s+/);for(let o=0,a=r.length;o<a;o++)e.classList.toggle(r[o],n)}function le(e,t,n,r,o,a,i){let c,s,d,h,f;if(t==="style")return x(e,n,r);if(t==="classList")return _e(e,n,r);if(n===r)return r;if(t==="ref")a||n(e);else if(t.slice(0,3)==="on:"){const g=t.slice(3);r&&e.removeEventListener(g,r,typeof r!="function"&&r),n&&e.addEventListener(g,n,typeof n!="function"&&n)}else if(t.slice(0,10)==="oncapture:"){const g=t.slice(10);r&&e.removeEventListener(g,r,!0),n&&e.addEventListener(g,n,!0)}else if(t.slice(0,2)==="on"){const g=t.slice(2).toLowerCase(),v=Ye.has(g);if(!v&&r){const b=Array.isArray(r)?r[0]:r;e.removeEventListener(g,b)}(v||n)&&(N(e,g,n,v),v&&$([g]))}else if(t.slice(0,5)==="attr:")u(e,t.slice(5),n);else if(t.slice(0,5)==="bool:")We(e,t.slice(5),n);else if((f=t.slice(0,5)==="prop:")||(d=Fe.has(t))||(h=Re(t,e.tagName))||(s=je.has(t))||(c=e.nodeName.includes("-")||"is"in i)){if(f)t=t.slice(5),s=!0;else if(Y(e))return n;t==="class"||t==="className"?se(e,n):c&&!s&&!d?e[Ke(t)]=n:e[h||t]=n}else u(e,Le[t]||t,n);return n}function Ve(e){if(l.sharedConfig.registry&&l.sharedConfig.events&&l.sharedConfig.events.find(([s,d])=>d===e))return;let t=e.target;const n=`$$${e.type}`,r=e.target,o=e.currentTarget,a=s=>Object.defineProperty(e,"target",{configurable:!0,value:s}),i=()=>{const s=t[n];if(s&&!t.disabled){const d=t[`${n}Data`];if(d!==void 0?s.call(t,d,e):s.call(t,e),e.cancelBubble)return}return t.host&&typeof t.host!="string"&&!t.host._$host&&t.contains(e.target)&&a(t.host),!0},c=()=>{for(;i()&&(t=t._$host||t.parentNode||t.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t||document}}),l.sharedConfig.registry&&!l.sharedConfig.done&&(l.sharedConfig.done=_$HY.done=!0),e.composedPath){const s=e.composedPath();a(s[0]);for(let d=0;d<s.length-2&&(t=s[d],!!i());d++){if(t._$host){t=t._$host,c();break}if(t.parentNode===o)break}}else c();a(r)}function B(e,t,n,r,o){const a=Y(e);if(a){!n&&(n=[...e.childNodes]);let s=[];for(let d=0;d<n.length;d++){const h=n[d];h.nodeType===8&&h.data.slice(0,2)==="!$"?h.remove():s.push(h)}n=s}for(;typeof n=="function";)n=n();if(t===n)return n;const i=typeof t,c=r!==void 0;if(e=c&&n[0]&&n[0].parentNode||e,i==="string"||i==="number"){if(a||i==="number"&&(t=t.toString(),t===n))return n;if(c){let s=n[0];s&&s.nodeType===3?s.data!==t&&(s.data=t):s=document.createTextNode(t),n=I(e,n,r,s)}else n!==""&&typeof n=="string"?n=e.firstChild.data=t:n=e.textContent=t}else if(t==null||i==="boolean"){if(a)return n;n=I(e,n,r)}else{if(i==="function")return l.createRenderEffect(()=>{let s=t();for(;typeof s=="function";)s=s();n=B(e,s,n,r)}),()=>n;if(Array.isArray(t)){const s=[],d=n&&Array.isArray(n);if(Q(s,t,n,o))return l.createRenderEffect(()=>n=B(e,s,n,r,!0)),()=>n;if(a){if(!s.length)return n;if(r===void 0)return n=[...e.childNodes];let h=s[0];if(h.parentNode!==e)return n;const f=[h];for(;(h=h.nextSibling)!==r;)f.push(h);return n=f}if(s.length===0){if(n=I(e,n,r),c)return n}else d?n.length===0?de(e,s,r):Be(e,n,s):(n&&I(e),de(e,s));n=s}else if(t.nodeType){if(a&&t.parentNode)return n=c?[t]:t;if(Array.isArray(n)){if(c)return n=I(e,n,r,t);I(e,n,null,t)}else n==null||n===""||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);n=t}}return n}function Q(e,t,n,r){let o=!1;for(let a=0,i=t.length;a<i;a++){let c=t[a],s=n&&n[e.length],d;if(!(c==null||c===!0||c===!1))if((d=typeof c)=="object"&&c.nodeType)e.push(c);else if(Array.isArray(c))o=Q(e,c,s)||o;else if(d==="function")if(r){for(;typeof c=="function";)c=c();o=Q(e,Array.isArray(c)?c:[c],Array.isArray(s)?s:[s])||o}else e.push(c),o=!0;else{const h=String(c);s&&s.nodeType===3&&s.data===h?e.push(s):e.push(document.createTextNode(h))}}return o}function de(e,t,n=null){for(let r=0,o=t.length;r<o;r++)e.insertBefore(t[r],n)}function I(e,t,n,r){if(n===void 0)return e.textContent="";const o=r||document.createTextNode("");if(t.length){let a=!1;for(let i=t.length-1;i>=0;i--){const c=t[i];if(o!==c){const s=c.parentNode===e;!a&&!i?s?e.replaceChild(o,c):e.insertBefore(o,n):s&&c.remove()}else a=!0}}else e.insertBefore(o,n);return[o]}const Ge="http://www.w3.org/2000/svg";function qe(e,t=!1){return t?document.createElementNS(Ge,e):document.createElement(e)}function Qe(e){const{useShadow:t}=e,n=document.createTextNode(""),r=()=>e.mount||document.body,o=l.getOwner();let a,i=!!l.sharedConfig.context;return l.createEffect(()=>{i&&(l.getOwner().user=i=!1),a||(a=l.runWithOwner(o,()=>l.createMemo(()=>e.children)));const c=r();if(c instanceof HTMLHeadElement){const[s,d]=l.createSignal(!1),h=()=>d(!0);l.createRoot(f=>m(c,()=>s()?f():a(),null)),l.onCleanup(h)}else{const s=qe(e.isSVG?"g":"div",e.isSVG),d=t&&s.attachShadow?s.attachShadow({mode:"open"}):s;Object.defineProperty(s,"_$host",{get(){return n.parentNode},configurable:!0}),m(d,a),c.appendChild(s),e.ref&&e.ref(s),l.onCleanup(()=>c.removeChild(s))}},void 0,{render:!i}),n}const Ze=(e,t)=>{let n;return(...r)=>{clearTimeout(n),n=window.setTimeout(()=>e(...r),t)}},Je=(e,t)=>{D({event:"keydown",callback:n=>{n.key===e&&t(n)}})},D=e=>{const{event:t,callback:n,onMount:r,onCleanup:o}=e,a=i=>{n(i)};l.onMount(()=>{r==null||r(),window.addEventListener(t,a)}),l.onCleanup(()=>{o==null||o(),window.removeEventListener(t,a)})},Z=e=>{const{target:t,options:n,callback:r,onMount:o,onCleanup:a}=e,i=new MutationObserver(r);l.onMount(()=>{o==null||o(),i.observe(t,n)}),l.onCleanup(()=>{a==null||a(),i.disconnect()})},et="echo_",M="echo_page_state",he=()=>{window.dispatchEvent(new CustomEvent("echo-storage-change"))},ue=e=>`${et}${e}`,fe=(e,t)=>{try{const n=localStorage.getItem(ue(e));return n?JSON.parse(n):t}catch{return t}},J=(e,t)=>{try{localStorage.setItem(ue(e),JSON.stringify(t))}catch(n){console.warn("Failed to save to localStorage:",n)}},ee=()=>window.location.pathname,tt=(e,t)=>{try{const n=localStorage.getItem(M),r=n?JSON.parse(n):{};if(!t.feedback.comment&&(!t.drawing.shapes||t.drawing.shapes.length===0))delete r[e];else{const o=window.location.search||void 0,a={feedback:{comment:t.feedback.comment},drawing:{shapes:t.drawing.shapes},latestQuery:o};r[e]=a}localStorage.setItem(M,JSON.stringify(r)),he()}catch(n){console.error("Failed to save page state:",n)}},te=e=>{try{const t=localStorage.getItem(M);return t&&JSON.parse(t)[e]||null}catch(t){return console.error("Failed to load page state:",t),null}},ge=e=>{try{const t=localStorage.getItem(M);if(!t)return;const n=JSON.parse(t);delete n[e],localStorage.setItem(M,JSON.stringify(n)),he()}catch(t){console.error("Failed to clear page state:",t)}},me=()=>{try{const e=localStorage.getItem(M);if(!e)return 0;const t=JSON.parse(e);return Object.keys(t).length}catch(e){return console.error("Failed to get stored pages count:",e),0}},ne=()=>{try{const e=localStorage.getItem(M);if(!e)return[];const t=JSON.parse(e);return Object.entries(t).map(([n,r])=>({path:n,state:r}))}catch(e){return console.error("Failed to get stored pages:",e),[]}},re=Symbol("store-raw"),A=Symbol("store-node"),C=Symbol("store-has"),ve=Symbol("store-self");function we(e){let t=e[l.$PROXY];if(!t&&(Object.defineProperty(e,l.$PROXY,{value:t=new Proxy(e,ot)}),!Array.isArray(e))){const n=Object.keys(e),r=Object.getOwnPropertyDescriptors(e);for(let o=0,a=n.length;o<a;o++){const i=n[o];r[i].get&&Object.defineProperty(e,i,{enumerable:r[i].enumerable,get:r[i].get.bind(t)})}}return t}function U(e){let t;return e!=null&&typeof e=="object"&&(e[l.$PROXY]||!(t=Object.getPrototypeOf(e))||t===Object.prototype||Array.isArray(e))}function H(e,t=new Set){let n,r,o,a;if(n=e!=null&&e[re])return n;if(!U(e)||t.has(e))return e;if(Array.isArray(e)){Object.isFrozen(e)?e=e.slice(0):t.add(e);for(let i=0,c=e.length;i<c;i++)o=e[i],(r=H(o,t))!==o&&(e[i]=r)}else{Object.isFrozen(e)?e=Object.assign({},e):t.add(e);const i=Object.keys(e),c=Object.getOwnPropertyDescriptors(e);for(let s=0,d=i.length;s<d;s++)a=i[s],!c[a].get&&(o=e[a],(r=H(o,t))!==o&&(e[a]=r))}return e}function X(e,t){let n=e[t];return n||Object.defineProperty(e,t,{value:n=Object.create(null)}),n}function W(e,t,n){if(e[t])return e[t];const[r,o]=l.createSignal(n,{equals:!1,internal:!0});return r.$=o,e[t]=r}function nt(e,t){const n=Reflect.getOwnPropertyDescriptor(e,t);return!n||n.get||!n.configurable||t===l.$PROXY||t===A||(delete n.value,delete n.writable,n.get=()=>e[l.$PROXY][t]),n}function be(e){l.getListener()&&W(X(e,A),ve)()}function rt(e){return be(e),Reflect.ownKeys(e)}const ot={get(e,t,n){if(t===re)return e;if(t===l.$PROXY)return n;if(t===l.$TRACK)return be(e),n;const r=X(e,A),o=r[t];let a=o?o():e[t];if(t===A||t===C||t==="__proto__")return a;if(!o){const i=Object.getOwnPropertyDescriptor(e,t);l.getListener()&&(typeof a!="function"||e.hasOwnProperty(t))&&!(i&&i.get)&&(a=W(r,t,a)())}return U(a)?we(a):a},has(e,t){return t===re||t===l.$PROXY||t===l.$TRACK||t===A||t===C||t==="__proto__"?!0:(l.getListener()&&W(X(e,C),t)(),t in e)},set(){return!0},deleteProperty(){return!0},ownKeys:rt,getOwnPropertyDescriptor:nt};function K(e,t,n,r=!1){if(!r&&e[t]===n)return;const o=e[t],a=e.length;n===void 0?(delete e[t],e[C]&&e[C][t]&&o!==void 0&&e[C][t].$()):(e[t]=n,e[C]&&e[C][t]&&o===void 0&&e[C][t].$());let i=X(e,A),c;if((c=W(i,t,o))&&c.$(()=>n),Array.isArray(e)&&e.length!==a){for(let s=e.length;s<a;s++)(c=i[s])&&c.$();(c=W(i,"length",a))&&c.$(e.length)}(c=i[ve])&&c.$()}function pe(e,t){const n=Object.keys(t);for(let r=0;r<n.length;r+=1){const o=n[r];K(e,o,t[o])}}function at(e,t){if(typeof t=="function"&&(t=t(e)),t=H(t),Array.isArray(t)){if(e===t)return;let n=0,r=t.length;for(;n<r;n++){const o=t[n];e[n]!==o&&K(e,n,o)}K(e,"length",r)}else pe(e,t)}function _(e,t,n=[]){let r,o=e;if(t.length>1){r=t.shift();const i=typeof r,c=Array.isArray(e);if(Array.isArray(r)){for(let s=0;s<r.length;s++)_(e,[r[s]].concat(t),n);return}else if(c&&i==="function"){for(let s=0;s<e.length;s++)r(e[s],s)&&_(e,[s].concat(t),n);return}else if(c&&i==="object"){const{from:s=0,to:d=e.length-1,by:h=1}=r;for(let f=s;f<=d;f+=h)_(e,[f].concat(t),n);return}else if(t.length>1){_(e[r],t,[r].concat(n));return}o=e[r],n=[r].concat(n)}let a=t[0];typeof a=="function"&&(a=a(o,n),a===o)||r===void 0&&a==null||(a=H(a),r===void 0||U(o)&&U(a)&&!Array.isArray(a)?pe(o,a):K(e,r,a))}function oe(...[e,t]){const n=H(e||{}),r=Array.isArray(n),o=we(n);function a(...i){l.batch(()=>{r&&i.length===1?at(n,i[0]):_(n,i)})}return[o,a]}const z={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}}},it=e=>{const t=e.replace("#",""),n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,2),16)/255,o=Number.parseInt(t.slice(4,2),16)/255;return .2126*n+.7152*r+.0722*o},st=e=>it(e)<.5?"#FFFFFF":"#000000",ye=(e,t)=>{if(!t)return e;const n={...e};for(const r in t)t[r]&&typeof t[r]=="object"&&!Array.isArray(t[r])?n[r]=ye(e[r],t[r]):n[r]=t[r];return n};let E=[],k=null,j=null,F=null;const ae=(e,t)=>(...n)=>{const r=n.map(o=>typeof o=="string"?o:o instanceof Error?o.stack||o.message:JSON.stringify(o)).join(" ");E.push({type:e,message:r,timestamp:new Date().toISOString()}),E.length>1e3&&(E=E.slice(-1e3)),t.apply(console,n)},ct=()=>{k||(k={log:console.log,warn:console.warn,error:console.error},j=window.onerror,F=window.onunhandledrejection,window.onerror=(e,t,n,r,o)=>{const a=(o==null?void 0:o.stack)||(o==null?void 0:o.message)||e;return E.push({type:"error",message:`Uncaught Error: ${a}
|
2
|
-
Location: ${t}:${n}:${r}`,timestamp:new Date().toISOString()}),j?j(e,t,n,r,
|
3
|
-
Location: ${n}:${r}:${o}`,timestamp:new Date().toISOString()})}))},lt=()=>{k&&(console.log=k.log,console.warn=k.warn,console.error=k.error,k=null),j&&(window.onerror=j,j=null),F&&(window.onunhandledrejection=F,F=null),window.removeEventListener("error",()=>{}),E=[]},xe=()=>[...E],ke=()=>{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)},V=(e,{useClientCoords:t=!1}={})=>{const r=typeof TouchEvent<"u"&&e instanceof TouchEvent?e.touches[0]:null;return{x:r?t?r.clientX:r.pageX:t?e.clientX:e.pageX,y:r?t?r.clientY:r.pageY:t?e.clientY:e.pageY}},Se=(e,t)=>{const n=t.x-e.x,r=t.y-e.y;return Math.sqrt(n*n+r*r)},Ce=e=>{if(e.length!==2)return null;const[t,n]=e;return{x:Math.min(t.x,n.x),y:Math.min(t.y,n.y),width:Math.abs(n.x-t.x),height:Math.abs(n.y-t.y)}},dt=e=>e.length<2?null:`M ${e[0].x} ${e[0].y} ${e.slice(1).map(t=>`L ${t.x} ${t.y}`).join(" ")}`,ht=(e,t)=>{const n=document.createElement("canvas");return n.width=e,n.height=t,n},ut=e=>e.hasAttribute("data-hide-when-drawing"),ft=async()=>{try{const e=await De(document.body,{backgroundColor:null,logging:!1,useCORS:!0,scale:1,allowTaint:!0,foreignObjectRendering:!0,ignoreElements:ut}),t=ht(e.width,e.height),n=t.getContext("2d");if(!n)throw new Error("Failed to get canvas context");return n.drawImage(e,0,0),t.toDataURL()}catch(e){console.error("Failed to capture screenshot:",e);return}},gt=(e,t,n)=>{let r=`M0 0 H${e.width} V${e.height} H0 Z`;if(t.length===2){const[o,a]=t;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 n)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},mt=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")},Ee=5,Pe=(e,t)=>z[e].getCursor(t),vt=(e,t,n)=>{var c,s;const[r,o]=oe({isDrawing:!1,currentPoints:[],selectedShapeId:null,selectedTool:"rectangle",showTooltip:!0,mousePosition:{x:0,y:0},selectedColor:e.primaryColor,shapes:((s=(c=te(t))==null?void 0:c.drawing)==null?void 0:s.shapes)||[],hasDrawn:!1,isDragging:!1,dragStartPos:null,initialClickPos:null,dragOffset:null,cursor:Pe("rectangle",e.primaryColor)}),a=(d,h=!1)=>{if(d.selectedTool||d.selectedColor){const f=d.selectedTool||r.selectedTool,g=d.selectedColor||r.selectedColor;d.cursor=Pe(f,g)}o(d),n==null||n(d,h)},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 h=V(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(v=>v.id===f);if(g){i.startDrag(h),i.updateDragOffset(g,h);return}}}i.setInitialClick(h)},handleMove:d=>{const h=V(d,{useClientCoords:!0}),f=V(d);if(a({mousePosition:h}),r.isDragging&&r.selectedShapeId&&r.dragStartPos&&r.shapes.find(v=>v.id===r.selectedShapeId)){const v=f.x-r.dragStartPos.x,b=f.y-r.dragStartPos.y,y=r.shapes.map(S=>S.id===r.selectedShapeId?{...S,points:S.points.map(L=>({x:L.x+v,y:L.y+b}))}:S);a({shapes:y}),i.startDrag(f);return}if(r.initialClickPos&&!r.isDrawing){Se(r.initialClickPos,f)>=Ee&&i.startDrawing(r.initialClickPos);return}r.isDrawing&&i.updateDrawing(f)},handleEnd:d=>{if(r.isDragging){i.stopDrag();return}if(r.initialClickPos&&!r.isDrawing){const h=V(d);if(Se(r.initialClickPos,h)<Ee&&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,h)=>{a({dragOffset:{x:h.x-d.points[0].x,y:h.y-d.points[0].y}})}};return{state:r,setState:a,methods:i}},wt=(e,t,n)=>{var i,c;const[r,o]=oe({comment:((c=(i=te(t))==null?void 0:i.feedback)==null?void 0:c.comment)||"",screenshot:void 0,isCapturing:!1,isMinimized:!1});return{state:r,setState:(s,d=!1)=>{o(s),n==null||n(s,d)}}},bt=(e,t)=>{const[n,r]=oe({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:me(),welcomeMessageIsClosing:!1});return{state:n,setState:r}},pt=e=>{let t=ee();const n=Ze((s,d=!1)=>{(d||r.state.comment.trim().length>0||o.state.shapes.length>0)&&(tt(s,{feedback:r.state,drawing:o.state}),a.setState({pagesCount:me()}))},1e3),r=wt(e,t,(s,d)=>{n(t,d)}),o=vt(e,t,(s,d)=>{n(t,d)}),a=bt(e),i=()=>{const s=ee();if(s!==t){t=s;const d=te(t);r.setState({comment:(d==null?void 0:d.feedback.comment)||""}),o.setState({shapes:(d==null?void 0:d.drawing.shapes)||[]})}};D({event:"popstate",callback:i}),Z({target:document.documentElement,options:{childList:!0,subtree:!0},callback:()=>{ee()!==t&&i()}});const c=()=>{ge(t),r.setState({comment:"",screenshot:void 0,isCapturing:!1,isMinimized:!1},!0),o.setState({isDrawing:!1,currentPoints:[],shapes:[],selectedShapeId:null,selectedTool:"rectangle",showTooltip:!0,mousePosition:{x:0,y:0},hasDrawn:!1,selectedColor:e.primaryColor,isDragging:!1,dragStartPos:null,initialClickPos:null,dragOffset:null},!0),a.setState({isOpen:!1})};return{feedback:r,drawing:o,widget:a,methods:{reset:c,postSubmit:s=>{c(),a.setState({notification:{show:!0,type:s.type,message:s.message}}),setTimeout(()=>{a.setState({notification:{show:!1,type:s.type,message:s.message}})},5e3)},onSubmit:s=>e.onSubmit(s)}}},$e=l.createContext(),yt=e=>{const t=pt({primaryColor:e.primaryColor,onSubmit:e.onSubmit,textConfig:e.textConfig,position:e.position});return l.createComponent($e.Provider,{value:t,get children(){return e.children}})},p=()=>{const e=l.useContext($e);if(!e)throw new Error("useEchoStore must be used within EchoProvider");return e},xt='*,*:before,*:after{box-sizing:border-box}.echo-root{position:absolute;top:0;left:0;z-index:var(--z-root);isolation:isolate;pointer-events:none;--z-root: 999999;--z-launcher: 2;--z-overlay: 1;--z-drawing-toolbar: 3;--z-drawing-tooltip: 3;--z-shape-actions: 3;--z-notification: 2;--z-welcome-message: 2;--z-widget-button: 2;--z-feedback-form: 4;--primary-color: #000;--primary-text-color: #fff;--error-color: #f44336;--success-color: var(--primary-color);--text-dark: #1a1a1a;--text-medium: #333;--text-light: #666;--text-lighter: #999;--border-color: rgba(0, 0, 0, .1);--border-color-light: rgba(0, 0, 0, .05);--border-color-medium: rgba(0, 0, 0, .08);--primary-color-lighter: color-mix(in srgb, var(--primary-color) 100%, white 40%);--primary-color-lightest: color-mix(in srgb, var(--primary-color) 7%, white 100%);--hover-color: color-mix(in srgb, var(--primary-color) 80%, #fff);--shadow-color-dark: rgba(0, 0, 0, .6);--shadow-color-light: rgba(255, 255, 255, .1);--shadow-color-medium: rgba(0, 0, 0, .2);--shadow-sm: 0 1px 3px;--shadow-md: 0 4px 10px;--shadow-lg: 0 10px 20px;--shadow-black-sm: var(--shadow-sm) rgba(0, 0, 0, .5);--shadow-black-md: var(--shadow-md) rgba(0, 0, 0, .5);--shadow-black-lg: var(--shadow-lg) rgba(0, 0, 0, .5);--shadow-black-lightened-sm: var(--shadow-sm) var(--shadow-color-medium);--shadow-black-lightened-md: var(--shadow-md) var(--shadow-color-medium);--shadow-black-lightened-lg: var(--shadow-lg) var(--shadow-color-medium);--shadow-primary-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color) 60%, transparent 80%);--shadow-primary-md: var(--shadow-md) color-mix(in srgb, var(--primary-color) 50%, transparent 80%);--shadow-primary-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color) 40%, transparent 80%);--shadow-primary-lighter-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color-lighter) 70%, transparent 80%);--shadow-primary-lighter-md: var(--shadow-md) color-mix(in srgb, var(--primary-color-lighter) 60%, transparent 80%);--shadow-primary-lighter-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color-lighter) 50%, transparent 80%);--shadow-primary-lightest-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color-lightest) 70%, transparent 80%);--shadow-primary-lightest-md: var(--shadow-md) color-mix(in srgb, var(--primary-color-lightest) 60%, transparent 80%);--shadow-primary-lightest-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color-lightest) 50%, transparent 80%);--shadow-combined-sm: var(--shadow-primary-sm), var(--shadow-black-lightened-sm);--shadow-combined-md: var(--shadow-primary-md), var(--shadow-black-lightened-md);--shadow-combined-lg: var(--shadow-primary-lg), var(--shadow-black-lightened-lg);--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 20px;--spacing-2xl: 24px;--spacing-3xl: 32px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--font-xs: .8125rem;--font-sm: .875rem;--font-base: .9375rem;--font-md: 1rem;--font-lg: 1.125rem;--duration-fast: .1s;--duration-base: .2s;--duration-slow: .3s;--duration-slower: .4s;--duration-slowest: .6s;--ease-default: ease;--ease-in-out: ease-in-out;--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.16, 1, .3, 1)}.echo-stored-feedback{position:absolute;display:flex;flex-direction:column;bottom:calc(100% + var(--spacing-lg));right:0;width:320px;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-black-lightened-lg);animation:slideUpFade var(--duration-base) var(--ease-smooth);z-index:calc(var(--z-widget-button) + 1);transform-origin:bottom right;transition:all var(--duration-base) var(--ease-smooth)}.echo-stored-feedback-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg)}.echo-stored-feedback-header h3{margin:0;font-size:var(--font-md);font-weight:600}.echo-stored-feedback-list{max-height:400px;overflow-y:auto;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-stored-feedback-item{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--border-color-light);transition:all var(--duration-base) var(--ease-smooth);background:#fff;position:relative}.echo-stored-feedback-item:hover{background:var(--primary-color-lightest)}.echo-stored-feedback-item-current{background:var(--primary-color-lightest);padding-left:calc(var(--spacing-lg) - 3px)}.echo-stored-feedback-item-current:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--primary-color);border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.echo-stored-feedback-item:last-child{border-bottom:none;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-stored-feedback-item:last-child.echo-stored-feedback-item-current:before{border-bottom-left-radius:var(--radius-lg)}.echo-stored-feedback-content{flex:1;min-width:0;margin-right:var(--spacing-md)}.echo-stored-feedback-path{font-size:var(--font-sm);font-weight:500;color:var(--text-medium);margin-bottom:var(--spacing-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.echo-stored-feedback-preview{font-size:var(--font-xs);color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.echo-stored-feedback-actions{display:flex;align-items:center;gap:var(--spacing-sm)}.echo-stored-feedback-link{color:var(--text-light)}.echo-stored-feedback-link:hover{color:var(--primary-color)}.echo-stored-feedback-delete{color:var(--text-light);font-size:var(--font-xs);padding:var(--spacing-xs) var(--spacing-md)}.echo-stored-feedback-delete:hover{color:var(--error-color);background:color-mix(in srgb,var(--error-color) 10%,transparent)}.echo-stored-feedback-empty{padding:var(--spacing-3xl) var(--spacing-lg);text-align:center;color:var(--text-light);font-size:var(--font-sm);border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-launcher{position:fixed;z-index:var(--z-launcher);bottom:var(--spacing-xl);right:var(--spacing-xl)}.echo-overlay{position:absolute;z-index:var(--z-overlay);top:0;left:0;right:0;bottom:0;border:3px solid var(--primary-color)}[data-hidden=true],[data-hidden=false]{transition:opacity var(--duration-slow) var(--ease-in-out),visibility var(--duration-slow) var(--ease-in-out)}[data-hidden=true]{opacity:0;visibility:hidden;pointer-events:none}[data-hidden=false]{opacity:1;visibility:visible;pointer-events:auto;user-select:none;-webkit-user-select:none}.echo-launcher-button{z-index:var(--z-widget-button);position:relative;display:flex;align-items:center;justify-content:center;cursor:pointer;background:radial-gradient(circle at 40% 40%,var(--primary-color) 0%,var(--primary-color-lighter) 65%,var(--primary-color-lighter) 100%);border:none;border-radius:var(--radius-full);width:48px;height:48px;box-shadow:var(--shadow-black-md);transition:all var(--duration-slow) var(--ease-default),left var(--duration-slower) var(--ease-smooth),opacity var(--duration-slow) var(--ease-in-out)}.echo-launcher-button:hover{box-shadow:var(--shadow-black-lg);transform:translateY(-2px)}.echo-launcher-button:active{transform:scale(.95)}.echo-launcher-button-count{position:absolute;top:calc(-1 * var(--spacing-xs));right:calc(-1 * var(--spacing-xs));background:var(--primary-color-lightest);color:var(--primary-color-lighter);border-radius:var(--radius-md);min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-black-sm);padding:0 var(--spacing-xs);font-weight:600;pointer-events:auto;cursor:pointer;transform-origin:center center;animation:popIn var(--duration-slow) var(--ease-bounce);transition:transform var(--duration-base) var(--ease-default)}.echo-launcher-button-count:hover{transform:scale(1.1)}.echo-feedback{position:fixed;bottom:var(--spacing-xl);right:var(--spacing-xl);width:min(calc(100vw - var(--spacing-2xl)),24rem);z-index:var(--z-feedback-form);box-shadow:var(--shadow-black-lightened-lg);display:flex;flex-direction:column;gap:var(--spacing-lg);background:#fff;border-radius:var(--radius-lg);will-change:transform;padding:var(--spacing-lg)}.echo-feedback[data-minimized=true]{transition:transform .4s var(--ease-default),box-shadow .4s var(--ease-default);transform:translate(calc(100% - 48px),calc(100% - 48px));box-shadow:0 8px 16px #0003}.echo-feedback[data-minimized=true]:hover{cursor:pointer;transform:translate(calc(100% - 48px),calc(100% - 48px)) rotate(-2deg) scale(1.1);box-shadow:0 12px 24px #00000040}.echo-feedback[data-minimized=false]{transition:transform .4s var(--ease-smooth),box-shadow .4s var(--ease-smooth);transform:translate(0)}.echo-feedback[style*=transition]{pointer-events:none}.echo-feedback-content{display:flex;flex-direction:column;gap:var(--spacing-lg)}.echo-feedback-header{display:flex;justify-content:space-between;align-items:center}.echo-feedback-title{font-size:var(--font-lg);font-weight:600;color:var(--text-dark);margin:0}.echo-feedback-header-actions{display:flex;gap:var(--spacing-xs);margin:calc(-1 * var(--spacing-sm)) calc(-1 * var(--spacing-sm)) calc(-1 * var(--spacing-sm)) 0}.echo-feedback-form-textarea{width:100%;min-height:120px;border-radius:var(--radius-md);border:1px solid var(--border-color);padding:var(--spacing-md);font-size:var(--font-base);resize:vertical;background:#fffc;font-family:inherit}.echo-feedback-form-textarea:focus{outline:none;border-color:var(--primary-color);background:#fff;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}}';var kt=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 St=e=>(()=>{var t=kt();return l.createRenderEffect(n=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",c=e.strokeWidth??2,s=e.class,d=e.style;return r!==n.e&&u(t,"width",n.e=r),o!==n.t&&u(t,"height",n.t=o),a!==n.a&&u(t,"fill",n.a=a),i!==n.o&&u(t,"stroke",n.o=i),c!==n.i&&u(t,"stroke-width",n.i=c),s!==n.n&&u(t,"class",n.n=s),n.s=x(t,d,n.s),n},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),t})();var Ct=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 Et=e=>(()=>{var t=Ct(),n=t.firstChild;return l.createRenderEffect(r=>{var o=e.size??24,a=e.size??24,i=e.class,c=e.style,s=e.fill??"currentColor";return o!==r.e&&u(t,"width",r.e=o),a!==r.t&&u(t,"height",r.t=a),i!==r.a&&u(t,"class",r.a=i),r.o=x(t,c,r.o),s!==r.i&&u(n,"fill",r.i=s),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),t})();var Pt=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 $t=e=>(()=>{var t=Pt();return l.createRenderEffect(n=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",c=e.strokeWidth??2,s=e.class,d=e.style;return r!==n.e&&u(t,"width",n.e=r),o!==n.t&&u(t,"height",n.t=o),a!==n.a&&u(t,"fill",n.a=a),i!==n.o&&u(t,"stroke",n.o=i),c!==n.i&&u(t,"stroke-width",n.i=c),s!==n.n&&u(t,"class",n.n=s),n.s=x(t,d,n.s),n},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),t})();var zt=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 Ot=e=>(()=>{var t=zt();return l.createRenderEffect(n=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",c=e.strokeWidth??2,s=e.class,d=e.style;return r!==n.e&&u(t,"width",n.e=r),o!==n.t&&u(t,"height",n.t=o),a!==n.a&&u(t,"fill",n.a=a),i!==n.o&&u(t,"stroke",n.o=i),c!==n.i&&u(t,"stroke-width",n.i=c),s!==n.n&&u(t,"class",n.n=s),n.s=x(t,d,n.s),n},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),t})();var Mt=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 ze=e=>(()=>{var t=Mt();return l.createRenderEffect(n=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",c=e.strokeWidth??2,s=e.class,d=e.style;return r!==n.e&&u(t,"width",n.e=r),o!==n.t&&u(t,"height",n.t=o),a!==n.a&&u(t,"fill",n.a=a),i!==n.o&&u(t,"stroke",n.o=i),c!==n.i&&u(t,"stroke-width",n.i=c),s!==n.n&&u(t,"class",n.n=s),n.s=x(t,d,n.s),n},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),t})();var Tt=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 It=e=>(()=>{var t=Tt();return l.createRenderEffect(n=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",c=e.strokeWidth??2,s=e.class,d=e.style;return r!==n.e&&u(t,"width",n.e=r),o!==n.t&&u(t,"height",n.t=o),a!==n.a&&u(t,"fill",n.a=a),i!==n.o&&u(t,"stroke",n.o=i),c!==n.i&&u(t,"stroke-width",n.i=c),s!==n.n&&u(t,"class",n.n=s),n.s=x(t,d,n.s),n},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),t})();var Dt=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 At=e=>(()=>{var t=Dt();return l.createRenderEffect(n=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",c=e.strokeWidth??2,s=e.class,d=e.style;return r!==n.e&&u(t,"width",n.e=r),o!==n.t&&u(t,"height",n.t=o),a!==n.a&&u(t,"fill",n.a=a),i!==n.o&&u(t,"stroke",n.o=i),c!==n.i&&u(t,"stroke-width",n.i=c),s!==n.n&&u(t,"class",n.n=s),n.s=x(t,d,n.s),n},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),t})();var jt=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 G=e=>(()=>{var t=jt();return l.createRenderEffect(n=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",c=e.strokeWidth??2,s=e.class,d=e.style;return r!==n.e&&u(t,"width",n.e=r),o!==n.t&&u(t,"height",n.t=o),a!==n.a&&u(t,"fill",n.a=a),i!==n.o&&u(t,"stroke",n.o=i),c!==n.i&&u(t,"stroke-width",n.i=c),s!==n.n&&u(t,"class",n.n=s),n.s=x(t,d,n.s),n},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),t})();var Ft=w("<div class=echo-color-selector><button class=echo-drawing-toolbar-button title=Color></button><div class=echo-color-swatch-wrapper><div class=echo-color-swatch>"),Lt=w("<button class=echo-color-swatch-button>");const Nt=["#ff6b6b","#69db7c","#74c0fc","#ffd43b","#da77f2","#66d9e8","#ffa94d","#e599f7"],Rt=()=>{const e=p();return(()=>{var t=Ft(),n=t.firstChild,r=n.nextSibling,o=r.firstChild;return m(o,l.createComponent(l.For,{get each(){return[e.widget.state.primaryColor,...Nt]},children:a=>(()=>{var i=Lt();return i.$$click=()=>e.drawing.setState({selectedColor:a}),u(i,"title",`Select ${a} color`),a!=null?i.style.setProperty("background-color",a):i.style.removeProperty("background-color"),l.createRenderEffect(()=>u(i,"data-selected",e.drawing.state.selectedColor===a)),i})()})),l.createRenderEffect(a=>(a=e.drawing.state.selectedColor)!=null?n.style.setProperty("background-color",a):n.style.removeProperty("background-color")),t})()};$(["click"]);var Yt=w('<div class=echo-drawing-toolbar data-hide-when-drawing=true><button class=echo-drawing-toolbar-button title="Clear drawings">'),Bt=w("<button class=echo-drawing-toolbar-button>");const Ht={rectangle:$t,path:Ot},Wt=()=>{const e=p(),t=Object.values(z);return(()=>{var n=Yt(),r=n.firstChild;return m(n,l.createComponent(l.For,{each:t,children:o=>{const a=Ht[o.id];return(()=>{var i=Bt();return i.$$click=()=>e.drawing.setState({selectedTool:o.id}),m(i,l.createComponent(a,{class:"echo-drawing-toolbar-icon"})),l.createRenderEffect(c=>{var s=o.label,d=e.drawing.state.selectedTool===o.id;return s!==c.e&&u(i,"title",c.e=s),d!==c.t&&u(i,"data-selected",c.t=d),c},{e:void 0,t:void 0}),i})()}}),r),m(n,l.createComponent(Rt,{}),r),r.$$click=()=>e.drawing.setState({shapes:[]},!0),m(r,l.createComponent(ze,{class:"echo-drawing-toolbar-icon"})),n})()};$(["click"]);var _t=w("<button>");const O=e=>{const t=()=>e.variant||"primary",n=()=>e.size||"md";return(()=>{var r=_t();return Ue(r,l.mergeProps(e,{get class(){return`echo-button echo-button-${t()} echo-button-${n()} ${e.class}`}}),!1),r})()};var Ut=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 Xt=e=>(()=>{var t=Ut();return l.createRenderEffect(n=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",c=e.strokeWidth??2,s=e.class,d=e.style;return r!==n.e&&u(t,"width",n.e=r),o!==n.t&&u(t,"height",n.t=o),a!==n.a&&u(t,"fill",n.a=a),i!==n.o&&u(t,"stroke",n.o=i),c!==n.i&&u(t,"stroke-width",n.i=c),s!==n.n&&u(t,"class",n.n=s),n.s=x(t,d,n.s),n},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),t})();var Kt=w("<div class=echo-stored-feedback-empty>No unsubmitted feedback"),Vt=w("<div class=echo-stored-feedback><div class=echo-stored-feedback-header><h3>Unsubmitted Feedback</h3></div><div class=echo-stored-feedback-list>"),Gt=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 qt=()=>{const e=p(),[t,n]=l.createSignal(ne()),[r,o]=l.createSignal(window.location.pathname),a=()=>{const h=ne();n(h),e.widget.setState({pagesCount:h.length})},i=()=>{o(window.location.pathname)};D({event:"echo-storage-change",callback:a}),D({event:"popstate",callback:i}),Z({target:document.documentElement,options:{childList:!0,subtree:!0},callback:()=>{o(window.location.pathname)}});const c=(h,f)=>{const g=f?`${h}${f}`:h;window.location.href=g,e.widget.setState({isStoredFeedbackOpen:!1})},s=h=>{r()===h&&e.methods.reset(),ge(h);const f=ne();n(f),e.widget.setState({pagesCount:f.length})},d=h=>{if(h==="/")return"/";const f=h.split("/");return f.length<=4?h:`/${f[1]}/.../${f[f.length-1]}`};return l.createComponent(l.Show,{get when(){return e.widget.state.isStoredFeedbackOpen},get children(){var h=Vt(),f=h.firstChild;f.firstChild;var g=f.nextSibling;return m(f,l.createComponent(O,{variant:"secondary",size:"sm",onClick:()=>e.widget.setState({isStoredFeedbackOpen:!1}),get children(){return l.createComponent(G,{size:20})}}),null),m(g,l.createComponent(l.For,{get each(){return t()},children:v=>{const b=l.createMemo(()=>v.path===r());return(()=>{var y=Gt(),S=y.firstChild,L=S.firstChild,$n=L.nextSibling,Me=S.nextSibling;return m(L,()=>d(v.path)),m($n,()=>v.state.feedback.comment),m(Me,(()=>{var T=l.createMemo(()=>!b());return()=>T()&&l.createComponent(O,{class:"echo-stored-feedback-link",variant:"secondary",size:"sm",onClick:()=>c(v.path,v.state.latestQuery),get children(){return l.createComponent(Xt,{})}})})(),null),m(Me,l.createComponent(O,{class:"echo-stored-feedback-delete",variant:"secondary",size:"sm",onClick:()=>s(v.path),children:"Delete"}),null),l.createRenderEffect(T=>{var Te=`echo-stored-feedback-item ${b()?"echo-stored-feedback-item-current":""}`,Ie=v.path;return Te!==T.e&&se(y,T.e=Te),Ie!==T.t&&u(L,"title",T.t=Ie),T},{e:void 0,t:void 0}),y})()}}),null),m(g,l.createComponent(l.Show,{get when(){return t().length===0},get children(){return Kt()}}),null),h}})};var Qt=w("<button class=echo-launcher-button>"),Zt=w("<span class=echo-launcher-button-count>");const Jt=()=>{const e=p(),[t,n]=l.createSignal(!1);let r;const o=()=>{r&&window.clearTimeout(r),r=window.setTimeout(()=>{const d=fe("welcome_message_shown",!1);!e.widget.state.isOpen&&!e.widget.state.isStoredFeedbackOpen&&d&&n(!0)},4e3)},a=()=>{n(!1)},i=()=>{o()},c=()=>{e.widget.setState({isOpen:!e.widget.state.isOpen}),e.widget.setState({welcomeMessageIsClosing:!0}),J("welcome_message_shown",!0)};l.createEffect(()=>{e.widget.state.isOpen||(n(!1),o()),e.widget.state.isStoredFeedbackOpen&&n(!1)});const s=d=>{d.stopPropagation(),e.widget.setState({isStoredFeedbackOpen:!e.widget.state.isStoredFeedbackOpen}),n(!1)};return[(()=>{var d=Qt();return d.addEventListener("pointerleave",i),d.addEventListener("pointerenter",a),d.$$click=c,m(d,l.createComponent(Et,{stroke:"white",fill:"#ffffff"}),null),m(d,(()=>{var h=l.createMemo(()=>e.widget.state.pagesCount>0);return()=>h()&&(()=>{var f=Zt();return f.$$click=s,m(f,()=>e.widget.state.pagesCount),f})()})(),null),l.createRenderEffect(h=>{var f=e.widget.state.isOpen,g=t()?"45px":"0";return f!==h.e&&u(d,"data-hidden",h.e=f),g!==h.t&&((h.t=g)!=null?d.style.setProperty("left",g):d.style.removeProperty("left")),h},{e:void 0,t:void 0}),d})(),l.createComponent(qt,{})]};$(["click"]);var en=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 tn=()=>{const e=p(),t=()=>{e.widget.setState({notification:{...e.widget.state.notification,show:!1}})},n=()=>{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=en(),o=r.firstChild,a=o.nextSibling,i=a.firstChild,c=i.nextSibling;return m(r,l.createComponent(O,{class:"echo-notification-hide",variant:"secondary",size:"sm",onClick:t,get title(){return e.widget.state.text.notification.hideTitle},get children(){return l.createComponent(G,{size:20})}}),o),m(o,(()=>{var s=l.createMemo(()=>e.widget.state.notification.type==="success");return()=>s()?l.createComponent(It,{size:32}):(()=>{var d=l.createMemo(()=>e.widget.state.notification.type==="error");return()=>d()?l.createComponent(At,{size:32}):null})()})()),m(i,n),m(c,()=>{var s;return(s=e.widget.state.notification)==null?void 0:s.message}),l.createRenderEffect(s=>{var d=e.widget.state.notification.type,h=!e.widget.state.notification.type,f=!e.widget.state.notification.show;return d!==s.e&&u(r,"data-type",s.e=d),h!==s.t&&u(r,"data-empty",s.t=h),f!==s.a&&u(r,"data-hidden",s.a=f),s},{e:void 0,t:void 0,a:void 0}),r})()};var nn=w("<button class=echo-welcome-message><span class=echo-welcome-message-pulsar></span><div class=echo-welcome-message-close role=button tabindex=0>");const rn=()=>{const e=p(),t=fe("welcome_message_shown",!1),n=o=>{o.stopPropagation(),e.widget.setState({welcomeMessageIsClosing:!0}),J("welcome_message_shown",!0)},r=()=>{e.widget.setState({isOpen:!0}),e.widget.setState({welcomeMessageIsClosing:!0}),J("welcome_message_shown",!0)};return t?null:(()=>{var o=nn(),a=o.firstChild,i=a.nextSibling;return o.$$click=r,o.style.setProperty("bottom","80px"),o.style.setProperty("right","20px"),m(o,()=>e.widget.state.text.welcomeMessage.text,i),i.$$keydown=c=>c.key==="Enter"&&n(c),i.$$click=n,m(i,l.createComponent(G,{size:16,strokeWidth:3})),l.createRenderEffect(c=>{var s=e.widget.state.welcomeMessageIsClosing,d=e.widget.state.text.welcomeMessage.closeAriaLabel;return s!==c.e&&u(o,"data-hidden",c.e=s),d!==c.t&&u(i,"aria-label",c.t=d),c},{e:void 0,t:void 0}),o})()};$(["click","keydown"]);var on=w("<svg><rect class=echo-shape fill=transparent vector-effect=non-scaling-stroke></svg>",!1,!0),an=w("<svg><path class=echo-shape fill=none vector-effect=non-scaling-stroke stroke-linecap=round></svg>",!1,!0);const Oe=e=>{const t=l.createMemo(()=>e.id===e.selectedShapeId);return[l.createComponent(l.Show,{get when(){return e.type==="rectangle"},get children(){return l.createComponent(sn,l.mergeProps(e,{get isSelected(){return t()}}))}}),l.createComponent(l.Show,{get when(){return e.type==="path"},get children(){return l.createComponent(cn,l.mergeProps(e,{get isSelected(){return t()}}))}})]},sn=e=>{const t=l.createMemo(()=>Ce(e.points));return l.createComponent(l.Show,{get when(){return t()},get children(){var n=on();return n.$$click=()=>{var r;return(r=e.onShapeClick)==null?void 0:r.call(e,e.id)},l.createRenderEffect(r=>{var o=e.id,a=e.isSelected,i=t().x,c=t().y,s=t().width,d=t().height,h=e.color,f=z.rectangle.strokeWidth,g=e.isSelected?z.rectangle.opacity.selected:z.rectangle.opacity.default,v=e.isSelected?"5,5":"none",b=e.isSelected?"move":"pointer";return o!==r.e&&u(n,"data-shape-id",r.e=o),a!==r.t&&u(n,"data-selected",r.t=a),i!==r.a&&u(n,"x",r.a=i),c!==r.o&&u(n,"y",r.o=c),s!==r.i&&u(n,"width",r.i=s),d!==r.n&&u(n,"height",r.n=d),h!==r.s&&u(n,"stroke",r.s=h),f!==r.h&&u(n,"stroke-width",r.h=f),g!==r.r&&u(n,"opacity",r.r=g),v!==r.d&&u(n,"stroke-dasharray",r.d=v),b!==r.l&&u(n,"cursor",r.l=b),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}),n}})},cn=e=>{const t=l.createMemo(()=>dt(e.points));return l.createComponent(l.Show,{get when(){return t()},get children(){var n=an();return n.$$click=()=>{var r;return(r=e.onShapeClick)==null?void 0:r.call(e,e.id)},l.createRenderEffect(r=>{var o=e.id,a=e.isSelected,i=t(),c=e.color,s=z.path.strokeWidth,d=e.isSelected?z.path.opacity.selected:z.path.opacity.default,h=e.isSelected?"move":"pointer";return o!==r.e&&u(n,"data-shape-id",r.e=o),a!==r.t&&u(n,"data-selected",r.t=a),i!==r.a&&u(n,"d",r.a=i),c!==r.o&&u(n,"stroke",r.o=c),s!==r.i&&u(n,"stroke-width",r.i=s),d!==r.n&&u(n,"opacity",r.n=d),h!==r.s&&u(n,"cursor",r.s=h),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n}})};$(["click"]);var ln=w("<div class=echo-drawing-tooltip data-hide-when-drawing=true>");const dn=()=>{const e=p(),t=l.createMemo(()=>e.drawing.state.showTooltip&&e.drawing.state.mousePosition.y&&e.drawing.state.mousePosition.x&&e.widget.state.isOpen&&!ke());return l.createComponent(l.Show,{get when(){return t()},get children(){var n=ln();return m(n,()=>e.widget.state.text.drawingTooltip.text),l.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?n.style.setProperty("top",o):n.style.removeProperty("top")),a!==r.t&&((r.t=a)!=null?n.style.setProperty("left",a):n.style.removeProperty("left")),r},{e:void 0,t:void 0}),n}})};var hn=w("<div class=echo-shape-actions data-hide-when-drawing=true>");const un=()=>{const e=p();let t;const[n,r]=l.createSignal({x:window.scrollX,y:window.scrollY});D({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=l.createMemo(()=>e.drawing.state.selectedShapeId?e.drawing.state.shapes.find(s=>s.id===e.drawing.state.selectedShapeId):null),c=l.createMemo(()=>{const s=i(),d=t==null?void 0:t.getBoundingClientRect();if(!s||!d)return null;let h=null;if(s.type==="rectangle"){const v=Ce(s.points);if(!v)return null;h={x:v.x+v.width/2,y:v.y}}else if(s.type==="path"&&s.points.length>0)h={x:s.points[0].x,y:s.points[0].y};else return null;const f=8,g=n();return{x:Math.max(d.width/2+f,Math.min(window.innerWidth-d.width/2-f,h.x-g.x)),y:Math.max(d.height+f,Math.min(window.innerHeight-f,h.y-g.y))}});return(()=>{var s=hn(),d=t;return typeof d=="function"?R(d,s):t=s,m(s,l.createComponent(O,{onClick:a,size:"sm",variant:"secondary",title:"Delete shape",get children(){return l.createComponent(ze,{size:20})}})),l.createRenderEffect(h=>{var b,y;var f=!c(),g=c()?`${(b=c())==null?void 0:b.x}px`:"0",v=c()?`${(y=c())==null?void 0:y.y}px`:"0";return f!==h.e&&(s.hidden=h.e=f),g!==h.t&&((h.t=g)!=null?s.style.setProperty("left",g):s.style.removeProperty("left")),v!==h.a&&((h.a=v)!=null?s.style.setProperty("top",v):s.style.removeProperty("top")),h},{e:void 0,t:void 0,a:void 0}),s})()};var fn=w('<div class=echo-drawing-layer-container><svg width=100% height=100% class=echo-drawing-layer preserveAspectRatio=none><path class=echo-drawing-layer-mask fill="rgba(33, 43, 55, 1)"fill-opacity=0.2 fill-rule=evenodd>');const gn=()=>{const e=p();let t;return l.onMount(()=>{t==null||t.addEventListener("mousemove",e.drawing.methods.handleMove),t==null||t.addEventListener("mouseup",e.drawing.methods.handleEnd),t==null||t.addEventListener("touchmove",e.drawing.methods.handleMove,{passive:!1}),t==null||t.addEventListener("touchend",e.drawing.methods.handleEnd)}),l.onCleanup(()=>{t==null||t.removeEventListener("mousemove",e.drawing.methods.handleMove),t==null||t.removeEventListener("mouseup",e.drawing.methods.handleEnd),t==null||t.removeEventListener("touchmove",e.drawing.methods.handleMove),t==null||t.removeEventListener("touchend",e.drawing.methods.handleEnd)}),(()=>{var n=fn(),r=n.firstChild,o=r.firstChild,a=t;return typeof a=="function"?R(a,n):t=n,m(n,l.createComponent(dn,{}),r),m(n,l.createComponent(un,{}),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})},m(r,l.createComponent(l.For,{get each(){return e.drawing.state.shapes},children:i=>l.createComponent(Oe,{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),m(r,l.createComponent(Oe,{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),l.createRenderEffect(i=>{var c=e.drawing.state.cursor,s=gt({width:e.widget.state.dimensions.width,height:e.widget.state.dimensions.height},e.drawing.state.currentPoints,e.drawing.state.shapes);return c!==i.e&&((i.e=c)!=null?n.style.setProperty("cursor",c):n.style.removeProperty("cursor")),s!==i.t&&u(o,"d",i.t=s),i},{e:void 0,t:void 0}),n})()};$(["mousedown","touchstart","mousemove","touchmove","touchend"]);var mn=w("<div class=echo-feedback data-hide-when-drawing=true><form class=echo-feedback-content><div class=echo-feedback-header><h3 class=echo-feedback-title></h3><div class=echo-feedback-header-actions></div></div><textarea class=echo-feedback-form-textarea required>");const vn=()=>{let e;const t=p(),n=ke(),r=async i=>{i.preventDefault();const c=await ft(),s={comment:t.feedback.state.comment,screenshot:c,metadata:{url:window.location.href,userAgent:navigator.userAgent,timestamp:new Date().toISOString(),browserInfo:{width:window.innerWidth,height:window.innerHeight,screenWidth:window.screen.width,screenHeight:window.screen.height,isMobile:n}}};try{t.widget.setState({isOpen:!1}),await t.methods.onSubmit({...s,console:xe()}),t.methods.postSubmit({show:!0,type:"success",message:""})}catch{t.methods.postSubmit({show:!0,type:"error",message:t.widget.state.text.notification.errorMessage})}};l.createEffect(()=>{e&&t.widget.state.isOpen&&e.focus()});const o=i=>{i.stopPropagation(),t.feedback.setState({isMinimized:!0})},a=()=>{t.feedback.setState({isMinimized:!1})};return(()=>{var i=mn(),c=i.firstChild,s=c.firstChild,d=s.firstChild,h=d.nextSibling,f=s.nextSibling;i.$$click=()=>t.feedback.state.isMinimized&&a(),c.addEventListener("submit",r),m(d,()=>t.widget.state.text.feedbackForm.title),m(h,l.createComponent(O,{type:"button",title:"Hide form",variant:"secondary",size:"sm",onClick:o,get children(){return l.createComponent(St,{size:20})}}),null),m(h,l.createComponent(O,{type:"button",title:"Close form",variant:"secondary",size:"sm",onClick:()=>t.widget.setState({isOpen:!1}),get children(){return l.createComponent(G,{size:20})}}),null),f.$$input=v=>t.feedback.setState({comment:v.currentTarget.value});var g=e;return typeof g=="function"?R(g,f):e=f,m(c,l.createComponent(O,{type:"submit",variant:"primary",size:"lg",style:{width:"100%"},get children(){return t.widget.state.text.feedbackForm.submitButton}}),null),l.createRenderEffect(v=>{var b=t.feedback.state.isMinimized,y=t.feedback.state.isMinimized?"pointer":"default",S=t.widget.state.text.feedbackForm.placeholder;return b!==v.e&&u(i,"data-minimized",v.e=b),y!==v.t&&((v.t=y)!=null?i.style.setProperty("cursor",y):i.style.removeProperty("cursor")),S!==v.a&&u(f,"placeholder",v.a=S),v},{e:void 0,t:void 0,a:void 0}),l.createRenderEffect(()=>f.value=t.feedback.state.comment),i})()};$(["click","input"]);var wn=w("<style>"),bn=w("<div class=echo-launcher>"),pn=w("<div class=echo-overlay>"),yn=w("<div class=echo-root>");const xn=e=>l.createComponent(Qe,{useShadow:!0,get mount(){return document.body},get children(){return l.createComponent(yt,l.mergeProps(e,{get children(){return l.createComponent(Cn,{get children(){return[l.createComponent(kn,{get primaryColor(){return e.primaryColor}}),l.createComponent(Sn,{})]}})}}))}}),kn=e=>{const[t,n]=l.createSignal("");return l.createEffect(()=>{const r=`
|
1
|
+
(function(E,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("solid-js"),require("html2canvas")):typeof define=="function"&&define.amd?define(["exports","solid-js","html2canvas"],l):(E=typeof globalThis<"u"?globalThis:E||self,l(E.Echo={},E.Solid,E.html2canvas))})(this,function(E,l,Ie){"use strict";const De=["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"],Ae=new Set(["className","value","readOnly","formNoValidate","isMap","noModule","playsInline",...De]),je=new Set(["innerHTML","textContent","innerText","children"]),Fe=Object.assign(Object.create(null),{className:"class",htmlFor:"for"}),Le=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 Ne(e,t){const n=Le[e];return typeof n=="object"?n[t]?n.$:void 0:n}const Re=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 Ye(e,t,n){let r=n.length,a=t.length,o=r,i=0,c=0,s=t[a-1].nextSibling,d=null;for(;i<a||c<o;){if(t[i]===n[c]){i++,c++;continue}for(;t[a-1]===n[o-1];)a--,o--;if(a===i){const h=o<r?c?n[c-1].nextSibling:n[o-c]:s;for(;c<o;)e.insertBefore(n[c++],h)}else if(o===c)for(;i<a;)(!d||!d.has(t[i]))&&t[i].remove(),i++;else if(t[i]===n[o-1]&&n[c]===t[a-1]){const h=t[--a].nextSibling;e.insertBefore(n[c++],t[i++].nextSibling),e.insertBefore(n[--o],h),t[a]=n[o]}else{if(!d){d=new Map;let f=c;for(;f<o;)d.set(n[f],f++)}const h=d.get(t[i]);if(h!=null)if(c<h&&h<o){let f=i,g=1,v;for(;++f<a&&f<o&&!((v=d.get(t[f]))==null||v!==h+g);)g++;if(g>h-c){const b=t[i];for(;c<h;)e.insertBefore(n[c++],b)}else e.replaceChild(n[c++],t[i++])}else i++;else t[i++].remove()}}}const ie="_$DX_DELEGATE";function Be(e,t,n,r={}){let a;return l.createRoot(o=>{a=o,t===document?e():m(t,e(),t.firstChild?null:void 0,n)},r.owner),()=>{a(),t.textContent=""}}function w(e,t,n){let r;const a=()=>{const i=document.createElement("template");return i.innerHTML=e,n?i.content.firstChild.firstChild:i.content.firstChild},o=t?()=>l.untrack(()=>document.importNode(r||(r=a()),!0)):()=>(r||(r=a())).cloneNode(!0);return o.cloneNode=o,o}function P(e,t=window.document){const n=t[ie]||(t[ie]=new Set);for(let r=0,a=e.length;r<a;r++){const o=e[r];n.has(o)||(n.add(o),t.addEventListener(o,Ke))}}function u(e,t,n){Y(e)||(n==null?e.removeAttribute(t):e.setAttribute(t,n))}function He(e,t,n){Y(e)||(n?e.setAttribute(t,""):e.removeAttribute(t))}function se(e,t){Y(e)||(t==null?e.removeAttribute("class"):e.className=t)}function N(e,t,n,r){if(r)Array.isArray(n)?(e[`$$${t}`]=n[0],e[`$$${t}Data`]=n[1]):e[`$$${t}`]=n;else if(Array.isArray(n)){const a=n[0];e.addEventListener(t,n[0]=o=>a.call(e,n[1],o))}else e.addEventListener(t,n,typeof n!="function"&&n)}function We(e,t,n={}){const r=Object.keys(t||{}),a=Object.keys(n);let o,i;for(o=0,i=a.length;o<i;o++){const c=a[o];!c||c==="undefined"||t[c]||(ce(e,c,!1),delete n[c])}for(o=0,i=r.length;o<i;o++){const c=r[o],s=!!t[c];!c||c==="undefined"||n[c]===s||!s||(ce(e,c,!0),n[c]=s)}return n}function x(e,t,n){if(!t)return n?u(e,"style"):t;const r=e.style;if(typeof t=="string")return r.cssText=t;typeof n=="string"&&(r.cssText=n=void 0),n||(n={}),t||(t={});let a,o;for(o in n)t[o]==null&&r.removeProperty(o),delete n[o];for(o in t)a=t[o],a!==n[o]&&(r.setProperty(o,a),n[o]=a);return n}function _e(e,t={},n,r){const a={};return l.createRenderEffect(()=>a.children=B(e,t.children,a.children)),l.createRenderEffect(()=>typeof t.ref=="function"&&R(t.ref,e)),l.createRenderEffect(()=>Ue(e,t,n,!0,a,!0)),a}function R(e,t,n){return l.untrack(()=>e(t,n))}function m(e,t,n,r){if(n!==void 0&&!r&&(r=[]),typeof t!="function")return B(e,t,r,n);l.createRenderEffect(a=>B(e,t(),a,n),r)}function Ue(e,t,n,r,a={},o=!1){t||(t={});for(const i in a)if(!(i in t)){if(i==="children")continue;a[i]=le(e,i,null,a[i],n,o,t)}for(const i in t){if(i==="children")continue;const c=t[i];a[i]=le(e,i,c,a[i],n,o,t)}}function Y(e){return!!l.sharedConfig.context&&!l.sharedConfig.done&&(!e||e.isConnected)}function Xe(e){return e.toLowerCase().replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}function ce(e,t,n){const r=t.trim().split(/\s+/);for(let a=0,o=r.length;a<o;a++)e.classList.toggle(r[a],n)}function le(e,t,n,r,a,o,i){let c,s,d,h,f;if(t==="style")return x(e,n,r);if(t==="classList")return We(e,n,r);if(n===r)return r;if(t==="ref")o||n(e);else if(t.slice(0,3)==="on:"){const g=t.slice(3);r&&e.removeEventListener(g,r,typeof r!="function"&&r),n&&e.addEventListener(g,n,typeof n!="function"&&n)}else if(t.slice(0,10)==="oncapture:"){const g=t.slice(10);r&&e.removeEventListener(g,r,!0),n&&e.addEventListener(g,n,!0)}else if(t.slice(0,2)==="on"){const g=t.slice(2).toLowerCase(),v=Re.has(g);if(!v&&r){const b=Array.isArray(r)?r[0]:r;e.removeEventListener(g,b)}(v||n)&&(N(e,g,n,v),v&&P([g]))}else if(t.slice(0,5)==="attr:")u(e,t.slice(5),n);else if(t.slice(0,5)==="bool:")He(e,t.slice(5),n);else if((f=t.slice(0,5)==="prop:")||(d=je.has(t))||(h=Ne(t,e.tagName))||(s=Ae.has(t))||(c=e.nodeName.includes("-")||"is"in i)){if(f)t=t.slice(5),s=!0;else if(Y(e))return n;t==="class"||t==="className"?se(e,n):c&&!s&&!d?e[Xe(t)]=n:e[h||t]=n}else u(e,Fe[t]||t,n);return n}function Ke(e){if(l.sharedConfig.registry&&l.sharedConfig.events&&l.sharedConfig.events.find(([s,d])=>d===e))return;let t=e.target;const n=`$$${e.type}`,r=e.target,a=e.currentTarget,o=s=>Object.defineProperty(e,"target",{configurable:!0,value:s}),i=()=>{const s=t[n];if(s&&!t.disabled){const d=t[`${n}Data`];if(d!==void 0?s.call(t,d,e):s.call(t,e),e.cancelBubble)return}return t.host&&typeof t.host!="string"&&!t.host._$host&&t.contains(e.target)&&o(t.host),!0},c=()=>{for(;i()&&(t=t._$host||t.parentNode||t.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t||document}}),l.sharedConfig.registry&&!l.sharedConfig.done&&(l.sharedConfig.done=_$HY.done=!0),e.composedPath){const s=e.composedPath();o(s[0]);for(let d=0;d<s.length-2&&(t=s[d],!!i());d++){if(t._$host){t=t._$host,c();break}if(t.parentNode===a)break}}else c();o(r)}function B(e,t,n,r,a){const o=Y(e);if(o){!n&&(n=[...e.childNodes]);let s=[];for(let d=0;d<n.length;d++){const h=n[d];h.nodeType===8&&h.data.slice(0,2)==="!$"?h.remove():s.push(h)}n=s}for(;typeof n=="function";)n=n();if(t===n)return n;const i=typeof t,c=r!==void 0;if(e=c&&n[0]&&n[0].parentNode||e,i==="string"||i==="number"){if(o||i==="number"&&(t=t.toString(),t===n))return n;if(c){let s=n[0];s&&s.nodeType===3?s.data!==t&&(s.data=t):s=document.createTextNode(t),n=I(e,n,r,s)}else n!==""&&typeof n=="string"?n=e.firstChild.data=t:n=e.textContent=t}else if(t==null||i==="boolean"){if(o)return n;n=I(e,n,r)}else{if(i==="function")return l.createRenderEffect(()=>{let s=t();for(;typeof s=="function";)s=s();n=B(e,s,n,r)}),()=>n;if(Array.isArray(t)){const s=[],d=n&&Array.isArray(n);if(Q(s,t,n,a))return l.createRenderEffect(()=>n=B(e,s,n,r,!0)),()=>n;if(o){if(!s.length)return n;if(r===void 0)return n=[...e.childNodes];let h=s[0];if(h.parentNode!==e)return n;const f=[h];for(;(h=h.nextSibling)!==r;)f.push(h);return n=f}if(s.length===0){if(n=I(e,n,r),c)return n}else d?n.length===0?de(e,s,r):Ye(e,n,s):(n&&I(e),de(e,s));n=s}else if(t.nodeType){if(o&&t.parentNode)return n=c?[t]:t;if(Array.isArray(n)){if(c)return n=I(e,n,r,t);I(e,n,null,t)}else n==null||n===""||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);n=t}}return n}function Q(e,t,n,r){let a=!1;for(let o=0,i=t.length;o<i;o++){let c=t[o],s=n&&n[e.length],d;if(!(c==null||c===!0||c===!1))if((d=typeof c)=="object"&&c.nodeType)e.push(c);else if(Array.isArray(c))a=Q(e,c,s)||a;else if(d==="function")if(r){for(;typeof c=="function";)c=c();a=Q(e,Array.isArray(c)?c:[c],Array.isArray(s)?s:[s])||a}else e.push(c),a=!0;else{const h=String(c);s&&s.nodeType===3&&s.data===h?e.push(s):e.push(document.createTextNode(h))}}return a}function de(e,t,n=null){for(let r=0,a=t.length;r<a;r++)e.insertBefore(t[r],n)}function I(e,t,n,r){if(n===void 0)return e.textContent="";const a=r||document.createTextNode("");if(t.length){let o=!1;for(let i=t.length-1;i>=0;i--){const c=t[i];if(a!==c){const s=c.parentNode===e;!o&&!i?s?e.replaceChild(a,c):e.insertBefore(a,n):s&&c.remove()}else o=!0}}else e.insertBefore(a,n);return[a]}const Ve="http://www.w3.org/2000/svg";function Ge(e,t=!1){return t?document.createElementNS(Ve,e):document.createElement(e)}function qe(e){const{useShadow:t}=e,n=document.createTextNode(""),r=()=>e.mount||document.body,a=l.getOwner();let o,i=!!l.sharedConfig.context;return l.createEffect(()=>{i&&(l.getOwner().user=i=!1),o||(o=l.runWithOwner(a,()=>l.createMemo(()=>e.children)));const c=r();if(c instanceof HTMLHeadElement){const[s,d]=l.createSignal(!1),h=()=>d(!0);l.createRoot(f=>m(c,()=>s()?f():o(),null)),l.onCleanup(h)}else{const s=Ge(e.isSVG?"g":"div",e.isSVG),d=t&&s.attachShadow?s.attachShadow({mode:"open"}):s;Object.defineProperty(s,"_$host",{get(){return n.parentNode},configurable:!0}),m(d,o),c.appendChild(s),e.ref&&e.ref(s),l.onCleanup(()=>c.removeChild(s))}},void 0,{render:!i}),n}const Qe=(e,t)=>{let n;return(...r)=>{clearTimeout(n),n=window.setTimeout(()=>e(...r),t)}},Ze=(e,t)=>{D({event:"keydown",callback:n=>{n.key===e&&t(n)}})},D=e=>{const{event:t,callback:n,onMount:r,onCleanup:a}=e,o=i=>{n(i)};l.onMount(()=>{r==null||r(),window.addEventListener(t,o)}),l.onCleanup(()=>{a==null||a(),window.removeEventListener(t,o)})},Z=e=>{const{target:t,options:n,callback:r,onMount:a,onCleanup:o}=e,i=new MutationObserver(r);l.onMount(()=>{a==null||a(),i.observe(t,n)}),l.onCleanup(()=>{o==null||o(),i.disconnect()})},Je="echo_",O="echo_page_state",he=()=>{window.dispatchEvent(new CustomEvent("echo-storage-change"))},ue=e=>`${Je}${e}`,fe=(e,t)=>{try{const n=localStorage.getItem(ue(e));return n?JSON.parse(n):t}catch{return t}},J=(e,t)=>{try{localStorage.setItem(ue(e),JSON.stringify(t))}catch(n){console.warn("Failed to save to localStorage:",n)}},ee=()=>window.location.pathname,et=(e,t)=>{try{const n=localStorage.getItem(O),r=n?JSON.parse(n):{};if(!t.feedback.comment&&(!t.drawing.shapes||t.drawing.shapes.length===0))delete r[e];else{const a=window.location.search||void 0,o={feedback:{comment:t.feedback.comment},drawing:{shapes:t.drawing.shapes},latestQuery:a};r[e]=o}localStorage.setItem(O,JSON.stringify(r)),he()}catch(n){console.error("Failed to save page state:",n)}},te=e=>{try{const t=localStorage.getItem(O);return t&&JSON.parse(t)[e]||null}catch(t){return console.error("Failed to load page state:",t),null}},ge=e=>{try{const t=localStorage.getItem(O);if(!t)return;const n=JSON.parse(t);delete n[e],localStorage.setItem(O,JSON.stringify(n)),he()}catch(t){console.error("Failed to clear page state:",t)}},me=()=>{try{const e=localStorage.getItem(O);if(!e)return 0;const t=JSON.parse(e);return Object.keys(t).length}catch(e){return console.error("Failed to get stored pages count:",e),0}},ne=()=>{try{const e=localStorage.getItem(O);if(!e)return[];const t=JSON.parse(e);return Object.entries(t).map(([n,r])=>({path:n,state:r}))}catch(e){return console.error("Failed to get stored pages:",e),[]}},re=Symbol("store-raw"),A=Symbol("store-node"),S=Symbol("store-has"),ve=Symbol("store-self");function we(e){let t=e[l.$PROXY];if(!t&&(Object.defineProperty(e,l.$PROXY,{value:t=new Proxy(e,rt)}),!Array.isArray(e))){const n=Object.keys(e),r=Object.getOwnPropertyDescriptors(e);for(let a=0,o=n.length;a<o;a++){const i=n[a];r[i].get&&Object.defineProperty(e,i,{enumerable:r[i].enumerable,get:r[i].get.bind(t)})}}return t}function U(e){let t;return e!=null&&typeof e=="object"&&(e[l.$PROXY]||!(t=Object.getPrototypeOf(e))||t===Object.prototype||Array.isArray(e))}function H(e,t=new Set){let n,r,a,o;if(n=e!=null&&e[re])return n;if(!U(e)||t.has(e))return e;if(Array.isArray(e)){Object.isFrozen(e)?e=e.slice(0):t.add(e);for(let i=0,c=e.length;i<c;i++)a=e[i],(r=H(a,t))!==a&&(e[i]=r)}else{Object.isFrozen(e)?e=Object.assign({},e):t.add(e);const i=Object.keys(e),c=Object.getOwnPropertyDescriptors(e);for(let s=0,d=i.length;s<d;s++)o=i[s],!c[o].get&&(a=e[o],(r=H(a,t))!==a&&(e[o]=r))}return e}function X(e,t){let n=e[t];return n||Object.defineProperty(e,t,{value:n=Object.create(null)}),n}function W(e,t,n){if(e[t])return e[t];const[r,a]=l.createSignal(n,{equals:!1,internal:!0});return r.$=a,e[t]=r}function tt(e,t){const n=Reflect.getOwnPropertyDescriptor(e,t);return!n||n.get||!n.configurable||t===l.$PROXY||t===A||(delete n.value,delete n.writable,n.get=()=>e[l.$PROXY][t]),n}function be(e){l.getListener()&&W(X(e,A),ve)()}function nt(e){return be(e),Reflect.ownKeys(e)}const rt={get(e,t,n){if(t===re)return e;if(t===l.$PROXY)return n;if(t===l.$TRACK)return be(e),n;const r=X(e,A),a=r[t];let o=a?a():e[t];if(t===A||t===S||t==="__proto__")return o;if(!a){const i=Object.getOwnPropertyDescriptor(e,t);l.getListener()&&(typeof o!="function"||e.hasOwnProperty(t))&&!(i&&i.get)&&(o=W(r,t,o)())}return U(o)?we(o):o},has(e,t){return t===re||t===l.$PROXY||t===l.$TRACK||t===A||t===S||t==="__proto__"?!0:(l.getListener()&&W(X(e,S),t)(),t in e)},set(){return!0},deleteProperty(){return!0},ownKeys:nt,getOwnPropertyDescriptor:tt};function K(e,t,n,r=!1){if(!r&&e[t]===n)return;const a=e[t],o=e.length;n===void 0?(delete e[t],e[S]&&e[S][t]&&a!==void 0&&e[S][t].$()):(e[t]=n,e[S]&&e[S][t]&&a===void 0&&e[S][t].$());let i=X(e,A),c;if((c=W(i,t,a))&&c.$(()=>n),Array.isArray(e)&&e.length!==o){for(let s=e.length;s<o;s++)(c=i[s])&&c.$();(c=W(i,"length",o))&&c.$(e.length)}(c=i[ve])&&c.$()}function pe(e,t){const n=Object.keys(t);for(let r=0;r<n.length;r+=1){const a=n[r];K(e,a,t[a])}}function ot(e,t){if(typeof t=="function"&&(t=t(e)),t=H(t),Array.isArray(t)){if(e===t)return;let n=0,r=t.length;for(;n<r;n++){const a=t[n];e[n]!==a&&K(e,n,a)}K(e,"length",r)}else pe(e,t)}function _(e,t,n=[]){let r,a=e;if(t.length>1){r=t.shift();const i=typeof r,c=Array.isArray(e);if(Array.isArray(r)){for(let s=0;s<r.length;s++)_(e,[r[s]].concat(t),n);return}else if(c&&i==="function"){for(let s=0;s<e.length;s++)r(e[s],s)&&_(e,[s].concat(t),n);return}else if(c&&i==="object"){const{from:s=0,to:d=e.length-1,by:h=1}=r;for(let f=s;f<=d;f+=h)_(e,[f].concat(t),n);return}else if(t.length>1){_(e[r],t,[r].concat(n));return}a=e[r],n=[r].concat(n)}let o=t[0];typeof o=="function"&&(o=o(a,n),o===a)||r===void 0&&o==null||(o=H(o),r===void 0||U(a)&&U(o)&&!Array.isArray(o)?pe(a,o):K(e,r,o))}function oe(...[e,t]){const n=H(e||{}),r=Array.isArray(n),a=we(n);function o(...i){l.batch(()=>{r&&i.length===1?ot(n,i[0]):_(n,i)})}return[a,o]}const $={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}}},at=e=>{const t=e.replace("#",""),n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,2),16)/255,a=Number.parseInt(t.slice(4,2),16)/255;return .2126*n+.7152*r+.0722*a},it=e=>at(e)<.5?"#FFFFFF":"#000000",ye=(e,t)=>{if(!t)return e;const n={...e};for(const r in t)t[r]&&typeof t[r]=="object"&&!Array.isArray(t[r])?n[r]=ye(e[r],t[r]):n[r]=t[r];return n};let C=[],k=null,j=null,F=null;const ae=(e,t)=>(...n)=>{const r=n.map(a=>typeof a=="string"?a:a instanceof Error?a.stack||a.message:JSON.stringify(a)).join(" ");C.push({type:e,message:r,timestamp:new Date().toISOString()}),C.length>1e3&&(C=C.slice(-1e3)),t.apply(console,n)},st=()=>{k||(k={log:console.log,warn:console.warn,error:console.error},j=window.onerror,F=window.onunhandledrejection,window.onerror=(e,t,n,r,a)=>{const o=(a==null?void 0:a.stack)||(a==null?void 0:a.message)||e;return C.push({type:"error",message:`Uncaught Error: ${o}
|
2
|
+
Location: ${t}:${n}:${r}`,timestamp:new Date().toISOString()}),j?j(e,t,n,r,a):!1},window.onunhandledrejection=e=>{const t=e.reason;C.push({type:"error",message:`Unhandled Promise Rejection: ${(t==null?void 0:t.stack)||(t==null?void 0:t.message)||t}`,timestamp:new Date().toISOString()}),F&&F(e)},console.log=ae("log",k.log),console.warn=ae("warn",k.warn),console.error=ae("error",k.error),window.addEventListener("error",e=>{const{message:t,filename:n,lineno:r,colno:a,error:o}=e,i=(o==null?void 0:o.stack)||(o==null?void 0:o.message)||t;C.push({type:"error",message:`Uncaught Error: ${i}
|
3
|
+
Location: ${n}:${r}:${a}`,timestamp:new Date().toISOString()})}))},ct=()=>{k&&(console.log=k.log,console.warn=k.warn,console.error=k.error,k=null),j&&(window.onerror=j,j=null),F&&(window.onunhandledrejection=F,F=null),window.removeEventListener("error",()=>{}),C=[]},xe=()=>[...C],lt=()=>{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)},V=(e,{useClientCoords:t=!1}={})=>{const r=typeof TouchEvent<"u"&&e instanceof TouchEvent?e.touches[0]:null;return{x:r?t?r.clientX:r.pageX:t?e.clientX:e.pageX,y:r?t?r.clientY:r.pageY:t?e.clientY:e.pageY}},ke=(e,t)=>{const n=t.x-e.x,r=t.y-e.y;return Math.sqrt(n*n+r*r)},Se=e=>{if(e.length!==2)return null;const[t,n]=e;return{x:Math.min(t.x,n.x),y:Math.min(t.y,n.y),width:Math.abs(n.x-t.x),height:Math.abs(n.y-t.y)}},dt=e=>e.length<2?null:`M ${e[0].x} ${e[0].y} ${e.slice(1).map(t=>`L ${t.x} ${t.y}`).join(" ")}`,ht=(e,t)=>{const n=document.createElement("canvas");return n.width=e,n.height=t,n},ut=e=>e.hasAttribute("data-hide-when-drawing"),ft=async()=>{try{const e=await Ie(document.body,{backgroundColor:null,logging:!1,useCORS:!0,scale:1,allowTaint:!0,foreignObjectRendering:!0,ignoreElements:ut}),t=ht(e.width,e.height),n=t.getContext("2d");if(!n)throw new Error("Failed to get canvas context");return n.drawImage(e,0,0),t.toDataURL()}catch(e){console.error("Failed to capture screenshot:",e);return}},gt=(e,t,n)=>{let r=`M0 0 H${e.width} V${e.height} H0 Z`;if(t.length===2){const[a,o]=t;r+=` M${a.x} ${a.y} h${o.x-a.x} v${o.y-a.y} h${a.x-o.x} v${a.y-o.y}`}for(const a of n)if(a.type==="rectangle"){const[o,i]=a.points;r+=` M${o.x} ${o.y} h${i.x-o.x} v${i.y-o.y} h${o.x-i.x} v${o.y-i.y}`}return r},mt=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")},Ce=5,Ee=(e,t)=>$[e].getCursor(t),vt=(e,t,n)=>{var c,s;const[r,a]=oe({isDrawing:!1,currentPoints:[],selectedShapeId:null,selectedTool:"rectangle",showTooltip:!0,mousePosition:{x:0,y:0},selectedColor:e.primaryColor,shapes:((s=(c=te(t))==null?void 0:c.drawing)==null?void 0:s.shapes)||[],hasDrawn:!1,isDragging:!1,dragStartPos:null,initialClickPos:null,dragOffset:null,cursor:Ee("rectangle",e.primaryColor)}),o=(d,h=!1)=>{if(d.selectedTool||d.selectedColor){const f=d.selectedTool||r.selectedTool,g=d.selectedColor||r.selectedColor;d.cursor=Ee(f,g)}a(d),n==null||n(d,h)},i={startDrawing:d=>{o({isDrawing:!0,currentPoints:[d],selectedShapeId:null})},updateDrawing:d=>{r.selectedTool==="rectangle"?o({currentPoints:[r.currentPoints[0],d]}):r.selectedTool==="path"&&o({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};o({shapes:[...r.shapes,d]})}o({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 h=V(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(v=>v.id===f);if(g){i.startDrag(h),i.updateDragOffset(g,h);return}}}i.setInitialClick(h)},handleMove:d=>{const h=V(d,{useClientCoords:!0}),f=V(d);if(o({mousePosition:h}),r.isDragging&&r.selectedShapeId&&r.dragStartPos&&r.shapes.find(v=>v.id===r.selectedShapeId)){const v=f.x-r.dragStartPos.x,b=f.y-r.dragStartPos.y,y=r.shapes.map(M=>M.id===r.selectedShapeId?{...M,points:M.points.map(L=>({x:L.x+v,y:L.y+b}))}:M);o({shapes:y}),i.startDrag(f);return}if(r.initialClickPos&&!r.isDrawing){ke(r.initialClickPos,f)>=Ce&&i.startDrawing(r.initialClickPos);return}r.isDrawing&&i.updateDrawing(f)},handleEnd:d=>{if(r.isDragging){i.stopDrag();return}if(r.initialClickPos&&!r.isDrawing){const h=V(d);if(ke(r.initialClickPos,h)<Ce&&d.target instanceof SVGElement&&d.target.classList.contains("echo-shape")){const g=d.target.dataset.shapeId;g&&o({selectedShapeId:g})}}i.setInitialClick(null),i.finishDrawing()},handleEnter:d=>{d.target===d.currentTarget&&!r.hasDrawn&&o({showTooltip:!0})},handleLeave:d=>{d.target===d.currentTarget&&o({showTooltip:!1})},startDrag:d=>{o({isDragging:!0,dragStartPos:d})},stopDrag:()=>{o({isDragging:!1,dragStartPos:null,dragOffset:null})},setInitialClick:d=>{o({initialClickPos:d})},updateDragOffset:(d,h)=>{o({dragOffset:{x:h.x-d.points[0].x,y:h.y-d.points[0].y}})}};return{state:r,setState:o,methods:i}},wt=(e,t,n)=>{var i,c;const[r,a]=oe({comment:((c=(i=te(t))==null?void 0:i.feedback)==null?void 0:c.comment)||"",screenshot:void 0,isCapturing:!1,isMinimized:!1});return{state:r,setState:(s,d=!1)=>{a(s),n==null||n(s,d)}}},bt=(e,t)=>{const[n,r]=oe({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:me(),welcomeMessageIsClosing:!1});return{state:n,setState:r}},pt=e=>{let t=ee();const n=Qe((d,h=!1)=>{(h||r.state.comment.trim().length>0||a.state.shapes.length>0)&&(et(d,{feedback:r.state,drawing:a.state}),o.setState({pagesCount:me()}))},1e3),r=wt(e,t,(d,h)=>{n(t,h)}),a=vt(e,t,(d,h)=>{n(t,h)}),o=bt(e),i=()=>{const d=ee();if(d!==t){t=d;const h=te(t);r.setState({comment:(h==null?void 0:h.feedback.comment)||""}),a.setState({shapes:(h==null?void 0:h.drawing.shapes)||[]})}};D({event:"popstate",callback:i}),Z({target:document.documentElement,options:{childList:!0,subtree:!0},callback:()=>{ee()!==t&&i()}});const c=()=>{ge(t),r.setState({comment:"",screenshot:void 0,isCapturing:!1,isMinimized:!1},!0),a.setState({isDrawing:!1,currentPoints:[],shapes:[],selectedShapeId:null,selectedTool:"rectangle",showTooltip:!0,mousePosition:{x:0,y:0},hasDrawn:!1,selectedColor:e.primaryColor,isDragging:!1,dragStartPos:null,initialClickPos:null,dragOffset:null},!0),o.setState({isOpen:!1})},s=d=>{o.setState({notification:{show:!0,type:d.type,message:d.message}}),setTimeout(()=>{o.setState({notification:{show:!1,type:d.type,message:d.message}})},5e3)};return{feedback:r,drawing:a,widget:o,methods:{reset:c,submit:async d=>{o.setState({isOpen:!1});try{const h=await e.onSubmit(d);return h instanceof Response&&!h.ok?(s({show:!0,type:"error",message:"Submission failed"}),h):(c(),s({show:!0,type:"success",message:"Feedback submitted"}),h)}catch{s({show:!0,type:"error",message:"Submission failed"})}}}}},Pe=l.createContext(),yt=e=>{const t=pt({primaryColor:e.primaryColor,onSubmit:e.onSubmit,textConfig:e.textConfig,position:e.position});return l.createComponent(Pe.Provider,{value:t,get children(){return e.children}})},p=()=>{const e=l.useContext(Pe);if(!e)throw new Error("useEchoStore must be used within EchoProvider");return e},xt='*,*:before,*:after{box-sizing:border-box}.echo-root{position:absolute;top:0;left:0;z-index:var(--z-root);isolation:isolate;pointer-events:none;--z-root: 999999;--z-launcher: 2;--z-overlay: 1;--z-drawing-toolbar: 3;--z-drawing-tooltip: 3;--z-shape-actions: 3;--z-notification: 2;--z-welcome-message: 2;--z-widget-button: 2;--z-feedback-form: 4;--primary-color: #000;--primary-text-color: #fff;--error-color: #f44336;--success-color: var(--primary-color);--text-dark: #1a1a1a;--text-medium: #333;--text-light: #666;--text-lighter: #999;--border-color: rgba(0, 0, 0, .1);--border-color-light: rgba(0, 0, 0, .05);--border-color-medium: rgba(0, 0, 0, .08);--primary-color-lighter: color-mix(in srgb, var(--primary-color) 100%, white 40%);--primary-color-lightest: color-mix(in srgb, var(--primary-color) 7%, white 100%);--hover-color: color-mix(in srgb, var(--primary-color) 80%, #fff);--shadow-color-dark: rgba(0, 0, 0, .6);--shadow-color-light: rgba(255, 255, 255, .1);--shadow-color-medium: rgba(0, 0, 0, .2);--shadow-sm: 0 1px 3px;--shadow-md: 0 4px 10px;--shadow-lg: 0 10px 20px;--shadow-black-sm: var(--shadow-sm) rgba(0, 0, 0, .5);--shadow-black-md: var(--shadow-md) rgba(0, 0, 0, .5);--shadow-black-lg: var(--shadow-lg) rgba(0, 0, 0, .5);--shadow-black-lightened-sm: var(--shadow-sm) var(--shadow-color-medium);--shadow-black-lightened-md: var(--shadow-md) var(--shadow-color-medium);--shadow-black-lightened-lg: var(--shadow-lg) var(--shadow-color-medium);--shadow-primary-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color) 60%, transparent 80%);--shadow-primary-md: var(--shadow-md) color-mix(in srgb, var(--primary-color) 50%, transparent 80%);--shadow-primary-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color) 40%, transparent 80%);--shadow-primary-lighter-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color-lighter) 70%, transparent 80%);--shadow-primary-lighter-md: var(--shadow-md) color-mix(in srgb, var(--primary-color-lighter) 60%, transparent 80%);--shadow-primary-lighter-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color-lighter) 50%, transparent 80%);--shadow-primary-lightest-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color-lightest) 70%, transparent 80%);--shadow-primary-lightest-md: var(--shadow-md) color-mix(in srgb, var(--primary-color-lightest) 60%, transparent 80%);--shadow-primary-lightest-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color-lightest) 50%, transparent 80%);--shadow-combined-sm: var(--shadow-primary-sm), var(--shadow-black-lightened-sm);--shadow-combined-md: var(--shadow-primary-md), var(--shadow-black-lightened-md);--shadow-combined-lg: var(--shadow-primary-lg), var(--shadow-black-lightened-lg);--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 20px;--spacing-2xl: 24px;--spacing-3xl: 32px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--font-xs: .8125rem;--font-sm: .875rem;--font-base: .9375rem;--font-md: 1rem;--font-lg: 1.125rem;--duration-fast: .1s;--duration-base: .2s;--duration-slow: .3s;--duration-slower: .4s;--duration-slowest: .6s;--ease-default: ease;--ease-in-out: ease-in-out;--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.16, 1, .3, 1)}.echo-stored-feedback{position:absolute;display:flex;flex-direction:column;bottom:calc(100% + var(--spacing-lg));right:0;width:320px;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-black-lightened-lg);animation:slideUpFade var(--duration-base) var(--ease-smooth);z-index:calc(var(--z-widget-button) + 1);transform-origin:bottom right;transition:all var(--duration-base) var(--ease-smooth)}.echo-stored-feedback-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg)}.echo-stored-feedback-header h3{margin:0;font-size:var(--font-md);font-weight:600}.echo-stored-feedback-list{max-height:400px;overflow-y:auto;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-stored-feedback-item{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--border-color-light);transition:all var(--duration-base) var(--ease-smooth);background:#fff;position:relative}.echo-stored-feedback-item:hover{background:var(--primary-color-lightest)}.echo-stored-feedback-item-current{background:var(--primary-color-lightest);padding-left:calc(var(--spacing-lg) - 3px)}.echo-stored-feedback-item-current:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--primary-color);border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.echo-stored-feedback-item:last-child{border-bottom:none;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-stored-feedback-item:last-child.echo-stored-feedback-item-current:before{border-bottom-left-radius:var(--radius-lg)}.echo-stored-feedback-content{flex:1;min-width:0;margin-right:var(--spacing-md)}.echo-stored-feedback-path{font-size:var(--font-sm);font-weight:500;color:var(--text-medium);margin-bottom:var(--spacing-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.echo-stored-feedback-preview{font-size:var(--font-xs);color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.echo-stored-feedback-actions{display:flex;align-items:center;gap:var(--spacing-sm)}.echo-stored-feedback-link{color:var(--text-light)}.echo-stored-feedback-link:hover{color:var(--primary-color)}.echo-stored-feedback-delete{color:var(--text-light);font-size:var(--font-xs);padding:var(--spacing-xs) var(--spacing-md)}.echo-stored-feedback-delete:hover{color:var(--error-color);background:color-mix(in srgb,var(--error-color) 10%,transparent)}.echo-stored-feedback-empty{padding:var(--spacing-3xl) var(--spacing-lg);text-align:center;color:var(--text-light);font-size:var(--font-sm);border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-launcher{position:fixed;z-index:var(--z-launcher);bottom:var(--spacing-xl);right:var(--spacing-xl)}.echo-overlay{position:absolute;z-index:var(--z-overlay);top:0;left:0;right:0;bottom:0;border:3px solid var(--primary-color)}[data-hidden=true],[data-hidden=false]{transition:opacity var(--duration-slow) var(--ease-in-out),visibility var(--duration-slow) var(--ease-in-out)}[data-hidden=true]{opacity:0;visibility:hidden;pointer-events:none}[data-hidden=false]{opacity:1;visibility:visible;pointer-events:auto;user-select:none;-webkit-user-select:none}.echo-launcher-button{z-index:var(--z-widget-button);position:relative;display:flex;align-items:center;justify-content:center;cursor:pointer;background:radial-gradient(circle at 40% 40%,var(--primary-color) 0%,var(--primary-color-lighter) 65%,var(--primary-color-lighter) 100%);border:none;border-radius:var(--radius-full);width:48px;height:48px;box-shadow:var(--shadow-black-md);transition:all var(--duration-slow) var(--ease-default),left var(--duration-slower) var(--ease-smooth),opacity var(--duration-slow) var(--ease-in-out)}.echo-launcher-button:hover{box-shadow:var(--shadow-black-lg);transform:translateY(-2px)}.echo-launcher-button:active{transform:scale(.95)}.echo-launcher-button-count{position:absolute;top:calc(-1 * var(--spacing-xs));right:calc(-1 * var(--spacing-xs));background:var(--primary-color-lightest);color:var(--primary-color-lighter);border-radius:var(--radius-md);min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-black-sm);padding:0 var(--spacing-xs);font-weight:600;pointer-events:auto;cursor:pointer;transform-origin:center center;animation:popIn var(--duration-slow) var(--ease-bounce);transition:transform var(--duration-base) var(--ease-default)}.echo-launcher-button-count:hover{transform:scale(1.1)}.echo-feedback{position:fixed;bottom:var(--spacing-xl);right:var(--spacing-xl);width:min(calc(100vw - var(--spacing-2xl)),24rem);z-index:var(--z-feedback-form);box-shadow:var(--shadow-black-lightened-lg);display:flex;flex-direction:column;gap:var(--spacing-lg);background:#fff;border-radius:var(--radius-lg);will-change:transform;padding:var(--spacing-lg)}.echo-feedback[data-minimized=true]{transition:transform .4s var(--ease-default),box-shadow .4s var(--ease-default);transform:translate(calc(100% - 48px),calc(100% - 48px));box-shadow:0 8px 16px #0003}.echo-feedback[data-minimized=true]:hover{cursor:pointer;transform:translate(calc(100% - 48px),calc(100% - 48px)) rotate(-2deg) scale(1.1);box-shadow:0 12px 24px #00000040}.echo-feedback[data-minimized=false]{transition:transform .4s var(--ease-smooth),box-shadow .4s var(--ease-smooth);transform:translate(0)}.echo-feedback[style*=transition]{pointer-events:none}.echo-feedback-content{display:flex;flex-direction:column;gap:var(--spacing-lg)}.echo-feedback-header{display:flex;justify-content:space-between;align-items:center}.echo-feedback-title{font-size:var(--font-lg);font-weight:600;color:var(--text-dark);margin:0}.echo-feedback-header-actions{display:flex;gap:var(--spacing-xs);margin:calc(-1 * var(--spacing-sm)) calc(-1 * var(--spacing-sm)) calc(-1 * var(--spacing-sm)) 0}.echo-feedback-form-textarea{width:100%;min-height:120px;border-radius:var(--radius-md);border:1px solid var(--border-color);padding:var(--spacing-md);font-size:var(--font-base);resize:vertical;background:#fffc;font-family:inherit}.echo-feedback-form-textarea:focus{outline:none;border-color:var(--primary-color);background:#fff;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}}';var kt=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 St=e=>(()=>{var t=kt();return l.createRenderEffect(n=>{var r=e.size??24,a=e.size??24,o=e.fill??"none",i=e.stroke??"currentColor",c=e.strokeWidth??2,s=e.class,d=e.style;return r!==n.e&&u(t,"width",n.e=r),a!==n.t&&u(t,"height",n.t=a),o!==n.a&&u(t,"fill",n.a=o),i!==n.o&&u(t,"stroke",n.o=i),c!==n.i&&u(t,"stroke-width",n.i=c),s!==n.n&&u(t,"class",n.n=s),n.s=x(t,d,n.s),n},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),t})();var Ct=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 Et=e=>(()=>{var t=Ct(),n=t.firstChild;return l.createRenderEffect(r=>{var a=e.size??24,o=e.size??24,i=e.class,c=e.style,s=e.fill??"currentColor";return a!==r.e&&u(t,"width",r.e=a),o!==r.t&&u(t,"height",r.t=o),i!==r.a&&u(t,"class",r.a=i),r.o=x(t,c,r.o),s!==r.i&&u(n,"fill",r.i=s),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),t})();var Pt=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 $t=e=>(()=>{var t=Pt();return l.createRenderEffect(n=>{var r=e.size??24,a=e.size??24,o=e.fill??"none",i=e.stroke??"currentColor",c=e.strokeWidth??2,s=e.class,d=e.style;return r!==n.e&&u(t,"width",n.e=r),a!==n.t&&u(t,"height",n.t=a),o!==n.a&&u(t,"fill",n.a=o),i!==n.o&&u(t,"stroke",n.o=i),c!==n.i&&u(t,"stroke-width",n.i=c),s!==n.n&&u(t,"class",n.n=s),n.s=x(t,d,n.s),n},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),t})();var zt=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 Ot=e=>(()=>{var t=zt();return l.createRenderEffect(n=>{var r=e.size??24,a=e.size??24,o=e.fill??"none",i=e.stroke??"currentColor",c=e.strokeWidth??2,s=e.class,d=e.style;return r!==n.e&&u(t,"width",n.e=r),a!==n.t&&u(t,"height",n.t=a),o!==n.a&&u(t,"fill",n.a=o),i!==n.o&&u(t,"stroke",n.o=i),c!==n.i&&u(t,"stroke-width",n.i=c),s!==n.n&&u(t,"class",n.n=s),n.s=x(t,d,n.s),n},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),t})();var Mt=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 $e=e=>(()=>{var t=Mt();return l.createRenderEffect(n=>{var r=e.size??24,a=e.size??24,o=e.fill??"none",i=e.stroke??"currentColor",c=e.strokeWidth??2,s=e.class,d=e.style;return r!==n.e&&u(t,"width",n.e=r),a!==n.t&&u(t,"height",n.t=a),o!==n.a&&u(t,"fill",n.a=o),i!==n.o&&u(t,"stroke",n.o=i),c!==n.i&&u(t,"stroke-width",n.i=c),s!==n.n&&u(t,"class",n.n=s),n.s=x(t,d,n.s),n},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),t})();var Tt=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 It=e=>(()=>{var t=Tt();return l.createRenderEffect(n=>{var r=e.size??24,a=e.size??24,o=e.fill??"none",i=e.stroke??"currentColor",c=e.strokeWidth??2,s=e.class,d=e.style;return r!==n.e&&u(t,"width",n.e=r),a!==n.t&&u(t,"height",n.t=a),o!==n.a&&u(t,"fill",n.a=o),i!==n.o&&u(t,"stroke",n.o=i),c!==n.i&&u(t,"stroke-width",n.i=c),s!==n.n&&u(t,"class",n.n=s),n.s=x(t,d,n.s),n},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),t})();var Dt=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 At=e=>(()=>{var t=Dt();return l.createRenderEffect(n=>{var r=e.size??24,a=e.size??24,o=e.fill??"none",i=e.stroke??"currentColor",c=e.strokeWidth??2,s=e.class,d=e.style;return r!==n.e&&u(t,"width",n.e=r),a!==n.t&&u(t,"height",n.t=a),o!==n.a&&u(t,"fill",n.a=o),i!==n.o&&u(t,"stroke",n.o=i),c!==n.i&&u(t,"stroke-width",n.i=c),s!==n.n&&u(t,"class",n.n=s),n.s=x(t,d,n.s),n},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),t})();var jt=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 G=e=>(()=>{var t=jt();return l.createRenderEffect(n=>{var r=e.size??24,a=e.size??24,o=e.fill??"none",i=e.stroke??"currentColor",c=e.strokeWidth??2,s=e.class,d=e.style;return r!==n.e&&u(t,"width",n.e=r),a!==n.t&&u(t,"height",n.t=a),o!==n.a&&u(t,"fill",n.a=o),i!==n.o&&u(t,"stroke",n.o=i),c!==n.i&&u(t,"stroke-width",n.i=c),s!==n.n&&u(t,"class",n.n=s),n.s=x(t,d,n.s),n},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),t})();var Ft=w("<div class=echo-color-selector><button class=echo-drawing-toolbar-button title=Color></button><div class=echo-color-swatch-wrapper><div class=echo-color-swatch>"),Lt=w("<button class=echo-color-swatch-button>");const Nt=["#ff6b6b","#69db7c","#74c0fc","#ffd43b","#da77f2","#66d9e8","#ffa94d","#e599f7"],Rt=()=>{const e=p();return(()=>{var t=Ft(),n=t.firstChild,r=n.nextSibling,a=r.firstChild;return m(a,l.createComponent(l.For,{get each(){return[e.widget.state.primaryColor,...Nt]},children:o=>(()=>{var i=Lt();return i.$$click=()=>e.drawing.setState({selectedColor:o}),u(i,"title",`Select ${o} color`),o!=null?i.style.setProperty("background-color",o):i.style.removeProperty("background-color"),l.createRenderEffect(()=>u(i,"data-selected",e.drawing.state.selectedColor===o)),i})()})),l.createRenderEffect(o=>(o=e.drawing.state.selectedColor)!=null?n.style.setProperty("background-color",o):n.style.removeProperty("background-color")),t})()};P(["click"]);var Yt=w('<div class=echo-drawing-toolbar data-hide-when-drawing=true><button class=echo-drawing-toolbar-button title="Clear drawings">'),Bt=w("<button class=echo-drawing-toolbar-button>");const Ht={rectangle:$t,path:Ot},Wt=()=>{const e=p(),t=Object.values($);return(()=>{var n=Yt(),r=n.firstChild;return m(n,l.createComponent(l.For,{each:t,children:a=>{const o=Ht[a.id];return(()=>{var i=Bt();return i.$$click=()=>e.drawing.setState({selectedTool:a.id}),m(i,l.createComponent(o,{class:"echo-drawing-toolbar-icon"})),l.createRenderEffect(c=>{var s=a.label,d=e.drawing.state.selectedTool===a.id;return s!==c.e&&u(i,"title",c.e=s),d!==c.t&&u(i,"data-selected",c.t=d),c},{e:void 0,t:void 0}),i})()}}),r),m(n,l.createComponent(Rt,{}),r),r.$$click=()=>e.drawing.setState({shapes:[]},!0),m(r,l.createComponent($e,{class:"echo-drawing-toolbar-icon"})),n})()};P(["click"]);var _t=w("<button>");const z=e=>{const t=()=>e.variant||"primary",n=()=>e.size||"md";return(()=>{var r=_t();return _e(r,l.mergeProps(e,{get class(){return`echo-button echo-button-${t()} echo-button-${n()} ${e.class}`}}),!1),r})()};var Ut=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 Xt=e=>(()=>{var t=Ut();return l.createRenderEffect(n=>{var r=e.size??24,a=e.size??24,o=e.fill??"none",i=e.stroke??"currentColor",c=e.strokeWidth??2,s=e.class,d=e.style;return r!==n.e&&u(t,"width",n.e=r),a!==n.t&&u(t,"height",n.t=a),o!==n.a&&u(t,"fill",n.a=o),i!==n.o&&u(t,"stroke",n.o=i),c!==n.i&&u(t,"stroke-width",n.i=c),s!==n.n&&u(t,"class",n.n=s),n.s=x(t,d,n.s),n},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),t})();var Kt=w("<div class=echo-stored-feedback-empty>No unsubmitted feedback"),Vt=w("<div class=echo-stored-feedback><div class=echo-stored-feedback-header><h3>Unsubmitted Feedback</h3></div><div class=echo-stored-feedback-list>"),Gt=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 qt=()=>{const e=p(),[t,n]=l.createSignal(ne()),[r,a]=l.createSignal(window.location.pathname),o=()=>{const h=ne();n(h),e.widget.setState({pagesCount:h.length})},i=()=>{a(window.location.pathname)};D({event:"echo-storage-change",callback:o}),D({event:"popstate",callback:i}),Z({target:document.documentElement,options:{childList:!0,subtree:!0},callback:()=>{a(window.location.pathname)}});const c=(h,f)=>{const g=f?`${h}${f}`:h;window.location.href=g,e.widget.setState({isStoredFeedbackOpen:!1})},s=h=>{r()===h&&e.methods.reset(),ge(h);const f=ne();n(f),e.widget.setState({pagesCount:f.length})},d=h=>{if(h==="/")return"/";const f=h.split("/");return f.length<=4?h:`/${f[1]}/.../${f[f.length-1]}`};return l.createComponent(l.Show,{get when(){return e.widget.state.isStoredFeedbackOpen},get children(){var h=Vt(),f=h.firstChild;f.firstChild;var g=f.nextSibling;return m(f,l.createComponent(z,{variant:"secondary",size:"sm",onClick:()=>e.widget.setState({isStoredFeedbackOpen:!1}),get children(){return l.createComponent(G,{size:20})}}),null),m(g,l.createComponent(l.For,{get each(){return t()},children:v=>{const b=l.createMemo(()=>v.path===r());return(()=>{var y=Gt(),M=y.firstChild,L=M.firstChild,$n=L.nextSibling,Oe=M.nextSibling;return m(L,()=>d(v.path)),m($n,()=>v.state.feedback.comment),m(Oe,(()=>{var T=l.createMemo(()=>!b());return()=>T()&&l.createComponent(z,{class:"echo-stored-feedback-link",variant:"secondary",size:"sm",onClick:()=>c(v.path,v.state.latestQuery),get children(){return l.createComponent(Xt,{})}})})(),null),m(Oe,l.createComponent(z,{class:"echo-stored-feedback-delete",variant:"secondary",size:"sm",onClick:()=>s(v.path),children:"Delete"}),null),l.createRenderEffect(T=>{var Me=`echo-stored-feedback-item ${b()?"echo-stored-feedback-item-current":""}`,Te=v.path;return Me!==T.e&&se(y,T.e=Me),Te!==T.t&&u(L,"title",T.t=Te),T},{e:void 0,t:void 0}),y})()}}),null),m(g,l.createComponent(l.Show,{get when(){return t().length===0},get children(){return Kt()}}),null),h}})};var Qt=w("<button class=echo-launcher-button>"),Zt=w("<span class=echo-launcher-button-count>");const Jt=()=>{const e=p(),[t,n]=l.createSignal(!1);let r;const a=()=>{r&&window.clearTimeout(r),r=window.setTimeout(()=>{const d=fe("welcome_message_shown",!1);!e.widget.state.isOpen&&!e.widget.state.isStoredFeedbackOpen&&d&&n(!0)},4e3)},o=()=>{n(!1)},i=()=>{a()},c=()=>{e.widget.setState({isOpen:!e.widget.state.isOpen}),e.widget.setState({welcomeMessageIsClosing:!0}),J("welcome_message_shown",!0)};l.createEffect(()=>{e.widget.state.isOpen||(n(!1),a()),e.widget.state.isStoredFeedbackOpen&&n(!1)});const s=d=>{d.stopPropagation(),e.widget.setState({isStoredFeedbackOpen:!e.widget.state.isStoredFeedbackOpen}),n(!1)};return[(()=>{var d=Qt();return d.addEventListener("pointerleave",i),d.addEventListener("pointerenter",o),d.$$click=c,m(d,l.createComponent(Et,{stroke:"white",fill:"#ffffff"}),null),m(d,(()=>{var h=l.createMemo(()=>e.widget.state.pagesCount>0);return()=>h()&&(()=>{var f=Zt();return f.$$click=s,m(f,()=>e.widget.state.pagesCount),f})()})(),null),l.createRenderEffect(h=>{var f=e.widget.state.isOpen,g=t()?"45px":"0";return f!==h.e&&u(d,"data-hidden",h.e=f),g!==h.t&&((h.t=g)!=null?d.style.setProperty("left",g):d.style.removeProperty("left")),h},{e:void 0,t:void 0}),d})(),l.createComponent(qt,{})]};P(["click"]);var en=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 tn=()=>{const e=p(),t=()=>{e.widget.setState({notification:{...e.widget.state.notification,show:!1}})},n=()=>{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=en(),a=r.firstChild,o=a.nextSibling,i=o.firstChild,c=i.nextSibling;return m(r,l.createComponent(z,{class:"echo-notification-hide",variant:"secondary",size:"sm",onClick:t,get title(){return e.widget.state.text.notification.hideTitle},get children(){return l.createComponent(G,{size:20})}}),a),m(a,(()=>{var s=l.createMemo(()=>e.widget.state.notification.type==="success");return()=>s()?l.createComponent(It,{size:32}):(()=>{var d=l.createMemo(()=>e.widget.state.notification.type==="error");return()=>d()?l.createComponent(At,{size:32}):null})()})()),m(i,n),m(c,()=>{var s;return(s=e.widget.state.notification)==null?void 0:s.message}),l.createRenderEffect(s=>{var d=e.widget.state.notification.type,h=!e.widget.state.notification.type,f=!e.widget.state.notification.show;return d!==s.e&&u(r,"data-type",s.e=d),h!==s.t&&u(r,"data-empty",s.t=h),f!==s.a&&u(r,"data-hidden",s.a=f),s},{e:void 0,t:void 0,a:void 0}),r})()};var nn=w("<button class=echo-welcome-message><span class=echo-welcome-message-pulsar></span><div class=echo-welcome-message-close role=button tabindex=0>");const rn=()=>{const e=p(),t=fe("welcome_message_shown",!1),n=a=>{a.stopPropagation(),e.widget.setState({welcomeMessageIsClosing:!0}),J("welcome_message_shown",!0)},r=()=>{e.widget.setState({isOpen:!0}),e.widget.setState({welcomeMessageIsClosing:!0}),J("welcome_message_shown",!0)};return t?null:(()=>{var a=nn(),o=a.firstChild,i=o.nextSibling;return a.$$click=r,a.style.setProperty("bottom","80px"),a.style.setProperty("right","20px"),m(a,()=>e.widget.state.text.welcomeMessage.text,i),i.$$keydown=c=>c.key==="Enter"&&n(c),i.$$click=n,m(i,l.createComponent(G,{size:16,strokeWidth:3})),l.createRenderEffect(c=>{var s=e.widget.state.welcomeMessageIsClosing,d=e.widget.state.text.welcomeMessage.closeAriaLabel;return s!==c.e&&u(a,"data-hidden",c.e=s),d!==c.t&&u(i,"aria-label",c.t=d),c},{e:void 0,t:void 0}),a})()};P(["click","keydown"]);var on=w("<svg><rect class=echo-shape fill=transparent vector-effect=non-scaling-stroke></svg>",!1,!0),an=w("<svg><path class=echo-shape fill=none vector-effect=non-scaling-stroke stroke-linecap=round></svg>",!1,!0);const ze=e=>{const t=l.createMemo(()=>e.id===e.selectedShapeId);return[l.createComponent(l.Show,{get when(){return e.type==="rectangle"},get children(){return l.createComponent(sn,l.mergeProps(e,{get isSelected(){return t()}}))}}),l.createComponent(l.Show,{get when(){return e.type==="path"},get children(){return l.createComponent(cn,l.mergeProps(e,{get isSelected(){return t()}}))}})]},sn=e=>{const t=l.createMemo(()=>Se(e.points));return l.createComponent(l.Show,{get when(){return t()},get children(){var n=on();return n.$$click=()=>{var r;return(r=e.onShapeClick)==null?void 0:r.call(e,e.id)},l.createRenderEffect(r=>{var a=e.id,o=e.isSelected,i=t().x,c=t().y,s=t().width,d=t().height,h=e.color,f=$.rectangle.strokeWidth,g=e.isSelected?$.rectangle.opacity.selected:$.rectangle.opacity.default,v=e.isSelected?"5,5":"none",b=e.isSelected?"move":"pointer";return a!==r.e&&u(n,"data-shape-id",r.e=a),o!==r.t&&u(n,"data-selected",r.t=o),i!==r.a&&u(n,"x",r.a=i),c!==r.o&&u(n,"y",r.o=c),s!==r.i&&u(n,"width",r.i=s),d!==r.n&&u(n,"height",r.n=d),h!==r.s&&u(n,"stroke",r.s=h),f!==r.h&&u(n,"stroke-width",r.h=f),g!==r.r&&u(n,"opacity",r.r=g),v!==r.d&&u(n,"stroke-dasharray",r.d=v),b!==r.l&&u(n,"cursor",r.l=b),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}),n}})},cn=e=>{const t=l.createMemo(()=>dt(e.points));return l.createComponent(l.Show,{get when(){return t()},get children(){var n=an();return n.$$click=()=>{var r;return(r=e.onShapeClick)==null?void 0:r.call(e,e.id)},l.createRenderEffect(r=>{var a=e.id,o=e.isSelected,i=t(),c=e.color,s=$.path.strokeWidth,d=e.isSelected?$.path.opacity.selected:$.path.opacity.default,h=e.isSelected?"move":"pointer";return a!==r.e&&u(n,"data-shape-id",r.e=a),o!==r.t&&u(n,"data-selected",r.t=o),i!==r.a&&u(n,"d",r.a=i),c!==r.o&&u(n,"stroke",r.o=c),s!==r.i&&u(n,"stroke-width",r.i=s),d!==r.n&&u(n,"opacity",r.n=d),h!==r.s&&u(n,"cursor",r.s=h),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n}})};P(["click"]);var ln=w("<div class=echo-drawing-tooltip data-hide-when-drawing=true>");const dn=()=>{const e=p(),t=l.createMemo(()=>e.drawing.state.showTooltip&&e.drawing.state.mousePosition.y&&e.drawing.state.mousePosition.x&&e.widget.state.isOpen&&!lt());return l.createComponent(l.Show,{get when(){return t()},get children(){var n=ln();return m(n,()=>e.widget.state.text.drawingTooltip.text),l.createRenderEffect(r=>{var a=`${e.drawing.state.mousePosition.y+20}px`,o=`${e.drawing.state.mousePosition.x+10}px`;return a!==r.e&&((r.e=a)!=null?n.style.setProperty("top",a):n.style.removeProperty("top")),o!==r.t&&((r.t=o)!=null?n.style.setProperty("left",o):n.style.removeProperty("left")),r},{e:void 0,t:void 0}),n}})};var hn=w("<div class=echo-shape-actions data-hide-when-drawing=true>");const un=()=>{const e=p();let t;const[n,r]=l.createSignal({x:window.scrollX,y:window.scrollY});D({event:"scroll",callback:()=>{r({x:window.scrollX,y:window.scrollY})}});const o=()=>{e.drawing.state.selectedShapeId&&e.drawing.setState({shapes:e.drawing.state.shapes.filter(s=>s.id!==e.drawing.state.selectedShapeId),selectedShapeId:null})},i=l.createMemo(()=>e.drawing.state.selectedShapeId?e.drawing.state.shapes.find(s=>s.id===e.drawing.state.selectedShapeId):null),c=l.createMemo(()=>{const s=i(),d=t==null?void 0:t.getBoundingClientRect();if(!s||!d)return null;let h=null;if(s.type==="rectangle"){const v=Se(s.points);if(!v)return null;h={x:v.x+v.width/2,y:v.y}}else if(s.type==="path"&&s.points.length>0)h={x:s.points[0].x,y:s.points[0].y};else return null;const f=8,g=n();return{x:Math.max(d.width/2+f,Math.min(window.innerWidth-d.width/2-f,h.x-g.x)),y:Math.max(d.height+f,Math.min(window.innerHeight-f,h.y-g.y))}});return(()=>{var s=hn(),d=t;return typeof d=="function"?R(d,s):t=s,m(s,l.createComponent(z,{onClick:o,size:"sm",variant:"secondary",title:"Delete shape",get children(){return l.createComponent($e,{size:20})}})),l.createRenderEffect(h=>{var b,y;var f=!c(),g=c()?`${(b=c())==null?void 0:b.x}px`:"0",v=c()?`${(y=c())==null?void 0:y.y}px`:"0";return f!==h.e&&(s.hidden=h.e=f),g!==h.t&&((h.t=g)!=null?s.style.setProperty("left",g):s.style.removeProperty("left")),v!==h.a&&((h.a=v)!=null?s.style.setProperty("top",v):s.style.removeProperty("top")),h},{e:void 0,t:void 0,a:void 0}),s})()};var fn=w('<div class=echo-drawing-layer-container><svg width=100% height=100% class=echo-drawing-layer preserveAspectRatio=none><path class=echo-drawing-layer-mask fill="rgba(33, 43, 55, 1)"fill-opacity=0.2 fill-rule=evenodd>');const gn=()=>{const e=p();let t;return l.onMount(()=>{t==null||t.addEventListener("mousemove",e.drawing.methods.handleMove),t==null||t.addEventListener("mouseup",e.drawing.methods.handleEnd),t==null||t.addEventListener("touchmove",e.drawing.methods.handleMove,{passive:!1}),t==null||t.addEventListener("touchend",e.drawing.methods.handleEnd)}),l.onCleanup(()=>{t==null||t.removeEventListener("mousemove",e.drawing.methods.handleMove),t==null||t.removeEventListener("mouseup",e.drawing.methods.handleEnd),t==null||t.removeEventListener("touchmove",e.drawing.methods.handleMove),t==null||t.removeEventListener("touchend",e.drawing.methods.handleEnd)}),(()=>{var n=fn(),r=n.firstChild,a=r.firstChild,o=t;return typeof o=="function"?R(o,n):t=n,m(n,l.createComponent(dn,{}),r),m(n,l.createComponent(un,{}),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})},m(r,l.createComponent(l.For,{get each(){return e.drawing.state.shapes},children:i=>l.createComponent(ze,{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),m(r,l.createComponent(ze,{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),l.createRenderEffect(i=>{var c=e.drawing.state.cursor,s=gt({width:e.widget.state.dimensions.width,height:e.widget.state.dimensions.height},e.drawing.state.currentPoints,e.drawing.state.shapes);return c!==i.e&&((i.e=c)!=null?n.style.setProperty("cursor",c):n.style.removeProperty("cursor")),s!==i.t&&u(a,"d",i.t=s),i},{e:void 0,t:void 0}),n})()};P(["mousedown","touchstart","mousemove","touchmove","touchend"]);var mn=w("<div class=echo-feedback data-hide-when-drawing=true><form class=echo-feedback-content><div class=echo-feedback-header><h3 class=echo-feedback-title></h3><div class=echo-feedback-header-actions></div></div><textarea class=echo-feedback-form-textarea required>");const vn=()=>{let e;const t=p(),n=async o=>{o.preventDefault();const i=await ft(),c={comment:t.feedback.state.comment,screenshot:i,metadata:{url:window.location.href,userAgent:navigator.userAgent,timestamp:new Date().toISOString(),browserInfo:{width:window.innerWidth,height:window.innerHeight,screenWidth:window.screen.width,screenHeight:window.screen.height}},console:xe()};t.methods.submit(c)};l.createEffect(()=>{e&&t.widget.state.isOpen&&e.focus()});const r=o=>{o.stopPropagation(),t.feedback.setState({isMinimized:!0})},a=()=>{t.feedback.setState({isMinimized:!1})};return(()=>{var o=mn(),i=o.firstChild,c=i.firstChild,s=c.firstChild,d=s.nextSibling,h=c.nextSibling;o.$$click=()=>t.feedback.state.isMinimized&&a(),i.addEventListener("submit",n),m(s,()=>t.widget.state.text.feedbackForm.title),m(d,l.createComponent(z,{type:"button",title:"Hide form",variant:"secondary",size:"sm",onClick:r,get children(){return l.createComponent(St,{size:20})}}),null),m(d,l.createComponent(z,{type:"button",title:"Close form",variant:"secondary",size:"sm",onClick:()=>t.widget.setState({isOpen:!1}),get children(){return l.createComponent(G,{size:20})}}),null),h.$$input=g=>t.feedback.setState({comment:g.currentTarget.value});var f=e;return typeof f=="function"?R(f,h):e=h,m(i,l.createComponent(z,{type:"submit",variant:"primary",size:"lg",style:{width:"100%"},get children(){return t.widget.state.text.feedbackForm.submitButton}}),null),l.createRenderEffect(g=>{var v=t.feedback.state.isMinimized,b=t.feedback.state.isMinimized?"pointer":"default",y=t.widget.state.text.feedbackForm.placeholder;return v!==g.e&&u(o,"data-minimized",g.e=v),b!==g.t&&((g.t=b)!=null?o.style.setProperty("cursor",b):o.style.removeProperty("cursor")),y!==g.a&&u(h,"placeholder",g.a=y),g},{e:void 0,t:void 0,a:void 0}),l.createRenderEffect(()=>h.value=t.feedback.state.comment),o})()};P(["click","input"]);var wn=w("<style>"),bn=w("<div class=echo-launcher>"),pn=w("<div class=echo-overlay>"),yn=w("<div class=echo-root>");const xn=e=>l.createComponent(qe,{useShadow:!0,get mount(){return document.body},get children(){return l.createComponent(yt,l.mergeProps(e,{get children(){return l.createComponent(Cn,{get children(){return[l.createComponent(kn,{get primaryColor(){return e.primaryColor}}),l.createComponent(Sn,{})]}})}}))}}),kn=e=>{const[t,n]=l.createSignal("");return l.createEffect(()=>{const r=`
|
4
4
|
.echo-root {
|
5
5
|
--primary-color: ${e.primaryColor};
|
6
|
-
--primary-text-color: ${
|
6
|
+
--primary-text-color: ${it(e.primaryColor)};
|
7
7
|
}
|
8
|
-
`;n(r)}),(()=>{var r=wn();return m(r,xt,null),m(r,t,null),r})()},Sn=()=>{const e=p();return[(()=>{var t=bn();return m(t,l.createComponent(Jt,{}),null),m(t,l.createComponent(rn,{}),null),m(t,l.createComponent(tn,{}),null),l.createRenderEffect(()=>u(t,"data-hidden",e.widget.state.isOpen)),t})(),(()=>{var t=pn();return m(t,l.createComponent(vn,{}),null),m(t,l.createComponent(Wt,{}),null),m(t,l.createComponent(gn,{}),null),l.createRenderEffect(()=>u(t,"data-hidden",!e.widget.state.isOpen)),t})()]},Cn=e=>{let t;const n=p(),r=()=>{requestAnimationFrame(()=>{t&&(t.style.height="0px",t.style.height=`${document.documentElement.scrollHeight}px`,n.widget.setState({dimensions:{width:document.documentElement.clientWidth,height:document.documentElement.scrollHeight}}))})};return D({event:"resize",callback:r,onMount:r}),
|
8
|
+
`;n(r)}),(()=>{var r=wn();return m(r,xt,null),m(r,t,null),r})()},Sn=()=>{const e=p();return[(()=>{var t=bn();return m(t,l.createComponent(Jt,{}),null),m(t,l.createComponent(rn,{}),null),m(t,l.createComponent(tn,{}),null),l.createRenderEffect(()=>u(t,"data-hidden",e.widget.state.isOpen)),t})(),(()=>{var t=pn();return m(t,l.createComponent(vn,{}),null),m(t,l.createComponent(Wt,{}),null),m(t,l.createComponent(gn,{}),null),l.createRenderEffect(()=>u(t,"data-hidden",!e.widget.state.isOpen)),t})()]},Cn=e=>{let t;const n=p(),r=()=>{requestAnimationFrame(()=>{t&&(t.style.height="0px",t.style.height=`${document.documentElement.scrollHeight}px`,n.widget.setState({dimensions:{width:document.documentElement.clientWidth,height:document.documentElement.scrollHeight}}))})};return D({event:"resize",callback:r,onMount:r}),Ze("Escape",()=>{n.widget.setState({isOpen:!1})}),Z({target:document.documentElement,options:{childList:!0,subtree:!0,attributes:!0},callback:()=>{r()}}),(()=>{var a=yn(),o=t;return typeof o=="function"?R(o,a):t=a,m(a,()=>e.children),l.createRenderEffect(i=>{var c=n.drawing.state.isDrawing,s=`${n.widget.state.dimensions.height}px`,d=`${n.widget.state.dimensions.width}px`;return c!==i.e&&u(a,"data-drawing",i.e=c),s!==i.t&&((i.t=s)!=null?a.style.setProperty("height",s):a.style.removeProperty("height")),d!==i.a&&((i.a=d)!=null?a.style.setProperty("width",d):a.style.removeProperty("width")),i},{e:void 0,t:void 0,a:void 0}),a})()},En={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 q=null;function Pn(e){q&&(console.warn("Echo widget is already initialized. Cleaning up previous instance..."),q());try{mt(e),st();const{position:t="bottom-right",primaryColor:n="#6227dc",onSubmit:r,textConfig:a={}}=e,o=ye(En,a),i=document.createElement("div");i.id="echo-container",document.body.appendChild(i);const c=Be(()=>l.createComponent(xn,{position:t,primaryColor:n,textConfig:o,onSubmit:async d=>await r({...d,console:xe()})}),i),s=()=>{c(),i.remove(),ct(),q=null};return window.addEventListener("unload",s,{once:!0}),q=s,s}catch(t){throw console.error("Echo initialization failed:",t),t}}E.initEcho=Pn,Object.defineProperty(E,Symbol.toStringTag,{value:"Module"})});
|
@@ -1,5 +1,4 @@
|
|
1
|
-
import type {
|
2
|
-
import { type Notification } from '~/types';
|
1
|
+
import type { EchoConfig, FullEchoConfig } from '~/types';
|
3
2
|
import { type DrawingStore } from './drawingStore';
|
4
3
|
import { type FeedbackStore } from './feedbackStore';
|
5
4
|
import { type WidgetStore } from './widgetStore';
|
@@ -9,8 +8,7 @@ export type EchoStore = {
|
|
9
8
|
widget: WidgetStore;
|
10
9
|
methods: {
|
11
10
|
reset: () => void;
|
12
|
-
|
13
|
-
onSubmit: (data: FeedbackPayload) => Promise<void>;
|
11
|
+
submit: EchoConfig['onSubmit'];
|
14
12
|
};
|
15
13
|
};
|
16
14
|
export declare const createEchoStore: (config: FullEchoConfig) => EchoStore;
|
package/dist/types.d.ts
CHANGED
@@ -49,7 +49,7 @@ export type TextConfig = {
|
|
49
49
|
};
|
50
50
|
};
|
51
51
|
export type EchoConfig = {
|
52
|
-
onSubmit: (data: FeedbackPayload) => Promise<void>;
|
52
|
+
onSubmit: (data: FeedbackPayload) => Promise<Response | void>;
|
53
53
|
position?: Position;
|
54
54
|
primaryColor?: `#${string}`;
|
55
55
|
textConfig?: Partial<TextConfig>;
|