diff --git a/index.js b/index.js index 2a846ad..2df4e09 100644 --- a/index.js +++ b/index.js @@ -1 +1 @@ -var e=Object.defineProperty,t="undefined"!=typeof window?window:{screen:{},navigator:{}},n=(t.matchMedia||function(){return{matches:!1}}).bind(t),o={get passive(){return!0}},r=function(){};t.addEventListener&&t.addEventListener("p",r,o),t.removeEventListener&&t.removeEventListener("p",r,!1);var i="ontouchstart"in t,s=i||"TouchEvent"in t&&n("(any-pointer: coarse)").matches,a=(t.navigator.maxTouchPoints||0)>0||s,l=t.navigator.userAgent||"",c=n("(pointer: coarse)").matches&&/iPad|Macintosh/.test(l)&&Math.min(t.screen.width||0,t.screen.height||0)>=768,u=(n("(pointer: coarse)").matches||!n("(pointer: fine)").matches&&i)&&!/Windows.*Firefox/.test(l),f=n("(any-pointer: fine)").matches||n("(any-hover: hover)").matches||c||!i,d=!a||!f&&u?a?"touchOnly":"mouseOnly":"hybrid",p="undefined"!=typeof window;document.createElement("template"),document.createRange&&document.createRange();var h=s?"pointer":"mouse",m=window.location.origin,{assign:g,keys:y,entries:v}=Object,b=Object.defineProperty,$=Object.defineProperties,w=Object.create,{isArray:k}=Array,A=Array.from,x="",{warn:E,info:C,error:N,debug:T}=console,q=()=>document.body,O=()=>document.head,S=e=>e?g(w(null),e):w(null),L=e=>new Set(e),P=()=>new Map,R=class extends XMLHttpRequest{constructor(){super(...arguments),this.key=null}};R.r=P(),R.f=P(),R.s=S();var I,W=S({index:"",eval:!0,patched:!1,loaded:!1,logLevel:2,qs:S(),config:S({fragments:["body"],timeout:3e4,globalThis:!0,schema:"spx-",manual:!1,logLevel:2,cache:!0,components:null,maxCache:100,reverse:!0,preload:null,annotate:!1,eval:S({script:null,style:null,link:null,meta:!1}),hover:S({trigger:"href",threshold:250}),intersect:S({rootMargin:"0px 0px 0px 0px",threshold:0}),proximity:S({distance:75,threshold:250,throttle:500}),progress:S({bgColor:"#111",barHeight:"3px",minimum:.08,easing:"linear",speed:200,threshold:500,trickle:!0,trickleSpeed:200})}),fragments:P(),components:S({u:P(),a:P(),p:L(),t:P(),l:(I={get:(e,t)=>W.components.a.get(e[t])},new Proxy(S(),I))}),events:S(),observe:S(),memory:S(),pages:S(),snaps:S(),resources:L()});function j(e,t,n){let o=W.logLevel,r="SPX ";if(k(t)&&(t=t.join(" ")),2!==e&&1!==e||1!==o&&2!==o){if(e<=3&&3===o)n?E(r+t,n):E(r+t);else if(5===e||4===e){n?N(r+t,n):N(r+t);try{throw 4===e?new TypeError(t):new Error(t)}catch(e){}}}else C(`${r}%c${t}`,`color: ${n||"#999"};`)}var M=/\b(?:append|prepend)/,H=/\s+/g,D=/^\b(?:true|false)$/i,U=/^\d*\.?\d+$/,X=/^(?:[.-]?\d*\.?\d+|NaN)$/,Y=/\b(?:intersect|hover|proximity)\b/,F=/\b(?:SCRIPT|STYLE|LINK)\b/,z=/\[(['"]?.*['"]?,?)\]/,B=/[xy]\s*|\d*\.?\d+/gi;function V(e){let t=e.replace(/\s+,/g,",").replace(/,\s+/g,",").replace(/['"]/g,x);return 91===t.charCodeAt(0)&&(/^\[\s*\[/.test(t)||/,/.test(t)&&/\]$/.test(t))&&(t=t.replace(/^\[/,x).replace(/\]$/,x)),t.split(/,|\|/)}function K(e,t){try{let n=(t||e).replace(/\\'|'/g,(e=>"\\"===e[0]?e:'"')).replace(/\[|[^\s[\]]*|\]/g,(e=>/[[\]]/.test(e)?e:e.split(",").map((e=>e.replace(/^(\w+)$/,'"$1"').replace(/^"([\d.]+)"$/g,"$1"))).join(","))).replace(/([a-zA-Z0-9_-]+)\s*:/g,'"$1":').replace(/:\s*([$a-zA-Z_-]+)\s*([,\]}])/g,':"$1"$2').replace(/,([\]}])/g,"$1").replace(/([a-zA-Z_-]+)\s*,/g,'"$1",').replace(/([\]},\s]+)?"(true|false)"([\s,{}\]]+)/g,"$1$2$3");return JSON.parse(n)}catch(n){return j(5,"Invalid JSON expression in attribute value: "+JSON.stringify(e||t,null,2),n),t}}function Z(e){return e[e.length-1]}function _(e){return e.replace(/\./g,"\\.").replace(/@/g,"\\@").replace(/:/g,"\\:")}function G(e){return function(e){return e.replace(/\s+/g," ").trim()}(e.replace(/[\s .]+/g,".")).replace(/\s+/g," ").trim().split(/[ ,]/)}function J(e){if(X.test(e))return"NaN"===e?NaN:+e;if(D.test(e))return"true"===e;let t=e.charCodeAt(0);return 123===t||91===t?K(e):e}function Q(e){return setTimeout((()=>e()),1)}function ee(){return Promise.resolve()}function te(){return(new Date).getTime()}function ne(e){return t=>!!t&&("string"==typeof t?t in e:t.every((t=>t in e)))}function oe(e,t){return!!e&&t in e}function re(e,t,n){return void 0!==t?(b(e,t,{get:()=>n}),e):(t,n,o)=>{if(oe(e,t))return;let r=()=>n;return b(e,t,o?g(o,{get:r}):{get:r})}}function ie(e){return oe(e,"target")?1===e.target.length&&"body"===e.target[0]?e.target:e.target.filter(((e,t,n)=>"body"!==e&&e!==x&&-1===e.indexOf(",")&&n.indexOf(e)===t)):1===W.config.fragments.length&&"body"===W.config.fragments[0]?["body"]:[]}function se(e){return 1===e.length&&"body"===e[0]?"body":0===e.length?null:e.join(",")}function ae(e){let t=typeof e;if("object"===t){for(let t in e)return!1;return!0}return"string"===t?void 0===e[0]:!!k(e)&&e.length>0}var le=function e(t=5){let n=Math.random().toString(36).slice(-t);return e.v.has(n)?e(t):(e.v.add(n),n)};function ce(e=2){return(t,n)=>{let o=t.length;return(o<1||t[o-1].length===e?t.push([n]):t[o-1].push(n))&&t}}function ue(e){return e[0].toLowerCase()+e.slice(1)}function fe(e){return e[0].toUpperCase()+e.slice(1)}function de(e){return/[A-Z]/.test(e)?e.replace(/(.{1})([A-Z])/g,"$1-$2").toLowerCase():e}function pe(e){return/[_-]/.test(ue(e))?e.replace(/([_-]+).{1}/g,((e,t)=>e[t.length].toUpperCase())):e}function he(e,t){let n="string"==typeof e?q().querySelectorAll(e):e,o=n.length;if(0!==o)for(let e=0;eme(e,t);let n=t.length;if(0!==n)for(let o=0;o100*(-1+e),s=(e,t,n)=>en?n:e,a=()=>{let e=t.shift();e&&e(a)},l=e=>{e=s(e,W.config.progress.minimum,1),o=1===e?null:e;let l=r||(n.style.setProperty("transform",`translateX(${i(o||0)}%)`),r=q().appendChild(n),n);(e=>{t.push(e),1===t.length&&a()})((t=>{l.style.setProperty("transform",`translateX(${i(e)}%)`),1===e?setTimeout((()=>{(()=>{let e=q();e.contains(r)?r.animate({opacity:["1","0"]},{easing:"ease-out",duration:100}).onfinish=()=>{e.removeChild(r),r=null}:r=null})(),t()}),2*W.config.progress.speed):setTimeout(t,W.config.progress.speed)}))},c=e=>{let t=o;return t?t<1?("number"!=typeof e&&(e=t>=0&&t<.2?.1:t>=.2&&t<.5?.04:t>=.5&&t<.8?.02:t>=.8&&t<.99?.005:0),t=s(t+e,0,.994),l(t)):void 0:f()},u=()=>{setTimeout((()=>{o&&(c(),u())}),W.config.progress.trickleSpeed)};function f(t){W.config.progress&&(e=setTimeout((()=>{o||l(0),W.config.progress.trickle&&u()}),t||0))}return{start:f,done:function(t){clearTimeout(e),(t||o)&&(c(.3+.5*Math.random()),l(1))},style:({bgColor:e,barHeight:t,speed:o,easing:r})=>{n.style.cssText=function(...e){return e.join(x)}("pointer-events:none;",`background-color:${e};`,`height:${t};`,"position:fixed;","display:block;","z-index:2147483647;","top:0;","left:0;","width:100%;","will-change:opacity,transform;",`transition:transform ${o}ms ${r};`)}}}();function ve(e,t){let n=e.name,o=t;t=ue(t||n),oe(e,"define")||(e.define={id:t,state:{},nodes:[]});let r=ne(e.define);return r("state")||(e.define.state={}),r("nodes")||(e.define.nodes=[]),r("id")||(e.define.id=t),t!==e.define.id&&(t=pe(e.define.id)),n!==o&&/^[A-Z]|[_-]/.test(e.define.id)&&j(3,[`Component identifer name "${e.define.id}" must use camelCase format.`,`The identifer has been converted to "${t}"`]),t}function be(e,t=!1){let{u:n}=W.components;for(let o in e){let r=e[o],i=t?o:ve(r,o);n.has(i)||(n.set(i,r),j(1,`Component ${r.name} registered using id: ${i}`,"#F48FB1"))}W.config.components||(W.config.components=!0)}function $e(e,t){let n=`:not([${e}${t}=false]):not([${e}link])`;switch(t.charCodeAt(0)){case 104:return`${n}:not([${e}proximity]):not([${e}intersect])`;case 105:return`${n}:not([${e}hover]):not([${e}proximity])`;case 112:return`${n}:not([${e}intersect]):not([${e}hover])`}}function we(e){return(new DOMParser).parseFromString(e,"text/html")}function ke(e){return(e||document).documentElement.outerHTML}function Ae(e){let t=e.indexOf("",t)+1,o=e.indexOf("{let r=e.apply(null,t);n?r instanceof Document?o=r.documentElement.outerHTML:"string"!=typeof o&&(o=!1!==r):o=!1!==r}),W.events[e]||[]),o}function Ee(e,t,n){return e in W.events||(W.events[e]=[]),W.events[e].push(n?t.bind(n):t)-1}function Ce(e,t){if(e in W.events){let n=W.events[e];if(n&&"number"==typeof t)n.splice(t,1),j(2,`Removed ${e} event listener (id: ${t})`),0===n.length&&delete W.events[e];else{let o=[];if(n&&t)for(let r=0,i=n.length;r{for(var o in n)e(t,o,{get:n[o],enumerable:!0})})(Ne,{connect:()=>at,disconnect:()=>lt,hook:()=>st,hookArguments:()=>ot,mount:()=>it,teardown:()=>rt});var Pe,Re,Ie=(Pe=class{constructor(e){this.state=S();let{t:t}=W.components,{scope:n}=$(this,{scope:{get:()=>Ie.scopes.get(e)},dom:{get:()=>t.get(n.dom)}}),o=`${W.config.schema}${n.instanceOf}`;if(this.state=new Proxy(S(),{set:(e,r,i)=>{let s=n.static.state[r],a="object"==typeof i||k(i)?JSON.stringify(i):`${i}`;if("object"==typeof s&&oe(s,"persist")&&s.persist?e[r]=n.state[r]=i:e[r]=i,a.trim()!==x&&this.dom){let e=this.dom.hasAttribute(`${o}:${r}`)?`${o}:${r}`:`${o}:${de(r)}`;a!==this.dom.getAttribute(`${o}:${r}`)&&this.dom.setAttribute(e,a)}if(r in n.binds){let{binds:e}=n;for(let n in e[r])e[r][n].value=a,t.has(e[r][n].dom)&&(t.get(e[r][n].dom).innerText=a)}return!0}}),ae(n.state))for(let e in n.static.state){let t,o,r=n.static.state[e];"object"==typeof r?(t=r.typeof,o=r.default):t=r,t===String?this.state[e]=o||x:t===Boolean?this.state[e]=o||!1:t===Number?this.state[e]=o?+o:0:t===Array?this.state[e]=o||[]:t===Object&&(this.state[e]=o||{}),n.state[e]=this.state[e]}else for(let e in n.static.state){if(!(e in n.state))if("object"==typeof n.static.state[e])n.state[e]=n.static.state[e].default;else switch(n.static.state[e]){case String:n.state[e]=x;break;case Boolean:n.state[e]=!1;break;case Number:n.state[e]=0;break;case Object:n.state[e]={};break;case Array:n.state[e]=[]}let t,r,i=n.static.state[e],s=de(e),a=this.dom.hasAttribute(`${o}:${s}`)?this.dom.getAttribute(`${o}:${s}`):this.dom.getAttribute(`${o}:${e}`),l=null!==a&&a!==x;"object"==typeof i?(t=i.typeof,r=l,l||(a=i.default)):t=i,`has${fe(e)}`in this.state||b(this.state,`has${fe(e)}`,{get:()=>l}),"string"==typeof a&&a.startsWith("window.")?this.state[e]=window[a.slice(7)]:t===String?this.state[e]=a||x:t===Boolean?this.state[e]=a||!1:t===Number?this.state[e]=a?+a:0:t===Array?this.state[e]=l?K(a):r?a:[]:t===Object&&(this.state[e]=l?K(a):r?a:{}),n.state[e]=this.state[e]}}get html(){return this.dom.closest("html")}},Pe.scopes=P(),Pe);function We(e,t,n,o){let r,i,s;for(e.firstElementChild&&(r=0,i=e.children[r],s=t.children[r]);i;)i&&(o.has(s)?(je(i,n,!0),o.delete(s)):s.hasAttribute(W.qs.e)&&i.setAttribute(W.qs.e,s.getAttribute(W.qs.e)),We(i,s,n,o)),i=e.children[++r],s=t.children[r]}function je(e,t,n=!1){let{t:o}=W.components;Te(e,(e=>{if("false"!==e.getAttribute("spx-snapshot")&&Xe(e.attributes)&&!e.hasAttribute(W.qs.e)){let r=t.shift();if(r||j(5,"Undefined reference, the snapshot record failed to align",e),o.has(r)){let i=e.getAttribute(W.qs.e),s=o.get(r).getAttribute(W.qs.e);if(i!==s&&e.setAttribute(W.qs.e,s),0===t.length)return!1===n&&(rn(e.ownerDocument.documentElement.outerHTML),j(1,`Snapshot ${W.page.key} updated for: ${W.page.snap}`)),!1}else j(5,"Undefined reference, the snapshot record failed to align",e)}}))}function Me(e,t){let n=S(),{t:o}=W.components;for(let e in t)t[e].schema in n||(n[t[e].schema]=[]),n[t[e].schema].push(t[e].dom);for(let t in n){if(`${t}s`in e)continue;if(t in e){e[t]=n[t];continue}let r=n[t];r.length>1?$(e,{[t]:{get:()=>o.get(r[0]),set(e){r=e}},[`${t}s`]:{get:()=>r.map((e=>o.get(e)))}}):b(e,t,{get:()=>o.get(r[0]),set(e){r=e}})}}function He({h:e,d:t,o:n,m:o}){let r=4===W.page.type,i=!r||0===W.page.type,s=[],{t:a,p:l,a:c,u:u,l:f}=W.components;for(let n in e)for(let d of e[n]){if(null===d.instanceOf){if(!(n in t))continue;d.instanceOf=t[n]}let e,p;if(5!==d.mounted||null===o&&!r)e=u.get(d.instanceOf),Ie.scopes.set(d.key,re(d,"static",e.define)),p=new e(d.key);else{let t=an();if(null!==d.alias&&d.alias in t?(p=t[d.alias][0],e=p.scope.static):d.instanceOf in t&&1===t[d.instanceOf].length&&(p=t[d.instanceOf][0],e=p.scope.static),!p){j(3,"Increment component instance failed as instance was undefined",d);continue}d.key=p.scope.key,d.ref=p.scope.ref,d.connect=p.scope.connect,d.mounted=2}if(ae(d.nodes)||Me(p,d.nodes),null===o&&"nodes"in e&&e.nodes.length>0)for(let t of e.nodes)re(p,`has${fe(t)}Node`,`${t}Node`in p);for(let e in d.events){let t;null!==o&&5===d.mounted?(t=p.scope.events[e]=d.events[e],f[e]=p.scope.key):t=d.events[e],Le(p,a.get(t.dom),t)}if(null===o||(null!==o||r)&&2===d.mounted){l.add(d.key),c.set(d.key,p),j(1,`Component ${d.static.id} (connect) mounted: ${d.key}`,"#6DD093");let e=-1;"connect"in p&&(s.push([d.key,"connect"]),i&&(p.scope.mounted=1,e=s.length-1)),"onmount"in p&&(e>-1?s[e].push("onmount"):s.push([d.key,"onmount"]))}}return i&&n.length>0&&Q((()=>je(W.snapDom.body,n))),s.length>0?it(s):Promise.resolve()}function De(){let e=[];for(let t of W.page.fragments){let n=document.getElementById(t);n?(W.fragments.set(t,n),e.push(t)):W.fragments.delete(t)}tn("fragments",e)}function Ue(e){for(let[t,n]of W.fragments)if(t===e.id||n.contains(e))return!0;return!1}function Xe(e){if("string"==typeof e)return e.indexOf("@")>-1||e===W.qs.E||e===W.qs.b||e===W.qs.N;for(let t=e.length-1;t>=0;t--)if(Xe(e[t].name))return!0;return!1}function Ye(e,t){Xe(e.attributes)&&(e.hasAttribute(W.qs.E)?function(e,t,n){let{u:o,t:r}=W.components,{h:i,d:s}=n,a=e.hasAttribute("id")?e.id.trim():null;n.n=le(),n.o.push(n.n),r.set(n.n,e);for(let r of function(e){return e.trim().replace(/\s+/," ").split(/[|, ]/).map(pe)}(t))if(o.has(r)){let t;r in i?(t=Z(i[r]),5===t.mounted?(Be(e,t.key,t.ref),t.dom=n.n,t.mounted=2,t.inFragment=Ue(e)):i[r].push(Ve(r,e,n))):i[r]=[Ve(r,e,n)],t=Z(i[r]),a&&!(a in s)&&(s[a]=r),Ge(e,n,r,t.alias)}else j(5,`Component does not exist in registry: ${r}`)}(e,e.getAttribute(W.qs.E),t):Ge(e,t,null,null))}function Fe(e=null){return S({d:S(),h:S(),n:null,o:[],m:e,U:e?S():null})}function ze(e,{h:t,d:n}){return e in t?Z(e in n?t[n[e]]:t[e]):e in n?Z(t[n[e]]):(t[e]=[Ve(e)],t[e][0])}function Be(e,t,n){W.components.l[n]=t;let o=e.getAttribute(W.qs.e),r=o?`${o},${n}`:n;return e.setAttribute(W.qs.e,r),n}function Ve(e,t,n){let{u:o}=W.components,r=le(),i=S({key:r,mounted:5,connect:!1,ref:`c.${r}`,state:S(),nodes:S(),events:S(),binds:S()});return t&&(Be(t,r,i.ref),i.dom=n.n,i.mounted=2,i.inFragment=Ue(t),t.hasAttribute("id")&&(i.alias=pe(t.id.trim()))),o.has(e)?(i.instanceOf=e,i.alias?o.has(i.alias)?j(5,[`Component alias "${i.alias}" matches a component identifer in the registry.`,"An alias reference must be unique and cannot match component names."]):n.d[i.alias]=e:i.alias=null):(i.alias=e||null,i.instanceOf=null,2===i.mounted&&(n.d[i.alias]=null)),i}function Ke(e,t,n,o){let r=S(),i=n.indexOf("{"),s=t.slice(W.config.schema.length),a=new AbortController;r.key=`e.${le()}`,r.dom=`${o.n}`,r.isWindow=s.startsWith("window:"),r.eventName=r.isWindow?s.slice(7):s,r.attached=!1,r.params=null,r.options={signal:a.signal};let l=n;if(i>-1){let e=n.slice(i,n.lastIndexOf("}",i)).match(/(passive|once)/g);null!==e&&(e.indexOf("once")>-1&&(r.options.once=!0),e.indexOf("passive")>-1&&(r.options.passive=!0)),l=n.slice(0,i)}let c=G(l);c.length>1&&j(3,`No more than 1 DOM Event listener method allowed in value: ${n}`);let[u,f]=c[0].split("."),d=ze(u,o);r.listener=a,r.method=f.trim(),d.events[r.key]=r,Be(e,d.key,r.key)}function Ze(e,t,n){for(let o of G(t)){let[t,r]=o.split("."),i=ze(t,n),s=Be(e,i.key,`n.${le()}`);i.nodes[s]=S({key:s,keyProp:r,dom:n.n,schema:`${r}Node`,isChild:2===i.mounted})}}function _e(e,t,n){for(let o of G(t)){let[t,r]=o.split("."),i=ze(t,n),s=Be(e,i.key,`b.${le()}`);r in i.binds||(i.binds[r]=S()),i.binds[r][s]=S({key:s,stateKey:r,value:e.innerText,dom:n.n,stateAttr:`${W.config.schema}${t}:${r}`,selector:`[${W.qs.e}*=${_(s)}]`,isChild:2===i.mounted})}}function Ge(e,t,n,o){null===n&&null===o&&(t.n=le(),t.o.push(t.n),W.components.t.set(t.n,e));for(let r=e.attributes.length-1;r>=0;r--){let{name:i,value:s}=e.attributes[r];if(n){let e=`${W.config.schema}${n}:`;o&&!i.startsWith(e)&&(e=`${W.config.schema}${o}:`),i.startsWith(e)&&(ze(n,t).state[pe(i.slice(e.length))]=s)}i.indexOf("@")>-1?Ke(e,i,s,t):i===W.qs.N?_e(e,s,t):i===W.qs.b&&Ze(e,s,t)}}function Je(e){let t=Fe();if(e){if(e instanceof Set){for(let n of e)Ye(n,t);return e.clear(),t}return Ye(e,t),t}Te(q(),(e=>Ye(e,t))),ae(t.h)||He(t)}function Qe(){Q((()=>{Re=void 0}))}function et(e,t){let{l:n,p:o,t:r}=W.components;for(let i of t){let t=n[i];if(!t)continue;let s=i.charCodeAt(0);if(99===s)o.add(t.scope.key),r.set(t.scope.dom,e),t.scope.mounted=2,j(1,`Component ${t.scope.static.id} mounted: ${t.scope.key}`,"#6DD093");else if(101===s)Le(t,e,t.scope.events[i]);else if(110===s)r.set(t.scope.nodes[i].dom,e);else if(98===s){let{binds:n}=t.scope;for(let t in n)if(i in n[t]){e.innerText=n[t][i].value,r.set(n[t][i].dom,e);break}}}}function tt(e,t,n){let{l:o,t:r,p:i}=W.components;for(let s of t){let t=o[s];if(!t)continue;let a=s.charCodeAt(0);if(99===a){i.delete(s),r.delete(t.scope.dom);let{scope:e}=t;for(let t in e.nodes)r.delete(e.nodes[t].dom);for(let t in e.binds)for(let n in e.binds[t])r.delete(e.binds[t][n].dom);for(let n in e.events)Se(t,e.events[n]);j(1,`Component ${t.scope.static.id} unmounted: ${t.scope.key}`,"#7b97ca"),e.mounted=4}else if(101===a)Se(t,t.scope.events[s]);else if(110===a){let o=t.scope.nodes[s];r.delete(o.dom),n&&e.isEqualNode(n)&&(Be(e,t.scope.key,s),Re.o.push(o.dom))}else if(98===a){let{binds:o}=t.scope;for(let i in o)if(s in o[i]){r.delete(o[i][s].dom),n&&e.isEqualNode(n)&&(Be(e,t.scope.key,s),Re.o.push(o[i][s].dom));break}}}}function nt(e){1!==e.nodeType&&11!==e.nodeType||e.hasAttribute(W.qs.e)&&tt(e,e.getAttribute(W.qs.e).split(","))}function ot(){return g(S(),{page:g(S(),W.page)})}function rt(){for(let e in W.components.l)delete W.components.l[e];for(let e of W.components.a.values())for(let t in e.scope.events)Se(e,e.scope.events[t]);W.components.t.clear(),W.components.a.clear(),W.components.p.clear(),j(2,"Component instances were disconnected")}function it(e){let{a:t}=W.components,n=ot(),o=[];for(let[r,i,s]of e){let e=t.get(r),a="mount";4===e.scope.mounted&&(a="unmount");let l=async()=>{try{return!e.scope.connect&&s&&1===e.scope.mounted?(await e[i](n),await e[s](n),e.scope.connect=!0):await e[i](n),void(e.scope.mounted=4===e.scope.mounted?5:3)}catch(e){}return j(3,`Component to failed to ${a}: ${e.scope.instanceOf} (${r})`),Promise.reject(r)};o.push(ee().then(l))}return Promise.race(o)}function st(e){let{p:t,a:n}=W.components,o=[];tn("components",A(t));for(let r of t){let t=n.get(r);e=4===t.scope.mounted?"unmount":"onmount",t&&e in t&&("onmount"===e&&!t.scope.connect&&"connect"in t?o.push([r,"connect",e]):3!==t.scope.mounted&&o.push([r,e]))}o.length>0&&it(o).catch((e=>{n.get(e).scope.mounted=5,t.delete(e)}))}function at(){W.config.components&&(W.observe.components||(0===W.page.type?Je():Re?He(Re).then(st).then(Qe):st(),W.observe.components=!0))}function lt(){W.observe.components&&(st("unmount"),W.observe.components=!1)}function ct(e,{method:t="GET",body:n=null,headers:o=null,type:r="text"}={}){return new Promise((function(i,s){let a=new R;if(a.key=e,a.responseType=r,a.open(t,e),a.setRequestHeader("spx-request","true"),null!==o)for(let e in o)a.setRequestHeader(e,o[e]);a.onloadstart=function(){R.r.set(this.key,a)},a.onload=function(){i(this.response)},a.onerror=function(){s(this.statusText)},a.onabort=function(){delete R.s[this.key],R.f.delete(this.key),R.r.delete(this.key)},a.onloadend=function(e){R.r.delete(this.key),W.memory.bytes=W.memory.bytes+e.loaded,W.memory.visits=W.memory.visits+1},a.send(n)}))}function ut(e){return!(e in R.s)||(clearTimeout(R.s[e]),delete R.s[e])}function ft(e,t,n){e in R.s||ln(e)||(R.s[e]=setTimeout(t,n))}function dt(e){for(let[t,n]of R.r)e!==t&&(n.abort(),j(3,`Pending request aborted: ${t}`))}async function pt(e){if(e.rev===e.key)return;let t=en(bn(e.rev,4));await new Promise((e=>setTimeout((()=>e()),1))),mt(t).then((t=>{t?j(2,`Reverse fetch completed: ${t.rev}`):j(3,`Reverse fetch failed: ${e.rev}`)}))}async function ht(e){if(!R.f.has(e.key))return e;let t=await R.f.get(e.key);return R.f.delete(e.key),delete R.s[e.key],nn(e,t)}async function mt(e){return R.r.has(e.key)&&7!==e.type?(4===e.type&&R.r.has(e.rev)?(R.r.get(e.rev).abort(),j(3,`Request aborted: ${e.rev}`)):j(3,`Request in transit: ${e.key}`),!1):xe("fetch",e)?(R.f.set(e.key,ct(e.key)),ht(e)):(j(3,`Request cancelled via dispatched event: ${e.key}`),!1)}function gt(e,t,n){e[n]!==t[n]&&(e[n]=t[n],e[n]?e.setAttribute(n,x):e.removeAttribute(n))}function yt(e,t){let{value:n}=t;e.value!==n&&(e.value=n);let{firstChild:o}=e;if(o){let{nodeValue:t}=o;if(t===n||!n&&t===e.placeholder)return;o.nodeValue=n}}function vt(e,t){if(e===t)return!0;let n=e.charCodeAt(0),o=t.charCodeAt(0);return n<=90&&o>=97?e===t.toUpperCase():o<=90&&n>=97&&t===e.toUpperCase()}function bt(e){return e&&"getAttribute"in e?e.getAttribute("id"):void 0}function $t(e,t,n,o=!0){nt(e),t&&t.removeChild(e),kt(e,o,n)}function wt(e,t,n){let o=bt(t);if(o&&n.i.delete(o),e.isEqualNode(t))return;let r=e.getAttribute(W.qs.m);"false"!==r&&("children"!==r&&function(e,t){if(11===t.nodeType||11===e.nodeType)return;let n,o,r,i,s,a=t.attributes,l=e.getAttribute(W.qs.e),c=t.getAttribute(W.qs.e),u=!1;for(let t=a.length-1;t>=0;t--)n=a[t],o=n.name,i=n.value,r=n.namespaceURI,r?(o=n.localName||o,s=e.getAttributeNS(r,o),s!==i&&("xmlns"===n.prefix&&(o=n.name),e.setAttributeNS(r,o,i))):(s=e.getAttribute(o),s!==i&&(e.setAttribute(o,i),!l&&!c&&!u&&(u=Xe(o))));let f=e.attributes;for(let s=f.length-1;s>=0;s--)n=f[s],o=n.name,i=n.value,r=n.namespaceURI,r?(o=n.localName||o,t.hasAttributeNS(r,o)||e.removeAttributeNS(r,o)):t.hasAttribute(o)||e.removeAttribute(o);(l||c||u)&&function(e,t,n,o){n&&(n=n.split(",")),o&&(o=o.split(",")),n&&o?(tt(e,n),et(e,o)):!n&&o?et(e,o):(Re?Re.m=e:Re=Fe(e),n&&!o&&tt(e,n,t),Xe(t.attributes)&&Ye(e,Re))}(e,t,l,c)}(e,t),"TEXTAREA"!==e.nodeName?function(e,t,n){let o,r,i,s,a,l,c=t.firstChild,u=e.firstChild;e:for(;c;){for(o=bt(c),r=c.nextSibling;u;){if(a=u.nextSibling,c.isEqualNode(u)){c=r,u=a;continue e}let t;if(i=bt(u),s=u.nodeType,s===c.nodeType&&(1===s?(o?o!==i&&((l=n.i.get(o))?a.isEqualNode(l)?t=!1:(e.insertBefore(l,u),i?n.c.add(i):$t(u,e,n),u=l,i=bt(u)):t=!1):i&&(t=!1),t=!1!==t&&vt(u.nodeName,c.nodeName),t&&wt(u,c,n)):(3===s||8===s)&&(t=!0,u.nodeValue!==c.nodeValue&&(u.nodeValue=c.nodeValue))),t){c=r,u=a;continue e}i?n.c.add(i):$t(u,e,n),u=a}o&&(l=n.i.get(o))&&vt(l.nodeName,c.nodeName)?(e.appendChild(l),wt(l,c,n)):(c.actualize&&(c=c.actualize(e.ownerDocument||document)),e.appendChild(c),At(c,n)),c=r,u=a}(function(e,t,n,o){for(;t;){let r=t.nextSibling;(n=bt(t))?o.c.add(n):$t(t,e,o),t=r}})(e,u,i,n),function(e,t){switch(e.nodeName){case"INPUT":!function(e,t){gt(e,t,"checked"),gt(e,t,"disabled"),e.value!==t.value&&(e.value=t.value),t.hasAttribute("value")||e.removeAttribute("value")}(e,t);break;case"OPTION":!function(e,t){let n=e.parentNode;if(n){let o=n.nodeName.toUpperCase();"OPTGROUP"===o&&(n=n.parentNode,o=n&&n.nodeName.toUpperCase()),"SELECT"===o&&!n.hasAttribute("multiple")&&(e.hasAttribute("selected")&&!t.selected&&(e.setAttribute("selected","selected"),e.removeAttribute("selected")),n.selectedIndex=-1)}gt(e,t,"selected")}(e,t);break;case"SELECT":!function(e,t){if(!t.hasAttribute("multiple")){let t,n,o=0,r=-1,i=e.firstElementChild;for(;i;)if(n=i.nodeName&&i.nodeName.toUpperCase(),"OPTGROUP"===n)t=i,i=t.firstElementChild;else{if("OPTION"===n){if(i.hasAttribute("selected")){r=o;break}o++}i=i.nextElementSibling,!i&&t&&(i=t.nextElementSibling,t=null)}e.selectedIndex=r}}(e,t);break;case"TEXTAREA":yt(e,t)}}(e,t)}(e,t,n):yt(e,t))}function kt(e,t,n){if(1!==e.nodeType)return;let o=e.firstChild;for(;o;){let e;t&&(e=bt(o))?n.c.add(e):(nt(o),o.firstChild&&kt(o,t,n)),o=o.nextSibling}}function At(e,t){(1===e.nodeType||11===e.nodeType)&&function(e){e.hasAttribute(W.qs.e)?et(e,e.getAttribute(W.qs.e).split(",")):Xe(e.attributes)&&(Re?Re.m=e:Re=Fe(e),Ye(e,Re))}(e);let n=e.firstChild;for(;n;){let e=n.nextSibling,o=bt(n);if(o){let e=t.i.get(o);e&&vt(n.nodeName,e.nodeName)?(n.parentNode.replaceChild(e,n),wt(e,n,t)):At(n,t)}else At(n,t);n=e}}function xt(e,t){if(1===e.nodeType||11===e.nodeType){let n=e.firstChild;for(;n;){let e=bt(n);e&&t.i.set(e,n),xt(n,t),n=n.nextSibling}}}function Et(e,t){let n=t.cloneNode(!0),o=S({c:L(),i:P()});11===n.nodeType&&(n=n.firstElementChild),xt(e,o);let r=e,i=r.nodeType,s=n.nodeType;if(1===i)1===s?vt(e.nodeName,n.nodeName)||(nt(e),r=function(e,t){let n,o=e.firstChild;for(;o;)n=o.nextSibling,t.appendChild(o),o=n;return t}(e,function(e,t){return t&&"http://www.w3.org/1999/xhtml"!==t?document.createElementNS(t,e):document.createElement(e)}(n.nodeName,n.namespaceURI))):r=n;else if(3===i||8===i){if(s===i)return r.nodeValue!==n.nodeValue&&(r.nodeValue=n.nodeValue),r;r=n}if(r.isEqualNode(n))nt(e);else{if(n.isEqualNode(r))return r;if(wt(r,n,o),o.c.size>0)for(let e of o.c)if(o.i.has(e)){let t=o.i.get(e);$t(t,t.parentNode,o,!1)}}return r!==e&&e.parentNode&&(r.actualize&&(r=r.actualize(e.ownerDocument||document)),e.parentNode.replaceChild(r,e)),o.i.clear(),o.c.clear(),r}function Ct(e,t){if(!(e instanceof Element))return!1;let n=e.closest(t);return!(!n||"A"!==n.tagName)&&n}function Nt(e){if("A"!==e.nodeName)return!1;let t=e.getAttribute("href");return!(!t||!mn(t))&&!1===ln(gn(t))}var Tt,qt=e=>{let t=[];return he(e,(e=>{Nt(e)&&t.push(e)})),t};function Ot(e){let t=Ct(e.target,W.qs.g);if(!t)return;let n=bn(t,10);if(ln(n.key)||n.key in R.s)return;t.addEventListener(`${h}leave`,St,{once:!0});let o=en(n),r=o.threshold||W.config.hover.threshold;ft(n.key,(function(){xe("prefetch",t,n)&&mt(o).then((function(){delete R.s[n.key],Pt(t)}))}),r)}function St(e){let t=Ct(e.target,W.qs.g);t&&ut(gn(t.href))}function Lt(e){e.addEventListener(`${h}enter`,Ot)}function Pt(e){e.removeEventListener(`${h}enter`,Ot),e.removeEventListener(`${h}leave`,St)}function Rt(){!W.config.hover||W.observe.hover||(me(Lt,qt(W.qs.g)),W.observe.hover=!0)}function It(){W.observe.hover&&(me(Pt,qt(W.qs.g)),W.observe.hover=!1)}async function Wt(e){if(e.isIntersecting){let t=bn(e.target,11);if(!xe("prefetch",e.target,t))return Tt.unobserve(e.target);await mt(en(t))?Tt.unobserve(e.target):(j(3,`Prefetch will retry at next intersect for: ${t.key}`),Tt.observe(e.target))}}function jt(){if(!W.config.intersect||W.observe.intersect)return;Tt||(Tt=new IntersectionObserver(me(Wt),W.config.intersect));let e=me((e=>Tt.observe(e))),t=function(e,t){let n=[];return he(e,(e=>{if("A"!==e.nodeName)he(e.querySelectorAll(t),(e=>{Nt(e)&&n.push(e)}));else if(e.hasAttribute("href")){let{href:t}=e;mn(t)&&ln(gn(t))&&n.push(e)}})),n}(W.qs.L,W.qs.H);e(t),W.observe.intersect=!0}function Mt(){W.observe.intersect&&(Tt.disconnect(),W.observe.intersect=!1)}var Ht,Dt=new MutationObserver((function([e]){if("childList"!==e.type)return;let t=e.addedNodes.length;if(t||e.removedNodes.length>0){let n=t?e.addedNodes[0]:e.removedNodes[0];if(1!==n.nodeType)return;W.eval&&F.test(n.nodeName)?"HEAD"===n.parentNode.nodeName?function(e,t){let{page:n,dom:o}=function(e){if(!e){if(null===Kt.state)return void j(3,"Missing history state reference, page cannot be returned");e=Kt.state.key}if(e in W.pages)return $(S(),{page:{get:()=>W.pages[e]},dom:{get:()=>we(W.snaps[W.pages[e].snap])}});j(5,`No record exists: ${e}`)}(W.page.key),r=114===e.charCodeAt(0)?"removed":"appended";o.head.contains(t)?(o.head[e](t),W.snaps[n.snap]=o.documentElement.outerHTML,j(1,`Snapshot record was updated. Node ${r} from `,t)):j(3,"Node does not exists in snapshot record, no mutation applied",t)}(t?"appendChild":"removeChild",n):function(e){let t=q().querySelectorAll(`${W.page.target.join(",")},[${W.qs.y}]`);for(let n=0,o=t.length;n0&&(Ht=function(e){let t=!1;return n=>{if(t)return;t=!0;let o=e.findIndex((e=>function({clientX:e,clientY:t},n){return e<=n.right&&e>=n.left&&t<=n.bottom&&t>=n.top}(n,e)));if(-1===o)setTimeout((()=>{t=!1}),W.config.proximity.throttle);else{let{target:n}=e[o],r=en(bn(n,12)),i=r.threshold||W.config.proximity.threshold;ft(r.key,(async()=>{if(!xe("prefetch",n,r))return zt();await mt(r)&&(e.splice(o,1),t=!1,0===e.length&&(zt(),j(2,"Proximity observer disconnected")))}),i)}}}(e),addEventListener(`${h}move`,Ht,{passive:!0}),W.observe.proximity=!0)}function zt(){W.observe.proximity&&(removeEventListener(`${h}move`,Ht),W.observe.proximity=!1)}function Bt(e,t){let n=q();if("body"===e.selector||0===e.fragments.length){let e=t.body;Et(n,e),Re&&Re.o.length>0&&Q((()=>{je(e,Re.o),tn("type",6)}))}else if(null!==e.selector){let o=n.querySelectorAll(e.selector),r=t.body.querySelectorAll(e.selector),i=L();for(let e=0,t=o.length;e0&&Q((()=>{We(t.body,n,Re.o,i),tn("type",6),i.clear()}))}else for(let n of e.fragments){let e=W.fragments.get(n),o=t.getElementById(n);!o||!e||xe("render",e,o)&&(e.isEqualNode(o)||(Et(e,o),Re&&Re.o.length>0&&Q((()=>{je(o,Re.o),tn("type",6)}))))}}function Vt(e){It(),Mt(),zt(),Xt(),lt(),De(),W.eval||(document.title=e.title);let t=sn(e.snap);return 7===e.type?function(e,t){let n=e.hydrate;if(1===n.length&&"body"===n[0])return void Et(q(),t.body);let o=n.join(","),r=q().querySelectorAll(o),i=e.preserve&&e.preserve.length>0?e.preserve.join(","):null,s=[];if(i){let e=q().querySelectorAll(i);for(let t=0,n=e.length;t0){let e=t.body.querySelectorAll(o);for(let t=0,n=r.length;t{j(3,`Resource <${n.nodeName.toLowerCase()}> failed:`,n),e()})),n.addEventListener("load",(()=>e()))}));i.push(e)}e.appendChild(n),o.delete(t)}for(let t=0,o=n.length;t{Rt(),jt(),Ft(),at(),Ut()})),xe("load",e),e}var Kt=window.history;function Zt(e){if(null==Kt.state||"object"!=typeof Kt.state)return!1;let t=ne(Kt.state)(["key","rev","scrollX","scrollY","title"]);return"string"==typeof e?t&&Kt.state.key===e:t}async function _t(){await ee(),W.loaded=!0}function Gt({key:e,rev:t,title:n,scrollX:o,scrollY:r}){let i={key:e,rev:t,scrollX:o,scrollY:r,title:n||document.title};return Kt.replaceState(i,i.title,i.key),j(1,`History replaceState: ${Kt.state.key}`),Kt.state}function Jt({key:e,rev:t,title:n,location:o}){let r=o.pathname+o.search,i={key:e,rev:t,title:n,scrollY:0,scrollX:0};return Kt.pushState(i,i.title,r),j(1,`History pushState: ${Kt.state.key}`),Kt.state}async function Qt(e){if(null!==e.state)if(ln(e.state.key)){!ln(e.state.rev)&&e.state.rev!==e.state.key&&pt(e.state.rev);let t=W.pages[e.state.key];4===t.type?j(1,`History popState reverse (snapshot): ${t.key}`):j(1,`History popState session (snapshot): ${t.key}`),tn("type",5),Vt(t)}else{j(1,`History popState fetch: ${e.state.key}`),rt(),e.state.type=5;let t=await mt(e.state);if(!t)return location.assign(e.state.key);let n=gn(location);if(t.key===n)Vt(t);else if(ln(n))Vt(W.pages[n]);else{rt();let e=en(bn(n,5));await mt(e),Jt(e)}}}function en(e){let t=ne(e);return e.ts=te(),e.target=ie(e),t("selector")||("body"===e.target[0]?e.selector="body":e.selector=se(e.target)),W.config.cache&&(t("cache")||(e.cache=W.config.cache),t("snap")||(e.snap=le())),t("scrollY")||(e.scrollY=0),t("scrollX")||(e.scrollX=0),!1!==W.config.hover&&10===e.type&&(t("threshold")||(e.threshold=W.config.hover.threshold)),!1!==W.config.proximity&&12===e.type&&(t("proximity")||(e.proximity=W.config.proximity.distance),t("threshold")||(e.threshold=W.config.proximity.threshold)),W.config.progress&&!t("progress")&&(e.progress=W.config.progress.threshold),t("fragments")||(e.fragments=W.config.fragments),t("history")||(e.history=!0),t("visits")||(e.visits=0),t("components")||(e.components=[]),W.pages[e.key]=e,W.pages[e.key]}function tn(e,t,n=Kt.state.key){return"location"===e?W.pages[n][e]=g(W.pages[n][e],t):"target"===e?(W.pages[n].target=ie(t),W.pages[n].selector=se(W.pages[n].target)):"components"===e?W.pages[n].components=t:W.pages[n][e]=t,W.pages[n]}function nn(e,t){let n=xe("before:cache",e,t),o="string"==typeof n?n:t;return e.type>5&&e.type>9&&(e.type=1),e.title=Ae(t),W.config.cache&&!1!==n?"snap"in e?(W.pages[e.key]=e,W.snaps[e.snap]=o,function(e){6!==e.type&&Q((()=>{let t=sn(e.snap),n="body"!==e.selector&&null!==e.selector?`${e.target.join()},${W.qs.T}`:W.qs.T,o=t.body.querySelectorAll(n),r=0===e.type?q().querySelectorAll(n):null;he(o,((t,n)=>{if(t.hasAttribute("id")){if(t.id.startsWith("t."))return}else t.setAttribute("id",`t.${le()}`),null!==r&&r[n].setAttribute("id",`t.${le()}`);e.fragments.push(t.id)})),rn(t.documentElement.outerHTML,e.snap)}))}(e),xe("after:cache",e),e):on(e,o):e}function on(e,t){let n=e.key in W.pages?W.pages[e.key]:en(e);return"string"==typeof t&&(W.snaps[n.snap]=t,e.title=Ae(t)),g(n,e)}function rn(e,t){let n=t=t?47===t.charCodeAt(0)?t in W.pages?W.pages[t].snap:null:t:W.page.snap;n?W.snaps[n]=e:j(3,"Snapshot record does not exist, update failed")}function sn(e){let t=e=e?47===e.charCodeAt(0)?W.pages[e].snap:e:W.page.snap;return we(W.snaps[t])}function an({mounted:e=null}={}){let t=S(),{a:n,p:o}=W.components;for(let r of n.values()){let{scope:n}=r;o.has(n.key)&&(null!==e&&n.mounted===e||(null===n.alias||n.alias in t?n.instanceOf in t?t[n.instanceOf].push(r):t[n.instanceOf]=[r]:t[n.alias]=[r]))}return t}function ln(e){return oe(W.pages,e)&&oe(W.pages[e],"snap")&&oe(W.snaps,W.pages[e].snap)&&"string"==typeof W.snaps[W.pages[e].snap]}function cn(e){e?"string"==typeof e?(delete W.snaps[W.pages[e].snap],delete W.pages[e]):k(e)&&me((e=>{delete W.snaps[W.pages[e].snap],delete W.pages[e]}),e):(ge(W.pages),ge(W.snaps))}var un=m.replace(/(?:https?:)?(?:\/\/(?:www\.)?|(?:www\.))/,x);function fn(e,t){let n=t?function(e){let t=g(S(e),{target:[],selector:null,cache:W.config.cache,history:!0,scrollX:0,scrollY:0,fragments:W.config.fragments});return W.config.hover&&(t.threshold=W.config.hover.threshold),W.config.proximity&&(t.proximity=W.config.proximity.distance,t.threshold=W.config.proximity.threshold),W.config.progress&&(t.progress=W.config.progress.threshold),t}(t):S(),o=e.getAttributeNames();for(let r=0,i=o.length;r, expected: y:number or x:number`,e);else"scroll"===t?U.test(r)?n.scrollY=+r:j(3,`Invalid attribute value on <${i}>, expected: number`,e):D.test(r)&&!Y.test(i)?n[t]="true"===r:X.test(r)?n[t]=+r:("history"===t&&"push"!==r&&"replace"!==r&&j(5,`Invalid attribute value on <${i}>, expected: false, push or replace`,e),n[t]=r)}}}return n}function dn(e){let t=S();if(1===e.length&&47===e.charCodeAt(0))return t.pathname=e,t.hash=x,t.search=x,t;let n=e.indexOf("#");n>=0?(t.hash=e.slice(n),e=e.slice(0,n)):t.hash=x;let o=e.indexOf("?");return o>=0?(t.search=e.slice(o),e=e.slice(0,o)):t.search=x,t.pathname=e,t}function pn(e,t){let n=e.indexOf("/",t);if(n>t){let t=e.indexOf("#",n);return t<0?e.slice(n):e.slice(n,t)}let o=e.indexOf("?",t);if(o>t){let t=e.indexOf("#",o);return t<0?e.slice(o):e.slice(o,t)}return e.length-t===un.length?"/":null}function hn(e){let t=e.startsWith("www.")?e.slice(4):e,n=t.indexOf("/");if(n>=0){let e=t.slice(n);if(t.slice(0,n)===un)return e.length>0?dn(e):dn("/")}else{let e=t.search(/[?#]/);if(e>=0){if(t.slice(0,e)===un)return dn("/"+t.slice(e))}else if(t===un)return dn("/")}return null}function mn(e){if("string"!=typeof e||0===e.length)return!1;if(47===e.charCodeAt(0))return 47!==e.charCodeAt(1)||(e.startsWith("www.",2)?e.startsWith(un,6):e.startsWith(un,2));if(63===e.charCodeAt(0))return!0;if(e.startsWith("www."))return e.startsWith(un,4);if(e.startsWith("http")){let t=e.indexOf("/",4)+2;return e.startsWith("www.",t)?e.startsWith(un,t+4):e.startsWith(un,t)}}function gn(e){if("object"==typeof e)return e.pathname+e.search;if(e===x||"/"===e)return"/";let t=function(e){return e.startsWith("http")?1:e.startsWith("//")?2:e.startsWith("www.")?3:1}(e);if(1===t){let t=115===e.charCodeAt(4)?8:7,n=e.startsWith("www.",t)?t+4:t;return e.startsWith(un,n)?pn(e,n):null}if(2===t){let t=e.startsWith("www.",2)?6:2;return e.startsWith(un,t)?pn(e,t):null}return 3===t?e.startsWith(un,4)?pn(e,4):null:e.startsWith(un,0)?pn(e,0):null}function yn(){let{pathname:e,search:t,hash:n}=location;return S({hostname:un,origin:m,pathname:e,search:t,hash:n})}function vn(e){if(e===x)return yn();let t=function(e){return 47===e.charCodeAt(0)?47!==e.charCodeAt(1)?dn(e):hn(e.slice(2)):63===e.charCodeAt(0)?dn(location.pathname+e):e.startsWith("https:")||e.startsWith("http:")?hn(e.slice(e.indexOf("/",4)+2)):e.startsWith("www.")?hn(e):null}(e);return null===t&&j(5,`Invalid pathname: ${e}`),t.origin=m,t.hostname=un,t}function bn(e,t=6){if(e instanceof Element){let n=fn(e);return n.type=t||6,n}let n=S();return 0===e?(n.location=yn(),n.key=n.rev=gn(n.location),n.type=e,n.visits=1,W.index=n.key):7===t?(n.location=vn(e),n.key=n.rev=gn(n.location),n.type=t):(n.rev=location.pathname+location.search,n.location=vn("string"==typeof e?e:n.rev),n.key=gn(n.location),n.type=t),n}var $n=function(e){if(!function(e){return!(e.target&&e.target.isContentEditable||e.defaultPrevented||e.button>1||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)}(e))return;let t=Ct(e.target,W.qs.C);if(!t)return;let n=gn(t.href);if(null===n)return;let o=n===W.page.key,r=()=>{j(3,`Drag occurance deteced, cancelled visit: ${n}`),$n.drag=!0,t.removeEventListener(`${h}move`,r)};if(t.addEventListener(`${h}move`,r,{once:!0}),!0===$n.drag)return $n.drag=!1,$n(e);if(t.removeEventListener(`${h}move`,r),!xe("visit",e))return;let i=(e,t=!0)=>{W.pages[e.key].ts=te(),W.pages[e.key].visits=e.visits+1,W.pages[e.rev].scrollX=window.scrollX,W.pages[e.rev].scrollY=window.scrollY,st("onvisit"),o?(j(1,`URL Pathname matches current route: ${n}`),Vt(e)):(Gt(W.pages[e.rev]),t?(Jt(e),Vt(e)):wn(e))};if(It(),zt(),Mt(),ln(n)){let e=on(fn(t,W.pages[n]));t.onclick=t=>{t.preventDefault(),i(e)}}else if(R.f.has(n)){dt(n),j(2,`Request in transit: ${n}`);let e=W.pages[n];t.onclick=t=>{t.preventDefault(),i(e,!1)}}else{dt(),ut(n);let e=en(bn(t,6));mt(e),t.onclick=t=>{t.preventDefault(),i(e,!1)}}};async function wn(e){e.progress&&ye.start(e.progress);let t=await ht(e);t?(Jt(t),Vt(t)):location.assign(e.key)}async function kn(e,t){if(!t)return wn(W.pages[e]);{"string"==typeof t.cache&&("clear"===t.cache?cn():cn(t.key)),t.progress&&ye.start(t.progress);let e=await mt(t);e?(Jt(e),Vt(e)):location.assign(t.key)}}var An=S({$:W,Component:Ie,on:Ee,off:Ce,observe:function(){It(),Rt(),Mt(),jt(),zt(),Ft(),lt(),at(),Xt(),Ut()},connect:function(e={}){if(!1===p)return j(5,"Invalid runtime environment: window is undefined.");if(!An.supported)return j(5,"Browser does not support SPX");if(!window.location.protocol.startsWith("http"))return j(5,"Invalid protocol, SPX expects HTTPS or HTTP protocol");(function(e=S()){(function(){if(W.patched)return;W.patched=!0;let e=Element.prototype.setAttribute,t=document.createElement("i");Element.prototype.setAttribute=function(n,o){if(n.indexOf("@")<0)return e.call(this,n,o);t.innerHTML=``;let r=t.firstElementChild.getAttributeNode(n);t.firstElementChild.removeAttributeNode(r),this.setAttributeNode(r)}})(),$(W,{ready:{get:()=>"complete"===document.readyState},types:{get:()=>S({INITIAL:0,PREFETCH:1,FETCH:2,PRELOAD:3,REVERSE:4,POPSTATE:5,VISIT:6,HYDRATE:7,CAPTURE:8,RELOAD:9,HOVER:10,INTERSECT:11,PROXIMITY:12})}}),"components"in e&&(be(e.components),delete e.components),g(W.config,function(e){for(let t of["hover","intersect","proximity","progress"])oe(e,t)&&(!1===e[t]?W.config[t]=!1:"object"==typeof e[t]&&g(W.config[t],e[t]),delete e[t]);return e}(e));let t=W.config.schema,n="spx"===t?"spx":t.endsWith("-")?t:null===t?x:`${t}-`,o=`:not([${n}disable]):not([href^=\\#])`,r=`not([${n}eval=false])`,i=function(e,t,n){if("eval"in e)if(e.eval){if("object"==typeof e.eval){let t=g(W.config.eval,e.eval);W.eval=!!(t.link||t.meta||t.script||t.style)}}else W.eval=!1;return e=>{if(!1===W.eval||!1===W.config.eval[e])return`${e}[${t}eval]:${n}`;if(!0===W.config.eval[e])return`${e}:${n}`;let o="link"===e?`${e}[rel=stylesheet]:${n}`:"script"===e?`${e}:${n}:not([${t}eval=hydrate])`:`${e}:${n}`;return null===W.config.eval[e]?o:k(W.config.eval[e])?W.config.eval[e].length>0?W.config.eval[e].map((e=>`${e}:${n}`)).join(","):(j(3,`Missing eval ${e} value, SPX will use defaults`),o):void j(4,`Invalid eval ${e} value, expected boolean or array`)}}(e,n,r);W.config.fragments=function(e){let t=[];if(!("fragments"in e&&k(e.fragments)&&e.fragments.length>0))return["body"];for(let n of e.fragments){let e=n.charCodeAt(0);46!==e&&91!==e?35===e?t.push(n.slice(1).trim()):t.push(n.trim()):j(3,[`Invalid fragment selector "${n}" provided. Fragments must be id annotated values.`,"Use spx-target attributes for additional fragment selections."])}return t}(e),W.config.schema=n,W.config.index=null,W.memory.bytes=0,W.memory.visits=0,W.memory.limit=W.config.maxCache,g(W.qs,{R:new RegExp(`^href|${n}(hydrate|append|prepend|target|progress|threshold|scroll|position|proximity|hover|cache|history)$`,"i"),k:new RegExp(`${n}(?:node|bind|component)|@[a-z]|[a-z]:[a-z]`,"i"),O:new RegExp(`^${n}[a-zA-Z0-9-]+:`,"i"),y:`${n}target`,T:`[${n}target]:not([${n}target=false])`,m:`${n}morph`,P:`${n}eval`,L:`[${n}intersect]${$e(n,"intersect")}`,I:`[${n}track]:not([${n}track=false])`,E:`${n}component`,b:`${n}node`,N:`${n}bind`,e:"data-spx",C:W.config.annotate?`a[${n}link]${o}`:`a${o}`,M:i("script"),S:i("style"),w:i("link"),q:i("meta"),D:`script[${n}eval=hydrate]:${r}`,W:`link[rel=stylesheet][href*=\\.css]:${r},script[src*=\\.js]:${r}`,x:`${n}data:`,A:`a[${n}proximity]${o}${$e(n,"proximity")}`,H:`a${o}${$e(n,"intersect")}`,g:!1!==W.config.hover&&"href"===W.config.hover.trigger?`a${o}${$e(n,"hover")}`:`a[${n}hover]${o}${$e(n,"hover")}`}),ye.style(W.config.progress)})(e),W.config.globalThis&&!1===oe(window,"spx")&&re(window,"spx",An);let t=function(){let e=function(e){if(!W.observe.history)return Kt.scrollRestoration&&(Kt.scrollRestoration="manual"),addEventListener("popstate",Qt,!1),W.observe.history=!0,"object"==typeof e&&0===e.type?function(e){return Zt(e.key)?(scrollTo(Kt.state.scrollX,Kt.state.scrollY),g(e,Kt.state)):Gt(e),e}(e):e}(en(bn(0)));$(W,{prev:{get:()=>W.pages[Kt.state.rev]},page:{get:()=>W.pages[Kt.state.key]},snapDom:{get:()=>we(W.snaps[W.page.snap])}});let t=()=>{let t=nn(e,ke());return W.observe.hrefs||($n.drag=!1,"mouseOnly"===d?addEventListener(`${h}down`,$n,!1):("touchOnly"===d||addEventListener(`${h}down`,$n,!1),addEventListener("touchstart",$n,!1)),W.observe.hrefs=!0),De(),!1===W.config.manual&&(Rt(),jt(),Ft(),at(),Ut()),Q((()=>{tn("type",6),pt(t),function(e){if(null!==W.config.preload){if(k(W.config.preload)){let e=W.config.preload.filter((e=>{let t=bn(e,3);return t.key!==e&&mt(en(t))}));return Promise.allSettled(e)}if("object"==typeof W.config.preload&&oe(W.config.preload,e.key)){let t=W.config.preload[e.key].map((e=>mt(en(bn(e,3)))));Promise.allSettled(t)}}}(t)})),xe("x"),t};return new Promise((e=>{let{readyState:n}=document;if("interactive"===n||"complete"===n)return e(t());addEventListener("DOMContentLoaded",(()=>e(t())))}))}();return async function(e){let n=await t;if("AsyncFunction"===e.constructor.name)try{await e(n)}catch(e){j(3,"Connection Error",e)}else e(n);j(2,"Connection Established")}},component:function(e){return an()[e][0]},capture:function(e){let t=function(e){if(!e){if(null===Kt.state)return void j(3,"Missing history state reference, page cannot be returned");e=Kt.state.key}if(e in W.pages)return W.pages[e];j(5,`No page record exists for: ${e}`)}();if(!t)return;let n=sn();if(1===(e=k(e)?e:t.target).length&&"body"===e[0])return Et(n.body,q()),void on(t,ke(n));let o=e.join(","),r=q().querySelectorAll(o);he(n.body.querySelectorAll(o),((e,t)=>{Et(e,r[t])})),on(t,ke(n))},form:async function(e,t){let n=new FormData;for(let e in t.data)n.append(e,t.data[e]);return await ct(e,{method:t.method,body:n})},render:async function(e,t,n){let o=W.page,r=bn(e);r.location.origin!==m&&j(5,"Cross origin fetches are not allowed");let i=await ct(r.key,{type:"document"});if(i||j(5,`Fetch failed for: ${r.key}`,i),await n.call(o,i),"replace"===t){o.title=i.title;let e=on(g(o,r),ke(i));return Gt(e),e}return Vt(nn(r,ke(i)))},session:function(){return $(S(),{config:{get:()=>W.config},snaps:{get:()=>W.snaps},pages:{get:()=>W.pages},observers:{get:()=>W.observe},components:{get:()=>W.components},fragments:{get:()=>W.fragments},memory:{get(){let e=W.memory;return e.size=function(e){return e<1024?e+" B":e<1048576?(e/1024).toFixed(1)+" KB":e<1073741824?(e/1048576).toFixed(1)+" MB":(e/1073741824).toFixed(1)+" GB"}(e.bytes),e}}})},reload:async function(){let e=W.pages[Kt.state.key];e.type=9;let t=await mt(e);return t?(j(2,"Triggered reload, page was re-cached"),Vt(t)):(j(3,"Reload failed, triggering refresh (cache will purge)"),location.assign(e.key))},fetch:async function(e){let t=bn(e,2);t.location.origin!==m&&j(5,"Cross origin fetches are not allowed");let n=await ct(t.key);if(n)return n},clear:cn,hydrate:async function(e,t){let n=bn(e,7);if(mt(n),k(t)){n.hydrate=[],n.preserve=[];for(let e of t)33===e.charCodeAt(0)?n.preserve.push(e.slice(1)):n.hydrate.push(e)}else n.hydrate=W.config.fragments;let o=await ht(n);if(o){let{key:e}=Kt.state;if(Gt(o),Vt(o),n.key!==e){W.index===e&&(W.index=n.key);for(let t in W.pages)W.pages[t].rev===e&&(W.pages[t].rev=n.key);cn(e)}}return sn(o.key)},prefetch:async function(e){let t=bn(e,1);if(ln(t.key))return void j(3,`Cache already exists for ${t.key}, prefetch skipped`);let n=await mt(en(t));if(n)return n;j(5,`Prefetch failed for ${t.key}`)},visit:async function(e,t){let n=bn(e),o="object"==typeof t?g(n,t):n;return ln(n.key)?kn(n.key,on(o)):kn(n.key,en(o))},disconnect:function(){W.observe.history&&(Kt.scrollRestoration&&(Kt.scrollRestoration="auto"),removeEventListener("popstate",Qt,!1),removeEventListener("load",_t,!1),W.observe.history=!1),W.observe.hrefs&&("mouseOnly"===d?removeEventListener(`${h}down`,$n,!1):("touchOnly"===d||removeEventListener(`${h}down`,$n,!1),removeEventListener("touchstart",$n,!1)),W.observe.hrefs=!1),Xt(),It(),Mt(),zt(),W.config.components&&(lt(),rt(),W.components.u.clear()),cn(),W.config.globalThis&&delete window.spx,j(2,"Disconnected")},register:function(...e){if("string"==typeof e[0])e.length>2&&j(5,[`Named component registration expects 2 parameters, recieved ${e.length}.`,'Registry should follow this structure: spx.register("identifer", YourComponent)'],e),be({[Ne[0]]:e[1]});else for(let t of e)if(k(t))for(let e of t)"string"==typeof e[0]?be({[e[0]]:e[1]}):"function"==typeof e&&be({[ve(e)]:e},!0);else{let e=typeof t;"function"===e?be({[ve(t)]:t},!0):"object"===e&&be(t)}W.ready?at():Ee("x",(function e(){at(),Ce("x",e)}))},get config(){return W.config},supported:!!(p&&window.history.pushState&&window.requestAnimationFrame&&window.DOMParser&&window.Proxy),history:S({get state(){return Kt.state},api:Kt,push:Jt,replace:Gt,has:Zt,reverse:function(){return null!==Kt.state&&"rev"in Kt.state&&Kt.state.key!==Kt.state.rev}})}),xn=An;export{xn as default}; \ No newline at end of file +var e=Object.defineProperty,t=(t,n)=>e(t,"name",{value:n,configurable:!0}),n="undefined"!=typeof window?window:{screen:{},navigator:{}},o=(n.matchMedia||function(){return{matches:!1}}).bind(n),s={get passive(){return!0}},r=t((function(){}),"noop");n.addEventListener&&n.addEventListener("p",r,s),n.removeEventListener&&n.removeEventListener("p",r,!1);var i="ontouchstart"in n,a=i||"TouchEvent"in n&&o("(any-pointer: coarse)").matches,c=(n.navigator.maxTouchPoints||0)>0||a,l=n.navigator.userAgent||"",u=o("(pointer: coarse)").matches&&/iPad|Macintosh/.test(l)&&Math.min(n.screen.width||0,n.screen.height||0)>=768,d=(o("(pointer: coarse)").matches||!o("(pointer: fine)").matches&&i)&&!/Windows.*Firefox/.test(l),f=o("(any-pointer: fine)").matches||o("(any-hover: hover)").matches||u||!i,p=!c||!f&&d?c?"touchOnly":"mouseOnly":"hybrid",h="undefined"!=typeof window;document.createElement("template"),document.createRange&&document.createRange();var m=a?"pointer":"mouse",g=window.location.origin,{assign:y,keys:v,entries:b}=Object,$=Object.defineProperty,k=Object.defineProperties,w=Object.create,{isArray:A}=Array,x=Array.from,N="",{warn:E,info:C,error:q,debug:T}=console,S=t((()=>document.body),"d"),O=t((()=>document.head),"h"),L=t((e=>e?y(w(null),e):w(null)),"o"),P=t((e=>new Set(e)),"s"),R=t((e=>new Proxy(L(),e)),"p"),I=t((()=>new Map),"m"),j=class extends XMLHttpRequest{constructor(){super(...arguments),this.key=null}};t(j,"XHR"),j.e=I(),j.j=I(),j.f=L();var H=j,M=L({index:"",eval:!0,patched:!1,loaded:!1,logLevel:2,qs:L(),config:L({fragments:["body"],timeout:3e4,globalThis:!0,schema:"spx-",manual:!1,logLevel:2,cache:!0,components:null,maxCache:100,reverse:!0,preload:null,annotate:!1,eval:L({script:null,style:null,link:null,meta:!1}),hover:L({trigger:"href",threshold:250}),intersect:L({rootMargin:"0px 0px 0px 0px",threshold:0}),proximity:L({distance:75,threshold:250,throttle:500}),progress:L({bgColor:"#111",barHeight:"3px",minimum:.08,easing:"linear",speed:200,threshold:500,trickle:!0,trickleSpeed:200})}),fragments:I(),components:L({n:I(),h:I(),k:P(),b:I(),L:I(),l:R({get:(e,t)=>M.components.h.get(e[t])})}),events:L(),observe:L(),memory:L(),pages:L(),snaps:L(),resources:P()}),W="SPX ";function D(e,t,n){const o=M.logLevel;if(!(o>2&&e<=2))if(A(t)&&(t=t.join(" ")),2!==e&&1!==e||1!==o&&2!==o){if(e<=3&&3===o)n?E(W+t,n):E(W+t);else if(5===e||4===e){n?q(W+t,n):q(W+t);try{throw 4===e?new TypeError(t):new Error(t)}catch(e){}}}else C(`${W}%c${t}`,`color: ${n||"#999"};`)}t(D,"log");var X=/\b(?:append|prepend)/,F=/\s+/g,z=/^\b(?:true|false)$/i,Y=/^\d*\.?\d+$/,V=/^(?:[.-]?\d*\.?\d+|NaN)$/,U=/\b(?:intersect|hover|proximity)\b/,B=/\b(?:SCRIPT|STYLE|LINK)\b/,K=/\[(['"]?.*['"]?,?)\]/,G=/[xy]\s*|\d*\.?\d+/gi;function J(e){let t=e.replace(/\s+,/g,",").replace(/,\s+/g,",").replace(/['"]/g,N);return 91===t.charCodeAt(0)&&(/^\[\s*\[/.test(t)||/,/.test(t)&&/\]$/.test(t))&&(t=t.replace(/^\[/,N).replace(/\]$/,N)),t.split(/,|\|/)}function Z(e,t){try{const n=(t||e).replace(/\\'|'/g,(e=>"\\"===e[0]?e:'"')).replace(/\[|[^\s[\]]*|\]/g,(e=>/[[\]]/.test(e)?e:e.split(",").map((e=>e.replace(/^(\w+)$/,'"$1"').replace(/^"([\d.]+)"$/g,"$1"))).join(","))).replace(/([a-zA-Z0-9_-]+)\s*:/g,'"$1":').replace(/:\s*([$a-zA-Z_-]+)\s*([,\]}])/g,':"$1"$2').replace(/,([\]}])/g,"$1").replace(/([a-zA-Z_-]+)\s*,/g,'"$1",').replace(/([\]},\s]+)?"(true|false)"([\s,{}\]]+)/g,"$1$2$3");return JSON.parse(n)}catch(n){return D(5,"Invalid JSON expression in attribute value: "+JSON.stringify(e||t,null,2),n),t}}function _(e){return e[e.length-1]}function Q(e){return e.replace(/\s+/g," ").trim()}function ee(e){return e.replace(/\./g,"\\.").replace(/@/g,"\\@").replace(/:/g,"\\:")}function te(e){return Q(e.replace(/[\s .]+/g,".")).replace(/\s+/g," ").trim().split(/[ ,]/)}function ne(e){if(V.test(e))return"NaN"===e?NaN:+e;if(z.test(e))return"true"===e;const t=e.charCodeAt(0);return 123===t||91===t?Z(e):e}function oe(){return new Promise((e=>setTimeout((()=>e()),1)))}function se(e){return setTimeout((()=>e()),1)}function re(){return Promise.resolve()}function ie(e){const t=document.createElement("textarea");return t.innerHTML=e,t.value}function ae(){return(new Date).getTime()}function ce(e){return t=>!!t&&("string"==typeof t?t in e:t.every((t=>t in e)))}function le(e,t){return!!e&&t in e}function ue(e,n,o){return void 0!==n?($(e,n,{get:()=>o}),e):(n,o,s)=>{if(le(e,n))return;const r=t((()=>o),"get");return $(e,n,s?y(s,{get:r}):{get:r})}}function de(e){return le(e,"target")?1===e.target.length&&"body"===e.target[0]?e.target:e.target.filter(((e,t,n)=>"body"!==e&&e!==N&&-1===e.indexOf(",")&&n.indexOf(e)===t)):1===M.config.fragments.length&&"body"===M.config.fragments[0]?["body"]:[]}function fe(e){return 1===e.length&&"body"===e[0]?"body":0===e.length?null:e.join(",")}function pe(e){const t=typeof e;if("object"===t){for(const t in e)return!1;return!0}return"string"===t?void 0===e[0]:!!A(e)&&e.length>0}function he(...e){return e.join(N)}t(J,"splitAttrArrayValue"),t(Z,"attrJSON"),t(_,"last"),t(Q,"equalizeWS"),t(ee,"escSelector"),t(te,"attrValueNotation"),t(ne,"attrValueFromType"),t(oe,"onNextTickResolve"),t(se,"onNextTick"),t(re,"promiseResolve"),t(ie,"decodeEntities"),t(ae,"ts"),t(ce,"hasProps"),t(le,"hasProp"),t(ue,"defineGetter"),t(de,"targets"),t(fe,"selector"),t(pe,"isEmpty"),t(he,"glue");var me=t((function e(t=5){const n=Math.random().toString(36).slice(-t);return e.u.has(n)?e(t):(e.u.add(n),n)}),"uuid");function ge(e=2){return(t,n)=>{const o=t.length;return(o<1||t[o-1].length===e?t.push([n]):t[o-1].push(n))&&t}}function ye(e){const t=1048576,n=1073741824;return e<1024?e+" B":ee[t.length].toUpperCase())):e}function we(e,t){const n="string"==typeof e?S().querySelectorAll(e):e,o=n.length;if(0!==o)for(let e=0;eAe(e,t);const n=t.length;if(0!==n)for(let o=0;o`;const s=n.firstElementChild.getAttributeNode(t);n.firstElementChild.removeAttributeNode(s),this.setAttributeNode(s)}),"setAttribute")}function Ee(){const e=[],n=document.createElement("div");let o,s=null,r=null;const i=t((({bgColor:e,barHeight:t,speed:o,easing:s})=>{n.style.cssText=he("pointer-events:none;",`background-color:${e};`,`height:${t};`,"position:fixed;","display:block;","z-index:2147483647;","top:0;","left:0;","width:100%;","will-change:opacity,transform;",`transition:transform ${o}ms ${s};`)}),"style"),a=t((e=>100*(-1+e)),"percent"),c=t(((e,t,n)=>en?n:e),"current"),l=t((()=>r||(n.style.setProperty("transform",`translateX(${a(s||0)}%)`),r=S().appendChild(n),n)),"render"),u=t((()=>{const e=S();if(e.contains(r)){r.animate({opacity:["1","0"]},{easing:"ease-out",duration:100}).onfinish=()=>{e.removeChild(r),r=null}}else r=null}),"remove"),d=t((()=>{const t=e.shift();t&&t(d)}),"dequeue"),f=t((t=>{e.push(t),1===e.length&&d()}),"enqueue"),p=t((e=>{e=c(e,M.config.progress.minimum,1),s=1===e?null:e;const t=l();f((n=>{t.style.setProperty("transform",`translateX(${a(e)}%)`),1===e?setTimeout((()=>{u(),n()}),2*M.config.progress.speed):setTimeout(n,M.config.progress.speed)}))}),"set"),h=t((e=>{let t=s;return t?t<1?("number"!=typeof e&&(e=t>=0&&t<.2?.1:t>=.2&&t<.5?.04:t>=.5&&t<.8?.02:t>=.8&&t<.99?.005:0),t=c(t+e,0,.994),p(t)):void 0:g()}),"inc"),m=t((()=>{setTimeout((()=>{s&&(h(),m())}),M.config.progress.trickleSpeed)}),"doTrickle");function g(e){M.config.progress&&(o=setTimeout((()=>{s||p(0),M.config.progress.trickle&&m()}),e||0))}function y(e){clearTimeout(o),(e||s)&&(h(.3+.5*Math.random()),p(1))}return t(g,"start"),t(y,"done"),{start:g,done:y,style:i}}me.u=P(),t(ge,"chunk"),t(ye,"size"),t(ve,"downcase"),t(be,"upcase"),t($e,"kebabCase"),t(ke,"camelCase"),t(we,"forNode"),t(Ae,"forEach"),t(xe,"empty"),t(Ne,"patchSetAttribute"),t(Ee,"ProgressBar");var Ce,qe=Ee();function Te(e,t){const n=e.name,o=t;return t=ve(t||n),e.define=y({name:t,merge:!1,state:{},nodes:[]},e.define),t!==e.define.name&&(t=ke(e.define.name)),n!==o&&/^[A-Z]|[_-]/.test(e.define.name)&&D(3,[`Component identifer name "${e.define.name}" must use camelCase format.`,`The identifer has been converted to "${t}"`]),t}function Se(e,t=!1){const{n:n}=M.components;for(const o in e){const s=e[o],r=t?o:Te(s,o);n.has(r)||(n.set(r,s),D(1,`Component ${s.name} registered using id: ${r}`,"#F48FB1"))}M.config.components||(M.config.components=!0)}function Oe(e){for(const t of["hover","intersect","proximity","progress"])le(e,t)&&(!1===e[t]?M.config[t]=!1:"object"==typeof e[t]&&y(M.config[t],e[t]),delete e[t]);return e}function Le(e,t){const n=`:not([${e}${t}=false]):not([${e}link])`;switch(t.charCodeAt(0)){case 104:return`${n}:not([${e}proximity]):not([${e}intersect])`;case 105:return`${n}:not([${e}hover]):not([${e}proximity])`;case 112:return`${n}:not([${e}intersect]):not([${e}hover])`}}function Pe(e,t,n){if("eval"in e)if(e.eval){if("object"==typeof e.eval){const t=y(M.config.eval,e.eval);M.eval=!!(t.link||t.meta||t.script||t.style)}}else M.eval=!1;return e=>{if(!1===M.eval||!1===M.config.eval[e])return`${e}[${t}eval]:${n}`;if(!0===M.config.eval[e])return`${e}:${n}`;const o="link"===e?`${e}[rel=stylesheet]:${n}`:"script"===e?`${e}:${n}:not([${t}eval=hydrate])`:`${e}:${n}`;return null===M.config.eval[e]?o:A(M.config.eval[e])?M.config.eval[e].length>0?M.config.eval[e].map((e=>`${e}:${n}`)).join(","):(D(3,`Missing eval ${e} value, SPX will use defaults`),o):void D(4,`Invalid eval ${e} value, expected boolean or array`)}}function Re(e){const t=[];if(!("fragments"in e&&A(e.fragments)&&e.fragments.length>0))return["body"];for(const n of e.fragments){const e=n.charCodeAt(0);46!==e&&91!==e?35===e?t.push(n.trim()):t.push(`#${n.trim()}`):D(3,[`Invalid fragment selector "${n}" provided. Fragments must be id annotated values.`,"Use spx-target attributes for additional fragment selections."])}return t}function Ie(e=L()){"logLevel"in e&&(M.logLevel=e.logLevel,1===M.logLevel&&D(1,"Verbose Logging")),Ne(),k(M,{ready:{get:()=>"complete"===document.readyState},types:{get:()=>L({INITIAL:0,PREFETCH:1,FETCH:2,PRELOAD:3,REVERSE:4,POPSTATE:5,VISIT:6,HYDRATE:7,CAPTURE:8,RELOAD:9,HOVER:10,INTERSECT:11,PROXIMITY:12})}}),"components"in e&&(Se(e.components),delete e.components),y(M.config,Oe(e));const t=M.config.schema,n="spx"===t?"spx":t.endsWith("-")?t:null===t?N:`${t}-`,o=`:not([${n}disable]):not([href^=\\#])`,s=`not([${n}eval=false])`,r=Pe(e,n,s);M.config.fragments=Re(e),M.config.schema=n,M.config.index=null,M.memory.bytes=0,M.memory.visits=0,M.memory.limit=M.config.maxCache,y(M.qs,{B:new RegExp(`^href|${n}(hydrate|append|prepend|target|progress|threshold|scroll|position|proximity|hover|cache|history)$`,"i"),M:new RegExp(`${n}(?:node|bind|component)|@[a-z]|[a-z]:[a-z]`,"i"),C:new RegExp(`^${n}[a-zA-Z0-9-]+:`,"i"),r:`${n}target`,v:`${n}fragment`,w:`[${n}fragment]`,x:`[${n}target]:not([${n}target=false])`,m:`${n}morph`,D:`${n}eval`,E:`[${n}intersect]${Le(n,"intersect")}`,N:`[${n}track]:not([${n}track=false])`,s:`${n}component`,y:`${n}node`,z:`${n}bind`,a:"data-spx",F:M.config.annotate?`a[${n}link]${o}`:`a${o}`,G:r("script"),H:r("style"),I:r("link"),J:r("meta"),O:`script[${n}eval=hydrate]:${s}`,P:`link[rel=stylesheet][href*=\\.css]:${s},script[src*=\\.js]:${s}`,t:`${n}data:`,A:`a[${n}proximity]${o}${Le(n,"proximity")}`,K:`a${o}${Le(n,"intersect")}`,p:!1!==M.config.hover&&"href"===M.config.hover.trigger?`a${o}${Le(n,"hover")}`:`a[${n}hover]${o}${Le(n,"hover")}`}),qe.style(M.config.progress)}function je(e){return(new DOMParser).parseFromString(e,"text/html")}function He(e){return(e||document).documentElement.outerHTML}function Me(e){const t=e.indexOf("-1)return N;const n=e.indexOf(">",t)+1,o=e.indexOf("{const s=e.apply(null,t);n?s instanceof Document?o=s.documentElement.outerHTML:"string"!=typeof o&&(o=!1!==s):o=!1!==s}),M.events[e]||[]),o}function De(e,t,n){return e in M.events||(M.events[e]=[]),M.events[e].push(n?t.bind(n):t)-1}function Xe(e,t){if(e in M.events){const n=M.events[e];if(n&&"number"==typeof t)n.splice(t,1),D(2,`Removed ${e} event listener (id: ${t})`),0===n.length&&delete M.events[e];else{const o=[];if(n&&t)for(let s=0,r=n.length;s{const t=fo(e,3);return t.key!==e&&Ge(Fn(t))}));return Promise.allSettled(e)}if("object"==typeof M.config.preload&&le(M.config.preload,e.key)){const t=M.config.preload[e.key].map((e=>Ge(Fn(fo(e,3)))));return Promise.allSettled(t)}}}async function Be(e){if(e.rev===e.key)return;const t=Fn(fo(e.rev,4));await oe(),Ge(t).then((t=>{t?D(2,`Reverse fetch completed: ${t.rev}`):D(3,`Reverse fetch failed: ${e.rev}`)}))}async function Ke(e){if(!H.j.has(e.key))return e;const t=await H.j.get(e.key);return H.j.delete(e.key),delete H.f[e.key],Vn(e,t)}async function Ge(e){return H.e.has(e.key)&&7!==e.type?(4===e.type&&H.e.has(e.rev)?(H.e.get(e.rev).abort(),D(3,`Request aborted: ${e.rev}`)):D(3,`Request in transit: ${e.key}`),!1):We("fetch",e)?(H.j.set(e.key,Fe(e.key)),Ke(e)):(D(3,`Request cancelled via dispatched event: ${e.key}`),!1)}function Je(e,t){if(!1===t(e))return;let n,o;for(e.firstElementChild&&(o=0,n=e.children[o]);n;)n&&Je(n,t),n=e.children[++o]}function Ze(e,t){return`on${e}`in t||(D(5,[`Invalid event name "${e}" provided. No such event exists in the DOM API.`,"Only known event listeners can be attached."],t),!1)}function _e(e,n,o){const s=e[n.method];return t((function(t){n.params&&(le(t,"attrs")||ue(t,"attrs",L()),y(t.attrs,n.params)),s.call(e,t)}),"handle")}function Qe(e,t){t.attached&&(t.listener.abort(),t.listener=new AbortController,t.options.signal=t.listener.signal,t.attached=!1,M.components.b.delete(t.dom),D(1,[`Detached ${t.key} ${t.eventName} event from ${t.method}() method in component`,`${e.scope.define.name}: ${e.scope.key}`]))}function et(e,t,n){n.attached||(n.method in e?(bt(t.attributes,n),n.isWindow?Ze(n.eventName,window)&&addEventListener(n.eventName,_e(e,n)):Ze(n.eventName,t)&&(t.addEventListener(n.eventName,_e(e,n),n.options),M.components.b.set(n.dom,t)),n.attached=!0,D(1,[`Attached ${n.key} ${n.eventName} event to ${n.method}() method in component`,`${e.scope.define.name}: ${e.scope.key}`])):D(3,`Undefined callback method: ${e.scope.define.name}.${n.method}()`))}t(Te,"getComponentId"),t(Se,"registerComponents"),t(Oe,"observers"),t(Le,"not"),t(Pe,"evaluators"),t(Re,"fragments"),t(Ie,"configure"),t(je,"parse"),t(He,"takeSnapshot"),t(Me,"getTitle"),t(We,"emit"),t(De,"on"),t(Xe,"off"),t(Fe,"request"),t(ze,"cleanup"),t(Ye,"throttle"),t(Ve,"cancel"),t(Ue,"preload"),t(Be,"reverse"),t(Ke,"wait"),t(Ge,"fetch"),t(Je,"walkElements"),t(Ze,"isValidEvent"),t(_e,"eventAttrs"),t(Qe,"removeEvent"),t(et,"addEvent");var tt=(t(Ce=class{constructor(e){this.state=L();const{b:t}=M.components,{scope:n}=k(this,{scope:{get:()=>tt.scopes.get(e)},dom:{get:()=>t.get(n.dom)}}),o=`${M.config.schema}${n.instanceOf}`;if(this.state=new Proxy(L(),{set:(e,s,r)=>{const i=n.define.state[s],a="object"==typeof r||A(r)?JSON.stringify(r):`${r}`;if("object"==typeof i&&le(i,"persist")&&i.persist?e[s]=n.state[s]=r:e[s]=r,a.trim()!==N&&this.dom){const e=this.dom.hasAttribute(`${o}:${s}`)?`${o}:${s}`:`${o}:${$e(s)}`;a!==this.dom.getAttribute(`${o}:${s}`)&&this.dom.setAttribute(e,a)}if(s in n.binds){const{binds:e}=n;for(const n in e[s])e[s][n].value=a,t.has(e[s][n].dom)&&(t.get(e[s][n].dom).innerText=a)}return!0}}),pe(n.state))for(const e in n.define.state){const t=n.define.state[e];let o,s;"object"==typeof t?(o=t.typeof,s=t.default):o=t,o===String?this.state[e]=s||N:o===Boolean?this.state[e]="boolean"==typeof s?s:"true"===s||!1:o===Number?this.state[e]=s?Number(s):0:o===Array?this.state[e]=s||[]:o===Object&&(this.state[e]=s||{}),n.state[e]=this.state[e]}else for(const e in n.define.state){if(!(e in n.state))if("object"==typeof n.define.state[e])n.state[e]=n.define.state[e].default;else switch(n.define.state[e]){case String:n.state[e]=N;break;case Boolean:n.state[e]=!1;break;case Number:n.state[e]=0;break;case Object:n.state[e]={};break;case Array:n.state[e]=[]}const t=n.define.state[e],s=$e(e);let r,i,a=this.dom.hasAttribute(`${o}:${s}`)?this.dom.getAttribute(`${o}:${s}`):this.dom.getAttribute(`${o}:${e}`);const c=null!==a&&a!==N;"object"==typeof t?(r=t.typeof,i=c,c||(a=t.default)):r=t,`has${be(e)}`in this.state||$(this.state,`has${be(e)}`,{get:()=>c}),"string"==typeof a&&a.startsWith("window.")?this.state[e]=window[a.slice(7)]:r===String?this.state[e]=a||N:r===Boolean?this.state[e]="boolean"==typeof a?a:"true"===a||!1:r===Number?this.state[e]=a?Number(a):0:r===Array?this.state[e]=c?Z(a):i?a:[]:r===Object&&(this.state[e]=c?Z(a):i?a:{}),n.state[e]=this.state[e]}}get html(){return document.documentElement}},"Component"),Ce.scopes=I(),Ce);function nt(e,t,n,o){let s,r,i;for(e.firstElementChild&&(s=0,r=e.children[s],i=t.children[s]);r;)r&&(o.has(i)?(ot(r,n,!0),o.delete(i)):i.hasAttribute(M.qs.a)&&r.setAttribute(M.qs.a,i.getAttribute(M.qs.a)),nt(r,i,n,o)),r=e.children[++s],i=t.children[s]}function ot(e,t,n=!1){const{b:o}=M.components;Je(e,(e=>{if("false"!==e.getAttribute("spx-snapshot")&&$t(e.attributes)&&!e.hasAttribute(M.qs.a)){const s=t.shift();if(o.has(s)){const r=e.getAttribute(M.qs.a),i=o.get(s).getAttribute(M.qs.a);if(r!==i&&e.setAttribute(M.qs.a,i),0===t.length)return!1===n&&(Bn(e.ownerDocument.documentElement.outerHTML),D(1,`Snapshot ${M.page.key} updated for: ${M.page.snap}`)),!1}}}))}function st(e,t){const{page:n,dom:o}=Kn(M.page.key),s=114===e.charCodeAt(0)?"removed":"appended";o.head.contains(t)?(o.head[e](t),M.snaps[n.snap]=o.documentElement.outerHTML,D(1,`Snapshot record was updated. Node ${s} from `,t)):D(3,"Node does not exists in snapshot record, no mutation applied",t)}t(nt,"patchSnap"),t(ot,"morphSnap"),t(st,"morphHead");var rt,it={};function at(){return y(L(),{page:y(L(),M.page)})}function ct(){for(const e in M.components.l)delete M.components.l[e];for(const e of M.components.h.values())for(const t in e.scope.events)Qe(e,e.scope.events[t]);M.components.b.clear(),M.components.h.clear(),M.components.k.clear(),D(2,"Component instances were disconnected")}function lt(e){const{h:n}=M.components,o=at(),s=[];for(const[r,i,a]of e){const e=n.get(r),{scope:c}=e,l=4===c.mounted?"unmount":"mount",u=t((async()=>{try{if(!c.connected&&a&&1===c.mounted)await e[i](o),await e[a](o),c.connected=!0;else if(await e[i](o),4===c.mounted&&c.define.merge){const e=Gn(M.page.rev);e.querySelector(`[${M.qs.a}="${c.ref}"]`).outerHTML=c.snapshot,Bn(e.documentElement.outerHTML,M.page.rev)}return void(e.scope.mounted=4===c.mounted?5:3)}catch(e){}return D(3,`Component to failed to ${l}: ${c.instanceOf} (${r})`),Promise.reject(r)}),"seq");s.push(re().then(u))}return Promise.race(s)}function ut(){const{k:e,h:t}=M.components,n=[];for(const o of e){const e=t.get(o),{scope:s}=e,r=4===s.mounted?"unmount":"onmount";e&&r in e&&("onmount"===r&&"connect"in e&&!1===s.connected?n.push([o,"connect",r]):3!==s.mounted&&5!==s.mounted&&n.push([o,r]))}n.length>0&<(n).catch((n=>{t.get(n).scope.mounted=5,e.delete(n)}))}function dt(){M.config.components&&(M.observe.components||(0===M.page.type?Ot():rt?ht(rt).then(ut).then(Lt):ut(),M.observe.components=!0))}function ft(){M.observe.components&&(ut(),M.observe.components=!1)}function pt(e,t){const n=L(),{b:o}=M.components;for(const e in t)t[e].schema in n||(n[t[e].schema]=[]),n[t[e].schema].push(t[e].dom);for(const t in n){if(`${t}s`in e)continue;if(t in e){e[t]=n[t];continue}let s=n[t];s.length>1?k(e,{[t]:{get:()=>o.get(s[0]),set(e){s=e}},[`${t}s`]:{get:()=>s.map((e=>o.get(e)))}}):$(e,t,{get:()=>o.get(s[0]),set(e){s=e}})}}function ht({q:e,o:t,c:n,m:o}){const s=4===M.page.type,r=!s||0===M.page.type,i=[],{b:a,k:c,h:l,n:u,l:d}=M.components;for(const n in e)for(const f of e[n]){if(null===f.instanceOf){if(!(n in t))continue;f.instanceOf=t[n]}let e,p;if(5!==f.mounted||null===o&&!s)e=u.get(f.instanceOf),tt.scopes.set(f.key,ue(f,"define",e.define)),p=new e(f.key);else{const t=Jn();if(null!==f.alias&&f.alias in t?(p=t[f.alias][0],e=p.scope.define):f.instanceOf in t&&1===t[f.instanceOf].length&&(p=t[f.instanceOf][0],e=p.scope.define),!p){D(3,"Increment component instance failed as instance was undefined",f);continue}f.key=p.scope.key,f.ref=p.scope.ref,f.connected=p.scope.connected,f.mounted=p.scope.mounted=3}if(pe(f.nodes)||pt(p,f.nodes),null===o&&"nodes"in e&&e.nodes.length>0)for(const t of e.nodes)ue(p,`has${be(t)}Node`,`${t}Node`in p);for(const e in f.events){let t;null!==o&&3===f.mounted?(t=p.scope.events[e]=f.events[e],d[e]=f.key):t=f.events[e],et(p,a.get(t.dom),t)}if(null===o||(null!==o||s)&&2===f.mounted){c.add(f.key),l.set(f.key,p),1===M.logLevel&&D(1,`Component ${f.define.name} (connect) mounted: ${f.key}`,"#6DD093");let e=-1;"connect"in p&&(i.push([f.key,"connect"]),r&&(p.scope.mounted=1,e=i.length-1)),"onmount"in p&&(e>-1?i[e].push("onmount"):i.push([f.key,"onmount"]))}}return r&&n.length>0&&(Yn("components",x(c)),se((()=>ot(M.snapDom.body,n)))),i.length>0?lt(i):Promise.resolve()}function mt(){const e=M.config.fragments,t=1===e.length&&"body"===e[0]?M.qs.w:`${e.join()},${M.qs.w}`;S().querySelectorAll(t).forEach((e=>{let t=e.getAttribute(M.qs.v);null!==t?(t=t.trim(),e.id===N||"true"!==t&&t!==N?M.fragments.set(`${e.nodeName.toLowerCase()}[${M.qs.v}="${t}"]`,e):M.fragments.set(`#${e.id}`,e)):M.fragments.set(`#${e.id}`,e)})),Yn("fragments",x(M.fragments.keys()))}function gt(e){if(6!==e.type){if("body"===e.selector||null===e.selector)return;se((()=>{const t=Gn(e.snap),n=t.body.querySelectorAll(M.qs.x),o=S().querySelectorAll(M.qs.x);we(n,((t,n)=>{if(yt(t))D(3,"The fragment or target is a decedent of an element which morphs",t);else{if(t.hasAttribute("id")){if(t.id.startsWith("t."))return}else t.setAttribute("id",`t.${me()}`),null!==o&&o[n].setAttribute("id",`t.${me()}`);e.fragments.push(t.id)}})),Bn(t.documentElement.outerHTML,e.snap)}))}}function yt(e){for(const[t,n]of M.fragments){if(t===e.id)return!0;if(n.contains(e))return!0}return!1}function vt(e){return e.trim().replace(/\s+/," ").split(/[|, ]/).map(ke)}function bt(e,t){for(let n=0,o=e.length;n-1||e===M.qs.s||e===M.qs.y||e===M.qs.z;for(let t=e.length-1;t>=0;t--)if($t(e[t].name))return!0;return!1}function kt(e,t){$t(e.attributes)&&(e.hasAttribute(M.qs.s)?St(e,e.getAttribute(M.qs.s),t):Tt(e,t,null,null))}function wt(e=null){return L({o:L(),q:L(),d:null,c:[],m:e,Q:e?L():null})}function At(e,{q:t,o:n}){return e in t?_(e in n?t[n[e]]:t[e]):e in n?_(t[n[e]]):(t[e]=[Nt(e)],t[e][0])}function xt(e,t,n){M.components.l[n]=t;const o=e.getAttribute(M.qs.a),s=o?`${o},${n}`:n;return e.setAttribute(M.qs.a,s),n}function Nt(e,t,n){const{n:o}=M.components,s=me(),r=L({key:s,mounted:5,connected:!1,snapshot:null,ref:`c.${s}`,state:L(),nodes:L(),events:L(),binds:L()});return t&&(xt(t,s,r.ref),r.dom=n.d,r.mounted=2,r.inFragment=yt(t),t.hasAttribute("id")&&(r.alias=ke(t.id.trim()))),o.has(e)?(r.instanceOf=e,r.alias?o.has(r.alias)?D(5,[`Component alias "${r.alias}" matches a component identifer in the registry.`,"An alias reference must be unique and cannot match component names."]):n.o[r.alias]=e:r.alias=null):(r.alias=e||null,r.instanceOf=null,2===r.mounted&&(n.o[r.alias]=null)),r}function Et(e,t,n,o){const s=L(),r=n.indexOf("{"),i=t.slice(M.config.schema.length),a=new AbortController;s.key=`e.${me()}`,s.dom=`${o.d}`,s.isWindow=i.startsWith("window:"),s.eventName=s.isWindow?i.slice(7):i,s.attached=!1,s.params=null,s.options={signal:a.signal};let c=n;if(r>-1){const e=n.slice(r,n.lastIndexOf("}",r)).match(/(passive|once)/g);null!==e&&(e.indexOf("once")>-1&&(s.options.once=!0),e.indexOf("passive")>-1&&(s.options.passive=!0)),c=n.slice(0,r)}const l=te(c);l.length>1&&D(3,`No more than 1 DOM Event listener method allowed in value: ${n}`);const[u,d]=l[0].split("."),f=At(u,o);s.listener=a,s.method=d.trim(),f.events[s.key]=s,xt(e,f.key,s.key)}function Ct(e,t,n){for(const o of te(t)){const[t,s]=o.split("."),r=At(t,n),i=xt(e,r.key,`n.${me()}`);r.nodes[i]=L({key:i,keyProp:s,dom:n.d,schema:`${s}Node`,isChild:2===r.mounted||3===r.mounted})}}function qt(e,t,n){for(const o of te(t)){const[t,s]=o.split("."),r=At(t,n),i=xt(e,r.key,`b.${me()}`);s in r.binds||(r.binds[s]=L()),r.binds[s][i]=L({key:i,stateKey:s,value:e.innerText,dom:n.d,stateAttr:`${M.config.schema}${t}:${s}`,selector:`[${M.qs.a}*=${ee(i)}]`,isChild:2===r.mounted||3===r.mounted})}}function Tt(e,t,n,o){null===n&&null===o&&(t.d=me(),t.c.push(t.d),M.components.b.set(t.d,e));for(let s=e.attributes.length-1;s>=0;s--){const{name:r,value:i}=e.attributes[s];if(n){let e=`${M.config.schema}${n}:`;o&&!r.startsWith(e)&&(e=`${M.config.schema}${o}:`),r.startsWith(e)&&(At(n,t).state[ke(r.slice(e.length))]=i)}r.indexOf("@")>-1?Et(e,r,i,t):r===M.qs.z?qt(e,i,t):r===M.qs.y&&Ct(e,i,t)}}function St(e,t,n){const{n:o,b:s}=M.components,{q:r,o:i}=n,a=e.hasAttribute("id")?e.id.trim():null;n.d=me(),n.c.push(n.d),s.set(n.d,e);for(const s of vt(t))if(o.has(s)){let t;s in r?(t=_(r[s]),5===t.mounted?(xt(e,t.key,t.ref),t.dom=n.d,t.mounted=2,t.inFragment=yt(e)):r[s].push(Nt(s,e,n))):r[s]=[Nt(s,e,n)],t=_(r[s]),a&&!(a in i)&&(i[a]=s),Tt(e,n,s,t.alias)}else D(5,`Component does not exist in registry: ${s}`)}function Ot(e){const t=wt();if(e){if(e instanceof Set){for(const n of e)kt(n,t);return e.clear(),t}return kt(e,t),t}Je(S(),(e=>kt(e,t))),pe(t.q)||ht(t)}function Lt(){se((()=>{rt=void 0}))}function Pt(e,t){const{l:n,k:o,b:s}=M.components;for(const r of t){const t=n[r];if(!t)continue;const i=r.charCodeAt(0),{scope:a}=t;if(99===i)o.add(a.key),s.set(a.dom,e),a.mounted=2,1===M.logLevel&&D(1,`Component ${a.define.name} mounted: ${a.key}`,"#6DD093");else if(101===i)et(t,e,a.events[r]);else if(110===i)s.set(a.nodes[r].dom,e);else if(98===i){const{binds:t}=a;for(const n in t)if(r in t[n]){e.innerText=t[n][r].value,s.set(t[n][r].dom,e);break}}}}function Rt(e,t,n){const{l:o,b:s,k:r}=M.components;for(const i of t){const t=o[i];if(!t)continue;const a=i.charCodeAt(0),{scope:c}=t;if(99===a){r.delete(i),s.delete(t.scope.dom),c.define.merge&&(c.snapshot=e.outerHTML,D(1,`Component ${c.define.name} snapshot: ${c.key}`,"#999"));for(const e in c.nodes)s.delete(c.nodes[e].dom);for(const e in c.binds)for(const t in c.binds[e])s.delete(c.binds[e][t].dom);for(const e in c.events)Qe(t,c.events[e]);1===M.logLevel&&D(1,`Component ${c.define.name} unmounted: ${c.key}`,"#7b97ca"),c.mounted=4}else if(101===a)Qe(t,c.events[i]);else if(110===a){const t=c.nodes[i];s.delete(t.dom),n&&e.isEqualNode(n)&&(xt(e,c.key,i),rt.c.push(t.dom))}else if(98===a)for(const t in c.binds)if(i in c.binds[t]){s.delete(c.binds[t][i].dom),n&&e.isEqualNode(n)&&(xt(e,c.key,i),rt.c.push(c.binds[t][i].dom));break}}}function It(e){1!==e.nodeType&&11!==e.nodeType||e.hasAttribute(M.qs.a)&&Rt(e,e.getAttribute(M.qs.a).split(","))}function jt(e){e.hasAttribute(M.qs.a)?Pt(e,e.getAttribute(M.qs.a).split(",")):$t(e.attributes)&&(rt?rt.m=e:rt=wt(e),kt(e,rt))}function Ht(e,t,n,o){n&&(n=n.split(",")),o&&(o=o.split(",")),n&&o?(console.log(e,t),Rt(e,n),Pt(e,o)):!n&&o?Pt(e,o):(rt?rt.m=e:rt=wt(e),n&&!o&&Rt(e,n,t),$t(t.attributes)&&kt(e,rt))}function Mt(e,t,n){e[n]!==t[n]&&(e[n]=t[n],e[n]?e.setAttribute(n,N):e.removeAttribute(n))}function Wt(e,t){if(11===t.nodeType||11===e.nodeType)return;const n=t.attributes,o=e.getAttribute(M.qs.a),s=t.getAttribute(M.qs.a);let r,i,a,c,l,u=!1;for(let t=n.length-1;t>=0;t--)r=n[t],i=r.name,c=r.value,a=r.namespaceURI,a?(i=r.localName||i,l=e.getAttributeNS(a,i),l!==c&&("xmlns"===r.prefix&&(i=r.name),e.setAttributeNS(a,i,c))):(l=e.getAttribute(i),l!==c&&(e.setAttribute(i,c),o||s||u||(u=$t(i))));const d=e.attributes;for(let n=d.length-1;n>=0;n--)r=d[n],i=r.name,c=r.value,a=r.namespaceURI,a?(i=r.localName||i,t.hasAttributeNS(a,i)||e.removeAttributeNS(a,i)):t.hasAttribute(i)||e.removeAttribute(i);(o||s||u)&&Ht(e,t,o,s)}function Dt(e,t){let n=e.parentNode;if(n){let o=n.nodeName.toUpperCase();"OPTGROUP"===o&&(n=n.parentNode,o=n&&n.nodeName.toUpperCase()),"SELECT"!==o||n.hasAttribute("multiple")||(e.hasAttribute("selected")&&!t.selected&&(e.setAttribute("selected","selected"),e.removeAttribute("selected")),n.selectedIndex=-1)}Mt(e,t,"selected")}function Xt(e,t){Mt(e,t,"checked"),Mt(e,t,"disabled"),e.value!==t.value&&(e.value=t.value),t.hasAttribute("value")||e.removeAttribute("value")}function Ft(e,t){const{value:n}=t;e.value!==n&&(e.value=n);const{firstChild:o}=e;if(o){const{nodeValue:t}=o;if(t===n||!n&&t===e.placeholder)return;o.nodeValue=n}}function zt(e,t){if(!t.hasAttribute("multiple")){let t,n,o=0,s=-1,r=e.firstElementChild;for(;r;)if(n=r.nodeName&&r.nodeName.toUpperCase(),"OPTGROUP"===n)t=r,r=t.firstElementChild;else{if("OPTION"===n){if(r.hasAttribute("selected")){s=o;break}o++}r=r.nextElementSibling,!r&&t&&(r=t.nextElementSibling,t=null)}e.selectedIndex=s}}function Yt(e,t){return t&&"http://www.w3.org/1999/xhtml"!==t?document.createElementNS(t,e):document.createElement(e)}function Vt(e,t){if(e===t)return!0;const n=e.charCodeAt(0),o=t.charCodeAt(0);return n<=90&&o>=97?e===t.toUpperCase():o<=90&&n>=97&&t===e.toUpperCase()}function Ut(e,t){switch(e.nodeName){case"INPUT":Xt(e,t);break;case"OPTION":Dt(e,t);break;case"SELECT":zt(e,t);break;case"TEXTAREA":Ft(e,t)}}function Bt(e){return e&&"getAttribute"in e?e.getAttribute("id"):void 0}function Kt(e,t){let n,o=e.firstChild;for(;o;)n=o.nextSibling,t.appendChild(o),o=n;return t}function Gt(e,t,n,o=!0){It(e),t&&t.removeChild(e),_t(e,o,n)}function Jt(e,t,n){let o,s,r,i,a,c,l=t.firstChild,u=e.firstChild;e:for(;l;){for(o=Bt(l),s=l.nextSibling;u;){if(a=u.nextSibling,l.isEqualNode(u)){l=s,u=a;continue e}let t;if(r=Bt(u),i=u.nodeType,i===l.nodeType&&(1===i?(o?o!==r&&((c=n.g.get(o))?a&&a.isEqualNode(c)?t=!1:(e.insertBefore(c,u),r?n.i.add(r):Gt(u,e,n),u=c,r=Bt(u)):t=!1):r&&(t=!1),t=!1!==t&&Vt(u.nodeName,l.nodeName),t&&Zt(u,l,n)):3!==i&&8!==i||(t=!0,u.nodeValue!==l.nodeValue&&(u.nodeValue=l.nodeValue))),t){l=s,u=a;continue e}r?n.i.add(r):Gt(u,e,n),u=a}o&&(c=n.g.get(o))&&Vt(c.nodeName,l.nodeName)?(e.appendChild(c),Zt(c,l,n)):(l.actualize&&(l=l.actualize(e.ownerDocument||document)),e.appendChild(l),Qt(l,n)),l=s,u=a}en(e,u,r,n),Ut(e,t)}function Zt(e,t,n){const o=Bt(t);if(o&&n.g.delete(o),e.isEqualNode(t))return;const s=e.getAttribute(M.qs.m);"false"!==s&&("children"!==s&&Wt(e,t),"TEXTAREA"!==e.nodeName?Jt(e,t,n):Ft(e,t))}function _t(e,t,n){if(1!==e.nodeType)return;let o=e.firstChild;for(;o;){let e;t&&(e=Bt(o))?n.i.add(e):(It(o),o.firstChild&&_t(o,t,n)),o=o.nextSibling}}function Qt(e,t){1!==e.nodeType&&11!==e.nodeType||jt(e);let n=e.firstChild;for(;n;){const e=n.nextSibling,o=Bt(n);if(o){const e=t.g.get(o);e&&Vt(n.nodeName,e.nodeName)?(n.parentNode.replaceChild(e,n),Zt(e,n,t)):Qt(n,t)}else Qt(n,t);n=e}}function en(e,t,n,o){for(;t;){const s=t.nextSibling;(n=Bt(t))?o.i.add(n):Gt(t,e,o),t=s}}function tn(e,t){if(1===e.nodeType||11===e.nodeType){let n=e.firstChild;for(;n;){const e=Bt(n);e&&t.g.set(e,n),tn(n,t),n=n.nextSibling}}}function nn(e,t){let n=t.cloneNode(!0);const o=L({i:P(),g:I()});11===n.nodeType&&(n=n.firstElementChild),tn(e,o);let s=e;const r=s.nodeType,i=n.nodeType;if(1===r)1===i?Vt(e.nodeName,n.nodeName)||(It(e),s=Kt(e,Yt(n.nodeName,n.namespaceURI))):s=n;else if(3===r||8===r){if(i===r)return s.nodeValue!==n.nodeValue&&(s.nodeValue=n.nodeValue),s;s=n}if(s.isEqualNode(n))It(e);else{if(n.isEqualNode(s))return s;if(Zt(s,n,o),o.i.size>0)for(const e of o.i)if(o.g.has(e)){const t=o.g.get(e);Gt(t,t.parentNode,o,!1)}}return s!==e&&e.parentNode&&(s.actualize&&(s=s.actualize(e.ownerDocument||document)),e.parentNode.replaceChild(s,e)),o.g.clear(),o.i.clear(),s}function on(e,t){if(!(e instanceof Element))return!1;const n=e.closest(t);return!(!n||"A"!==n.tagName)&&n}function sn(e){if("A"!==e.nodeName)return!1;const t=e.getAttribute("href");return!!t&&(!!io(t)&&!1===_n(co(t)))}function rn(e,t){const n=[];return we(e,(e=>{if("A"!==e.nodeName){we(e.querySelectorAll(t),(e=>{sn(e)&&n.push(e)}))}else if(e.hasAttribute("href")){const{href:t}=e;io(t)&&_n(co(t))&&n.push(e)}})),n}((t,n)=>{for(var o in n)e(t,o,{get:n[o],enumerable:!0})})(it,{connect:()=>dt,disconnect:()=>ft,hook:()=>ut,hookArguments:()=>at,mount:()=>lt,teardown:()=>ct}),t(at,"hookArguments"),t(ct,"teardown"),t(lt,"mount"),t(ut,"hook"),t(dt,"connect"),t(ft,"disconnect"),t(pt,"defineNodes"),t(ht,"setInstances"),t(mt,"connect"),t(gt,"setFragmentElements"),t(yt,"contains"),t(vt,"getComponentValues"),t(bt,"getEventParams"),t($t,"isDirective"),t(kt,"walkNode"),t(wt,"getContext"),t(At,"getScope"),t(xt,"setRefs"),t(Nt,"setScope"),t(Et,"setEvent"),t(Ct,"setNodes"),t(qt,"setBinds"),t(Tt,"setAttrs"),t(St,"setComponent"),t(Ot,"getComponents"),t(Lt,"resetContext"),t(Pt,"connect"),t(Rt,"disconnect"),t(It,"removeNode"),t(jt,"addedNode"),t(Ht,"updateNode"),t(Mt,"setBooleanAttribute"),t(Wt,"morphAttributes"),t(Dt,"option"),t(Xt,"input"),t(Ft,"textarea"),t(zt,"select"),t(Yt,"createElementNS"),t(Vt,"matchName"),t(Ut,"formNodes"),t(Bt,"getKey"),t(Kt,"moveChildren"),t(Gt,"removeNode"),t(Jt,"morphChildren"),t(Zt,"morphElement"),t(_t,"walkNodes"),t(Qt,"addedNode"),t(en,"cleanNode"),t(tn,"indexNode"),t(nn,"morph"),t(on,"getLink"),t(sn,"canFetch"),t(rn,"getNodeTargets");var an,cn=t((e=>{const t=[];return we(e,(e=>{sn(e)&&t.push(e)})),t}),"getTargets");function ln(e){const t=on(e.target,M.qs.p);if(!t)return;const n=fo(t,10);if(_n(n.key))return;if(n.key in H.f)return;t.addEventListener(`${m}leave`,un,{once:!0});const o=Fn(n),s=o.threshold||M.config.hover.threshold;Ye(n.key,(function(){We("prefetch",t,n)&&Ge(o).then((function(){delete H.f[n.key],fn(t)}))}),s)}function un(e){const t=on(e.target,M.qs.p);t&&ze(co(t.href))}function dn(e){e.addEventListener(`${m}enter`,ln)}function fn(e){e.removeEventListener(`${m}enter`,ln),e.removeEventListener(`${m}leave`,un)}function pn(){M.config.hover&&!M.observe.hover&&(Ae(dn,cn(M.qs.p)),M.observe.hover=!0)}function hn(){M.observe.hover&&(Ae(fn,cn(M.qs.p)),M.observe.hover=!1)}async function mn(e){if(e.isIntersecting){const t=fo(e.target,11);if(!We("prefetch",e.target,t))return an.unobserve(e.target);await Ge(Fn(t))?an.unobserve(e.target):(D(3,`Prefetch will retry at next intersect for: ${t.key}`),an.observe(e.target))}}function gn(){if(!M.config.intersect||M.observe.intersect)return;an||(an=new IntersectionObserver(Ae(mn),M.config.intersect));Ae((e=>an.observe(e)))(rn(M.qs.E,M.qs.K)),M.observe.intersect=!0}function yn(){M.observe.intersect&&(an.disconnect(),M.observe.intersect=!1)}t(ln,"onEnter"),t(un,"onLeave"),t(dn,"addListener"),t(fn,"removeListener"),t(pn,"connect"),t(hn,"disconnect"),t(mn,"onIntersect"),t(gn,"connect"),t(yn,"disconnect");var vn,bn=new MutationObserver((function([e]){if("childList"!==e.type)return;const t=e.addedNodes.length;if(t||e.removedNodes.length>0){const n=t?e.addedNodes[0]:e.removedNodes[0];if(1!==n.nodeType)return;M.eval&&B.test(n.nodeName)?"HEAD"===n.parentNode.nodeName?st(t?"appendChild":"removeChild",n):$n(n)&&!M.resources.has(n)?M.resources.add(n):M.resources.delete(n):n instanceof HTMLElement&&t&&!n.hasAttribute(M.qs.a)&&Ot(n)}}));function $n(e){const t=S().querySelectorAll(`${M.page.target.join(",")},[${M.qs.r}]`);for(let n=0,o=t.length;n=n.left&&t<=n.bottom&&t>=n.top}function xn(e){const t=e.getBoundingClientRect(),n=e.getAttribute(M.qs.A),o=Y.test(n)?Number(n):M.config.proximity.distance;return{target:e,top:t.top-o,bottom:t.bottom+o,left:t.left-o,right:t.right+o}}function Nn(e){let t=!1;return n=>{if(t)return;t=!0;const o=e.findIndex((e=>An(n,e)));if(-1===o)setTimeout((()=>{t=!1}),M.config.proximity.throttle);else{const{target:n}=e[o],s=Fn(fo(n,12)),r=s.threshold||M.config.proximity.threshold;Ye(s.key,(async()=>{if(!We("prefetch",n,s))return Cn();await Ge(s)&&(e.splice(o,1),t=!1,0===e.length&&(Cn(),D(2,"Proximity observer disconnected")))}),r)}}}function En(){if(!M.config.proximity||M.observe.proximity)return;const e=cn(M.qs.A).map(xn);e.length>0&&(vn=Nn(e),addEventListener(`${m}move`,vn,{passive:!0}),M.observe.proximity=!0)}function Cn(){M.observe.proximity&&(removeEventListener(`${m}move`,vn),M.observe.proximity=!1)}async function qn(e,t){if(!M.eval||!e||!t)return;const n=[],o=P(),{children:s}=e;for(let e=0,n=t.length;e{D(3,`Resource <${n.nodeName.toLowerCase()}> failed:`,n),e()})),n.addEventListener("load",(()=>e()))}));r.push(e)}e.appendChild(n),o.delete(t)}for(let t=0,o=n.length;t0&&se((()=>{ot(e,rt.c),Yn("type",6)}))}else if(null!==e.selector){const o=n.querySelectorAll(e.selector),s=t.body.querySelectorAll(e.selector),r=P();for(let e=0,t=o.length;e0&&se((()=>{nt(t.body,n,rt.c,r),Yn("type",6),r.clear()}))}else{for(const n of e.fragments){const e=M.fragments.get(n),o=t.body.querySelector(n);o&&e&&(We("render",e,o)&&(e.isEqualNode(o)||(nn(e,o),rt&&rt.c.length>0&&se((()=>ot(o,rt.c))))))}Yn("type",6)}}function Sn(e,t){const n=e.hydrate;if(1===n.length&&"body"===n[0])return void nn(S(),t.body);const o=n.join(","),s=S().querySelectorAll(o),r=e.preserve&&e.preserve.length>0?e.preserve.join(","):null,i=[];if(r){const e=S().querySelectorAll(r);for(let t=0,n=e.length;t0){const e=t.body.querySelectorAll(o);for(let t=0,n=s.length;t{pn(),gn(),En(),dt(),kn()})),We("load",e),e}t($n,"nodeOutsideTarget"),t(kn,"connect"),t(wn,"disconnect"),t(An,"inRange"),t(xn,"setBounds"),t(Nn,"observer"),t(En,"connect"),t(Cn,"disconnect"),t(qn,"morphHead"),t(Tn,"morphNodes"),t(Sn,"morphHydrate"),t(On,"update");var Ln=window.history;function Pn(){return null!==Ln.state&&"rev"in Ln.state&&Ln.state.key!==Ln.state.rev}function Rn(e){if(null==Ln.state)return!1;if("object"!=typeof Ln.state)return!1;const t=ce(Ln.state)(["key","rev","scrollX","scrollY","title"]);return"string"==typeof e?t&&Ln.state.key===e:t}async function In(){await re(),M.loaded=!0}function jn(e){return Rn(e.key)?(scrollTo(Ln.state.scrollX,Ln.state.scrollY),y(e,Ln.state)):Hn(e),e}function Hn({key:e,rev:t,title:n,scrollX:o,scrollY:s}){const r={key:e,rev:t,scrollX:o,scrollY:s,title:n||document.title};return Ln.replaceState(r,r.title,r.key),D(1,`History replaceState: ${Ln.state.key}`),Ln.state}function Mn({key:e,rev:t,title:n,location:o}){const s=o.pathname+o.search,r={key:e,rev:t,title:n,scrollY:0,scrollX:0};return Ln.pushState(r,r.title,s),D(1,`History pushState: ${Ln.state.key}`),Ln.state}async function Wn(e){if(null!==e.state)if(_n(e.state.key)){_n(e.state.rev)||e.state.rev===e.state.key?(M.pages[e.state.rev].scrollX=window.scrollX,M.pages[e.state.rev].scrollY=window.scrollY):Be(e.state.rev),console.log(window.scrollY);const t=M.pages[e.state.key];4===t.type?D(1,`History popState reverse (snapshot): ${t.key}`):D(1,`History popState session (snapshot): ${t.key}`),Yn("type",5),On(t)}else{1===M.logLevel&&D(1,`History popState fetch: ${e.state.key}`),e.state.type=5;const t=await Ge(e.state);if(!t)return location.assign(e.state.key);const n=co(location);if(t.key===n)On(t);else if(_n(n))On(M.pages[n]);else{const e=Fn(fo(n,5));await Ge(e),Mn(e)}}}function Dn(e){if(!M.observe.history)return Ln.scrollRestoration&&(Ln.scrollRestoration="manual"),addEventListener("popstate",Wn,!1),M.observe.history=!0,"object"==typeof e&&0===e.type?jn(e):e}function Xn(){M.observe.history&&(Ln.scrollRestoration&&(Ln.scrollRestoration="auto"),removeEventListener("popstate",Wn,!1),removeEventListener("load",In,!1),M.observe.history=!1)}function Fn(e){const t=ce(e);return e.ts=ae(),e.target=de(e),t("selector")||("body"===e.target[0]?e.selector="body":e.selector=fe(e.target)),M.config.cache&&(t("cache")||(e.cache=M.config.cache),t("snap")||(e.snap=me())),t("scrollY")||(e.scrollY=0),t("scrollX")||(e.scrollX=0),!1!==M.config.hover&&10===e.type&&(t("threshold")||(e.threshold=M.config.hover.threshold)),!1!==M.config.proximity&&12===e.type&&(t("proximity")||(e.proximity=M.config.proximity.distance),t("threshold")||(e.threshold=M.config.proximity.threshold)),M.config.progress&&!t("progress")&&(e.progress=M.config.progress.threshold),t("fragments")||(e.fragments=M.config.fragments),t("history")||(e.history=!0),t("visits")||(e.visits=0),t("components")||(e.components=[]),M.pages[e.key]=e,M.pages[e.key]}function zn(e){const t=y(L(e),{target:[],selector:null,cache:M.config.cache,history:!0,scrollX:0,scrollY:0,fragments:M.config.fragments});return M.config.hover&&(t.threshold=M.config.hover.threshold),M.config.proximity&&(t.proximity=M.config.proximity.distance,t.threshold=M.config.proximity.threshold),M.config.progress&&(t.progress=M.config.progress.threshold),t}function Yn(e,t,n=Ln.state.key){return"location"===e?M.pages[n][e]=y(M.pages[n][e],t):"target"===e?(M.pages[n].target=de(t),M.pages[n].selector=fe(M.pages[n].target)):"components"===e?M.pages[n].components=t:M.pages[n][e]=t,M.pages[n]}function Vn(e,t){const n=We("before:cache",e,t),o="string"==typeof n?n:t;return e.type>5&&e.type>9&&(e.type=1),e.title=Me(t),M.config.cache&&!1!==n?0===e.type||"snap"in e?(M.pages[e.key]=e,M.snaps[e.snap]=o,gt(e),We("after:cache",e),e):Un(e,o):e}function Un(e,t){const n=e.key in M.pages?M.pages[e.key]:Fn(e);return"string"==typeof t&&(M.snaps[n.snap]=t,e.title=Me(t)),y(n,e)}function Bn(e,t){const n=t=t?47===t.charCodeAt(0)?t in M.pages?M.pages[t].snap:null:t:M.page.snap;n?M.snaps[n]=e:D(3,"Snapshot record does not exist, update failed")}function Kn(e){if(!e){if(null===Ln.state)return void D(3,"Missing history state reference, page cannot be returned");e=Ln.state.key}if(e in M.pages)return k(L(),{page:{get:()=>M.pages[e]},dom:{get:()=>je(M.snaps[M.pages[e].snap])}});D(5,`No record exists: ${e}`)}function Gn(e){const t=e=e?47===e.charCodeAt(0)?M.pages[e].snap:e:M.page.snap;return je(M.snaps[t])}function Jn({mounted:e=null}={}){const t=L(),{h:n,k:o}=M.components;for(const s of n.values()){const{scope:n}=s;o.has(n.key)&&(null!==e&&n.mounted===e||(null===n.alias||n.alias in t?n.instanceOf in t?t[n.instanceOf].push(s):t[n.instanceOf]=[s]:t[n.alias]=[s]))}return t}function Zn(e){if(!e){if(null===Ln.state)return void D(3,"Missing history state reference, page cannot be returned");e=Ln.state.key}if(e in M.pages)return M.pages[e];D(5,`No page record exists for: ${e}`)}function _n(e){return le(M.pages,e)&&le(M.pages[e],"snap")&&le(M.snaps,M.pages[e].snap)&&"string"==typeof M.snaps[M.pages[e].snap]}function Qn(e){e?"string"==typeof e?(delete M.snaps[M.pages[e].snap],delete M.pages[e]):A(e)&&Ae((e=>{delete M.snaps[M.pages[e].snap],delete M.pages[e]}),e):(xe(M.pages),xe(M.snaps))}t(Pn,"reverse"),t(Rn,"has"),t(In,"load"),t(jn,"initialize"),t(Hn,"replace"),t(Mn,"push"),t(Wn,"pop"),t(Dn,"connect"),t(Xn,"disconnect"),t(Fn,"create"),t(zn,"newPage"),t(Yn,"patchPage"),t(Vn,"set"),t(Un,"update"),t(Bn,"setSnap"),t(Kn,"get"),t(Gn,"getSnapDom"),t(Jn,"getMounted"),t(Zn,"getPage"),t(_n,"has"),t(Qn,"clear");var eo=g.replace(/(?:https?:)?(?:\/\/(?:www\.)?|(?:www\.))/,N);function to(e,t){const n=t?zn(t):L(),o=e.getAttributeNames();for(let s=0,r=o.length;s, expected: y:number or x:number`,e);else"scroll"===t?Y.test(s)?n.scrollY=+s:D(3,`Invalid attribute value on <${r}>, expected: number`,e):z.test(s)&&!U.test(r)?n[t]="true"===s:V.test(s)?n[t]=+s:("history"===t&&"push"!==s&&"replace"!==s&&D(5,`Invalid attribute value on <${r}>, expected: false, push or replace`,e),n[t]=s)}}}return n}function no(e){const t=L();if(1===e.length&&47===e.charCodeAt(0))return t.pathname=e,t.hash=N,t.search=N,t;const n=e.indexOf("#");n>=0?(t.hash=e.slice(n),e=e.slice(0,n)):t.hash=N;const o=e.indexOf("?");return o>=0?(t.search=e.slice(o),e=e.slice(0,o)):t.search=N,t.pathname=e,t}function oo(e,t){const n=e.indexOf("/",t);if(n>t){const t=e.indexOf("#",n);return t<0?e.slice(n):e.slice(n,t)}const o=e.indexOf("?",t);if(o>t){const t=e.indexOf("#",o);return t<0?e.slice(o):e.slice(o,t)}return e.length-t===eo.length?"/":null}function so(e){const t=e.startsWith("www.")?e.slice(4):e,n=t.indexOf("/");if(n>=0){const e=t.slice(n);if(t.slice(0,n)===eo)return e.length>0?no(e):no("/")}else{const e=t.search(/[?#]/);if(e>=0){if(t.slice(0,e)===eo)return no("/"+t.slice(e))}else if(t===eo)return no("/")}return null}function ro(e){return e.startsWith("http")?1:e.startsWith("//")?2:e.startsWith("www.")?3:1}function io(e){if("string"!=typeof e||0===e.length)return!1;if(47===e.charCodeAt(0))return 47!==e.charCodeAt(1)||(e.startsWith("www.",2)?e.startsWith(eo,6):e.startsWith(eo,2));if(63===e.charCodeAt(0))return!0;if(e.startsWith("www."))return e.startsWith(eo,4);if(e.startsWith("http")){const t=e.indexOf("/",4)+2;return e.startsWith("www.",t)?e.startsWith(eo,t+4):e.startsWith(eo,t)}}function ao(e){return 47===e.charCodeAt(0)?47!==e.charCodeAt(1)?no(e):so(e.slice(2)):63===e.charCodeAt(0)?no(location.pathname+e):e.startsWith("https:")||e.startsWith("http:")?so(e.slice(e.indexOf("/",4)+2)):e.startsWith("www.")?so(e):null}function co(e){if("object"==typeof e)return e.pathname+e.search;if(e===N||"/"===e)return"/";const t=ro(e);if(1===t){const t=115===e.charCodeAt(4)?8:7,n=e.startsWith("www.",t)?t+4:t;return e.startsWith(eo,n)?oo(e,n):null}if(2===t){const t=e.startsWith("www.",2)?6:2;return e.startsWith(eo,t)?oo(e,t):null}return 3===t?e.startsWith(eo,4)?oo(e,4):null:e.startsWith(eo,0)?oo(e,0):null}function lo(){const{pathname:e,search:t,hash:n}=location;return L({hostname:eo,origin:g,pathname:e,search:t,hash:n})}function uo(e){if(e===N)return lo();const t=ao(e);return null===t&&D(5,`Invalid pathname: ${e}`),t.origin=g,t.hostname=eo,t}function fo(e,t=6){if(e instanceof Element){const n=to(e);return n.type=t||6,n}const n=L();return 0===e?(n.location=lo(),n.key=n.rev=co(n.location),n.type=e,n.visits=1,M.index=n.key):7===t?(n.location=uo(e),n.key=n.rev=co(n.location),n.type=t):(n.rev=location.pathname+location.search,n.location=uo("string"==typeof e?e:n.rev),n.key=co(n.location),n.type=t),n}function po(e){return!(e.target&&e.target.isContentEditable||e.defaultPrevented||e.button>1||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)}t(to,"getAttributes"),t(no,"parsePath"),t(oo,"getPath"),t(so,"parseOrigin"),t(ro,"hasOrigin"),t(io,"validKey"),t(ao,"parseKey"),t(co,"getKey"),t(lo,"fallback"),t(uo,"getLocation"),t(fo,"getRoute"),t(po,"linkEvent");var ho=t((function(e){if(!po(e))return;const n=on(e.target,M.qs.F);if(!n)return;const o=co(n.href);if(null===o)return;const s=o===M.page.key,r=t((()=>{D(3,`Drag occurance deteced, cancelled visit: ${o}`),ho.drag=!0,n.removeEventListener(`${m}move`,r)}),"move");if(n.addEventListener(`${m}move`,r,{once:!0}),!0===ho.drag)return ho.drag=!1,ho(e);if(n.removeEventListener(`${m}move`,r),!We("visit",e))return;const i=t(((e,t=!0)=>{M.pages[e.key].ts=ae(),M.pages[e.key].visits=e.visits+1,M.pages[e.rev].scrollX=window.scrollX,M.pages[e.rev].scrollY=window.scrollY,s?D(2,`Identical pathname, page visit skipped: ${o}`):(Hn(M.pages[e.rev]),t?(Mn(e),On(e)):mo(e))}),"click");if(hn(),Cn(),yn(),_n(o)){const e=Un(to(n,M.pages[o]));n.onclick=t=>{t.preventDefault(),i(e)}}else if(H.j.has(o)){Ve(o),D(2,`Request in transit: ${o}`);const e=M.pages[o];n.onclick=t=>{t.preventDefault(),i(e,!1)}}else{Ve(),ze(o);const e=Fn(fo(n,6));Ge(e),n.onclick=t=>{t.preventDefault(),i(e,!1)}}}),"handle");async function mo(e){e.progress&&qe.start(e.progress);const t=await Ke(e);t?(Mn(t),On(t)):location.assign(e.key)}async function go(e,t){if(!t)return mo(M.pages[e]);{"string"==typeof t.cache&&("clear"===t.cache?Qn():Qn(t.key)),t.progress&&qe.start(t.progress);const e=await Ge(t);e?(Mn(e),On(e)):location.assign(t.key)}}function yo(){M.observe.hrefs||(ho.drag=!1,"mouseOnly"===p?addEventListener(`${m}down`,ho,!1):("touchOnly"===p||addEventListener(`${m}down`,ho,!1),addEventListener("touchstart",ho,!1)),M.observe.hrefs=!0)}function vo(){M.observe.hrefs&&("mouseOnly"===p?removeEventListener(`${m}down`,ho,!1):("touchOnly"===p||removeEventListener(`${m}down`,ho,!1),removeEventListener("touchstart",ho,!1)),M.observe.hrefs=!1)}function bo(){const e=Dn(Fn(fo(0)));k(M,{prev:{get:()=>M.pages[Ln.state.rev]},page:{get:()=>M.pages[Ln.state.key]},snapDom:{get:()=>je(M.snaps[M.page.snap])}});const n=t((()=>{const t=Vn(e,He());return yo(),mt(),!1===M.config.manual&&(pn(),gn(),En(),dt(),kn()),se((()=>{Yn("type",6),Be(t),Ue(t)})),We("x"),t}),"DOMReady");return new Promise((e=>{const{readyState:t}=document;if("interactive"===t||"complete"===t)return e(n());addEventListener("DOMContentLoaded",(()=>e(n())))}))}function $o(){hn(),pn(),yn(),gn(),Cn(),En(),ft(),dt(),wn(),kn()}function ko(){Xn(),vo(),wn(),hn(),yn(),Cn(),M.config.components&&(ft(),ct(),M.components.n.clear()),Qn(),M.config.globalThis&&delete window.spx,D(2,"Disconnected")}t(mo,"visit"),t(go,"navigate"),t(yo,"connect"),t(vo,"disconnect"),t(bo,"initialize"),t($o,"observe"),t(ko,"disconnect");var wo=L({get $(){return M},Component:tt,on:De,off:Xe,observe:$o,connect:Ao,component:xo,capture:So,form:Lo,render:To,session:Eo,reload:Co,fetch:qo,clear:Qn,hydrate:Po,prefetch:Oo,visit:Ro,disconnect:ko,register:No,get config(){return M.config},supported:!!(h&&window.history.pushState&&window.requestAnimationFrame&&window.DOMParser&&window.Proxy),history:L({get state(){return Ln.state},api:Ln,push:Mn,replace:Hn,has:Rn,reverse:Pn})});function Ao(e={}){if(!1===h)return D(5,"Invalid runtime environment: window is undefined.");if(!wo.supported)return D(5,"Browser does not support SPX");if(!window.location.protocol.startsWith("http"))return D(5,"Invalid protocol, SPX expects HTTPS or HTTP protocol");Ie(e),M.config.globalThis&&!1===le(window,"spx")&&ue(window,"spx",wo);const t=bo();return async function(e){const n=await t;if("AsyncFunction"===e.constructor.name)try{await e(n)}catch(e){D(3,"Connection Error",e)}else e(n);D(2,"Connection Established")}}function xo(e){return Jn()[e][0]}function No(...e){if("string"==typeof e[0])e.length>2&&D(5,[`Named component registration expects 2 parameters, recieved ${e.length}.`,'Registry should follow this structure: spx.register("identifer", YourComponent)'],e),Se({[it[0]]:e[1]});else for(const t of e)if(A(t))for(const e of t)"string"==typeof e[0]?Se({[e[0]]:e[1]}):"function"==typeof e&&Se({[Te(e)]:e},!0);else{const e=typeof t;"function"===e?Se({[Te(t)]:t},!0):"object"===e&&Se(t)}M.ready?dt():De("x",t((function e(){dt(),Xe("x",e),We("connected")}),"run"))}function Eo(){return k(L(),{config:{get:()=>M.config},snaps:{get:()=>M.snaps},pages:{get:()=>M.pages},observers:{get:()=>M.observe},components:{get:()=>M.components},fragments:{get:()=>M.fragments},memory:{get(){const e=M.memory;return e.size=ye(e.bytes),e}}})}async function Co(){const e=M.pages[Ln.state.key];e.type=9;const t=await Ge(e);return t?(D(2,"Triggered reload, page was re-cached"),On(t)):(D(3,"Reload failed, triggering refresh (cache will purge)"),location.assign(e.key))}async function qo(e){const t=fo(e,2);t.location.origin!==g&&D(5,"Cross origin fetches are not allowed");const n=await Fe(t.key);if(n)return n}async function To(e,t,n){const o=M.page,s=fo(e);s.location.origin!==g&&D(5,"Cross origin fetches are not allowed");const r=await Fe(s.key,{type:"document"});if(r||D(5,`Fetch failed for: ${s.key}`,r),await n.call(o,r),"replace"===t){o.title=r.title;const e=Un(y(o,s),He(r));return Hn(e),e}return On(Vn(s,He(r)))}function So(e){const t=Zn();if(!t)return;const n=Gn();if(1===(e=A(e)?e:t.target).length&&"body"===e[0])return nn(n.body,S()),void Un(t,He(n));const o=e.join(","),s=S().querySelectorAll(o);we(n.body.querySelectorAll(o),((e,t)=>{nn(e,s[t])})),Un(t,He(n))}async function Oo(e){const t=fo(e,1);if(_n(t.key))return void D(3,`Cache already exists for ${t.key}, prefetch skipped`);const n=await Ge(Fn(t));if(n)return n;D(5,`Prefetch failed for ${t.key}`)}async function Lo(e,t){const n=new FormData;for(const e in t.data)n.append(e,t.data[e]);return await Fe(e,{method:t.method,body:n})}async function Po(e,t){const n=fo(e,7);if(Ge(n),A(t)){n.hydrate=[],n.preserve=[];for(const e of t)33===e.charCodeAt(0)?n.preserve.push(e.slice(1)):n.hydrate.push(e)}else n.hydrate=M.config.fragments;const o=await Ke(n);if(o){const{key:e}=Ln.state;if(Hn(o),On(o),n.key!==e){M.index===e&&(M.index=n.key);for(const t in M.pages)M.pages[t].rev===e&&(M.pages[t].rev=n.key);Qn(e)}}return Gn(o.key)}async function Ro(e,t){const n=fo(e),o="object"==typeof t?y(n,t):n;return _n(n.key)?go(n.key,Un(o)):go(n.key,Fn(o))}t(Ao,"connect"),t(xo,"component"),t(No,"register"),t(Eo,"session"),t(Co,"reload"),t(qo,"fetch"),t(To,"render"),t(So,"capture"),t(Oo,"prefetch"),t(Lo,"form"),t(Po,"hydrate"),t(Ro,"visit");var Io=wo;export{Io as default}; \ No newline at end of file diff --git a/package.json b/package.json index ef7701d..d9d1742 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "spx", - "version": "0.1.2-beta.1", + "version": "0.1.3-beta.1", "private": false, "description": "Single Page XHR - The essential enhancement for SSR powered web applications", "homepage": "https://spx.js.org", @@ -93,4 +93,4 @@ "eslint": "^8.57.0", "prettier": "^3.2.5" } -} \ No newline at end of file +} diff --git a/src/app/config.ts b/src/app/config.ts index b0d0362..3a50b8c 100644 --- a/src/app/config.ts +++ b/src/app/config.ts @@ -138,7 +138,9 @@ function fragments (options: Options) { } } } else { + return [ 'body' ]; + } return elements; diff --git a/src/app/queries.ts b/src/app/queries.ts index 278b9df..6479f7b 100644 --- a/src/app/queries.ts +++ b/src/app/queries.ts @@ -163,13 +163,13 @@ export function set (state: Page, snapshot: string): Page { // If cache is disabled or the lifecycle event // returned a boolean false values we will return the record if (!$.config.cache || event === false) return state; - if (!('snap' in state)) return update(state, dom); + if (state.type !== VisitType.INITIAL && !('snap' in state)) return update(state, dom); // Lets assign this record to the session store $.pages[state.key] = state; $.snaps[state.snap] = dom; - fragments.snapshots(state); + fragments.setFragmentElements(state); emit('after:cache', state); @@ -205,6 +205,15 @@ export function update (page: Page, snapshot?: string): Page { } +/** + * Set Snapshot + * + * Replaces an exisiting snapshot DOM String with the provided `snapshot` + * value. This function is used to align marked snapshots, wherein elements + * are updated with identifier references such as `t.a1b2c4` (targets) or `f.a1b2c3` + * (fragments) etc etc. Call to this function are typically occurring outside the + * event loop. + */ export function setSnap (snapshot: string, key?: string) { const snap = key = key diff --git a/src/app/render.ts b/src/app/render.ts index 65ac045..f196591 100644 --- a/src/app/render.ts +++ b/src/app/render.ts @@ -183,7 +183,7 @@ function morphNodes (page: Page, snapDom: Document) { for (const id of page.fragments) { const curNode = $.fragments.get(id); - const newNode = snapDom.getElementById(id); + const newNode = snapDom.body.querySelector(id); if (!newNode || !curNode) continue; if (!emit('render', curNode, newNode)) continue; diff --git a/src/components/context.ts b/src/components/context.ts index e07c16a..9d5428a 100644 --- a/src/components/context.ts +++ b/src/components/context.ts @@ -250,7 +250,8 @@ export function setScope (instanceOf: string, dom?: HTMLElement, context?: Conte const scope: Scope = o>({ key, mounted: Hooks.UNMOUNTED, - connect: false, + connected: false, + snapshot: null, ref: `c.${key}`, state: o(), nodes: o(), diff --git a/src/components/extends.ts b/src/components/extends.ts index 5951845..2096704 100644 --- a/src/components/extends.ts +++ b/src/components/extends.ts @@ -65,7 +65,7 @@ export const Component = class { * * Holds a reference to the DOM Document element `` node. */ - get html () { return this.dom.closest('html'); }; + get html () { return document.documentElement; }; /** * Constructor @@ -97,7 +97,9 @@ export const Component = class { set: (target, key: string, value) => { const preset = scope.define.state[key]; - const domValue = typeof value === 'object' || isArray(value) ? JSON.stringify(value) : `${value}`; + const domValue = typeof value === 'object' || isArray(value) + ? JSON.stringify(value) + : `${value}`; if (typeof preset === 'object' && hasProp(preset, 'persist') && preset.persist) { target[key] = scope.state[key] = value; @@ -122,7 +124,9 @@ export const Component = class { const { binds } = scope; for (const id in binds[key]) { + binds[key][id].value = domValue; + if ($elements.has(binds[key][id].dom)) { $elements.get(binds[key][id].dom).innerText = domValue; } @@ -217,13 +221,13 @@ export const Component = class { : this.dom.getAttribute(`${prefix}:${prop}`); /** - * The JSON value defintion - */ + * The JSON value defintion + */ let json: boolean; /** - * Whether or not dom state reference exists - */ + * Whether or not dom state reference exists + */ const defined = value !== null && value !== nil; if (typeof attr === 'object') { diff --git a/src/components/instances.ts b/src/components/instances.ts index 270084e..09585dd 100644 --- a/src/components/instances.ts +++ b/src/components/instances.ts @@ -148,7 +148,7 @@ export function setInstances ({ $scopes, $aliases, $nodes, $morph }: Context) { scope.key = instance.scope.key; scope.ref = instance.scope.ref; - scope.connect = instance.scope.connect; + scope.connected = instance.scope.connected; scope.mounted = instance.scope.mounted = Hooks.MOUNTED; } else { @@ -211,10 +211,7 @@ export function setInstances ({ $scopes, $aliases, $nodes, $morph }: Context) { if ('connect' in instance) { - promises.push([ - scope.key, - 'connect' - ]); + promises.push([ scope.key, 'connect' ]); if (isInitial) { instance.scope.mounted = Hooks.CONNNECT; diff --git a/src/components/listeners.ts b/src/components/listeners.ts index 59a80d8..bc303b5 100644 --- a/src/components/listeners.ts +++ b/src/components/listeners.ts @@ -67,12 +67,10 @@ export function removeEvent (instance: Class, event: ComponentEvent) { $.components.$elements.delete(event.dom); - if ($.logLevel === LogType.VERBOSE) { - log(LogType.VERBOSE, [ - `Detached ${event.key} ${event.eventName} event from ${event.method}() method in component`, - `${instance.scope.define.name}: ${instance.scope.key}` - ]); - } + log(LogType.VERBOSE, [ + `Detached ${event.key} ${event.eventName} event from ${event.method}() method in component`, + `${instance.scope.define.name}: ${instance.scope.key}` + ]); } @@ -106,11 +104,9 @@ export function addEvent (instance: Class, node: HTMLElement, event: ComponentEv event.attached = true; - if ($.logLevel === LogType.VERBOSE) { - log(LogType.VERBOSE, [ - `Attached ${event.key} ${event.eventName} event to ${event.method}() method in component`, - `${instance.scope.define.name}: ${instance.scope.key}` - ]); - } + log(LogType.VERBOSE, [ + `Attached ${event.key} ${event.eventName} event to ${event.method}() method in component`, + `${instance.scope.define.name}: ${instance.scope.key}` + ]); } diff --git a/src/components/observe.ts b/src/components/observe.ts index a118ee5..83c2a25 100644 --- a/src/components/observe.ts +++ b/src/components/observe.ts @@ -91,6 +91,11 @@ function disconnect (curNode: HTMLElement, refs: string[], newNode?: HTMLElement $connected.delete(id); $elements.delete(instance.scope.dom); + if (scope.define.merge) { + scope.snapshot = curNode.outerHTML; + log(LogType.VERBOSE, `Component ${scope.define.name} snapshot: ${scope.key}`, Colors.GRAY); + } + for (const key in scope.nodes) { $elements.delete(scope.nodes[key].dom); } @@ -187,6 +192,7 @@ export function updateNode (curNode: HTMLElement, newNode: HTMLElement, cRef: an if (cRef && nRef) { + console.log(curNode, newNode); disconnect(curNode, cRef); connect(curNode, nRef); diff --git a/src/components/register.ts b/src/components/register.ts index 1656975..d54f952 100644 --- a/src/components/register.ts +++ b/src/components/register.ts @@ -1,8 +1,9 @@ import type { ComponentRegister, Merge } from 'types'; import { $ } from '../app/session'; -import { camelCase, downcase, hasProp, hasProps } from '../shared/utils'; +import { camelCase, downcase } from '../shared/utils'; import { Colors, LogType } from '../shared/enums'; import { log } from '../shared/logs'; +import { assign } from '../shared/native'; type Register = Merge(scopeKey); @@ -114,7 +122,7 @@ export function hook () { const event = scope.mounted === Hooks.UNMOUNT ? 'unmount' : 'onmount'; if (instance && event in instance) { - if (event === 'onmount' && 'connect' in instance && scope.connect === false) { + if (event === 'onmount' && 'connect' in instance && scope.connected === false) { promises.push([ scopeKey, 'connect', diff --git a/src/observe/fragment.ts b/src/observe/fragment.ts index 88dbbc8..edb4264 100644 --- a/src/observe/fragment.ts +++ b/src/observe/fragment.ts @@ -1,9 +1,10 @@ import type { Page } from 'types'; import { $ } from '../app/session'; import { getSnapDom, patchPage, setSnap } from '../app/queries'; -import { VisitType } from '../shared/enums'; -import { d } from '../shared/native'; +import { LogType, VisitType } from '../shared/enums'; +import { d, nil, toArray } from '../shared/native'; import { forNode, onNextTick, uuid } from '../shared/utils'; +import { log } from '../shared/logs'; /** * Connect Fragments @@ -13,60 +14,75 @@ import { forNode, onNextTick, uuid } from '../shared/utils'; */ export function connect () { - const fragments = []; + const fragment = $.config.fragments; + + const selector = fragment.length === 1 && fragment[0] === 'body' + ? $.qs.$fragments + : `${fragment.join()},${$.qs.$fragments}`; + + d().querySelectorAll(selector).forEach(node => { + + let dynamic: string = node.getAttribute($.qs.$fragment); + + if (dynamic !== null) { + + dynamic = dynamic.trim(); + + if (node.id !== nil && (dynamic === 'true' || dynamic === nil)) { + $.fragments.set(`#${node.id}`, node); + } else { + $.fragments.set(`${node.nodeName.toLowerCase()}[${$.qs.$fragment}="${dynamic}"]`, node); + } - for (const id of $.page.fragments) { - const element = document.getElementById(id); - if (element) { - $.fragments.set(id, element); - fragments.push(id); } else { - $.fragments.delete(id); + $.fragments.set(`#${node.id}`, node); } - } - patchPage('fragments', fragments); + }); + + patchPage('fragments', toArray($.fragments.keys())); } /** - * Snapshot Fragments + * Set Fragment elements * * Checks snapshots outside the event loop for fragment targets * and marks them accordingly. */ -export function snapshots (page: Page) { +export function setFragmentElements (page: Page) { if (page.type !== VisitType.VISIT) { + if (page.selector === 'body' || page.selector === null) return; + onNextTick(() => { const snapDom = getSnapDom(page.snap); - const selector = page.selector !== 'body' && page.selector !== null - ? `${$.qs.$targets}` - : $.qs.$targets; - - const targets = snapDom.body.querySelectorAll(selector); - const domNode = page.type === VisitType.INITIAL - ? d().querySelectorAll(selector) - : null; + const targets = snapDom.body.querySelectorAll($.qs.$targets); + const domNode = d().querySelectorAll($.qs.$targets); // console.log(targets, domNode); forNode(targets, (node, index) => { - // SKIP ELEMENTS - // NOTE: Added during slotenmaker build, might break something, check at later time - if (node.nodeName === 'A') return; - if (contains(node)) return; + if (contains(node)) { + + log( + LogType.WARN, + 'The fragment or target is a decedent of an element which morphs', + node + ); + + return; + + } if (!node.hasAttribute('id')) { node.setAttribute('id', `t.${uuid()}`); - if (domNode !== null) { - domNode[index].setAttribute('id', `t.${uuid()}`); - } + if (domNode !== null) domNode[index].setAttribute('id', `t.${uuid()}`); } else { diff --git a/src/observe/history.ts b/src/observe/history.ts index 6138e3e..d27bb41 100644 --- a/src/observe/history.ts +++ b/src/observe/history.ts @@ -101,9 +101,7 @@ export function replace ({ key, rev, title, scrollX, scrollY }: HistoryState) { api.replaceState(state, state.title, state.key); - if ($.logLevel === LogType.VERBOSE) { - log(LogType.VERBOSE, `History replaceState: ${api.state.key}`); - } + log(LogType.VERBOSE, `History replaceState: ${api.state.key}`); return api.state; @@ -127,9 +125,7 @@ export function push ({ key, rev, title, location }: Page) { api.pushState(state, state.title, path); - if ($.logLevel === LogType.VERBOSE) { - log(LogType.VERBOSE, `History pushState: ${api.state.key}`); - } + log(LogType.VERBOSE, `History pushState: ${api.state.key}`); return api.state; @@ -152,17 +148,24 @@ async function pop (event: PopStateEvent & { state: HistoryState }) { // We will carry on as normal if (!q.has(event.state.rev) && event.state.rev !== event.state.key) { + request.reverse(event.state.rev); + + } else { + + $.pages[event.state.rev].scrollX = window.scrollX; + $.pages[event.state.rev].scrollY = window.scrollY; + } + console.log(window.scrollY); + const page = $.pages[event.state.key]; - if ($.logLevel === LogType.VERBOSE) { - if (page.type === VisitType.REVERSE) { - log(LogType.VERBOSE, `History popState reverse (snapshot): ${page.key}`); - } else { - log(LogType.VERBOSE, `History popState session (snapshot): ${page.key}`); - } + if (page.type === VisitType.REVERSE) { + log(LogType.VERBOSE, `History popState reverse (snapshot): ${page.key}`); + } else { + log(LogType.VERBOSE, `History popState session (snapshot): ${page.key}`); } q.patchPage('type', VisitType.POPSTATE); diff --git a/src/observe/mutations.ts b/src/observe/mutations.ts index 46bf075..9affec8 100644 --- a/src/observe/mutations.ts +++ b/src/observe/mutations.ts @@ -57,8 +57,14 @@ export function connect () { if (!$.observe.mutations) return; - resources.observe(document.head, { childList: true }); - resources.observe(d(), { childList: true, subtree: true }); + resources.observe(document.head, { + childList: true + }); + + resources.observe(d(), { + childList: true, + subtree: true + }); $.observe.mutations = true; diff --git a/src/shared/dom.ts b/src/shared/dom.ts index 59f5969..0a10506 100644 --- a/src/shared/dom.ts +++ b/src/shared/dom.ts @@ -31,6 +31,7 @@ export function getTitle (dom: string) { const title = dom.indexOf(' -1) return nil; const start = dom.indexOf('>', title) + 1; const end = dom.indexOf(' LogType.INFO && type <= LogType.INFO) return; if (isArray(message)) message = message.join(' ');