@contember/echo 0.0.33-beta.1 → 0.0.33-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/echo.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { sharedConfig as L, createRoot as Ye, createRenderEffect as b, untrack as Ke, getOwner as Le, createEffect as H, runWithOwner as dt, createMemo as k, createSignal as T, onCleanup as te, $PROXY as Y, $TRACK as Ne, getListener as Pe, batch as ut, onMount as ke, createContext as ht, createComponent as g, useContext as gt, For as B, Show as D, mergeProps as ie, Switch as ft, Match as ne } from "solid-js";
2
- import mt from "html2canvas";
2
+ import mt from "html2canvas-pro";
3
3
  const vt = [
4
4
  "allowfullscreen",
5
5
  "async",
package/dist/echo.umd.js CHANGED
@@ -1,4 +1,4 @@
1
- (function(A,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("solid-js"),require("html2canvas")):typeof define=="function"&&define.amd?define(["exports","solid-js","html2canvas"],c):(A=typeof globalThis<"u"?globalThis:A||self,c(A.Echo={},A.Solid,A.html2canvas))})(this,function(A,c,Xe){"use strict";const Ke=["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"],Ge=new Set(["className","value","readOnly","formNoValidate","isMap","noModule","playsInline",...Ke]),Ze=new Set(["innerHTML","textContent","innerText","children"]),Qe=Object.assign(Object.create(null),{className:"class",htmlFor:"for"}),Je=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 et(e,n){const t=Je[e];return typeof t=="object"?t[n]?t.$:void 0:t}const tt=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 nt(e,n,t){let r=t.length,o=n.length,a=r,i=0,l=0,s=n[o-1].nextSibling,d=null;for(;i<o||l<a;){if(n[i]===t[l]){i++,l++;continue}for(;n[o-1]===t[a-1];)o--,a--;if(o===i){const h=a<r?l?t[l-1].nextSibling:t[a-l]:s;for(;l<a;)e.insertBefore(t[l++],h)}else if(a===l)for(;i<o;)(!d||!d.has(n[i]))&&n[i].remove(),i++;else if(n[i]===t[a-1]&&t[l]===n[o-1]){const h=n[--o].nextSibling;e.insertBefore(t[l++],n[i++].nextSibling),e.insertBefore(t[--a],h),n[o]=t[a]}else{if(!d){d=new Map;let f=l;for(;f<a;)d.set(t[f],f++)}const h=d.get(n[i]);if(h!=null)if(l<h&&h<a){let f=i,g=1,m;for(;++f<o&&f<a&&!((m=d.get(n[f]))==null||m!==h+g);)g++;if(g>h-l){const b=n[i];for(;l<h;)e.insertBefore(t[l++],b)}else e.replaceChild(t[l++],n[i++])}else i++;else n[i++].remove()}}}const ke="_$DX_DELEGATE";function rt(e,n,t,r={}){let o;return c.createRoot(a=>{o=a,n===document?e():v(n,e(),n.firstChild?null:void 0,t)},r.owner),()=>{o(),n.textContent=""}}function w(e,n,t){let r;const o=()=>{const i=document.createElement("template");return i.innerHTML=e,t?i.content.firstChild.firstChild:i.content.firstChild},a=n?()=>c.untrack(()=>document.importNode(r||(r=o()),!0)):()=>(r||(r=o())).cloneNode(!0);return a.cloneNode=a,a}function E(e,n=window.document){const t=n[ke]||(n[ke]=new Set);for(let r=0,o=e.length;r<o;r++){const a=e[r];t.has(a)||(t.add(a),n.addEventListener(a,lt))}}function u(e,n,t){X(e)||(t==null?e.removeAttribute(n):e.setAttribute(n,t))}function at(e,n,t){X(e)||(t?e.setAttribute(n,""):e.removeAttribute(n))}function Ce(e,n){X(e)||(n==null?e.removeAttribute("class"):e.className=n)}function N(e,n,t,r){if(r)Array.isArray(t)?(e[`$$${n}`]=t[0],e[`$$${n}Data`]=t[1]):e[`$$${n}`]=t;else if(Array.isArray(t)){const o=t[0];e.addEventListener(n,t[0]=a=>o.call(e,t[1],a))}else e.addEventListener(n,t,typeof t!="function"&&t)}function ot(e,n,t={}){const r=Object.keys(n||{}),o=Object.keys(t);let a,i;for(a=0,i=o.length;a<i;a++){const l=o[a];!l||l==="undefined"||n[l]||(Se(e,l,!1),delete t[l])}for(a=0,i=r.length;a<i;a++){const l=r[a],s=!!n[l];!l||l==="undefined"||t[l]===s||!s||(Se(e,l,!0),t[l]=s)}return t}function z(e,n,t){if(!n)return t?u(e,"style"):n;const r=e.style;if(typeof n=="string")return r.cssText=n;typeof t=="string"&&(r.cssText=t=void 0),t||(t={}),n||(n={});let o,a;for(a in t)n[a]==null&&r.removeProperty(a),delete t[a];for(a in n)o=n[a],o!==t[a]&&(r.setProperty(a,o),t[a]=o);return t}function it(e,n={},t,r){const o={};return c.createRenderEffect(()=>o.children=K(e,n.children,o.children)),c.createRenderEffect(()=>typeof n.ref=="function"&&D(n.ref,e)),c.createRenderEffect(()=>ct(e,n,t,!0,o,!0)),o}function D(e,n,t){return c.untrack(()=>e(n,t))}function v(e,n,t,r){if(t!==void 0&&!r&&(r=[]),typeof n!="function")return K(e,n,r,t);c.createRenderEffect(o=>K(e,n(),o,t),r)}function ct(e,n,t,r,o={},a=!1){n||(n={});for(const i in o)if(!(i in n)){if(i==="children")continue;o[i]=Ee(e,i,null,o[i],t,a,n)}for(const i in n){if(i==="children")continue;const l=n[i];o[i]=Ee(e,i,l,o[i],t,a,n)}}function X(e){return!!c.sharedConfig.context&&!c.sharedConfig.done&&(!e||e.isConnected)}function st(e){return e.toLowerCase().replace(/-([a-z])/g,(n,t)=>t.toUpperCase())}function Se(e,n,t){const r=n.trim().split(/\s+/);for(let o=0,a=r.length;o<a;o++)e.classList.toggle(r[o],t)}function Ee(e,n,t,r,o,a,i){let l,s,d,h,f;if(n==="style")return z(e,t,r);if(n==="classList")return ot(e,t,r);if(t===r)return r;if(n==="ref")a||t(e);else if(n.slice(0,3)==="on:"){const g=n.slice(3);r&&e.removeEventListener(g,r,typeof r!="function"&&r),t&&e.addEventListener(g,t,typeof t!="function"&&t)}else if(n.slice(0,10)==="oncapture:"){const g=n.slice(10);r&&e.removeEventListener(g,r,!0),t&&e.addEventListener(g,t,!0)}else if(n.slice(0,2)==="on"){const g=n.slice(2).toLowerCase(),m=tt.has(g);if(!m&&r){const b=Array.isArray(r)?r[0]:r;e.removeEventListener(g,b)}(m||t)&&(N(e,g,t,m),m&&E([g]))}else if(n.slice(0,5)==="attr:")u(e,n.slice(5),t);else if(n.slice(0,5)==="bool:")at(e,n.slice(5),t);else if((f=n.slice(0,5)==="prop:")||(d=Ze.has(n))||(h=et(n,e.tagName))||(s=Ge.has(n))||(l=e.nodeName.includes("-")||"is"in i)){if(f)n=n.slice(5),s=!0;else if(X(e))return t;n==="class"||n==="className"?Ce(e,t):l&&!s&&!d?e[st(n)]=t:e[h||n]=t}else u(e,Qe[n]||n,t);return t}function lt(e){if(c.sharedConfig.registry&&c.sharedConfig.events&&c.sharedConfig.events.find(([s,d])=>d===e))return;let n=e.target;const t=`$$${e.type}`,r=e.target,o=e.currentTarget,a=s=>Object.defineProperty(e,"target",{configurable:!0,value:s}),i=()=>{const s=n[t];if(s&&!n.disabled){const d=n[`${t}Data`];if(d!==void 0?s.call(n,d,e):s.call(n,e),e.cancelBubble)return}return n.host&&typeof n.host!="string"&&!n.host._$host&&n.contains(e.target)&&a(n.host),!0},l=()=>{for(;i()&&(n=n._$host||n.parentNode||n.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return n||document}}),c.sharedConfig.registry&&!c.sharedConfig.done&&(c.sharedConfig.done=_$HY.done=!0),e.composedPath){const s=e.composedPath();a(s[0]);for(let d=0;d<s.length-2&&(n=s[d],!!i());d++){if(n._$host){n=n._$host,l();break}if(n.parentNode===o)break}}else l();a(r)}function K(e,n,t,r,o){const a=X(e);if(a){!t&&(t=[...e.childNodes]);let s=[];for(let d=0;d<t.length;d++){const h=t[d];h.nodeType===8&&h.data.slice(0,2)==="!$"?h.remove():s.push(h)}t=s}for(;typeof t=="function";)t=t();if(n===t)return t;const i=typeof n,l=r!==void 0;if(e=l&&t[0]&&t[0].parentNode||e,i==="string"||i==="number"){if(a||i==="number"&&(n=n.toString(),n===t))return t;if(l){let s=t[0];s&&s.nodeType===3?s.data!==n&&(s.data=n):s=document.createTextNode(n),t=B(e,t,r,s)}else t!==""&&typeof t=="string"?t=e.firstChild.data=n:t=e.textContent=n}else if(n==null||i==="boolean"){if(a)return t;t=B(e,t,r)}else{if(i==="function")return c.createRenderEffect(()=>{let s=n();for(;typeof s=="function";)s=s();t=K(e,s,t,r)}),()=>t;if(Array.isArray(n)){const s=[],d=t&&Array.isArray(t);if(fe(s,n,t,o))return c.createRenderEffect(()=>t=K(e,s,t,r,!0)),()=>t;if(a){if(!s.length)return t;if(r===void 0)return t=[...e.childNodes];let h=s[0];if(h.parentNode!==e)return t;const f=[h];for(;(h=h.nextSibling)!==r;)f.push(h);return t=f}if(s.length===0){if(t=B(e,t,r),l)return t}else d?t.length===0?$e(e,s,r):nt(e,t,s):(t&&B(e),$e(e,s));t=s}else if(n.nodeType){if(a&&n.parentNode)return t=l?[n]:n;if(Array.isArray(t)){if(l)return t=B(e,t,r,n);B(e,t,null,n)}else t==null||t===""||!e.firstChild?e.appendChild(n):e.replaceChild(n,e.firstChild);t=n}}return t}function fe(e,n,t,r){let o=!1;for(let a=0,i=n.length;a<i;a++){let l=n[a],s=t&&t[e.length],d;if(!(l==null||l===!0||l===!1))if((d=typeof l)=="object"&&l.nodeType)e.push(l);else if(Array.isArray(l))o=fe(e,l,s)||o;else if(d==="function")if(r){for(;typeof l=="function";)l=l();o=fe(e,Array.isArray(l)?l:[l],Array.isArray(s)?s:[s])||o}else e.push(l),o=!0;else{const h=String(l);s&&s.nodeType===3&&s.data===h?e.push(s):e.push(document.createTextNode(h))}}return o}function $e(e,n,t=null){for(let r=0,o=n.length;r<o;r++)e.insertBefore(n[r],t)}function B(e,n,t,r){if(t===void 0)return e.textContent="";const o=r||document.createTextNode("");if(n.length){let a=!1;for(let i=n.length-1;i>=0;i--){const l=n[i];if(o!==l){const s=l.parentNode===e;!a&&!i?s?e.replaceChild(o,l):e.insertBefore(o,t):s&&l.remove()}else a=!0}}else e.insertBefore(o,t);return[o]}const dt="http://www.w3.org/2000/svg";function ut(e,n=!1){return n?document.createElementNS(dt,e):document.createElement(e)}function ht(e){const{useShadow:n}=e,t=document.createTextNode(""),r=()=>e.mount||document.body,o=c.getOwner();let a,i=!!c.sharedConfig.context;return c.createEffect(()=>{i&&(c.getOwner().user=i=!1),a||(a=c.runWithOwner(o,()=>c.createMemo(()=>e.children)));const l=r();if(l instanceof HTMLHeadElement){const[s,d]=c.createSignal(!1),h=()=>d(!0);c.createRoot(f=>v(l,()=>s()?f():a(),null)),c.onCleanup(h)}else{const s=ut(e.isSVG?"g":"div",e.isSVG),d=n&&s.attachShadow?s.attachShadow({mode:"open"}):s;Object.defineProperty(s,"_$host",{get(){return t.parentNode},configurable:!0}),v(d,a),l.appendChild(s),e.ref&&e.ref(s),c.onCleanup(()=>l.removeChild(s))}},void 0,{render:!i}),t}const ft=5e3,gt=e=>{let n=null;const t=()=>{n!==null&&(window.clearTimeout(n),n=null)};return{show:r=>{t(),e.setState({notification:{...r,show:!0}}),n=window.setTimeout(()=>{e.setState({notification:{...r,show:!1}}),n=null},ft)},clear:()=>{t(),e.setState({notification:{show:!1,type:null,message:null}})}}},Pe=(e,n)=>{if(!n)return e;const t={...e};for(const r in n)n[r]&&typeof n[r]=="object"&&!Array.isArray(n[r])?t[r]=Pe(e[r],n[r]):t[r]=n[r];return t},mt=(e,n)=>{let t;return(...r)=>{clearTimeout(t),t=window.setTimeout(()=>e(...r),n)}},vt="echo_",q="echo-pages",ze=e=>{if(!e||e==="/")return"/";const n=e.split("/");return n.length<=4?e:`/${n[1]}/.../${n[n.length-1]}`},Te=()=>{window.dispatchEvent(new Event("echo-storage-change"))},Oe=e=>`${vt}${e}`,V=(e,n)=>{try{const t=localStorage.getItem(Oe(e));return t?JSON.parse(t):n}catch{return n}},G=(e,n)=>{try{localStorage.setItem(Oe(e),JSON.stringify(n))}catch(t){console.warn("Failed to save to localStorage:",t)}},ge=()=>{const e=window.location.pathname||"/",n=window.location.search;return`${e}${n}`},wt=(e,n)=>{try{if(!n.feedback.hasUserInteracted&&n.drawing.shapes.length<1)return;const t={message:n.feedback.message,customInputValues:n.feedback.customInputValues},r=V(q,{}),o=ze(e);(t||n.drawing.shapes.length>0)&&(r[o]={...r[o]||{},...t?{feedback:t}:{},drawing:{shapes:n.drawing.shapes}}),G(q,r),Te()}catch(t){console.warn("Failed to save page state:",t)}},me=e=>{try{return V(q,{})[e]}catch(n){console.error("Failed to load page state:",n);return}},Ie=e=>{try{const n=V(q,{});delete n[e],G(q,n),Te()}catch(n){console.error("Failed to clear page state:",n)}},Me=()=>{try{const e=V(q,{});return Object.keys(e).length}catch(e){return console.error("Failed to get stored pages count:",e),0}},ve=()=>{try{const e=V(q,{});return Object.entries(e).map(([n,t])=>({path:ze(n),state:t}))}catch(e){return console.error("Failed to get stored pages:",e),[]}},bt=e=>mt((n,t,r=!1)=>{(!r||t.feedback.message.trim().length>0||t.drawing.shapes.length>0)&&(wt(n,t),e.setState({pagesCount:Me()}))},1e3),we=Symbol("store-raw"),Y=Symbol("store-node"),M=Symbol("store-has"),Re=Symbol("store-self");function Ae(e){let n=e[c.$PROXY];if(!n&&(Object.defineProperty(e,c.$PROXY,{value:n=new Proxy(e,xt)}),!Array.isArray(e))){const t=Object.keys(e),r=Object.getOwnPropertyDescriptors(e);for(let o=0,a=t.length;o<a;o++){const i=t[o];r[i].get&&Object.defineProperty(e,i,{enumerable:r[i].enumerable,get:r[i].get.bind(n)})}}return n}function oe(e){let n;return e!=null&&typeof e=="object"&&(e[c.$PROXY]||!(n=Object.getPrototypeOf(e))||n===Object.prototype||Array.isArray(e))}function Z(e,n=new Set){let t,r,o,a;if(t=e!=null&&e[we])return t;if(!oe(e)||n.has(e))return e;if(Array.isArray(e)){Object.isFrozen(e)?e=e.slice(0):n.add(e);for(let i=0,l=e.length;i<l;i++)o=e[i],(r=Z(o,n))!==o&&(e[i]=r)}else{Object.isFrozen(e)?e=Object.assign({},e):n.add(e);const i=Object.keys(e),l=Object.getOwnPropertyDescriptors(e);for(let s=0,d=i.length;s<d;s++)a=i[s],!l[a].get&&(o=e[a],(r=Z(o,n))!==o&&(e[a]=r))}return e}function ie(e,n){let t=e[n];return t||Object.defineProperty(e,n,{value:t=Object.create(null)}),t}function Q(e,n,t){if(e[n])return e[n];const[r,o]=c.createSignal(t,{equals:!1,internal:!0});return r.$=o,e[n]=r}function pt(e,n){const t=Reflect.getOwnPropertyDescriptor(e,n);return!t||t.get||!t.configurable||n===c.$PROXY||n===Y||(delete t.value,delete t.writable,t.get=()=>e[c.$PROXY][n]),t}function De(e){c.getListener()&&Q(ie(e,Y),Re)()}function yt(e){return De(e),Reflect.ownKeys(e)}const xt={get(e,n,t){if(n===we)return e;if(n===c.$PROXY)return t;if(n===c.$TRACK)return De(e),t;const r=ie(e,Y),o=r[n];let a=o?o():e[n];if(n===Y||n===M||n==="__proto__")return a;if(!o){const i=Object.getOwnPropertyDescriptor(e,n);c.getListener()&&(typeof a!="function"||e.hasOwnProperty(n))&&!(i&&i.get)&&(a=Q(r,n,a)())}return oe(a)?Ae(a):a},has(e,n){return n===we||n===c.$PROXY||n===c.$TRACK||n===Y||n===M||n==="__proto__"?!0:(c.getListener()&&Q(ie(e,M),n)(),n in e)},set(){return!0},deleteProperty(){return!0},ownKeys:yt,getOwnPropertyDescriptor:pt};function ce(e,n,t,r=!1){if(!r&&e[n]===t)return;const o=e[n],a=e.length;t===void 0?(delete e[n],e[M]&&e[M][n]&&o!==void 0&&e[M][n].$()):(e[n]=t,e[M]&&e[M][n]&&o===void 0&&e[M][n].$());let i=ie(e,Y),l;if((l=Q(i,n,o))&&l.$(()=>t),Array.isArray(e)&&e.length!==a){for(let s=e.length;s<a;s++)(l=i[s])&&l.$();(l=Q(i,"length",a))&&l.$(e.length)}(l=i[Re])&&l.$()}function Fe(e,n){const t=Object.keys(n);for(let r=0;r<t.length;r+=1){const o=t[r];ce(e,o,n[o])}}function kt(e,n){if(typeof n=="function"&&(n=n(e)),n=Z(n),Array.isArray(n)){if(e===n)return;let t=0,r=n.length;for(;t<r;t++){const o=n[t];e[t]!==o&&ce(e,t,o)}ce(e,"length",r)}else Fe(e,n)}function J(e,n,t=[]){let r,o=e;if(n.length>1){r=n.shift();const i=typeof r,l=Array.isArray(e);if(Array.isArray(r)){for(let s=0;s<r.length;s++)J(e,[r[s]].concat(n),t);return}else if(l&&i==="function"){for(let s=0;s<e.length;s++)r(e[s],s)&&J(e,[s].concat(n),t);return}else if(l&&i==="object"){const{from:s=0,to:d=e.length-1,by:h=1}=r;for(let f=s;f<=d;f+=h)J(e,[f].concat(n),t);return}else if(n.length>1){J(e[r],n,[r].concat(t));return}o=e[r],t=[r].concat(t)}let a=n[0];typeof a=="function"&&(a=a(o,t),a===o)||r===void 0&&a==null||(a=Z(a),r===void 0||oe(o)&&oe(a)&&!Array.isArray(a)?Fe(o,a):ce(e,r,a))}function be(...[e,n]){const t=Z(e||{}),r=Array.isArray(t),o=Ae(t);function a(...i){c.batch(()=>{r&&i.length===1?kt(t,i[0]):J(t,i)})}return[o,a]}const F={rectangle:{id:"rectangle",label:"Highlight",getCursor:()=>"crosshair",strokeWidth:2,opacity:{selected:1,default:1}},path:{id:"path",label:"Pen",getCursor:e=>`url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48" fill="none" stroke="${e.replace("#","%23")}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="24" cy="24" r="8"/></svg>') 24 24, auto`,strokeWidth:6,opacity:{selected:.6,default:1}}},Ct=e=>{const n=e.replace("#",""),t=Number.parseInt(n.slice(0,2),16)/255,r=Number.parseInt(n.slice(2,2),16)/255,o=Number.parseInt(n.slice(4,2),16)/255;return .2126*t+.7152*r+.0722*o},St=e=>Ct(e)<.5?"#FFFFFF":"#000000";let R=[],T=null,_=null,U=null;const pe=(e,n)=>(...t)=>{const r=a=>{if(typeof a=="string")return a;if(a instanceof Error)return a.stack||a.message;try{const i=new WeakSet;return JSON.stringify(a,(s,d)=>{if(typeof d=="object"&&d!==null){if(d instanceof Node)return`[${d.nodeName} Element]`;if(i.has(d))return"[Circular Reference]";i.add(d)}return d})}catch{return"[Unable to stringify value]"}},o=t.map(r).join(" ");R.push({type:e,message:o,timestamp:new Date().toISOString()}),R.length>1e3&&(R=R.slice(-1e3)),n.apply(console,t)},Et=()=>{T||(T={log:console.log,warn:console.warn,error:console.error},_=window.onerror,U=window.onunhandledrejection,window.onerror=(e,n,t,r,o)=>{const a=(o==null?void 0:o.stack)||(o==null?void 0:o.message)||e;return R.push({type:"error",message:`Uncaught Error: ${a}
1
+ (function(A,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("solid-js"),require("html2canvas-pro")):typeof define=="function"&&define.amd?define(["exports","solid-js","html2canvas-pro"],c):(A=typeof globalThis<"u"?globalThis:A||self,c(A.Echo={},A.Solid,A["html2canvas-pro"]))})(this,function(A,c,Xe){"use strict";const Ke=["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"],Ge=new Set(["className","value","readOnly","formNoValidate","isMap","noModule","playsInline",...Ke]),Ze=new Set(["innerHTML","textContent","innerText","children"]),Qe=Object.assign(Object.create(null),{className:"class",htmlFor:"for"}),Je=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 et(e,n){const t=Je[e];return typeof t=="object"?t[n]?t.$:void 0:t}const tt=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 nt(e,n,t){let r=t.length,o=n.length,a=r,i=0,l=0,s=n[o-1].nextSibling,d=null;for(;i<o||l<a;){if(n[i]===t[l]){i++,l++;continue}for(;n[o-1]===t[a-1];)o--,a--;if(o===i){const h=a<r?l?t[l-1].nextSibling:t[a-l]:s;for(;l<a;)e.insertBefore(t[l++],h)}else if(a===l)for(;i<o;)(!d||!d.has(n[i]))&&n[i].remove(),i++;else if(n[i]===t[a-1]&&t[l]===n[o-1]){const h=n[--o].nextSibling;e.insertBefore(t[l++],n[i++].nextSibling),e.insertBefore(t[--a],h),n[o]=t[a]}else{if(!d){d=new Map;let f=l;for(;f<a;)d.set(t[f],f++)}const h=d.get(n[i]);if(h!=null)if(l<h&&h<a){let f=i,g=1,m;for(;++f<o&&f<a&&!((m=d.get(n[f]))==null||m!==h+g);)g++;if(g>h-l){const b=n[i];for(;l<h;)e.insertBefore(t[l++],b)}else e.replaceChild(t[l++],n[i++])}else i++;else n[i++].remove()}}}const ke="_$DX_DELEGATE";function rt(e,n,t,r={}){let o;return c.createRoot(a=>{o=a,n===document?e():v(n,e(),n.firstChild?null:void 0,t)},r.owner),()=>{o(),n.textContent=""}}function w(e,n,t){let r;const o=()=>{const i=document.createElement("template");return i.innerHTML=e,t?i.content.firstChild.firstChild:i.content.firstChild},a=n?()=>c.untrack(()=>document.importNode(r||(r=o()),!0)):()=>(r||(r=o())).cloneNode(!0);return a.cloneNode=a,a}function E(e,n=window.document){const t=n[ke]||(n[ke]=new Set);for(let r=0,o=e.length;r<o;r++){const a=e[r];t.has(a)||(t.add(a),n.addEventListener(a,lt))}}function u(e,n,t){X(e)||(t==null?e.removeAttribute(n):e.setAttribute(n,t))}function at(e,n,t){X(e)||(t?e.setAttribute(n,""):e.removeAttribute(n))}function Ce(e,n){X(e)||(n==null?e.removeAttribute("class"):e.className=n)}function N(e,n,t,r){if(r)Array.isArray(t)?(e[`$$${n}`]=t[0],e[`$$${n}Data`]=t[1]):e[`$$${n}`]=t;else if(Array.isArray(t)){const o=t[0];e.addEventListener(n,t[0]=a=>o.call(e,t[1],a))}else e.addEventListener(n,t,typeof t!="function"&&t)}function ot(e,n,t={}){const r=Object.keys(n||{}),o=Object.keys(t);let a,i;for(a=0,i=o.length;a<i;a++){const l=o[a];!l||l==="undefined"||n[l]||(Se(e,l,!1),delete t[l])}for(a=0,i=r.length;a<i;a++){const l=r[a],s=!!n[l];!l||l==="undefined"||t[l]===s||!s||(Se(e,l,!0),t[l]=s)}return t}function z(e,n,t){if(!n)return t?u(e,"style"):n;const r=e.style;if(typeof n=="string")return r.cssText=n;typeof t=="string"&&(r.cssText=t=void 0),t||(t={}),n||(n={});let o,a;for(a in t)n[a]==null&&r.removeProperty(a),delete t[a];for(a in n)o=n[a],o!==t[a]&&(r.setProperty(a,o),t[a]=o);return t}function it(e,n={},t,r){const o={};return c.createRenderEffect(()=>o.children=K(e,n.children,o.children)),c.createRenderEffect(()=>typeof n.ref=="function"&&D(n.ref,e)),c.createRenderEffect(()=>ct(e,n,t,!0,o,!0)),o}function D(e,n,t){return c.untrack(()=>e(n,t))}function v(e,n,t,r){if(t!==void 0&&!r&&(r=[]),typeof n!="function")return K(e,n,r,t);c.createRenderEffect(o=>K(e,n(),o,t),r)}function ct(e,n,t,r,o={},a=!1){n||(n={});for(const i in o)if(!(i in n)){if(i==="children")continue;o[i]=Ee(e,i,null,o[i],t,a,n)}for(const i in n){if(i==="children")continue;const l=n[i];o[i]=Ee(e,i,l,o[i],t,a,n)}}function X(e){return!!c.sharedConfig.context&&!c.sharedConfig.done&&(!e||e.isConnected)}function st(e){return e.toLowerCase().replace(/-([a-z])/g,(n,t)=>t.toUpperCase())}function Se(e,n,t){const r=n.trim().split(/\s+/);for(let o=0,a=r.length;o<a;o++)e.classList.toggle(r[o],t)}function Ee(e,n,t,r,o,a,i){let l,s,d,h,f;if(n==="style")return z(e,t,r);if(n==="classList")return ot(e,t,r);if(t===r)return r;if(n==="ref")a||t(e);else if(n.slice(0,3)==="on:"){const g=n.slice(3);r&&e.removeEventListener(g,r,typeof r!="function"&&r),t&&e.addEventListener(g,t,typeof t!="function"&&t)}else if(n.slice(0,10)==="oncapture:"){const g=n.slice(10);r&&e.removeEventListener(g,r,!0),t&&e.addEventListener(g,t,!0)}else if(n.slice(0,2)==="on"){const g=n.slice(2).toLowerCase(),m=tt.has(g);if(!m&&r){const b=Array.isArray(r)?r[0]:r;e.removeEventListener(g,b)}(m||t)&&(N(e,g,t,m),m&&E([g]))}else if(n.slice(0,5)==="attr:")u(e,n.slice(5),t);else if(n.slice(0,5)==="bool:")at(e,n.slice(5),t);else if((f=n.slice(0,5)==="prop:")||(d=Ze.has(n))||(h=et(n,e.tagName))||(s=Ge.has(n))||(l=e.nodeName.includes("-")||"is"in i)){if(f)n=n.slice(5),s=!0;else if(X(e))return t;n==="class"||n==="className"?Ce(e,t):l&&!s&&!d?e[st(n)]=t:e[h||n]=t}else u(e,Qe[n]||n,t);return t}function lt(e){if(c.sharedConfig.registry&&c.sharedConfig.events&&c.sharedConfig.events.find(([s,d])=>d===e))return;let n=e.target;const t=`$$${e.type}`,r=e.target,o=e.currentTarget,a=s=>Object.defineProperty(e,"target",{configurable:!0,value:s}),i=()=>{const s=n[t];if(s&&!n.disabled){const d=n[`${t}Data`];if(d!==void 0?s.call(n,d,e):s.call(n,e),e.cancelBubble)return}return n.host&&typeof n.host!="string"&&!n.host._$host&&n.contains(e.target)&&a(n.host),!0},l=()=>{for(;i()&&(n=n._$host||n.parentNode||n.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return n||document}}),c.sharedConfig.registry&&!c.sharedConfig.done&&(c.sharedConfig.done=_$HY.done=!0),e.composedPath){const s=e.composedPath();a(s[0]);for(let d=0;d<s.length-2&&(n=s[d],!!i());d++){if(n._$host){n=n._$host,l();break}if(n.parentNode===o)break}}else l();a(r)}function K(e,n,t,r,o){const a=X(e);if(a){!t&&(t=[...e.childNodes]);let s=[];for(let d=0;d<t.length;d++){const h=t[d];h.nodeType===8&&h.data.slice(0,2)==="!$"?h.remove():s.push(h)}t=s}for(;typeof t=="function";)t=t();if(n===t)return t;const i=typeof n,l=r!==void 0;if(e=l&&t[0]&&t[0].parentNode||e,i==="string"||i==="number"){if(a||i==="number"&&(n=n.toString(),n===t))return t;if(l){let s=t[0];s&&s.nodeType===3?s.data!==n&&(s.data=n):s=document.createTextNode(n),t=B(e,t,r,s)}else t!==""&&typeof t=="string"?t=e.firstChild.data=n:t=e.textContent=n}else if(n==null||i==="boolean"){if(a)return t;t=B(e,t,r)}else{if(i==="function")return c.createRenderEffect(()=>{let s=n();for(;typeof s=="function";)s=s();t=K(e,s,t,r)}),()=>t;if(Array.isArray(n)){const s=[],d=t&&Array.isArray(t);if(fe(s,n,t,o))return c.createRenderEffect(()=>t=K(e,s,t,r,!0)),()=>t;if(a){if(!s.length)return t;if(r===void 0)return t=[...e.childNodes];let h=s[0];if(h.parentNode!==e)return t;const f=[h];for(;(h=h.nextSibling)!==r;)f.push(h);return t=f}if(s.length===0){if(t=B(e,t,r),l)return t}else d?t.length===0?$e(e,s,r):nt(e,t,s):(t&&B(e),$e(e,s));t=s}else if(n.nodeType){if(a&&n.parentNode)return t=l?[n]:n;if(Array.isArray(t)){if(l)return t=B(e,t,r,n);B(e,t,null,n)}else t==null||t===""||!e.firstChild?e.appendChild(n):e.replaceChild(n,e.firstChild);t=n}}return t}function fe(e,n,t,r){let o=!1;for(let a=0,i=n.length;a<i;a++){let l=n[a],s=t&&t[e.length],d;if(!(l==null||l===!0||l===!1))if((d=typeof l)=="object"&&l.nodeType)e.push(l);else if(Array.isArray(l))o=fe(e,l,s)||o;else if(d==="function")if(r){for(;typeof l=="function";)l=l();o=fe(e,Array.isArray(l)?l:[l],Array.isArray(s)?s:[s])||o}else e.push(l),o=!0;else{const h=String(l);s&&s.nodeType===3&&s.data===h?e.push(s):e.push(document.createTextNode(h))}}return o}function $e(e,n,t=null){for(let r=0,o=n.length;r<o;r++)e.insertBefore(n[r],t)}function B(e,n,t,r){if(t===void 0)return e.textContent="";const o=r||document.createTextNode("");if(n.length){let a=!1;for(let i=n.length-1;i>=0;i--){const l=n[i];if(o!==l){const s=l.parentNode===e;!a&&!i?s?e.replaceChild(o,l):e.insertBefore(o,t):s&&l.remove()}else a=!0}}else e.insertBefore(o,t);return[o]}const dt="http://www.w3.org/2000/svg";function ut(e,n=!1){return n?document.createElementNS(dt,e):document.createElement(e)}function ht(e){const{useShadow:n}=e,t=document.createTextNode(""),r=()=>e.mount||document.body,o=c.getOwner();let a,i=!!c.sharedConfig.context;return c.createEffect(()=>{i&&(c.getOwner().user=i=!1),a||(a=c.runWithOwner(o,()=>c.createMemo(()=>e.children)));const l=r();if(l instanceof HTMLHeadElement){const[s,d]=c.createSignal(!1),h=()=>d(!0);c.createRoot(f=>v(l,()=>s()?f():a(),null)),c.onCleanup(h)}else{const s=ut(e.isSVG?"g":"div",e.isSVG),d=n&&s.attachShadow?s.attachShadow({mode:"open"}):s;Object.defineProperty(s,"_$host",{get(){return t.parentNode},configurable:!0}),v(d,a),l.appendChild(s),e.ref&&e.ref(s),c.onCleanup(()=>l.removeChild(s))}},void 0,{render:!i}),t}const ft=5e3,gt=e=>{let n=null;const t=()=>{n!==null&&(window.clearTimeout(n),n=null)};return{show:r=>{t(),e.setState({notification:{...r,show:!0}}),n=window.setTimeout(()=>{e.setState({notification:{...r,show:!1}}),n=null},ft)},clear:()=>{t(),e.setState({notification:{show:!1,type:null,message:null}})}}},Pe=(e,n)=>{if(!n)return e;const t={...e};for(const r in n)n[r]&&typeof n[r]=="object"&&!Array.isArray(n[r])?t[r]=Pe(e[r],n[r]):t[r]=n[r];return t},mt=(e,n)=>{let t;return(...r)=>{clearTimeout(t),t=window.setTimeout(()=>e(...r),n)}},vt="echo_",q="echo-pages",ze=e=>{if(!e||e==="/")return"/";const n=e.split("/");return n.length<=4?e:`/${n[1]}/.../${n[n.length-1]}`},Te=()=>{window.dispatchEvent(new Event("echo-storage-change"))},Oe=e=>`${vt}${e}`,V=(e,n)=>{try{const t=localStorage.getItem(Oe(e));return t?JSON.parse(t):n}catch{return n}},G=(e,n)=>{try{localStorage.setItem(Oe(e),JSON.stringify(n))}catch(t){console.warn("Failed to save to localStorage:",t)}},ge=()=>{const e=window.location.pathname||"/",n=window.location.search;return`${e}${n}`},wt=(e,n)=>{try{if(!n.feedback.hasUserInteracted&&n.drawing.shapes.length<1)return;const t={message:n.feedback.message,customInputValues:n.feedback.customInputValues},r=V(q,{}),o=ze(e);(t||n.drawing.shapes.length>0)&&(r[o]={...r[o]||{},...t?{feedback:t}:{},drawing:{shapes:n.drawing.shapes}}),G(q,r),Te()}catch(t){console.warn("Failed to save page state:",t)}},me=e=>{try{return V(q,{})[e]}catch(n){console.error("Failed to load page state:",n);return}},Ie=e=>{try{const n=V(q,{});delete n[e],G(q,n),Te()}catch(n){console.error("Failed to clear page state:",n)}},Me=()=>{try{const e=V(q,{});return Object.keys(e).length}catch(e){return console.error("Failed to get stored pages count:",e),0}},ve=()=>{try{const e=V(q,{});return Object.entries(e).map(([n,t])=>({path:ze(n),state:t}))}catch(e){return console.error("Failed to get stored pages:",e),[]}},bt=e=>mt((n,t,r=!1)=>{(!r||t.feedback.message.trim().length>0||t.drawing.shapes.length>0)&&(wt(n,t),e.setState({pagesCount:Me()}))},1e3),we=Symbol("store-raw"),Y=Symbol("store-node"),M=Symbol("store-has"),Re=Symbol("store-self");function Ae(e){let n=e[c.$PROXY];if(!n&&(Object.defineProperty(e,c.$PROXY,{value:n=new Proxy(e,xt)}),!Array.isArray(e))){const t=Object.keys(e),r=Object.getOwnPropertyDescriptors(e);for(let o=0,a=t.length;o<a;o++){const i=t[o];r[i].get&&Object.defineProperty(e,i,{enumerable:r[i].enumerable,get:r[i].get.bind(n)})}}return n}function oe(e){let n;return e!=null&&typeof e=="object"&&(e[c.$PROXY]||!(n=Object.getPrototypeOf(e))||n===Object.prototype||Array.isArray(e))}function Z(e,n=new Set){let t,r,o,a;if(t=e!=null&&e[we])return t;if(!oe(e)||n.has(e))return e;if(Array.isArray(e)){Object.isFrozen(e)?e=e.slice(0):n.add(e);for(let i=0,l=e.length;i<l;i++)o=e[i],(r=Z(o,n))!==o&&(e[i]=r)}else{Object.isFrozen(e)?e=Object.assign({},e):n.add(e);const i=Object.keys(e),l=Object.getOwnPropertyDescriptors(e);for(let s=0,d=i.length;s<d;s++)a=i[s],!l[a].get&&(o=e[a],(r=Z(o,n))!==o&&(e[a]=r))}return e}function ie(e,n){let t=e[n];return t||Object.defineProperty(e,n,{value:t=Object.create(null)}),t}function Q(e,n,t){if(e[n])return e[n];const[r,o]=c.createSignal(t,{equals:!1,internal:!0});return r.$=o,e[n]=r}function pt(e,n){const t=Reflect.getOwnPropertyDescriptor(e,n);return!t||t.get||!t.configurable||n===c.$PROXY||n===Y||(delete t.value,delete t.writable,t.get=()=>e[c.$PROXY][n]),t}function De(e){c.getListener()&&Q(ie(e,Y),Re)()}function yt(e){return De(e),Reflect.ownKeys(e)}const xt={get(e,n,t){if(n===we)return e;if(n===c.$PROXY)return t;if(n===c.$TRACK)return De(e),t;const r=ie(e,Y),o=r[n];let a=o?o():e[n];if(n===Y||n===M||n==="__proto__")return a;if(!o){const i=Object.getOwnPropertyDescriptor(e,n);c.getListener()&&(typeof a!="function"||e.hasOwnProperty(n))&&!(i&&i.get)&&(a=Q(r,n,a)())}return oe(a)?Ae(a):a},has(e,n){return n===we||n===c.$PROXY||n===c.$TRACK||n===Y||n===M||n==="__proto__"?!0:(c.getListener()&&Q(ie(e,M),n)(),n in e)},set(){return!0},deleteProperty(){return!0},ownKeys:yt,getOwnPropertyDescriptor:pt};function ce(e,n,t,r=!1){if(!r&&e[n]===t)return;const o=e[n],a=e.length;t===void 0?(delete e[n],e[M]&&e[M][n]&&o!==void 0&&e[M][n].$()):(e[n]=t,e[M]&&e[M][n]&&o===void 0&&e[M][n].$());let i=ie(e,Y),l;if((l=Q(i,n,o))&&l.$(()=>t),Array.isArray(e)&&e.length!==a){for(let s=e.length;s<a;s++)(l=i[s])&&l.$();(l=Q(i,"length",a))&&l.$(e.length)}(l=i[Re])&&l.$()}function Fe(e,n){const t=Object.keys(n);for(let r=0;r<t.length;r+=1){const o=t[r];ce(e,o,n[o])}}function kt(e,n){if(typeof n=="function"&&(n=n(e)),n=Z(n),Array.isArray(n)){if(e===n)return;let t=0,r=n.length;for(;t<r;t++){const o=n[t];e[t]!==o&&ce(e,t,o)}ce(e,"length",r)}else Fe(e,n)}function J(e,n,t=[]){let r,o=e;if(n.length>1){r=n.shift();const i=typeof r,l=Array.isArray(e);if(Array.isArray(r)){for(let s=0;s<r.length;s++)J(e,[r[s]].concat(n),t);return}else if(l&&i==="function"){for(let s=0;s<e.length;s++)r(e[s],s)&&J(e,[s].concat(n),t);return}else if(l&&i==="object"){const{from:s=0,to:d=e.length-1,by:h=1}=r;for(let f=s;f<=d;f+=h)J(e,[f].concat(n),t);return}else if(n.length>1){J(e[r],n,[r].concat(t));return}o=e[r],t=[r].concat(t)}let a=n[0];typeof a=="function"&&(a=a(o,t),a===o)||r===void 0&&a==null||(a=Z(a),r===void 0||oe(o)&&oe(a)&&!Array.isArray(a)?Fe(o,a):ce(e,r,a))}function be(...[e,n]){const t=Z(e||{}),r=Array.isArray(t),o=Ae(t);function a(...i){c.batch(()=>{r&&i.length===1?kt(t,i[0]):J(t,i)})}return[o,a]}const F={rectangle:{id:"rectangle",label:"Highlight",getCursor:()=>"crosshair",strokeWidth:2,opacity:{selected:1,default:1}},path:{id:"path",label:"Pen",getCursor:e=>`url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48" fill="none" stroke="${e.replace("#","%23")}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="24" cy="24" r="8"/></svg>') 24 24, auto`,strokeWidth:6,opacity:{selected:.6,default:1}}},Ct=e=>{const n=e.replace("#",""),t=Number.parseInt(n.slice(0,2),16)/255,r=Number.parseInt(n.slice(2,2),16)/255,o=Number.parseInt(n.slice(4,2),16)/255;return .2126*t+.7152*r+.0722*o},St=e=>Ct(e)<.5?"#FFFFFF":"#000000";let R=[],T=null,_=null,U=null;const pe=(e,n)=>(...t)=>{const r=a=>{if(typeof a=="string")return a;if(a instanceof Error)return a.stack||a.message;try{const i=new WeakSet;return JSON.stringify(a,(s,d)=>{if(typeof d=="object"&&d!==null){if(d instanceof Node)return`[${d.nodeName} Element]`;if(i.has(d))return"[Circular Reference]";i.add(d)}return d})}catch{return"[Unable to stringify value]"}},o=t.map(r).join(" ");R.push({type:e,message:o,timestamp:new Date().toISOString()}),R.length>1e3&&(R=R.slice(-1e3)),n.apply(console,t)},Et=()=>{T||(T={log:console.log,warn:console.warn,error:console.error},_=window.onerror,U=window.onunhandledrejection,window.onerror=(e,n,t,r,o)=>{const a=(o==null?void 0:o.stack)||(o==null?void 0:o.message)||e;return R.push({type:"error",message:`Uncaught Error: ${a}
2
2
  Location: ${n}:${t}:${r}`,timestamp:new Date().toISOString()}),_?_(e,n,t,r,o):!1},window.onunhandledrejection=e=>{const n=e.reason;R.push({type:"error",message:`Unhandled Promise Rejection: ${(n==null?void 0:n.stack)||(n==null?void 0:n.message)||n}`,timestamp:new Date().toISOString()}),U&&U(e)},console.log=pe("log",T.log),console.warn=pe("warn",T.warn),console.error=pe("error",T.error),window.addEventListener("error",e=>{const{message:n,filename:t,lineno:r,colno:o,error:a}=e,i=(a==null?void 0:a.stack)||(a==null?void 0:a.message)||n;R.push({type:"error",message:`Uncaught Error: ${i}
3
3
  Location: ${t}:${r}:${o}`,timestamp:new Date().toISOString()})}))},$t=()=>{T&&(console.log=T.log,console.warn=T.warn,console.error=T.error,T=null),_&&(window.onerror=_,_=null),U&&(window.onunhandledrejection=U,U=null),window.removeEventListener("error",()=>{}),R=[]},Pt=()=>[...R],zt=()=>{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)},se=(e,{useClientCoords:n=!1}={})=>{const r=typeof TouchEvent<"u"&&e instanceof TouchEvent?e.touches[0]:null;return{x:r?n?r.clientX:r.pageX:n?e.clientX:e.pageX,y:r?n?r.clientY:r.pageY:n?e.clientY:e.pageY}},Le=(e,n)=>{const t=n.x-e.x,r=n.y-e.y;return Math.sqrt(t*t+r*r)},je=e=>{if(e.length!==2)return null;const[n,t]=e;return{x:Math.min(n.x,t.x),y:Math.min(n.y,t.y),width:Math.abs(t.x-n.x),height:Math.abs(t.y-n.y)}},Tt=e=>e.length<2?null:`M ${e[0].x} ${e[0].y} ${e.slice(1).map(n=>`L ${n.x} ${n.y}`).join(" ")}`,le=window.EventTarget.prototype.addEventListener,H=window.EventTarget.prototype.removeEventListener;let de=!1,ee=null;const te=new WeakMap,Ot=e=>{ee=e},ne=e=>{if(!ee||!e)return!1;if(e===ee)return!0;const n=e.getRootNode();if(n&&n.nodeName==="#document"){const r=n.querySelector("#top-layer");if(r!=null&&r.contains(e))return!0}let t=e;for(;t;){if(t.getRootNode()===ee)return!0;t=t.parentNode}return!1},It=e=>{de||(de=!0,window.EventTarget.prototype.addEventListener=function(n,t,r){if(!t||typeof t!="function")return le.call(this,n,t,r);if(!(this instanceof Node&&!ne(this)))return le.call(this,n,t,r);const a=Rt(t,e);te.has(this)||te.set(this,new Map),te.get(this).set(t,a),le.call(this,n,a,r)},window.EventTarget.prototype.removeEventListener=function(n,t,r){if(!t||typeof this!="object")return H.call(this,n,t,r);if(this instanceof Node&&ne(this))return H.call(this,n,t,r);const a=te.get(this);if(!a)return H.call(this,n,t,r);const i=a.get(t);i?(H.call(this,n,i,r),a.delete(t),a.size===0&&te.delete(this)):H.call(this,n,t,r)})},Mt=()=>{de&&(window.EventTarget.prototype.addEventListener=le,window.EventTarget.prototype.removeEventListener=H,de=!1,ee=null)},O=e=>{const{event:n,callback:t,onMount:r,onCleanup:o}=e;c.onMount(()=>{r==null||r(),window.addEventListener(n,t)}),c.onCleanup(()=>{o==null||o(),window.removeEventListener(n,t)})},ye=e=>{const{target:n,options:t,callback:r,onMount:o,onCleanup:a}=e,i=new MutationObserver(r);c.onMount(()=>{o==null||o(),i.observe(n,t)}),c.onCleanup(()=>{a==null||a(),i.disconnect()})},Rt=(e,n)=>function(t){(!(t.target instanceof Node)||!ne(t.target))&&n(t),e.call(this,t)},At=e=>e.hasAttribute("data-hide-when-drawing"),Dt=async()=>{var e;try{const n=document.createElement("style");document.head.appendChild(n),(e=n.sheet)==null||e.insertRule("body > div:last-child img { display: inline-block; }");const t=await Xe(document.body,{logging:!1,useCORS:!0,scale:window.devicePixelRatio,allowTaint:!0,ignoreElements:r=>At(r)});return n.remove(),t.toDataURL("image/png")}catch(n){console.error("Failed to capture screenshot:",n);return}},Ft=(e,n,t)=>{let r=`M0 0 H${e.width} V${e.height} H0 Z`;if(n.length===2){const[o,a]=n;r+=` M${o.x} ${o.y} h${a.x-o.x} v${a.y-o.y} h${o.x-a.x} v${o.y-a.y}`}for(const o of t)if(o.type==="rectangle"){const[a,i]=o.points;r+=` M${a.x} ${a.y} h${i.x-a.x} v${i.y-a.y} h${a.x-i.x} v${a.y-i.y}`}return r},Lt=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")},Ne=5,qe=(e,n)=>F[e].getCursor(n),jt=(e,n,t)=>{var l,s;const[r,o]=be({isDrawing:!1,currentPoints:[],selectedShapeId:null,selectedTool:"rectangle",showTooltip:!0,mousePosition:{x:0,y:0},selectedColor:e.primaryColor,shapes:((s=(l=me(n))==null?void 0:l.drawing)==null?void 0:s.shapes)||[],hasDrawn:!1,isDragging:!1,dragStartPos:null,initialClickPos:null,dragOffset:null,cursor:qe("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=qe(f,g)}o(d),t==null||t(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=se(d);if(d.target instanceof SVGElement&&d.target.classList.contains("echo-shape")){const f=d.target.dataset.shapeId;if(f&&r.selectedShapeId===f){const g=r.shapes.find(m=>m.id===f);if(g){i.startDrag(h),i.updateDragOffset(g,h);return}}}i.setInitialClick(h)},handleMove:d=>{const h=se(d,{useClientCoords:!0}),f=se(d);if(a({mousePosition:h}),r.isDragging&&r.selectedShapeId&&r.dragStartPos&&r.shapes.find(m=>m.id===r.selectedShapeId)){const m=f.x-r.dragStartPos.x,b=f.y-r.dragStartPos.y,S=r.shapes.map(k=>k.id===r.selectedShapeId?{...k,points:k.points.map(C=>({x:C.x+m,y:C.y+b}))}:k);a({shapes:S}),i.startDrag(f);return}if(r.initialClickPos&&!r.isDrawing){Le(r.initialClickPos,f)>=Ne&&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=se(d);if(Le(r.initialClickPos,h)<Ne&&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}},Nt=(e,n,t,r)=>{var f;const o=(r==null?void 0:r.reduce((g,m)=>(g[m.id]=m.defaultValue??(m.type==="checkbox"?[]:""),g),{}))||{},a=me(n),i=(a==null?void 0:a.feedback.customInputValues)||{},l={...o,...i},[s,d]=be({message:((f=a==null?void 0:a.feedback)==null?void 0:f.message)||"",screenshot:void 0,isCapturing:!1,isMinimized:!1,customInputValues:l,hasUserInteracted:!1});return{state:s,setState:(g,m=!1)=>{const b="isCapturing"in g||"isMinimized"in g||m;!b&&!s.hasUserInteracted&&d({hasUserInteracted:!0}),d(g),(s.hasUserInteracted||b)&&(t==null||t(g,m))}}},qt=(e,n)=>{const[t,r]=be({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,position:e.position,customInputs:e.customInputs});return{state:t,setState:r}},Ve=e=>{var n;return((n=e.customInputs)==null?void 0:n.reduce((t,r)=>(t[r.id]=r.defaultValue??(r.type==="checkbox"?[]:""),t),{}))||{}},Vt=e=>{let n=ge();const t=qt(e),r=bt(t),o=gt(t),a=Nt(e,n,(d,h)=>{r(n,{feedback:{...a.state,...d},drawing:i.state},h)},e.customInputs),i=jt(e,n,(d,h)=>{r(n,{feedback:a.state,drawing:{...i.state,...d}},h)}),l=d=>{n=d;const h=me(n),f={...Ve(e),...h==null?void 0:h.feedback.customInputValues};a.setState({message:(h==null?void 0:h.feedback.message)||"",customInputValues:f,hasUserInteracted:!1}),i.setState({shapes:(h==null?void 0:h.drawing.shapes)||[]})},s=()=>{Ie(n);const d={feedback:{message:"",screenshot:void 0,isCapturing:!1,isMinimized:!1,hasUserInteracted:!1,customInputValues:Ve(e)},drawing:{isDrawing:!1,currentPoints:[],shapes:[],selectedShapeId:null,selectedTool:"rectangle",selectedColor:e.primaryColor,showTooltip:!0,mousePosition:{x:0,y:0},hasDrawn:!1,isDragging:!1,dragStartPos:null,initialClickPos:null,dragOffset:null,cursor:i.state.cursor},widget:{isOpen:!1}};a.setState(d.feedback,!0),i.setState(d.drawing,!0),t.setState(d.widget)};return{feedback:a,drawing:i,widget:t,methods:{reset:s,handlePageChange:l,submit:async d=>{t.setState({isOpen:!1});try{const h=await e.onSubmit(d);return h instanceof Response&&!h.ok?(o.show({type:"error",message:"Submission failed"}),h):(s(),o.show({type:"success",message:"Feedback submitted"}),h)}catch{o.show({type:"error",message:"Submission failed"})}}}}},We=c.createContext(),Wt=e=>{const n=Vt({primaryColor:e.primaryColor,onSubmit:e.onSubmit,textConfig:e.textConfig,position:e.position,customInputs:e.customInputs});return c.createComponent(We.Provider,{value:n,get children(){return e.children}})},x=()=>{const e=c.useContext(We);if(!e)throw new Error("useEchoStore must be used within EchoProvider");return e},Bt=e=>{const[n,t]=c.createSignal({width:document.documentElement.clientWidth,height:document.documentElement.scrollHeight}),r=()=>{requestAnimationFrame(()=>{const o=e();o&&(o.style.height="0px",o.style.height=`${document.documentElement.scrollHeight}px`,t({width:document.documentElement.clientWidth,height:document.documentElement.scrollHeight}))})};return O({event:"resize",callback:r,onMount:r}),ye({target:document.documentElement,options:{childList:!0,subtree:!0,attributes:!0},callback:r}),n},Yt=({onUrlChange:e})=>{let n=ge();const t=()=>{const r=ge();r!==n&&(n=r,e(r))};O({event:"popstate",callback:t}),O({event:"pushstate",callback:t}),O({event:"replacestate",callback:t}),ye({target:document.documentElement,options:{childList:!0,subtree:!0},callback:t})},_t=`*,*:before,*:after{box-sizing:border-box}.echo-root{position:absolute;top:0;left:0;z-index:var(--z-root);isolation:isolate;pointer-events:none;--z-root: 999999;--z-launcher: 2;--z-overlay: 1;--z-drawing-toolbar: 3;--z-drawing-tooltip: 3;--z-shape-actions: 3;--z-notification: 2;--z-welcome-message: 2;--z-widget-button: 2;--z-feedback-form: 4;--primary-color: #000;--primary-text-color: #fff;--error-color: #f44336;--success-color: var(--primary-color);--text-dark: #1a1a1a;--text-medium: #333;--text-light: #666;--text-lighter: #999;--border-color: rgba(0, 0, 0, .1);--border-color-light: rgba(0, 0, 0, .05);--border-color-medium: rgba(0, 0, 0, .08);--background-color: #fff;--primary-color-lighter: color-mix(in srgb, var(--primary-color) 100%, white 40%);--primary-color-lightest: color-mix(in srgb, var(--primary-color) 7%, white 100%);--hover-color: color-mix(in srgb, var(--primary-color) 80%, #fff);--shadow-color-dark: rgba(0, 0, 0, .6);--shadow-color-light: rgba(255, 255, 255, .1);--shadow-color-medium: rgba(0, 0, 0, .2);--shadow-sm: 0 1px 3px;--shadow-md: 0 4px 10px;--shadow-lg: 0 10px 20px;--shadow-black-sm: var(--shadow-sm) rgba(0, 0, 0, .5);--shadow-black-md: var(--shadow-md) rgba(0, 0, 0, .5);--shadow-black-lg: var(--shadow-lg) rgba(0, 0, 0, .5);--shadow-black-lightened-sm: var(--shadow-sm) var(--shadow-color-medium);--shadow-black-lightened-md: var(--shadow-md) var(--shadow-color-medium);--shadow-black-lightened-lg: var(--shadow-lg) var(--shadow-color-medium);--shadow-primary-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color) 60%, transparent 80%);--shadow-primary-md: var(--shadow-md) color-mix(in srgb, var(--primary-color) 50%, transparent 80%);--shadow-primary-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color) 40%, transparent 80%);--shadow-primary-lighter-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color-lighter) 70%, transparent 80%);--shadow-primary-lighter-md: var(--shadow-md) color-mix(in srgb, var(--primary-color-lighter) 60%, transparent 80%);--shadow-primary-lighter-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color-lighter) 50%, transparent 80%);--shadow-primary-lightest-sm: var(--shadow-sm) color-mix(in srgb, var(--primary-color-lightest) 70%, transparent 80%);--shadow-primary-lightest-md: var(--shadow-md) color-mix(in srgb, var(--primary-color-lightest) 60%, transparent 80%);--shadow-primary-lightest-lg: var(--shadow-lg) color-mix(in srgb, var(--primary-color-lightest) 50%, transparent 80%);--shadow-combined-sm: var(--shadow-primary-sm), var(--shadow-black-lightened-sm);--shadow-combined-md: var(--shadow-primary-md), var(--shadow-black-lightened-md);--shadow-combined-lg: var(--shadow-primary-lg), var(--shadow-black-lightened-lg);--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 20px;--spacing-2xl: 24px;--spacing-3xl: 32px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--font-xs: .8125rem;--font-sm: .875rem;--font-base: .9375rem;--font-md: 1rem;--font-lg: 1.125rem;--duration-fast: .1s;--duration-base: .2s;--duration-slow: .3s;--duration-slower: .4s;--duration-slowest: .6s;--ease-default: ease;--ease-in-out: ease-in-out;--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.16, 1, .3, 1)}.echo-stored-feedback{position:absolute;display:flex;flex-direction:column;bottom:calc(100% + var(--spacing-lg));right:0;width:320px;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-black-lightened-lg);animation:slideUpFade var(--duration-base) var(--ease-smooth);z-index:calc(var(--z-widget-button) + 1);transform-origin:bottom right;transition:all var(--duration-base) var(--ease-smooth)}.echo-stored-feedback-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg)}.echo-stored-feedback-header h3{margin:0;font-size:var(--font-md);font-weight:600}.echo-stored-feedback-list{max-height:400px;overflow-y:auto;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-stored-feedback-item{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--border-color-light);transition:all var(--duration-base) var(--ease-smooth);background:#fff;position:relative}.echo-stored-feedback-item:hover{background:var(--primary-color-lightest)}.echo-stored-feedback-item-current{background:var(--primary-color-lightest);padding-left:calc(var(--spacing-lg) - 3px)}.echo-stored-feedback-item-current:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--primary-color);border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.echo-stored-feedback-item:last-child{border-bottom:none;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-stored-feedback-item:last-child.echo-stored-feedback-item-current:before{border-bottom-left-radius:var(--radius-lg)}.echo-stored-feedback-content{flex:1;min-width:0;margin-right:var(--spacing-md)}.echo-stored-feedback-path{font-size:var(--font-sm);font-weight:500;color:var(--text-medium);margin-bottom:var(--spacing-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.echo-stored-feedback-preview{font-size:var(--font-xs);color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.echo-stored-feedback-actions{display:flex;align-items:center;gap:var(--spacing-sm)}.echo-stored-feedback-link{color:var(--text-light)}.echo-stored-feedback-link:hover{color:var(--primary-color)}.echo-stored-feedback-delete{color:var(--text-light);font-size:var(--font-xs);padding:var(--spacing-xs) var(--spacing-md)}.echo-stored-feedback-delete:hover{color:var(--error-color);background:color-mix(in srgb,var(--error-color) 10%,transparent)}.echo-stored-feedback-empty{padding:var(--spacing-3xl) var(--spacing-lg);text-align:center;color:var(--text-light);font-size:var(--font-sm);border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.echo-launcher{position:fixed;z-index:var(--z-launcher);bottom:var(--spacing-xl);right:var(--spacing-xl);pointer-events:none}.echo-overlay{position:absolute;top:0;left:0;margin:0;padding:0;max-width:none;max-height:none;border:3px solid var(--primary-color);background:transparent}.echo-overlay::backdrop{background:transparent}[data-hidden=true],[data-hidden=false]{transition:opacity var(--duration-slow) var(--ease-in-out),visibility var(--duration-slow) var(--ease-in-out)}[data-hidden=true]{opacity:0;visibility:hidden;pointer-events:none}[data-hidden=false]{opacity:1;visibility:visible;pointer-events:auto;user-select:none;-webkit-user-select:none}.echo-launcher-button{z-index:var(--z-widget-button);position:relative;display:flex;align-items:center;justify-content:center;cursor:pointer;background:radial-gradient(circle at 40% 40%,var(--primary-color) 0%,var(--primary-color-lighter) 65%,var(--primary-color-lighter) 100%);border:none;border-radius:var(--radius-full);width:48px;height:48px;box-shadow:var(--shadow-black-md);transition:all var(--duration-slow) var(--ease-default),transform var(--duration-slower) var(--ease-smooth),opacity var(--duration-slow) var(--ease-in-out);will-change:transform}.echo-launcher-button:hover{box-shadow:var(--shadow-black-lg);transform:translateY(-2px)}.echo-launcher-button:active{transform:scale(.95)}.echo-launcher-button-count{position:absolute;top:calc(-1 * var(--spacing-xs));left:calc(-1 * var(--spacing-xs));background:var(--primary-color-lightest);color:var(--primary-color-lighter);border-radius:var(--radius-md);min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-black-sm);padding:0 var(--spacing-xs);font-weight:600;pointer-events:auto;cursor:pointer;transform-origin:center center;animation:popIn var(--duration-slow) var(--ease-bounce);transition:transform var(--duration-base) var(--ease-default)}.echo-launcher-button-count:hover{transform:scale(1.1)}.echo-feedback{position:fixed;bottom:var(--spacing-xl);right:var(--spacing-xl);width:min(calc(100vw - var(--spacing-xl) * 2),24rem);max-height:calc(100vh - var(--spacing-xl) * 2);z-index:var(--z-feedback-form);box-shadow:var(--shadow-black-lightened-lg);display:flex;flex-direction:column;gap:var(--spacing-lg);background:var(--background-color);border-radius:var(--radius-lg);overflow-y:auto;will-change:transform;padding:0 var(--spacing-lg)}.echo-feedback[data-minimized=true]{transition:transform .4s var(--ease-default),box-shadow .4s var(--ease-default);transform:translate(calc(100% - 48px),calc(100% - 48px));box-shadow:0 8px 16px #0003}.echo-feedback[data-minimized=true]:hover{cursor:pointer;transform:translate(calc(100% - 48px),calc(100% - 48px)) rotate(-2deg) scale(1.1);box-shadow:0 12px 24px #00000040}.echo-feedback[data-minimized=false]{transition:transform .4s var(--ease-smooth),box-shadow .4s var(--ease-smooth);transform:translate(0)}.echo-feedback[style*=transition]{pointer-events:none}.echo-feedback-content{display:flex;flex-direction:column;gap:var(--spacing-lg)}.echo-feedback-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg) 0;background-color:var(--background-color);position:sticky;top:0;z-index:1}.echo-feedback-footer{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg) 0;background-color:var(--background-color);position:sticky;bottom:0;z-index:1}.echo-feedback-title{font-size:var(--font-lg);font-weight:600;color:var(--text-dark);margin:0}.echo-feedback-header-actions{display:flex;gap:var(--spacing-xs);margin:calc(-1 * var(--spacing-sm)) calc(-1 * var(--spacing-sm)) calc(-1 * var(--spacing-sm)) 0}[data-hide-when-drawing=true]{opacity:1;visibility:visible;transition:opacity .3s ease-in-out,visibility .3s ease-in-out}[data-drawing=true] [data-hide-when-drawing=true]{opacity:0;visibility:hidden;pointer-events:none;user-select:none;-webkit-user-select:none}.echo-drawing-layer,.echo-drawing-layer-container{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;user-select:none;-webkit-user-select:none}.echo-drawing-layer-container svg{pointer-events:auto}.echo-drawing-toolbar{position:fixed;top:var(--spacing-xl);left:var(--spacing-xl);display:flex;flex-direction:column;gap:var(--spacing-sm);z-index:var(--z-drawing-toolbar);opacity:1;transition:opacity var(--duration-base) var(--ease-default)}.echo-drawing-toolbar-button{width:50px;height:50px;border-radius:var(--radius-full);border:2px solid #ddd;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:all var(--duration-base) var(--ease-default);box-shadow:var(--shadow-black-sm);position:relative}.echo-drawing-toolbar-icon{width:25px;height:25px;color:var(--primary-color);transition:color var(--duration-base) var(--ease-default)}.echo-drawing-toolbar-button:hover{transform:scale(1.05);border-color:var(--hover-color)}.echo-drawing-toolbar-button[data-selected=true]{background:var(--primary-color-lightest);border-color:var(--primary-color)}.echo-color-selector{position:relative}.echo-color-selector:hover .echo-drawing-toolbar-button{border-top-right-radius:0;border-bottom-right-radius:0;transform:scale(1.05);border-right-color:transparent;background:rgba(var(--primary-color),.9);border-color:var(--hover-color)}.echo-color-swatch-wrapper{position:absolute;left:calc(100% - 2px);top:50%;transform:translateY(-50%);height:52.5px;padding-right:var(--spacing-sm);display:none}.echo-color-selector:hover .echo-color-swatch-wrapper{display:block}.echo-color-swatch{height:100%;background:#fff;border-radius:var(--radius-md);border-top-left-radius:0;border-bottom-left-radius:0;padding:var(--spacing-sm);padding-left:var(--spacing-md);box-shadow:var(--shadow-black-sm);display:flex;align-items:center;gap:var(--spacing-sm);border:2px solid #ddd;border-left:none}.echo-color-selector:hover .echo-color-swatch{border-color:var(--hover-color)}.echo-color-swatch-button{width:24px;height:24px;border-radius:var(--radius-full);border:2px solid transparent;cursor:pointer;padding:0;transition:transform var(--duration-base) var(--ease-default)}.echo-color-swatch-button:hover{transform:scale(1.1)}.echo-color-swatch-button[data-selected=true]{border-color:var(--primary-color)}.echo-drawing-tooltip{display:flex;text-wrap:nowrap;position:fixed;background:#fff;padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-lg);box-shadow:var(--shadow-combined-sm);font-size:var(--font-sm);color:var(--primary-color);z-index:var(--z-drawing-tooltip);pointer-events:none;animation:slideDownFade var(--duration-slow) var(--ease-default);border:1px solid var(--primary-color);background:var(--primary-color-lightest)}.echo-shape-actions{position:fixed;z-index:var(--z-shape-actions);display:flex;gap:var(--spacing-xs);background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-combined-md);transform:translate(-50%,-100%) translateY(calc(-1 * var(--spacing-sm)));animation:popInSlideDown var(--duration-fast) var(--ease-default);cursor:default;pointer-events:auto;padding:var(--spacing-xs);border:1px solid var(--primary-color)}.echo-shape-actions-divider{width:1px;margin:var(--spacing-sm) 0;background:var(--border-color);pointer-events:none}.echo-shape-actions[hidden]{display:none}.echo-notification{position:absolute;z-index:var(--z-notification);bottom:70px;right:0;width:300px;padding:var(--spacing-2xl);border-radius:var(--radius-lg);font-size:var(--font-md);font-weight:500;box-shadow:var(--shadow-combined-md);background:#fff;border:1px solid var(--primary-color);transform-origin:bottom right;display:flex;flex-direction:column;align-items:center;gap:var(--spacing-xl);opacity:1;pointer-events:auto;transition:all var(--duration-base) var(--ease-smooth)}.echo-notification:not([data-empty=true]){animation:popInSlideUp var(--duration-slower) var(--ease-spring)}.echo-notification[data-empty=true]{opacity:0;pointer-events:none;transform:translateY(var(--spacing-sm)) scale(.95);transition:none}.echo-notification-hide{position:absolute;top:var(--spacing-lg);right:var(--spacing-lg);width:24px;height:24px;padding:var(--spacing-xs);border:none;background:transparent;color:var(--text-light);opacity:.7;cursor:pointer;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;transition:all var(--duration-base) var(--ease-bounce);flex-shrink:0}.echo-notification-hide:hover{opacity:1;background:var(--primary-color-lightest);transform:scale(1.1);color:var(--primary-color)}.echo-notification-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;transform:scale(1.5);background:var(--primary-color-lightest);padding:var(--spacing-md);border-radius:var(--radius-full);margin-top:var(--spacing-md);transition:all var(--duration-base) var(--ease-bounce)}.echo-notification[data-type=success]{border-color:var(--success-color)}.echo-notification[data-type=success] .echo-notification-icon{color:var(--success-color)}.echo-notification[data-type=error]{border-color:var(--error-color)}.echo-notification[data-type=error] .echo-notification-icon{color:var(--error-color);background:color-mix(in srgb,var(--error-color) 10%,white)}.echo-notification-content{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;padding:0 12px}.echo-notification-title{font-size:1rem;font-weight:600;color:#1a1a1a}.echo-notification-message{font-size:.875rem;font-weight:400;color:#666;line-height:1.4;max-width:100%}@media (max-width: 768px){.echo-notification{right:0;width:calc(100vw - 40px);height:auto;min-height:180px;-webkit-backdrop-filter:none;backdrop-filter:none;font-size:.9375rem;padding:20px;gap:16px;bottom:calc(100% + 20px)}.echo-notification-icon{transform:scale(1.3);padding:10px;margin-top:8px}.echo-notification-title{font-size:.9375rem}.echo-notification-message{font-size:.8125rem}}.echo-welcome-message{display:flex;align-items:center;gap:var(--spacing-xs);position:fixed;z-index:var(--z-welcome-message);background:var(--primary-color-lightest);border:1px solid var(--primary-color);color:var(--primary-color);padding:var(--spacing-md) var(--spacing-lg);border-radius:var(--radius-lg);font-size:var(--font-sm);font-weight:500;box-shadow:var(--shadow-combined-md);opacity:1;transform:translateY(0) scale(1);transition:all var(--duration-slow) var(--ease-smooth);animation:bounceIn var(--duration-slowest) var(--ease-bounce);user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;cursor:pointer;text-align:left}.echo-welcome-message:hover{transform:translateY(-2px) scale(1.02);background:var(--primary-color-lightest);box-shadow:var(--shadow-combined-lg)}.echo-welcome-message:active{transform:translateY(0) scale(.98)}.echo-welcome-message-close{width:20px;height:20px;padding:2px;margin-left:var(--spacing-xs);border:none;background:transparent;opacity:.7;cursor:pointer;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;transition:all var(--duration-base) var(--ease-default)}.echo-welcome-message-close:hover{opacity:1;background:var(--shadow-color-light);transform:scale(1.1)}.echo-welcome-message-close:active{transform:scale(.95)}.echo-welcome-message:after{content:"";position:absolute;bottom:-4px;right:17px;width:16px;height:16px;background:inherit;transform:rotate(45deg);border-radius:var(--radius-xs);border:1px solid var(--primary-color);z-index:-2}.echo-welcome-message:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:var(--primary-color-lightest);z-index:-1;border-radius:var(--radius-lg)}.echo-welcome-message-pulsar{content:"";display:inline-block;width:6px;height:6px;background:var(--primary-color);border-radius:50%;margin-right:8px;animation:pulse 1.5s var(--ease-in-out) infinite}.echo-button{display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius-md);font-weight:500;cursor:pointer;transition:all var(--duration-base) var(--ease-default);line-height:1}.echo-button:focus-visible{outline:2px solid var(--primary-color);outline-offset:2px}.echo-button-primary{background:var(--primary-color);color:#fff}.echo-button-primary:hover{background:var(--hover-color);transform:translateY(-1px)}.echo-button-primary:active{transform:translateY(0)}.echo-button-secondary{background:transparent;color:var(--text-light)}.echo-button-secondary:hover{background-color:var(--primary-color-lightest);color:var(--primary-color)}.echo-button-xs{padding:var(--spacing-xs);font-size:var(--font-xs)}.echo-button-sm{padding:var(--spacing-xs);font-size:var(--font-sm)}.echo-button-md{padding:var(--spacing-md) var(--spacing-2xl);font-size:var(--font-base)}.echo-button-lg{padding:var(--spacing-md) var(--spacing-3xl);font-size:var(--font-md)}@keyframes slideUpFade{0%{opacity:0;transform:translateY(var(--spacing-sm))}to{opacity:1;transform:translateY(0)}}@keyframes slideDownFade{0%{opacity:0;transform:translateY(calc(-1 * var(--spacing-sm)))}to{opacity:1;transform:translateY(0)}}@keyframes popIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes popInSlideUp{0%{opacity:0;transform:translateY(var(--spacing-sm)) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes popInSlideDown{0%{opacity:0;transform:translate(-50%,-100%) translateY(calc(-1 * var(--spacing-xs))) scale(.95)}to{opacity:1;transform:translate(-50%,-100%) translateY(calc(-1 * var(--spacing-sm))) scale(1)}}@keyframes bounceIn{0%{opacity:0;transform:translateY(var(--spacing-xl)) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.5}to{transform:scale(1);opacity:1}}.echo-inputs{display:flex;flex-direction:column;gap:1rem;margin-bottom:1rem}.echo-input{display:flex;flex-direction:column;gap:.5rem}.echo-input-label{font-size:.875rem;font-weight:500;color:var(--text-color)}.echo-input-required{color:#dc2626;margin-left:.25rem}.echo-input-field{width:100%;padding:.5rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:#fff;color:var(--text-medium);font-size:var(--font-sm);transition:all var(--duration-base) var(--ease-default)}.echo-input-field:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-input-field:disabled{opacity:.5}.echo-input-field::placeholder{color:var(--text-lighter)}textarea.echo-input-field{resize:vertical;max-width:100%;max-height:20rem;box-sizing:border-box}select.echo-input-field{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center;padding-right:2.5rem;cursor:pointer}.echo-input-options-wrapper{display:flex;flex-direction:column;gap:var(--spacing-xl);border:none;margin:0;padding:0}.echo-input-options{display:flex;flex-direction:column;gap:var(--spacing-sm);border:none;margin:0;padding:0}.echo-input-option{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:var(--spacing-xs);border-radius:var(--radius-sm);transition:all var(--duration-base) var(--ease-default)}.echo-input-option:hover{background:var(--primary-color-lightest)}.echo-input-option input[type=radio],.echo-input-option input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;width:18px;height:18px;border:1px solid var(--border-color);background-color:#fff;display:grid;place-content:center;cursor:pointer;transition:all var(--duration-base) var(--ease-default)}.echo-input-option input[type=radio]{border-radius:50%}.echo-input-option input[type=radio]:before{content:"";width:10px;height:10px;border-radius:50%;transform:scale(0);transition:transform var(--duration-base) var(--ease-default);background-color:var(--primary-color)}.echo-input-option input[type=radio]:checked:before{transform:scale(1)}.echo-input-option input[type=checkbox]{border-radius:var(--radius-sm)}.echo-input-option input[type=checkbox]:before{content:"";width:12px;height:12px;transform:scale(0);transition:all var(--duration-base) var(--ease-default);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");background-size:contain;background-repeat:no-repeat;background-position:center}.echo-input-option input[type=checkbox]:checked{background-color:var(--primary-color-lighter);border-color:var(--primary-color-lighter)}.echo-input-option input[type=checkbox]:checked:before{transform:scale(1)}.echo-input-option input[type=radio]:hover,.echo-input-option input[type=checkbox]:hover{border-color:var(--primary-color-lighter)}.echo-input-option input[type=radio]:focus,.echo-input-option input[type=checkbox]:focus{outline:none;border-color:var(--primary-color-lighter);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-input-option input[type=radio]:checked,.echo-input-option input[type=checkbox]:checked{border-color:var(--primary-color-lighter)}.echo-input-option span{font-size:var(--font-sm);color:var(--text-medium);-webkit-user-select:none;user-select:none}.echo-select{position:relative;width:100%}.echo-select-trigger{width:100%;padding:.5rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:#fff;color:var(--text-medium);font-size:var(--font-sm);transition:all var(--duration-base) var(--ease-default);cursor:pointer;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:.5rem;outline:none}.echo-select-trigger[data-placeholder=true]{color:var(--text-lighter)}.echo-select-trigger:hover{border-color:var(--border-color-medium)}.echo-select-trigger:focus,.echo-select-trigger[data-open=true]{border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 15%,transparent)}.echo-select-arrow{flex-shrink:0;transition:transform var(--duration-base) var(--ease-default)}.echo-select-trigger[data-open=true] .echo-select-arrow{transform:rotate(180deg)}.echo-select-dropdown{position:absolute;top:calc(100% + .25rem);left:0;right:0;background:#fff;border:1px solid var(--border-color-medium);border-radius:var(--radius-md);box-shadow:var(--shadow-black-lightened-md);max-height:15rem;overflow-y:auto;z-index:10;animation:slideDownFade var(--duration-base) var(--ease-default);padding:var(--spacing-xs)}.echo-select-option{width:100%;padding:.5rem .75rem;background:none;border:none;text-align:left;color:var(--text-medium);font-size:var(--font-sm);cursor:pointer;transition:all var(--duration-base) var(--ease-default);outline:none;border-radius:var(--radius-sm)}.echo-select-option:hover{background:var(--primary-color-lightest)}.echo-select-option:focus{background:var(--primary-color-lightest);box-shadow:0 0 0 1px var(--primary-color) inset}.echo-select-option[data-selected=true]{background:var(--primary-color-lightest);color:var(--primary-color);font-weight:500}select.echo-input-field{display:none}.visually-hidden{position:absolute;left:50%;bottom:0;transform:translate(-50%);width:1px;height:1px;padding:0;margin:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}`;var Ut=w('<div class=echo-color-selector role=group aria-label="Color Selection"><button class=echo-drawing-toolbar-button title="Current Color"></button><div class=echo-color-swatch-wrapper role=listbox aria-label="Available Colors"><div class=echo-color-swatch>'),Ht=w("<button class=echo-color-swatch-button role=option>");const Xt=["#ff6b6b","#69db7c","#74c0fc","#ffd43b","#da77f2","#66d9e8","#ffa94d","#e599f7"],Kt={"#ff6b6b":"Soft Red","#69db7c":"Soft Green","#74c0fc":"Soft Blue","#ffd43b":"Soft Yellow","#da77f2":"Soft Purple","#66d9e8":"Soft Cyan","#ffa94d":"Soft Orange","#e599f7":"Soft Pink"},xe=e=>Kt[e]||"Primary",Gt=()=>{const e=x();return(()=>{var n=Ut(),t=n.firstChild,r=t.nextSibling,o=r.firstChild;return u(t,"aria-expanded",!1),v(o,c.createComponent(c.For,{get each(){return[e.widget.state.primaryColor,...Xt]},children:a=>(()=>{var i=Ht();return i.$$click=()=>e.drawing.setState({selectedColor:a}),a!=null?i.style.setProperty("background-color",a):i.style.removeProperty("background-color"),c.createRenderEffect(l=>{var s=`Select ${xe(a)} color`,d=e.drawing.state.selectedColor===a,h=`${xe(a)} color`,f=e.drawing.state.selectedColor===a;return s!==l.e&&u(i,"title",l.e=s),d!==l.t&&u(i,"data-selected",l.t=d),h!==l.a&&u(i,"aria-label",l.a=h),f!==l.o&&u(i,"aria-selected",l.o=f),l},{e:void 0,t:void 0,a:void 0,o:void 0}),i})()})),c.createRenderEffect(a=>{var i=`Current color: ${xe(e.drawing.state.selectedColor)}`,l=e.drawing.state.selectedColor;return i!==a.e&&u(t,"aria-label",a.e=i),l!==a.t&&((a.t=l)!=null?t.style.setProperty("background-color",l):t.style.removeProperty("background-color")),a},{e:void 0,t:void 0}),n})()};E(["click"]);var Zt=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 Qt=e=>(()=>{var n=Zt();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var Jt=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 en=e=>(()=>{var n=Jt(),t=n.firstChild;return c.createRenderEffect(r=>{var o=e.size??24,a=e.size??24,i=e.class,l=e.style,s=e.fill??"currentColor";return o!==r.e&&u(n,"width",r.e=o),a!==r.t&&u(n,"height",r.t=a),i!==r.a&&u(n,"class",r.a=i),r.o=z(n,l,r.o),s!==r.i&&u(t,"fill",r.i=s),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),n})();var tn=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 nn=e=>(()=>{var n=tn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var rn=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 an=e=>(()=>{var n=rn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var on=w('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"stroke-linecap=round stroke-linejoin=round><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 Be=e=>(()=>{var n=on();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var cn=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 sn=e=>(()=>{var n=cn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var ln=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 dn=e=>(()=>{var n=ln();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var un=w('<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 ue=e=>(()=>{var n=un();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var hn=w('<div class=echo-drawing-toolbar data-hide-when-drawing=true role=toolbar aria-label="Drawing Tools"><button class=echo-drawing-toolbar-button title="Clear drawings"aria-label="Clear all drawings"role=button>'),fn=w("<button class=echo-drawing-toolbar-button role=button>");const gn={rectangle:nn,path:an},mn=()=>{const e=x(),n=Object.values(F);return(()=>{var t=hn(),r=t.firstChild;return v(t,c.createComponent(c.For,{each:n,children:o=>{const a=gn[o.id];return(()=>{var i=fn();return i.$$click=()=>e.drawing.setState({selectedTool:o.id}),v(i,c.createComponent(a,{class:"echo-drawing-toolbar-icon","aria-hidden":"true"})),c.createRenderEffect(l=>{var s=o.label,d=e.drawing.state.selectedTool===o.id,h=o.label,f=e.drawing.state.selectedTool===o.id;return s!==l.e&&u(i,"title",l.e=s),d!==l.t&&u(i,"data-selected",l.t=d),h!==l.a&&u(i,"aria-label",l.a=h),f!==l.o&&u(i,"aria-pressed",l.o=f),l},{e:void 0,t:void 0,a:void 0,o:void 0}),i})()}}),r),v(t,c.createComponent(Gt,{}),r),r.$$click=()=>e.drawing.setState({shapes:[]},!0),v(r,c.createComponent(Be,{class:"echo-drawing-toolbar-icon","aria-hidden":"true"})),t})()};E(["click"]);var vn=w("<div class=echo-drawing-tooltip data-hide-when-drawing=true>");const wn=()=>{const e=x(),n=c.createMemo(()=>e.drawing.state.showTooltip&&e.drawing.state.mousePosition.y&&e.drawing.state.mousePosition.x&&e.widget.state.isOpen&&!zt());return c.createComponent(c.Show,{get when(){return n()},get children(){var t=vn();return v(t,()=>e.widget.state.text.drawingTooltip.text),c.createRenderEffect(r=>{var o=`${e.drawing.state.mousePosition.y+20}px`,a=`${e.drawing.state.mousePosition.x+10}px`;return o!==r.e&&((r.e=o)!=null?t.style.setProperty("top",o):t.style.removeProperty("top")),a!==r.t&&((r.t=a)!=null?t.style.setProperty("left",a):t.style.removeProperty("left")),r},{e:void 0,t:void 0}),t}})};var bn=w("<button>");const L=e=>{const n=()=>e.variant||"primary",t=()=>e.size||"md";return(()=>{var r=bn();return it(r,c.mergeProps(e,{get class(){return`echo-button echo-button-${n()} echo-button-${t()} ${e.class}`}}),!1),r})()};var pn=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 yn=e=>(()=>{var n=pn();return c.createRenderEffect(t=>{var r=e.size??24,o=e.size??24,a=e.fill??"none",i=e.stroke??"currentColor",l=e.strokeWidth??2,s=e.class,d=e.style;return r!==t.e&&u(n,"width",t.e=r),o!==t.t&&u(n,"height",t.t=o),a!==t.a&&u(n,"fill",t.a=a),i!==t.o&&u(n,"stroke",t.o=i),l!==t.i&&u(n,"stroke-width",t.i=l),s!==t.n&&u(n,"class",t.n=s),t.s=z(n,d,t.s),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})();var xn=w("<div class=echo-stored-feedback-empty>No unsubmitted feedback"),kn=w("<div class=echo-stored-feedback><div class=echo-stored-feedback-header><h3>Unsubmitted Feedback</h3></div><div class=echo-stored-feedback-list>"),Cn=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 Sn=()=>{const e=x();let n;const[t,r]=c.createSignal(ve()),[o,a]=c.createSignal(window.location.pathname),i=m=>{m.key==="Escape"&&e.widget.state.isStoredFeedbackOpen&&e.widget.setState({isStoredFeedbackOpen:!1})},l=m=>{if(!e.widget.state.isStoredFeedbackOpen||!n)return;m.composedPath().includes(n)||e.widget.setState({isStoredFeedbackOpen:!1})},s=()=>{const m=ve();r(m),e.widget.setState({pagesCount:m.length})},d=()=>{a(window.location.pathname)};O({event:"echo-storage-change",callback:s}),O({event:"popstate",callback:d}),ye({target:document.documentElement,options:{childList:!0,subtree:!0},callback:()=>{a(window.location.pathname)}}),O({event:"keydown",callback:i}),O({event:"click",callback:l});const h=(m,b)=>{const S=b?`${m}${b}`:m;window.location.href=S,e.widget.setState({isStoredFeedbackOpen:!1})},f=m=>{o()===m&&e.methods.reset(),Ie(m);const b=ve();r(b),e.widget.setState({pagesCount:b.length})},g=m=>{if(m==="/")return"/";const b=m.split("/");return b.length<=4?m:`/${b[1]}/.../${b[b.length-1]}`};return c.createComponent(c.Show,{get when(){return e.widget.state.isStoredFeedbackOpen},get children(){var m=kn(),b=m.firstChild;b.firstChild;var S=b.nextSibling,k=n;return typeof k=="function"?D(k,m):n=m,v(b,c.createComponent(L,{variant:"secondary",size:"sm",onClick:()=>e.widget.setState({isStoredFeedbackOpen:!1}),get children(){return c.createComponent(ue,{size:20})}}),null),v(S,c.createComponent(c.For,{get each(){return t()},children:C=>{const p=c.createMemo(()=>C.path===o());return(()=>{var $=Cn(),P=$.firstChild,y=P.firstChild,W=y.nextSibling,j=P.nextSibling;return v(y,()=>g(C.path)),v(W,()=>C.state.feedback.message),v(j,(()=>{var I=c.createMemo(()=>!p());return()=>I()&&c.createComponent(L,{class:"echo-stored-feedback-link",variant:"secondary",size:"sm",onClick:()=>h(C.path,C.state.latestQuery),get children(){return c.createComponent(yn,{})}})})(),null),v(j,c.createComponent(L,{class:"echo-stored-feedback-delete",variant:"secondary",size:"sm",onClick:()=>f(C.path),children:"Delete"}),null),c.createRenderEffect(I=>{var Ue=`echo-stored-feedback-item ${p()?"echo-stored-feedback-item-current":""}`,He=C.path;return Ue!==I.e&&Ce($,I.e=Ue),He!==I.t&&u(y,"title",I.t=He),I},{e:void 0,t:void 0}),$})()}}),null),v(S,c.createComponent(c.Show,{get when(){return t().length===0},get children(){return xn()}}),null),m}})};var En=w('<button class=echo-launcher-button aria-label="Open feedback form"role=button>'),$n=w("<span class=echo-launcher-button-count role=button tabindex=0>");const Pn=()=>{const e=x(),[n,t]=c.createSignal(!1);let r;const o=()=>{r&&window.clearTimeout(r),r=window.setTimeout(()=>{const d=V("welcome_message_shown",!1);!e.widget.state.isOpen&&!e.widget.state.isStoredFeedbackOpen&&d&&t(!0)},4e3)},a=()=>{t(!1)},i=()=>{o()},l=d=>{e.widget.setState({isOpen:!e.widget.state.isOpen}),e.widget.setState({welcomeMessageIsClosing:!0}),G("welcome_message_shown",!0)};c.createEffect(()=>{e.widget.state.isOpen||(t(!1),o()),e.widget.state.isStoredFeedbackOpen&&t(!1)});const s=d=>{d.stopPropagation(),e.widget.setState({isStoredFeedbackOpen:!e.widget.state.isStoredFeedbackOpen}),t(!1)};return[(()=>{var d=En();return d.addEventListener("pointerleave",i),d.addEventListener("pointerenter",a),d.$$click=l,v(d,c.createComponent(en,{stroke:"white",fill:"#ffffff","aria-hidden":"true"}),null),v(d,(()=>{var h=c.createMemo(()=>e.widget.state.pagesCount>0);return()=>h()&&(()=>{var f=$n();return f.$$click=s,v(f,()=>e.widget.state.pagesCount),c.createRenderEffect(()=>u(f,"aria-label",`View ${e.widget.state.pagesCount} stored feedback items`)),f})()})(),null),c.createRenderEffect(h=>{var f=e.widget.state.isOpen,g=`translateX(${n()?"45px":"0"})`,m=e.widget.state.isOpen;return f!==h.e&&u(d,"data-hidden",h.e=f),g!==h.t&&((h.t=g)!=null?d.style.setProperty("transform",g):d.style.removeProperty("transform")),m!==h.a&&u(d,"aria-expanded",h.a=m),h},{e:void 0,t:void 0,a:void 0}),d})(),c.createComponent(Sn,{})]};E(["click"]);var zn=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=x(),n=()=>{e.widget.setState({notification:{...e.widget.state.notification,show:!1}})},t=()=>{switch(e.widget.state.notification.type){case"success":return e.widget.state.text.notification.successTitle;case"error":return e.widget.state.text.notification.errorTitle;default:return""}};return(()=>{var r=zn(),o=r.firstChild,a=o.nextSibling,i=a.firstChild,l=i.nextSibling;return v(r,c.createComponent(L,{class:"echo-notification-hide",variant:"secondary",size:"sm",onClick:n,get title(){return e.widget.state.text.notification.hideTitle},get children(){return c.createComponent(ue,{size:20})}}),o),v(o,(()=>{var s=c.createMemo(()=>e.widget.state.notification.type==="success");return()=>s()?c.createComponent(sn,{size:32}):(()=>{var d=c.createMemo(()=>e.widget.state.notification.type==="error");return()=>d()?c.createComponent(dn,{size:32}):null})()})()),v(i,t),v(l,()=>{var s;return(s=e.widget.state.notification)==null?void 0:s.message}),c.createRenderEffect(s=>{var d=e.widget.state.notification.type,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 On=w("<div class=echo-shape-actions data-hide-when-drawing=true>");const In=()=>{const e=x();let n;const[t,r]=c.createSignal({x:window.scrollX,y:window.scrollY});O({event:"scroll",callback:()=>{r({x:window.scrollX,y:window.scrollY})}});const a=()=>{e.drawing.state.selectedShapeId&&e.drawing.setState({shapes:e.drawing.state.shapes.filter(s=>s.id!==e.drawing.state.selectedShapeId),selectedShapeId:null})},i=c.createMemo(()=>e.drawing.state.selectedShapeId?e.drawing.state.shapes.find(s=>s.id===e.drawing.state.selectedShapeId):null),l=c.createMemo(()=>{const s=i(),d=n==null?void 0:n.getBoundingClientRect();if(!s||!d)return null;let h=null;if(s.type==="rectangle"){const m=je(s.points);if(!m)return null;h={x:m.x+m.width/2,y:m.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=t();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=On(),d=n;return typeof d=="function"?D(d,s):n=s,s.style.setProperty("top","0"),s.style.setProperty("left","0"),v(s,c.createComponent(L,{onClick:a,size:"sm",variant:"secondary",title:"Delete shape",get children(){return c.createComponent(Be,{size:20})}})),c.createRenderEffect(h=>{var m,b;var f=!l(),g=`translate(calc(${(m=l())==null?void 0:m.x}px - 50%), calc(${(b=l())==null?void 0:b.y}px - 125%))`;return f!==h.e&&(s.hidden=h.e=f),g!==h.t&&((h.t=g)!=null?s.style.setProperty("transform",g):s.style.removeProperty("transform")),h},{e:void 0,t:void 0}),s})()};var Mn=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=x(),n=V("welcome_message_shown",!1),t=o=>{o.stopPropagation(),e.widget.setState({welcomeMessageIsClosing:!0}),G("welcome_message_shown",!0)},r=()=>{e.widget.setState({isOpen:!0}),e.widget.setState({welcomeMessageIsClosing:!0}),G("welcome_message_shown",!0)};return n?null:(()=>{var o=Mn(),a=o.firstChild,i=a.nextSibling;return o.$$click=r,o.style.setProperty("bottom","80px"),o.style.setProperty("right","20px"),v(o,()=>e.widget.state.text.welcomeMessage.text,i),i.$$keydown=l=>l.key==="Enter"&&t(l),i.$$click=t,v(i,c.createComponent(ue,{size:16,strokeWidth:3})),c.createRenderEffect(l=>{var s=e.widget.state.welcomeMessageIsClosing,d=e.widget.state.text.welcomeMessage.closeAriaLabel;return s!==l.e&&u(o,"data-hidden",l.e=s),d!==l.t&&u(i,"aria-label",l.t=d),l},{e:void 0,t:void 0}),o})()};E(["click","keydown"]);var An=w("<svg><rect class=echo-shape fill=transparent vector-effect=non-scaling-stroke role=img></svg>",!1,!0),Dn=w("<svg><path class=echo-shape fill=none vector-effect=non-scaling-stroke stroke-linecap=round role=img></svg>",!1,!0);const Ye=e=>{const n=c.createMemo(()=>e.id===e.selectedShapeId);return[c.createComponent(c.Show,{get when(){return e.type==="rectangle"},get children(){return c.createComponent(Fn,c.mergeProps(e,{get isSelected(){return n()}}))}}),c.createComponent(c.Show,{get when(){return e.type==="path"},get children(){return c.createComponent(Ln,c.mergeProps(e,{get isSelected(){return n()}}))}})]},Fn=e=>{const n=c.createMemo(()=>je(e.points));return c.createComponent(c.Show,{get when(){return n()},get children(){var t=An();return t.$$keydown=r=>{var o;return r.key==="Enter"&&((o=e.onShapeClick)==null?void 0:o.call(e,e.id))},t.$$click=()=>{var r;return(r=e.onShapeClick)==null?void 0:r.call(e,e.id)},c.createRenderEffect(r=>{var o=e.id,a=e.isSelected,i=n().x,l=n().y,s=n().width,d=n().height,h=e.color,f=F.rectangle.strokeWidth,g=e.isSelected?F.rectangle.opacity.selected:F.rectangle.opacity.default,m=e.isSelected?"5,5":"none",b=e.isSelected?"move":"pointer",S=`Rectangle shape ${e.isSelected?"(selected)":""}`,k=e.onShapeClick?0:-1;return o!==r.e&&u(t,"data-shape-id",r.e=o),a!==r.t&&u(t,"data-selected",r.t=a),i!==r.a&&u(t,"x",r.a=i),l!==r.o&&u(t,"y",r.o=l),s!==r.i&&u(t,"width",r.i=s),d!==r.n&&u(t,"height",r.n=d),h!==r.s&&u(t,"stroke",r.s=h),f!==r.h&&u(t,"stroke-width",r.h=f),g!==r.r&&u(t,"opacity",r.r=g),m!==r.d&&u(t,"stroke-dasharray",r.d=m),b!==r.l&&u(t,"cursor",r.l=b),S!==r.u&&u(t,"aria-label",r.u=S),k!==r.c&&u(t,"tabindex",r.c=k),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),t}})},Ln=e=>{const n=c.createMemo(()=>Tt(e.points));return c.createComponent(c.Show,{get when(){return n()},get children(){var t=Dn();return t.$$keydown=r=>{var o;return r.key==="Enter"&&((o=e.onShapeClick)==null?void 0:o.call(e,e.id))},t.$$click=()=>{var r;return(r=e.onShapeClick)==null?void 0:r.call(e,e.id)},c.createRenderEffect(r=>{var o=e.id,a=e.isSelected,i=n(),l=e.color,s=F.path.strokeWidth,d=e.isSelected?F.path.opacity.selected:F.path.opacity.default,h=e.isSelected?"move":"pointer",f=`Freehand shape ${e.isSelected?"(selected)":""}`,g=e.onShapeClick?0:-1;return o!==r.e&&u(t,"data-shape-id",r.e=o),a!==r.t&&u(t,"data-selected",r.t=a),i!==r.a&&u(t,"d",r.a=i),l!==r.o&&u(t,"stroke",r.o=l),s!==r.i&&u(t,"stroke-width",r.i=s),d!==r.n&&u(t,"opacity",r.n=d),h!==r.s&&u(t,"cursor",r.s=h),f!==r.h&&u(t,"aria-label",r.h=f),g!==r.r&&u(t,"tabindex",r.r=g),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),t}})};E(["click","keydown"]);var jn=w('<div class=echo-drawing-layer-container role=application aria-label="Drawing Canvas"><svg width=100% height=100% class=echo-drawing-layer preserveAspectRatio=none role=img aria-label="Drawing Area"><path class=echo-drawing-layer-mask fill="rgba(33, 43, 55, 1)"fill-opacity=0.2 fill-rule=evenodd aria-hidden=true>');const Nn=()=>{const e=x();let n;return c.onMount(()=>{n==null||n.addEventListener("mousemove",e.drawing.methods.handleMove),n==null||n.addEventListener("mouseup",e.drawing.methods.handleEnd),n==null||n.addEventListener("touchmove",e.drawing.methods.handleMove,{passive:!1}),n==null||n.addEventListener("touchend",e.drawing.methods.handleEnd)}),c.onCleanup(()=>{n==null||n.removeEventListener("mousemove",e.drawing.methods.handleMove),n==null||n.removeEventListener("mouseup",e.drawing.methods.handleEnd),n==null||n.removeEventListener("touchmove",e.drawing.methods.handleMove),n==null||n.removeEventListener("touchend",e.drawing.methods.handleEnd)}),(()=>{var t=jn(),r=t.firstChild,o=r.firstChild,a=n;return typeof a=="function"?D(a,t):n=t,v(t,c.createComponent(wn,{}),r),v(t,c.createComponent(In,{}),r),N(r,"touchend",e.drawing.methods.handleLeave,!0),N(r,"mouseleave",e.drawing.methods.handleLeave),N(r,"mouseenter",e.drawing.methods.handleEnter),r.$$touchmove=i=>{i.preventDefault(),e.drawing.methods.handleMove(i)},N(r,"mousemove",e.drawing.methods.handleMove,!0),r.$$touchstart=i=>{i.preventDefault(),e.drawing.methods.handleStart(i),e.drawing.methods.handleEnter(i),e.drawing.setState({showTooltip:!1,hasDrawn:!0})},r.$$mousedown=i=>{e.drawing.methods.handleStart(i),e.drawing.setState({showTooltip:!1,hasDrawn:!0})},v(r,c.createComponent(c.For,{get each(){return e.drawing.state.shapes},children:i=>c.createComponent(Ye,{get id(){return i.id},get type(){return i.type},get color(){return i.color},get points(){return i.points},get selectedShapeId(){return e.drawing.state.selectedShapeId},get onShapeClick(){return e.drawing.methods.handleShapeClick}})}),null),v(r,c.createComponent(Ye,{id:"temp",get type(){return e.drawing.state.selectedTool},get color(){return e.drawing.state.selectedColor},get points(){return e.drawing.state.currentPoints},get selectedShapeId(){return e.drawing.state.selectedShapeId}}),null),c.createRenderEffect(i=>{var l=e.drawing.state.cursor,s=Ft({width:e.widget.state.dimensions.width,height:e.widget.state.dimensions.height},e.drawing.state.currentPoints,e.drawing.state.shapes);return l!==i.e&&((i.e=l)!=null?t.style.setProperty("cursor",l):t.style.removeProperty("cursor")),s!==i.t&&u(o,"d",i.t=s),i},{e:void 0,t:void 0}),t})()};E(["mousedown","touchstart","mousemove","touchmove","touchend"]);const re=e=>({handleTextChange:a=>{const i=a.target;e(i.value)},handleSelectChange:a=>{e(a)},handleCheckboxChange:(a,i,l)=>{const s=l?[...a,i]:a.filter(d=>d!==i);e(s)},getCheckboxValue:a=>Array.isArray(a)?a:[]});var qn=w("<div class=echo-input role=group>"),Vn=w("<label class=echo-input-label><span>"),Wn=w('<span class=echo-input-required aria-label="Required field">*');const ae=e=>(()=>{var n=qn();return v(n,(()=>{var t=c.createMemo(()=>!!e.label);return()=>t()&&(()=>{var r=Vn(),o=r.firstChild;return v(o,()=>e.label),v(r,(()=>{var a=c.createMemo(()=>!!e.required);return()=>a()&&Wn()})(),null),r})()})(),null),v(n,()=>e.children,null),n})();var Bn=w("<textarea class=echo-input-field rows=5>"),Yn=w("<div class=visually-hidden>");const _e=e=>{const{handleTextChange:n}=re(e.onChange);return c.createComponent(ae,{get label(){return e.config.label},get required(){return e.config.required},get children(){return[(()=>{var t=Bn();return N(t,"input",n,!0),c.createRenderEffect(r=>{var o=e.config.id,a=e.config.placeholder,i=e.config.required,l=e.config.label||e.config.placeholder,s=e.config.required,d=e.value==="",h=`${e.config.id}-description`;return o!==r.e&&u(t,"id",r.e=o),a!==r.t&&u(t,"placeholder",r.t=a),i!==r.a&&(t.required=r.a=i),l!==r.o&&u(t,"aria-label",r.o=l),s!==r.i&&u(t,"aria-required",r.i=s),d!==r.n&&u(t,"aria-invalid",r.n=d),h!==r.s&&u(t,"aria-describedby",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}),c.createRenderEffect(()=>t.value=e.value===void 0?"":e.value),t})(),(()=>{var t=Yn();return v(t,()=>e.config.placeholder),c.createRenderEffect(()=>u(t,"id",`${e.config.id}-description`)),t})()]}})};E(["input"]);var _n=w("<fieldset class=echo-input-options role=group>"),Un=w("<label class=echo-input-option><input type=checkbox><span>");const Hn=e=>{const{handleCheckboxChange:n,getCheckboxValue:t}=re(e.onChange),r=()=>t(e.value),o=()=>r().length>0;return c.createComponent(ae,{get label(){return e.config.label},get required(){return e.config.required},get children(){var a=_n();return v(a,c.createComponent(c.For,{get each(){return e.config.options},children:(i,l)=>(()=>{var s=Un(),d=s.firstChild,h=d.nextSibling;return d.addEventListener("change",f=>n(r(),i.value,f.currentTarget.checked)),v(h,()=>i.label),c.createRenderEffect(()=>d.required=e.config.required&&!o()&&l()===0),c.createRenderEffect(()=>d.value=i.value),c.createRenderEffect(()=>d.checked=r().includes(i.value)),s})()})),c.createRenderEffect(()=>u(a,"aria-required",e.config.required)),a}})};var Xn=w("<fieldset class=echo-input-options role=radiogroup>"),Kn=w("<label class=echo-input-option><input type=radio><span>");const Gn=e=>{const{handleSelectChange:n}=re(e.onChange);return c.createComponent(ae,{get label(){return e.config.label},get required(){return e.config.required},get children(){var t=Xn();return v(t,c.createComponent(c.For,{get each(){return e.config.options},children:r=>(()=>{var o=Kn(),a=o.firstChild,i=a.nextSibling;return a.addEventListener("change",()=>n(r.value)),v(i,()=>r.label),c.createRenderEffect(l=>{var s=e.config.id,d=e.config.required;return s!==l.e&&u(a,"name",l.e=s),d!==l.t&&(a.required=l.t=d),l},{e:void 0,t:void 0}),c.createRenderEffect(()=>a.value=r.value),c.createRenderEffect(()=>a.checked=e.value===r.value),o})()})),c.createRenderEffect(()=>u(t,"aria-required",e.config.required)),t}})};var Zn=w("<div class=echo-select-dropdown role=listbox>"),Qn=w('<div class=echo-select><button type=button class=echo-select-trigger aria-haspopup=listbox><span></span><svg class=echo-select-arrow width=16 height=16 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="m6 9 6 6 6-6"></path></svg></button><input type=text class=visually-hidden aria-hidden=true>'),Jn=w("<button type=button class=echo-select-option role=option>");const er=e=>{const{handleSelectChange:n}=re(e.onChange),[t,r]=c.createSignal(!1);let o,a,i;const l=()=>e.config.options.find(f=>f.value===(e.value===void 0?"":e.value)),s=(f,g)=>{g.stopPropagation(),f.value===e.value?e.config.required||n(""):n(f.value),r(!1)},d=()=>{r(!t())};return O({event:"mousedown",callback:f=>{if(!t()||!o)return;f.composedPath().includes(o)||r(!1)}}),c.createComponent(ae,{get label(){return e.config.label},get required(){return e.config.required},get children(){var f=Qn(),g=f.firstChild,m=g.firstChild,b=g.nextSibling,S=o;typeof S=="function"?D(S,f):o=f,g.$$click=p=>{p.stopPropagation(),d()};var k=a;typeof k=="function"?D(k,g):a=g,v(m,()=>{var p;return((p=l())==null?void 0:p.label)||e.config.placeholder}),v(f,c.createComponent(c.Show,{get when(){return t()},get children(){var p=Zn();return v(p,c.createComponent(c.For,{get each(){return e.config.options},children:$=>(()=>{var P=Jn();return P.$$click=y=>s($,y),v(P,()=>$.label),c.createRenderEffect(y=>{var W=$.value===e.value,j=$.value===e.value;return W!==y.e&&u(P,"aria-selected",y.e=W),j!==y.t&&u(P,"data-selected",y.t=j),y},{e:void 0,t:void 0}),P})()})),p}}),b);var C=i;return typeof C=="function"?D(C,b):i=b,c.createRenderEffect(p=>{var $=t(),P=!e.value,y=e.config.required,W=t(),j=e.config.required,I=e.config.required;return $!==p.e&&u(g,"data-open",p.e=$),P!==p.t&&u(g,"data-placeholder",p.t=P),y!==p.a&&u(g,"data-required",p.a=y),W!==p.o&&u(g,"aria-expanded",p.o=W),j!==p.i&&u(g,"aria-required",p.i=j),I!==p.n&&(b.required=p.n=I),p},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),c.createRenderEffect(()=>b.value=e.value===void 0?"":e.value),f}})};E(["click"]);var tr=w("<input type=text class=echo-input-field>");const nr=e=>{const{handleTextChange:n}=re(e.onChange);return c.createComponent(ae,{get label(){return e.config.label},get required(){return e.config.required},get children(){var t=tr();return N(t,"input",n,!0),c.createRenderEffect(r=>{var o=e.config.placeholder,a=e.config.required,i=e.config.disabled;return o!==r.e&&u(t,"placeholder",r.e=o),a!==r.t&&(t.required=r.t=a),i!==r.a&&(t.disabled=r.a=i),r},{e:void 0,t:void 0,a:void 0}),c.createRenderEffect(()=>t.value=e.value===void 0?"":e.value),t}})};E(["input"]);var rr=w("<div class=echo-input-error>Invalid input type"),ar=w("<div class=echo-input-error>Unsupported input type: ");const or=e=>c.createComponent(c.Show,{get when(){return e.config.type},keyed:!0,get fallback(){return rr()},get children(){return c.createComponent(c.Switch,{get fallback(){return(()=>{var n=ar();return n.firstChild,v(n,()=>e.config.type,null),n})()},get children(){return[c.createComponent(c.Match,{get when(){return e.config.type==="text"},get children(){return c.createComponent(nr,c.mergeProps(e,{get value(){return e.value},get config(){return e.config}}))}}),c.createComponent(c.Match,{get when(){return e.config.type==="textarea"},get children(){return c.createComponent(_e,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}}),c.createComponent(c.Match,{get when(){return e.config.type==="radio"},get children(){return c.createComponent(Gn,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}}),c.createComponent(c.Match,{get when(){return e.config.type==="checkbox"},get children(){return c.createComponent(Hn,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}}),c.createComponent(c.Match,{get when(){return e.config.type==="select"},get children(){return c.createComponent(er,{get config(){return e.config},get value(){return e.value},get onChange(){return e.onChange}})}})]}})}}),ir=()=>{const e=navigator.connection;return{effectiveType:e==null?void 0:e.effectiveType,downlink:e==null?void 0:e.downlink,rtt:e==null?void 0:e.rtt,saveData:e==null?void 0:e.saveData}},cr=()=>({width:window.innerWidth,height:window.innerHeight,screenWidth:window.screen.width,screenHeight:window.screen.height,language:navigator.language,languages:navigator.languages,doNotTrack:navigator.doNotTrack,cookiesEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,maxTouchPoints:navigator.maxTouchPoints,colorDepth:window.screen.colorDepth,pixelRatio:window.devicePixelRatio,availableWidth:window.screen.availWidth,availableHeight:window.screen.availHeight}),sr=()=>{const e=new URL(window.location.href),n={};return e.searchParams.forEach((t,r)=>{n[r]=t}),{url:e.href,origin:e.origin,pathname:e.pathname,searchParams:n,referrer:document.referrer}},lr=()=>({timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,localDateTime:new Date().toISOString()}),dr=()=>({userAgent:navigator.userAgent,browserInfo:cr(),networkInfo:ir(),locationInfo:sr(),timeInfo:lr(),console:Pt()});var ur=w("<fieldset class=echo-input-options-wrapper><legend class=visually-hidden>Additional Information"),hr=w('<section class=echo-feedback data-hide-when-drawing=true role=dialog aria-label="Feedback Form"><form class=echo-feedback-content aria-label="Submit Feedback"><header class=echo-feedback-header><h3 class=echo-feedback-title id=feedback-form-title></h3><div class=echo-feedback-header-actions role=toolbar aria-label="Form controls"></div></header><fieldset class=echo-input-options-wrapper><legend class=visually-hidden>Feedback Message</legend></fieldset><footer class=echo-feedback-footer>');const fr=()=>{const e=x(),n=async o=>{o.preventDefault();const a=await Dt(),i={message:e.feedback.state.message,screenshot:a,metadata:dr(),customInputs:e.feedback.state.customInputValues};e.methods.submit(i)},t=o=>{o.stopPropagation(),e.feedback.setState({isMinimized:!0})},r=()=>{e.feedback.setState({isMinimized:!1})};return c.createEffect(()=>{e.widget.state.isOpen&&requestAnimationFrame(()=>{var o;(o=document.querySelector(".echo-input-field"))==null||o.focus()})}),(()=>{var o=hr(),a=o.firstChild,i=a.firstChild,l=i.firstChild,s=l.nextSibling,d=i.nextSibling;d.firstChild;var h=d.nextSibling;return o.$$click=()=>e.feedback.state.isMinimized&&r(),a.addEventListener("submit",n),v(l,()=>e.widget.state.text.feedbackForm.title),v(s,c.createComponent(L,{type:"button",title:"Hide form",variant:"secondary",size:"sm",onClick:t,"aria-label":"Minimize feedback form",get children(){return c.createComponent(Qt,{size:20})}}),null),v(s,c.createComponent(L,{type:"button",title:"Close form",variant:"secondary",size:"sm",onClick:()=>e.widget.setState({isOpen:!1}),"aria-label":"Close feedback form",get children(){return c.createComponent(ue,{size:20})}}),null),v(d,c.createComponent(_e,{get config(){return{type:"textarea",id:"message",placeholder:e.widget.state.text.feedbackForm.placeholder,label:"Feedback Message",required:!0}},get value(){return e.feedback.state.message},onChange:f=>e.feedback.setState({message:f})}),null),v(a,c.createComponent(c.Show,{get when(){var f;return(f=e.widget.state.customInputs)==null?void 0:f.length},get children(){var f=ur();return f.firstChild,v(f,c.createComponent(c.For,{get each(){return e.widget.state.customInputs},children:g=>c.createComponent(or,{config:g,get value(){return e.feedback.state.customInputValues[g.id]},onChange:m=>e.feedback.setState({customInputValues:{...e.feedback.state.customInputValues,[g.id]:m}})})}),null),f}}),h),v(h,c.createComponent(L,{type:"submit",variant:"primary",size:"lg",style:{width:"100%"},"aria-label":"Submit feedback",get children(){return e.widget.state.text.feedbackForm.submitButton}})),c.createRenderEffect(f=>{var g=e.feedback.state.isMinimized,m=e.feedback.state.isMinimized?"pointer":"default",b=!e.feedback.state.isMinimized;return g!==f.e&&u(o,"data-minimized",f.e=g),m!==f.t&&((f.t=m)!=null?o.style.setProperty("cursor",m):o.style.removeProperty("cursor")),b!==f.a&&u(o,"aria-expanded",f.a=b),f},{e:void 0,t:void 0,a:void 0}),o})()};E(["click"]);var gr=w("<style>"),mr=w("<div class=echo-launcher>"),vr=w("<dialog class=echo-overlay>"),wr=w("<div class=echo-root>");const br=e=>{const[n,t]=c.createSignal();return c.createEffect(()=>{const r=n();r&&Ot(r.shadowRoot)}),c.createComponent(ht,{ref:t,useShadow:!0,get mount(){return document.body},get children(){return c.createComponent(Wt,c.mergeProps(e,{get children(){return c.createComponent(kr,{get children(){return[c.createComponent(pr,{get primaryColor(){return e.primaryColor}}),c.createComponent(yr,{})]}})}}))}})},pr=e=>{const[n,t]=c.createSignal("");return c.createEffect(()=>{const r=`
4
4
  .echo-root {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@contember/echo",
3
3
  "license": "Apache-2.0",
4
- "version": "0.0.33-beta.1",
4
+ "version": "0.0.33-beta.3",
5
5
  "type": "module",
6
6
  "author": "neumie@neumie.dev",
7
7
  "keywords": [
@@ -21,7 +21,7 @@
21
21
  "ts:watch": "tsc --watch"
22
22
  },
23
23
  "dependencies": {
24
- "html2canvas": "^1.4.1",
24
+ "html2canvas-pro": "1.5.8",
25
25
  "solid-js": "^1.8.15"
26
26
  },
27
27
  "devDependencies": {