/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/smolgraph@2.1.7/graph.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
const SVG_NS="http://www.w3.org/2000/svg",KEY_BAR_WIDTH=8,KEY_BAR_RPAD=8,KEY_BAR_HEIGHT=3,SMOLGRAPH="smolgraph",LINE_WIDTH=1,CLICK="click",GESTURE="gesture",TOUCH="touch",VISIBILITY="visibility",VISIBLE="visible",MIDDLE="middle",CLIENT_X="clientX",CLIENT_Y="clientY",TRANSFORM="transform",HIDDEN="hidden",{abs:abs,min:min,max:max,pow:pow,floor:floor}=Math,len=t=>t.length,flatmap=(t,e)=>t.flatMap(e),map=(t,e)=>t.map(e),push=(t,e)=>t.push(e),isInt=t=>Number.isInteger(t);let clipPathCounter=0;const zip=(...t)=>map(t[0],((e,a)=>map(t,(t=>t[a])))),unzip=t=>zip(...t),isStr=t=>"string"==typeof t,formatTickValue=t=>isStr(t)?t:isStr(t)||isInt(t)?`${t}`:`${Number(t.toFixed(3))}`,formatTrackerLabel=(t,e)=>`(${formatTickValue(t)}, ${formatTickValue(e)})`,twoargs=t=>(e,a)=>t(e,a),maximum=t=>t.reduce(twoargs(max)),bounds=t=>[t.reduce(twoargs(min)),maximum(t)],calculateNiceScale=(t,e=10)=>{if(0===len(t))return{min:0,max:0,tickStep:1,ticks:[0]};const[a,n]=bounds(t),s=(n-a)/e,l=floor(Math.log10(s)),r=s/pow(10,l),o=(r<=1?1:r<=2?2:r<=5?5:10)*pow(10,l);if(0===o)return;const c=floor(a/o)*o,i=Math.ceil(n/o)*o,d=[];for(let t=c;t<=i+1e-9;t+=o)push(d,parseFloat(t.toFixed(12)));return{min:c,max:i,tickStep:o,ticks:d}},setAttr=(t,e,a)=>{t.setAttribute(e,a)},setAttrs=(t,e)=>{for(const[a,n]of Object.entries(e))setAttr(t,a,n)},addChild=(t,e)=>{t.appendChild(e)},addChildren=(t,e)=>{for(const a of e)addChild(t,a)},el=(t,e={},a=[])=>{const n=document.createElementNS(SVG_NS,t);return setAttrs(n,e),addChildren(n,a),n},text=(t,e={})=>{const a=el("text",e);return a.textContent=t,a},createScale=(t,e,a,n)=>s=>a+(s-t)/(e-t)*(n-a),mkTickLine=(t,e,a,n)=>el("line",{class:"tick",x1:t,y1:e,x2:a,y2:n}),mkTickLabel=(t,e,a,n)=>text(t,{class:"tick-label",x:e,y:a,"text-anchor":n}),genColors=t=>map(t,((e,a)=>`hsl(${360*a/len(t)+80},40%,60%)`)),rect=(t,e,a,n,s={})=>el("rect",{x:t,y:e,width:a,height:n,...s}),boundData=(t,e,a,n)=>map(structuredClone(t),(({data:t,label:s})=>({label:s,data:n?t.slice(e,a):t.filter((([t])=>t>=e&&t<=a))}))),addEv=(t,e,a)=>{t.addEventListener(e,(t=>{a(t),t.preventDefault(),t.stopPropagation()}),{passive:!1})},debounce=(t,e)=>{let a;return(...n)=>{clearTimeout(a),a=setTimeout((()=>{t.apply(this,n)}),e)}},justClass=t=>({class:t}),hide=t=>{setAttr(t,VISIBILITY,HIDDEN)},binarySearch=(t,e)=>{const a=len(t);let n=0,s=a;for(;s>0;){for(;n+s<a&&e(t[n+s])<0;)n+=s;s=floor(s/2)}return n};export const drawGraph=t=>{const{data:e}=t,{width:a=800,height:n=500,lineColors:s=genColors(e),maxTicks:l={x:15,y:10},loadData:r,axisLabels:o={x:"X",y:"Y"},onClick:c}=t,i=el("svg",{xmlns:SVG_NS,viewBox:`0 0 ${a} ${n}`,class:SMOLGRAPH});addChild(document.body,i);const d=text("test");addChild(i,d);const{width:m,height:u}=d.getBBox(),p=m/4,h=u/2,C=.3*u,x=.6*u,I=[e],T=t=>p*len(formatTickValue(t)),f=el("a",{href:`https://github.com/414owen/${SMOLGRAPH}`},[text(SMOLGRAPH,{x:p,y:n-p})]),S=text("reset zoom",justClass("zoom-out"));let L=0;const E=(t=I.at(-1))=>{const e=map(t,(t=>t.data)),d=map(t,(t=>t.label)),m=isStr(e[0][0][0]);let k;if(m?(k=map(e[0],((t,e)=>e)),k.sort(((t,e)=>t-e))):k=[...new Set(flatmap(e,(t=>map(t,(t=>t[0])))))],abs(k[0]-k.at(-1))<1e-10||abs(k[0]-k.at(-1))>1e12)return;const $=e[0],b=t=>m?t<len($)&&isInt(t)?$[t][0]:"":t,N=map(e,(t=>map(t,(t=>t[1])))).flat();i.innerHTML="";const y=calculateNiceScale(k,l.x);if(!y)return;m&&(y.ticks=map(y.ticks,b));const g=calculateNiceScale(bounds(N),l.y),A=u+3*p+maximum(map(g.ticks,T)),w=T(b(y.max))/2+p,M=u/2+p,_=a-A-w,D=n-M-(2*u+3*p),R=A+_,v=M+D,H=createScale(y.min,y.max,A,R),O=m?(t,e)=>H(e):H,Y=createScale(g.min,g.max,v,M);setAttrs(S,{x:R-p,y:M+u});const G=el("g",justClass("tracker")),V=map(t,(()=>{const t=el("line"),e=el("circle",{r:4});return addChildren(G,[t,e]),{line:t,dot:e}})),B=(t,e,a,n,s)=>unzip(map(t,((t,l)=>{const r=e(t,l);return[mkTickLine(...a(r)),mkTickLabel(formatTickValue(t),...n(r),s)]})));{const t=v+x+p,[e,a]=B(g.ticks,(t=>Y(t)),(t=>[A,t,R,t]),(t=>[A-p,t+C]),"end"),[n,s]=B(y.ticks,((t,e)=>O(t,e*y.tickStep)),(t=>[t,M,t,v]),(e=>[e,t]),MIDDLE);addChildren(i,n),addChildren(i,e),addChildren(i,s),addChildren(i,a),addChild(i,text(o.x,{x:A+_/2,y:t+p+u,"text-anchor":MIDDLE}));{const t=M+D/2;addChild(i,text(o.y,{"text-anchor":MIDDLE,[TRANSFORM]:`translate(${u},${t}) rotate(-90)`}))}}const P=el("g",justClass("paths"),map(t,(({data:t},e)=>{const[a,n]=t[0],l=`M${O(a,0)},${Y(n)}`+map(t.slice(1),(([t,e],a)=>`L${O(t,a+1)},${Y(e)}`)).join("");return el("path",{d:l,fill:"none",stroke:s[e%len(s)],"stroke-width":1})})));addChildren(i,[el("defs",{},[el("clipPath",{id:`${SMOLGRAPH}-chart-clip-${clipPathCounter}`},[el("path",{d:`M${A},${M}h${_}v${D}h-${_}`})])]),el("g",{"clip-path":`url(#${SMOLGRAPH}-chart-clip-${clipPathCounter++})`},[P])]);const z=rect(0,M,a,D,justClass("overlay"));z.focus();const j=()=>{for(const t of G.children)hide(t)},U=(t,e)=>addEv(z,t,e),X=t=>{const e=new DOMPointReadOnly(t[CLIENT_X],t[CLIENT_Y]);return a=e.matrixTransform(i.getScreenCTM().inverse()).x,min(max(a,A),R);var a},F=t=>y.min+(t-A)/_*(y.max-y.min);let K=A,W=0;const q=()=>{const t=F(K);return map(e,(e=>{const a=m?min(floor(t),len($)-1):binarySearch(e,(([e])=>e-t)),n=min(len(e)-1,a+1),[s,l]=m?[a,n]:[e[a][0],e[n][0]];return abs(t-s)<abs(t-l)?a:n}))},J=rect(A,M,0,2*h+x+u*(len(d)-1),justClass("key")),Q=t=>{setAttr(J,"width",2*h+8+8+p*t)},Z=max(...map(d,(t=>len(t)))),tt=[],et=t=>{for(const[e,a]of zip(tt,t))e.textContent=a;Q(Z)},at=t=>{j(),K=X(t);const a=new Set,n=[],s=zip(e,V,q());for(const[t,{line:e,dot:l},r]of s){const s=O(t[r][0],r),o=Y(t[r][1]);a.has(s)?hide(e):(setAttrs(e,{x1:s,y1:M,x2:s,y2:v,[VISIBILITY]:VISIBLE}),a.add(s)),setAttrs(l,{cx:s,cy:o,[VISIBILITY]:W?HIDDEN:VISIBLE}),push(n,t[r])}(t=>{et(map(zip(d,t),(([t,[e,a]])=>`${t.padEnd(Z)}  ${formatTrackerLabel(m?e:b(e),a)}`))),Q(max(...map(tt,(t=>t.getNumberOfChars()))))})(n)};{let a=1,n=0;const s=debounce((async()=>{const e=R/a-n,s=F(A/a-n),l=F(e),o=W,c=boundData(r?t:I[0],s,l,m);if(o===W&&len(c[0].data)>=2&&(!r||len(c[0].data)<len(t[0].data))&&E(c),!r)return void push(I,c);let i=++L;const d=await r(s,l);L!==i||o!==W||len(d[0].data)<2||(push(I,d),E())}),300);{let t=null,e=null;const l=(t,e)=>{const l=t/a;a=e;n+=t/a-l,setAttrs(P,{[TRANSFORM]:`scale(${a} 1) translate(${n} 0)`}),s()},r=(t,e,a)=>max(e,min(a,t)),o=t=>r(t,.05,200);U(`${GESTURE}start`,(n=>{t=a,e=X(n)})),U(`${GESTURE}change`,(a=>{if(null===t)return;const n=o(t*a.scale);l(e,n)})),U(`${GESTURE}end`,(()=>{t=null}));let c=!1,i=0,d=1,m=0;const u=(t,e)=>{const a=t[CLIENT_X]-e[CLIENT_X],n=t[CLIENT_Y]-e[CLIENT_Y];return Math.hypot(a,n)},p=(t,e)=>(t[CLIENT_X]+e[CLIENT_X])/2;U(`${TOUCH}start`,(t=>{const e=t.touches;2===len(e)&&(c=!0,i=u(e[0],e[1]),d=a,m=X({[CLIENT_X]:p(e[0],e[1]),[CLIENT_Y]:(e[0][CLIENT_Y]+e[1][CLIENT_Y])/2}))})),U(`${TOUCH}move`,(t=>{const e=t.touches;if(c&&2===len(e)){const t=u(e[0],e[1]),a=o(d*(t/i));l(m,a)}})),U(`${TOUCH}end`,(t=>{len(t.touches)<2&&(c=!1)})),U(`${TOUCH}cancel`,(()=>{c=!1}))}c&&U(CLICK,(t=>{K=X(t);const a=F(K);let n=map(zip(e,q()),(([t,e])=>t[e]));c(t,a,n)})),U("wheel",(async t=>{W+=1,at(t),K=X(t);const e=t.wheelDelta,l=1+abs(e)/900,r=K/a;e>0?a*=l:a/=l;n+=K/a-r,setAttr(P,TRANSFORM,`scale(${a} 1) translate(${n} 0)`),s()}))}U("mousemove",at),U("mouseout",(()=>{j(),et(d)}));const nt=el("g",justClass("key"),[J,...flatmap(d,((t,e)=>{const a=M+h+x+u*e,n=text(t,{y:a,x:A+h+8+8});return push(tt,n),[n,rect(A+h,a-u/4-1.5,8,3,{fill:s[e]})]}))]);Q(Z),addChildren(i,[G,nt,z,f,S]),j()};return addEv(i,"dblclick",(()=>{len(I)>1&&I.pop(),E()})),addEv(S,CLICK,(()=>{I.splice(1),E()})),E(),i.remove(),i};
//# sourceMappingURL=/sm/8b9c3cde88417cfbdd6a617a69f2615eb80f2d8c8c9421f5b153fb7f7d005563.map