tosijs 1.0.11 → 1.1.1

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