-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathkeml.js
More file actions
7 lines (7 loc) · 15.2 KB
/
Copy pathkeml.js
File metadata and controls
7 lines (7 loc) · 15.2 KB
1
2
3
4
5
6
7
/*!
* keml 3.8.1 Enhance HTML with custom attributes for clean, server-driven interactivity.
* Docs: https://thealjey.github.io/keml/
* Repo: https://github.com/thealjey/keml/
* MIT (see LICENSE)
*/
"use strict";(()=>{var I=new Set,q=new Set,U=new Set,B=new Set,j=new Set;var Ft=new Event("navigate"),K=()=>{for(let e of I)e.dispatchEvent(Ft)};var h;h={XMLHttpRequest,EventSource,location,history,window,console,fetch};var Pe=[],ze=[],Ie=[],qe=[],Ue=[],Be=[],Ee,Q=!1,ee=!1,ge=!1,T=new Set,X=new Set,V=new Set,k=new Set,M=new Set,R=()=>ge=!0,je=()=>ge,Xe=()=>ge=!1,_=e=>Pe.push(e),Ve=()=>Pe.pop(),_e=e=>ze.push(e),We=()=>ze.pop(),$e=e=>Ie.push(e),Ge=()=>Ie.pop(),Ye=e=>qe.push(e),Je=()=>qe.pop(),Ze=()=>Ee=void 0,Ke=()=>Ee,Qe=e=>Ee=e,b=()=>Q=!0,et=()=>Q,tt=()=>Q=!1,x=()=>ee=!0,te=()=>Q=ee=!0,rt=()=>ee,nt=()=>ee=!1,st=e=>Ue.push(e),ot=()=>Ue.pop(),re=(e,t)=>Be.push([e,t]),it=()=>Be.pop();var Pt=new Event("conceal"),zt=e=>{for(let{isIntersecting:t,target:r}of e)t||r.dispatchEvent(Pt)},ve=new IntersectionObserver(zt);var It=e=>{for(let{target:t,isIntersecting:r}of e)t.isIntersecting=r;b()},be=new IntersectionObserver(It);var qt=e=>{let t,r,n,o=!1;for(let s of e)({target:t,contentRect:{width:r,height:n}}=s),(r||n||t.offsetParent!=null)&&(t.sizeEntry=s,o=!0);o&&x()},ne=new ResizeObserver(qt);var Ut=new Event("reveal"),Bt=e=>{for(let{isIntersecting:t,target:r}of e)t&&r.dispatchEvent(Ut)},ye=new IntersectionObserver(Bt);var at={get:"GET",post:"POST",put:"PUT",delete:"DELETE",href:"GET",action:"GET",src:"GET"},xe=Object.keys(at),jt=/\/+$/,W=e=>{let t=xe.find(e.hasAttribute,e),r=t?e.getAttribute(t):"",n=e.baseURI,o,s;try{o=new URL(r,n)}catch(m){(s=e.hasAttribute("log"))&&h.console.error(m);try{o=new URL("",n)}catch(F){s&&h.console.error(F),o=new URL("about:blank")}}let i=o.pathname.replace(jt,"");o.pathname=!i||i.lastIndexOf(".")<=i.lastIndexOf("/")?i+"/":i;let a=at[t]??"GET",d=e.getAttributeNode("method");return d&&(a=d.value.toUpperCase()),[o,a,e.hasAttribute("credentials")]};var Xt=new DOMParser,se=e=>Xt.parseFromString(e,"text/html");var $=class extends Set{constructor(r,n,o,s){super();this.url=r;this.withCredentials=n;this.onMessage=o;for(let i of s)this.add(i)}url;withCredentials;onMessage;source;addEventListener(r,n){this.source?.addEventListener(r,n)}removeEventListener(r,n){this.source?.removeEventListener(r,n)}handleError=()=>{if(this.source?.readyState===h.EventSource.CLOSED){this.close(),this.open();for(let r of this)this.addEventListener(r,this.handleMessage)}};handleMessage=({type:r,data:n})=>this.onMessage(this,r,se(n));open(){this.source=new h.EventSource(this.url,{withCredentials:this.withCredentials}),this.addEventListener("error",this.handleError)}close(){for(let r of this)this.removeEventListener(r,this.handleMessage);this.removeEventListener("error",this.handleError),this.source?.close(),this.source=void 0}add(r){let n=this.size;return super.add(r),n!==this.size&&(n||this.open(),this.addEventListener(r,this.handleMessage)),this}delete(r){let n=super.delete(r);return n&&(this.removeEventListener(r,this.handleMessage),this.size||this.close()),n}clear(){this.close(),super.clear()}reconcileWith(r){let n=this.size,o=this.difference(r),s=r.difference(this);for(let i of o)super.delete(i),this.removeEventListener(i,this.handleMessage);for(let i of s)super.add(i);!n&&this.size?this.open():n&&!this.size&&this.close();for(let i of s)this.addEventListener(i,this.handleMessage)}};var w=class e extends Map{constructor(r){super();this.onPayload=r}onPayload;elements=new Set;static _instance;static get instance(){return e._instance??(e._instance=new e(_))}addElement=r=>this.elements.add(r);deleteElement=r=>this.elements.delete(r);getEvent(r){return r.getAttribute("sse")||"message"}onMessage=(r,n,o)=>{let s;for(let i of this.elements){let[a,,d]=W(i);this.getEvent(i)===n&&a.href===r.url.href&&d===r.withCredentials&&this.onPayload({target:{ownerElement:i,responseXML:s?s.cloneNode(!0):s=o,status:200}})}};start(){let r=new Map,n=new Map,o=new Set;for(let s of this.elements){let[i,,a]=W(s),d=this.has(i.href)?r:n,m=d.get(i.href);m||d.set(i.href,m=[new Set,new Set,i]),m[+a].add(this.getEvent(s)),o.add(i.href)}for(let[s,[i,a]]of this)o.has(s)||(i.clear(),a.clear(),this.delete(s));for(let[s,[i,a]]of r){let[d,m]=this.get(s);d.reconcileWith(i),m.reconcileWith(a)}for(let[s,[i,a,d]]of n)this.set(s,[new $(d,!1,this.onMessage,i),new $(d,!0,this.onMessage,a)])}stop=()=>{for(let[r,n]of this.values())r.clear(),n.clear();this.clear()}};var lt=e=>Object.prototype.toString.call(e)==="[object RegExp]";var dt,ct=e=>dt=e,ut=()=>dt;var mt=new Set,Vt=["INPUT","SELECT","TEXTAREA"];function ie(e){return!e||(typeof e=="string"?e===this:lt(e)?e.test(this):e.some(ie,this))}function oe({attributes:e}){for(let{name:t}of e)if(ie.call(t,this.match))return!1;return!0}var pt=[{match:["if:intersects","ref:width","ref:height"],gate:({sizeEntry:e})=>!e,added(e){let t=e.getBoundingClientRect(),r=[{blockSize:t.height,inlineSize:t.width}];e.sizeEntry={borderBoxSize:r,contentBoxSize:r,devicePixelContentBoxSize:r,contentRect:t,target:e}}},{gate:(e,t)=>e.hasAttribute(`on:attr:${t}`),addedAttr:re,removedAttr:re,changed:re},{match:[/^ref:/,/^link:/],added:x,removed:x,changed:x},{gate:(e,t)=>e.hasAttribute(`ref:${t}`),added:x,removed:x,changed:x},{match:["ref:width","ref:height"],added:e=>ne.observe(e),destroyed:e=>ne.unobserve(e)},{match:["ref:width","ref:height"],gate:oe,removed:e=>ne.unobserve(e)},{match:/^ref:/,added:e=>k.add(e),destroyed:e=>k.delete(e)},{match:/^ref:/,gate:oe,removed:e=>k.delete(e)},{match:/^link:/,added:e=>M.add(e),destroyed:e=>M.delete(e)},{match:/^link:/,gate:oe,removed:e=>M.delete(e)},{match:"autofocus",added:Qe},{match:"clear-timeout",added:e=>j.add(e),removed:e=>j.delete(e)},{match:"if",added:e=>X.add(e),removed:e=>X.delete(e)},{match:["if",/^if:/],added:b,removed:b,changed:b},{match:/^if:/,added:e=>T.add(e),destroyed:e=>T.delete(e)},{match:/^if:/,gate:oe,removed:e=>T.delete(e)},{match:"if:intersects",added:e=>be.observe(e),removed:e=>be.unobserve(e)},{match:"if:intersects",gate:({isIntersecting:e})=>e==null,added(e){let{top:t,right:r,bottom:n,left:o}=e.sizeEntry.contentRect;e.isIntersecting=n>0&&r>0&&o<innerWidth&&t<innerHeight}},{match:"on",added:e=>q.add(e),removed:e=>q.delete(e)},{match:/^on:/,gate:(e,t)=>!mt.has(t),added(e,t){mt.add(t),document.addEventListener(t.slice(3),ut(),!0)}},{match:"on:conceal",added:e=>ve.observe(e),removed:e=>ve.unobserve(e)},{match:"on:navigate",added:e=>I.add(e),removed:e=>I.delete(e)},{match:"on:reveal",added:e=>ye.observe(e),removed:e=>ye.unobserve(e)},{match:"on:discover",added:st},{match:"render",added:e=>V.add(e),removed:e=>V.delete(e)},{match:"reset",added:e=>U.add(e),removed:e=>U.delete(e)},{match:"scroll",added:e=>B.add(e),removed:e=>B.delete(e)},{match:"sse",added:w.instance.addElement,removed:w.instance.deleteElement},{match:"sse",added:R,removed:R,changed:R},{match:xe.concat("credentials"),gate:e=>e.hasAttribute("sse"),added:R,removed:R,changed:R},{match:"value",gate:e=>!Vt.includes(e.tagName)&&e.hasAttribute("name"),serialize:(e,t,r)=>r?.formData?.append(e.getAttribute("name"),e.getAttribute("value"))}];var D=1,we=2,ae=4,Se=8,Le=16,Re=32,Ae=64,Ne=128,le=(e,t,r,n)=>{for(let o of pt)ie.call(r,o.match)&&(!o.gate||o.gate(t,r,n))&&(e&D&&o.added?.(t,r,n),e&we&&o.addedAttr?.(t,r,n),e&ae&&o.removed?.(t,r,n),e&Se&&o.removedAttr?.(t,r,n),e&Le&&o.changed?.(t,r,n),e&Re&&o.created?.(t,r,n),e&Ae&&o.destroyed?.(t,r,n),e&Ne&&o.serialize?.(t,r,n))};var C=e=>e?.nodeType===Node.ELEMENT_NODE;var A=(e,t,r)=>{for(let n=0,o=t.length,s,i,a;n<o;++n)if(C(s=t[n])){i=document.createNodeIterator(s,NodeFilter.SHOW_ELEMENT);do for(a of s.attributes)le(e,s,a.name,r);while(s=i.nextNode())}};var ht=e=>e.tagName==="FORM";var de=({searchParams:e},t)=>{if(t)for(let[r,n]of t)typeof n=="string"&&e.append(r,n)};var _t=/<!--\s*keml\s*-->/i,Wt={stream:!0},$t=new TextDecoder,ce=class{responseType;ownerElement;url;onloadend;init={headers:{}};responseText="";open(t,r){this.init.method=t,this.url=r}setRequestHeader(t,r){this.init.headers[t]=r}set withCredentials(t){t&&(this.init.credentials="include")}async send(t){t&&(this.init.body=t);let{status:r,body:n}=await h.fetch(this.url,this.init);if(n){for await(let o of n){this.responseText+=$t.decode(o,Wt);let s;for(;s=_t.exec(this.responseText);)this.respond(this.responseText.slice(0,s.index),r),this.responseText=this.responseText.slice(s.index+s[0].length)}this.respond(this.responseText,r)}}respond(t,r){this.onloadend({target:{status:r,responseXML:se(t),ownerElement:this.ownerElement}})}};var O=e=>e.timeoutId=clearTimeout(e.timeoutId);var ft=document.createElement("form"),Gt=Object.create(null),ue=e=>{if(O(e),e.checkValidity?.()??!0){e.hasAttribute("once")&&_e(e);let t=new FormData(ht(e)?e:(ft.replaceChildren(e.cloneNode(!0)),ft));A(Ne,[e],{formData:t});let r=e.getAttribute("redirect"),[n,o,s]=W(e);if(r==="pushState"||r==="replaceState")de(n,t),h.history[r](Gt,"",n),K();else if(r==="assign"||r==="replace")de(n,t),h.location[r](n);else if(n.protocol==="about:"&&n.pathname==="blank/")_({target:{ownerElement:e,status:200,responseXML:null}});else{o==="GET"&&(t=de(n,t));let i=new(e.hasAttribute("stream")?ce:h.XMLHttpRequest);i.responseType="document",i.withCredentials=s,i.ownerElement=e,i.onloadend=_,i.open(o,n),i.setRequestHeader("X-Requested-With","XMLHttpRequest");for(let{name:a,value:d}of e.attributes)a.startsWith("h-")&&i.setRequestHeader(a.slice(2),d);e.isError=!1,e.isLoading=!0,b(),i.send(t)}}};var Et=e=>{let t;(t=e.getAttributeNode("throttle"))?e.timeoutId??=setTimeout(ue,+t.value,e):(t=e.getAttributeNode("debounce"))?(O(e),e.timeoutId=setTimeout(ue,+t.value,e)):ue(e)};var H=(e,t)=>e&&t&&(e==t||e.startsWith(t+" ")||e.endsWith(t=" "+t)||e.includes(t+" "));function gt(e){let t=e.indexOf("="),r=(t<0?e:e.slice(0,t)).trim();return r&&(t<0&&!this[r]||t>=0&&this[r]+""!=e.slice(t+1).trim())}var Yt=[[q,"on",Et],[U,"reset",$e],[B,"scroll",Ye],[j,"clear-timeout",O]],vt=e=>{let{target:t,type:r}=e;if(C(t)){let n=`on:${r}`,o=t,s;for(;o&&!(s=o.getAttributeNode(n));)o=o.parentElement;if(o&&s){let i=s.value;if((s=o.getAttributeNode(`event:${r}`))&&(o.hasAttribute("log")&&h.console.log(e),s.value.split(",").some(gt,e)))return;e.preventDefault();for(let[a,d,m]of Yt)for(o of a)H(i,o.getAttribute(d))&&m(o)}}};var bt=e=>e.type==="checkbox"?e.checked:e.type==="file"?e.files:e.type==="image"?e.src:e.value;var yt=e=>Object.prototype.toString.call(e)==="[object FileList]";var Te=(e,t,r=0)=>{for(let n=r,o=e.length,s,i=t.nodeName,a=t.getAttribute?.("key");n<o;++n)if(i===(s=e[n]).nodeName&&a==s.getAttribute?.("key"))return[s,n]};function xt({name:e}){return this===e}var ke=e=>e!=null;var Jt=[["value",e=>e??""],["checked",ke],["selected",ke]],f=(e,t,r)=>{let n,o;typeof t=="string"?o=e.getAttributeNode(n=t):(o=t,n=t.name),o?r==null?e.removeAttributeNode(o):o.value!=r&&(o.value=r):r==null||e.setAttribute(n,r);for(let[s,i]of Jt)if(n===s&&n in e){let a=i(r);e[n]==a||(e[n]=a)}};var wt=e=>{let t=Array.from(e.attributes);for(let r of t){let{name:n,value:o}=r,s=n.slice(2),i=t.find(xt,s);n.startsWith("x-")?i?(f(e,r,i.value),f(e,i,o)):(f(e,r),f(e,"d-"+s,""),f(e,s,o)):n.startsWith("d-")&&(i&&(f(e,"x-"+s,i.value),f(e,i)),f(e,r))}},St=e=>{e.hasAttribute("state")||(wt(e),f(e,"state",""))},me=e=>{let t=e.getAttributeNode("state");t&&(f(e,t),wt(e))};var Lt=(e,t)=>{if(e.nodeName===t.nodeName){if(e.nodeValue===t.nodeValue||(e.nodeValue=t.nodeValue),C(e)){me(e);let r=e.attributes.length,n;for(;r--;)n=e.attributes[r],t.hasAttribute(n.name)||f(e,n);for(let{name:o,value:s}of t.attributes)f(e,o,s);pe.replaceChildren(e,Array.from(t.childNodes))}}else e.replaceWith(t)},pe={after(e,t){e.after(...t)},append(e,t){e.append(...t)},before(e,t){e.before(...t)},prepend(e,t){e.prepend(...t)},replaceWith(e,t){let r=t.length;if(r){let n=Te(t,e),o,s;n?([o,s]=n,s&&e.before(...t.slice(0,s)),++s):(o=t[0],s=1),r>s&&e.after(...t.slice(s)),Lt(e,o)}else e.remove()},replaceChildren(e,t){let r=e.childNodes,n=t.length,o=r.length,s=0,i,a;for(;s<n;++s)a=Te(r,i=t[s],s),a?(a[1]===s||e.insertBefore(a[0],r[s]),Lt(r[s],i)):s<o++?e.insertBefore(i,r[s]):e.appendChild(i);for(;o>n;)e.removeChild(r[--o])}};var Me=["borderBoxSize","contentBoxSize","devicePixelContentBoxSize","contentRect"],Rt=(e,t)=>{if(t==="width"||t==="height"){let{sizeEntry:r}=e,n=e.getAttribute("measure"),o,s;return Me.includes(n)||(n=Me[0]),n===Me[3]?{width:o,height:s}=r[n]:{inlineSize:o,blockSize:s}=r[n][0],t==="width"?o:s}return t in e?e[t]:e.getAttribute(t)};var De=!1,Ce=[],Zt=()=>{let e;for(;e=Ce.pop();)e[0](e[1],e[2])},Kt=()=>{De=!1},At=()=>{!De&&Ce.length&&(De=!0,document.startViewTransition(Zt).finished.finally(Kt))},Nt=(e,t,r)=>!!document.startViewTransition&&t.hasAttribute("transition")&&Ce.push([e,t,r]);var Oe=(e,t,r)=>{let n=e.getAttribute(r);if(n)if(isNaN(+n)){let o=r==="top"?e.scrollHeight-e.clientHeight:e.scrollWidth-e.clientWidth;n==="start"?t[r]=0:n==="center"?t[r]=o/2|0:n==="end"&&(t[r]=o)}else t[r]=+n};var Qt=[],Tt=["auto","instant","smooth"],er=new Event("result"),tr=new Event("failure"),rr=new Event("discover"),kt=new Map,He=()=>{let e,t,r,n,o,s,i,a,d,m,F,G,Y,J,N,g,Z,S,he,P;for(;e=Ge();)e.reset?.();for(;e=We();)f(e,"on");for(;o=Ve();){({ownerElement:t,status:N,responseXML:n}=o.target),d=t.getAttribute((t.isError=N>399)?"error":"result"),G=[],r=void 0;for(e of V)H(d,e.getAttribute("render"))&&G.push([e,n?Array.from((r?r.cloneNode(!0):r=n.body).childNodes):Qt]);for(;F=G.pop();)[e,J]=F,Y=pe[e.getAttribute("position")]??pe.replaceChildren,Nt(Y,e,J)||Y(e,J);t.isLoading=!1,b(),t.dispatchEvent(t.isError?tr:er)}if(At(),et()){tt(),m=[];for(e of T)!(e.checkValidity?.()??!0)&&(g=e.getAttributeNode("if:invalid"))&&m.push(g.value),(Z=bt(e))&&(!yt(Z)||Z.length)&&(g=e.getAttributeNode("if:value"))&&m.push(g.value),e.isIntersecting&&(g=e.getAttributeNode("if:intersects"))&&m.push(g.value),e.isLoading&&(g=e.getAttributeNode("if:loading"))&&m.push(g.value),e.isError&&(g=e.getAttributeNode("if:error"))&&m.push(g.value);d=m.join(" ");for(e of X)H(d,e.getAttribute("if"))?St(e):me(e)}if(rt()){nt();for(e of M)for({name:s,value:a}of e.attributes)if(s.startsWith("link:")){s=s.slice(5);for(r of k)for({name:i,value:d}of r.attributes)i.startsWith("ref:")&&H(d,a)&&f(e,s,Rt(r,i.slice(4)))}}for(;e=Je();)S={behavior:Tt.includes(a=e.getAttribute("behavior"))?a:Tt[0]},Oe(e,S,"top"),Oe(e,S,"left"),("top"in S||"left"in S)&&(e.hasAttribute("relative")?e.scrollBy(S):e.scroll(S));for(;e=ot();)e.dispatchEvent(rr);for(;he=it();)[e,s]=he,P=kt.get(s),P||kt.set(s,P=new Event("attr:"+s)),e.dispatchEvent(P);if(je()&&(Xe(),w.instance.start()),e=Ke()){Ze();try{N=e.value.length,e.focus(),e.setSelectionRange(N,N)}catch{}}requestAnimationFrame(He)};var nr=e=>{for(let{addedNodes:t,attributeName:r,oldValue:n,removedNodes:o,target:s}of e)if(A(ae|Ae,o),A(D|Re,t),r){let i=s.hasAttribute(r),a=n!=null,d;i&&!a&&(d=D|we),!i&&a&&(d=ae|Se),le(d??Le,s,r)}},Mt=new MutationObserver(nr);var Fe=()=>{try{document.cookie=`tzo=${new Date().getTimezoneOffset()};Path=/;SameSite=lax;Max-Age=31536000`}catch{}ct(vt),A(D,document.childNodes),Mt.observe(document,{attributeOldValue:!0,attributes:!0,childList:!0,subtree:!0}),document.addEventListener("change",te,!0),document.addEventListener("input",te,!0),document.addEventListener("reset",te,!0),h.window.addEventListener("popstate",K,!0),window.addEventListener("beforeunload",w.instance.stop,!0),requestAnimationFrame(He)};var Dt=Symbol.for("keml");window[Dt]||(window[Dt]=!0,document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Fe,!0):Fe());})();