grapper
Version:
Data Visualization Microframework
1 lines • 3.65 kB
JavaScript
/* grapper - 1.1.0-beta.3 [gsvg] */ (()=>{var q="function",v="undefined",Q="object",Z="string";var K="boolean";var X="symbol";var h=(t,n)=>typeof t===n,x=(t,n)=>t instanceof n,b=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=>b(t)&&!T(t)&&t[Symbol.toStringTag]===m,ot=t=>y(document.createElementNS(nt,t)),g=t=>_(t)?ot(t):b(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 i=[],r=[],e=[];return t===P?(i.push(n[0]),r.push(g(n[1]))):t===j?(r.push(g(n[0])),e.push(n[1]||this.firstChild||null)):r.push(...n.map(g)),r.every(u=>u?._el)?(this[t](...i,...r.map(u=>u._el),...e),r.forEach(u=>u._el.dispatchEvent(new Event(V))),r.length>1?r:r[0]):null}:null,p=class{constructor(n){this._el=n,this.gSVG=d}get[Symbol.toStringTag](){return m}get el(){return this._el}attachTo(n){return(b(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=[],i=this;for(;i=i.parentElement();)n.push(i);return n}top(){return this.parents().pop()||this}},y=t=>{if(!b(t)||T(t))return null;if(C.has(t))return C.get(t);let n=new Proxy(new p(t),{get(i,r){if(et(r))return i[r];if(!$(i[r]))return(...o)=>(f(n,r,o),i[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 e=st(r),u=ct(e)||t[e];return S(u)?(...o)=>{f(n,r,o);let s=u.call(t,...o);return $(s)?n:k(s)}:H(t,e,n)}});return C.set(t,n),n},H=(t,n,i,r)=>{let e=n.replace(/_/g,"-"),u=(...o)=>{if(f(i,r?`${r}.${n}`:n,o),o.length===0){let c=t?.hasAttribute&&t.hasAttribute(e)?t.getAttribute(e):t[e];return k(c)}let s=o[0];if(x(t,CSSStyleDeclaration))return t[e]=s,i;if(e in t&&!M.has(e)){let c=t[e];if(String(c)===String(s))return i;try{t[e]=s}catch{M.add(e)}if(b(t[e])&&t[e]===s||t[e]!==c||e===F)return i;M.add(e)}return s!==0&&!s?t?.removeAttribute&&t.removeAttribute(e):t?.setAttribute&&t.setAttribute(e,D(s)?"":String(o)),i};return new Proxy(u,{get(o,s){let c=t[e][s];return S(c)?(...a)=>(f(i,`${n}.${s}`,a),c.call(t[e],...a)||i):H(t[e],s,i,e)},set(o,s,c){return t[e][s]=c,!0}})},k=t=>x(t,HTMLCollection)||x(t,NodeList)?[...t].map(n=>y(n)):x(t,SVGElement)?y(t):_(t)?t===""||isNaN(t)?t:Number(t):t,U=[],f=(t,n,i,r=[])=>{for(let e of U)e(d,t,n,i,r)},E={},ut=(t,n,i)=>(f(t,`d.${n}`,i,Object.keys(E).map(r=>`d.${r}`)),E[n]?E[n].apply(t,i):`${n}${i.join(",")}`),ft=(t,n,i)=>(f(t,`transform.${n}`,i),`${n}(${i.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;})();