grapper
Version:
Data Visualization Microframework
1 lines • 3.66 kB
JavaScript
/* grapper - 1.1.0-rc.1 [gsvg] */ (()=>{var q="function",v="undefined",Q="object",Z="string";var K="boolean";var X="symbol";var h=(t,n)=>typeof t===n,b=(t,n)=>t instanceof n,x=t=>h(t,Q),_=t=>h(t,Z),S=t=>h(t,q);var $=t=>h(t,v),R=t=>h(t,X),D=t=>h(t,K);var T=t=>t===null;var m="gSVGObject",nt="http://www.w3.org/2000/svg",rt="svg",O="d",I="transform",B="appendChild",j="insertBefore",P="insertAdjacentElement",V="attach",F="innerHTML",C=new WeakMap,M=new Set,et=t=>R(t)||t.startsWith("_")||["el","gSVG","then"].includes(t),it=()=>m+Math.random().toString(32).substring(2),L=t=>x(t)&&!T(t)&&t[Symbol.toStringTag]===m,ot=t=>y(document.createElementNS(nt,t)),g=t=>_(t)?ot(t):x(t)&&t!==null?L(t)?t:y(t):t,st=t=>({content:F,source:"outerHTML",parent:"parentElement",next:"nextElementSibling",previous:"previousElementSibling",add:B,addBefore:j})[t]||t,ct=t=>["append","before","after",B,j,P].includes(t)?function(...n){let e=[],r=[],i=[];return t===P?(e.push(n[0]),r.push(g(n[1]))):t===j?(r.push(g(n[0])),i.push(n[1]||this.firstChild||null)):r.push(...n.map(g)),r.every(u=>u?._el)?(this[t](...e,...r.map(u=>u._el),...i),r.forEach(u=>u._el.dispatchEvent(new Event(V))),r.length>1?r:r[0]):null}:null,p=class t{constructor(n){this._el=n,this.gSVG=d}get[Symbol.toStringTag](){return m}get el(){return this._el}attachTo(n){return(x(n)?L(n)?n._el:n:document.querySelector(n)).appendChild(this._el),this._el.dispatchEvent(new Event(V)),this}id(n){return n?(this._el.setAttribute("id",n),this):this._el.id||(this._el.id=it())}ref(){return`#${this.id()}`}url(){return`url(${this.ref()})`}parents(){let n=[],e=this;for(;(e=e.parentElement())&&b(e,t);)n.push(e);return n}top(){return this.parents()?.pop()||this}},y=t=>{if(!x(t)||T(t))return null;if(C.has(t))return C.get(t);let n=new Proxy(new p(t),{get(e,r){if(et(r))return e[r];if(!$(e[r]))return(...o)=>(f(n,r,o),e[r].call(n,...o));if([O,I,"$"+O,"$"+I].includes(r)){let o="";r[0]==="$"&&(r=r.substring(1));let c=r===O?ut:ft,a=new Proxy(l=>(f(n,r,[l]),$(l)?t.getAttribute(r):(l?t.setAttribute(r,l):t.removeAttribute(r),n)),{get(l,N){return N in l?Reflect.get(l,N):(...z)=>{if(N===Symbol.toPrimitive){let W=o;return o="",W}return o+=c(n,N,z),t?.setAttribute(r,o),a}}});return a}let i=st(r),u=ct(i)||t[i];return S(u)?(...o)=>{f(n,r,o);let s=u.call(t,...o);return $(s)?n:H(s)}:k(t,i,n)}});return C.set(t,n),n},k=(t,n,e,r)=>{let i=n.replace(/_/g,"-"),u=(...o)=>{if(f(e,r?`${r}.${n}`:n,o),o.length===0){let c=t?.hasAttribute&&t.hasAttribute(i)?t.getAttribute(i):t[i];return H(c)}let s=o[0];if(b(t,CSSStyleDeclaration))return t[i]=s,e;if(i in t&&!M.has(i)){let c=t[i];if(String(c)===String(s))return e;try{t[i]=s}catch{M.add(i)}if(x(t[i])&&t[i]===s||t[i]!==c||i===F)return e;M.add(i)}return s!==0&&!s?t?.removeAttribute&&t.removeAttribute(i):t?.setAttribute&&t.setAttribute(i,D(s)?"":String(o)),e};return new Proxy(u,{get(o,s){let c=t[i][s];return S(c)?(...a)=>(f(e,`${n}.${s}`,a),c.call(t[i],...a)||e):k(t[i],s,e,i)},set(o,s,c){return t[i][s]=c,!0}})},H=t=>b(t,HTMLCollection)||b(t,NodeList)?[...t].map(n=>y(n)):b(t,SVGElement)?y(t):_(t)?t===""||isNaN(t)?t:Number(t):t,U=[],f=(t,n,e,r=[])=>{for(let i of U)i(d,t,n,e,r)},E={},ut=(t,n,e)=>(f(t,`d.${n}`,e,Object.keys(E).map(r=>`d.${r}`)),E[n]?E[n].apply(t,e):`${n}${e.join(",")}`),ft=(t,n,e)=>(f(t,`transform.${n}`,e),`${n}(${e.join(",")})`);function d(t){return f(null,"",[t]),g($(t)?rt:t)}d.isWrapped=L;var A=t=>n=>S(n)?n(t):Object.assign(t,n),w={install:Y,extendConstructor:A(d),extendInstance:A(p.prototype),extendPath:A(E),beforeEveryCall(t){S(t)&&U.push(t)}};w.extendSetup=A(w);function Y(t){return t(w),d}d.install=Y;var J=d;(typeof gobalThis<"u"?globalThis:window).gSVG=J;})();