@dinoreic/fez 0.2.0 → 0.3.0
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/README.md +154 -157
- package/dist/fez.js +18 -18
- package/dist/fez.js.map +4 -4
- package/dist/log.js +5 -0
- package/dist/log.js.map +7 -0
- package/package.json +17 -13
- package/src/fez/compile.js +70 -47
- package/src/fez/connect.js +98 -63
- package/src/fez/defaults.js +64 -0
- package/src/fez/instance.js +131 -123
- package/src/fez/lib/template.js +4 -0
- package/src/fez/root.js +33 -134
- package/src/fez/utility.js +184 -0
- package/src/fez.js +5 -37
- package/src/log.js +154 -0
- package/src/rollup.js +73 -22
- package/dist/rollup.js +0 -3
- package/dist/rollup.js.map +0 -7
package/dist/fez.js
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
(()=>{
|
|
1
|
+
(()=>{var Se=Object.defineProperty;var Ee=(r,e)=>()=>(r&&(e=r(r=0)),e);var Ae=(r,e)=>{for(var t in e)Se(r,t,{get:e[t],enumerable:!0})};var ie={};Ae(ie,{loadDefaults:()=>oe});var oe,le=Ee(()=>{oe=()=>{Fez("fez-component",class{init(r){let e=document.createElement(r.name);for(e.props=r.props||r["data-props"]||r;this.root.firstChild;)this.root.parentNode.insertBefore(this.root.lastChild,e.nextSibling);this.root.innerHTML="",this.root.appendChild(e)}}),Fez("fez-include",class{init(r){Fez.fetch(r.src,e=>{let t=Fez.domRoot(e);Fez.head(t),this.root.innerHTML=t.innerHTML})}}),Fez("fez-inline",class{init(r){let e=this.root.innerHTML;if(this.root.innerHTML.includes("<")){let s=`inline-${Fez.fnv1(this.root.outerHTML)}`;Fez(s,class{HTML=e;init(){Object.assign(this.state,r.state||{})}});let n=document.createElement(s);this.root.after(this.root.lastChild,n),this.root.remove()}}})};typeof Fez<"u"&&Fez&&oe()});function k(r,e={},t){if(typeof e=="string"&&([e,t]=[t,e],e||={}),e instanceof Node&&(t=e,e={}),Array.isArray(r)&&(t=r,r="div"),(typeof e!="object"||Array.isArray(e))&&(t=e,e={}),r.includes(".")){let n=r.split(".");r=n.shift()||"div";let o=n.join(" ");e.class?e.class+=` ${o}`:e.class=o}let s=document.createElement(r);for(let[n,o]of Object.entries(e))if(typeof o=="function")s[n]=o.bind(this);else{let i=String(o).replaceAll("fez.",this.fezHtmlRoot);s.setAttribute(n,i)}if(t)if(Array.isArray(t))for(let n of t)s.appendChild(n);else t instanceof Node?s.appendChild(t):s.innerHTML=String(t);return s}function Ce(r,e){if(r=r.replace(/^#?raw/,"@html").replace(/^#?html/,"@html"),r.startsWith("#if")||r.startsWith("if"))return e.push(!1),r=r.replace(/^#?if/,""),`\${ ${r} ? \``;if(r.startsWith("#unless")||r.startsWith("unless"))return e.push(!1),r=r.replace(/^#?unless/,""),`\${ !(${r}) ? \``;if(r=="/block")return"`) && ''}";if(r.startsWith("#for")||r.startsWith("for")){r=r.replace(/^#?for/,"");let t=r.split(" in ",2);return"${"+t[1]+".map(("+t[0]+")=>`"}else if(r.startsWith("#each")||r.startsWith("each")){r=r.replace(/^#?each/,"");let t=r.split(" as ",2);return"${"+t[0]+".map(("+t[1]+")=>`"}else{if(r==":else"||r=="else")return e[e.length-1]=!0,"` : `";if(r=="/if"||r=="/unless")return e.pop()?"`}":"` : ``}";if(r=="/for"||r=="/each")return'`).join("")}';{let t="@html ";return r.startsWith("json ")&&(r=r.replace("json ","@html '<pre class=json>'+JSON.stringify("),r+=", null, 2) + '</pre>'"),r.startsWith(t)?r=r.replace(t,""):r=`Fez.htmlEscape(${r})`,"${"+r+"}"}}}function H(r,e={}){let t=[];r=r.replaceAll("[[","{{").replaceAll("]]","}}"),r=r.replace(/(\w+)=\{\{\s*(.*?)\s*\}\}([\s>])/g,(o,i,u,f)=>`${i}="{{ ${u} }}"${f}`);let s={};r=r.replace(/\{\{block\s+(\w+)\s*\}\}([^§]+)\{\{\/block\}\}/g,(o,i,u)=>(s[i]=u,"")),r=r.replace(/\{\{block:([\w\-]+)\s*\}\}/g,(o,i)=>s[i]||`block:${i}?`),r=r.replace(/:(\w+)="([\w\.\[\]]+)"/,(o,i,u)=>`:${i}=Fez.store.delete({{ Fez.store.set(${u}) }})`);let n=r.replace(/{{(.*?)}}/g,(o,i)=>(i=i.replaceAll("`","`"),i=i.replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),Ce(i,t)));n=n.replace(/<!\-\-.*?\-\->/g,"").replace(/>\s+</g,"><"),n="`"+n.trim()+"`";try{let o=`const fez = this;
|
|
2
2
|
with (this) {
|
|
3
3
|
return ${n}
|
|
4
4
|
}
|
|
5
|
-
`,
|
|
5
|
+
`,i=new Function(o);return f=>{try{return i.bind(f)()}catch(b){b.message=`FEZ template runtime error: ${b.message}
|
|
6
6
|
|
|
7
|
-
Template source: ${n}`,console.error(b)}}}catch(
|
|
8
|
-
${n}`,console.error(i),()=>Fez.error("Template Compile Error",!0)}}var L=class{static getProps(e,r){let s={};if(e.props)return e.props;for(let n of e.attributes)s[n.name]=n.value;for(let[n,i]of Object.entries(s))if([":"].includes(n[0])){delete s[n];try{let o=new Function(`return (${i})`).bind(r)();s[n.replace(/[\:_]/,"")]=o}catch(o){console.error(`Fez: Error evaluating attribute ${n}="${i}" for ${e.tagName}: ${o.message}`)}}if(s["data-props"]){let n=s["data-props"];if(typeof n=="object")return n;n[0]!="{"&&(n=decodeURIComponent(n));try{s=JSON.parse(n)}catch(i){console.error(`Fez: Invalid JSON in data-props for ${e.tagName}: ${i.message}`)}}else if(s["data-json-template"]){let n=r.previousSibling?.textContent;if(n)try{s=JSON.parse(n),r.previousSibling.remove()}catch(i){console.error(`Fez: Invalid JSON in template for ${e.tagName}: ${i.message}`)}}return s}static formData(e){let r=e.closest("form")||e.querySelector("form");if(!r)return Fez.log("No form found for formData()"),{};let s=new FormData(r),n={};return s.forEach((i,o)=>{n[o]=i}),n}static fastBind(){return!1}static nodeName="div";constructor(){}n=P;get fezHtmlRoot(){return`Fez(${this.UID}).`}get isConnected(){return this.root?.isConnected?!0:(this.fezRemoveSelf(),!1)}fezRemoveSelf(){this._setIntervalCache||={},Object.keys(this._setIntervalCache).forEach(e=>{clearInterval(this._setIntervalCache[e])}),this._eventHandlers&&(Object.entries(this._eventHandlers).forEach(([e,r])=>{window.removeEventListener(e,r)}),this._eventHandlers={}),this._timeouts&&(Object.values(this._timeouts).forEach(e=>{clearTimeout(e)}),this._timeouts={}),this.onDestroy(),this.onDestroy=()=>{},this.root&&(this.root.fez=void 0),this.root=void 0}prop(e){let r=this.oldRoot[e]||this.props[e];return typeof r=="function"&&(r=r.bind(this.root)),r}copy(){for(let e of Array.from(arguments)){let r=this.props[e];if(r!==void 0){if(e=="class"){let s=this.root.getAttribute(e,r);s&&(r=[s,r].join(" "))}(e=="style"||!this.root[e])&&(typeof r=="string"?this.root.setAttribute(e,r):this.root[e]=r)}}}on(e,r,s=200){this._eventHandlers=this._eventHandlers||{},this._timeouts=this._timeouts||{},this._eventHandlers[e]&&window.removeEventListener(e,this._eventHandlers[e]),this._timeouts[e]&&clearTimeout(this._timeouts[e]);let n=0,i=()=>this.isConnected?(r.call(this),!0):(this._eventHandlers[e]&&(window.removeEventListener(e,this._eventHandlers[e]),delete this._eventHandlers[e]),this._timeouts[e]&&(clearTimeout(this._timeouts[e]),delete this._timeouts[e]),!1),o=()=>{let a=Date.now();if(a-n>=s)if(i())n=a;else return;this._timeouts[e]&&clearTimeout(this._timeouts[e]),this._timeouts[e]=setTimeout(()=>{a>n&&i()&&(n=Date.now()),delete this._timeouts[e]},s)};this._eventHandlers[e]=o,window.addEventListener(e,o)}onResize(e,r){this.on("resize",e,r),e()}onScroll(e,r){this.on("scroll",e,r),e()}slot(e,r){r||=document.createElement("template");let s=r.nodeName=="SLOT";for(;e.firstChild;)s?r.parentNode.insertBefore(e.lastChild,r.nextSibling):r.appendChild(e.firstChild);return s?r.parentNode.removeChild(r):e.innerHTML="",r}setStyle(e,r){this.root.style.setProperty(e,r)}connect(){}onMount(){}beforeRender(){}afterRender(){}onDestroy(){}onStateChange(){}onGlobalStateChange(){}publish=Fez.publish;fezBlocks={};parseHtml(e){let r=this.fezHtmlRoot.replaceAll('"',""");return e=e.replace(/(['"\s;])fez\./g,`$1${r}`).replace(/>\s+</g,"><"),e.trim()}nextTick(e,r){r?(this._nextTicks||={},this._nextTicks[r]||=window.requestAnimationFrame(()=>{e.bind(this)(),this._nextTicks[r]=null},r)):window.requestAnimationFrame(e.bind(this))}render(e){if(e||=this?.class?.fezHtmlFunc,!e||!this.root)return;this.beforeRender();let r=document.createElement(this.class.nodeName||"div"),s;Array.isArray(e)?e[0]instanceof Node?e.forEach(o=>r.appendChild(o)):s=e.join(""):typeof e=="string"?s=O(e)(this):typeof e=="function"&&(s=e(this)),s&&(s=s.replace(/\s\w+="undefined"/g,""),r.innerHTML=this.parseHtml(s));let n=r.querySelector("slot");n&&(this.slot(this.root,n.parentNode),n.parentNode.removeChild(n));let i=r.querySelector(".fez-slot");if(i){let o=this.find(".fez-slot");o?i.parentNode.replaceChild(o,i):this.slot(this.root,i)}Fez.morphdom(this.root,r),this.renderFezPostProcess(),this.afterRender()}renderFezPostProcess(){let e=(r,s)=>{this.root.querySelectorAll(`*[${r}]`).forEach(n=>{let i=n.getAttribute(r);n.removeAttribute(r),i&&s.bind(this)(i,n)})};e("fez-this",(r,s)=>{new Function("n",`this.${r} = n`).bind(this)(s)}),e("fez-use",(r,s)=>{let n=this[r];typeof n=="function"?n(s):console.error(`Fez error: "${r}" is not a function in ${this.fezName}`)}),e("fez-class",(r,s)=>{let n=r.split(/\s+/),i=n.pop();n.forEach(o=>s.classList.add(o)),i&&setTimeout(()=>{s.classList.add(i)},300)}),e("fez-bind",(r,s)=>{if(["INPUT","SELECT","TEXTAREA"].includes(s.nodeName)){let n=new Function(`return this.${r}`).bind(this)(),i=s.type.toLowerCase()=="checkbox",o=["SELECT"].includes(s.nodeName)||i?"onchange":"onkeyup";s.setAttribute(o,`${this.fezHtmlRoot}${r} = this.${i?"checked":"value"}`),this.val(s,n)}else console.error(`Cant fez-bind="${r}" to ${s.nodeName} (needs INPUT, SELECT or TEXTAREA. Want to use fez-this?).`)}),this.root.querySelectorAll("*[disabled]").forEach(r=>{let s=r.getAttribute("disabled");["false"].includes(s)?r.removeAttribute("disabled"):r.setAttribute("disabled","true")})}refresh(e){if(alert("NEEDS FIX and remove htmlTemplate"),e){let r=document.createElement("div");r.innerHTML=this.class.htmlTemplate;let s=r.querySelector(e).innerHTML;this.render(e,s)}else this.render()}setInterval(e,r,s){return typeof e=="number"&&([r,e]=[e,r]),s||=Fez.fnv1(String(e)),this._setIntervalCache||={},clearInterval(this._setIntervalCache[s]),this._setIntervalCache[s]=setInterval(()=>{this.isConnected&&e()},r),this._setIntervalCache[s]}find(e){return typeof e=="string"?this.root.querySelector(e):e}val(e,r){let s=this.find(e);if(s)if(["INPUT","TEXTAREA","SELECT"].includes(s.nodeName))if(typeof r<"u")s.type=="checkbox"?s.checked=!!r:s.value=r;else return s.value;else if(typeof r<"u")s.innerHTML=r;else return s.innerHTML}formData(e){return this.class.formData(e||this.root)}attr(e,r){return typeof r>"u"?this.root.getAttribute(e):(this.root.setAttribute(e,r),r)}childNodes(e){let r=Array.from(this.root.children);if(e){let s=document.createElement("div");s.style.display="none",document.body.appendChild(s),r.forEach(i=>s.appendChild(i));let n=Array.from(s.children).map(e);return document.body.removeChild(s),n}else return r}subscribe(e,r){Fez._subs||={},Fez._subs[e]||=[],Fez._subs[e]=Fez._subs[e].filter(s=>s[0].isConnected),Fez._subs[e].push([this,r])}rootId(){return this.root.id||=`fez_${this.UID}`,this.root.id}fezRegister(){this.css&&(this.css=Fez.globalCss(this.css,{name:this.fezName,wrap:!0})),this.class.css&&(this.class.css=Fez.globalCss(this.class.css,{name:this.fezName})),this.state||=this.reactiveStore(),this.globalState=Fez.state.createProxy(this),this.fezRegisterBindMethods()}fezRegisterBindMethods(){Object.getOwnPropertyNames(Object.getPrototypeOf(this)).filter(r=>r!=="constructor"&&typeof this[r]=="function").forEach(r=>this[r]=this[r].bind(this))}fezHide(){let e=this.root,r=this.root.parentNode,s=document.createDocumentFragment();for(;e.firstChild;)s.appendChild(e.firstChild);return e.parentNode.replaceChild(s,e),this.root=r,Array.from(this.root.children)}reactiveStore(e,r){e||={},r||=(n,i,o,a)=>{this.onStateChange(i,o,a),this.nextTick(this.render,"render")},r.bind(this);function s(n,i){return typeof n!="object"||n===null?n:new Proxy(n,{set(o,a,u,b){let g=Reflect.get(o,a,b);if(g!==u){typeof u=="object"&&u!==null&&(u=s(u,i));let S=Reflect.set(o,a,u,b);return i(o,a,u,g),S}return!0},get(o,a,u){let b=Reflect.get(o,a,u);return typeof b=="object"&&b!==null?s(b,i):b}})}return s(e,r)}};var be={data:""},J=t=>typeof window=="object"?((t?t.querySelector("#_goober"):window._goober)||Object.assign((t||document.head).appendChild(document.createElement("style")),{innerHTML:" ",id:"_goober"})).firstChild:t||be,ye=t=>{let e=J(t),r=e.data;return e.data="",r},ge=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,ze=/\/\*[^]*?\*\/| +/g,U=/\n+/g,F=(t,e)=>{let r="",s="",n="";for(let i in t){let o=t[i];i[0]=="@"?i[1]=="i"?r=i+" "+o+";":s+=i[1]=="f"?F(o,i):i+"{"+F(o,i[1]=="k"?"":e)+"}":typeof o=="object"?s+=F(o,e?e.replace(/([^,])+/g,a=>i.replace(/(^:.*)|([^,])+/g,u=>/&/.test(u)?u.replace(/&/g,a):a?a+" "+u:u)):i):o!=null&&(i=/^--/.test(i)?i:i.replace(/[A-Z]/g,"-$&").toLowerCase(),n+=F.p?F.p(i,o):i+":"+o+";")}return r+(e&&n?e+"{"+n+"}":n)+s},C={},K=t=>{if(typeof t=="object"){let e="";for(let r in t)e+=r+K(t[r]);return e}return t},ve=(t,e,r,s,n)=>{let i=K(t),o=C[i]||(C[i]=(u=>{let b=0,g=11;for(;b<u.length;)g=101*g+u.charCodeAt(b++)>>>0;return"go"+g})(i));if(!C[o]){let u=i!==t?t:(b=>{let g,S,E=[{}];for(;g=ge.exec(b.replace(ze,""));)g[4]?E.shift():g[3]?(S=g[3].replace(U," ").trim(),E.unshift(E[0][S]=E[0][S]||{})):E[0][g[1]]=g[2].replace(U," ").trim();return E[0]})(t);C[o]=F(n?{["@keyframes "+o]:u}:u,r?"":"."+o)}let a=r&&C.g?C.g:null;return r&&(C.g=C[o]),((u,b,g,S)=>{S?b.data=b.data.replace(S,u):b.data.indexOf(u)===-1&&(b.data=g?u+b.data:b.data+u)})(C[o],e,s,a),o},Se=(t,e,r)=>t.reduce((s,n,i)=>{let o=e[i];if(o&&o.call){let a=o(r),u=a&&a.props&&a.props.className||/^go/.test(a)&&a;o=u?"."+u:a&&typeof a=="object"?a.props?"":F(a,""):a===!1?"":a}return s+n+(o??"")},"");function R(t){let e=this||{},r=t.call?t(e.p):t;return ve(r.unshift?r.raw?Se(r,[].slice.call(arguments,1),e.p):r.reduce((s,n)=>Object.assign(s,n&&n.call?n(e.p):n),{}):r,J(e.target),e.g,e.o,e.k)}var X,D,B,Ee=R.bind({g:1}),Ae=R.bind({k:1});function Te(t,e,r,s){F.p=e,X=t,D=r,B=s}function $e(t,e){let r=this||{};return function(){let s=arguments;function n(i,o){let a=Object.assign({},i),u=a.className||n.className;r.p=Object.assign({theme:D&&D()},a),r.o=/ *go\d+/.test(u),a.className=R.apply(r,s)+(u?" "+u:""),e&&(a.ref=o);let b=t;return t[0]&&(b=a.as||t,delete a.as),B&&b[0]&&B(a),X(b,a)}return e?e(n):n}}var Z={css:R,extractCss:ye,glob:Ee,keyframes:Ae,setup:Te,styled:$e};var Y=function(){"use strict";let t=new Set,e={morphStyle:"outerHTML",callbacks:{beforeNodeAdded:T,afterNodeAdded:T,beforeNodeMorphed:T,afterNodeMorphed:T,beforeNodeRemoved:T,afterNodeRemoved:T,beforeAttributeUpdated:T},head:{style:"merge",shouldPreserve:function(l){return l.getAttribute("im-preserve")==="true"},shouldReAppend:function(l){return l.getAttribute("im-re-append")==="true"},shouldRemove:T,afterHeadMorphed:T}};function r(l,c,f={}){l instanceof Document&&(l=l.documentElement),typeof c=="string"&&(c=oe(c));let d=le(c),h=se(l,d,f);return s(l,d,h)}function s(l,c,f){if(f.head.block){let d=l.querySelector("head"),h=c.querySelector("head");if(d&&h){let p=S(h,d,f);Promise.all(p).then(function(){s(l,c,Object.assign(f,{head:{block:!1,ignore:!0}}))});return}}if(f.morphStyle==="innerHTML")return o(c,l,f),l.children;if(f.morphStyle==="outerHTML"||f.morphStyle==null){let d=fe(c,l,f),h=d?.previousSibling,p=d?.nextSibling,y=i(l,d,f);return d?ce(h,y,p):[]}else throw"Do not understand how to morph style "+f.morphStyle}function n(l,c){return c.ignoreActiveValue&&l===document.activeElement&&l!==document.body}function i(l,c,f){if(!(f.ignoreActive&&l===document.activeElement))return c==null?f.callbacks.beforeNodeRemoved(l)===!1?l:(l.remove(),f.callbacks.afterNodeRemoved(l),null):j(l,c)?(f.callbacks.beforeNodeMorphed(l,c)===!1||(l instanceof HTMLHeadElement&&f.head.ignore||(l instanceof HTMLHeadElement&&f.head.style!=="morph"?S(c,l,f):(u(c,l,f),n(l,f)||o(c,l,f))),f.callbacks.afterNodeMorphed(l,c)),l):f.callbacks.beforeNodeRemoved(l)===!1||f.callbacks.beforeNodeAdded(c)===!1?l:(l.parentElement.replaceChild(c,l),f.callbacks.afterNodeAdded(c),f.callbacks.afterNodeRemoved(l),c)}function o(l,c,f){let d=l.firstChild,h=c.firstChild,p;for(;d;){if(p=d,d=p.nextSibling,h==null){if(f.callbacks.beforeNodeAdded(p)===!1)return;c.appendChild(p),f.callbacks.afterNodeAdded(p),M(f,p);continue}if(q(p,h,f)){i(h,p,f),h=h.nextSibling,M(f,p);continue}let y=ne(l,c,p,h,f);if(y){h=k(h,y,f),i(y,p,f),M(f,p);continue}let z=ie(l,c,p,h,f);if(z){h=k(h,z,f),i(z,p,f),M(f,p);continue}if(f.callbacks.beforeNodeAdded(p)===!1)return;c.insertBefore(p,h),f.callbacks.afterNodeAdded(p),M(f,p)}for(;h!==null;){let y=h;h=h.nextSibling,W(y,f)}}function a(l,c,f,d){return l==="value"&&d.ignoreActiveValue&&c===document.activeElement?!0:d.callbacks.beforeAttributeUpdated(l,c,f)===!1}function u(l,c,f){let d=l.nodeType;if(d===1){let h=l.attributes,p=c.attributes;for(let y of h)if(!a(y.name,c,"update",f))try{c.getAttribute(y.name)!==y.value&&c.setAttribute(y.name,y.value)}catch(z){console.error("Error setting attribute:",{badNode:c,badAttribute:y,error:z.message})}for(let y=p.length-1;0<=y;y--){let z=p[y];a(z.name,c,"remove",f)||l.hasAttribute(z.name)||c.removeAttribute(z.name)}}(d===8||d===3)&&c.nodeValue!==l.nodeValue&&(c.nodeValue=l.nodeValue),n(c,f)||g(l,c,f)}function b(l,c,f,d){if(l[f]!==c[f]){let h=a(f,c,"update",d);h||(c[f]=l[f]),l[f]?h||c.setAttribute(f,l[f]):a(f,c,"remove",d)||c.removeAttribute(f)}}function g(l,c,f){if(l instanceof HTMLInputElement&&c instanceof HTMLInputElement&&l.type!=="file"){let d=l.value,h=c.value;b(l,c,"checked",f),b(l,c,"disabled",f),l.hasAttribute("value")?d!==h&&(a("value",c,"update",f)||(c.setAttribute("value",d),c.value=d)):a("value",c,"remove",f)||(c.value="",c.removeAttribute("value"))}else if(l instanceof HTMLOptionElement)b(l,c,"selected",f);else if(l instanceof HTMLTextAreaElement&&c instanceof HTMLTextAreaElement){let d=l.value,h=c.value;if(a("value",c,"update",f))return;d!==h&&(c.value=d),c.firstChild&&c.firstChild.nodeValue!==d&&(c.firstChild.nodeValue=d)}}function S(l,c,f){let d=[],h=[],p=[],y=[],z=f.head.style,_=new Map;for(let v of l.children)_.set(v.outerHTML,v);for(let v of c.children){let w=_.has(v.outerHTML),I=f.head.shouldReAppend(v),N=f.head.shouldPreserve(v);w||N?I?h.push(v):(_.delete(v.outerHTML),p.push(v)):z==="append"?I&&(h.push(v),y.push(v)):f.head.shouldRemove(v)!==!1&&h.push(v)}y.push(..._.values());let G=[];for(let v of y){let w=document.createRange().createContextualFragment(v.outerHTML).firstChild;if(f.callbacks.beforeNodeAdded(w)!==!1){if(w.href||w.src){let I=null,N=new Promise(function(pe){I=pe});w.addEventListener("load",function(){I()}),G.push(N)}c.appendChild(w),f.callbacks.afterNodeAdded(w),d.push(w)}}for(let v of h)f.callbacks.beforeNodeRemoved(v)!==!1&&(c.removeChild(v),f.callbacks.afterNodeRemoved(v));return f.head.afterHeadMorphed(c,{added:d,kept:p,removed:h}),G}function E(){}function T(){}function re(l){let c={};return Object.assign(c,e),Object.assign(c,l),c.callbacks={},Object.assign(c.callbacks,e.callbacks),Object.assign(c.callbacks,l.callbacks),c.head={},Object.assign(c.head,e.head),Object.assign(c.head,l.head),c}function se(l,c,f){return f=re(f),{target:l,newContent:c,config:f,morphStyle:f.morphStyle,ignoreActive:f.ignoreActive,ignoreActiveValue:f.ignoreActiveValue,idMap:he(l,c),deadIds:new Set,callbacks:f.callbacks,head:f.head}}function q(l,c,f){return l==null||c==null?!1:l.nodeType===c.nodeType&&l.tagName===c.tagName?l.id!==""&&l.id===c.id?!0:H(f,l,c)>0:!1}function j(l,c){return l==null||c==null?!1:l.nodeType===c.nodeType&&l.tagName===c.tagName}function k(l,c,f){for(;l!==c;){let d=l;l=l.nextSibling,W(d,f)}return M(f,c),c.nextSibling}function ne(l,c,f,d,h){let p=H(h,f,c),y=null;if(p>0){let z=d,_=0;for(;z!=null;){if(q(f,z,h))return z;if(_+=H(h,z,l),_>p)return null;z=z.nextSibling}}return y}function ie(l,c,f,d,h){let p=d,y=f.nextSibling,z=0;for(;p!=null;){if(H(h,p,l)>0)return null;if(j(f,p))return p;if(j(y,p)&&(z++,y=y.nextSibling,z>=2))return null;p=p.nextSibling}return p}function oe(l){let c=new DOMParser,f=l.replace(/<svg(\s[^>]*>|>)([\s\S]*?)<\/svg>/gim,"");if(f.match(/<\/html>/)||f.match(/<\/head>/)||f.match(/<\/body>/)){let d=c.parseFromString(l,"text/html");if(f.match(/<\/html>/))return d.generatedByIdiomorph=!0,d;{let h=d.firstChild;return h?(h.generatedByIdiomorph=!0,h):null}}else{let h=c.parseFromString("<body><template>"+l+"</template></body>","text/html").body.querySelector("template").content;return h.generatedByIdiomorph=!0,h}}function le(l){if(l==null)return document.createElement("div");if(l.generatedByIdiomorph)return l;if(l instanceof Node){let c=document.createElement("div");return c.append(l),c}else{let c=document.createElement("div");for(let f of[...l])c.append(f);return c}}function ce(l,c,f){let d=[],h=[];for(;l!=null;)d.push(l),l=l.previousSibling;for(;d.length>0;){let p=d.pop();h.push(p),c.parentElement.insertBefore(p,c)}for(h.push(c);f!=null;)d.push(f),h.push(f),f=f.nextSibling;for(;d.length>0;)c.parentElement.insertBefore(d.pop(),c.nextSibling);return h}function fe(l,c,f){let d;d=l.firstChild;let h=d,p=0;for(;d;){let y=ae(d,c,f);y>p&&(h=d,p=y),d=d.nextSibling}return h}function ae(l,c,f){return j(l,c)?.5+H(f,l,c):0}function W(l,c){M(c,l),c.callbacks.beforeNodeRemoved(l)!==!1&&(l.remove(),c.callbacks.afterNodeRemoved(l))}function ue(l,c){return!l.deadIds.has(c)}function de(l,c,f){return(l.idMap.get(f)||t).has(c)}function M(l,c){let f=l.idMap.get(c)||t;for(let d of f)l.deadIds.add(d)}function H(l,c,f){let d=l.idMap.get(c)||t,h=0;for(let p of d)ue(l,p)&&de(l,p,f)&&++h;return h}function V(l,c){let f=l.parentElement,d=l.querySelectorAll("[id]");for(let h of d){let p=h;for(;p!==f&&p!=null;){let y=c.get(p);y==null&&(y=new Set,c.set(p,y)),y.add(h.id),p=p.parentElement}}}function he(l,c){let f=new Map;return V(l,f),V(c,f),f}return{morph:r,defaults:e}}();function x(t,e){let r=globalThis.window?.Fez||globalThis.Fez;if(t.includes("-")||console.error(`Fez: Invalid custom element name "${t}". Custom element names must contain a dash (e.g., 'my-element', 'ui-button').`),!e.fezHtmlRoot){let s=new e,n=class extends L{};if(Object.getOwnPropertyNames(s).concat(Object.getOwnPropertyNames(e.prototype)).filter(a=>!["constructor","prototype"].includes(a)).forEach(a=>n.prototype[a]=s[a]),r.fastBindInfo||={fast:[],slow:[]},s.GLOBAL&&(n.fezGlobal=s.GLOBAL),s.CSS&&(n.css=s.CSS),s.HTML&&(n.html=s.HTML),s.NAME&&(n.nodeName=s.NAME),s.FAST?(n.fastBind=s.FAST,r.fastBindInfo.fast.push(typeof s.FAST=="function"?`${t} (func)`:t)):r.fastBindInfo.slow.push(t),s.GLOBAL){let a=()=>document.body.appendChild(document.createElement(t));document.readyState==="loading"?document.addEventListener("DOMContentLoaded",a):a()}e=n;let o=`${t} compiled`;s.FAST&&(o+=" (fast bind)"),r.log(o)}e.html&&(e.html=we(e.html),e.html=e.html.replace(/<slot\s*\/>|<slot\s*>\s*<\/slot>/g,()=>{let s=e.slotNodeName||"div";return`<${s} class="fez-slot"></${s}>`}),e.fezHtmlFunc=O(e.html)),e.css&&(e.css=r.globalCss(e.css,{name:t})),r.classes[t]=e,customElements.get(t)||customElements.define(t,class extends HTMLElement{connectedCallback(){Ce(this,e)?Q(t,this):window.requestAnimationFrame(()=>{this.parentNode&&Q(t,this)})}})}function we(t){let e=new Set(["area","base","br","col","embed","hr","img","input","link","meta","source","track","wbr"]);return t.replace(/<([a-z-]+)\b([^>]*)\/>/g,(r,s,n)=>e.has(s)?r:`<${s}${n}></${s}>`)}function Ce(t,e){let r=t.getAttribute("fez-fast");var s=typeof e.fastBind=="function"?e.fastBind(t):e.fastBind;return r=="false"?!1:r||s}function Q(t,e){let r=Fez.classes[t],s=e.parentNode;if(e.isConnected){let n=typeof r.nodeName=="function"?r.nodeName(e):r.nodeName,i=document.createElement(n||"div");i.classList.add("fez"),i.classList.add(`fez-${t}`),s.replaceChild(i,e);let o=new r;if(o.UID=++Fez.instanceCount,Fez.instances.set(o.UID,o),o.oldRoot=e,o.fezName=t,o.root=i,o.props=r.getProps(e,i),o.class=r,o.slot(e,i),i.fez=o,r.fezGlobal&&r.fezGlobal!=!0&&(window[r.fezGlobal]=o),window.$&&(o.$root=$(i)),o.props.id&&i.setAttribute("id",o.props.id),o.fezRegister(),(o.init||o.created||o.connect).bind(o)(o.props),o.render(),o.onSubmit){let a=o.root.nodeName=="FORM"?o.root:o.find("form");a.onsubmit=u=>{u.preventDefault(),o.onSubmit(o.formData())}}if(o.onMount(o.props),o.onPropsChange){Fe.observe(i,{attributes:!0});for(let[a,u]of Object.entries(o.props))o.onPropsChange(a,u)}}}var Fe=new MutationObserver((t,e)=>{for(let r of t)if(r.type==="attributes"){let s=r.target.fez,n=r.attributeName,i=r.target.getAttribute(n);s&&(s.props[n]=i,s.onPropsChange(n,i))}});var Me=t=>{let e={script:"",style:"",html:"",head:""},r=t.split(`
|
|
9
|
-
`),s=[],n="";for(var
|
|
10
|
-
`),s=[],n=null):
|
|
11
|
-
`),s=[],n=null):(
|
|
12
|
-
`),s=[],n=null):n?s.push(
|
|
13
|
-
`;if(e.head){let
|
|
14
|
-
${
|
|
15
|
-
}`),String(e.style).includes(":")&&(Object.entries(Fez._styleMacros).forEach(([
|
|
7
|
+
Template source: ${n}`,console.error(b)}}}catch(o){return o.message=`FEZ template compile error: ${o.message}Template source:
|
|
8
|
+
${n}`,console.error(o),()=>Fez.error("Template Compile Error",!0)}}var _=class{static getProps(e,t){let s={};if(e.props)return e.props;for(let n of e.attributes)s[n.name]=n.value;for(let[n,o]of Object.entries(s))if([":"].includes(n[0])){delete s[n];try{let i=new Function(`return (${o})`).bind(t)();s[n.replace(/[\:_]/,"")]=i}catch(i){console.error(`Fez: Error evaluating attribute ${n}="${o}" for ${e.tagName}: ${i.message}`)}}if(s["data-props"]){let n=s["data-props"];if(typeof n=="object")return n;n[0]!="{"&&(n=decodeURIComponent(n));try{s=JSON.parse(n)}catch(o){console.error(`Fez: Invalid JSON in data-props for ${e.tagName}: ${o.message}`)}}else if(s["data-json-template"]){let n=t.previousSibling?.textContent;if(n)try{s=JSON.parse(n),t.previousSibling.remove()}catch(o){console.error(`Fez: Invalid JSON in template for ${e.tagName}: ${o.message}`)}}return s}static formData(e){let t=e.closest("form")||e.querySelector("form");if(!t)return Fez.log("No form found for formData()"),{};let s=new FormData(t),n={};return s.forEach((o,i)=>{n[i]=o}),n}static nodeName="div";constructor(){}n=k;get fezHtmlRoot(){return`Fez(${this.UID}).`}get isConnected(){return this.root?.isConnected?!0:(this.fezOnDestroy(),!1)}prop(e){let t=this.oldRoot[e]||this.props[e];return typeof t=="function"&&(t=t.bind(this.root)),t}copy(){for(let e of Array.from(arguments)){let t=this.props[e];if(t!==void 0){if(e=="class"){let s=this.root.getAttribute(e,t);s&&(t=[s,t].join(" "))}(e=="style"||!this.root[e])&&(typeof t=="string"?this.root.setAttribute(e,t):this.root[e]=t)}}}fezOnDestroy(){this._onDestroyCallbacks&&(this._onDestroyCallbacks.forEach(e=>{try{e()}catch(t){console.error("Fez: Error in cleanup callback:",t)}}),this._onDestroyCallbacks=[]),this.onDestroy(),this.onDestroy=()=>{},this.root&&(this.root.fez=void 0),this.root=void 0}addOnDestroy(e){this._onDestroyCallbacks=this._onDestroyCallbacks||[],this._onDestroyCallbacks.push(e)}on(e,t,s=200){this._eventHandlers=this._eventHandlers||{},this._eventHandlers[e]&&window.removeEventListener(e,this._eventHandlers[e]);let n=Fez.throttle(()=>{this.isConnected&&t.call(this)},s);this._eventHandlers[e]=n,window.addEventListener(e,n),this.addOnDestroy(()=>{window.removeEventListener(e,n),delete this._eventHandlers[e]})}onWindowResize(e,t){this.on("resize",e,t),e()}onWindowScroll(e,t){this.on("scroll",e,t),e()}onElementResize(e,t,s=200){let n=Fez.throttle(()=>{this.isConnected&&t.call(this,e.getBoundingClientRect(),e)},s),o=new ResizeObserver(n);o.observe(e),t.call(this,e.getBoundingClientRect(),e),this.addOnDestroy(()=>{o.disconnect()})}slot(e,t){t||=document.createElement("template");let s=t.nodeName=="SLOT";for(;e.firstChild;)s?t.parentNode.insertBefore(e.lastChild,t.nextSibling):t.appendChild(e.firstChild);return s?t.parentNode.removeChild(t):e.innerHTML="",t}setStyle(e,t){this.root.style.setProperty(e,t)}connect(){}onMount(){}beforeRender(){}afterRender(){}onDestroy(){}onStateChange(){}onGlobalStateChange(){}publish(e,...t){let s=o=>{if(Fez._subs&&Fez._subs[e]){let i=Fez._subs[e].find(([u])=>u===o);if(i)return i[1].bind(o)(...t),!0}return!1};if(s(this))return!0;let n=this.root.parentElement;for(;n;){if(n.fez&&s(n.fez))return!0;n=n.parentElement}return!1}fezBlocks={};parseHtml(e){let t=this.fezHtmlRoot.replaceAll('"',""");return e=e.replace(/([!'"\s;])fez\.(\w)/g,`$1${t}$2`).replace(/>\s+</g,"><"),e.trim()}nextTick(e,t){t?(this._nextTicks||={},this._nextTicks[t]||=window.requestAnimationFrame(()=>{e.bind(this)(),this._nextTicks[t]=null},t)):window.requestAnimationFrame(e.bind(this))}render(e){if(e||=this?.class?.fezHtmlFunc,!e||!this.root)return;this.beforeRender();let t=typeof this.class.nodeName=="function"?this.class.nodeName(this.root):this.class.nodeName,s=document.createElement(t||"div"),n;Array.isArray(e)?e[0]instanceof Node?e.forEach(o=>s.appendChild(o)):n=e.join(""):typeof e=="string"?n=H(e)(this):typeof e=="function"&&(n=e(this)),n&&(n=n.replace(/\s\w+="undefined"/g,""),s.innerHTML=this.parseHtml(n)),s.querySelectorAll("[fez-keep]").forEach(o=>{let i=o.getAttribute("fez-keep"),u=this.root.querySelector(`[fez-keep="${i}"]`);u?o.parentNode.replaceChild(u,o):i==="default-slot"&&Array.from(this.root.childNodes).forEach(f=>o.appendChild(f))}),Fez.morphdom(this.root,s),this.renderFezPostProcess(),this.afterRender()}renderFezPostProcess(){let e=(t,s)=>{this.root.querySelectorAll(`*[${t}]`).forEach(n=>{let o=n.getAttribute(t);n.removeAttribute(t),o&&s.bind(this)(o,n)})};e("fez-this",(t,s)=>{new Function("n",`this.${t} = n`).bind(this)(s)}),e("fez-use",(t,s)=>{let n=this[t];typeof n=="function"?n(s):console.error(`Fez error: "${t}" is not a function in ${this.fezName}`)}),e("fez-class",(t,s)=>{let n=t.split(/\s+/),o=n.pop();n.forEach(i=>s.classList.add(i)),o&&setTimeout(()=>{s.classList.add(o)},300)}),e("fez-bind",(t,s)=>{if(["INPUT","SELECT","TEXTAREA"].includes(s.nodeName)){let n=new Function(`return this.${t}`).bind(this)(),o=s.type.toLowerCase()=="checkbox",i=["SELECT"].includes(s.nodeName)||o?"onchange":"onkeyup";s.setAttribute(i,`${this.fezHtmlRoot}${t} = this.${o?"checked":"value"}`),this.val(s,n)}else console.error(`Cant fez-bind="${t}" to ${s.nodeName} (needs INPUT, SELECT or TEXTAREA. Want to use fez-this?).`)}),this.root.querySelectorAll("*[disabled]").forEach(t=>{let s=t.getAttribute("disabled");["false"].includes(s)?t.removeAttribute("disabled"):t.setAttribute("disabled","true")})}refresh(e){if(alert("NEEDS FIX and remove htmlTemplate"),e){let s=Fez.domRoot(this.class.htmlTemplate).querySelector(e).innerHTML;this.render(e,s)}else this.render()}setInterval(e,t,s){typeof e=="number"&&([t,e]=[e,t]),s||=Fez.fnv1(String(e)),this._setIntervalCache||={},clearInterval(this._setIntervalCache[s]);let n=setInterval(()=>{this.isConnected&&e()},t);return this._setIntervalCache[s]=n,this.addOnDestroy(()=>{clearInterval(n),delete this._setIntervalCache[s]}),n}find(e){return typeof e=="string"?this.root.querySelector(e):e}val(e,t){let s=this.find(e);if(s)if(["INPUT","TEXTAREA","SELECT"].includes(s.nodeName))if(typeof t<"u")s.type=="checkbox"?s.checked=!!t:s.value=t;else return s.value;else if(typeof t<"u")s.innerHTML=t;else return s.innerHTML}formData(e){return this.class.formData(e||this.root)}attr(e,t){return typeof t>"u"?this.root.getAttribute(e):(this.root.setAttribute(e,t),t)}childNodes(e){let t=Array.from(this.root.children);if(e){let s=document.createElement("div");s.style.display="none",document.body.appendChild(s),t.forEach(n=>s.appendChild(n)),t=Array.from(s.children).map(e),document.body.removeChild(s)}return t}subscribe(e,t){Fez._subs||={},Fez._subs[e]||=[],Fez._subs[e]=Fez._subs[e].filter(s=>s[0].isConnected),Fez._subs[e].push([this,t])}rootId(){return this.root.id||=`fez_${this.UID}`,this.root.id}fezRegister(){this.css&&(this.css=Fez.globalCss(this.css,{name:this.fezName,wrap:!0})),this.class.css&&(this.class.css=Fez.globalCss(this.class.css,{name:this.fezName})),this.state||=this.reactiveStore(),this.globalState=Fez.state.createProxy(this),this.fezRegisterBindMethods()}fezRegisterBindMethods(){Object.getOwnPropertyNames(Object.getPrototypeOf(this)).filter(t=>t!=="constructor"&&typeof this[t]=="function").forEach(t=>this[t]=this[t].bind(this))}fezHide(){let e=this.root,t=this.childNodes(),s=this.root.parentNode;return t.reverse().forEach(n=>s.insertBefore(n,e.nextSibling)),this.root.remove(),this.root=s,t}reactiveStore(e,t){e||={},t||=(n,o,i,u)=>{this.onStateChange(o,i,u),this.nextTick(this.render,"render")},t.bind(this);function s(n,o){return typeof n!="object"||n===null?n:new Proxy(n,{set(i,u,f,b){let g=Reflect.get(i,u,b);if(g!==f){typeof f=="object"&&f!==null&&(f=s(f,o));let S=Reflect.set(i,u,f,b);return o(i,u,f,g),S}return!0},get(i,u,f){let b=Reflect.get(i,u,f);return typeof b=="object"&&b!==null?s(b,o):b}})}return s(e,t)}};var $e={data:""},Z=r=>typeof window=="object"?((r?r.querySelector("#_goober"):window._goober)||Object.assign((r||document.head).appendChild(document.createElement("style")),{innerHTML:" ",id:"_goober"})).firstChild:r||$e,Fe=r=>{let e=Z(r),t=e.data;return e.data="",t},Te=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,we=/\/\*[^]*?\*\/| +/g,X=/\n+/g,F=(r,e)=>{let t="",s="",n="";for(let o in r){let i=r[o];o[0]=="@"?o[1]=="i"?t=o+" "+i+";":s+=o[1]=="f"?F(i,o):o+"{"+F(i,o[1]=="k"?"":e)+"}":typeof i=="object"?s+=F(i,e?e.replace(/([^,])+/g,u=>o.replace(/(^:.*)|([^,])+/g,f=>/&/.test(f)?f.replace(/&/g,u):u?u+" "+f:f)):o):i!=null&&(o=/^--/.test(o)?o:o.replace(/[A-Z]/g,"-$&").toLowerCase(),n+=F.p?F.p(o,i):o+":"+i+";")}return t+(e&&n?e+"{"+n+"}":n)+s},C={},Y=r=>{if(typeof r=="object"){let e="";for(let t in r)e+=t+Y(r[t]);return e}return r},Me=(r,e,t,s,n)=>{let o=Y(r),i=C[o]||(C[o]=(f=>{let b=0,g=11;for(;b<f.length;)g=101*g+f.charCodeAt(b++)>>>0;return"go"+g})(o));if(!C[i]){let f=o!==r?r:(b=>{let g,S,w=[{}];for(;g=Te.exec(b.replace(we,""));)g[4]?w.shift():g[3]?(S=g[3].replace(X," ").trim(),w.unshift(w[0][S]=w[0][S]||{})):w[0][g[1]]=g[2].replace(X," ").trim();return w[0]})(r);C[i]=F(n?{["@keyframes "+i]:f}:f,t?"":"."+i)}let u=t&&C.g?C.g:null;return t&&(C.g=C[i]),((f,b,g,S)=>{S?b.data=b.data.replace(S,f):b.data.indexOf(f)===-1&&(b.data=g?f+b.data:b.data+f)})(C[i],e,s,u),i},Le=(r,e,t)=>r.reduce((s,n,o)=>{let i=e[o];if(i&&i.call){let u=i(t),f=u&&u.props&&u.props.className||/^go/.test(u)&&u;i=f?"."+f:u&&typeof u=="object"?u.props?"":F(u,""):u===!1?"":u}return s+n+(i??"")},"");function I(r){let e=this||{},t=r.call?r(e.p):r;return Me(t.unshift?t.raw?Le(t,[].slice.call(arguments,1),e.p):t.reduce((s,n)=>Object.assign(s,n&&n.call?n(e.p):n),{}):t,Z(e.target),e.g,e.o,e.k)}var x,P,q,_e=I.bind({g:1}),Oe=I.bind({k:1});function je(r,e,t,s){F.p=e,x=r,P=t,q=s}function He(r,e){let t=this||{};return function(){let s=arguments;function n(o,i){let u=Object.assign({},o),f=u.className||n.className;t.p=Object.assign({theme:P&&P()},u),t.o=/ *go\d+/.test(f),u.className=I.apply(t,s)+(f?" "+f:""),e&&(u.ref=i);let b=r;return r[0]&&(b=u.as||r,delete u.as),q&&b[0]&&q(u),x(b,u)}return e?e(n):n}}var Q={css:I,extractCss:Fe,glob:_e,keyframes:Oe,setup:je,styled:He};var ee=function(){"use strict";let r=new Set,e={morphStyle:"outerHTML",callbacks:{beforeNodeAdded:A,afterNodeAdded:A,beforeNodeMorphed:A,afterNodeMorphed:A,beforeNodeRemoved:A,afterNodeRemoved:A,beforeAttributeUpdated:A},head:{style:"merge",shouldPreserve:function(l){return l.getAttribute("im-preserve")==="true"},shouldReAppend:function(l){return l.getAttribute("im-re-append")==="true"},shouldRemove:A,afterHeadMorphed:A}};function t(l,c,a={}){l instanceof Document&&(l=l.documentElement),typeof c=="string"&&(c=de(c));let d=he(c),h=ae(l,d,a);return s(l,d,h)}function s(l,c,a){if(a.head.block){let d=l.querySelector("head"),h=c.querySelector("head");if(d&&h){let p=S(h,d,a);Promise.all(p).then(function(){s(l,c,Object.assign(a,{head:{block:!1,ignore:!0}}))});return}}if(a.morphStyle==="innerHTML")return i(c,l,a),l.children;if(a.morphStyle==="outerHTML"||a.morphStyle==null){let d=me(c,l,a),h=d?.previousSibling,p=d?.nextSibling,y=o(l,d,a);return d?pe(h,y,p):[]}else throw"Do not understand how to morph style "+a.morphStyle}function n(l,c){return c.ignoreActiveValue&&l===document.activeElement&&l!==document.body}function o(l,c,a){if(!(a.ignoreActive&&l===document.activeElement))return c==null?a.callbacks.beforeNodeRemoved(l)===!1?l:(l.remove(),a.callbacks.afterNodeRemoved(l),null):R(l,c)?(a.callbacks.beforeNodeMorphed(l,c)===!1||(l instanceof HTMLHeadElement&&a.head.ignore||(l instanceof HTMLHeadElement&&a.head.style!=="morph"?S(c,l,a):(f(c,l,a),n(l,a)||i(c,l,a))),a.callbacks.afterNodeMorphed(l,c)),l):a.callbacks.beforeNodeRemoved(l)===!1||a.callbacks.beforeNodeAdded(c)===!1?l:(l.parentElement.replaceChild(c,l),a.callbacks.afterNodeAdded(c),a.callbacks.afterNodeRemoved(l),c)}function i(l,c,a){let d=l.firstChild,h=c.firstChild,p;for(;d;){if(p=d,d=p.nextSibling,h==null){if(a.callbacks.beforeNodeAdded(p)===!1)return;c.appendChild(p),a.callbacks.afterNodeAdded(p),M(a,p);continue}if(G(p,h,a)){o(h,p,a),h=h.nextSibling,M(a,p);continue}let y=fe(l,c,p,h,a);if(y){h=V(h,y,a),o(y,p,a),M(a,p);continue}let z=ue(l,c,p,h,a);if(z){h=V(h,z,a),o(z,p,a),M(a,p);continue}if(a.callbacks.beforeNodeAdded(p)===!1)return;c.insertBefore(p,h),a.callbacks.afterNodeAdded(p),M(a,p)}for(;h!==null;){let y=h;h=h.nextSibling,U(y,a)}}function u(l,c,a,d){return l==="value"&&d.ignoreActiveValue&&c===document.activeElement?!0:d.callbacks.beforeAttributeUpdated(l,c,a)===!1}function f(l,c,a){let d=l.nodeType;if(d===1){let h=l.attributes,p=c.attributes;for(let y of h)if(!u(y.name,c,"update",a))try{c.getAttribute(y.name)!==y.value&&c.setAttribute(y.name,y.value)}catch(z){console.error("Error setting attribute:",{badNode:c,badAttribute:y,error:z.message})}for(let y=p.length-1;0<=y;y--){let z=p[y];u(z.name,c,"remove",a)||l.hasAttribute(z.name)||c.removeAttribute(z.name)}}(d===8||d===3)&&c.nodeValue!==l.nodeValue&&(c.nodeValue=l.nodeValue),n(c,a)||g(l,c,a)}function b(l,c,a,d){if(l[a]!==c[a]){let h=u(a,c,"update",d);h||(c[a]=l[a]),l[a]?h||c.setAttribute(a,l[a]):u(a,c,"remove",d)||c.removeAttribute(a)}}function g(l,c,a){if(l instanceof HTMLInputElement&&c instanceof HTMLInputElement&&l.type!=="file"){let d=l.value,h=c.value;b(l,c,"checked",a),b(l,c,"disabled",a),l.hasAttribute("value")?d!==h&&(u("value",c,"update",a)||(c.setAttribute("value",d),c.value=d)):u("value",c,"remove",a)||(c.value="",c.removeAttribute("value"))}else if(l instanceof HTMLOptionElement)b(l,c,"selected",a);else if(l instanceof HTMLTextAreaElement&&c instanceof HTMLTextAreaElement){let d=l.value,h=c.value;if(u("value",c,"update",a))return;d!==h&&(c.value=d),c.firstChild&&c.firstChild.nodeValue!==d&&(c.firstChild.nodeValue=d)}}function S(l,c,a){let d=[],h=[],p=[],y=[],z=a.head.style,L=new Map;for(let v of l.children)L.set(v.outerHTML,v);for(let v of c.children){let E=L.has(v.outerHTML),j=a.head.shouldReAppend(v),D=a.head.shouldPreserve(v);E||D?j?h.push(v):(L.delete(v.outerHTML),p.push(v)):z==="append"?j&&(h.push(v),y.push(v)):a.head.shouldRemove(v)!==!1&&h.push(v)}y.push(...L.values());let K=[];for(let v of y){let E=document.createRange().createContextualFragment(v.outerHTML).firstChild;if(a.callbacks.beforeNodeAdded(E)!==!1){if(E.href||E.src){let j=null,D=new Promise(function(ve){j=ve});E.addEventListener("load",function(){j()}),K.push(D)}c.appendChild(E),a.callbacks.afterNodeAdded(E),d.push(E)}}for(let v of h)a.callbacks.beforeNodeRemoved(v)!==!1&&(c.removeChild(v),a.callbacks.afterNodeRemoved(v));return a.head.afterHeadMorphed(c,{added:d,kept:p,removed:h}),K}function w(){}function A(){}function ce(l){let c={};return Object.assign(c,e),Object.assign(c,l),c.callbacks={},Object.assign(c.callbacks,e.callbacks),Object.assign(c.callbacks,l.callbacks),c.head={},Object.assign(c.head,e.head),Object.assign(c.head,l.head),c}function ae(l,c,a){return a=ce(a),{target:l,newContent:c,config:a,morphStyle:a.morphStyle,ignoreActive:a.ignoreActive,ignoreActiveValue:a.ignoreActiveValue,idMap:ze(l,c),deadIds:new Set,callbacks:a.callbacks,head:a.head}}function G(l,c,a){return l==null||c==null?!1:l.nodeType===c.nodeType&&l.tagName===c.tagName?l.id!==""&&l.id===c.id?!0:O(a,l,c)>0:!1}function R(l,c){return l==null||c==null?!1:l.nodeType===c.nodeType&&l.tagName===c.tagName}function V(l,c,a){for(;l!==c;){let d=l;l=l.nextSibling,U(d,a)}return M(a,c),c.nextSibling}function fe(l,c,a,d,h){let p=O(h,a,c),y=null;if(p>0){let z=d,L=0;for(;z!=null;){if(G(a,z,h))return z;if(L+=O(h,z,l),L>p)return null;z=z.nextSibling}}return y}function ue(l,c,a,d,h){let p=d,y=a.nextSibling,z=0;for(;p!=null;){if(O(h,p,l)>0)return null;if(R(a,p))return p;if(R(y,p)&&(z++,y=y.nextSibling,z>=2))return null;p=p.nextSibling}return p}function de(l){let c=new DOMParser,a=l.replace(/<svg(\s[^>]*>|>)([\s\S]*?)<\/svg>/gim,"");if(a.match(/<\/html>/)||a.match(/<\/head>/)||a.match(/<\/body>/)){let d=c.parseFromString(l,"text/html");if(a.match(/<\/html>/))return d.generatedByIdiomorph=!0,d;{let h=d.firstChild;return h?(h.generatedByIdiomorph=!0,h):null}}else{let h=c.parseFromString("<body><template>"+l+"</template></body>","text/html").body.querySelector("template").content;return h.generatedByIdiomorph=!0,h}}function he(l){if(l==null)return document.createElement("div");if(l.generatedByIdiomorph)return l;if(l instanceof Node){let c=document.createElement("div");return c.append(l),c}else{let c=document.createElement("div");for(let a of[...l])c.append(a);return c}}function pe(l,c,a){let d=[],h=[];for(;l!=null;)d.push(l),l=l.previousSibling;for(;d.length>0;){let p=d.pop();h.push(p),c.parentElement.insertBefore(p,c)}for(h.push(c);a!=null;)d.push(a),h.push(a),a=a.nextSibling;for(;d.length>0;)c.parentElement.insertBefore(d.pop(),c.nextSibling);return h}function me(l,c,a){let d;d=l.firstChild;let h=d,p=0;for(;d;){let y=be(d,c,a);y>p&&(h=d,p=y),d=d.nextSibling}return h}function be(l,c,a){return R(l,c)?.5+O(a,l,c):0}function U(l,c){M(c,l),c.callbacks.beforeNodeRemoved(l)!==!1&&(l.remove(),c.callbacks.afterNodeRemoved(l))}function ye(l,c){return!l.deadIds.has(c)}function ge(l,c,a){return(l.idMap.get(a)||r).has(c)}function M(l,c){let a=l.idMap.get(c)||r;for(let d of a)l.deadIds.add(d)}function O(l,c,a){let d=l.idMap.get(c)||r,h=0;for(let p of d)ye(l,p)&&ge(l,p,a)&&++h;return h}function J(l,c){let a=l.parentElement,d=l.querySelectorAll("[id]");for(let h of d){let p=h;for(;p!==a&&p!=null;){let y=c.get(p);y==null&&(y=new Set,c.set(p,y)),y.add(h.id),p=p.parentElement}}}function ze(l,c){let a=new Map;return J(l,a),J(c,a),a}return{morph:t,defaults:e}}();function B(r,e){let t=globalThis.window?.Fez||globalThis.Fez;if(r.includes("-")||console.error(`Fez: Invalid custom element name "${r}". Custom element names must contain a dash (e.g., 'my-element', 'ui-button').`),e.fezHtmlRoot)e.html&&(e.html=te(e.html));else{let s=new e,n=class extends _{};if(Object.getOwnPropertyNames(s).concat(Object.getOwnPropertyNames(e.prototype)).filter(i=>!["constructor","prototype"].includes(i)).forEach(i=>n.prototype[i]=s[i]),s.GLOBAL&&(n.fezGlobal=s.GLOBAL),s.CSS&&(n.css=s.CSS),s.HTML&&(n.html=te(s.HTML)),s.NAME&&(n.nodeName=s.NAME),s.GLOBAL){let i=()=>document.body.appendChild(document.createElement(r));document.readyState==="loading"?document.addEventListener("DOMContentLoaded",i):i()}e=n,t.log(`${r} compiled`)}e.html&&(e.html=e.html.replace(/<slot\s*\/>|<slot\s*>\s*<\/slot>/g,()=>{let s=e.SLOT||"div";return`<${s} class="fez-slot" fez-keep="default-slot"></${s}>`}),e.fezHtmlFunc=H(e.html)),e.css&&(e.css=t.globalCss(e.css,{name:r})),t.classes[r]=e,Re(r,e)}function Re(r,e){let t=globalThis.window?.Fez||globalThis.Fez;customElements.get(r)||customElements.define(r,class extends HTMLElement{connectedCallback(){t._pendingConnections||(t._pendingConnections=[],t._batchScheduled=!1),t._pendingConnections.push({name:r,node:this}),t._batchScheduled||(t._batchScheduled=!0,Promise.resolve().then(()=>{let s=t._pendingConnections.slice();t._pendingConnections=[],t._batchScheduled=!1,s.sort((n,o)=>n.node.contains(o.node)?-1:o.node.contains(n.node)?1:0),s.forEach(({name:n,node:o})=>{o.isConnected&&o.parentNode&&Ie(n,o)})}))}})}function te(r){let e=new Set(["area","base","br","col","embed","hr","img","input","link","meta","source","track","wbr"]);return r.replace(/<([a-z-]+)\b([^>]*)\/>/g,(t,s,n)=>e.has(s)?t:`<${s}${n}></${s}>`)}function Ie(r,e){let t=Fez.classes[r],s=e.parentNode;if(e.isConnected){let n=typeof t.nodeName=="function"?t.nodeName(e):t.nodeName,o=document.createElement(n||"div");o.classList.add("fez"),o.classList.add(`fez-${r}`),s.replaceChild(o,e);let i=new t;if(i.UID=++Fez.instanceCount,Fez.instances.set(i.UID,i),i.oldRoot=e,i.fezName=r,i.root=o,i.props=t.getProps(e,o),i.class=t,i.slot(e,o),o.fez=i,t.fezGlobal&&t.fezGlobal!=!0&&(window[t.fezGlobal]=i),window.$&&(i.$root=$(o)),i.props.id&&o.setAttribute("id",i.props.id),i.fezRegister(),(i.init||i.created||i.connect).bind(i)(i.props),i.render(),i.firstRender=!0,i.onMount(i.props),i.onSubmit){let u=i.root.nodeName=="FORM"?i.root:i.find("form");u.onsubmit=f=>{f.preventDefault(),i.onSubmit(i.formData())}}if(i.onPropsChange){Ne.observe(o,{attributes:!0});for(let[u,f]of Object.entries(i.props))i.onPropsChange(u,f)}}}var Ne=new MutationObserver((r,e)=>{for(let t of r)if(t.type==="attributes"){let s=t.target.fez,n=t.attributeName,o=t.target.getAttribute(n);s&&(s.props[n]=o,s.onPropsChange(n,o))}});var De=r=>{let e={script:"",style:"",html:"",head:""},t=r.split(`
|
|
9
|
+
`),s=[],n="";for(var o of t)o=o.trim(),o.startsWith("<script")&&!e.script&&n!="head"?n="script":o.startsWith("<head")&&!e.script?n="head":o.startsWith("<style")?n="style":o.endsWith("<\/script>")&&n==="script"&&!e.script?(e.script=s.join(`
|
|
10
|
+
`),s=[],n=null):o.endsWith("</style>")&&n==="style"?(e.style=s.join(`
|
|
11
|
+
`),s=[],n=null):(o.endsWith("</head>")||o.endsWith("</header>"))&&n==="head"?(e.head=s.join(`
|
|
12
|
+
`),s=[],n=null):n?s.push(o):e.html+=o+`
|
|
13
|
+
`;if(e.head){let u=Fez.domRoot(e.head);Array.from(u.children).forEach(f=>{if(f.tagName==="SCRIPT"){let b=document.createElement("script");Array.from(f.attributes).forEach(g=>{b.setAttribute(g.name,g.value)}),b.type||="text/javascript",f.src?document.head.appendChild(b):(b.type.includes("javascript")||b.type=="module")&&(b.textContent=f.textContent,document.head.appendChild(b))}else document.head.appendChild(f.cloneNode(!0))})}let i=e.script;return/class\s+\{/.test(i)||(i=`class {
|
|
14
|
+
${i}
|
|
15
|
+
}`),String(e.style).includes(":")&&(Object.entries(Fez._styleMacros).forEach(([u,f])=>{e.style=e.style.replaceAll(`:${u} `,`${f} `)}),e.style=e.style.includes(":fez")||/(?:^|\s)body\s*\{/.test(e.style)?e.style:`:fez {
|
|
16
16
|
${e.style}
|
|
17
|
-
}`,
|
|
17
|
+
}`,i=i.replace(/\}\s*$/,`
|
|
18
18
|
CSS = \`${e.style}\`
|
|
19
|
-
}`)),/\w/.test(String(e.html))&&(e.html=e.html.replaceAll("`","`"),e.html=e.html.replaceAll("$","\\$"),
|
|
19
|
+
}`)),/\w/.test(String(e.html))&&(e.html=e.html.replaceAll("`","`"),e.html=e.html.replaceAll("$","\\$"),i=i.replace(/\}\s*$/,`
|
|
20
20
|
HTML = \`${e.html}\`
|
|
21
|
-
}`)),
|
|
21
|
+
}`)),i};function W(r){if(r instanceof Node){let e=r;e.remove();let t=e.getAttribute("fez");if(t&&(t.includes(".")||t.includes("/"))){ke(t);return}else return t&&!t.includes("-")&&console.error(`Fez: Invalid custom element name "${t}". Custom element names must contain a dash (e.g., 'my-element', 'ui-button').`),N(t,e.innerHTML)}else{(r?Fez.domRoot(r):document.body).querySelectorAll("template[fez], xmp[fez]").forEach(t=>{W(t)});return}}function ke(r){Fez.log(`Loading from ${r}`),Fez.fetch(r).then(e=>{let n=new DOMParser().parseFromString(e,"text/html").querySelectorAll("template[fez], xmp[fez]");if(n.length>0)n.forEach(o=>{let i=o.getAttribute("fez");i&&!i.includes("-")&&!i.includes(".")&&!i.includes("/")&&console.error(`Fez: Invalid custom element name "${i}". Custom element names must contain a dash (e.g., 'my-element', 'ui-button').`);let u=o.innerHTML;N(i,u)});else{let o=r.split("/").pop().split(".")[0];N(o,e)}}).catch(e=>{console.error(`FEZ template load error for "${r}": ${e.message}`)})}function N(r,e){if(arguments.length===1)return W(r);if(e&&e.includes("</xmp>"))return W(e);r&&!r.includes("-")&&!r.includes(".")&&!r.includes("/")&&console.error(`Fez: Invalid custom element name "${r}". Custom element names must contain a dash (e.g., 'my-element', 'ui-button').`);let t=De(e),s=t.split(/class\s+\{/,2);if(t=`${s[0]};
|
|
22
22
|
|
|
23
|
-
window.Fez('${
|
|
24
|
-
${s[1]})`,
|
|
25
|
-
`}if(
|
|
23
|
+
window.Fez('${r}', class {
|
|
24
|
+
${s[1]})`,r){let n=document.getElementById("fez-hidden-styles");n||(n=document.createElement("style"),n.id="fez-hidden-styles",document.head.appendChild(n));let o=[...Object.keys(Fez.classes),r].sort().join(", ");n.textContent=`${o} { display: none; }
|
|
25
|
+
`}if(t.includes("import "))Fez.head({script:t}),setTimeout(()=>{Fez.classes[r]||Fez.error(`Template "${r}" possible compile error. (can be a false positive, it imports are not loaded)`)},2e3);else try{new Function(t)()}catch(n){Fez.error(`Template "${r}" compile error: ${n.message}`),console.log(t)}}var re=N;var Pe={data:{},listeners:new Map,subscribers:new Map,globalSubscribers:new Set,notify(r,e,t){Fez.log(`Global state change for ${r}: ${e} (from ${t})`);let s=this.listeners.get(r);s&&s.forEach(o=>{o.isConnected?(o.onGlobalStateChange(r,e,t),o.render()):s.delete(o)});let n=this.subscribers.get(r);n&&n.forEach(o=>{try{o(e,t,r)}catch(i){console.error(`Error in subscriber for key ${r}:`,i)}}),this.globalSubscribers.forEach(o=>{try{o(r,e,t)}catch(i){console.error("Error in global subscriber:",i)}})},createProxy(r){return new Proxy({},{get:(e,t)=>(r._globalStateKeys||=new Set,r._globalStateKeys.has(t)||(r._globalStateKeys.add(t),this.listeners.has(t)||this.listeners.set(t,new Set),this.listeners.get(t).add(r)),this.data[t]),set:(e,t,s)=>{let n=this.data[t];return n!==s&&(this.data[t]=s,this.notify(t,s,n)),!0}})},set(r,e){let t=this.data[r];t!==e&&(this.data[r]=e,this.notify(r,e,t))},get(r){return this.data[r]},forEach(r,e){let t=this.listeners.get(r);t&&t.forEach(s=>{s.isConnected?e(s):t.delete(s)})},subscribe(r,e){if(typeof r=="function")return this.globalSubscribers.add(r),()=>this.globalSubscribers.delete(r);{let t=r;return this.subscribers.has(t)||this.subscribers.set(t,new Set),this.subscribers.get(t).add(e),()=>{let s=this.subscribers.get(t);s&&(s.delete(e),s.size===0&&this.subscribers.delete(t))}}}},se=Pe;var ne=r=>{r.head=(e,t)=>{if(e.nodeName){e.nodeName=="SCRIPT"?(r.head({script:e.innerText}),e.remove()):(e.querySelectorAll("script").forEach(f=>r.head(f)),e.querySelectorAll("template[fez], xmp[fez], script[fez]").forEach(f=>r.compile(f)));return}if(typeof e!="object"||e===null)throw new Error("head requires an object parameter");let s,n={},o;if(e.script){if(e.script.includes("import ")){t&&r.error("Fez.head callback is not supported when script with import is passed (module context).");let f=document.createElement("script");f.type="module",f.textContent=e.script,document.head.appendChild(f),setTimeout(()=>f.remove(),100)}else try{new Function(e.script)(),t&&t()}catch(f){r.error("Error executing script:",f),console.log(e.script)}return}else if(e.js){s=e.js,o="script";for(let[f,b]of Object.entries(e))f!=="js"&&f!=="module"&&(n[f]=b);e.module&&(n.type="module")}else if(e.css){s=e.css,o="link",n.rel="stylesheet";for(let[f,b]of Object.entries(e))f!=="css"&&(n[f]=b)}else throw new Error('head requires either "script", "js" or "css" property');let i=document.querySelector(`${o}[src="${s}"], ${o}[href="${s}"]`);if(i)return t&&t(),i;let u=document.createElement(o);o==="link"?u.href=s:u.src=s;for(let[f,b]of Object.entries(n))u.setAttribute(f,b);return(t||e.module)&&(u.onload=()=>{e.module&&o==="script"&&import(s).then(f=>{window[e.module]=f.default||f[e.module]||f}).catch(f=>{console.error(`Error importing module ${e.module}:`,f)}),t&&t()}),document.head.appendChild(u),u},r.darkenColor=(e,t=20)=>{let s=parseInt(e.replace("#",""),16),n=Math.round(2.55*t),o=(s>>16)-n,i=(s>>8&255)-n,u=(s&255)-n;return"#"+(16777216+(o<255?o<1?0:o:255)*65536+(i<255?i<1?0:i:255)*256+(u<255?u<1?0:u:255)).toString(16).slice(1)},r.lightenColor=(e,t=20)=>{let s=parseInt(e.replace("#",""),16),n=Math.round(2.55*t),o=(s>>16)+n,i=(s>>8&255)+n,u=(s&255)+n;return"#"+(16777216+(o<255?o<1?0:o:255)*65536+(i<255?i<1?0:i:255)*256+(u<255?u<1?0:u:255)).toString(16).slice(1)},r.htmlEscape=e=>typeof e=="string"?(e=e.replace(/font-family\s*:\s*(?:&[^;]+;|[^;])*?;/gi,"").replaceAll("&","&").replaceAll("'","'").replaceAll('"',""").replaceAll("<","<").replaceAll(">",">"),e):e===void 0?"":e,r.domRoot=(e,t="div")=>{if(e instanceof Node)return e;{let s=document.createElement(t);return s.innerHTML=e,s}},r.activateNode=(e,t="active")=>{Array.from(e.parentElement.children).forEach(s=>{s.classList.remove(t)}),e.classList.add(t)},r.isTrue=e=>["1","true","on"].includes(String(e).toLowerCase())};var m=(r,e)=>{if(typeof r=="number"){let t=m.instances.get(r);if(t)return t;m.error(`Instance with UID "${r}" not found.`)}else if(r)if(e)if(typeof e=="function"&&!/^\s*class/.test(e.toString())&&!/\b(this|new)\b/.test(e.toString())){let s=Array.from(document.querySelectorAll(`.fez.fez-${r}`)).filter(n=>n.fez);return s.forEach(n=>e(n.fez)),s}else return typeof e!="function"?m.find(r,e):B(r,e);else{let t=r.nodeName?r.closest(".fez"):document.querySelector(r.includes("#")?r:`.fez.fez-${r}`);if(t){if(t.fez)return t.fez;m.error(`node "${r}" has no Fez attached.`)}else m.error(`node "${r}" not found.`)}else m.error("Fez() ?")};m.classes={};m.instanceCount=0;m.instances=new Map;m.find=(r,e)=>{let t=r;typeof t=="string"&&(t=document.body.querySelector(t)),typeof t.val=="function"&&(t=t[0]);let s=e?`.fez.fez-${e}`:".fez",n=t.closest(s);if(n&&n.fez)return n.fez;console.error("Fez node connector not found",r,t)};m.cssClass=r=>Q.css(r);m.globalCss=(r,e={})=>{if(typeof r=="function"&&(r=r()),r.includes(":")){let t=r.split(`
|
|
26
26
|
`).filter(s=>!/^\s*\/\//.test(s)).join(`
|
|
27
|
-
`);e.wrap&&(
|
|
27
|
+
`);e.wrap&&(t=`:fez { ${t} }`),t=t.replace(/\:fez|\:host/,`.fez.fez-${e.name}`),r=m.cssClass(t)}return document.body?document.body.parentElement.classList.add(r):document.addEventListener("DOMContentLoaded",()=>{document.body.parentElement.classList.add(r)}),r};m.info=()=>{console.log("Fez components:",Object.keys(m.classes||{}))};m.morphdom=(r,e,t={})=>{Array.from(r.attributes).forEach(n=>{e.setAttribute(n.name,n.value)}),ee.morph(r,e,{morphStyle:"outerHTML"});let s=r.nextSibling;s?.nodeType===Node.TEXT_NODE&&s.textContent.trim()===""&&s.remove()};m.publish=(r,...e)=>{m._subs||={},m._subs[r]||=[],m._subs[r].forEach(t=>{t[1].bind(t[0])(...e)})};m.fnv1=r=>{var e,t,s,n,o,i;for(e=2166136261,t=16777619,s=e,n=o=0,i=r.length-1;0<=i?o<=i:o>=i;n=0<=i?++o:--o)s^=r.charCodeAt(n),s*=t;return s.toString(36).replaceAll("-","")};m.tag=(r,e={},t="")=>{let s=encodeURIComponent(JSON.stringify(e));return`<${r} data-props="${s}">${t}</${r}>`};m.getFunction=r=>{if(r){if(typeof r=="function")return r;if(typeof r=="string")return new Function(r)}else return()=>{}};m.error=(r,e)=>{if(r=`Fez: ${r}`,console.error(r),e)return`<span style="border: 1px solid red; font-size: 14px; padding: 3px 7px; background: #fee; border-radius: 4px;">${r}</span>`};m.log=r=>{m.LOG===!0&&(r=String(r).substring(0,180),console.log(`Fez: ${r}`))};document.addEventListener("DOMContentLoaded",()=>{m.log("Fez.LOG === true, logging enabled.")});m.untilTrue=(r,e)=>{e||=200,r()||setTimeout(()=>{m.untilTrue(r,e)},e)};m.throttle=(r,e=200)=>{let t=0,s;return function(...n){let o=Date.now();o-t>=e?(r.apply(this,n),t=o):(clearTimeout(s),s=setTimeout(()=>{r.apply(this,n),t=Date.now()},e-(o-t)))}};m.fetch=function(...r){m._fetchCache||={};let e="GET",t,s;typeof r[0]=="string"&&/^[A-Z]+$/.test(r[0])&&(e=r.shift()),t=r.shift();let n={},o=null;if(typeof r[0]=="object"&&(o=r.shift()),typeof r[0]=="function"&&(s=r.shift()),o){if(e==="GET"){let f=new URLSearchParams(o);t+=(t.includes("?")?"&":"?")+f.toString()}else if(e==="POST"){let f=new FormData;for(let[b,g]of Object.entries(o))f.append(b,g);n.body=f}}n.method=e;let i=`${e}:${t}:${JSON.stringify(n)}`;if(m._fetchCache[i]){let f=m._fetchCache[i];if(m.log(`fetch cache hit: ${e} ${t}`),s){s(f);return}return Promise.resolve(f)}m.log(`fetch live: ${e} ${t}`);let u=f=>f.headers.get("content-type")?.includes("application/json")?f.json():f.text();if(s){fetch(t,n).then(u).then(f=>{m._fetchCache[i]=f,s(f)}).catch(f=>m.onError("fetch",f));return}return fetch(t,n).then(u).then(f=>(m._fetchCache[i]=f,f))};m.onError=(r,e)=>{if(typeof r!="string")throw new Error("Fez.onError: kind must be a string");console.error(`${r}: ${e.toString()}`)};m._styleMacros={};m.styleMacro=(r,e)=>{m._styleMacros[r]=e};m.store={store:new Map,counter:0,set(r){let e=this.counter++;return this.store.set(e,r),e},get(r){return this.store.get(r)},delete(r){let e=this.store.get(r);return this.store.delete(r),e}};ne(m);m.compile=re;m.state=se;var T=m;typeof window<"u"&&(window.FezBase=_);typeof window<"u"&&(window.Fez=T);Promise.resolve().then(()=>le());setInterval(()=>{for(let[r,e]of T.instances)e?.isConnected||(e.fez?.fezOnDestroy(),T.instances.delete(r))},5e3);var qe=new MutationObserver(r=>{for(let{addedNodes:e,removedNodes:t}of r)e.forEach(s=>{s.nodeType===1&&(s.matches("template[fez], xmp[fez], script[fez]")&&(T.compile(s),s.remove()),s.querySelectorAll&&s.querySelectorAll("template[fez], xmp[fez], script[fez]").forEach(o=>{T.compile(o),o.remove()}))}),t.forEach(s=>{s.nodeType===1&&s.querySelectorAll&&s.querySelectorAll(".fez, :scope.fez").forEach(o=>{o.fez&&o.root&&(T.instances.delete(o.fez.UID),o.fez.fezOnDestroy())})})});qe.observe(document.documentElement,{childList:!0,subtree:!0});var yt=T;})();
|
|
28
28
|
//# sourceMappingURL=fez.js.map
|