graphane
Version:
Data Visualization Microframework
1 lines • 9.06 kB
JavaScript
/* graphane - 1.0.1 [module:plugin.template.engine] */ var ht="function",dt="undefined",U="object",$t="string",J="array",v="number";var I=(t,e)=>typeof t===e;var E=t=>I(t,U),M=t=>I(t,$t),k=t=>I(t,ht),X=t=>I(t,v)&&!isNaN(t),K=t=>!Number.isNaN(t),B=t=>I(t,dt);var _=t=>Array.isArray(t);var Z=t=>t.replace(/-([a-z0-9])/g,(e,n)=>n.toUpperCase());var P=new Map;var xt=async function(){}.constructor;function W(t,e,n=!1){let c=`${t.join(",")} ${e}`;if(P.has(c))return P.get(c);let u=new(n?xt:Function)(...t,e);return P.set(c,u),u}function G(t){try{return new Function(`let ${t} = 0`),!0}catch{return!1}}var H="animate",yt="path",Q="d",tt="transform",rt="rotate",b="translate",et="inherit",nt="finished",Nt=[rt,"skewX","skewY"],gt=[b,"width","height","x","y","cx","cy","r","rx","ry","dx","dy"],Et=(t,e)=>["text","tspan"].includes(t)&&["x","y"].includes(e),z=!1;if(window.matchMedia){let t=window.matchMedia("(prefers-reduced-motion: reduce)");z=t.matches,t.addEventListener("change",()=>{z=t.matches})}var At=t=>t.replace(/([A-Z])/g,"-$1").toLowerCase();function St(t,e={duration:200},n=null,c=null){let u=this.gSVG,f=o=>{let s=E(o)?{...o}:{duration:o};return z&&(s.duration=0),s.fill="none",s},p=o=>{o=_(o)?o:[o];let s=window.getComputedStyle(this._el),a=[],h=new Set;for(let y of o){let $={};for(let S in y){let x=Z(S);$[x]=l(y[S],x),!(x in s)||Et(this.tagName(),x)?h.add(x):x===Q?$.d=`${yt}("${$.d}")`:x===tt&&($.transform=m($.transform))}a.push($)}return i(h,a),a},r=[],i=(o,s)=>{if(o.size){let a=new KeyframeEffect(null,s).getKeyframes();for(let h of o){let y=u(H).attributeName(h).dur(C.duration+"ms").fill("freeze");if(s.length===1)y.to(s[0][h]);else{let $=[],S=[];for(let x in a){let mt=a[x];h in s[x]&&($.push(mt.computedOffset),S.push(s[x][h]))}$[0]!==0&&($.unshift(0),S.unshift(this[h]()||et)),$[$.length-1]!==1&&($.push(1),S.push(this[h]()||et)),y.keyTimes($.join(";")).values(S.join(";"))}r.push(y),y.attachTo(this),y.beginElementAt(C.delay||0)}}},m=o=>{M(o)&&(o=JSON.parse("{"+o.replace(/\s*\(\s*/g,":[").replace(/\s*\)\s*/g,"],").split(/\s*,\s*|\s.*/).join(",").replace(/(\w+):/g,'"$1":').replace(/,$/,"")+"}"));let s="";for(let a in o)if(a===rt){let h=d(o[a]);h.length>1&&(s+=`${b}(${l(h[1],b)},${l(h[2],b)}) `),s+=`${a}(${l(h[0],a)}) `,h.length>1&&(s+=`${b}(-${l(h[1],b)},-${l(h[2],b)}) `)}else s+=`${a}(${d(o[a]).map(h=>l(h,a)).join(",")}) `;return s},d=o=>_(o)?o:String(o).split(/\s+|,/),l=(o,s)=>Nt.includes(s)?o+"deg":gt.includes(s)?o+"px":o,A=o=>M(o)?o.replace(/(deg)|(px)/g,"").trim():o,w=o=>o.replace(/(path\s*\(\s*["'])|(["']\s*\)\s*$)/g,"").trim().replace(/([a-zA-Z])\s*/g,"$1").replace(/\s+/g,","),Y=o=>{let s=/translate\((.*)px,(.*)px\) rotate\((.*)deg\) translate\((.*)px,(.*)px\)\s+/,a=s.exec(o);return a&&Number(a[1])===Number(a[4])*-1&&Number(a[2])===Number(a[5])*-1?o=o.replace(s,`rotate(${a[3]}, ${a[1]}, ${a[2]})`):o=A(o),o},C=f(e),g=p(t),T=this._el.animate(g,C);return T.ready.then(()=>k(n)&&n.call(this,T)),T.finished.then(()=>{let o=g[g.length-1];for(let s in o){let a=At(s);a.startsWith("text-")?this._el.style[s]=o[s]:s!=="offset"&&s in o&&this._el.setAttribute(a,a===Q?w(o[s]):a===tt?Y(o[s]):A(o[s]))}r.forEach(s=>{s[nt](!0);let a=this._el.querySelectorAll(H),h=this._el.querySelectorAll(`${H}[${nt}]`);a.length===h.length&&a.forEach(y=>y.remove())}),k(c)&&c.call(this,T)}),this}function bt(t){t.extendInstance({animateTo:St})}var it=bt;var O={},ot=Symbol(),ft=Symbol(),N=Symbol(),L=Symbol(),D=Symbol(),q=Symbol(),st=Symbol(),j="error",wt="unknown",ct='an invalid "g-for" expression',Tt="undefined",_t="NaN (Not a Number)",V=(t,e)=>new Error(`The expression "${t}" return ${e} value`),at="class",ut="style",Lt=(t,e,n)=>{throw new Error(t+` in ${e} `+n)},Rt=(t=>e=>t[e]||e)("attributeName attributeType baseFrequency calcMode clipPathUnits diffuseConstant edgeMode gradientTransform gradientUnits kernelMatrix kernelUnitLength lengthAdjust limitingConeAngle markerHeight markerUnits markerWidth maskContentUnits maskUnits numOctaves pathLength patternContentUnits patternTransform patternUnits pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits refX refY requiredExtensions requiredFeatures specularConstant specularExponent spreadMethod startOffset stdDeviation stitchTiles surfaceScale systemLanguage tableValues targetX targetY textLength viewBox xChannelSelector yChannelSelector zoomAndPan".split(" ").reduce((t,e)=>(t[e.toLowerCase()]=e,t),{}));function lt(t){if(!t?.el?.parentNode)return null;let e=document.createComment(" ref ");return t.parentNode().insertBefore(e,t.el),t.remove(),e[q]=t,e}function Ct(t){let e=t[q];return t.parentNode.insertBefore(e.el,t),t.remove(),e}R({name:"g-content",exec(t,{expr:e,data:n,evalExpr:c}){let u={...n,$$:{fromURL:async i=>{let m=await fetch(i);if(m.status===200)return m.text();console.warn(`Failed to load URL: ${i} (${m.status})`)},element:t,currentContent:t.content}},f=c(e,u),p=new CustomEvent("load",{bubbles:!0,detail:t}),r=i=>B(i)?"":i;E(f)&&f.then?f.then(i=>{t.content(r(i)),t.dispatchEvent(p)}):(t.content(r(f)),t.dispatchEvent(p))}});R({name:"g-if",exec(t,{expr:e,data:n,evalExpr:c}){if(!c(e,n))return t[N]&&(t[N].forEach(u=>u.remove()),delete t[N]),lt(t)}});R({name:"g-bind",alias:":",arg:!0,exec(t,{expr:e,arg:n,data:c,evalExpr:u}){n=Rt(n);let f=t._el,p={...c,$$:["d","transform"].includes(n)?t["$"+n]:{}};Object.assign(p.$$,{get element(){return t},get attribute(){return n},currentValue(){return n===at?[...f.classList]:n===ut?[...f.style].reduce((i,m)=>(i[m]=f.style[m],i),{}):t[n]()},dynamic(i,m=200,d=0){return t.animateTo((_(i)?i:[i]).map(l=>E(l)&&"offset"in l?{[n]:l.value,offset:l.offset}:{[n]:l}),{duration:m,delay:d}),st}});let r=u(e,p);if(B(r))throw V(e,Tt);if(n===at){let i=l=>t.classList.add(l),m=l=>t.classList.remove(l),d=l=>Object.entries(l).forEach(([A,w])=>w?i(A):m(A));if(_(r)){r.forEach(l=>M(l)?i(l):E(l)?d(l):void 0);return}if(E(r)){d(r);return}r&&i(r);return}if(n===ut){Object.entries(r).forEach(([i,m])=>t.style[i](m));return}r!==st&&t[n](r)}});R({name:"g-on",alias:"@",arg:!0,exec(t,{expr:e,arg:n,data:c,evalExpr:u,error:f,code:p}){t[D]=t[D]||{};let r=t[D][n]=t[D][n]||new Map;r.has(e)&&t.removeEventListener(n,r.get(e));let i=function(m){try{let d=u(e,c,t);k(d)&&d.call(t,m)}catch(d){f(d.message,{directive:"g-on",argument:n,expression:e,toString(){return`g-on:${n}="${e}"`}},p)}};t.addEventListener(n,i),r.set(e,i),n==="init"&&!t[ot]&&(t[ot]=!0,t.dispatchEvent(new Event("init")))}});R({name:"g-for",tmpl:!0,exec(t,{expr:e,data:n,error:c}){t[N]=t[N]||[];let u=t.gSVG(lt(t)),f=0;return Ft(e,n,p=>{if(t[N][f])F(t[N][f],p,c,!1);else{let r=t.gSVG(t.tagName());r[L]=t[L].filter(i=>i.name!=="g-for"),[...t.attributes()].forEach(i=>{i.name!=="g-for"&&r.setAttribute(i.name,i.value)}),t.children().forEach(i=>{r.add(i.cloneNode(!0))}),u.before(r),F(r,p,c),r[ft]=!0,t[N].push(r)}f++},p=>{for(;t[N].length>p.length;)t[N].pop().remove()}),!0}});function R({name:t,alias:e,arg:n,tmpl:c,exec:u}){let f=`^(${t}${n?":":""}${e?`|${e})`:")"}${n?"(.*)$":"$"}`,p=new RegExp(f,"i");O[t]={name:t,alias:e,arg:n,tmpl:c,exec:u,check:p}}function It(t){for(let e in O){let n=O[e],c=n.check.exec(t);if(c){let u=c[2];return{...n,arg:u}}}}function Mt(t){return t.replace(/[{}()[\]]/g,"").split(",").map(e=>(e.includes(":")?e.split(":")[1].trim():e).trim())}function kt(t,e){return t[Symbol.iterator]?e==="of"?{iterator:[...t],type:J}:{type:j}:X(t)?{iterator:Array(t<0?0:0|t).fill(0).map((n,c)=>c+(e==="of"?0:1)),type:v}:E(t)?e==="in"?{iterator:Object.entries(t).map(n=>n.reverse()),type:U}:{type:j}:{iterator:t,type:wt}}function pt(t,e,n=null){let c=Object.keys(e).filter(G),f=W(c,`return ( ${t} ); `).apply(n,c.map(p=>e[p]));if(!K(f))throw V(t,_t);return f}function Ft(t,e,n,c){let u="__$$i",f="__$$c",p="__$$f",r=t.match(/^\s*([\s\S]+?)[\s*|)}\]](of|in)[\s*|({[]([\s\S]+?)\s*$/);if(!r)throw V(t,ct);let[,i,m,d]=r;m=m.trim(),i=i.trim(),d=d.trim();let l=pt(d,e)||[],{iterator:A,type:w}=kt(l,m);if(w===j)throw V(t,ct);w===U&&!i.startsWith("[")&&(i=`[${i.replace(/(^\()|(\)$)/g,"")}]`);let Y=Mt(i),C=i.startsWith("(")?i:`(${i})`,g=Object.keys(e).filter(G),T=` ${u}.forEach(${C} => { ${f}({${g}${g.length?",":""}${Y.join(",")}}); }); ${p}(${u}); `;return W([...g,u,f,p],T)(...g.map(s=>e[s]),A,n,c)}function F(t,e,n,c=!0){if(c&&t[ft])return;let u=t.outerHTML();t[L]=t[L]||[];let f=t.attributes();for(let r of[...f]){let i=r.name,m=It(i);m&&(t[L].push({...m,expr:r.value}),t.removeAttribute(i))}let p=!1;for(let r of t[L]){p=r.tmpl||p;try{if(r.exec(t,{...r,data:e,evalExpr:pt,error:n,code:u}))return}catch(i){n(i.message,{directive:r.name,argument:r.arg,expression:r.expr,toString(){return`${r.name}${r.arg?":"+r.arg:""}="${r.expr}"`}},u)}}if(!p)for(let r of t.childNodes())r.el[q]?F(Ct(r.el),e,n):r.el?.nodeType===1&&F(r,e,n)}function Ut(t={},e=Lt){F(this,t,e),this.dispatchEvent(new Event("render"))}function Dt(){return this.outerHTML().replaceAll("<!-- ref -->","")}function Ot(t){t.install(it),t.extendInstance({render:Ut,source:Dt}),t.extendSetup({extendTemplate:{defineDirective:R,getDirective(e){return O[e]}}})}var jt=Ot;export{jt as default};