graphane
Version:
Data Visualization Microframework
1 lines • 9.16 kB
JavaScript
/* graphane - 1.0.1 [plugin.template.engine] */ (()=>{var dt="function",$t="undefined",U="object",xt="string",X="array",Y="number";var I=(t,e)=>typeof t===e;var E=t=>I(t,U),M=t=>I(t,xt),k=t=>I(t,dt),K=t=>I(t,Y)&&!isNaN(t),Z=t=>!Number.isNaN(t),P=t=>I(t,$t);var _=t=>Array.isArray(t);var Q=t=>t.replace(/-([a-z0-9])/g,(e,n)=>n.toUpperCase());var B=new Map;var gt=async function(){}.constructor;function G(t,e,n=!1){let c=`${t.join(",")} ${e}`;if(B.has(c))return B.get(c);let u=new(n?gt:Function)(...t,e);return B.set(c,u),u}function W(t){try{return new Function(`let ${t} = 0`),!0}catch{return!1}}var H="animate",yt="path",tt="d",et="transform",it="rotate",b="translate",nt="inherit",rt="finished",Nt=[it,"skewX","skewY"],Et=[b,"width","height","x","y","cx","cy","r","rx","ry","dx","dy"],At=(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 St=t=>t.replace(/([A-Z])/g,"-$1").toLowerCase();function bt(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 g of o){let $={};for(let S in g){let x=Q(S);$[x]=l(g[S],x),!(x in s)||At(this.tagName(),x)?h.add(x):x===tt?$.d=`${yt}("${$.d}")`:x===et&&($.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 g=u(H).attributeName(h).dur(C.duration+"ms").fill("freeze");if(s.length===1)g.to(s[0][h]);else{let $=[],S=[];for(let x in a){let ht=a[x];h in s[x]&&($.push(ht.computedOffset),S.push(s[x][h]))}$[0]!==0&&($.unshift(0),S.unshift(this[h]()||nt)),$[$.length-1]!==1&&($.push(1),S.push(this[h]()||nt)),g.keyTimes($.join(";")).values(S.join(";"))}r.push(g),g.attachTo(this),g.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===it){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":Et.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,","),v=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),N=p(t),T=this._el.animate(N,C);return T.ready.then(()=>k(n)&&n.call(this,T)),T.finished.then(()=>{let o=N[N.length-1];for(let s in o){let a=St(s);a.startsWith("text-")?this._el.style[s]=o[s]:s!=="offset"&&s in o&&this._el.setAttribute(a,a===tt?w(o[s]):a===et?v(o[s]):A(o[s]))}r.forEach(s=>{s[rt](!0);let a=this._el.querySelectorAll(H),h=this._el.querySelectorAll(`${H}[${rt}]`);a.length===h.length&&a.forEach(g=>g.remove())}),k(c)&&c.call(this,T)}),this}function wt(t){t.extendInstance({animateTo:bt})}var ot=wt;var O={},st=Symbol(),lt=Symbol(),y=Symbol(),L=Symbol(),D=Symbol(),q=Symbol(),ct=Symbol(),j="error",Tt="unknown",at='an invalid "g-for" expression',_t="undefined",Lt="NaN (Not a Number)",V=(t,e)=>new Error(`The expression "${t}" return ${e} value`),ut="class",ft="style",Rt=(t,e,n)=>{throw new Error(t+` in ${e} `+n)},Ct=(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 pt(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 It(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=>P(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[y]&&(t[y].forEach(u=>u.remove()),delete t[y]),pt(t)}});R({name:"g-bind",alias:":",arg:!0,exec(t,{expr:e,arg:n,data:c,evalExpr:u}){n=Ct(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===ut?[...f.classList]:n===ft?[...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}),ct}});let r=u(e,p);if(P(r))throw V(e,_t);if(n===ut){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===ft){Object.entries(r).forEach(([i,m])=>t.style[i](m));return}r!==ct&&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[st]&&(t[st]=!0,t.dispatchEvent(new Event("init")))}});R({name:"g-for",tmpl:!0,exec(t,{expr:e,data:n,error:c}){t[y]=t[y]||[];let u=t.gSVG(pt(t)),f=0;return Ut(e,n,p=>{if(t[y][f])F(t[y][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[lt]=!0,t[y].push(r)}f++},p=>{for(;t[y].length>p.length;)t[y].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 Mt(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 kt(t){return t.replace(/[{}()[\]]/g,"").split(",").map(e=>(e.includes(":")?e.split(":")[1].trim():e).trim())}function Ft(t,e){return t[Symbol.iterator]?e==="of"?{iterator:[...t],type:X}:{type:j}:K(t)?{iterator:Array(t<0?0:0|t).fill(0).map((n,c)=>c+(e==="of"?0:1)),type:Y}:E(t)?e==="in"?{iterator:Object.entries(t).map(n=>n.reverse()),type:U}:{type:j}:{iterator:t,type:Tt}}function mt(t,e,n=null){let c=Object.keys(e).filter(W),f=G(c,`return ( ${t} ); `).apply(n,c.map(p=>e[p]));if(!Z(f))throw V(t,Lt);return f}function Ut(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,at);let[,i,m,d]=r;m=m.trim(),i=i.trim(),d=d.trim();let l=mt(d,e)||[],{iterator:A,type:w}=Ft(l,m);if(w===j)throw V(t,at);w===U&&!i.startsWith("[")&&(i=`[${i.replace(/(^\()|(\)$)/g,"")}]`);let v=kt(i),C=i.startsWith("(")?i:`(${i})`,N=Object.keys(e).filter(W),T=` ${u}.forEach(${C} => { ${f}({${N}${N.length?",":""}${v.join(",")}}); }); ${p}(${u}); `;return G([...N,u,f,p],T)(...N.map(s=>e[s]),A,n,c)}function F(t,e,n,c=!0){if(c&&t[lt])return;let u=t.outerHTML();t[L]=t[L]||[];let f=t.attributes();for(let r of[...f]){let i=r.name,m=Mt(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:mt,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(It(r.el),e,n):r.el?.nodeType===1&&F(r,e,n)}function Dt(t={},e=Rt){F(this,t,e),this.dispatchEvent(new Event("render"))}function Ot(){return this.outerHTML().replaceAll("<!-- ref -->","")}function Vt(t){t.install(ot),t.extendInstance({render:Dt,source:Ot}),t.extendSetup({extendTemplate:{defineDirective:R,getDirective(e){return O[e]}}})}var J=Vt;globalThis.gSVG&&globalThis.gSVG.install(J);customElements.whenDefined("g-composer").then(t=>{t.install(J)});})();