tosijs 1.0.4 → 1.0.6

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/module.js CHANGED
@@ -1,13 +1,13 @@
1
- var O={debug:!1,perf:!1};function C(e){if(e==null||typeof e!=="object")return e;if(e instanceof Set)return new Set(e);else if(Array.isArray(e))return e.map(C);let n={};for(let o in e){let i=e[o];if(e!=null&&typeof e==="object")n[o]=C(i);else n[o]=i}return n}var fe="-xin-data",L=`.${fe}`,ue="-xin-event",pe=`.${ue}`,b="xinPath",$="xinValue",Ie="xinSet",Ye="xinObserve",Je="xinBind",Ve="xinOn",M=(e)=>{return e&&e[b]||void 0};function w(e){return typeof e==="object"&&e!==null?e[$]||e:e}var H=new WeakMap,v=new WeakMap;var z=(e)=>{let n=e.cloneNode();if(n instanceof Element){let o=v.get(e),i=H.get(e);if(o!=null)v.set(n,C(o));if(i!=null)H.set(n,C(i))}for(let o of Array.from(e instanceof HTMLTemplateElement?e.content.childNodes:e.childNodes))if(o instanceof Element||o instanceof DocumentFragment)n.appendChild(z(o));else n.appendChild(o.cloneNode());return n},_=new WeakMap,ye=(e)=>{let n=document.body.parentElement;while(e.parentElement!=null&&e.parentElement!==n){let o=_.get(e);if(o!=null)return o;e=e.parentElement}return!1};var Ue=Symbol("observer should be removed"),N=[],ee=[],me=!1,xe,he;class _e{description;test;callback;constructor(e,n){let o=typeof n==="string"?`"${n}"`:`function ${n.name}`,i;if(typeof e==="string")this.test=(t)=>typeof t==="string"&&t!==""&&(e.startsWith(t)||t.startsWith(e)),i=`test = "${e}"`;else if(e instanceof RegExp)this.test=e.test.bind(e),i=`test = "${e.toString()}"`;else if(e instanceof Function)this.test=e,i=`test = function ${e.name}`;else throw new Error("expect listener test to be a string, RegExp, or test function");if(this.description=`${i}, ${o}`,typeof n==="function")this.callback=n;else throw new Error("expect callback to be a path or function");N.push(this)}}var Ge=async()=>{if(xe===void 0)return;await xe},gn=()=>{if(O.perf)console.time("xin async update");let e=Array.from(ee);for(let n of e)N.filter((o)=>{let i;try{i=o.test(n)}catch(t){throw new Error(`Listener ${o.description} threw "${t}" at "${n}"`)}if(i===Ue)return G(o),!1;return i}).forEach((o)=>{let i;try{i=o.callback(n)}catch(t){console.error(`Listener ${o.description} threw "${t}" handling "${n}"`)}if(i===Ue)G(o)});if(ee.splice(0),me=!1,typeof he==="function")he();if(O.perf)console.timeEnd("xin async update")},W=(e)=>{let n=typeof e==="string"?e:M(e);if(n===void 0)throw console.error("touch was called on an invalid target",e),new Error("touch was called on an invalid target");if(me===!1)xe=new Promise((o)=>{he=o}),me=setTimeout(gn);if(ee.find((o)=>n.startsWith(o))==null)ee.push(n)},be=(e,n)=>{return new _e(e,n)},G=(e)=>{let n=N.indexOf(e);if(n>-1)N.splice(n,1);else throw new Error("unobserve failed, listener not found")};var Tn=(e)=>{try{return JSON.stringify(e)}catch(n){return"{has circular references}"}},we=(...e)=>new Error(e.map(Tn).join(" "));var Xn=()=>new Date(parseInt("1000000000",36)+Date.now()).valueOf().toString(36).slice(1),En=0,Sn=()=>(parseInt("10000",36)+ ++En).toString(36).slice(-5),kn=()=>Xn()+Sn(),Te=Symbol("delete"),Qe=Symbol("new-object"),ge=Symbol("automatic-index");function Ke(e){if(e==="")return[];if(Array.isArray(e))return e;else{let n=[];while(e.length>0){let o=e.search(/\[[^\]]+\]/);if(o===-1){n.push(e.split("."));break}else{let i=e.slice(0,o);if(e=e.slice(o),i!=="")n.push(i.split("."));if(o=e.indexOf("]")+1,n.push(e.slice(1,o-1)),e.slice(o,o+1)===".")o+=1;e=e.slice(o)}}return n}}var D=new WeakMap;function Re(e,n){if(D.get(e)===void 0)D.set(e,{});if(D.get(e)[n]===void 0)D.get(e)[n]={};let o=D.get(e)[n];if(n==="_auto_")e.forEach((i,t)=>{if(i[ge]===void 0)i[ge]=kn();o[i[ge]+""]=t});else e.forEach((i,t)=>{o[I(i,n)+""]=t});return o}function Cn(e,n){if(D.get(e)===void 0||D.get(e)[n]===void 0)return Re(e,n);else return D.get(e)[n]}function vn(e,n,o){o=o+"";let i=Cn(e,n)[o];if(i===void 0||I(e[i],n)+""!==o)i=Re(e,n)[o];return i}function Mn(e,n,o){if(e[n]===void 0&&o!==void 0)e[n]=o;return e[n]}function Ne(e,n,o,i){let t=n!==""?vn(e,n,o):o;if(i===Te)return e.splice(t,1),D.delete(e),Symbol("deleted");else if(i===Qe){if(n===""&&e[t]===void 0)e[t]={}}else if(i!==void 0)if(t!==void 0)e[t]=i;else if(n!==""&&I(i,n)+""===o+"")e.push(i),t=e.length-1;else throw new Error(`byIdPath insert failed at [${n}=${o}]`);return e[t]}function Ze(e){if(!Array.isArray(e))throw we("setByPath failed: expected array, found",e)}function qe(e){if(e==null||!(e instanceof Object))throw we("setByPath failed: expected Object, found",e)}function I(e,n){let o=Ke(n),i=e,t,s,r,c;for(t=0,s=o.length;i!==void 0&&t<s;t++){let d=o[t];if(Array.isArray(d))for(r=0,c=d.length;i!==void 0&&r<c;r++){let l=d[r];i=i[l]}else if(i.length===0){if(i=i[Number(d.slice(1))],d[0]!=="=")return}else if(d.includes("=")){let[l,...p]=d.split("=");i=Ne(i,l,p.join("="))}else r=parseInt(d,10),i=i[r]}return i}function en(e,n,o){let i=e;if(n==="")throw new Error("setByPath cannot be used to set the root object");let t=Ke(n);while(i!=null&&t.length>0){let s=t.shift();if(typeof s==="string"){let r=s.indexOf("=");if(r>-1){if(r===0)qe(i);else Ze(i);let c=s.slice(0,r),d=s.slice(r+1);if(i=Ne(i,c,d,t.length>0?Qe:o),t.length===0)return!0}else{Ze(i);let c=parseInt(s,10);if(t.length>0)i=i[c];else{if(o!==Te){if(i[c]===o)return!1;i[c]=o}else i.splice(c,1);return!0}}}else if(Array.isArray(s)&&s.length>0){qe(i);while(s.length>0){let r=s.shift();if(s.length>0||t.length>0)i=Mn(i,r,s.length>0?{}:[]);else{if(o!==Te){if(i[r]===o)return!1;i[r]=o}else{if(!Object.prototype.hasOwnProperty.call(i,r))return!1;delete i[r]}return!0}}}else throw new Error(`setByPath failed, bad path ${n}`)}throw new Error(`setByPath(${e}, ${n}, ${o}) failed`)}var Dn=["sort","splice","copyWithin","fill","pop","push","reverse","shift","unshift"],Ee={},Fn=!0,Ln=/^\.?([^.[\](),])+(\.[^.[\](),]+|\[\d+\]|\[[^=[\](),]*=[^[\]()]+\])*$/,Bn=(e)=>Ln.test(e),A=(e="",n="")=>{if(e==="")return n;else if(n.match(/^\d+$/)!==null||n.includes("="))return`${e}[${n}]`;else return`${e}.${n}`},On={string(e){return new String(e)},boolean(e){return new Boolean(e)},bigint(e){return e},symbol(e){return e},number(e){return new Number(e)}};function Xe(e,n){let o=typeof e;if(e===void 0||o==="object"||o==="function")return e;else return new Proxy(On[typeof e](e),Y(n,!0))}var Y=(e,n)=>({get(o,i){switch(i){case b:return e;case $:return o.valueOf?o.valueOf():o;case Ie:return(r)=>f[e]=r;case Ye:return(r)=>{let c=be(e,r);return()=>G(c)};case Ve:return(r,c)=>P(r,c,w(o));case Je:return(r,c,d)=>{g(r,e,c,d)}}if(typeof i==="symbol")return o[i];let t=i,s=t.match(/^([^.[]+)\.(.+)$/)??t.match(/^([^\]]+)(\[.+)/)??t.match(/^(\[[^\]]+\])\.(.+)$/)??t.match(/^(\[[^\]]+\])\[(.+)$/);if(s!==null){let[,r,c]=s,d=A(e,r),l=I(o,r);return l!==null&&typeof l==="object"?new Proxy(l,Y(d,n))[c]:l}if(t.startsWith("[")&&t.endsWith("]"))t=t.substring(1,t.length-1);if(!Array.isArray(o)&&o[t]!==void 0||Array.isArray(o)&&t.includes("=")){let r;if(t.includes("=")){let[c,d]=t.split("=");r=o.find((l)=>`${I(l,c)}`===d)}else r=o[t];if(r instanceof Object){let c=A(e,t);return new Proxy(r instanceof Function?r.bind(o):r,Y(c,n))}else return n?Xe(r,A(e,t)):r}else if(Array.isArray(o)){let r=o[t];return typeof r==="function"?(...c)=>{let d=r.apply(o,c);if(Dn.includes(t))W(e);return d}:typeof r==="object"?new Proxy(r,Y(A(e,t),n)):n?Xe(r,A(e,t)):r}else return n?Xe(o[t],A(e,t)):o[t]},set(o,i,t){t=w(t);let s=i!==$?A(e,i):e;if(Fn&&!Bn(s))throw new Error(`setting invalid path ${s}`);if(w(f[s])!==t&&en(Ee,s,t))W(s);return!0}}),Z=(e,n)=>{let o=typeof n==="function"?n:f[n];if(typeof o!=="function")throw new Error(`observe expects a function or path to a function, ${n} is neither`);return be(e,o)},f=new Proxy(Ee,Y("",!1)),J=new Proxy(Ee,Y("",!0));var Se=(e,n)=>{let o=new Event(n);e.dispatchEvent(o)},on=(e)=>{if(e instanceof HTMLInputElement)return e.type;else if(e instanceof HTMLSelectElement&&e.hasAttribute("multiple"))return"multi-select";else return"other"},tn=(e,n)=>{switch(on(e)){case"radio":e.checked=e.value===n;break;case"checkbox":e.checked=!!n;break;case"date":e.valueAsDate=new Date(n);break;case"multi-select":for(let o of Array.from(e.querySelectorAll("option")))o.selected=n[o.value];break;default:e.value=n}},rn=(e)=>{switch(on(e)){case"radio":{let n=e.parentElement?.querySelector(`[name="${e.name}"]:checked`);return n!=null?n.value:null}case"checkbox":return e.checked;case"date":return e.valueAsDate?.toISOString();case"multi-select":return Array.from(e.querySelectorAll("option")).reduce((n,o)=>{return n[o.value]=o.selected,n},{});default:return e.value}},{ResizeObserver:nn}=globalThis,q=nn!=null?new nn((e)=>{for(let n of e){let o=n.target;Se(o,"resize")}}):{observe(){},unobserve(){}},ke=(e,n,o=!0)=>{if(e!=null&&n!=null)if(typeof n==="string")e.textContent=n;else if(Array.isArray(n))n.forEach((i)=>{e.append(i instanceof Node&&o?z(i):i)});else if(n instanceof Node)e.append(o?z(n):n);else throw new Error("expect text content or document node")};var Ce=(e,n=250)=>{let o;return(...i)=>{if(o!==void 0)clearTimeout(o);o=setTimeout(()=>{e(...i)},n)}},ne=(e,n=250)=>{let o,i=Date.now()-n,t=!1;return(...s)=>{if(clearTimeout(o),o=setTimeout(()=>{e(...s),i=Date.now()},n),!t&&Date.now()-i>=n){t=!0;try{e(...s),i=Date.now()}finally{t=!1}}}};var oe=Symbol("list-binding"),Hn=16,$n=100;function sn(e,n){let o=Array.from(e.querySelectorAll(L));if(e.matches(L))o.unshift(e);for(let i of o){let t=v.get(i);for(let s of t){if(s.path.startsWith("^"))s.path=`${n}${s.path.substring(1)}`;if(s.binding.toDOM!=null)s.binding.toDOM(i,f[s.path])}}}class cn{boundElement;listTop;listBottom;template;options;itemToElement;_array=[];_update;_previousSlice;static filterBoundObservers=new WeakMap;constructor(e,n,o={}){if(this.boundElement=e,this.itemToElement=new WeakMap,e.children.length!==1)throw new Error("ListBinding expects an element with exactly one child element");if(e.children[0]instanceof HTMLTemplateElement){let i=e.children[0];if(i.content.children.length!==1)throw new Error("ListBinding expects a template with exactly one child element");this.template=z(i.content.children[0])}else this.template=e.children[0],this.template.remove();if(this.options=o,this.listTop=document.createElement("div"),this.listBottom=document.createElement("div"),this.listTop.classList.add("virtual-list-padding"),this.listBottom.classList.add("virtual-list-padding"),this.boundElement.append(this.listTop),this.boundElement.append(this.listBottom),o.virtual!=null)q.observe(this.boundElement),this._update=ne(()=>{this.update(this._array,!0)},Hn),this.boundElement.addEventListener("scroll",this._update),this.boundElement.addEventListener("resize",this._update)}visibleSlice(){let{virtual:e,hiddenProp:n,visibleProp:o}=this.options,i=this._array;if(n!==void 0)i=i.filter((d)=>d[n]!==!0);if(o!==void 0)i=i.filter((d)=>d[o]===!0);if(this.options.filter&&this.needle!==void 0)i=this.options.filter(i,this.needle);let t=0,s=i.length-1,r=0,c=0;if(e!=null&&this.boundElement instanceof HTMLElement){let d=this.boundElement.offsetWidth,l=this.boundElement.offsetHeight;if(e.visibleColumns==null)e.visibleColumns=e.width!=null?Math.max(1,Math.floor(d/e.width)):1;let p=Math.ceil(l/e.height)+(e.rowChunkSize||1),E=Math.ceil(i.length/e.visibleColumns),S=e.visibleColumns*p,y=Math.floor(this.boundElement.scrollTop/e.height);if(y>E-p+1)y=Math.max(0,E-p+1);if(e.rowChunkSize)y-=y%e.rowChunkSize;t=y*e.visibleColumns,s=t+S-1,r=y*e.height,c=Math.max((E-p)*e.height-r,0)}return{items:i,firstItem:t,lastItem:s,topBuffer:r,bottomBuffer:c}}needle;filter=ne((e)=>{if(this.needle!==e)this.needle=e,this.update(this._array)},$n);update(e,n){if(e==null)e=[];this._array=e;let{hiddenProp:o,visibleProp:i}=this.options,t=M(e),s=this.visibleSlice();this.boundElement.classList.toggle("-xin-empty-list",s.items.length===0);let r=this._previousSlice,{firstItem:c,lastItem:d,topBuffer:l,bottomBuffer:p}=s;if(o===void 0&&i===void 0&&n===!0&&r!=null&&c===r.firstItem&&d===r.lastItem)return;this._previousSlice=s;let E=0,S=0,y=0;for(let u of Array.from(this.boundElement.children)){if(u===this.listTop||u===this.listBottom)continue;let k=_.get(u);if(k==null)u.remove();else{let h=s.items.indexOf(k);if(h<c||h>d)u.remove(),this.itemToElement.delete(k),_.delete(u),E++}}this.listTop.style.height=String(l)+"px",this.listBottom.style.height=String(p)+"px";let x=[],{idPath:ae}=this.options;for(let u=c;u<=d;u++){let k=s.items[u];if(k===void 0)continue;let h=this.itemToElement.get(w(k));if(h==null){if(y++,h=z(this.template),typeof k==="object")this.itemToElement.set(w(k),h),_.set(h,w(k));if(this.boundElement.insertBefore(h,this.listBottom),ae!=null){let le=k[ae],wn=`${t}[${ae}=${le}]`;sn(h,wn)}else{let le=`${t}[${u}]`;sn(h,le)}}x.push(h)}let R=null;for(let u of x){if(u.previousElementSibling!==R)if(S++,R?.nextElementSibling!=null)this.boundElement.insertBefore(u,R.nextElementSibling);else this.boundElement.insertBefore(u,this.listBottom);R=u}if(O.perf)console.log(t,"updated",{removed:E,created:y,moved:S})}}var dn=(e,n,o)=>{let i=e[oe];if(i===void 0)i=new cn(e,n,o),e[oe]=i;return i};var{document:Q,MutationObserver:an}=globalThis,ve=(e,n)=>{let o=v.get(e);if(o==null)return;for(let i of o){let{binding:t,options:s}=i,{path:r}=i,{toDOM:c}=t;if(c!=null){if(r.startsWith("^")){let d=ye(e);if(d!=null&&d[b]!=null)r=i.path=`${d[b]}${r.substring(1)}`;else throw console.error(`Cannot resolve relative binding ${r}`,e,"is not part of a list"),new Error(`Cannot resolve relative binding ${r}`)}if(n==null||r.startsWith(n))c(e,f[r],s)}}};if(an!=null)new an((n)=>{n.forEach((o)=>{Array.from(o.addedNodes).forEach((i)=>{if(i instanceof Element)Array.from(i.querySelectorAll(L)).forEach((t)=>ve(t))})})}).observe(Q.body,{subtree:!0,childList:!0});Z(()=>!0,(e)=>{let n=Array.from(Q.querySelectorAll(L));for(let o of n)ve(o,e)});var ln=(e)=>{let n=e.target.closest(L);while(n!=null){let o=v.get(n);for(let i of o){let{binding:t,path:s}=i,{fromDOM:r}=t;if(r!=null){let c;try{c=r(n,i.options)}catch(d){throw console.error("Cannot get value from",n,"via",i),new Error("Cannot obtain value fromDOM")}if(c!=null){let d=f[s];if(d==null)f[s]=c;else{let l=d[b]!=null?d[$]:d,p=c[b]!=null?c[$]:c;if(l!==p)f[s]=p}}}}n=n.parentElement.closest(L)}};if(globalThis.document!=null)Q.body.addEventListener("change",ln,!0),Q.body.addEventListener("input",ln,!0);function g(e,n,o,i){if(e instanceof DocumentFragment)throw new Error("bind cannot bind to a DocumentFragment");let t;if(typeof n==="object"&&n[b]===void 0&&i===void 0){let{value:c}=n;t=typeof c==="string"?c:c[b],i=n,delete i.value}else t=typeof n==="string"?n:n[b];if(t==null)throw new Error("bind requires a path or object with xin Proxy");let{toDOM:s}=o;e.classList?.add(fe);let r=v.get(e);if(r==null)r=[],v.set(e,r);if(r.push({path:t,binding:o,options:i}),s!=null&&!t.startsWith("^"))W(t);if(i?.filter&&i?.needle)g(e,i.needle,{toDOM(c,d){console.log({needle:d}),c[oe]?.filter(d)}});return e}var fn=new Set,zn=(e)=>{let n=e?.target.closest(pe),o=!1,i=new Proxy(e,{get(s,r){if(r==="stopPropagation")return()=>{e.stopPropagation(),o=!0};else{let c=s[r];return typeof c==="function"?c.bind(s):c}}}),t=new Set;while(!o&&n!=null){let r=H.get(n)[e.type]||t;for(let c of r){if(typeof c==="function")c(i);else{let d=f[c];if(typeof d==="function")d(i);else throw new Error(`no event handler found at path ${c}`)}if(o)continue}n=n.parentElement!=null?n.parentElement.closest(pe):null}};function P(e,n,o){let i=H.get(e);if(e.classList.add(ue),i==null)i={},H.set(e,i);if(!i[n])i[n]=new Set;if(i[n].add(o),!fn.has(n))fn.add(n),Q.body.addEventListener(n,zn,!0);return()=>{i[n].delete(o)}}var ie={value:{toDOM:tn,fromDOM(e){return rn(e)}},text:{toDOM(e,n){e.textContent=n}},enabled:{toDOM(e,n){e.disabled=!n}},disabled:{toDOM(e,n){e.disabled=Boolean(n)}},list:{toDOM(e,n,o){dn(e,n,o).update(n)}}};var An=180/Math.PI,Pn=Math.PI/180;function T(e,n,o){return o<e?NaN:n<e?e:n>o?o:n}function F(e,n,o,i=!0){if(i)o=T(0,o,1);return o*(n-e)+e}var jn={RADIANS_TO_DEGREES:An,DEGREES_TO_RADIANS:Pn,clamp:T,lerp:F};function Me(e,n=document.body){let o=getComputedStyle(n);if(e.endsWith(")")&&e.startsWith("var("))e=e.slice(4,-1);return o.getPropertyValue(e).trim()}var Wn=(e,n,o)=>{return(0.299*e+0.587*n+0.114*o)/255},j=(e)=>("00"+Math.round(Number(e)).toString(16)).slice(-2);class un{h;s;l;constructor(e,n,o){e/=255,n/=255,o/=255;let i=Math.max(e,n,o),t=i-Math.min(e,n,o),s=t!==0?i===e?(n-o)/t:i===n?2+(o-e)/t:4+(e-n)/t:0;this.h=60*s<0?60*s+360:60*s,this.s=t!==0?i<=0.5?t/(2*i-t):t/(2-(2*i-t)):0,this.l=(2*i-t)/2}}var V=globalThis.document!==void 0?globalThis.document.createElement("span"):void 0;class a{r;g;b;a;static fromVar(e,n=document.body){return a.fromCss(Me(e,n))}static fromCss(e){let n=e;if(V instanceof HTMLSpanElement)V.style.color="black",V.style.color=e,document.body.appendChild(V),n=getComputedStyle(V).color,V.remove();let[o,i,t,s]=n.match(/[\d.]+/g)||["0","0","0","0"],r=n.startsWith("color(srgb")?255:1;return new a(Number(o)*r,Number(i)*r,Number(t)*r,s==null?1:Number(s))}static fromHsl(e,n,o,i=1){let t,s,r;if(n===0)t=s=r=o;else{let d=(S,y,x)=>{if(x<0)x+=1;if(x>1)x-=1;if(x<0.16666666666666666)return S+(y-S)*6*x;if(x<0.5)return y;if(x<0.6666666666666666)return S+(y-S)*(0.6666666666666666-x)*6;return S},l=o<0.5?o*(1+n):o+n-o*n,p=2*o-l,E=(e%360+360)%360/360;t=d(p,l,E+0.3333333333333333),s=d(p,l,E),r=d(p,l,E-0.3333333333333333)}let c=new a(t*255,s*255,r*255,i);return c.hslCached={h:(e%360+360)%360,s:n,l:o},c}static black=new a(0,0,0);static white=new a(255,255,255);constructor(e,n,o,i=1){this.r=T(0,e,255),this.g=T(0,n,255),this.b=T(0,o,255),this.a=T(0,i,1)}get inverse(){return new a(255-this.r,255-this.g,255-this.b,this.a)}get inverseLuminance(){let{h:e,s:n,l:o}=this._hsl;return a.fromHsl(e,n,1-o,this.a)}get opaque(){return this.a===1?this:new a(this.r,this.g,this.b,1)}contrasting(e=1){return this.opaque.blend(this.brightness>0.5?a.black:a.white,e)}get rgb(){let{r:e,g:n,b:o}=this;return`rgb(${e.toFixed(0)},${n.toFixed(0)},${o.toFixed(0)})`}get rgba(){let{r:e,g:n,b:o,a:i}=this;return`rgba(${e.toFixed(0)},${n.toFixed(0)},${o.toFixed(0)},${i.toFixed(2)})`}get RGBA(){return[this.r/255,this.g/255,this.b/255,this.a]}get ARGB(){return[this.a,this.r/255,this.g/255,this.b/255]}hslCached;get _hsl(){if(this.hslCached==null)this.hslCached=new un(this.r,this.g,this.b);return this.hslCached}get hsl(){let{h:e,s:n,l:o}=this._hsl;return`hsl(${e.toFixed(0)}deg ${(n*100).toFixed(0)}% ${(o*100).toFixed(0)}%)`}get hsla(){let{h:e,s:n,l:o}=this._hsl;return`hsl(${e.toFixed(0)}deg ${(n*100).toFixed(0)}% ${(o*100).toFixed(0)}% / ${(this.a*100).toFixed(0)}%)`}get mono(){let e=this.brightness*255;return new a(e,e,e)}get brightness(){return Wn(this.r,this.g,this.b)}get html(){return this.toString()}toString(){return this.a===1?"#"+j(this.r)+j(this.g)+j(this.b):"#"+j(this.r)+j(this.g)+j(this.b)+j(Math.floor(255*this.a))}brighten(e){let{h:n,s:o,l:i}=this._hsl,t=T(0,i+e*(1-i),1);return a.fromHsl(n,o,t,this.a)}darken(e){let{h:n,s:o,l:i}=this._hsl,t=T(0,i*(1-e),1);return a.fromHsl(n,o,t,this.a)}saturate(e){let{h:n,s:o,l:i}=this._hsl,t=T(0,o+e*(1-o),1);return a.fromHsl(n,t,i,this.a)}desaturate(e){let{h:n,s:o,l:i}=this._hsl,t=T(0,o*(1-e),1);return a.fromHsl(n,t,i,this.a)}rotate(e){let{h:n,s:o,l:i}=this._hsl,t=(n+360+e)%360;return a.fromHsl(t,o,i,this.a)}opacity(e){let{h:n,s:o,l:i}=this._hsl;return a.fromHsl(n,o,i,e)}swatch(){return console.log(`%c %c ${this.html}, ${this.rgba}`,`background-color: ${this.html}`,"background-color: transparent"),this}blend(e,n){return new a(F(this.r,e.r,n),F(this.g,e.g,n),F(this.b,e.b,n),F(this.a,e.a,n))}static blendHue(e,n,o){let i=(n-e+720)%360;if(i<180)return e+o*i;else return e-(360-i)*o}mix(e,n){let o=this._hsl,i=e._hsl;return a.fromHsl(o.s===0?i.h:i.s===0?o.h:a.blendHue(o.h,i.h,n),F(o.s,i.s,n),F(o.l,i.l,n),F(this.a,e.a,n))}colorMix(e,n){return a.fromCss(`color-mix(in hsl, ${this.html}, ${e.html} ${(n*100).toFixed(0)}%)`)}}function X(e){return e.replace(/[A-Z]/g,(n)=>{return`-${n.toLocaleLowerCase()}`})}function pn(e){return e.replace(/-([a-z])/g,(n,o)=>{return o.toLocaleUpperCase()})}var In="http://www.w3.org/1998/Math/MathML",Yn="http://www.w3.org/2000/svg",te={},yn=(e,n,o)=>{let i=Oe(X(n),o);if(i.prop.startsWith("--"))e.style.setProperty(i.prop,i.value);else e.style[n]=i.value},Jn=(e)=>{return{toDOM(n,o){yn(n,e,o)}}},mn=(e,n,o)=>{if(n==="style")if(typeof o==="object")for(let i of Object.keys(o))if(M(o[i]))g(e,o[i],Jn(i));else yn(e,i,o[i]);else e.setAttribute("style",o);else if(e[n]!==void 0){let{MathMLElement:i}=globalThis;if(e instanceof SVGElement||i!==void 0&&e instanceof i)e.setAttribute(n,o);else e[n]=o}else{let i=X(n);if(i==="class")o.split(" ").forEach((t)=>{e.classList.add(t)});else if(e[i]!==void 0)e[i]=o;else if(typeof o==="boolean")o?e.setAttribute(i,""):e.removeAttribute(i);else e.setAttribute(i,o)}},Vn=(e)=>{return{toDOM(n,o){mn(n,e,o)}}},Un=(e,n,o)=>{if(n==="apply")o(e);else if(n.match(/^on[A-Z]/)!=null){let i=n.substring(2).toLowerCase();P(e,i,o)}else if(n==="bind")if((typeof o.binding==="string"?ie[o.binding]:o.binding)!==void 0&&o.value!==void 0)g(e,o.value,o.binding instanceof Function?{toDOM:o.binding}:o.binding);else throw new Error("bad binding");else if(n.match(/^bind[A-Z]/)!=null){let i=n.substring(4,5).toLowerCase()+n.substring(5),t=ie[i];if(t!==void 0)g(e,o,t);else throw new Error(`${n} is not allowed, bindings.${i} is not defined`)}else if(M(o))g(e,o,Vn(n));else mn(e,n,o)},De=(e,...n)=>{if(te[e]===void 0){let[t,s]=e.split("|");if(s===void 0)te[e]=globalThis.document.createElement(t);else te[e]=globalThis.document.createElementNS(s,t)}let o=te[e].cloneNode(),i={};for(let t of n)if(t instanceof Element||t instanceof DocumentFragment||typeof t==="string"||typeof t==="number")if(o instanceof HTMLTemplateElement)o.content.append(t);else o.append(t);else if(M(t))o.append(m.span({bindText:t}));else Object.assign(i,t);for(let t of Object.keys(i)){let s=i[t];Un(o,t,s)}return o},Fe=(...e)=>{let n=globalThis.document.createDocumentFragment();for(let o of e)n.append(o);return n},m=new Proxy({fragment:Fe},{get(e,n){if(n=n.replace(/[A-Z]/g,(o)=>`-${o.toLocaleLowerCase()}`),e[n]===void 0)e[n]=(...o)=>De(n,...o);return e[n]},set(){throw new Error("You may not add new properties to elements")}}),Le=new Proxy({fragment:Fe},{get(e,n){if(e[n]===void 0)e[n]=(...o)=>De(`${n}|${Yn}`,...o);return e[n]},set(){throw new Error("You may not add new properties to elements")}}),Be=new Proxy({fragment:Fe},{get(e,n){if(e[n]===void 0)e[n]=(...o)=>De(`${n}|${In}`,...o);return e[n]},set(){throw new Error("You may not add new properties to elements")}});function _n(e,n){let o=m.style(U(n));o.id=e,document.head.append(o)}var Gn=["animation-iteration-count","flex","flex-base","flex-grow","flex-shrink","opacity","order","tab-size","widows","z-index","zoom"],Oe=(e,n)=>{if(typeof n==="number"&&!Gn.includes(e))n=`${n}px`;if(e.startsWith("_"))if(e.startsWith("__"))e="--"+e.substring(2),n=`var(${e}-default, ${n})`;else e="--"+e.substring(1);return{prop:e,value:String(n)}},Zn=(e,n,o)=>{if(o===void 0)return"";if(o instanceof a)o=o.html;let i=Oe(n,o);return`${e} ${i.prop}: ${i.value};`},xn=(e,n,o="")=>{let i=X(e);if(typeof n==="object"&&!(n instanceof a)){let t=Object.keys(n).map((s)=>xn(s,n[s],`${o} `)).join(`
2
- `);return`${o} ${e} {
1
+ var z={debug:!1,perf:!1};function k(n){if(n==null||typeof n!=="object")return n;if(n instanceof Set)return new Set(n);else if(Array.isArray(n))return n.map(k);let o={};for(let e in n){let i=n[e];if(n!=null&&typeof n==="object")o[e]=k(i);else o[e]=i}return o}var ln="-xin-data",H=`.${ln}`,mn="-xin-event",xn=`.${mn}`,b="xinPath",A="xinValue",Jn="xinSet",Vn="xinObserve",Pn="xinBind",Un="xinOn",v=(n)=>{return n&&n[b]||void 0};function w(n){return typeof n==="object"&&n!==null?n[A]||n:n}var $=new WeakMap,C=new WeakMap;var L=(n)=>{let o=n.cloneNode();if(o instanceof Element){let e=C.get(n),i=$.get(n);if(e!=null)C.set(o,k(e));if(i!=null)$.set(o,k(i))}for(let e of Array.from(n instanceof HTMLTemplateElement?n.content.childNodes:n.childNodes))if(e instanceof Element||e instanceof DocumentFragment)o.appendChild(L(e));else o.appendChild(e.cloneNode());return o},G=new WeakMap,an=(n)=>{let o=document.body.parentElement;while(n.parentElement!=null&&n.parentElement!==o){let e=G.get(n);if(e!=null)return e;n=n.parentElement}return!1};var Gn=Symbol("observer should be removed"),N=[],nn=[],pn=!1,hn,bn;class _n{description;test;callback;constructor(n,o){let e=typeof o==="string"?`"${o}"`:`function ${o.name}`,i;if(typeof n==="string")this.test=(r)=>typeof r==="string"&&r!==""&&(n.startsWith(r)||r.startsWith(n)),i=`test = "${n}"`;else if(n instanceof RegExp)this.test=n.test.bind(n),i=`test = "${n.toString()}"`;else if(n instanceof Function)this.test=n,i=`test = function ${n.name}`;else throw Error("expect listener test to be a string, RegExp, or test function");if(this.description=`${i}, ${e}`,typeof o==="function")this.callback=o;else throw Error("expect callback to be a path or function");N.push(this)}}var Zn=async()=>{if(hn===void 0)return;await hn},Xo=()=>{if(z.perf)console.time("xin async update");let n=Array.from(nn);for(let o of n)N.filter((e)=>{let i;try{i=e.test(o)}catch(r){throw Error(`Listener ${e.description} threw "${r}" at "${o}"`)}if(i===Gn)return _(e),!1;return i}).forEach((e)=>{let i;try{i=e.callback(o)}catch(r){console.error(`Listener ${e.description} threw "${r}" handling "${o}"`)}if(i===Gn)_(e)});if(nn.splice(0),pn=!1,typeof bn==="function")bn();if(z.perf)console.timeEnd("xin async update")},Y=(n)=>{let o=typeof n==="string"?n:v(n);if(o===void 0)throw console.error("touch was called on an invalid target",n),Error("touch was called on an invalid target");if(pn===!1)hn=new Promise((e)=>{bn=e}),pn=setTimeout(Xo);if(nn.find((e)=>o.startsWith(e))==null)nn.push(o)},wn=(n,o)=>{return new _n(n,o)},_=(n)=>{let o=N.indexOf(n);if(o>-1)N.splice(o,1);else throw Error("unobserve failed, listener not found")};var Eo=(n)=>{try{return JSON.stringify(n)}catch(o){return"{has circular references}"}},Tn=(...n)=>Error(n.map(Eo).join(" "));var go=()=>new Date(parseInt("1000000000",36)+Date.now()).valueOf().toString(36).slice(1),So=0,Mo=()=>(parseInt("10000",36)+ ++So).toString(36).slice(-5),ko=()=>go()+Mo(),En=Symbol("delete"),Rn=Symbol("new-object"),Xn=Symbol("automatic-index");function qn(n){if(n==="")return[];if(Array.isArray(n))return n;else{let o=[];while(n.length>0){let e=n.search(/\[[^\]]+\]/);if(e===-1){o.push(n.split("."));break}else{let i=n.slice(0,e);if(n=n.slice(e),i!=="")o.push(i.split("."));if(e=n.indexOf("]")+1,o.push(n.slice(1,e-1)),n.slice(e,e+1)===".")e+=1;n=n.slice(e)}}return o}}var D=new WeakMap;function Nn(n,o){if(D.get(n)===void 0)D.set(n,{});if(D.get(n)[o]===void 0)D.get(n)[o]={};let e=D.get(n)[o];if(o==="_auto_")n.forEach((i,r)=>{if(i[Xn]===void 0)i[Xn]=ko();e[i[Xn]+""]=r});else n.forEach((i,r)=>{e[j(i,o)+""]=r});return e}function Co(n,o){if(D.get(n)===void 0||D.get(n)[o]===void 0)return Nn(n,o);else return D.get(n)[o]}function vo(n,o,e){e=e+"";let i=Co(n,o)[e];if(i===void 0||j(n[i],o)+""!==e)i=Nn(n,o)[e];return i}function Do(n,o,e){if(n[o]===void 0&&e!==void 0)n[o]=e;return n[o]}function no(n,o,e,i){let r=o!==""?vo(n,o,e):e;if(i===En)return n.splice(r,1),D.delete(n),Symbol("deleted");else if(i===Rn){if(o===""&&n[r]===void 0)n[r]={}}else if(i!==void 0)if(r!==void 0)n[r]=i;else if(o!==""&&j(i,o)+""===e+"")n.push(i),r=n.length-1;else throw Error(`byIdPath insert failed at [${o}=${e}]`);return n[r]}function Qn(n){if(!Array.isArray(n))throw Tn("setByPath failed: expected array, found",n)}function Kn(n){if(n==null||!(n instanceof Object))throw Tn("setByPath failed: expected Object, found",n)}function j(n,o){let e=qn(o),i=n,r,t,s,c;for(r=0,t=e.length;i!==void 0&&r<t;r++){let f=e[r];if(Array.isArray(f))for(s=0,c=f.length;i!==void 0&&s<c;s++){let y=f[s];i=i[y]}else if(i.length===0){if(i=i[Number(f.slice(1))],f[0]!=="=")return}else if(f.includes("=")){let[y,...m]=f.split("=");i=no(i,y,m.join("="))}else s=parseInt(f,10),i=i[s]}return i}function oo(n,o,e){let i=n;if(o==="")throw Error("setByPath cannot be used to set the root object");let r=qn(o);while(i!=null&&r.length>0){let t=r.shift();if(typeof t==="string"){let s=t.indexOf("=");if(s>-1){if(s===0)Kn(i);else Qn(i);let c=t.slice(0,s),f=t.slice(s+1);if(i=no(i,c,f,r.length>0?Rn:e),r.length===0)return!0}else{Qn(i);let c=parseInt(t,10);if(r.length>0)i=i[c];else{if(e!==En){if(i[c]===e)return!1;i[c]=e}else i.splice(c,1);return!0}}}else if(Array.isArray(t)&&t.length>0){Kn(i);while(t.length>0){let s=t.shift();if(t.length>0||r.length>0)i=Do(i,s,t.length>0?{}:[]);else{if(e!==En){if(i[s]===e)return!1;i[s]=e}else{if(!Object.prototype.hasOwnProperty.call(i,s))return!1;delete i[s]}return!0}}}else throw Error(`setByPath failed, bad path ${o}`)}throw Error(`setByPath(${n}, ${o}, ${e}) failed`)}var Fo=["sort","splice","copyWithin","fill","pop","push","reverse","shift","unshift"],Sn={},Ho=!0,Oo=/^\.?([^.[\](),])+(\.[^.[\](),]+|\[\d+\]|\[[^=[\](),]*=[^[\]()]+\])*$/,zo=(n)=>Oo.test(n),W=(n="",o="")=>{if(n==="")return o;else if(o.match(/^\d+$/)!==null||o.includes("="))return`${n}[${o}]`;else return`${n}.${o}`},$o={string(n){return new String(n)},boolean(n){return new Boolean(n)},bigint(n){return n},symbol(n){return n},number(n){return new Number(n)}};function gn(n,o){let e=typeof n;if(n===void 0||e==="object"||e==="function")return n;else return new Proxy($o[typeof n](n),J(o,!0))}var J=(n,o)=>({get(e,i){switch(i){case b:return n;case A:return e.valueOf?e.valueOf():e;case Jn:return(s)=>u[n]=s;case Vn:return(s)=>{let c=wn(n,s);return()=>_(c)};case Un:return(s,c)=>B(s,c,w(e));case Pn:return(s,c,f)=>{T(s,n,c,f)}}if(typeof i==="symbol")return e[i];let r=i,t=r.match(/^([^.[]+)\.(.+)$/)??r.match(/^([^\]]+)(\[.+)/)??r.match(/^(\[[^\]]+\])\.(.+)$/)??r.match(/^(\[[^\]]+\])\[(.+)$/);if(t!==null){let[,s,c]=t,f=W(n,s),y=j(e,s);return y!==null&&typeof y==="object"?new Proxy(y,J(f,o))[c]:y}if(r.startsWith("[")&&r.endsWith("]"))r=r.substring(1,r.length-1);if(!Array.isArray(e)&&e[r]!==void 0||Array.isArray(e)&&r.includes("=")){let s;if(r.includes("=")){let[c,f]=r.split("=");s=e.find((y)=>`${j(y,c)}`===f)}else s=e[r];if(s instanceof Object){let c=W(n,r);return new Proxy(s instanceof Function?s.bind(e):s,J(c,o))}else return o?gn(s,W(n,r)):s}else if(Array.isArray(e)){let s=e[r];return typeof s==="function"?(...c)=>{let f=s.apply(e,c);if(Fo.includes(r))Y(n);return f}:typeof s==="object"?new Proxy(s,J(W(n,r),o)):o?gn(s,W(n,r)):s}else return o?gn(e[r],W(n,r)):e[r]},set(e,i,r){r=w(r);let t=i!==A?W(n,i):n;if(Ho&&!zo(t))throw Error(`setting invalid path ${t}`);if(w(u[t])!==r&&oo(Sn,t,r))Y(t);return!0}}),Z=(n,o)=>{let e=typeof o==="function"?o:u[o];if(typeof e!=="function")throw Error(`observe expects a function or path to a function, ${o} is neither`);return wn(n,e)},u=new Proxy(Sn,J("",!1)),V=new Proxy(Sn,J("",!0));var Mn=(n,o)=>{let e=new Event(o);n.dispatchEvent(e)},io=(n)=>{if(n instanceof HTMLInputElement)return n.type;else if(n instanceof HTMLSelectElement&&n.hasAttribute("multiple"))return"multi-select";else return"other"},ro=(n,o)=>{switch(io(n)){case"radio":n.checked=n.value===o;break;case"checkbox":n.checked=!!o;break;case"date":n.valueAsDate=new Date(o);break;case"multi-select":for(let e of Array.from(n.querySelectorAll("option")))e.selected=o[e.value];break;default:n.value=o}},so=(n)=>{switch(io(n)){case"radio":{let o=n.parentElement?.querySelector(`[name="${n.name}"]:checked`);return o!=null?o.value:null}case"checkbox":return n.checked;case"date":return n.valueAsDate?.toISOString();case"multi-select":return Array.from(n.querySelectorAll("option")).reduce((o,e)=>{return o[e.value]=e.selected,o},{});default:return n.value}},{ResizeObserver:eo}=globalThis,Q=eo!=null?new eo((n)=>{for(let o of n){let e=o.target;Mn(e,"resize")}}):{observe(){},unobserve(){}},kn=(n,o,e=!0)=>{if(n!=null&&o!=null)if(typeof o==="string")n.textContent=o;else if(Array.isArray(o))o.forEach((i)=>{n.append(i instanceof Node&&e?L(i):i)});else if(o instanceof Node)n.append(e?L(o):o);else throw Error("expect text content or document node")};var Cn=(n,o=250)=>{let e;return(...i)=>{if(e!==void 0)clearTimeout(e);e=setTimeout(()=>{n(...i)},o)}},on=(n,o=250)=>{let e,i=Date.now()-o,r=!1;return(...t)=>{if(clearTimeout(e),e=setTimeout(()=>{n(...t),i=Date.now()},o),!r&&Date.now()-i>=o){r=!0;try{n(...t),i=Date.now()}finally{r=!1}}}};var en=Symbol("list-binding"),Ao=16,Lo=100;function to(n,o){let e=Array.from(n.querySelectorAll(H));if(n.matches(H))e.unshift(n);for(let i of e){let r=C.get(i);for(let t of r){if(t.path.startsWith("^"))t.path=`${o}${t.path.substring(1)}`;if(t.binding.toDOM!=null)t.binding.toDOM(i,u[t.path])}}}class co{boundElement;listTop;listBottom;template;options;itemToElement;_array=[];_update;_previousSlice;static filterBoundObservers=new WeakMap;constructor(n,o,e={}){if(this.boundElement=n,this.itemToElement=new WeakMap,n.children.length!==1)throw Error("ListBinding expects an element with exactly one child element");if(n.children[0]instanceof HTMLTemplateElement){let i=n.children[0];if(i.content.children.length!==1)throw Error("ListBinding expects a template with exactly one child element");this.template=L(i.content.children[0])}else this.template=n.children[0],this.template.remove();if(this.options=e,this.listTop=document.createElement("div"),this.listBottom=document.createElement("div"),this.listTop.classList.add("virtual-list-padding"),this.listBottom.classList.add("virtual-list-padding"),this.boundElement.append(this.listTop),this.boundElement.append(this.listBottom),e.virtual!=null)Q.observe(this.boundElement),this._update=on(()=>{this.update(this._array,!0)},Ao),this.boundElement.addEventListener("scroll",this._update),this.boundElement.addEventListener("resize",this._update)}visibleSlice(){let{virtual:n,hiddenProp:o,visibleProp:e}=this.options,i=this._array;if(o!==void 0)i=i.filter((f)=>f[o]!==!0);if(e!==void 0)i=i.filter((f)=>f[e]===!0);if(this.options.filter&&this.needle!==void 0)i=this.options.filter(i,this.needle);let r=0,t=i.length-1,s=0,c=0;if(n!=null&&this.boundElement instanceof HTMLElement){let f=this.boundElement.offsetWidth,y=this.boundElement.offsetHeight;if(n.visibleColumns==null)n.visibleColumns=n.width!=null?Math.max(1,Math.floor(f/n.width)):1;let m=Math.ceil(y/n.height)+(n.rowChunkSize||1),g=Math.ceil(i.length/n.visibleColumns),S=n.visibleColumns*m,x=Math.floor(this.boundElement.scrollTop/n.height);if(x>g-m+1)x=Math.max(0,g-m+1);if(n.rowChunkSize)x-=x%n.rowChunkSize;r=x*n.visibleColumns,t=r+S-1,s=x*n.height,c=Math.max((g-m)*n.height-s,0)}return{items:i,firstItem:r,lastItem:t,topBuffer:s,bottomBuffer:c}}needle;filter=on((n)=>{if(this.needle!==n)this.needle=n,this.update(this._array)},Lo);update(n,o){if(n==null)n=[];this._array=n;let{hiddenProp:e,visibleProp:i}=this.options,r=v(n),t=this.visibleSlice();this.boundElement.classList.toggle("-xin-empty-list",t.items.length===0);let s=this._previousSlice,{firstItem:c,lastItem:f,topBuffer:y,bottomBuffer:m}=t;if(e===void 0&&i===void 0&&o===!0&&s!=null&&c===s.firstItem&&f===s.lastItem)return;this._previousSlice=t;let g=0,S=0,x=0;for(let l of Array.from(this.boundElement.children)){if(l===this.listTop||l===this.listBottom)continue;let M=G.get(l);if(M==null)l.remove();else{let h=t.items.indexOf(M);if(h<c||h>f)l.remove(),this.itemToElement.delete(M),G.delete(l),g++}}this.listTop.style.height=String(y)+"px",this.listBottom.style.height=String(m)+"px";let p=[],{idPath:yn}=this.options;for(let l=c;l<=f;l++){let M=t.items[l];if(M===void 0)continue;let h=this.itemToElement.get(w(M));if(h==null){if(x++,h=L(this.template),typeof M==="object")this.itemToElement.set(w(M),h),G.set(h,w(M));if(this.boundElement.insertBefore(h,this.listBottom),yn!=null){let un=M[yn],To=`${r}[${yn}=${un}]`;to(h,To)}else{let un=`${r}[${l}]`;to(h,un)}}p.push(h)}let q=null;for(let l of p){if(l.previousElementSibling!==q)if(S++,q?.nextElementSibling!=null)this.boundElement.insertBefore(l,q.nextElementSibling);else this.boundElement.insertBefore(l,this.listBottom);q=l}if(z.perf)console.log(r,"updated",{removed:g,created:x,moved:S})}}var fo=(n,o,e)=>{let i=n[en];if(i===void 0)i=new co(n,o,e),n[en]=i;return i};var{document:K,MutationObserver:yo}=globalThis,vn=(n,o)=>{let e=C.get(n);if(e==null)return;for(let i of e){let{binding:r,options:t}=i,{path:s}=i,{toDOM:c}=r;if(c!=null){if(s.startsWith("^")){let f=an(n);if(f!=null&&f[b]!=null)s=i.path=`${f[b]}${s.substring(1)}`;else throw console.error(`Cannot resolve relative binding ${s}`,n,"is not part of a list"),Error(`Cannot resolve relative binding ${s}`)}if(o==null||s.startsWith(o))c(n,u[s],t)}}};if(yo!=null)new yo((o)=>{o.forEach((e)=>{Array.from(e.addedNodes).forEach((i)=>{if(i instanceof Element)Array.from(i.querySelectorAll(H)).forEach((r)=>vn(r))})})}).observe(K.body,{subtree:!0,childList:!0});Z(()=>!0,(n)=>{let o=Array.from(K.querySelectorAll(H));for(let e of o)vn(e,n)});var uo=(n)=>{let o=n.target.closest(H);while(o!=null){let e=C.get(o);for(let i of e){let{binding:r,path:t}=i,{fromDOM:s}=r;if(s!=null){let c;try{c=s(o,i.options)}catch(f){throw console.error("Cannot get value from",o,"via",i),Error("Cannot obtain value fromDOM")}if(c!=null){let f=u[t];if(f==null)u[t]=c;else{let y=f[b]!=null?f[A]:f,m=c[b]!=null?c[A]:c;if(y!==m)u[t]=m}}}}o=o.parentElement.closest(H)}};if(globalThis.document!=null)K.body.addEventListener("change",uo,!0),K.body.addEventListener("input",uo,!0);function T(n,o,e,i){if(n instanceof DocumentFragment)throw Error("bind cannot bind to a DocumentFragment");let r;if(typeof o==="object"&&o[b]===void 0&&i===void 0){let{value:c}=o;r=typeof c==="string"?c:c[b],i=o,delete i.value}else r=typeof o==="string"?o:o[b];if(r==null)throw Error("bind requires a path or object with xin Proxy");let{toDOM:t}=e;n.classList?.add(ln);let s=C.get(n);if(s==null)s=[],C.set(n,s);if(s.push({path:r,binding:e,options:i}),t!=null&&!r.startsWith("^"))Y(r);if(i?.filter&&i?.needle)T(n,i.needle,{toDOM(c,f){console.log({needle:f}),c[en]?.filter(f)}});return n}var lo=new Set,Wo=(n)=>{let o=n?.target.closest(xn),e=!1,i=new Proxy(n,{get(t,s){if(s==="stopPropagation")return()=>{n.stopPropagation(),e=!0};else{let c=t[s];return typeof c==="function"?c.bind(t):c}}}),r=new Set;while(!e&&o!=null){let s=$.get(o)[n.type]||r;for(let c of s){if(typeof c==="function")c(i);else{let f=u[c];if(typeof f==="function")f(i);else throw Error(`no event handler found at path ${c}`)}if(e)continue}o=o.parentElement!=null?o.parentElement.closest(xn):null}};function B(n,o,e){let i=$.get(n);if(n.classList.add(mn),i==null)i={},$.set(n,i);if(!i[o])i[o]=new Set;if(i[o].add(e),!lo.has(o))lo.add(o),K.body.addEventListener(o,Wo,!0);return()=>{i[o].delete(e)}}var rn={value:{toDOM:ro,fromDOM(n){return so(n)}},text:{toDOM(n,o){n.textContent=o}},enabled:{toDOM(n,o){n.disabled=!o}},disabled:{toDOM(n,o){n.disabled=Boolean(o)}},list:{toDOM(n,o,e){fo(n,o,e).update(o)}}};var Bo=180/Math.PI,Io=Math.PI/180;function X(n,o,e){return e<n?NaN:o<n?n:o>e?e:o}function F(n,o,e,i=!0){if(i)e=X(0,e,1);return e*(o-n)+n}var Yo={RADIANS_TO_DEGREES:Bo,DEGREES_TO_RADIANS:Io,clamp:X,lerp:F};function Dn(n,o=document.body){let e=getComputedStyle(o);if(n.endsWith(")")&&n.startsWith("var("))n=n.slice(4,-1);return e.getPropertyValue(n).trim()}var jo=(n,o,e)=>{return(0.299*n+0.587*o+0.114*e)/255},I=(n)=>("00"+Math.round(Number(n)).toString(16)).slice(-2);class mo{h;s;l;constructor(n,o,e){n/=255,o/=255,e/=255;let i=Math.max(n,o,e),r=i-Math.min(n,o,e),t=r!==0?i===n?(o-e)/r:i===o?2+(e-n)/r:4+(n-o)/r:0;this.h=60*t<0?60*t+360:60*t,this.s=r!==0?i<=0.5?r/(2*i-r):r/(2-(2*i-r)):0,this.l=(2*i-r)/2}}var P=globalThis.document!==void 0?globalThis.document.createElement("span"):void 0;class d{r;g;b;a;static fromVar(n,o=document.body){return d.fromCss(Dn(n,o))}static fromCss(n){let o=n;if(P instanceof HTMLSpanElement)P.style.color="black",P.style.color=n,document.body.appendChild(P),o=getComputedStyle(P).color,P.remove();let[e,i,r,t]=o.match(/[\d.]+/g)||["0","0","0","0"],s=o.startsWith("color(srgb")?255:1;return new d(Number(e)*s,Number(i)*s,Number(r)*s,t==null?1:Number(t))}static fromHsl(n,o,e,i=1){let r,t,s;if(o===0)r=t=s=e;else{let f=(S,x,p)=>{if(p<0)p+=1;if(p>1)p-=1;if(p<0.16666666666666666)return S+(x-S)*6*p;if(p<0.5)return x;if(p<0.6666666666666666)return S+(x-S)*(0.6666666666666666-p)*6;return S},y=e<0.5?e*(1+o):e+o-e*o,m=2*e-y,g=(n%360+360)%360/360;r=f(m,y,g+0.3333333333333333),t=f(m,y,g),s=f(m,y,g-0.3333333333333333)}let c=new d(r*255,t*255,s*255,i);return c.hslCached={h:(n%360+360)%360,s:o,l:e},c}static black=new d(0,0,0);static white=new d(255,255,255);constructor(n,o,e,i=1){this.r=X(0,n,255),this.g=X(0,o,255),this.b=X(0,e,255),this.a=X(0,i,1)}get inverse(){return new d(255-this.r,255-this.g,255-this.b,this.a)}get inverseLuminance(){let{h:n,s:o,l:e}=this._hsl;return d.fromHsl(n,o,1-e,this.a)}get opaque(){return this.a===1?this:new d(this.r,this.g,this.b,1)}contrasting(n=1){return this.opaque.blend(this.brightness>0.5?d.black:d.white,n)}get rgb(){let{r:n,g:o,b:e}=this;return`rgb(${n.toFixed(0)},${o.toFixed(0)},${e.toFixed(0)})`}get rgba(){let{r:n,g:o,b:e,a:i}=this;return`rgba(${n.toFixed(0)},${o.toFixed(0)},${e.toFixed(0)},${i.toFixed(2)})`}get RGBA(){return[this.r/255,this.g/255,this.b/255,this.a]}get ARGB(){return[this.a,this.r/255,this.g/255,this.b/255]}hslCached;get _hsl(){if(this.hslCached==null)this.hslCached=new mo(this.r,this.g,this.b);return this.hslCached}get hsl(){let{h:n,s:o,l:e}=this._hsl;return`hsl(${n.toFixed(0)}deg ${(o*100).toFixed(0)}% ${(e*100).toFixed(0)}%)`}get hsla(){let{h:n,s:o,l:e}=this._hsl;return`hsl(${n.toFixed(0)}deg ${(o*100).toFixed(0)}% ${(e*100).toFixed(0)}% / ${(this.a*100).toFixed(0)}%)`}get mono(){let n=this.brightness*255;return new d(n,n,n)}get brightness(){return jo(this.r,this.g,this.b)}get html(){return this.toString()}toString(){return this.a===1?"#"+I(this.r)+I(this.g)+I(this.b):"#"+I(this.r)+I(this.g)+I(this.b)+I(Math.floor(255*this.a))}brighten(n){let{h:o,s:e,l:i}=this._hsl,r=X(0,i+n*(1-i),1);return d.fromHsl(o,e,r,this.a)}darken(n){let{h:o,s:e,l:i}=this._hsl,r=X(0,i*(1-n),1);return d.fromHsl(o,e,r,this.a)}saturate(n){let{h:o,s:e,l:i}=this._hsl,r=X(0,e+n*(1-e),1);return d.fromHsl(o,r,i,this.a)}desaturate(n){let{h:o,s:e,l:i}=this._hsl,r=X(0,e*(1-n),1);return d.fromHsl(o,r,i,this.a)}rotate(n){let{h:o,s:e,l:i}=this._hsl,r=(o+360+n)%360;return d.fromHsl(r,e,i,this.a)}opacity(n){let{h:o,s:e,l:i}=this._hsl;return d.fromHsl(o,e,i,n)}swatch(){return console.log(`%c %c ${this.html}, ${this.rgba}`,`background-color: ${this.html}`,"background-color: transparent"),this}blend(n,o){return new d(F(this.r,n.r,o),F(this.g,n.g,o),F(this.b,n.b,o),F(this.a,n.a,o))}static blendHue(n,o,e){let i=(o-n+720)%360;if(i<180)return n+e*i;else return n-(360-i)*e}mix(n,o){let e=this._hsl,i=n._hsl;return d.fromHsl(e.s===0?i.h:i.s===0?e.h:d.blendHue(e.h,i.h,o),F(e.s,i.s,o),F(e.l,i.l,o),F(this.a,n.a,o))}colorMix(n,o){return d.fromCss(`color-mix(in hsl, ${this.html}, ${n.html} ${(o*100).toFixed(0)}%)`)}}function E(n){return n.replace(/[A-Z]/g,(o)=>{return`-${o.toLocaleLowerCase()}`})}function xo(n){return n.replace(/-([a-z])/g,(o,e)=>{return e.toLocaleUpperCase()})}var Jo="http://www.w3.org/1998/Math/MathML",Vo="http://www.w3.org/2000/svg",sn={},ao=(n,o,e)=>{let i=$n(E(o),e);if(i.prop.startsWith("--"))n.style.setProperty(i.prop,i.value);else n.style[o]=i.value},Po=(n)=>{return{toDOM(o,e){ao(o,n,e)}}},po=(n,o,e)=>{if(o==="style")if(typeof e==="object")for(let i of Object.keys(e))if(v(e[i]))T(n,e[i],Po(i));else ao(n,i,e[i]);else n.setAttribute("style",e);else if(n[o]!==void 0){let{MathMLElement:i}=globalThis;if(n instanceof SVGElement||i!==void 0&&n instanceof i)n.setAttribute(o,e);else n[o]=e}else{let i=E(o);if(i==="class")e.split(" ").forEach((r)=>{n.classList.add(r)});else if(n[i]!==void 0)n[i]=e;else if(typeof e==="boolean")e?n.setAttribute(i,""):n.removeAttribute(i);else n.setAttribute(i,e)}},Uo=(n)=>{return{toDOM(o,e){po(o,n,e)}}},Go=(n,o,e)=>{if(o==="apply")e(n);else if(o.match(/^on[A-Z]/)!=null){let i=o.substring(2).toLowerCase();B(n,i,e)}else if(o==="bind")if((typeof e.binding==="string"?rn[e.binding]:e.binding)!==void 0&&e.value!==void 0)T(n,e.value,e.binding instanceof Function?{toDOM:e.binding}:e.binding);else throw Error("bad binding");else if(o.match(/^bind[A-Z]/)!=null){let i=o.substring(4,5).toLowerCase()+o.substring(5),r=rn[i];if(r!==void 0)T(n,e,r);else throw Error(`${o} is not allowed, bindings.${i} is not defined`)}else if(v(e))T(n,e,Uo(o));else po(n,o,e)},Fn=(n,...o)=>{if(sn[n]===void 0){let[r,t]=n.split("|");if(t===void 0)sn[n]=globalThis.document.createElement(r);else sn[n]=globalThis.document.createElementNS(t,r)}let e=sn[n].cloneNode(),i={};for(let r of o)if(r instanceof Element||r instanceof DocumentFragment||typeof r==="string"||typeof r==="number")if(e instanceof HTMLTemplateElement)e.content.append(r);else e.append(r);else if(v(r))e.append(a.span({bindText:r}));else Object.assign(i,r);for(let r of Object.keys(i)){let t=i[r];Go(e,r,t)}return e},Hn=(...n)=>{let o=globalThis.document.createDocumentFragment();for(let e of n)o.append(e);return o},a=new Proxy({fragment:Hn},{get(n,o){if(o=o.replace(/[A-Z]/g,(e)=>`-${e.toLocaleLowerCase()}`),n[o]===void 0)n[o]=(...e)=>Fn(o,...e);return n[o]},set(){throw Error("You may not add new properties to elements")}}),On=new Proxy({fragment:Hn},{get(n,o){if(n[o]===void 0)n[o]=(...e)=>Fn(`${o}|${Vo}`,...e);return n[o]},set(){throw Error("You may not add new properties to elements")}}),zn=new Proxy({fragment:Hn},{get(n,o){if(n[o]===void 0)n[o]=(...e)=>Fn(`${o}|${Jo}`,...e);return n[o]},set(){throw Error("You may not add new properties to elements")}});function _o(n,o){let e=a.style(U(o));e.id=n,document.head.append(e)}var Zo=["animation-iteration-count","flex","flex-base","flex-grow","flex-shrink","opacity","order","tab-size","widows","z-index","zoom"],$n=(n,o)=>{if(typeof o==="number"&&!Zo.includes(n))o=`${o}px`;if(n.startsWith("_"))if(n.startsWith("__"))n="--"+n.substring(2),o=`var(${n}-default, ${o})`;else n="--"+n.substring(1);return{prop:n,value:String(o)}},Qo=(n,o,e)=>{if(e===void 0)return"";if(e instanceof d)e=e.html;let i=$n(o,e);return`${n} ${i.prop}: ${i.value};`},ho=(n,o,e="")=>{let i=E(n);if(typeof o==="object"&&!(o instanceof d)){let r=Object.keys(o).map((t)=>ho(t,o[t],`${e} `)).join(`
2
+ `);return`${e} ${n} {
3
+ ${r}
4
+ ${e} }`}else return Qo(e,i,o)},U=(n,o="")=>{return Object.keys(n).map((i)=>{let r=n[i];if(typeof r==="string"){if(i==="@import")return`@import url('${r}');`;throw Error("top-level string value only allowed for `@import`")}let t=Object.keys(r).map((s)=>ho(s,r[s])).join(`
5
+ `);return`${o}${i} {
3
6
  ${t}
4
- ${o} }`}else return Zn(o,i,n)},U=(e,n="")=>{return Object.keys(e).map((i)=>{let t=e[i];if(typeof t==="string"){if(i==="@import")return`@import url('${t}');`;throw new Error("top-level string value only allowed for `@import`")}let s=Object.keys(t).map((r)=>xn(r,t[r])).join(`
5
- `);return`${n}${i} {
6
- ${s}
7
7
  }`}).join(`
8
8
 
9
- `)},qn=(e)=>{console.warn("initVars is deprecated. Just use _ and __ prefixes instead.");let n={};for(let o of Object.keys(e)){let i=e[o],t=X(o);n[`--${t}`]=typeof i==="number"&&i!==0?String(i)+"px":i}return n},Qn=(e)=>{let n={};for(let o of Object.keys(e)){let i=e[o];if(i instanceof a)n[o]=i.inverseLuminance;else if(typeof i==="string"&&i.match(/^(#[0-9a-fA-F]{3}|rgba?\(|hsla?\()/))n[o]=a.fromCss(i).inverseLuminance}return n},re=new Proxy({},{get(e,n){if(e[n]===void 0){let o="--"+X(n);e[n]=(i)=>`var(${o}, ${i})`}return e[n]}}),He=new Proxy({},{get(e,n){if(n==="default")return re;if(e[n]==null){n=X(n);let[,o,,i,t,s]=n.match(/^([-\w]*?)((_)?(\d+)(\w?))?$/)||["",n],r=`--${o}`;if(t!=null){let c=i==null?Number(t)/100:-Number(t)/100;switch(s){case"b":{let d=a.fromVar(r);e[n]=c>0?d.brighten(c).rgba:d.darken(-c).rgba}break;case"s":{let d=a.fromVar(r);e[n]=c>0?d.saturate(c).rgba:d.desaturate(-c).rgba}break;case"h":{let d=a.fromVar(r);e[n]=d.rotate(c*100).rgba}break;case"o":{let d=a.fromVar(r);e[n]=d.opacity(c).rgba}break;case"":e[n]=`calc(var(${r}) * ${c})`;break;default:throw console.error(s),new Error(`Unrecognized method ${s} for css variable ${r}`)}}else e[n]=`var(${r})`}return e[n]}});var Kn=0;function $e(){return`custom-elt${(Kn++).toString(36)}`}var hn=0,K={};function Rn(e,n){let o=K[e],i=U(n).replace(/:host\b/g,e);K[e]=o?o+`
10
- `+i:i}function Nn(e){if(K[e])document.head.append(m.style({id:e+"-component"},K[e]));delete K[e]}class B extends HTMLElement{static elements=m;static _elementCreator;instanceId;styleNode;static styleSpec;static styleNode;content=m.slot();isSlotted;static _tagName=null;static get tagName(){return this._tagName}static StyleNode(e){return console.warn("StyleNode is deprecated, just assign static styleSpec: XinStyleSheet to the class directly"),m.style(U(e))}static elementCreator(e={}){if(this._elementCreator==null){let{tag:n,styleSpec:o}=e,i=e!=null?n:null;if(i==null)if(typeof this.name==="string"&&this.name!==""){if(i=X(this.name),i.startsWith("-"))i=i.slice(1)}else i=$e();if(customElements.get(i)!=null)console.warn(`${i} is already defined`);if(i.match(/\w+(-\w+)+/)==null)console.warn(`${i} is not a legal tag for a custom-element`),i=$e();while(customElements.get(i)!==void 0)i=$e();if(this._tagName=i,o!==void 0)Rn(i,o);window.customElements.define(i,this,e),this._elementCreator=m[i]}return this._elementCreator}initAttributes(...e){let n={},o={};new MutationObserver((t)=>{let s=!1;if(t.forEach((r)=>{s=!!(r.attributeName&&e.includes(pn(r.attributeName)))}),s&&this.queueRender!==void 0)this.queueRender(!1)}).observe(this,{attributes:!0}),e.forEach((t)=>{n[t]=C(this[t]);let s=X(t);Object.defineProperty(this,t,{enumerable:!1,get(){if(typeof n[t]==="boolean")return this.hasAttribute(s);else if(this.hasAttribute(s))return typeof n[t]==="number"?parseFloat(this.getAttribute(s)):this.getAttribute(s);else if(o[t]!==void 0)return o[t];else return n[t]},set(r){if(typeof n[t]==="boolean"){if(r!==this[t]){if(r)this.setAttribute(s,"");else this.removeAttribute(s);this.queueRender()}}else if(typeof n[t]==="number"){if(r!==parseFloat(this[t]))this.setAttribute(s,r),this.queueRender()}else if(typeof r==="object"||`${r}`!==`${this[t]}`){if(r===null||r===void 0||typeof r==="object")this.removeAttribute(s);else this.setAttribute(s,r);this.queueRender(),o[t]=r}}})})}initValue(){let e=Object.getOwnPropertyDescriptor(this,"value");if(e===void 0||e.get!==void 0||e.set!==void 0)return;let n=this.hasAttribute("value")?this.getAttribute("value"):C(this.value);delete this.value,Object.defineProperty(this,"value",{enumerable:!1,get(){return n},set(o){if(n!==o)n=o,this.queueRender(!0)}})}_parts;get parts(){let e=this.shadowRoot!=null?this.shadowRoot:this;if(this._parts==null)this._parts=new Proxy({},{get(n,o){if(n[o]===void 0){let i=e.querySelector(`[part="${o}"]`);if(i==null)i=e.querySelector(o);if(i==null)throw new Error(`elementRef "${o}" does not exist!`);i.removeAttribute("data-ref"),n[o]=i}return n[o]}});return this._parts}constructor(){super();hn+=1,this.initAttributes("hidden"),this.instanceId=`${this.tagName.toLocaleLowerCase()}-${hn}`,this._value=C(this.defaultValue)}connectedCallback(){if(Nn(this.constructor.tagName),this.hydrate(),this.role!=null)this.setAttribute("role",this.role);if(this.onResize!==void 0){if(q.observe(this),this._onResize==null)this._onResize=this.onResize.bind(this);this.addEventListener("resize",this._onResize)}if(this.value!=null&&this.getAttribute("value")!=null)this._value=this.getAttribute("value");this.queueRender()}disconnectedCallback(){q.unobserve(this)}_changeQueued=!1;_renderQueued=!1;queueRender(e=!1){if(!this._hydrated)return;if(!this._changeQueued)this._changeQueued=e;if(!this._renderQueued)this._renderQueued=!0,requestAnimationFrame(()=>{if(this._changeQueued)Se(this,"change");this._changeQueued=!1,this._renderQueued=!1,this.render()})}_hydrated=!1;hydrate(){if(!this._hydrated){this.initValue();let e=typeof this.content!=="function",n=typeof this.content==="function"?this.content():this.content,{styleSpec:o}=this.constructor,{styleNode:i}=this.constructor;if(o)i=this.constructor.styleNode=m.style(U(o)),delete this.constructor.styleNode;if(this.styleNode)console.warn(this,"styleNode is deprecrated, use static styleNode or statc styleSpec instead"),i=this.styleNode;if(i){let t=this.attachShadow({mode:"open"});t.appendChild(i.cloneNode(!0)),ke(t,n,e)}else if(n!==null){let t=Array.from(this.childNodes);ke(this,n,e),this.isSlotted=this.querySelector("slot,xin-slot")!==void 0;let s=Array.from(this.querySelectorAll("slot"));if(s.length>0)s.forEach(ze.replaceSlot);if(t.length>0){let r={"":this};Array.from(this.querySelectorAll("xin-slot")).forEach((c)=>{r[c.name]=c}),t.forEach((c)=>{let d=r[""],l=c instanceof Element?r[c.slot]:d;(l!==void 0?l:d).append(c)})}}this._hydrated=!0}}render(){}}class ze extends B{name="";content=null;static replaceSlot(e){let n=document.createElement("xin-slot");if(e.name!=="")n.setAttribute("name",e.name);e.replaceWith(n)}constructor(){super();this.initAttributes("name")}}var fi=ze.elementCreator({tag:"xin-slot"});var eo=(e=()=>!0)=>{let n=localStorage.getItem("xin-state");if(n!=null){let i=JSON.parse(n);for(let t of Object.keys(i).filter(e))if(f[t]!==void 0)Object.assign(f[t],i[t]);else f[t]=i[t]}let o=Ce(()=>{let i={},t=w(f);for(let s of Object.keys(t).filter(e))i[s]=t[s];localStorage.setItem("xin-state",JSON.stringify(i)),console.log("xin state saved to localStorage")},500);Z(e,o)};var Ae="1.0.4";function bn(e){return Object.assign(J,e),J}function se(e){return console.warn("boxedProxy is deprecated, please use tosi() instead"),bn(e)}function Pe(e,n=!1){if(n)return console.warn("xinProxy(..., true) is deprecated; use tosi(...) instead"),se(e);return Object.keys(e).forEach((o)=>{f[o]=e[o]}),f}var no={};async function ce(e,n){let{type:o,styleSpec:i}=await n(e,{Color:a,Component:B,elements:m,svgElements:Le,mathML:Be,varDefault:re,vars:He,xin:f,boxed:J,xinProxy:Pe,boxedProxy:se,makeComponent:ce,bind:g,on:P,version:Ae}),t={type:o,creator:o.elementCreator({tag:e,styleSpec:i})};return no[e]=t,t}var je={},oo=(e)=>import(e);class de extends B{tag="anon-elt";src="";property="default";loaded;blueprintLoaded=(e)=>{};async packaged(){let{tag:e,src:n,property:o}=this,i=`${e}.${o}:${n}`;if(!this.loaded){if(je[i]===void 0)je[i]=oo(n).then((t)=>{let s=t[o];return ce(e,s)});else console.log(`using cached ${e}`);this.loaded=await je[i],this.blueprintLoaded(this.loaded)}return this.loaded}constructor(){super();this.initAttributes("tag","src","property")}}var io=de.elementCreator({tag:"xin-blueprint",styleSpec:{":host":{display:"none"}}});class We extends B{allLoaded=()=>{};constructor(){super()}async load(){let n=Array.from(this.querySelectorAll(de.tagName)).filter((o)=>o.src).map((o)=>o.packaged());await Promise.all(n),this.allLoaded()}connectedCallback(){super.connectedCallback(),this.load()}}var to=We.elementCreator({tag:"xin-loader",styleSpec:{":host":{display:"none"}}});export{w as xinValue,Pe as xinProxy,M as xinPath,f as xin,Ae as version,He as vars,re as varDefault,Ge as updates,G as unobserve,ve as touchElement,W as touch,bn as tosi,ne as throttle,Le as svgElements,O as settings,P as on,Z as observe,Be as mathML,ce as makeComponent,Qn as invertLuminance,qn as initVars,eo as hotReload,ye as getListItem,Me as getCssVar,m as elements,Ce as debounce,U as css,se as boxedProxy,J as boxed,to as blueprintLoader,io as blueprint,ie as bindings,g as bind,_n as StyleSheet,jn as MoreMath,B as Component,a as Color,We as BlueprintLoader,de as Blueprint};
9
+ `)},Ko=(n)=>{console.warn("initVars is deprecated. Just use _ and __ prefixes instead.");let o={};for(let e of Object.keys(n)){let i=n[e],r=E(e);o[`--${r}`]=typeof i==="number"&&i!==0?String(i)+"px":i}return o},Ro=(n)=>{let o={};for(let e of Object.keys(n)){let i=n[e];if(i instanceof d)o[e]=i.inverseLuminance;else if(typeof i==="string"&&i.match(/^(#[0-9a-fA-F]{3}|rgba?\(|hsla?\()/))o[e]=d.fromCss(i).inverseLuminance}return o},tn=new Proxy({},{get(n,o){if(n[o]===void 0){let e="--"+E(o);n[o]=(i)=>`var(${e}, ${i})`}return n[o]}}),An=new Proxy({},{get(n,o){if(o==="default")return tn;if(n[o]==null){o=E(o);let[,e,,i,r,t]=o.match(/^([-\w]*?)((_)?(\d+)(\w?))?$/)||["",o],s=`--${e}`;if(r!=null){let c=i==null?Number(r)/100:-Number(r)/100;switch(t){case"b":{let f=d.fromVar(s);n[o]=c>0?f.brighten(c).rgba:f.darken(-c).rgba}break;case"s":{let f=d.fromVar(s);n[o]=c>0?f.saturate(c).rgba:f.desaturate(-c).rgba}break;case"h":{let f=d.fromVar(s);n[o]=f.rotate(c*100).rgba}break;case"o":{let f=d.fromVar(s);n[o]=f.opacity(c).rgba}break;case"":n[o]=`calc(var(${s}) * ${c})`;break;default:throw console.error(t),Error(`Unrecognized method ${t} for css variable ${s}`)}}else n[o]=`var(${s})`}return n[o]}});var qo=0;function Ln(){return`custom-elt${(qo++).toString(36)}`}var bo=0,R={};function No(n,o){let e=R[n],i=U(o).replace(/:host\b/g,n);R[n]=e?e+`
10
+ `+i:i}function ne(n){if(R[n])document.head.append(a.style({id:n+"-component"},R[n]));delete R[n]}class O extends HTMLElement{static elements=a;static _elementCreator;instanceId;styleNode;static styleSpec;static styleNode;content=a.slot();isSlotted;static _tagName=null;static get tagName(){return this._tagName}static StyleNode(n){return console.warn("StyleNode is deprecated, just assign static styleSpec: XinStyleSheet to the class directly"),a.style(U(n))}static elementCreator(n={}){if(this._elementCreator==null){let{tag:o,styleSpec:e}=n,i=n!=null?o:null;if(i==null)if(typeof this.name==="string"&&this.name!==""){if(i=E(this.name),i.startsWith("-"))i=i.slice(1)}else i=Ln();if(customElements.get(i)!=null)console.warn(`${i} is already defined`);if(i.match(/\w+(-\w+)+/)==null)console.warn(`${i} is not a legal tag for a custom-element`),i=Ln();while(customElements.get(i)!==void 0)i=Ln();if(this._tagName=i,e!==void 0)No(i,e);window.customElements.define(i,this,n),this._elementCreator=a[i]}return this._elementCreator}initAttributes(...n){let o={},e={};new MutationObserver((r)=>{let t=!1;if(r.forEach((s)=>{t=!!(s.attributeName&&n.includes(xo(s.attributeName)))}),t&&this.queueRender!==void 0)this.queueRender(!1)}).observe(this,{attributes:!0}),n.forEach((r)=>{o[r]=k(this[r]);let t=E(r);Object.defineProperty(this,r,{enumerable:!1,get(){if(typeof o[r]==="boolean")return this.hasAttribute(t);else if(this.hasAttribute(t))return typeof o[r]==="number"?parseFloat(this.getAttribute(t)):this.getAttribute(t);else if(e[r]!==void 0)return e[r];else return o[r]},set(s){if(typeof o[r]==="boolean"){if(s!==this[r]){if(s)this.setAttribute(t,"");else this.removeAttribute(t);this.queueRender()}}else if(typeof o[r]==="number"){if(s!==parseFloat(this[r]))this.setAttribute(t,s),this.queueRender()}else if(typeof s==="object"||`${s}`!==`${this[r]}`){if(s===null||s===void 0||typeof s==="object")this.removeAttribute(t);else this.setAttribute(t,s);this.queueRender(),e[r]=s}}})})}initValue(){let n=Object.getOwnPropertyDescriptor(this,"value");if(n===void 0||n.get!==void 0||n.set!==void 0)return;let o=this.hasAttribute("value")?this.getAttribute("value"):k(this.value);delete this.value,Object.defineProperty(this,"value",{enumerable:!1,get(){return o},set(e){if(o!==e)o=e,this.queueRender(!0)}})}_parts;get parts(){let n=this.shadowRoot!=null?this.shadowRoot:this;if(this._parts==null)this._parts=new Proxy({},{get(o,e){if(o[e]===void 0){let i=n.querySelector(`[part="${e}"]`);if(i==null)i=n.querySelector(e);if(i==null)throw Error(`elementRef "${e}" does not exist!`);i.removeAttribute("data-ref"),o[e]=i}return o[e]}});return this._parts}constructor(){super();bo+=1,this.initAttributes("hidden"),this.instanceId=`${this.tagName.toLocaleLowerCase()}-${bo}`,this._value=k(this.defaultValue)}connectedCallback(){if(ne(this.constructor.tagName),this.hydrate(),this.role!=null)this.setAttribute("role",this.role);if(this.onResize!==void 0){if(Q.observe(this),this._onResize==null)this._onResize=this.onResize.bind(this);this.addEventListener("resize",this._onResize)}if(this.value!=null&&this.getAttribute("value")!=null)this._value=this.getAttribute("value");this.queueRender()}disconnectedCallback(){Q.unobserve(this)}_changeQueued=!1;_renderQueued=!1;queueRender(n=!1){if(!this._hydrated)return;if(!this._changeQueued)this._changeQueued=n;if(!this._renderQueued)this._renderQueued=!0,requestAnimationFrame(()=>{if(this._changeQueued)Mn(this,"change");this._changeQueued=!1,this._renderQueued=!1,this.render()})}_hydrated=!1;hydrate(){if(!this._hydrated){this.initValue();let n=typeof this.content!=="function",o=typeof this.content==="function"?this.content():this.content,{styleSpec:e}=this.constructor,{styleNode:i}=this.constructor;if(e)i=this.constructor.styleNode=a.style(U(e)),delete this.constructor.styleNode;if(this.styleNode)console.warn(this,"styleNode is deprecrated, use static styleNode or statc styleSpec instead"),i=this.styleNode;if(i){let r=this.attachShadow({mode:"open"});r.appendChild(i.cloneNode(!0)),kn(r,o,n)}else if(o!==null){let r=Array.from(this.childNodes);kn(this,o,n),this.isSlotted=this.querySelector("slot,xin-slot")!==void 0;let t=Array.from(this.querySelectorAll("slot"));if(t.length>0)t.forEach(Wn.replaceSlot);if(r.length>0){let s={"":this};Array.from(this.querySelectorAll("xin-slot")).forEach((c)=>{s[c.name]=c}),r.forEach((c)=>{let f=s[""],y=c instanceof Element?s[c.slot]:f;(y!==void 0?y:f).append(c)})}}this._hydrated=!0}}render(){}}class Wn extends O{name="";content=null;static replaceSlot(n){let o=document.createElement("xin-slot");if(n.name!=="")o.setAttribute("name",n.name);n.replaceWith(o)}constructor(){super();this.initAttributes("name")}}var ui=Wn.elementCreator({tag:"xin-slot"});var oe=(n=()=>!0)=>{let o=localStorage.getItem("xin-state");if(o!=null){let i=JSON.parse(o);for(let r of Object.keys(i).filter(n))if(u[r]!==void 0)Object.assign(u[r],i[r]);else u[r]=i[r]}let e=Cn(()=>{let i={},r=w(u);for(let t of Object.keys(r).filter(n))i[t]=r[t];localStorage.setItem("xin-state",JSON.stringify(i)),console.log("xin state saved to localStorage")},500);Z(n,e)};var Bn="1.0.6";function wo(n){return Object.assign(V,n),V}function cn(n){return console.warn("boxedProxy is deprecated, please use tosi() instead"),wo(n)}function In(n,o=!1){if(o)return console.warn("xinProxy(..., true) is deprecated; use tosi(...) instead"),cn(n);return Object.keys(n).forEach((e)=>{u[e]=n[e]}),u}var ee={};async function fn(n,o){let{type:e,styleSpec:i}=await o(n,{Color:d,Component:O,elements:a,svgElements:On,mathML:zn,varDefault:tn,vars:An,xin:u,boxed:V,xinProxy:In,boxedProxy:cn,makeComponent:fn,bind:T,on:B,version:Bn}),r={type:e,creator:e.elementCreator({tag:n,styleSpec:i})};return ee[n]=r,r}var Yn={},ie=(src)=>eval(`import('${src}')`);class dn extends O{tag="anon-elt";src="";property="default";loaded;blueprintLoaded=(n)=>{};async packaged(){let{tag:n,src:o,property:e}=this,i=`${n}.${e}:${o}`;if(!this.loaded){if(Yn[i]===void 0)Yn[i]=ie(o).then((r)=>{let t=r[e];return fn(n,t)});else console.log(`using cached ${n} with signature ${i}`);this.loaded=await Yn[i],this.blueprintLoaded(this.loaded)}return this.loaded}constructor(){super();this.initAttributes("tag","src","property")}}var re=dn.elementCreator({tag:"xin-blueprint",styleSpec:{":host":{display:"none"}}});class jn extends O{allLoaded=()=>{};constructor(){super()}async load(){let o=Array.from(this.querySelectorAll(dn.tagName)).filter((e)=>e.src).map((e)=>e.packaged());await Promise.all(o),this.allLoaded()}connectedCallback(){super.connectedCallback(),this.load()}}var se=jn.elementCreator({tag:"xin-loader",styleSpec:{":host":{display:"none"}}});export{w as xinValue,In as xinProxy,v as xinPath,u as xin,Bn as version,An as vars,tn as varDefault,Zn as updates,_ as unobserve,vn as touchElement,Y as touch,wo as tosi,on as throttle,On as svgElements,z as settings,B as on,Z as observe,zn as mathML,fn as makeComponent,Ro as invertLuminance,Ko as initVars,oe as hotReload,an as getListItem,Dn as getCssVar,a as elements,Cn as debounce,U as css,cn as boxedProxy,V as boxed,se as blueprintLoader,re as blueprint,rn as bindings,T as bind,_o as StyleSheet,Yo as MoreMath,O as Component,d as Color,jn as BlueprintLoader,dn as Blueprint};
11
11
 
12
- //# debugId=C298B3827054333F64756E2164756E21
12
+ //# debugId=A32D8F258201D82C64756E2164756E21
13
13
  //# sourceMappingURL=module.js.map