@uptimizr/dashboard 0.3.2 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/out/404.html +1 -1
  2. package/out/__next.__PAGE__.txt +2 -2
  3. package/out/__next._full.txt +3 -3
  4. package/out/__next._head.txt +1 -1
  5. package/out/__next._index.txt +2 -2
  6. package/out/__next._tree.txt +2 -2
  7. package/out/_next/static/chunks/0k9-8s-jof_gw.js +1 -0
  8. package/out/_next/static/chunks/13oqt2aoms4f6.js +1 -0
  9. package/out/_next/static/chunks/259xlbe69b9tc.js +1 -0
  10. package/out/_next/static/chunks/{2mleh3pbge181.js → 2t9zu9v_g9kr9.js} +1 -1
  11. package/out/_next/static/chunks/34rcp8qrbp522.js +3 -0
  12. package/out/_next/static/chunks/38wksra3d_k-4.js +1 -0
  13. package/out/_next/static/chunks/3ef6upwlgr4q-.css +3 -0
  14. package/out/_next/static/chunks/3l6t8b3addlw7.js +1 -0
  15. package/out/_next/static/chunks/413o2v11bygt5.js +1 -0
  16. package/out/_not-found/__next._full.txt +2 -2
  17. package/out/_not-found/__next._head.txt +1 -1
  18. package/out/_not-found/__next._index.txt +2 -2
  19. package/out/_not-found/__next._not-found.__PAGE__.txt +1 -1
  20. package/out/_not-found/__next._not-found.txt +1 -1
  21. package/out/_not-found/__next._tree.txt +2 -2
  22. package/out/_not-found.html +1 -1
  23. package/out/_not-found.txt +2 -2
  24. package/out/index.html +1 -1
  25. package/out/index.txt +3 -3
  26. package/package.json +3 -3
  27. package/out/_next/static/chunks/1fruncg3k-3pu.js +0 -3
  28. package/out/_next/static/chunks/224_scesvd739.js +0 -1
  29. package/out/_next/static/chunks/2_hgfg-cjqw1-.js +0 -1
  30. package/out/_next/static/chunks/2ktxjmx03u9l3.js +0 -1
  31. package/out/_next/static/chunks/2kw33jl_i9o5j.css +0 -3
  32. package/out/_next/static/chunks/30363ptka3vzy.js +0 -1
  33. package/out/_next/static/chunks/39ojyykom0z2r.js +0 -1
  34. package/out/_next/static/chunks/3jha6wlqw8459.js +0 -1
  35. /package/out/_next/static/{2AsIePMYsPfJoAl46w-g4 → M5esRfAVlWSeBcfLV_jVr}/_buildManifest.js +0 -0
  36. /package/out/_next/static/{2AsIePMYsPfJoAl46w-g4 → M5esRfAVlWSeBcfLV_jVr}/_clientMiddlewareManifest.js +0 -0
  37. /package/out/_next/static/{2AsIePMYsPfJoAl46w-g4 → M5esRfAVlWSeBcfLV_jVr}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,2348,2413,e=>{"use strict";let t=1/1.2;e.s(["ZOOM_IN_FACTOR",0,t,"ZOOM_OUT_FACTOR",0,1.2,"attachDoubleClickFocus",0,function(e,t,n){let a=()=>{let t=e.pick(e.pointerX,e.pointerY);t?.hit&&t.pickedPoint&&n.setTarget(t.pickedPoint)};return t.addEventListener("dblclick",a),()=>t.removeEventListener("dblclick",a)},"disableWheelZoom",0,function(e){e.inputs.removeByType("ArcRotateCameraMouseWheelInput")},"resetFocus",0,function(e,t){e.setTarget(t.target),e.alpha=t.alpha,e.beta=t.beta,e.radius=t.radius},"stepZoom",0,function(e,t){let n=e.lowerRadiusLimit??.01,a=e.upperRadiusLimit??1/0;e.radius=Math.min(a,Math.max(n,e.radius*t))}],2348);var n=e.i(28100);e.s(["ZoomButtons",0,function({onZoom:e,onReset:a}){let r="grid h-8 w-8 place-items-center rounded-md border border-edge bg-ink/80 text-lg leading-none text-fg backdrop-blur transition hover:bg-ink hover:text-white";return(0,n.jsxs)("div",{className:"absolute right-3 top-3 flex flex-col gap-1",children:[(0,n.jsx)("button",{type:"button","aria-label":"Zoom in",className:r,onClick:()=>e(t),children:"+"}),(0,n.jsx)("button",{type:"button","aria-label":"Zoom out",className:r,onClick:()=>e(1.2),children:"−"}),a?(0,n.jsx)("button",{type:"button","aria-label":"Reset camera focus to center",title:"Reset focus to center",className:r,onClick:a,children:(0,n.jsxs)("svg",{viewBox:"0 0 16 16",width:"16",height:"16",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"8",cy:"8",r:"3"}),(0,n.jsx)("path",{d:"M8 1v2.5M8 12.5V15M1 8h2.5M12.5 8H15"})]})}):null]})}],2413)},25476,e=>{"use strict";e.s(["attachMeshHover",0,function(e,t,n){let a=0,r=null,s=t=>{let s=t.offsetX,l=t.offsetY;a||(a=requestAnimationFrame(()=>{var t,i;let o;a=0;let c=e.pick(s,l,e=>e.isPickable&&e.isEnabled()),u=c?.pickedMesh?(t=c.pickedMesh,i=c.thinInstanceIndex??-1,(o=t.metadata)?i>=0&&o.hoverLabels?o.hoverLabels[i]??null:o.hoverLabel??null:null):null;u?n({label:u,x:s,y:l}):null!==r&&n(null),r=u}))},l=()=>{a&&(cancelAnimationFrame(a),a=0),null!==r&&(r=null,n(null))};return t.addEventListener("pointermove",s),t.addEventListener("pointerleave",l),()=>{t.removeEventListener("pointermove",s),t.removeEventListener("pointerleave",l),a&&cancelAnimationFrame(a)}}])},48939,e=>{"use strict";var t=e.i(28100),n=e.i(11623);function a(e){return Number.isNaN(e)||e<0?0:e>1?1:e}function r(e){let t=a(e),n=[[0,.1,.9],[0,.85,1],[.1,.9,.2],[1,.85,0],[1,.15,0],[1,1,1]],r=n.length-1,s=t*r,l=Math.min(Math.floor(s),r-1),i=s-l,o=n[l],c=n[l+1];return o&&c?[o[0]+(c[0]-o[0])*i,o[1]+(c[1]-o[1])*i,o[2]+(c[2]-o[2])*i]:[1,1,1]}var s=e.i(56054),l=e.i(2348),i=e.i(25476),o=e.i(18637),c=e.i(2413);e.s(["CameraDome3DView",0,function({bins:u,gridSize:h}){let d=(0,n.useRef)(null),m=(0,n.useRef)(null),p=(0,n.useRef)(null),[f,b]=(0,n.useState)("loading"),[g,x]=(0,n.useState)(null),[v,w]=(0,n.useState)("markers"),[k,j]=(0,n.useState)(null),y=(0,n.useRef)(u),M=(0,n.useRef)(h),z=(0,n.useRef)(v);y.current=u,M.current=h,z.current=v;let C=(0,n.useRef)(null),_=u.length>0;return(0,n.useEffect)(()=>{let t=d.current;if(!t)return;if(!_)return void b("empty");let n=!1,o=null;return b("loading"),x(null),(async()=>{try{let[{Engine:c},{Scene:u},{ArcRotateCamera:h},{HemisphericLight:d},{Vector3:f,Color3:g,Color4:x,Matrix:v},{MeshBuilder:w},{StandardMaterial:k},{Mesh:_},{DynamicTexture:A}]=await Promise.all([e.A(3905),e.A(94432),e.A(59694),e.A(88004),e.A(27940),e.A(27124),e.A(14074),e.A(2213),e.A(15002),e.A(35983),e.A(18561)]);if(n)return;let L=new c(t,!0,{preserveDrawingBuffer:!1}),I=new u(L);I.clearColor=new x(.04,.05,.07,1);let S=f.Zero(),R=new h("dome-cam",Math.PI/3,Math.PI/2.4,3.6,S,I);R.attachControl(t,!0),R.lowerRadiusLimit=1.6,R.upperRadiusLimit=8,(0,l.disableWheelZoom)(R),m.current=R,p.current={target:S,alpha:R.alpha,beta:R.beta,radius:R.radius},new d("dome-light",new f(.3,1,.2),I);let E=w.CreateSphere("dome",{diameter:2,segments:20},I),P=new k("dome-mat",I);P.wireframe=!0,P.disableLighting=!0,P.emissiveColor=new g(.16,.2,.28),P.alpha=.5,E.material=P,E.isPickable=!1;let $=[];for(let e=0;e<=64;e++){let t=e/64*Math.PI*2;$.push(new f(Math.cos(t),0,Math.sin(t)))}let T=w.CreateLines("dome-horizon",{points:$},I);T.color=new g(.3,.36,.46),T.isPickable=!1;let B=w.CreateLines("dome-forward",{points:[f.Zero(),new f(1.25,0,0)]},I);B.color=new g(.4,.7,.95),B.isPickable=!1;let N=[],F=()=>{for(let e of N)e.dispose(!1,!0);N=[];let e=y.current;if(0===e.length)return;let t=e.reduce((e,t)=>Math.max(e,t.count),1),n=M.current>0?M.current:1;if("markers"===z.current){let a=w.CreateBox("dome-marker",{size:1},I),r=new k("dome-marker-mat",I);r.disableLighting=!0,r.emissiveColor=g.White(),r.specularColor=new g(0,0,0),a.material=r,a.isPickable=!0,a.thinInstanceEnablePicking=!0;let l=e.length,i=new Float32Array(16*l),o=new Float32Array(4*l),c=Array(l);for(let a=0;a<l;a++){let r=e[a],l=(r.azimuth_bin+.5)/n*Math.PI*2-Math.PI,u=(r.elevation_bin+.5)/n*Math.PI-Math.PI/2,h=Math.cos(u),d=h*Math.cos(l),m=Math.sin(u),p=h*Math.sin(l),f=r.count/t,b=.03+.12*f;v.Scaling(b,b,b).multiply(v.Translation(d,m,p)).copyToArray(i,16*a);let[g,x,w]=(0,s.heatRgb)(f);o[4*a]=g,o[4*a+1]=x,o[4*a+2]=w,o[4*a+3]=1,c[a]=`dir (${r.azimuth_bin}, ${r.elevation_bin}) \xb7 ${r.count}`}a.thinInstanceSetBuffer("matrix",i,16,!0),a.thinInstanceSetBuffer("color",o,4,!0),a.metadata={hoverLabels:c},N.push(a)}else{let t=function(e,t={}){let n=void 0!==t.width&&t.width>0?Math.floor(t.width):256,s=void 0!==t.height&&t.height>0?Math.floor(t.height):Math.max(1,Math.floor(n/2)),l=t.colorRamp??r,i=void 0!==t.blurBins&&t.blurBins>0?t.blurBins:1.5,o=a(t.alphaFloor??0),c=a(t.opacity??1),u=e.gridSize>0?e.gridSize:1,h=new Uint8ClampedArray(n*s*4),d=e.bins.filter(e=>e.count>0);if(0===d.length)return{width:n,height:s,rgba:h};let m=Math.max(1e-4,Math.PI/u*i),p=2*m*m,f=Math.cos(Math.min(Math.PI,3*m)),b=d.map(e=>{var t,n;let a,[r,s]=(t=e.azimuthBin,n=e.elevationBin,[(t+.5)/u*Math.PI*2-Math.PI,(n+.5)/u*Math.PI-Math.PI/2]);return[(a=Math.cos(s))*Math.cos(r),Math.sin(s),a*Math.sin(r)]}),g=new Float32Array(n*s),x=0;for(let e=0;e<s;e++){let t=Math.PI/2-(e+.5)/s*Math.PI,a=Math.cos(t),r=Math.sin(t);for(let t=0;t<n;t++){let s=(t+.5)/n*Math.PI*2-Math.PI,l=a*Math.cos(s),i=a*Math.sin(s),o=0;for(let e=0;e<d.length;e++){let t=b[e],n=l*t[0]+r*t[1]+i*t[2];if(n<f)continue;let a=Math.acos(n>1?1:n<-1?-1:n);o+=d[e].count*Math.exp(-(a*a)/p)}g[e*n+t]=o,o>x&&(x=o)}}if(x<=0)return{width:n,height:s,rgba:h};for(let e=0;e<g.length;e++){let t=a(g[e]/x),[n,r,s]=l(t),i=(o+(1-o)*t)*c,u=4*e;h[u]=Math.round(255*n),h[u+1]=Math.round(255*r),h[u+2]=Math.round(255*s),h[u+3]=Math.round(255*a(i))}return{width:n,height:s,rgba:h}}({bins:e.map(e=>({azimuthBin:e.azimuth_bin,elevationBin:e.elevation_bin,count:e.count})),gridSize:n},{width:256,blurBins:1.5,opacity:.95}),s=new A("dome-skytex",{width:t.width,height:t.height},I,!1);s.hasAlpha=!0;let l=s.getContext(),i=l.createImageData(t.width,t.height);i.data.set(t.rgba),l.putImageData(i,0,0),s.update();let o=w.CreateSphere("dome-sky",{diameter:2,segments:48,sideOrientation:_.DOUBLESIDE},I),c=new k("dome-sky-mat",I);c.disableLighting=!0,c.emissiveColor=g.White(),c.diffuseColor=new g(0,0,0),c.specularColor=new g(0,0,0),c.emissiveTexture=s,c.opacityTexture=s,c.backFaceCulling=!1,o.material=c,o.isPickable=!1,N.push(o)}};C.current=F,F(),L.runRenderLoop(()=>I.render());let q=()=>L.resize();window.addEventListener("resize",q);let D=(0,i.attachMeshHover)(I,t,j),O=(0,l.attachDoubleClickFocus)(I,t,R);b("ready"),o=()=>{window.removeEventListener("resize",q),D(),O(),j(null),C.current=null,m.current=null,p.current=null,I.dispose(),L.dispose()}}catch(e){if(n)return;b("error"),x(e instanceof Error?e.message:"Failed to render dome.")}})(),()=>{n=!0,o?.()}},[_]),(0,n.useEffect)(()=>{C.current?.()},[u,h,v]),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("canvas",{ref:d,className:"aspect-video w-full rounded-lg border border-edge bg-ink"}),k?(0,t.jsx)("div",{className:"pointer-events-none absolute z-10 max-w-[16rem] truncate rounded border border-edge bg-ink/90 px-1.5 py-0.5 text-xs text-white shadow backdrop-blur",style:{left:k.x+12,top:k.y+12},children:k.label}):null,"ready"===f?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"absolute left-3 top-3 flex overflow-hidden rounded-md border border-edge bg-ink/80 text-xs backdrop-blur",children:["markers","skydome"].map(e=>(0,t.jsx)("button",{type:"button",onClick:()=>w(e),className:`px-2.5 py-1 ${v===e?"bg-fg/15 font-medium text-white":"text-fg-muted hover:text-fg"}`,children:"markers"===e?"Markers":"Skydome"},e))}),(0,t.jsx)(c.ZoomButtons,{onZoom:e=>m.current&&(0,l.stepZoom)(m.current,e),onReset:()=>m.current&&p.current&&(0,l.resetFocus)(m.current,p.current)}),(0,t.jsx)(o.HeatLegend,{title:"Gaze density",lowLabel:"rarely",highLabel:"most-viewed",note:"markers"===v?"Each marker is a look-direction (camera forward). Blue line = forward, ring = horizon. Color & size scale with how often that direction was viewed.":"Continuous equirectangular heat field: the same gaze bins splatted into a smooth thermal texture wrapped on the dome. The in-scene SDK overlay (showGazeSkydome) renders this inward so you can stand inside it in WebXR."})]}):(0,t.jsx)("div",{className:"pointer-events-none absolute inset-0 grid place-items-center text-sm text-fg-muted",children:"loading"===f?"Rendering…":"empty"===f?"No camera samples in range.":"error"===f?g??"Dome unavailable.":null})]})}],48939)},53993,e=>{"use strict";var t=e.i(28100),n=e.i(11623),a=e.i(56054),r=e.i(2348),s=e.i(25476),l=e.i(18637),i=e.i(2413);function o({shape:e,onChange:n}){let a=e=>`h-8 px-2.5 text-xs font-medium leading-none transition first:rounded-l-md last:rounded-r-md ${e?"bg-ink text-white":"bg-ink/80 text-fg hover:text-white"}`,r="sphere"===e,s="cube"===e;return(0,t.jsxs)("div",{className:"absolute left-3 top-3 flex overflow-hidden rounded-md border border-edge backdrop-blur",role:"group","aria-label":"Voxel marker shape",children:[(0,t.jsx)("button",{type:"button",className:a(r),"aria-pressed":r,onClick:()=>n("sphere"),children:"Spheres"}),(0,t.jsx)("button",{type:"button",className:a(s),"aria-pressed":s,onClick:()=>n("cube"),children:"Cubes"})]})}e.s(["WorldHeatmap3DView",0,function({voxels:c,cellSize:u,proxyMeshes:h=[],legendTitle:d="Pointer-hit density",legendLow:m="few hits",legendHigh:p="most hits",legendNote:f="Each marker is a voxel where the pointer hit your scene. Color & size scale with hits, normalized to the 95th-percentile cell so a few hotspots don't wash out the rest.",emptyLabel:b="No 3D hit-points in range.",totals:g,voxelLabels:x}){let v=(0,n.useRef)(null),w=(0,n.useRef)(null),k=(0,n.useRef)(null),[j,y]=(0,n.useState)("loading"),[M,z]=(0,n.useState)(null),[C,_]=(0,n.useState)("sphere"),[A,L]=(0,n.useState)(null),I=(0,n.useRef)(c),S=(0,n.useRef)(h),R=(0,n.useRef)(x);I.current=c,S.current=h,R.current=x;let E=(0,n.useRef)(null),P=c.length>0||h.length>0;(0,n.useEffect)(()=>{let t=v.current;if(!t)return;if(!P)return void y("empty");let n=!1,l=null;return y("loading"),z(null),(async()=>{try{let[{Engine:i},{Scene:o},{ArcRotateCamera:c},{HemisphericLight:h},{Vector3:d,Color3:m,Color4:p,Matrix:f},{MeshBuilder:b},{StandardMaterial:g}]=await Promise.all([e.A(3905),e.A(94432),e.A(59694),e.A(88004),e.A(27940),e.A(27124),e.A(14074),e.A(35983),e.A(18561)]);if(n)return;let x=I.current,v=S.current,j=0,M=0,z=0,_=0;for(let e of x)j+=(e.vx+.5)*u,M+=(e.vy+.5)*u,z+=(e.vz+.5)*u,_++;if(0===_)for(let e of v)j+=(e.aabb[0]+e.aabb[3])/2,M+=(e.aabb[1]+e.aabb[4])/2,z+=(e.aabb[2]+e.aabb[5])/2,_++;let A=new d(j/_,M/_,z/_),P=4*u;for(let e of x){let t=(e.vx+.5)*u-A.x,n=(e.vy+.5)*u-A.y,a=(e.vz+.5)*u-A.z;P=Math.max(P,Math.sqrt(t*t+n*n+a*a))}for(let e of v){let t=(e.aabb[0]+e.aabb[3])/2-A.x,n=(e.aabb[1]+e.aabb[4])/2-A.y,a=(e.aabb[2]+e.aabb[5])/2-A.z;P=Math.max(P,Math.sqrt(t*t+n*n+a*a))}let $=new i(t,!0,{preserveDrawingBuffer:!1}),T=new o($);T.clearColor=new p(.04,.05,.07,1);let B=new c("world-cam",Math.PI/4,Math.PI/3,2.4*P,A,T);B.attachControl(t,!0),(0,r.disableWheelZoom)(B),w.current=B,k.current={target:A,alpha:B.alpha,beta:B.beta,radius:B.radius},new h("world-light",new d(.4,1,.3),T);let N=Math.max(.02*P,.25*u)/(.9*u),F=B.radius,q="cube"===C?b.CreateBox("world-voxel",{size:.9*u},T):b.CreateSphere("world-voxel",{diameter:.9*u,segments:6},T),D=new g("world-voxel-mat",T);D.diffuseColor=new m(1,1,1),D.specularColor=new m(0,0,0),q.material=D;let O=0,Z=new Float32Array(0),V=new Float32Array(0),W=-1,H=()=>{if(0===O)return;let e=Math.min(8,Math.max(.6,B.radius/F));if(!(.01>Math.abs(e-W))){W=e;for(let t=0;t<O;t++){let n=V[t]*e,a=16*t;Z[a]=n,Z[a+5]=n,Z[a+10]=n}q.thinInstanceBufferUpdated("matrix")}};T.onBeforeRenderObservable.add(H);let K=null,U="\0",G=()=>{(()=>{let e=S.current,t=e.map(e=>`${e.name}:${e.aabb.join(",")}`).join("|");if(t===U||(U=t,K&&(K.dispose(!1,!0),K=null),0===e.length))return;K=b.CreateBox("scene-proxy",{size:1},T);let n=new g("scene-proxy-mat",T);n.wireframe=!0,n.disableLighting=!0,n.emissiveColor=new m(.32,.4,.52),n.alpha=.35,K.material=n,K.isPickable=!0,K.thinInstanceEnablePicking=!0,K.metadata={hoverLabels:e.map(e=>e.name)};let a=e.length,r=new Float32Array(16*a);for(let t=0;t<a;t++){let n=e[t].aabb,a=Math.max(n[3]-n[0],.001),s=Math.max(n[4]-n[1],.001),l=Math.max(n[5]-n[2],.001);f.Scaling(a,s,l).multiply(f.Translation((n[0]+n[3])/2,(n[1]+n[4])/2,(n[2]+n[5])/2)).copyToArray(r,16*t)}K.thinInstanceSetBuffer("matrix",r,16,!0)})(),(()=>{let e=I.current,t=R.current,n=e.length;if(0===n){O=0,q.isVisible=!1;return}let r=(0,a.percentileMax)(e.map(e=>e.count),.95),s=new Float32Array(16*n),l=new Float32Array(4*n),i=new Float32Array(n);for(let t=0;t<n;t++){let n=e[t],o=Math.min(1,n.count/r),c=N*(.5+.5*o);i[t]=c,f.Scaling(c,c,c).multiply(f.Translation((n.vx+.5)*u,(n.vy+.5)*u,(n.vz+.5)*u)).copyToArray(s,16*t);let[h,d,m]=(0,a.heatRgb)(o);l[4*t]=h,l[4*t+1]=d,l[4*t+2]=m,l[4*t+3]=1}O=n,Z=s,V=i,q.isVisible=!0,q.isPickable=!!t,q.thinInstanceEnablePicking=!!t,q.metadata=t?{hoverLabels:t}:null,q.thinInstanceSetBuffer("matrix",Z,16,!1),q.thinInstanceSetBuffer("color",l,4,!0),W=-1,H()})()};E.current=G,G(),$.runRenderLoop(()=>T.render());let Y=()=>$.resize();window.addEventListener("resize",Y);let X=(0,s.attachMeshHover)(T,t,L),J=(0,r.attachDoubleClickFocus)(T,t,B);y("ready"),l=()=>{window.removeEventListener("resize",Y),X(),J(),L(null),E.current=null,w.current=null,k.current=null,T.dispose(),$.dispose()}}catch(e){if(n)return;y("error"),z(e instanceof Error?e.message:"Failed to render heatmap.")}})(),()=>{n=!0,l?.()}},[C,u,P]),(0,n.useEffect)(()=>{E.current?.()},[c,h,x]);let $=g?g.cells>c.length?` Showing the ${c.length.toLocaleString()} busiest of ${g.cells.toLocaleString()} occupied cells (${g.hits.toLocaleString()} total hits).`:` ${g.cells.toLocaleString()} occupied cells, ${g.hits.toLocaleString()} total hits.`:"";return(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("canvas",{ref:v,className:"aspect-video w-full rounded-lg border border-edge bg-ink"}),A?(0,t.jsx)("div",{className:"pointer-events-none absolute z-10 max-w-[16rem] truncate rounded border border-edge bg-ink/90 px-1.5 py-0.5 text-xs text-white shadow backdrop-blur",style:{left:A.x+12,top:A.y+12},children:A.label}):null,"ready"===j?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o,{shape:C,onChange:_}),(0,t.jsx)(i.ZoomButtons,{onZoom:e=>w.current&&(0,r.stepZoom)(w.current,e),onReset:()=>w.current&&k.current&&(0,r.resetFocus)(w.current,k.current)}),(0,t.jsx)(l.HeatLegend,{title:d,lowLabel:m,highLabel:p,note:f+$})]}):(0,t.jsx)("div",{className:"pointer-events-none absolute inset-0 grid place-items-center text-sm text-fg-muted",children:"loading"===j?"Rendering…":"empty"===j?b:"error"===j?M??"Heatmap unavailable.":null})]})}])},39592,e=>{"use strict";var t=e.i(28100),n=e.i(11623),a=e.i(56054),r=e.i(2348),s=e.i(25476),l=e.i(2413);function i(e){let t=Math.min(1,Math.max(0,e));return[.118+(.22-.118)*t,.227+.513*t,.541+(.97-.541)*t]}function o(e){return`${e.vx}|${e.vy}|${e.vz}`}function c({mode:e}){return(0,t.jsxs)("div",{className:"absolute bottom-3 right-3 max-w-72 rounded-md border border-edge bg-ink/80 px-2 py-1.5 text-xs text-fg backdrop-blur",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsx)("span",{className:"inline-block h-2.5 w-2.5 rounded-sm bg-[#38bdf8]"}),"divergence"===e?"Gaze-heavy":"Gaze"]}),(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsx)("span",{className:"inline-block h-2.5 w-2.5 rounded-sm bg-[#f4c84b]"}),"divergence"===e?"Click-heavy":"Clicks"]})]}),(0,t.jsx)("p",{className:"mt-1 text-fg-muted",children:"divergence"===e?"Per-voxel normalized difference: which signal dominates each cell. Color & size scale with the gap.":"Gaze = where viewers looked; Clicks = where they acted. Cells with gaze but no clicks are looked-at but un-acted-on."})]})}function u({active:e,onClick:n,children:a}){return(0,t.jsx)("button",{type:"button",onClick:n,className:`rounded px-2 py-0.5 font-medium transition ${e?"bg-amber text-ink":"text-fg-muted hover:text-fg"}`,children:a})}e.s(["GazeClickDivergence3DView",0,function({gazeVoxels:h,clickVoxels:d,cellSize:m,proxyMeshes:p=[]}){let f=(0,n.useRef)(null),b=(0,n.useRef)(null),g=(0,n.useRef)(null),[x,v]=(0,n.useState)("loading"),[w,k]=(0,n.useState)(null),[j,y]=(0,n.useState)("overlay"),[M,z]=(0,n.useState)(null),C=(0,n.useRef)(h),_=(0,n.useRef)(d),A=(0,n.useRef)(p),L=(0,n.useRef)(j);C.current=h,_.current=d,A.current=p,L.current=j;let I=(0,n.useRef)(null),S=h.length>0||d.length>0||p.length>0;return(0,n.useEffect)(()=>{let t=f.current;if(!t)return;if(!S)return void v("empty");let n=!1,l=null;return v("loading"),k(null),(async()=>{try{let[{Engine:c},{Scene:u},{ArcRotateCamera:h},{HemisphericLight:d},{Vector3:p,Color3:f,Color4:x,Matrix:w},{MeshBuilder:k},{StandardMaterial:j}]=await Promise.all([e.A(3905),e.A(94432),e.A(59694),e.A(88004),e.A(27940),e.A(27124),e.A(14074),e.A(35983),e.A(18561)]);if(n)return;let y=C.current,M=_.current,S=A.current,R=[...y,...M],E=0,P=0,$=0,T=0;for(let e of R)E+=(e.vx+.5)*m,P+=(e.vy+.5)*m,$+=(e.vz+.5)*m,T++;if(0===T)for(let e of S)E+=(e.aabb[0]+e.aabb[3])/2,P+=(e.aabb[1]+e.aabb[4])/2,$+=(e.aabb[2]+e.aabb[5])/2,T++;let B=new p(E/T,P/T,$/T),N=4*m;for(let e of R){let t=(e.vx+.5)*m-B.x,n=(e.vy+.5)*m-B.y,a=(e.vz+.5)*m-B.z;N=Math.max(N,Math.sqrt(t*t+n*n+a*a))}for(let e of S){let t=(e.aabb[0]+e.aabb[3])/2-B.x,n=(e.aabb[1]+e.aabb[4])/2-B.y,a=(e.aabb[2]+e.aabb[5])/2-B.z;N=Math.max(N,Math.sqrt(t*t+n*n+a*a))}let F=new c(t,!0,{preserveDrawingBuffer:!1}),q=new u(F);q.clearColor=new x(.04,.05,.07,1);let D=new h("divergence-cam",Math.PI/4,Math.PI/3,2.4*N,B,q);D.attachControl(t,!0),(0,r.disableWheelZoom)(D),b.current=D,g.current={target:B,alpha:D.alpha,beta:D.beta,radius:D.radius},new d("divergence-light",new p(.4,1,.3),q);let O=null,Z="\0",V=Math.max(.02*N,.25*m)/(.9*m),W=[],H=(e,t,n,a,r)=>{if(0===t.length)return;let s=k.CreateSphere(e,{diameter:.9*m,segments:6},q),l=new j(`${e}-mat`,q);l.diffuseColor=new f(1,1,1),l.specularColor=new f(0,0,0),s.material=l,s.metadata={hoverLabel:r},W.push(s);let i=t.length,o=new Float32Array(16*i),c=new Float32Array(4*i);for(let e=0;e<i;e++){let r=t[e],s=r.count/n,l=V*(.5+.5*s);w.Scaling(l,l,l).multiply(w.Translation((r.vx+.5)*m,(r.vy+.5)*m,(r.vz+.5)*m)).copyToArray(o,16*e);let[i,u,h]=a(s);c[4*e]=i,c[4*e+1]=u,c[4*e+2]=h,c[4*e+3]=1}s.thinInstanceSetBuffer("matrix",o,16,!1),s.thinInstanceSetBuffer("color",c,4,!0)},K=()=>{for(let e of((()=>{let e=A.current,t=e.map(e=>`${e.name}:${e.aabb.join(",")}`).join("|");if(t===Z||(Z=t,O&&(O.dispose(!1,!0),O=null),0===e.length))return;O=k.CreateBox("scene-proxy",{size:1},q);let n=new j("scene-proxy-mat",q);n.wireframe=!0,n.disableLighting=!0,n.emissiveColor=new f(.32,.4,.52),n.alpha=.35,O.material=n,O.isPickable=!0,O.thinInstanceEnablePicking=!0,O.metadata={hoverLabels:e.map(e=>e.name)};let a=e.length,r=new Float32Array(16*a);for(let t=0;t<a;t++){let n=e[t].aabb,a=Math.max(n[3]-n[0],.001),s=Math.max(n[4]-n[1],.001),l=Math.max(n[5]-n[2],.001);w.Scaling(a,s,l).multiply(w.Translation((n[0]+n[3])/2,(n[1]+n[4])/2,(n[2]+n[5])/2)).copyToArray(r,16*t)}O.thinInstanceSetBuffer("matrix",r,16,!0)})(),W))e.dispose(!1,!0);W=[];let e=C.current,t=_.current,n=e.reduce((e,t)=>Math.max(e,t.count),1),r=t.reduce((e,t)=>Math.max(e,t.count),1),s=L.current;if("divergence"===s){let s=new Map(e.map(e=>[o(e),e])),l=new Map(t.map(e=>[o(e),e])),c=new Set([...s.keys(),...l.keys()]),u=[],h=[];for(let e of c){let t=(s.get(e)?.count??0)/n,a=(l.get(e)?.count??0)/r,i=l.get(e)??s.get(e),o=a-t,c={vx:i.vx,vy:i.vy,vz:i.vz,count:1e3*Math.abs(o)};(o>=0?u:h).push(c)}H("div-click",u,1e3,a.heatRgb,"Click-heavy"),H("div-gaze",h,1e3,i,"Gaze-heavy")}else("overlay"===s||"gaze"===s)&&H("gaze-voxel",e,n,i,"Gaze"),("overlay"===s||"click"===s)&&H("click-voxel",t,r,a.heatRgb,"Click")};I.current=K,K(),F.runRenderLoop(()=>q.render());let U=()=>F.resize();window.addEventListener("resize",U);let G=(0,s.attachMeshHover)(q,t,z),Y=(0,r.attachDoubleClickFocus)(q,t,D);v("ready"),l=()=>{window.removeEventListener("resize",U),G(),Y(),z(null),I.current=null,b.current=null,g.current=null,q.dispose(),F.dispose()}}catch(e){if(n)return;v("error"),k(e instanceof Error?e.message:"Failed to render overlay.")}})(),()=>{n=!0,l?.()}},[S,m]),(0,n.useEffect)(()=>{I.current?.()},[h,d,p,m,j]),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("canvas",{ref:f,className:"aspect-video w-full rounded-lg border border-edge bg-ink"}),M?(0,t.jsx)("div",{className:"pointer-events-none absolute z-10 max-w-64 truncate rounded border border-edge bg-ink/90 px-1.5 py-0.5 text-xs text-white shadow backdrop-blur",style:{left:M.x+12,top:M.y+12},children:M.label}):null,"ready"===x?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"absolute left-3 top-3 flex items-center gap-1 rounded-md border border-edge bg-ink/80 p-0.5 text-xs backdrop-blur",children:[(0,t.jsx)(u,{active:"overlay"===j,onClick:()=>y("overlay"),children:"Overlay"}),(0,t.jsx)(u,{active:"gaze"===j,onClick:()=>y("gaze"),children:"Gaze"}),(0,t.jsx)(u,{active:"click"===j,onClick:()=>y("click"),children:"Clicks"}),(0,t.jsx)(u,{active:"divergence"===j,onClick:()=>y("divergence"),children:"Divergence"})]}),(0,t.jsx)(l.ZoomButtons,{onZoom:e=>b.current&&(0,r.stepZoom)(b.current,e),onReset:()=>b.current&&g.current&&(0,r.resetFocus)(b.current,g.current)}),(0,t.jsx)(c,{mode:j})]}):(0,t.jsx)("div",{className:"pointer-events-none absolute inset-0 grid place-items-center text-sm text-fg-muted",children:"loading"===x?"Rendering…":"empty"===x?"No gaze or click hit-points in range. Enable gaze + pointer capture in the SDK.":"error"===x?w??"Overlay unavailable.":null})]})}])},19399,e=>{"use strict";var t=e.i(28100),n=e.i(11623),a=e.i(20880);let r="__other_sp__",s="__other_mesh__";function l(e){return`${e[0]}|${e[1]}|${e[2]}`}function i(e,t){return t<=1?0:1.4-e/(t-1)*2.8}var o=e.i(56054),c=e.i(2348),u=e.i(25476),h=e.i(18637),d=e.i(2413);let m="__all__",p={maxStandpoints:6,maxMeshes:10,maxRibbons:70};function f(e,t){return`${e}|${t}`}function b(e){let t=e.aabb;return[(t[0]+t[3])/2,(t[1]+t[4])/2,(t[2]+t[5])/2]}function g(e){let t=0;for(let n=0;n<e.length;n++)t=31*t+e.charCodeAt(n)|0;return Math.abs(t)}function x({label:e,value:n,onChange:a,allLabel:r,options:s}){return(0,t.jsxs)("label",{className:"flex items-center gap-1.5 rounded-md border border-edge bg-ink/80 px-2 py-1 text-xs text-fg backdrop-blur",children:[(0,t.jsx)("span",{className:"font-medium text-fg-muted",children:e}),(0,t.jsxs)("select",{className:"max-w-[12rem] bg-transparent text-white outline-none",value:n,onChange:e=>a(e.target.value),children:[(0,t.jsx)("option",{value:m,children:r}),s.map(e=>(0,t.jsx)("option",{value:e.value,children:e.label},e.value))]})]})}function v({active:e,onClick:n,children:a,disabled:r=!1,title:s}){return(0,t.jsx)("button",{type:"button",onClick:n,disabled:r,title:s,className:`rounded px-2 py-0.5 font-medium transition ${r?"cursor-not-allowed text-fg-muted/40":e?"bg-amber text-ink":"text-fg-muted hover:text-fg"}`,children:a})}function w({standpoints:e,proxyMeshes:a,selectedKey:r,onSelect:s}){let l=(0,n.useRef)(null),i=(0,n.useMemo)(()=>e.filter(e=>e.origin),[e]),o=(0,n.useMemo)(()=>{let e=1/0,t=-1/0,n=1/0,r=-1/0,s=(a,s)=>{e=Math.min(e,a),t=Math.max(t,a),n=Math.min(n,s),r=Math.max(r,s)};for(let e of a)s(e.aabb[0],e.aabb[2]),s(e.aabb[3],e.aabb[5]);for(let e of i)s(e.origin[0],e.origin[2]);return Number.isFinite(e)?(t-e<.001&&(e-=1,t+=1),r-n<.001&&(n-=1,r+=1),{minX:e,maxX:t,minZ:n,maxZ:r}):{minX:-1,maxX:1,minZ:-1,maxZ:1}},[a,i]),c=(0,n.useMemo)(()=>{let e=Math.min(134/(o.maxX-o.minX),94/(o.maxZ-o.minZ));return(t,n)=>[8+(t-o.minX)*e,8+(n-o.minZ)*e]},[o]),u=(0,n.useMemo)(()=>i.reduce((e,t)=>Math.max(e,t.count),1),[i]);return(0,n.useEffect)(()=>{let e=l.current,t=e?.getContext("2d");if(!t)return;let n=window.devicePixelRatio||1;for(let r of(e.width=150*n,e.height=110*n,t.setTransform(n,0,0,n,0,0),t.clearRect(0,0,150,110),t.fillStyle="rgba(8,10,14,0.85)",t.fillRect(0,0,150,110),t.strokeStyle="rgba(120,140,170,0.35)",t.lineWidth=1,a)){let[e,n]=c(r.aabb[0],r.aabb[2]),[a,s]=c(r.aabb[3],r.aabb[5]);t.strokeRect(Math.min(e,a),Math.min(n,s),Math.abs(a-e),Math.abs(s-n))}for(let e of i){let[n,a]=c(e.origin[0],e.origin[2]),s=2+e.count/u*4,l=e.key===r;t.beginPath(),t.arc(n,a,s,0,2*Math.PI),t.fillStyle=l?"rgba(242,115,242,1)":"rgba(242,115,242,0.55)",t.fill(),l&&(t.beginPath(),t.arc(n,a,s+2.5,0,2*Math.PI),t.strokeStyle="rgba(255,255,255,0.9)",t.lineWidth=1.5,t.stroke())}},[a,i,c,u,r]),(0,t.jsxs)("div",{className:"absolute right-3 top-3 rounded-md border border-edge bg-ink/80 p-1 backdrop-blur",children:[(0,t.jsx)("div",{className:"px-1 pb-0.5 text-[10px] font-medium text-fg-muted",children:"Standpoints (top view)"}),(0,t.jsx)("canvas",{ref:l,className:"h-27.5 w-37.5 cursor-pointer rounded",onClick:e=>{let t=l.current;if(!t||0===i.length)return;let n=t.getBoundingClientRect(),a=(e.clientX-n.left)/n.width*150,r=(e.clientY-n.top)/n.height*110,o=null,u=1/0;for(let e of i){let[t,n]=c(e.origin[0],e.origin[2]),s=(t-a)**2+(n-r)**2;s<u&&(u=s,o=e)}o&&u<=196&&s(o.key)}})]})}e.s(["FlowSankey3DView",0,function({links:k,gridSize:j,proxyMeshes:y=[],maxLinks:M=80,baseUrl:z,apiKey:C,flowQuery:_,hasFirstPerson:A=!1}){let L=(0,n.useRef)(null),I=(0,n.useRef)(null),S=(0,n.useRef)(null),[R,E]=(0,n.useState)("loading"),[P,$]=(0,n.useState)(null),[T,B]=(0,n.useState)(m),[N,F]=(0,n.useState)(m),[q,D]=(0,n.useState)(m),[O,Z]=(0,n.useState)("aggregate"),[V,W]=(0,n.useState)(null),[H,K]=(0,n.useState)("all"),[U,G]=(0,n.useState)(k),Y=!!(z&&_),X=(0,n.useMemo)(()=>_?JSON.stringify(_):"",[_]),J=(0,n.useRef)(!1);(0,n.useEffect)(()=>{!J.current&&A&&(K("first-person"),J.current=!0)},[A]),(0,n.useEffect)(()=>{A&&"viewer"===H&&K("first-person")},[A,H]),(0,n.useEffect)(()=>{Y||G(k)},[k,Y]),(0,n.useEffect)(()=>{if(!z||!_)return;let e=!1,t=new a.CollectorApi(z,C??""),n="all"===H?void 0:H;return t.flowHeatmap({..._,bins:j,limit:400,groupByOrigin:!0,cameraMode:n}).then(t=>{e||G(t)}).catch(()=>{e||G([])}),()=>{e=!0}},[z,C,X,H,j]);let Q=(0,n.useMemo)(()=>{let e=new Map;for(let t of U){if(!t.originVoxel)continue;let n=l(t.originVoxel),a=t.origin,r=e.get(n);r?(r.count+=t.count,a&&(r.ox+=a[0]*t.count,r.oy+=a[1]*t.count,r.oz+=a[2]*t.count,r.wsum+=t.count)):e.set(n,{key:n,voxel:t.originVoxel,count:t.count,ox:a?a[0]*t.count:0,oy:a?a[1]*t.count:0,oz:a?a[2]*t.count:0,wsum:a?t.count:0})}return[...e.values()].map(e=>({key:e.key,voxel:e.voxel,count:e.count,origin:e.wsum>0?[e.ox/e.wsum,e.oy/e.wsum,e.oz/e.wsum]:void 0})).sort((e,t)=>t.count-e.count)},[U]),ee=Q.length>0,et=(0,n.useMemo)(()=>q===m?null:Q.find(e=>e.key===q)??null,[Q,q]),en=(0,n.useMemo)(()=>(function(e,t,n,a){let o=e.filter(e=>e.originVoxel);if(0===o.length)return{standpoints:[],gazes:[],meshes:[],ribbons:[],maxCount:1};let c=t.slice(0,Math.max(1,a.maxStandpoints)),u=new Set(c.map(e=>e.key)),h=e=>{let t=e.originVoxel?l(e.originVoxel):r;return u.has(t)?t:r},d=new Map;for(let e of o)d.set(e.mesh,(d.get(e.mesh)??0)+e.count);let m=new Set([...d.entries()].sort((e,t)=>t[1]-e[1]).slice(0,Math.max(1,a.maxMeshes)).map(([e])=>e)),p=e=>m.has(e)?e:s,f=new Map;for(let e of o){let t=h(e),n=p(e.mesh),a=`${t}|${e.azimuth_bin}|${e.elevation_bin}|${n}`,r=f.get(a);r?r.count+=e.count:f.set(a,{standpointId:t,gazeId:`${t}|${e.azimuth_bin}|${e.elevation_bin}`,meshId:n,azimuthBin:e.azimuth_bin,elevationBin:e.elevation_bin,count:e.count})}let b=[...f.values()].sort((e,t)=>t.count-e.count),g=b.slice(0,Math.max(1,a.maxRibbons)),x=b.slice(Math.max(1,a.maxRibbons));if(x.length>0){let e=new Map(g.map(e=>[`${e.standpointId}|${e.azimuthBin}|${e.elevationBin}|${s}`,e]));for(let t of x){let n=`${t.standpointId}|${t.azimuthBin}|${t.elevationBin}|${s}`,a=e.get(n);if(a)a.count+=t.count;else{let a={standpointId:t.standpointId,gazeId:t.gazeId,meshId:s,azimuthBin:t.azimuthBin,elevationBin:t.elevationBin,count:t.count};e.set(n,a),g.push(a)}}}let v=new Set(g.map(e=>e.standpointId)),w=new Set(g.map(e=>e.meshId)),k=[...c.filter(e=>v.has(e.key)).map(e=>e.key),...v.has(r)?[r]:[]],j=k.map((e,t)=>{let n=c.find(t=>t.key===e),a=g.filter(t=>t.standpointId===e).reduce((e,t)=>e+t.count,0);return{id:e,kind:"standpoint",pos:[-2.6,i(t,k.length),0],count:a,label:n?`[${n.voxel[0]}, ${n.voxel[1]}, ${n.voxel[2]}]`:"Other standpoints",isOther:e===r}}),y=new Map(j.map(e=>[e.id,e.pos[1]])),M=new Map;for(let e of g)M.set(e.meshId,(M.get(e.meshId)??0)+e.count);let z=[...w].sort((e,t)=>(M.get(t)??0)-(M.get(e)??0));z.sort((e,t)=>(e===s)-(t===s));let C=z.map((e,t)=>({id:e,kind:"mesh",pos:[2.6,i(t,z.length),0],count:M.get(e)??0,label:e===s?"Other meshes":e,isOther:e===s})),_=new Map;for(let e of g){let t=_.get(e.gazeId);t?t.count+=e.count:_.set(e.gazeId,{az:e.azimuthBin,el:e.elevationBin,sp:e.standpointId,count:e.count})}let A=[..._.entries()].map(([e,t])=>{let a=y.get(t.sp)??0,r=(t.az+.5)/n-.5;return{id:e,kind:"gaze",pos:[0,a+((t.el+.5)/n-.5)*.85,1.6*r],count:t.count,label:`(${t.az}, ${t.el})`,isOther:!1}}),L=g.reduce((e,t)=>Math.max(e,t.count),1);return{standpoints:j,gazes:A,meshes:C,ribbons:g,maxCount:L}})(U,Q,j,p),[U,Q,j]),ea="twostage"===O&&ee;(0,n.useEffect)(()=>{"twostage"!==O||ee||Z("aggregate")},[O,ee]);let er=(0,n.useMemo)(()=>{if(q!==m&&ee)return U.filter(e=>e.originVoxel&&l(e.originVoxel)===q);if(!ee)return U;let e=new Map;for(let t of U){let n=`${t.azimuth_bin}|${t.elevation_bin}|${t.mesh}`,a=e.get(n);a?a.count+=t.count:e.set(n,{azimuth_bin:t.azimuth_bin,elevation_bin:t.elevation_bin,mesh:t.mesh,count:t.count})}return[...e.values()]},[U,q,ee]),es=(0,n.useMemo)(()=>[...er].sort((e,t)=>t.count-e.count).slice(0,Math.max(1,M)),[er,M]),el=(0,n.useMemo)(()=>{let e=new Map;for(let t of es)e.set(t.mesh,(e.get(t.mesh)??0)+t.count);return[...e.entries()].sort((e,t)=>t[1]-e[1])},[es]),ei=(0,n.useMemo)(()=>{let e=new Map;for(let t of es){let n=f(t.azimuth_bin,t.elevation_bin),a=e.get(n);a?a.count+=t.count:e.set(n,{azimuthBin:t.azimuth_bin,elevationBin:t.elevation_bin,count:t.count})}return[...e.values()].sort((e,t)=>t.count-e.count)},[es]);(0,n.useEffect)(()=>{!ea&&T!==m&&(el.some(([e])=>e===T)||B(m))},[ea,T,el]),(0,n.useEffect)(()=>{!ea&&N!==m&&(ei.some(e=>f(e.azimuthBin,e.elevationBin)===N)||F(m))},[ea,N,ei]),(0,n.useEffect)(()=>{!ea&&q!==m&&(Q.some(e=>e.key===q)||D(m))},[ea,q,Q]),(0,n.useEffect)(()=>{B(m),F(m),D(m)},[O]);let eo=(0,n.useMemo)(()=>ea?en.ribbons.filter(e=>{let t=q===m||e.standpointId===q,n=N===m||f(e.azimuthBin,e.elevationBin)===N,a=T===m||e.meshId===T;return t&&n&&a}).length:es.filter(e=>{let t=N===m||f(e.azimuth_bin,e.elevation_bin)===N,n=T===m||e.mesh===T;return t&&n}).length,[ea,en,es,T,N,q]),ec=ea?en.ribbons.length:es.length,eu=(0,n.useMemo)(()=>ea?en.standpoints.map(e=>({value:e.id,label:`${e.label} \xb7 ${e.count}`})):Q.slice(0,24).map(e=>({value:e.key,label:`[${e.voxel[0]}, ${e.voxel[1]}, ${e.voxel[2]}] \xb7 ${e.count}`})),[ea,en,Q]),eh=(0,n.useMemo)(()=>{if(ea){let e=new Map;for(let t of en.ribbons){let n=f(t.azimuthBin,t.elevationBin),a=e.get(n);a?a.count+=t.count:e.set(n,{az:t.azimuthBin,el:t.elevationBin,count:t.count})}return[...e.values()].sort((e,t)=>t.count-e.count).map(e=>({value:f(e.az,e.el),label:`(${e.az}, ${e.el}) \xb7 ${e.count}`}))}return ei.map(e=>({value:f(e.azimuthBin,e.elevationBin),label:`(${e.azimuthBin}, ${e.elevationBin}) \xb7 ${e.count}`}))},[ea,en,ei]),ed=(0,n.useMemo)(()=>ea?en.meshes.map(e=>({value:e.id,label:`${e.label} \xb7 ${e.count}`})):el.map(([e,t])=>({value:e,label:`${e} \xb7 ${t}`})),[ea,en,el]),em=(0,n.useRef)(es);em.current=es;let ep=(0,n.useRef)(en);ep.current=en;let ef=(0,n.useRef)(y);ef.current=y;let eb=(0,n.useRef)(el);eb.current=el;let eg=(0,n.useRef)(T);eg.current=T;let ex=(0,n.useRef)(N);ex.current=N;let ev=(0,n.useRef)(q);ev.current=q;let ew=(0,n.useRef)(et);ew.current=et;let ek=(0,n.useRef)(null),ej=ea?en.ribbons.length>0:es.length>0;return(0,n.useEffect)(()=>{let t=L.current;if(!t)return;if(!ej)return void E("empty");let n=!1,a=null;return E("loading"),$(null),(async()=>{try{let r,[{Engine:s},{Scene:l},{ArcRotateCamera:i},{HemisphericLight:h},{Vector3:d,Color3:p,Color4:x},{MeshBuilder:v},{StandardMaterial:w}]=await Promise.all([e.A(3905),e.A(94432),e.A(59694),e.A(88004),e.A(27940),e.A(27124),e.A(14074),e.A(18561)]);if(n)return;let k=new s(t,!0,{preserveDrawingBuffer:!1}),y=new l(k);y.clearColor=new x(.04,.05,.07,1);let M=[],z=()=>{for(let e of M)e.dispose();M=[]};if(ea){let e=d.Zero();(r=new i("ts-cam",Math.PI/2,Math.PI/2.4,8.5,e,y)).attachControl(t,!0),(0,c.disableWheelZoom)(r),I.current=r,S.current={target:e,alpha:r.alpha,beta:r.beta,radius:r.radius},new h("ts-light",new d(.3,1,.2),y);let n={standpoint:[.95,.45,.95],gaze:[.45,.75,1],mesh:[1,.82,.42]},a={standpoint:.26,gaze:.13,mesh:.22},s=(e,t,n)=>{let a=e[0],r=e[1],s=e[2],l=t[0],i=t[1],o=t[2],c=[(a+l)/2,(r+i)/2+n,(s+o)/2],u=[];for(let e=0;e<=12;e++){let t=e/12,n=1-t;u.push(new d(n*n*a+2*n*t*c[0]+t*t*l,n*n*r+2*n*t*c[1]+t*t*i,n*n*s+2*n*t*c[2]+t*t*o))}return u},l=()=>{z();let e=ep.current;if(0===e.ribbons.length)return;let t=ev.current,r=ex.current,l=eg.current,i=e=>{let n=t===m||e.standpointId===t,a=r===m||f(e.azimuthBin,e.elevationBin)===r,s=l===m||e.meshId===l;return n&&a&&s},c=t!==m||r!==m||l!==m,u=new Set;for(let t of e.ribbons)i(t)&&(u.add(t.standpointId),u.add(t.gazeId),u.add(t.meshId));let h=[...e.standpoints,...e.gazes,...e.meshes],b=new Map(h.map(e=>[e.id,e.pos])),g=new Map(h.map(e=>[e.id,e.label]));for(let e of h){let t=v.CreateSphere(`ts-node-${e.kind}-${e.id}`,{diameter:a[e.kind],segments:8},y);t.position=new d(e.pos[0],e.pos[1],e.pos[2]);let r=new w(`ts-node-mat-${e.kind}-${e.id}`,y);r.disableLighting=!0;let[s,l,i]=n[e.kind];r.emissiveColor=new p(s,l,i),r.alpha=!c||u.has(e.id)?1:.2,t.material=r,t.isPickable=!0,t.metadata={hoverLabel:e.label},M.push(t,r)}for(let t of e.ribbons){let n=b.get(t.standpointId),a=b.get(t.gazeId),r=b.get(t.meshId);if(!n||!a||!r)continue;let l=t.count/e.maxCount,u=.18+.5*l,h=[...s(n,a,u),...s(a,r,u).slice(1)],d=i(t),[m,f,x]=(0,o.heatRgb)(l),k=v.CreateTube(`ts-link-${t.standpointId}-${t.gazeId}-${t.meshId}`,{path:h,radius:(d?1:.4)*(.012+.04*l),tessellation:8,cap:0,sideOrientation:0},y),j=new w(`ts-link-mat-${t.standpointId}-${t.gazeId}-${t.meshId}`,y);j.disableLighting=!0,j.emissiveColor=new p(m,f,x),j.alpha=d?.35+.65*l:c?.06:.18,k.material=j,k.isPickable=!0,k.metadata={hoverLabel:g.get(t.meshId)??t.meshId},M.push(k,j)}};ek.current=l,l()}else{let e=new Map;for(let t of ef.current)e.set(t.name,b(t));let n=new Map,a=eb.current.map(([e])=>e).filter(t=>!e.has(t));for(let e=0;e<a.length;e++){let t=a[e],r=g(t),s=e/Math.max(1,a.length)*Math.PI*2+r%100/100*.35;n.set(t,[2.2*Math.cos(s),-.35+(r%7-3)*.06,2.2*Math.sin(s)])}for(let[t,a]of e.entries())n.set(t,a);let s=0,l=0,u=0,x=0;for(let e of n.values())s+=e[0],l+=e[1],u+=e[2],x++;let k=new d(s/Math.max(1,x),l/Math.max(1,x),u/Math.max(1,x)),C=1.8;for(let e of n.values()){let t=e[0]-k.x,n=e[1]-k.y,a=e[2]-k.z;C=Math.max(C,Math.sqrt(t*t+n*n+a*a))}let _=.75*C+1,A=Math.max(1,C/1.8);(r=new i("flow-cam",Math.PI/4,Math.PI/3,3.4*C,k,y)).attachControl(t,!0),(0,c.disableWheelZoom)(r),I.current=r,S.current={target:k,alpha:r.alpha,beta:r.beta,radius:r.radius},new h("flow-light",new d(.3,1,.2),y);let L=v.CreateSphere("flow-source-dome",{diameter:2*_,segments:20},y);L.position=k;let R=new w("flow-source-dome-mat",y);R.wireframe=!0,R.disableLighting=!0,R.emissiveColor=new p(.16,.2,.28),R.alpha=.35,L.material=R,L.isPickable=!1;let E=()=>{z();let e=em.current;if(0===e.length)return;let t=eg.current,n=ex.current,a=ew.current,r=new Map;for(let e of ef.current)r.set(e.name,b(e));let s=new Map,l=eb.current.map(([e])=>e).filter(e=>!r.has(e));for(let e=0;e<l.length;e++){let t=l[e],n=g(t),a=e/Math.max(1,l.length)*Math.PI*2+n%100/100*.35;s.set(t,[2.2*Math.cos(a),-.35+(n%7-3)*.06,2.2*Math.sin(a)])}for(let[e,t]of r.entries())s.set(e,t);let i=e.reduce((e,t)=>Math.max(e,t.count),1),c=new w("flow-source-node",y);c.disableLighting=!0,c.emissiveColor=new p(.45,.75,1);let u=new w("flow-target-node",y);u.disableLighting=!0,u.emissiveColor=new p(1,.82,.42),M.push(c,u);let h=new Set,x=new Set,C=e=>{let a=n===m||f(e.azimuth_bin,e.elevation_bin)===n,r=t===m||e.mesh===t;return a&&r},L=new Set,I=new Set;for(let t of e)C(t)&&(L.add(f(t.azimuth_bin,t.elevation_bin)),I.add(t.mesh));for(let a of e){let e=`${a.azimuth_bin}|${a.elevation_bin}`,r=s.get(a.mesh);if(!r)continue;let l=C(a),f=(a.azimuth_bin+.5)/j*Math.PI*2-Math.PI,b=(a.elevation_bin+.5)/j*Math.PI-Math.PI/2,g=Math.cos(b),z=g*Math.cos(f),S=Math.sin(b),R=g*Math.sin(f),E=new d(k.x+z*_,k.y+S*_,k.z+R*_),P=new d(r[0],r[1],r[2]);if(!h.has(e)){let a=v.CreateSphere(`flow-src-${e}`,{diameter:.12*A,segments:6},y);a.position=E;let r=c.clone(`flow-src-mat-${e}`);r.alpha=L.has(e)||t===m&&n===m?1:.22,a.material=r,a.isPickable=!1,h.add(e),M.push(a,r)}if(!x.has(a.mesh)){let e=v.CreateSphere(`flow-target-${a.mesh}`,{diameter:.2*A,segments:7},y);e.position=P;let r=u.clone(`flow-target-mat-${a.mesh}`);r.alpha=I.has(a.mesh)||t===m&&n===m?1:.22,e.material=r,e.isPickable=!0,e.metadata={hoverLabel:a.mesh},x.add(a.mesh),M.push(e,r)}let $=E.add(P).scale(.5),T=$.subtract(k),B=Math.sqrt(T.x*T.x+T.y*T.y+T.z*T.z),N=B>1e-6?T.x/B:0,F=B>1e-6?T.y/B:1,q=B>1e-6?T.z/B:0,D=(.35+a.count/i*.75)*A,O=new d($.x+N*D,$.y+F*D+.12*A,$.z+q*D),Z=[];for(let e=0;e<=18;e++){let t=e/18,n=1-t;Z.push(new d(n*n*E.x+2*n*t*O.x+t*t*P.x,n*n*E.y+2*n*t*O.y+t*t*P.y,n*n*E.z+2*n*t*O.z+t*t*P.z))}let V=a.count/i,[W,H,K]=(0,o.heatRgb)(V),U=v.CreateTube(`flow-link-${a.mesh}-${e}`,{path:Z,radius:(l?1:.4)*(.012+.04*V)*A,tessellation:8,cap:0,sideOrientation:0},y),G=new w(`flow-link-mat-${a.mesh}-${e}`,y);G.disableLighting=!0,G.emissiveColor=new p(W,H,K),G.alpha=l?.35+.65*V:.08,U.material=G,U.isPickable=!0,U.metadata={hoverLabel:a.mesh},M.push(U,G)}let S=a?.origin;if(S){let e=new d(S[0],S[1],S[2]),t=v.CreateSphere("flow-standpoint",{diameter:.26*A,segments:10},y);t.position=e;let n=new w("flow-standpoint-mat",y);n.disableLighting=!0,n.emissiveColor=new p(.95,.45,.95),t.material=n,t.isPickable=!1;let a=v.CreateLines("flow-standpoint-stem",{points:[e,new d(e.x,k.y,e.z)]},y);a.color=new p(.95,.45,.95),a.isPickable=!1,M.push(t,n,a)}};ek.current=E,E()}k.runRenderLoop(()=>y.render());let C=()=>k.resize();window.addEventListener("resize",C);let _=(0,u.attachMeshHover)(y,t,W),A=(0,c.attachDoubleClickFocus)(y,t,r);E("ready"),a=()=>{window.removeEventListener("resize",C),_(),A(),W(null),ek.current=null,I.current=null,S.current=null,z(),y.dispose(),k.dispose()}}catch(e){if(n)return;E("error"),$(e instanceof Error?e.message:"Failed to render flow links.")}})(),()=>{n=!0,a?.()}},[ea,j,ej]),(0,n.useEffect)(()=>{ek.current?.()},[es,en,y,T,N,q,et]),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("canvas",{ref:L,className:"aspect-video w-full rounded-lg border border-edge bg-ink"}),V?(0,t.jsx)("div",{className:"pointer-events-none absolute z-10 max-w-[16rem] truncate rounded border border-edge bg-ink/90 px-1.5 py-0.5 text-xs text-white shadow backdrop-blur",style:{left:V.x+12,top:V.y+12},children:V.label}):null,"ready"===R?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"absolute left-3 top-3 flex flex-wrap gap-2",children:[ee?(0,t.jsxs)("div",{className:"flex items-center gap-1 rounded-md border border-edge bg-ink/80 p-0.5 text-xs backdrop-blur",children:[(0,t.jsx)(v,{active:!ea,onClick:()=>Z("aggregate"),children:"Aggregate"}),(0,t.jsx)(v,{active:ea,onClick:()=>Z("twostage"),children:"Two-stage"})]}):null,Y?(0,t.jsxs)("div",{className:"flex items-center gap-1 rounded-md border border-edge bg-ink/80 p-0.5 text-xs backdrop-blur",children:[(0,t.jsx)(v,{active:"first-person"===H,onClick:()=>K("first-person"),children:"Walk"}),(0,t.jsx)(v,{active:"viewer"===H,onClick:()=>K("viewer"),disabled:A,title:A?"Orbit (viewer) flow isn't available for walkable scenes":void 0,children:"Orbit"}),(0,t.jsx)(v,{active:"all"===H,onClick:()=>K("all"),children:"All"})]}):null,ee?(0,t.jsx)(x,{label:"Standpoint",value:q,onChange:D,allLabel:"All standpoints",options:eu}):null,(0,t.jsx)(x,{label:ea?"Gaze":"Source",value:N,onChange:F,allLabel:ea?"All gaze sectors":"All sources",options:eh}),(0,t.jsx)(x,{label:"Mesh",value:T,onChange:B,allLabel:"All meshes",options:ed})]}),ea?(0,t.jsx)(w,{standpoints:Q,proxyMeshes:y,selectedKey:q,onSelect:e=>D(t=>t===e?m:e)}):null,(0,t.jsxs)("div",{className:"pointer-events-none absolute bottom-3 right-3 flex max-w-[20rem] flex-col items-end gap-2",children:[Y&&!A?(0,t.jsxs)("div",{className:"rounded-md border border-edge bg-ink/80 px-2 py-1 text-xs text-fg-muted backdrop-blur",children:["Orbit-dominated scene — viewer ",(0,t.jsx)("em",{children:"position"})," adds little here. Use the"," ",(0,t.jsx)("strong",{children:"View dome"})," (§7.5) above for where viewers looked."]}):null,(0,t.jsxs)("div",{className:"rounded-md border border-edge bg-ink/80 px-2 py-1 text-xs text-fg backdrop-blur",children:["Active links: ",eo,"/",ec]})]}),(0,t.jsx)(d.ZoomButtons,{onZoom:e=>I.current&&(0,c.stepZoom)(I.current,e),onReset:()=>I.current&&S.current&&(0,c.resetFocus)(I.current,S.current)}),(0,t.jsx)(h.HeatLegend,{title:"Flow volume",lowLabel:"fewer links",highLabel:"dominant links",note:ea?"Three columns: standpoint → gaze sector → mesh. Top standpoints/meshes are kept; the tail folds into an “Other” node. Pick a standpoint (or click the minimap), gaze sector, or mesh to emphasize matching ribbons.":"Each arc aggregates clicks from one camera-direction bin to a mesh. Pick a source or mesh to emphasize matching links and dim the rest."})]}):(0,t.jsx)("div",{className:"pointer-events-none absolute inset-0 grid place-items-center text-sm text-fg-muted",children:"loading"===R?"Rendering…":"empty"===R?"No aggregate flow links in range.":"error"===R?P??"Flow view unavailable.":null})]})}],19399)},64434,e=>{"use strict";e.s([],4255),e.i(4255);var t=e.i(48939),n=e.i(53993),a=e.i(19399),r=e.i(39592),s=e.i(28100),l=e.i(11623),i=e.i(56054),o=e.i(2348),c=e.i(25476),u=e.i(18637),h=e.i(2413);let d="__all__";function m(e){return`${e[0]},${e[1]},${e[2]}`}function p({label:e,value:t,onChange:n,allLabel:a,options:r}){return(0,s.jsxs)("label",{className:"flex items-center gap-1.5 rounded-md border border-edge bg-ink/80 px-2 py-1 text-xs text-fg backdrop-blur",children:[(0,s.jsx)("span",{className:"font-medium text-fg-muted",children:e}),(0,s.jsxs)("select",{className:"max-w-[12rem] bg-transparent text-white outline-none",value:t,onChange:e=>n(e.target.value),children:[(0,s.jsx)("option",{value:d,children:a}),r.map(e=>(0,s.jsx)("option",{value:e.value,children:e.label},e.value))]})]})}var f=e.i(37215);e.s(["CAMERA_DOME_SUBTITLE",()=>f.CAMERA_DOME_SUBTITLE,"CAMERA_DOME_TITLE",()=>f.CAMERA_DOME_TITLE,"CLICK_RAYS_SUBTITLE",()=>f.CLICK_RAYS_SUBTITLE,"CLICK_RAYS_TITLE",()=>f.CLICK_RAYS_TITLE,"CameraDome3DView",()=>t.CameraDome3DView,"ClickRays3DView",0,function({rays:t,cellSize:n,proxyMeshes:a=[]}){let r=(0,l.useRef)(null),f=(0,l.useRef)(null),b=(0,l.useRef)(null),[g,x]=(0,l.useState)("loading"),[v,w]=(0,l.useState)(null),[k,j]=(0,l.useState)(d),[y,M]=(0,l.useState)(d),[z,C]=(0,l.useState)(null),_=(0,l.useRef)(t),A=(0,l.useRef)(a),L=(0,l.useRef)(k),I=(0,l.useRef)(y);_.current=t,A.current=a,L.current=k,I.current=y;let S=(0,l.useRef)(null),R=t.length>0,E=(0,l.useMemo)(()=>{let e=new Map;for(let n of t){let t=m(n.camVoxel),a=e.get(t);a?a.count+=n.count:e.set(t,{key:t,voxel:n.camVoxel,count:n.count})}return[...e.values()].sort((e,t)=>t.count-e.count)},[t]),P=(0,l.useMemo)(()=>{let e=new Map;for(let n of t)""!==n.mesh&&e.set(n.mesh,(e.get(n.mesh)??0)+n.count);return[...e.entries()].map(([e,t])=>({name:e,count:t})).sort((e,t)=>t.count-e.count)},[t]);return(0,l.useEffect)(()=>{k!==d&&(E.some(e=>e.key===k)||j(d))},[k,E]),(0,l.useEffect)(()=>{y!==d&&(P.some(e=>e.name===y)||M(d))},[y,P]),(0,l.useEffect)(()=>{let t=r.current;if(!t)return;if(!R)return void x("empty");let a=!1,s=null;return x("loading"),w(null),(async()=>{try{let[{Engine:r},{Scene:l},{ArcRotateCamera:u},{HemisphericLight:h},{Vector3:p,Color3:g,Color4:v,Matrix:w},{MeshBuilder:k},{StandardMaterial:j}]=await Promise.all([e.A(3905),e.A(94432),e.A(59694),e.A(88004),e.A(27940),e.A(27124),e.A(14074),e.A(35983),e.A(18561)]);if(a)return;let y=_.current,M=0,z=0,R=0,E=0,P=(e,t,n)=>{M+=e,z+=t,R+=n,E++};for(let e of y)P(e.origin[0],e.origin[1],e.origin[2]),P(e.hit[0],e.hit[1],e.hit[2]);let $=E>0?new p(M/E,z/E,R/E):p.Zero(),T=4*n;for(let e of y)for(let t of[e.origin,e.hit]){let e=t[0]-$.x,n=t[1]-$.y,a=t[2]-$.z;T=Math.max(T,Math.sqrt(e*e+n*n+a*a))}let B=new r(t,!0,{preserveDrawingBuffer:!1}),N=new l(B);N.clearColor=new v(.04,.05,.07,1);let F=new u("rays-cam",Math.PI/4,Math.PI/3,2.4*T,$,N);F.attachControl(t,!0),(0,o.disableWheelZoom)(F),f.current=F,b.current={target:$,alpha:F.alpha,beta:F.beta,radius:F.radius},new h("rays-light",new p(.4,1,.3),N);let q=null,D="\0",O=[],Z=Math.max(3*n,.18*T),V=()=>{for(let e of((()=>{let e=A.current,t=e.map(e=>`${e.name}:${e.aabb.join(",")}`).join("|");if(t===D||(D=t,q&&(q.dispose(!1,!0),q=null),0===e.length))return;q=k.CreateBox("scene-proxy",{size:1},N);let n=new j("scene-proxy-mat",N);n.wireframe=!0,n.disableLighting=!0,n.emissiveColor=new g(.32,.4,.52),n.alpha=.35,q.material=n,q.isPickable=!0,q.thinInstanceEnablePicking=!0,q.metadata={hoverLabels:e.map(e=>e.name)};let a=e.length,r=new Float32Array(16*a);for(let t=0;t<a;t++){let n=e[t].aabb,a=Math.max(n[3]-n[0],.001),s=Math.max(n[4]-n[1],.001),l=Math.max(n[5]-n[2],.001);w.Scaling(a,s,l).multiply(w.Translation((n[0]+n[3])/2,(n[1]+n[4])/2,(n[2]+n[5])/2)).copyToArray(r,16*t)}q.thinInstanceSetBuffer("matrix",r,16,!0)})(),O))e.dispose(!1,!0);O=[];let e=_.current,t=A.current,a=L.current,r=I.current,s=a===d?e:e.filter(e=>m(e.camVoxel)===a),l=s.reduce((e,t)=>Math.max(e,t.count),1),o=[],c=[];for(let e of s){let t=e.count/l,[n,a,r]=(0,i.heatRgb)(t),s=new v(n,a,r,.35+.65*t);o.push([new p(e.origin[0],e.origin[1],e.origin[2]),new p(e.hit[0],e.hit[1],e.hit[2])]),c.push([s,s])}if(o.length>0){let e=k.CreateLineSystem("click-rays",{lines:o,colors:c,useVertexAlpha:!0},N);e.isPickable=!1,O.push(e)}let u=new Map;for(let e of s)u.set(m(e.camVoxel),e.camVoxel);if(u.size>0){let e=k.CreateSphere("rays-eye",{diameter:.6*n,segments:6},N),t=new j("rays-eye-mat",N);t.disableLighting=!0,t.emissiveColor=new g(.9,.95,1),e.material=t;let a=[...u.values()],r=new Float32Array(16*a.length);for(let e=0;e<a.length;e++){let t=a[e];w.Translation((t[0]+.5)*n,(t[1]+.5)*n,(t[2]+.5)*n).copyToArray(r,16*e)}e.thinInstanceSetBuffer("matrix",r,16,!0),O.push(e)}if(r!==d){let a=e.filter(e=>e.mesh===r);if(a.length>0){let e,s=t.find(e=>e.name===r);if(s){let t=s.aabb;e=new p((t[0]+t[3])/2,(t[1]+t[4])/2,(t[2]+t[5])/2)}else{let t=0,n=0,r=0;for(let e of a)t+=e.hit[0],n+=e.hit[1],r+=e.hit[2];e=new p(t/a.length,n/a.length,r/a.length)}let l=a.reduce((e,t)=>Math.max(e,t.count),1),o=[],c=[];for(let t of a){let n=t.origin[0]-t.hit[0],a=t.origin[1]-t.hit[1],r=t.origin[2]-t.hit[2],s=Math.sqrt(n*n+a*a+r*r)||1,u=t.count/l,h=Z*(.4+.6*u),d=new p(e.x+n/s*h,e.y+a/s*h,e.z+r/s*h),[m,f,b]=(0,i.heatRgb)(u),g=new v(m,f,b,1);o.push([e.clone(),d]),c.push([new v(m,f,b,.25),g])}if(o.length>0){let e=k.CreateLineSystem("mesh-rose",{lines:o,colors:c,useVertexAlpha:!0},N);e.isPickable=!1,O.push(e)}let u=k.CreateSphere("mesh-rose-hub",{diameter:.8*n,segments:8},N),h=new j("mesh-rose-hub-mat",N);h.disableLighting=!0,h.emissiveColor=new g(1,.85,.4),u.material=h,u.position=e,u.isPickable=!0,u.metadata={hoverLabel:r},O.push(u)}}};S.current=V,V(),B.runRenderLoop(()=>N.render());let W=()=>B.resize();window.addEventListener("resize",W);let H=(0,c.attachMeshHover)(N,t,C),K=(0,o.attachDoubleClickFocus)(N,t,F);x("ready"),s=()=>{window.removeEventListener("resize",W),H(),K(),C(null),S.current=null,f.current=null,b.current=null,N.dispose(),B.dispose()}}catch(e){if(a)return;x("error"),w(e instanceof Error?e.message:"Failed to render click rays.")}})(),()=>{a=!0,s?.()}},[R,n]),(0,l.useEffect)(()=>{S.current?.()},[t,a,n,k,y]),(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)("canvas",{ref:r,className:"aspect-video w-full rounded-lg border border-edge bg-ink"}),z?(0,s.jsx)("div",{className:"pointer-events-none absolute z-10 max-w-[16rem] truncate rounded border border-edge bg-ink/90 px-1.5 py-0.5 text-xs text-white shadow backdrop-blur",style:{left:z.x+12,top:z.y+12},children:z.label}):null,"ready"===g?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"absolute left-3 top-3 flex gap-2",children:[(0,s.jsx)(p,{label:"Viewpoint",value:k,onChange:j,allLabel:"All viewpoints",options:E.map(e=>({value:e.key,label:`(${e.voxel.join(", ")}) \xb7 ${e.count}`}))}),(0,s.jsx)(p,{label:"Mesh rose",value:y,onChange:M,allLabel:"No mesh focus",options:P.map(e=>({value:e.name,label:`${e.name} \xb7 ${e.count}`}))})]}),(0,s.jsx)(h.ZoomButtons,{onZoom:e=>f.current&&(0,o.stepZoom)(f.current,e),onReset:()=>f.current&&b.current&&(0,o.resetFocus)(f.current,b.current)}),(0,s.jsx)(u.HeatLegend,{title:"Click volume",lowLabel:"few clicks",highLabel:"most clicks",note:"Lines run from the camera position (bright eye) to where the click landed. Pick a viewpoint to see only clicks made from there; pick a mesh to see which directions its clicks came from."})]}):(0,s.jsx)("div",{className:"pointer-events-none absolute inset-0 grid place-items-center text-sm text-fg-muted",children:"loading"===g?"Rendering…":"empty"===g?"No correlated clicks in range.":"error"===g?v??"Click rays unavailable.":null})]})},"ERROR_HEATMAP_SUBTITLE",()=>f.ERROR_HEATMAP_SUBTITLE,"ERROR_HEATMAP_TITLE",()=>f.ERROR_HEATMAP_TITLE,"FLOW_SANKEY_HELP",()=>f.FLOW_SANKEY_HELP,"FLOW_SANKEY_SUBTITLE",()=>f.FLOW_SANKEY_SUBTITLE,"FLOW_SANKEY_TITLE",()=>f.FLOW_SANKEY_TITLE,"FlowSankey3DView",()=>a.FlowSankey3DView,"GAZE_CLICK_SUBTITLE",()=>f.GAZE_CLICK_SUBTITLE,"GAZE_CLICK_TITLE",()=>f.GAZE_CLICK_TITLE,"GazeClickDivergence3DView",()=>r.GazeClickDivergence3DView,"WORLD_HEATMAP_SUBTITLE",()=>f.WORLD_HEATMAP_SUBTITLE,"WORLD_HEATMAP_TITLE",()=>f.WORLD_HEATMAP_TITLE,"WorldHeatmap3DView",()=>n.WorldHeatmap3DView],64434)},94452,e=>{e.n(e.i(64434))},3905,e=>{e.v(t=>Promise.all(["static/chunks/3pdpaqzwhhijn.js","static/chunks/08bm3ye5govev.js","static/chunks/0g6u34xkzrpjn.js","static/chunks/25ctnyh7njp-d.js","static/chunks/2gh4z57fem0_v.js","static/chunks/3vaho-xrtuchd.js","static/chunks/0g7p8zp2kxve5.js"].map(t=>e.l(t))).then(()=>t(66232)))},94432,e=>{e.v(t=>Promise.all(["static/chunks/2kje_jvmwsvwo.js","static/chunks/1j--a56ji33_x.js","static/chunks/3pdpaqzwhhijn.js","static/chunks/2npk7tr63h7rl.js","static/chunks/3vaho-xrtuchd.js","static/chunks/3g_h_00xs9u59.js","static/chunks/1vzmzrjhlm1q5.js","static/chunks/25ctnyh7njp-d.js","static/chunks/1vpcaaf-0dn7q.js"].map(t=>e.l(t))).then(()=>t(92494)))},59694,e=>{e.v(t=>Promise.all(["static/chunks/1j--a56ji33_x.js","static/chunks/0oap0o8a8a_cl.js","static/chunks/0f_nv15a8q415.js","static/chunks/1vzmzrjhlm1q5.js","static/chunks/3pdpaqzwhhijn.js","static/chunks/245h82k-g1nxr.js","static/chunks/3ovd8o_usay7j.js","static/chunks/3vaho-xrtuchd.js","static/chunks/1vpcaaf-0dn7q.js","static/chunks/25ctnyh7njp-d.js","static/chunks/2npk7tr63h7rl.js","static/chunks/3pyggl13glbdc.js"].map(t=>e.l(t))).then(()=>t(67186)))},88004,e=>{e.v(t=>Promise.all(["static/chunks/2p8dbh81chhon.js","static/chunks/1oara6fkfvgs3.js","static/chunks/1vzmzrjhlm1q5.js","static/chunks/25ctnyh7njp-d.js","static/chunks/3pdpaqzwhhijn.js"].map(t=>e.l(t))).then(()=>t(15768)))},27940,e=>{e.v(t=>Promise.all(["static/chunks/0w0sx062qmcsh.js","static/chunks/25ctnyh7njp-d.js","static/chunks/3pdpaqzwhhijn.js"].map(t=>e.l(t))).then(()=>t(23235)))},27124,e=>{e.v(t=>Promise.all(["static/chunks/1par9m038tiov.js","static/chunks/1j--a56ji33_x.js","static/chunks/2j-sax2xfdv7l.js","static/chunks/340pg0qkv5tqq.js","static/chunks/3pdpaqzwhhijn.js","static/chunks/0gwa154w_0wuh.js","static/chunks/0oap0o8a8a_cl.js","static/chunks/0f_nv15a8q415.js","static/chunks/3vaho-xrtuchd.js","static/chunks/3pyggl13glbdc.js","static/chunks/1vzmzrjhlm1q5.js","static/chunks/3g_h_00xs9u59.js","static/chunks/1vpcaaf-0dn7q.js","static/chunks/25ctnyh7njp-d.js","static/chunks/2npk7tr63h7rl.js","static/chunks/01aeari2x_tlz.js"].map(t=>e.l(t))).then(()=>t(70928)))},14074,e=>{e.v(t=>Promise.all(["static/chunks/1zcrrq1fx8g2y.js","static/chunks/1tdg_eolxlcdl.js","static/chunks/1j--a56ji33_x.js","static/chunks/1vzmzrjhlm1q5.js","static/chunks/0vddljjnmozzx.js","static/chunks/3pdpaqzwhhijn.js","static/chunks/1vpcaaf-0dn7q.js","static/chunks/3vaho-xrtuchd.js","static/chunks/0f_nv15a8q415.js","static/chunks/3g_h_00xs9u59.js","static/chunks/2npk7tr63h7rl.js","static/chunks/25ctnyh7njp-d.js"].map(t=>e.l(t))).then(()=>t(87566)))},2213,e=>{e.v(t=>Promise.all(["static/chunks/3wqs57qehored.js","static/chunks/1j--a56ji33_x.js","static/chunks/1vzmzrjhlm1q5.js","static/chunks/2npk7tr63h7rl.js","static/chunks/1vkww9l6lgqag.js","static/chunks/1vpcaaf-0dn7q.js","static/chunks/0f_nv15a8q415.js","static/chunks/3pyggl13glbdc.js","static/chunks/3vaho-xrtuchd.js","static/chunks/25ctnyh7njp-d.js","static/chunks/3pdpaqzwhhijn.js"].map(t=>e.l(t))).then(()=>t(95758)))},15002,e=>{e.v(t=>Promise.all(["static/chunks/34gp3hvr3j6um.js","static/chunks/0x6i6e6863tir.js","static/chunks/3pdpaqzwhhijn.js","static/chunks/3vaho-xrtuchd.js","static/chunks/2gh4z57fem0_v.js","static/chunks/25ctnyh7njp-d.js","static/chunks/28ycc-1519hl2.js"].map(t=>e.l(t))).then(()=>t(95729)))},35983,e=>{e.v(t=>Promise.all(["static/chunks/4227p7752rnny.js","static/chunks/1j--a56ji33_x.js","static/chunks/1vzmzrjhlm1q5.js","static/chunks/2npk7tr63h7rl.js","static/chunks/1vkww9l6lgqag.js","static/chunks/25ctnyh7njp-d.js","static/chunks/0f_nv15a8q415.js","static/chunks/3vaho-xrtuchd.js","static/chunks/1vpcaaf-0dn7q.js","static/chunks/3pyggl13glbdc.js","static/chunks/3pdpaqzwhhijn.js"].map(t=>e.l(t))).then(()=>t(50608)))},18561,e=>{e.v(t=>Promise.all(["static/chunks/1j--a56ji33_x.js","static/chunks/1vkww9l6lgqag.js","static/chunks/3pdpaqzwhhijn.js","static/chunks/2npk7tr63h7rl.js","static/chunks/117ys3lltfmcu.js","static/chunks/25ctnyh7njp-d.js","static/chunks/1vzmzrjhlm1q5.js","static/chunks/3g_h_00xs9u59.js","static/chunks/1vpcaaf-0dn7q.js","static/chunks/3vaho-xrtuchd.js"].map(t=>e.l(t))).then(()=>t(85106)))}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,2348,2413,e=>{"use strict";let t=1/1.2;e.s(["ZOOM_IN_FACTOR",0,t,"ZOOM_OUT_FACTOR",0,1.2,"attachDoubleClickFocus",0,function(e,t,n){let s=()=>{let t=e.pick(e.pointerX,e.pointerY);t?.hit&&t.pickedPoint&&n.setTarget(t.pickedPoint)};return t.addEventListener("dblclick",s),()=>t.removeEventListener("dblclick",s)},"disableWheelZoom",0,function(e){e.inputs.removeByType("ArcRotateCameraMouseWheelInput")},"resetFocus",0,function(e,t){e.setTarget(t.target),e.alpha=t.alpha,e.beta=t.beta,e.radius=t.radius},"stepZoom",0,function(e,t){let n=e.lowerRadiusLimit??.01,s=e.upperRadiusLimit??1/0;e.radius=Math.min(s,Math.max(n,e.radius*t))}],2348);var n=e.i(28100);e.s(["ZoomButtons",0,function({onZoom:e,onReset:s}){let a="grid h-8 w-8 place-items-center rounded-md border border-edge bg-ink/80 text-lg leading-none text-fg backdrop-blur transition hover:bg-ink hover:text-white";return(0,n.jsxs)("div",{className:"absolute right-3 top-3 flex flex-col gap-1",children:[(0,n.jsx)("button",{type:"button","aria-label":"Zoom in",className:a,onClick:()=>e(t),children:"+"}),(0,n.jsx)("button",{type:"button","aria-label":"Zoom out",className:a,onClick:()=>e(1.2),children:"−"}),s?(0,n.jsx)("button",{type:"button","aria-label":"Reset camera focus to center",title:"Reset focus to center",className:a,onClick:s,children:(0,n.jsxs)("svg",{viewBox:"0 0 16 16",width:"16",height:"16",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"8",cy:"8",r:"3"}),(0,n.jsx)("path",{d:"M8 1v2.5M8 12.5V15M1 8h2.5M12.5 8H15"})]})}):null]})}],2413)},25476,e=>{"use strict";e.s(["attachMeshHover",0,function(e,t,n){let s=0,a=null,i=t=>{let i=t.offsetX,l=t.offsetY;s||(s=requestAnimationFrame(()=>{var t,o;let r;s=0;let c=e.pick(i,l,e=>e.isPickable&&e.isEnabled()),u=c?.pickedMesh?(t=c.pickedMesh,o=c.thinInstanceIndex??-1,(r=t.metadata)?o>=0&&r.hoverLabels?r.hoverLabels[o]??null:r.hoverLabel??null:null):null;u?n({label:u,x:i,y:l}):null!==a&&n(null),a=u}))},l=()=>{s&&(cancelAnimationFrame(s),s=0),null!==a&&(a=null,n(null))};return t.addEventListener("pointermove",i),t.addEventListener("pointerleave",l),()=>{t.removeEventListener("pointermove",i),t.removeEventListener("pointerleave",l),s&&cancelAnimationFrame(s)}}])},19399,e=>{"use strict";var t=e.i(28100),n=e.i(11623),s=e.i(20880);let a="__other_sp__",i="__other_mesh__";function l(e){return`${e[0]}|${e[1]}|${e[2]}`}function o(e,t){return t<=1?0:1.4-e/(t-1)*2.8}var r=e.i(56054),c=e.i(2348),u=e.i(25476),h=e.i(18637),d=e.i(2413);let m="__all__",p={maxStandpoints:6,maxMeshes:10,maxRibbons:70};function b(e,t){return`${e}|${t}`}function f(e){let t=e.aabb;return[(t[0]+t[3])/2,(t[1]+t[4])/2,(t[2]+t[5])/2]}function g(e){let t=0;for(let n=0;n<e.length;n++)t=31*t+e.charCodeAt(n)|0;return Math.abs(t)}function x({label:e,value:n,onChange:s,allLabel:a,options:i}){return(0,t.jsxs)("label",{className:"flex items-center gap-1.5 rounded-md border border-edge bg-ink/80 px-2 py-1 text-xs text-fg backdrop-blur",children:[(0,t.jsx)("span",{className:"font-medium text-fg-muted",children:e}),(0,t.jsxs)("select",{className:"max-w-[12rem] bg-transparent text-white outline-none",value:n,onChange:e=>s(e.target.value),children:[(0,t.jsx)("option",{value:m,children:a}),i.map(e=>(0,t.jsx)("option",{value:e.value,children:e.label},e.value))]})]})}function v({active:e,onClick:n,children:s,disabled:a=!1,title:i}){return(0,t.jsx)("button",{type:"button",onClick:n,disabled:a,title:i,className:`rounded px-2 py-0.5 font-medium transition ${a?"cursor-not-allowed text-fg-muted/40":e?"bg-amber text-ink":"text-fg-muted hover:text-fg"}`,children:s})}function k({standpoints:e,proxyMeshes:s,selectedKey:a,onSelect:i}){let l=(0,n.useRef)(null),o=(0,n.useMemo)(()=>e.filter(e=>e.origin),[e]),r=(0,n.useMemo)(()=>{let e=1/0,t=-1/0,n=1/0,a=-1/0,i=(s,i)=>{e=Math.min(e,s),t=Math.max(t,s),n=Math.min(n,i),a=Math.max(a,i)};for(let e of s)i(e.aabb[0],e.aabb[2]),i(e.aabb[3],e.aabb[5]);for(let e of o)i(e.origin[0],e.origin[2]);return Number.isFinite(e)?(t-e<.001&&(e-=1,t+=1),a-n<.001&&(n-=1,a+=1),{minX:e,maxX:t,minZ:n,maxZ:a}):{minX:-1,maxX:1,minZ:-1,maxZ:1}},[s,o]),c=(0,n.useMemo)(()=>{let e=Math.min(134/(r.maxX-r.minX),94/(r.maxZ-r.minZ));return(t,n)=>[8+(t-r.minX)*e,8+(n-r.minZ)*e]},[r]),u=(0,n.useMemo)(()=>o.reduce((e,t)=>Math.max(e,t.count),1),[o]);return(0,n.useEffect)(()=>{let e=l.current,t=e?.getContext("2d");if(!t)return;let n=window.devicePixelRatio||1;for(let a of(e.width=150*n,e.height=110*n,t.setTransform(n,0,0,n,0,0),t.clearRect(0,0,150,110),t.fillStyle="rgba(8,10,14,0.85)",t.fillRect(0,0,150,110),t.strokeStyle="rgba(120,140,170,0.35)",t.lineWidth=1,s)){let[e,n]=c(a.aabb[0],a.aabb[2]),[s,i]=c(a.aabb[3],a.aabb[5]);t.strokeRect(Math.min(e,s),Math.min(n,i),Math.abs(s-e),Math.abs(i-n))}for(let e of o){let[n,s]=c(e.origin[0],e.origin[2]),i=2+e.count/u*4,l=e.key===a;t.beginPath(),t.arc(n,s,i,0,2*Math.PI),t.fillStyle=l?"rgba(242,115,242,1)":"rgba(242,115,242,0.55)",t.fill(),l&&(t.beginPath(),t.arc(n,s,i+2.5,0,2*Math.PI),t.strokeStyle="rgba(255,255,255,0.9)",t.lineWidth=1.5,t.stroke())}},[s,o,c,u,a]),(0,t.jsxs)("div",{className:"absolute right-3 top-3 rounded-md border border-edge bg-ink/80 p-1 backdrop-blur",children:[(0,t.jsx)("div",{className:"px-1 pb-0.5 text-[10px] font-medium text-fg-muted",children:"Standpoints (top view)"}),(0,t.jsx)("canvas",{ref:l,className:"h-27.5 w-37.5 cursor-pointer rounded",onClick:e=>{let t=l.current;if(!t||0===o.length)return;let n=t.getBoundingClientRect(),s=(e.clientX-n.left)/n.width*150,a=(e.clientY-n.top)/n.height*110,r=null,u=1/0;for(let e of o){let[t,n]=c(e.origin[0],e.origin[2]),i=(t-s)**2+(n-a)**2;i<u&&(u=i,r=e)}r&&u<=196&&i(r.key)}})]})}e.s(["FlowSankey3DView",0,function({links:j,gridSize:w,proxyMeshes:z=[],maxLinks:M=80,baseUrl:y,apiKey:_,flowQuery:$,hasFirstPerson:I=!1}){let C=(0,n.useRef)(null),P=(0,n.useRef)(null),B=(0,n.useRef)(null),[R,S]=(0,n.useState)("loading"),[L,q]=(0,n.useState)(null),[A,N]=(0,n.useState)(m),[E,O]=(0,n.useState)(m),[Z,T]=(0,n.useState)(m),[F,V]=(0,n.useState)("aggregate"),[W,X]=(0,n.useState)(null),[H,D]=(0,n.useState)("all"),[U,K]=(0,n.useState)(j),Y=!!(y&&$),G=(0,n.useMemo)(()=>$?JSON.stringify($):"",[$]),J=(0,n.useRef)(!1);(0,n.useEffect)(()=>{!J.current&&I&&(D("first-person"),J.current=!0)},[I]),(0,n.useEffect)(()=>{I&&"viewer"===H&&D("first-person")},[I,H]),(0,n.useEffect)(()=>{Y||K(j)},[j,Y]),(0,n.useEffect)(()=>{if(!y||!$)return;let e=!1,t=new s.CollectorApi(y,_??""),n="all"===H?void 0:H;return t.flowHeatmap({...$,bins:w,limit:400,groupByOrigin:!0,cameraMode:n}).then(t=>{e||K(t)}).catch(()=>{e||K([])}),()=>{e=!0}},[y,_,G,H,w]);let Q=(0,n.useMemo)(()=>{let e=new Map;for(let t of U){if(!t.originVoxel)continue;let n=l(t.originVoxel),s=t.origin,a=e.get(n);a?(a.count+=t.count,s&&(a.ox+=s[0]*t.count,a.oy+=s[1]*t.count,a.oz+=s[2]*t.count,a.wsum+=t.count)):e.set(n,{key:n,voxel:t.originVoxel,count:t.count,ox:s?s[0]*t.count:0,oy:s?s[1]*t.count:0,oz:s?s[2]*t.count:0,wsum:s?t.count:0})}return[...e.values()].map(e=>({key:e.key,voxel:e.voxel,count:e.count,origin:e.wsum>0?[e.ox/e.wsum,e.oy/e.wsum,e.oz/e.wsum]:void 0})).sort((e,t)=>t.count-e.count)},[U]),ee=Q.length>0,et=(0,n.useMemo)(()=>Z===m?null:Q.find(e=>e.key===Z)??null,[Q,Z]),en=(0,n.useMemo)(()=>(function(e,t,n,s){let r=e.filter(e=>e.originVoxel);if(0===r.length)return{standpoints:[],gazes:[],meshes:[],ribbons:[],maxCount:1};let c=t.slice(0,Math.max(1,s.maxStandpoints)),u=new Set(c.map(e=>e.key)),h=e=>{let t=e.originVoxel?l(e.originVoxel):a;return u.has(t)?t:a},d=new Map;for(let e of r)d.set(e.mesh,(d.get(e.mesh)??0)+e.count);let m=new Set([...d.entries()].sort((e,t)=>t[1]-e[1]).slice(0,Math.max(1,s.maxMeshes)).map(([e])=>e)),p=e=>m.has(e)?e:i,b=new Map;for(let e of r){let t=h(e),n=p(e.mesh),s=`${t}|${e.azimuth_bin}|${e.elevation_bin}|${n}`,a=b.get(s);a?a.count+=e.count:b.set(s,{standpointId:t,gazeId:`${t}|${e.azimuth_bin}|${e.elevation_bin}`,meshId:n,azimuthBin:e.azimuth_bin,elevationBin:e.elevation_bin,count:e.count})}let f=[...b.values()].sort((e,t)=>t.count-e.count),g=f.slice(0,Math.max(1,s.maxRibbons)),x=f.slice(Math.max(1,s.maxRibbons));if(x.length>0){let e=new Map(g.map(e=>[`${e.standpointId}|${e.azimuthBin}|${e.elevationBin}|${i}`,e]));for(let t of x){let n=`${t.standpointId}|${t.azimuthBin}|${t.elevationBin}|${i}`,s=e.get(n);if(s)s.count+=t.count;else{let s={standpointId:t.standpointId,gazeId:t.gazeId,meshId:i,azimuthBin:t.azimuthBin,elevationBin:t.elevationBin,count:t.count};e.set(n,s),g.push(s)}}}let v=new Set(g.map(e=>e.standpointId)),k=new Set(g.map(e=>e.meshId)),j=[...c.filter(e=>v.has(e.key)).map(e=>e.key),...v.has(a)?[a]:[]],w=j.map((e,t)=>{let n=c.find(t=>t.key===e),s=g.filter(t=>t.standpointId===e).reduce((e,t)=>e+t.count,0);return{id:e,kind:"standpoint",pos:[-2.6,o(t,j.length),0],count:s,label:n?`[${n.voxel[0]}, ${n.voxel[1]}, ${n.voxel[2]}]`:"Other standpoints",isOther:e===a}}),z=new Map(w.map(e=>[e.id,e.pos[1]])),M=new Map;for(let e of g)M.set(e.meshId,(M.get(e.meshId)??0)+e.count);let y=[...k].sort((e,t)=>(M.get(t)??0)-(M.get(e)??0));y.sort((e,t)=>(e===i)-(t===i));let _=y.map((e,t)=>({id:e,kind:"mesh",pos:[2.6,o(t,y.length),0],count:M.get(e)??0,label:e===i?"Other meshes":e,isOther:e===i})),$=new Map;for(let e of g){let t=$.get(e.gazeId);t?t.count+=e.count:$.set(e.gazeId,{az:e.azimuthBin,el:e.elevationBin,sp:e.standpointId,count:e.count})}let I=[...$.entries()].map(([e,t])=>{let s=z.get(t.sp)??0,a=(t.az+.5)/n-.5;return{id:e,kind:"gaze",pos:[0,s+((t.el+.5)/n-.5)*.85,1.6*a],count:t.count,label:`(${t.az}, ${t.el})`,isOther:!1}}),C=g.reduce((e,t)=>Math.max(e,t.count),1);return{standpoints:w,gazes:I,meshes:_,ribbons:g,maxCount:C}})(U,Q,w,p),[U,Q,w]),es="twostage"===F&&ee;(0,n.useEffect)(()=>{"twostage"!==F||ee||V("aggregate")},[F,ee]);let ea=(0,n.useMemo)(()=>{if(Z!==m&&ee)return U.filter(e=>e.originVoxel&&l(e.originVoxel)===Z);if(!ee)return U;let e=new Map;for(let t of U){let n=`${t.azimuth_bin}|${t.elevation_bin}|${t.mesh}`,s=e.get(n);s?s.count+=t.count:e.set(n,{azimuth_bin:t.azimuth_bin,elevation_bin:t.elevation_bin,mesh:t.mesh,count:t.count})}return[...e.values()]},[U,Z,ee]),ei=(0,n.useMemo)(()=>[...ea].sort((e,t)=>t.count-e.count).slice(0,Math.max(1,M)),[ea,M]),el=(0,n.useMemo)(()=>{let e=new Map;for(let t of ei)e.set(t.mesh,(e.get(t.mesh)??0)+t.count);return[...e.entries()].sort((e,t)=>t[1]-e[1])},[ei]),eo=(0,n.useMemo)(()=>{let e=new Map;for(let t of ei){let n=b(t.azimuth_bin,t.elevation_bin),s=e.get(n);s?s.count+=t.count:e.set(n,{azimuthBin:t.azimuth_bin,elevationBin:t.elevation_bin,count:t.count})}return[...e.values()].sort((e,t)=>t.count-e.count)},[ei]);(0,n.useEffect)(()=>{!es&&A!==m&&(el.some(([e])=>e===A)||N(m))},[es,A,el]),(0,n.useEffect)(()=>{!es&&E!==m&&(eo.some(e=>b(e.azimuthBin,e.elevationBin)===E)||O(m))},[es,E,eo]),(0,n.useEffect)(()=>{!es&&Z!==m&&(Q.some(e=>e.key===Z)||T(m))},[es,Z,Q]),(0,n.useEffect)(()=>{N(m),O(m),T(m)},[F]);let er=(0,n.useMemo)(()=>es?en.ribbons.filter(e=>{let t=Z===m||e.standpointId===Z,n=E===m||b(e.azimuthBin,e.elevationBin)===E,s=A===m||e.meshId===A;return t&&n&&s}).length:ei.filter(e=>{let t=E===m||b(e.azimuth_bin,e.elevation_bin)===E,n=A===m||e.mesh===A;return t&&n}).length,[es,en,ei,A,E,Z]),ec=es?en.ribbons.length:ei.length,eu=(0,n.useMemo)(()=>es?en.standpoints.map(e=>({value:e.id,label:`${e.label} \xb7 ${e.count}`})):Q.slice(0,24).map(e=>({value:e.key,label:`[${e.voxel[0]}, ${e.voxel[1]}, ${e.voxel[2]}] \xb7 ${e.count}`})),[es,en,Q]),eh=(0,n.useMemo)(()=>{if(es){let e=new Map;for(let t of en.ribbons){let n=b(t.azimuthBin,t.elevationBin),s=e.get(n);s?s.count+=t.count:e.set(n,{az:t.azimuthBin,el:t.elevationBin,count:t.count})}return[...e.values()].sort((e,t)=>t.count-e.count).map(e=>({value:b(e.az,e.el),label:`(${e.az}, ${e.el}) \xb7 ${e.count}`}))}return eo.map(e=>({value:b(e.azimuthBin,e.elevationBin),label:`(${e.azimuthBin}, ${e.elevationBin}) \xb7 ${e.count}`}))},[es,en,eo]),ed=(0,n.useMemo)(()=>es?en.meshes.map(e=>({value:e.id,label:`${e.label} \xb7 ${e.count}`})):el.map(([e,t])=>({value:e,label:`${e} \xb7 ${t}`})),[es,en,el]),em=(0,n.useRef)(ei);em.current=ei;let ep=(0,n.useRef)(en);ep.current=en;let eb=(0,n.useRef)(z);eb.current=z;let ef=(0,n.useRef)(el);ef.current=el;let eg=(0,n.useRef)(A);eg.current=A;let ex=(0,n.useRef)(E);ex.current=E;let ev=(0,n.useRef)(Z);ev.current=Z;let ek=(0,n.useRef)(et);ek.current=et;let ej=(0,n.useRef)(null),ew=es?en.ribbons.length>0:ei.length>0;return(0,n.useEffect)(()=>{let t=C.current;if(!t)return;if(!ew)return void S("empty");let n=!1,s=null;return S("loading"),q(null),(async()=>{try{let a,[{Engine:i},{Scene:l},{ArcRotateCamera:o},{HemisphericLight:h},{Vector3:d,Color3:p,Color4:x},{MeshBuilder:v},{StandardMaterial:k}]=await Promise.all([e.A(3905),e.A(94432),e.A(59694),e.A(88004),e.A(27940),e.A(27124),e.A(14074),e.A(18561)]);if(n)return;let j=new i(t,!0,{preserveDrawingBuffer:!1}),z=new l(j);z.clearColor=new x(.04,.05,.07,1);let M=[],y=()=>{for(let e of M)e.dispose();M=[]};if(es){let e=d.Zero();(a=new o("ts-cam",Math.PI/2,Math.PI/2.4,8.5,e,z)).attachControl(t,!0),(0,c.disableWheelZoom)(a),P.current=a,B.current={target:e,alpha:a.alpha,beta:a.beta,radius:a.radius},new h("ts-light",new d(.3,1,.2),z);let n={standpoint:[.95,.45,.95],gaze:[.45,.75,1],mesh:[1,.82,.42]},s={standpoint:.26,gaze:.13,mesh:.22},i=(e,t,n)=>{let s=e[0],a=e[1],i=e[2],l=t[0],o=t[1],r=t[2],c=[(s+l)/2,(a+o)/2+n,(i+r)/2],u=[];for(let e=0;e<=12;e++){let t=e/12,n=1-t;u.push(new d(n*n*s+2*n*t*c[0]+t*t*l,n*n*a+2*n*t*c[1]+t*t*o,n*n*i+2*n*t*c[2]+t*t*r))}return u},l=()=>{y();let e=ep.current;if(0===e.ribbons.length)return;let t=ev.current,a=ex.current,l=eg.current,o=e=>{let n=t===m||e.standpointId===t,s=a===m||b(e.azimuthBin,e.elevationBin)===a,i=l===m||e.meshId===l;return n&&s&&i},c=t!==m||a!==m||l!==m,u=new Set;for(let t of e.ribbons)o(t)&&(u.add(t.standpointId),u.add(t.gazeId),u.add(t.meshId));let h=[...e.standpoints,...e.gazes,...e.meshes],f=new Map(h.map(e=>[e.id,e.pos])),g=new Map(h.map(e=>[e.id,e.label]));for(let e of h){let t=v.CreateSphere(`ts-node-${e.kind}-${e.id}`,{diameter:s[e.kind],segments:8},z);t.position=new d(e.pos[0],e.pos[1],e.pos[2]);let a=new k(`ts-node-mat-${e.kind}-${e.id}`,z);a.disableLighting=!0;let[i,l,o]=n[e.kind];a.emissiveColor=new p(i,l,o),a.alpha=!c||u.has(e.id)?1:.2,t.material=a,t.isPickable=!0,t.metadata={hoverLabel:e.label},M.push(t,a)}for(let t of e.ribbons){let n=f.get(t.standpointId),s=f.get(t.gazeId),a=f.get(t.meshId);if(!n||!s||!a)continue;let l=t.count/e.maxCount,u=.18+.5*l,h=[...i(n,s,u),...i(s,a,u).slice(1)],d=o(t),[m,b,x]=(0,r.heatRgb)(l),j=v.CreateTube(`ts-link-${t.standpointId}-${t.gazeId}-${t.meshId}`,{path:h,radius:(d?1:.4)*(.012+.04*l),tessellation:8,cap:0,sideOrientation:0},z),w=new k(`ts-link-mat-${t.standpointId}-${t.gazeId}-${t.meshId}`,z);w.disableLighting=!0,w.emissiveColor=new p(m,b,x),w.alpha=d?.35+.65*l:c?.06:.18,j.material=w,j.isPickable=!0,j.metadata={hoverLabel:g.get(t.meshId)??t.meshId},M.push(j,w)}};ej.current=l,l()}else{let e=new Map;for(let t of eb.current)e.set(t.name,f(t));let n=new Map,s=ef.current.map(([e])=>e).filter(t=>!e.has(t));for(let e=0;e<s.length;e++){let t=s[e],a=g(t),i=e/Math.max(1,s.length)*Math.PI*2+a%100/100*.35;n.set(t,[2.2*Math.cos(i),-.35+(a%7-3)*.06,2.2*Math.sin(i)])}for(let[t,s]of e.entries())n.set(t,s);let i=0,l=0,u=0,x=0;for(let e of n.values())i+=e[0],l+=e[1],u+=e[2],x++;let j=new d(i/Math.max(1,x),l/Math.max(1,x),u/Math.max(1,x)),_=1.8;for(let e of n.values()){let t=e[0]-j.x,n=e[1]-j.y,s=e[2]-j.z;_=Math.max(_,Math.sqrt(t*t+n*n+s*s))}let $=.75*_+1,I=Math.max(1,_/1.8);(a=new o("flow-cam",Math.PI/4,Math.PI/3,3.4*_,j,z)).attachControl(t,!0),(0,c.disableWheelZoom)(a),P.current=a,B.current={target:j,alpha:a.alpha,beta:a.beta,radius:a.radius},new h("flow-light",new d(.3,1,.2),z);let C=v.CreateSphere("flow-source-dome",{diameter:2*$,segments:20},z);C.position=j;let R=new k("flow-source-dome-mat",z);R.wireframe=!0,R.disableLighting=!0,R.emissiveColor=new p(.16,.2,.28),R.alpha=.35,C.material=R,C.isPickable=!1;let S=()=>{y();let e=em.current;if(0===e.length)return;let t=eg.current,n=ex.current,s=ek.current,a=new Map;for(let e of eb.current)a.set(e.name,f(e));let i=new Map,l=ef.current.map(([e])=>e).filter(e=>!a.has(e));for(let e=0;e<l.length;e++){let t=l[e],n=g(t),s=e/Math.max(1,l.length)*Math.PI*2+n%100/100*.35;i.set(t,[2.2*Math.cos(s),-.35+(n%7-3)*.06,2.2*Math.sin(s)])}for(let[e,t]of a.entries())i.set(e,t);let o=e.reduce((e,t)=>Math.max(e,t.count),1),c=new k("flow-source-node",z);c.disableLighting=!0,c.emissiveColor=new p(.45,.75,1);let u=new k("flow-target-node",z);u.disableLighting=!0,u.emissiveColor=new p(1,.82,.42),M.push(c,u);let h=new Set,x=new Set,_=e=>{let s=n===m||b(e.azimuth_bin,e.elevation_bin)===n,a=t===m||e.mesh===t;return s&&a},C=new Set,P=new Set;for(let t of e)_(t)&&(C.add(b(t.azimuth_bin,t.elevation_bin)),P.add(t.mesh));for(let s of e){let e=`${s.azimuth_bin}|${s.elevation_bin}`,a=i.get(s.mesh);if(!a)continue;let l=_(s),b=(s.azimuth_bin+.5)/w*Math.PI*2-Math.PI,f=(s.elevation_bin+.5)/w*Math.PI-Math.PI/2,g=Math.cos(f),y=g*Math.cos(b),B=Math.sin(f),R=g*Math.sin(b),S=new d(j.x+y*$,j.y+B*$,j.z+R*$),L=new d(a[0],a[1],a[2]);if(!h.has(e)){let s=v.CreateSphere(`flow-src-${e}`,{diameter:.12*I,segments:6},z);s.position=S;let a=c.clone(`flow-src-mat-${e}`);a.alpha=C.has(e)||t===m&&n===m?1:.22,s.material=a,s.isPickable=!1,h.add(e),M.push(s,a)}if(!x.has(s.mesh)){let e=v.CreateSphere(`flow-target-${s.mesh}`,{diameter:.2*I,segments:7},z);e.position=L;let a=u.clone(`flow-target-mat-${s.mesh}`);a.alpha=P.has(s.mesh)||t===m&&n===m?1:.22,e.material=a,e.isPickable=!0,e.metadata={hoverLabel:s.mesh},x.add(s.mesh),M.push(e,a)}let q=S.add(L).scale(.5),A=q.subtract(j),N=Math.sqrt(A.x*A.x+A.y*A.y+A.z*A.z),E=N>1e-6?A.x/N:0,O=N>1e-6?A.y/N:1,Z=N>1e-6?A.z/N:0,T=(.35+s.count/o*.75)*I,F=new d(q.x+E*T,q.y+O*T+.12*I,q.z+Z*T),V=[];for(let e=0;e<=18;e++){let t=e/18,n=1-t;V.push(new d(n*n*S.x+2*n*t*F.x+t*t*L.x,n*n*S.y+2*n*t*F.y+t*t*L.y,n*n*S.z+2*n*t*F.z+t*t*L.z))}let W=s.count/o,[X,H,D]=(0,r.heatRgb)(W),U=v.CreateTube(`flow-link-${s.mesh}-${e}`,{path:V,radius:(l?1:.4)*(.012+.04*W)*I,tessellation:8,cap:0,sideOrientation:0},z),K=new k(`flow-link-mat-${s.mesh}-${e}`,z);K.disableLighting=!0,K.emissiveColor=new p(X,H,D),K.alpha=l?.35+.65*W:.08,U.material=K,U.isPickable=!0,U.metadata={hoverLabel:s.mesh},M.push(U,K)}let B=s?.origin;if(B){let e=new d(B[0],B[1],B[2]),t=v.CreateSphere("flow-standpoint",{diameter:.26*I,segments:10},z);t.position=e;let n=new k("flow-standpoint-mat",z);n.disableLighting=!0,n.emissiveColor=new p(.95,.45,.95),t.material=n,t.isPickable=!1;let s=v.CreateLines("flow-standpoint-stem",{points:[e,new d(e.x,j.y,e.z)]},z);s.color=new p(.95,.45,.95),s.isPickable=!1,M.push(t,n,s)}};ej.current=S,S()}j.runRenderLoop(()=>z.render());let _=()=>j.resize();window.addEventListener("resize",_);let $=(0,u.attachMeshHover)(z,t,X),I=(0,c.attachDoubleClickFocus)(z,t,a);S("ready"),s=()=>{window.removeEventListener("resize",_),$(),I(),X(null),ej.current=null,P.current=null,B.current=null,y(),z.dispose(),j.dispose()}}catch(e){if(n)return;S("error"),q(e instanceof Error?e.message:"Failed to render flow links.")}})(),()=>{n=!0,s?.()}},[es,w,ew]),(0,n.useEffect)(()=>{ej.current?.()},[ei,en,z,A,E,Z,et]),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("canvas",{ref:C,className:"aspect-video w-full rounded-lg border border-edge bg-ink"}),W?(0,t.jsx)("div",{className:"pointer-events-none absolute z-10 max-w-[16rem] truncate rounded border border-edge bg-ink/90 px-1.5 py-0.5 text-xs text-white shadow backdrop-blur",style:{left:W.x+12,top:W.y+12},children:W.label}):null,"ready"===R?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"absolute left-3 top-3 flex flex-wrap gap-2",children:[ee?(0,t.jsxs)("div",{className:"flex items-center gap-1 rounded-md border border-edge bg-ink/80 p-0.5 text-xs backdrop-blur",children:[(0,t.jsx)(v,{active:!es,onClick:()=>V("aggregate"),children:"Aggregate"}),(0,t.jsx)(v,{active:es,onClick:()=>V("twostage"),children:"Two-stage"})]}):null,Y?(0,t.jsxs)("div",{className:"flex items-center gap-1 rounded-md border border-edge bg-ink/80 p-0.5 text-xs backdrop-blur",children:[(0,t.jsx)(v,{active:"first-person"===H,onClick:()=>D("first-person"),children:"Walk"}),(0,t.jsx)(v,{active:"viewer"===H,onClick:()=>D("viewer"),disabled:I,title:I?"Orbit (viewer) flow isn't available for walkable scenes":void 0,children:"Orbit"}),(0,t.jsx)(v,{active:"all"===H,onClick:()=>D("all"),children:"All"})]}):null,ee?(0,t.jsx)(x,{label:"Standpoint",value:Z,onChange:T,allLabel:"All standpoints",options:eu}):null,(0,t.jsx)(x,{label:es?"Gaze":"Source",value:E,onChange:O,allLabel:es?"All gaze sectors":"All sources",options:eh}),(0,t.jsx)(x,{label:"Mesh",value:A,onChange:N,allLabel:"All meshes",options:ed})]}),es?(0,t.jsx)(k,{standpoints:Q,proxyMeshes:z,selectedKey:Z,onSelect:e=>T(t=>t===e?m:e)}):null,(0,t.jsxs)("div",{className:"pointer-events-none absolute bottom-3 right-3 flex max-w-[20rem] flex-col items-end gap-2",children:[Y&&!I?(0,t.jsxs)("div",{className:"rounded-md border border-edge bg-ink/80 px-2 py-1 text-xs text-fg-muted backdrop-blur",children:["Orbit-dominated scene — viewer ",(0,t.jsx)("em",{children:"position"})," adds little here. Use the"," ",(0,t.jsx)("strong",{children:"View dome"})," (§7.5) above for where viewers looked."]}):null,(0,t.jsxs)("div",{className:"rounded-md border border-edge bg-ink/80 px-2 py-1 text-xs text-fg backdrop-blur",children:["Active links: ",er,"/",ec]})]}),(0,t.jsx)(d.ZoomButtons,{onZoom:e=>P.current&&(0,c.stepZoom)(P.current,e),onReset:()=>P.current&&B.current&&(0,c.resetFocus)(P.current,B.current)}),(0,t.jsx)(h.HeatLegend,{title:"Flow volume",lowLabel:"fewer links",highLabel:"dominant links",note:es?"Three columns: standpoint → gaze sector → mesh. Top standpoints/meshes are kept; the tail folds into an “Other” node. Pick a standpoint (or click the minimap), gaze sector, or mesh to emphasize matching ribbons.":"Each arc aggregates clicks from one camera-direction bin to a mesh. Pick a source or mesh to emphasize matching links and dim the rest."})]}):(0,t.jsx)("div",{className:"pointer-events-none absolute inset-0 grid place-items-center text-sm text-fg-muted",children:"loading"===R?"Rendering…":"empty"===R?"No aggregate flow links in range.":"error"===R?L??"Flow view unavailable.":null})]})}],19399)},3905,e=>{e.v(t=>Promise.all(["static/chunks/3pdpaqzwhhijn.js","static/chunks/08bm3ye5govev.js","static/chunks/0g6u34xkzrpjn.js","static/chunks/25ctnyh7njp-d.js","static/chunks/2gh4z57fem0_v.js","static/chunks/3vaho-xrtuchd.js","static/chunks/0g7p8zp2kxve5.js"].map(t=>e.l(t))).then(()=>t(66232)))},94432,e=>{e.v(t=>Promise.all(["static/chunks/2kje_jvmwsvwo.js","static/chunks/1j--a56ji33_x.js","static/chunks/3pdpaqzwhhijn.js","static/chunks/2npk7tr63h7rl.js","static/chunks/3vaho-xrtuchd.js","static/chunks/3g_h_00xs9u59.js","static/chunks/1vzmzrjhlm1q5.js","static/chunks/25ctnyh7njp-d.js","static/chunks/1vpcaaf-0dn7q.js"].map(t=>e.l(t))).then(()=>t(92494)))},59694,e=>{e.v(t=>Promise.all(["static/chunks/1j--a56ji33_x.js","static/chunks/0oap0o8a8a_cl.js","static/chunks/0f_nv15a8q415.js","static/chunks/1vzmzrjhlm1q5.js","static/chunks/3pdpaqzwhhijn.js","static/chunks/245h82k-g1nxr.js","static/chunks/3ovd8o_usay7j.js","static/chunks/3vaho-xrtuchd.js","static/chunks/1vpcaaf-0dn7q.js","static/chunks/25ctnyh7njp-d.js","static/chunks/2npk7tr63h7rl.js","static/chunks/3pyggl13glbdc.js"].map(t=>e.l(t))).then(()=>t(67186)))},88004,e=>{e.v(t=>Promise.all(["static/chunks/2p8dbh81chhon.js","static/chunks/1oara6fkfvgs3.js","static/chunks/1vzmzrjhlm1q5.js","static/chunks/25ctnyh7njp-d.js","static/chunks/3pdpaqzwhhijn.js"].map(t=>e.l(t))).then(()=>t(15768)))},27940,e=>{e.v(t=>Promise.all(["static/chunks/0w0sx062qmcsh.js","static/chunks/25ctnyh7njp-d.js","static/chunks/3pdpaqzwhhijn.js"].map(t=>e.l(t))).then(()=>t(23235)))},27124,e=>{e.v(t=>Promise.all(["static/chunks/1par9m038tiov.js","static/chunks/1j--a56ji33_x.js","static/chunks/2j-sax2xfdv7l.js","static/chunks/340pg0qkv5tqq.js","static/chunks/3pdpaqzwhhijn.js","static/chunks/0gwa154w_0wuh.js","static/chunks/0oap0o8a8a_cl.js","static/chunks/0f_nv15a8q415.js","static/chunks/3vaho-xrtuchd.js","static/chunks/3pyggl13glbdc.js","static/chunks/1vzmzrjhlm1q5.js","static/chunks/3g_h_00xs9u59.js","static/chunks/1vpcaaf-0dn7q.js","static/chunks/25ctnyh7njp-d.js","static/chunks/2npk7tr63h7rl.js","static/chunks/01aeari2x_tlz.js"].map(t=>e.l(t))).then(()=>t(70928)))},14074,e=>{e.v(t=>Promise.all(["static/chunks/1zcrrq1fx8g2y.js","static/chunks/1tdg_eolxlcdl.js","static/chunks/1j--a56ji33_x.js","static/chunks/1vzmzrjhlm1q5.js","static/chunks/0vddljjnmozzx.js","static/chunks/3pdpaqzwhhijn.js","static/chunks/1vpcaaf-0dn7q.js","static/chunks/3vaho-xrtuchd.js","static/chunks/0f_nv15a8q415.js","static/chunks/3g_h_00xs9u59.js","static/chunks/2npk7tr63h7rl.js","static/chunks/25ctnyh7njp-d.js"].map(t=>e.l(t))).then(()=>t(87566)))},18561,e=>{e.v(t=>Promise.all(["static/chunks/1j--a56ji33_x.js","static/chunks/1vkww9l6lgqag.js","static/chunks/3pdpaqzwhhijn.js","static/chunks/2npk7tr63h7rl.js","static/chunks/117ys3lltfmcu.js","static/chunks/25ctnyh7njp-d.js","static/chunks/1vzmzrjhlm1q5.js","static/chunks/3g_h_00xs9u59.js","static/chunks/1vpcaaf-0dn7q.js","static/chunks/3vaho-xrtuchd.js"].map(t=>e.l(t))).then(()=>t(85106)))}]);
@@ -6,8 +6,8 @@
6
6
  8:I[1750,["/_next/static/chunks/1ek5rtpo6rxev.js"],"ViewportBoundary"]
7
7
  a:I[1750,["/_next/static/chunks/1ek5rtpo6rxev.js"],"MetadataBoundary"]
8
8
  c:I[19606,["/_next/static/chunks/1ek5rtpo6rxev.js"],"default",1]
9
- :HL["/_next/static/chunks/2kw33jl_i9o5j.css","style"]
10
- 0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2kw33jl_i9o5j.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/1ek5rtpo6rxev.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"space_grotesk_59d6dcf5-module__z_Ctiq__variable jetbrains_mono_38c99671-module__5Dhsuq__variable","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2kw33jl_i9o5j.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"2AsIePMYsPfJoAl46w-g4"}
9
+ :HL["/_next/static/chunks/3ef6upwlgr4q-.css","style"]
10
+ 0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/3ef6upwlgr4q-.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/1ek5rtpo6rxev.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"space_grotesk_59d6dcf5-module__z_Ctiq__variable jetbrains_mono_38c99671-module__5Dhsuq__variable","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/3ef6upwlgr4q-.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"M5esRfAVlWSeBcfLV_jVr"}
11
11
  d:[]
12
12
  7:"$Wd"
13
13
  9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
@@ -3,4 +3,4 @@
3
3
  3:I[1750,["/_next/static/chunks/1ek5rtpo6rxev.js"],"MetadataBoundary"]
4
4
  4:"$Sreact.suspense"
5
5
  5:I[11936,["/_next/static/chunks/1ek5rtpo6rxev.js"],"IconMark"]
6
- 0:{"rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Uptimizr — 3D Scene Analytics"}],["$","meta","1",{"name":"description","content":"Open-source analytics dashboard for 3D scenes."}],["$","link","2",{"rel":"icon","href":"/icon.svg?icon.08h29dad3pcxg.svg","sizes":"any","type":"image/svg+xml"}],["$","$L5","3",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"2AsIePMYsPfJoAl46w-g4"}
6
+ 0:{"rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Uptimizr — 3D Scene Analytics"}],["$","meta","1",{"name":"description","content":"Open-source analytics dashboard for 3D scenes."}],["$","link","2",{"rel":"icon","href":"/icon.svg?icon.08h29dad3pcxg.svg","sizes":"any","type":"image/svg+xml"}],["$","$L5","3",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"M5esRfAVlWSeBcfLV_jVr"}
@@ -1,5 +1,5 @@
1
1
  1:"$Sreact.fragment"
2
2
  2:I[16190,["/_next/static/chunks/1ek5rtpo6rxev.js"],"default"]
3
3
  3:I[62242,["/_next/static/chunks/1ek5rtpo6rxev.js"],"default"]
4
- :HL["/_next/static/chunks/2kw33jl_i9o5j.css","style"]
5
- 0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2kw33jl_i9o5j.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/1ek5rtpo6rxev.js","async":true}]],["$","html",null,{"lang":"en","className":"space_grotesk_59d6dcf5-module__z_Ctiq__variable jetbrains_mono_38c99671-module__5Dhsuq__variable","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"2AsIePMYsPfJoAl46w-g4"}
4
+ :HL["/_next/static/chunks/3ef6upwlgr4q-.css","style"]
5
+ 0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/3ef6upwlgr4q-.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/1ek5rtpo6rxev.js","async":true}]],["$","html",null,{"lang":"en","className":"space_grotesk_59d6dcf5-module__z_Ctiq__variable jetbrains_mono_38c99671-module__5Dhsuq__variable","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"M5esRfAVlWSeBcfLV_jVr"}
@@ -1,5 +1,5 @@
1
1
  1:"$Sreact.fragment"
2
2
  2:I[1750,["/_next/static/chunks/1ek5rtpo6rxev.js"],"OutletBoundary"]
3
3
  3:"$Sreact.suspense"
4
- 0:{"rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"2AsIePMYsPfJoAl46w-g4"}
4
+ 0:{"rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"M5esRfAVlWSeBcfLV_jVr"}
5
5
  4:null
@@ -2,4 +2,4 @@
2
2
  2:I[16190,["/_next/static/chunks/1ek5rtpo6rxev.js"],"default"]
3
3
  3:I[62242,["/_next/static/chunks/1ek5rtpo6rxev.js"],"default"]
4
4
  4:[]
5
- 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"2AsIePMYsPfJoAl46w-g4"}
5
+ 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"M5esRfAVlWSeBcfLV_jVr"}
@@ -1,2 +1,2 @@
1
- :HL["/_next/static/chunks/2kw33jl_i9o5j.css","style"]
2
- 0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"/_not-found","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"2AsIePMYsPfJoAl46w-g4"}
1
+ :HL["/_next/static/chunks/3ef6upwlgr4q-.css","style"]
2
+ 0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"/_not-found","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"M5esRfAVlWSeBcfLV_jVr"}
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en" class="space_grotesk_59d6dcf5-module__z_Ctiq__variable jetbrains_mono_38c99671-module__5Dhsuq__variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/2kw33jl_i9o5j.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/1g3z43o3h-024.js"/><script src="/_next/static/chunks/1evp209qbr4cr.js" async=""></script><script src="/_next/static/chunks/28f1onw3nywbz.js" async=""></script><script src="/_next/static/chunks/turbopack-16ab30_1p4vhq.js" async=""></script><script src="/_next/static/chunks/1ek5rtpo6rxev.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>Uptimizr — 3D Scene Analytics</title><meta name="description" content="Open-source analytics dashboard for 3D scenes."/><link rel="icon" href="/icon.svg?icon.08h29dad3pcxg.svg" sizes="any" type="image/svg+xml"/><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/1g3z43o3h-024.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[16190,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"default\"]\n3:I[62242,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"default\"]\n4:I[1750,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[1750,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"ViewportBoundary\"]\na:I[1750,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"MetadataBoundary\"]\nc:I[19606,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/2kw33jl_i9o5j.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2kw33jl_i9o5j.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/1ek5rtpo6rxev.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"space_grotesk_59d6dcf5-module__z_Ctiq__variable jetbrains_mono_38c99671-module__5Dhsuq__variable\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2kw33jl_i9o5j.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"2AsIePMYsPfJoAl46w-g4\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:I[11936,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"IconMark\"]\n6:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"Uptimizr — 3D Scene Analytics\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open-source analytics dashboard for 3D scenes.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg?icon.08h29dad3pcxg.svg\",\"sizes\":\"any\",\"type\":\"image/svg+xml\"}],[\"$\",\"$Le\",\"3\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en" class="space_grotesk_59d6dcf5-module__z_Ctiq__variable jetbrains_mono_38c99671-module__5Dhsuq__variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/3ef6upwlgr4q-.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/1g3z43o3h-024.js"/><script src="/_next/static/chunks/1evp209qbr4cr.js" async=""></script><script src="/_next/static/chunks/28f1onw3nywbz.js" async=""></script><script src="/_next/static/chunks/turbopack-16ab30_1p4vhq.js" async=""></script><script src="/_next/static/chunks/1ek5rtpo6rxev.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>Uptimizr — 3D Scene Analytics</title><meta name="description" content="Open-source analytics dashboard for 3D scenes."/><link rel="icon" href="/icon.svg?icon.08h29dad3pcxg.svg" sizes="any" type="image/svg+xml"/><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/1g3z43o3h-024.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[16190,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"default\"]\n3:I[62242,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"default\"]\n4:I[1750,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[1750,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"ViewportBoundary\"]\na:I[1750,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"MetadataBoundary\"]\nc:I[19606,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/3ef6upwlgr4q-.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/3ef6upwlgr4q-.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/1ek5rtpo6rxev.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"space_grotesk_59d6dcf5-module__z_Ctiq__variable jetbrains_mono_38c99671-module__5Dhsuq__variable\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/3ef6upwlgr4q-.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"M5esRfAVlWSeBcfLV_jVr\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:I[11936,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"IconMark\"]\n6:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"Uptimizr — 3D Scene Analytics\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open-source analytics dashboard for 3D scenes.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg?icon.08h29dad3pcxg.svg\",\"sizes\":\"any\",\"type\":\"image/svg+xml\"}],[\"$\",\"$Le\",\"3\",{}]]\n"])</script></body></html>
@@ -6,8 +6,8 @@
6
6
  8:I[1750,["/_next/static/chunks/1ek5rtpo6rxev.js"],"ViewportBoundary"]
7
7
  a:I[1750,["/_next/static/chunks/1ek5rtpo6rxev.js"],"MetadataBoundary"]
8
8
  c:I[19606,["/_next/static/chunks/1ek5rtpo6rxev.js"],"default",1]
9
- :HL["/_next/static/chunks/2kw33jl_i9o5j.css","style"]
10
- 0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2kw33jl_i9o5j.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/1ek5rtpo6rxev.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"space_grotesk_59d6dcf5-module__z_Ctiq__variable jetbrains_mono_38c99671-module__5Dhsuq__variable","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2kw33jl_i9o5j.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"2AsIePMYsPfJoAl46w-g4"}
9
+ :HL["/_next/static/chunks/3ef6upwlgr4q-.css","style"]
10
+ 0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/3ef6upwlgr4q-.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/1ek5rtpo6rxev.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"space_grotesk_59d6dcf5-module__z_Ctiq__variable jetbrains_mono_38c99671-module__5Dhsuq__variable","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/3ef6upwlgr4q-.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"M5esRfAVlWSeBcfLV_jVr"}
11
11
  d:[]
12
12
  7:"$Wd"
13
13
  9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
package/out/index.html CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en" class="space_grotesk_59d6dcf5-module__z_Ctiq__variable jetbrains_mono_38c99671-module__5Dhsuq__variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/0c89a48fa5027cee-s.p.2cyn07wtgehh0.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/logo.svg"/><link rel="stylesheet" href="/_next/static/chunks/2kw33jl_i9o5j.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/1g3z43o3h-024.js"/><script src="/_next/static/chunks/1evp209qbr4cr.js" async=""></script><script src="/_next/static/chunks/28f1onw3nywbz.js" async=""></script><script src="/_next/static/chunks/turbopack-16ab30_1p4vhq.js" async=""></script><script src="/_next/static/chunks/1ek5rtpo6rxev.js" async=""></script><script src="/_next/static/chunks/224_scesvd739.js" async=""></script><script src="/_next/static/chunks/2mleh3pbge181.js" async=""></script><script src="/_next/static/chunks/1fruncg3k-3pu.js" async=""></script><meta name="next-size-adjust" content=""/><title>Uptimizr — 3D Scene Analytics</title><meta name="description" content="Open-source analytics dashboard for 3D scenes."/><link rel="icon" href="/icon.svg?icon.08h29dad3pcxg.svg" sizes="any" type="image/svg+xml"/><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><main class="mx-auto max-w-6xl px-6 py-8"><header class="mb-6 flex items-center gap-3"><img src="/logo.svg" alt="Uptimizr" width="36" height="36" class="h-9 w-9 shrink-0"/><div><h1 class="font-display text-2xl font-bold text-fg-hi">Uptimizr</h1><p class="text-sm text-fg-muted">Analytics for 3D scenes — open-source collector.</p></div></header><form class="mb-6 flex flex-wrap items-end gap-3 rounded-xl border border-edge bg-panel p-4"><label class="flex flex-1 flex-col gap-1 text-xs text-fg-muted">Collector URL<input class="min-w-56 rounded-md border border-edge bg-ink px-3 py-2 text-sm text-fg outline-none focus:border-saffron" placeholder="http://localhost:4318" value="http://localhost:4318"/></label><label class="flex flex-1 flex-col gap-1 text-xs text-fg-muted">Project API key<input class="min-w-56 rounded-md border border-edge bg-ink px-3 py-2 text-sm text-fg outline-none focus:border-saffron" type="password" placeholder="utk_…" value=""/></label><button type="submit" class="rounded-md bg-amber px-4 py-2 text-sm font-medium text-ink transition hover:bg-ember disabled:opacity-50">Load</button></form><p class="text-sm text-fg-muted">Enter your collector URL and a project API key, then load to view analytics.</p></main><!--$--><!--/$--><script src="/_next/static/chunks/1g3z43o3h-024.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[16190,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"default\"]\n3:I[62242,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"default\"]\n4:I[85960,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"ClientPageRoot\"]\n5:I[14936,[\"/_next/static/chunks/1ek5rtpo6rxev.js\",\"/_next/static/chunks/224_scesvd739.js\",\"/_next/static/chunks/2mleh3pbge181.js\",\"/_next/static/chunks/1fruncg3k-3pu.js\"],\"default\"]\n8:I[1750,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nb:I[1750,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"ViewportBoundary\"]\nd:I[1750,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"MetadataBoundary\"]\nf:I[19606,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/2kw33jl_i9o5j.css\",\"style\"]\n:HL[\"/_next/static/media/0c89a48fa5027cee-s.p.2cyn07wtgehh0.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2kw33jl_i9o5j.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/1ek5rtpo6rxev.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"space_grotesk_59d6dcf5-module__z_Ctiq__variable jetbrains_mono_38c99671-module__5Dhsuq__variable\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L4\",null,{\"Component\":\"$5\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":[\"$@6\",\"$@7\"]}}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/224_scesvd739.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/2mleh3pbge181.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/1fruncg3k-3pu.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@a\"}]}]]}],{},null,false,null]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Le\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2kw33jl_i9o5j.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"2AsIePMYsPfJoAl46w-g4\"}\n"])</script><script>self.__next_f.push([1,"6:{}\n7:\"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params\"\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"10:I[11936,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"IconMark\"]\na:null\ne:[[\"$\",\"title\",\"0\",{\"children\":\"Uptimizr — 3D Scene Analytics\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open-source analytics dashboard for 3D scenes.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg?icon.08h29dad3pcxg.svg\",\"sizes\":\"any\",\"type\":\"image/svg+xml\"}],[\"$\",\"$L10\",\"3\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en" class="space_grotesk_59d6dcf5-module__z_Ctiq__variable jetbrains_mono_38c99671-module__5Dhsuq__variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/0c89a48fa5027cee-s.p.2cyn07wtgehh0.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/logo.svg"/><link rel="stylesheet" href="/_next/static/chunks/3ef6upwlgr4q-.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/1g3z43o3h-024.js"/><script src="/_next/static/chunks/1evp209qbr4cr.js" async=""></script><script src="/_next/static/chunks/28f1onw3nywbz.js" async=""></script><script src="/_next/static/chunks/turbopack-16ab30_1p4vhq.js" async=""></script><script src="/_next/static/chunks/1ek5rtpo6rxev.js" async=""></script><script src="/_next/static/chunks/13oqt2aoms4f6.js" async=""></script><script src="/_next/static/chunks/2t9zu9v_g9kr9.js" async=""></script><script src="/_next/static/chunks/34rcp8qrbp522.js" async=""></script><meta name="next-size-adjust" content=""/><title>Uptimizr — 3D Scene Analytics</title><meta name="description" content="Open-source analytics dashboard for 3D scenes."/><link rel="icon" href="/icon.svg?icon.08h29dad3pcxg.svg" sizes="any" type="image/svg+xml"/><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><main class="mx-auto max-w-6xl px-6 py-8"><header class="mb-6 flex items-center gap-3"><img src="/logo.svg" alt="Uptimizr" width="36" height="36" class="h-9 w-9 shrink-0"/><div><h1 class="font-display text-2xl font-bold text-fg-hi">Uptimizr</h1><p class="text-sm text-fg-muted">Analytics for 3D scenes — open-source collector.</p></div></header><form class="mb-6 flex flex-wrap items-end gap-3 rounded-xl border border-edge bg-panel p-4"><label class="flex flex-1 flex-col gap-1 text-xs text-fg-muted">Collector URL<input class="min-w-56 rounded-md border border-edge bg-ink px-3 py-2 text-sm text-fg outline-none focus:border-saffron" placeholder="http://localhost:4318" value="http://localhost:4318"/></label><label class="flex flex-1 flex-col gap-1 text-xs text-fg-muted">Project API key<input class="min-w-56 rounded-md border border-edge bg-ink px-3 py-2 text-sm text-fg outline-none focus:border-saffron" type="password" placeholder="utk_…" value=""/></label><button type="submit" class="rounded-md bg-amber px-4 py-2 text-sm font-medium text-ink transition hover:bg-ember disabled:opacity-50">Load</button></form><p class="text-sm text-fg-muted">Enter your collector URL and a project API key, then load to view analytics.</p></main><!--$--><!--/$--><script src="/_next/static/chunks/1g3z43o3h-024.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[16190,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"default\"]\n3:I[62242,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"default\"]\n4:I[85960,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"ClientPageRoot\"]\n5:I[14936,[\"/_next/static/chunks/1ek5rtpo6rxev.js\",\"/_next/static/chunks/13oqt2aoms4f6.js\",\"/_next/static/chunks/2t9zu9v_g9kr9.js\",\"/_next/static/chunks/34rcp8qrbp522.js\"],\"default\"]\n8:I[1750,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nb:I[1750,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"ViewportBoundary\"]\nd:I[1750,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"MetadataBoundary\"]\nf:I[19606,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/3ef6upwlgr4q-.css\",\"style\"]\n:HL[\"/_next/static/media/0c89a48fa5027cee-s.p.2cyn07wtgehh0.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/3ef6upwlgr4q-.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/1ek5rtpo6rxev.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"space_grotesk_59d6dcf5-module__z_Ctiq__variable jetbrains_mono_38c99671-module__5Dhsuq__variable\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L4\",null,{\"Component\":\"$5\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":[\"$@6\",\"$@7\"]}}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/13oqt2aoms4f6.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/2t9zu9v_g9kr9.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/34rcp8qrbp522.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@a\"}]}]]}],{},null,false,null]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Le\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/3ef6upwlgr4q-.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"M5esRfAVlWSeBcfLV_jVr\"}\n"])</script><script>self.__next_f.push([1,"6:{}\n7:\"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params\"\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"10:I[11936,[\"/_next/static/chunks/1ek5rtpo6rxev.js\"],\"IconMark\"]\na:null\ne:[[\"$\",\"title\",\"0\",{\"children\":\"Uptimizr — 3D Scene Analytics\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open-source analytics dashboard for 3D scenes.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg?icon.08h29dad3pcxg.svg\",\"sizes\":\"any\",\"type\":\"image/svg+xml\"}],[\"$\",\"$L10\",\"3\",{}]]\n"])</script></body></html>
package/out/index.txt CHANGED
@@ -2,16 +2,16 @@
2
2
  2:I[16190,["/_next/static/chunks/1ek5rtpo6rxev.js"],"default"]
3
3
  3:I[62242,["/_next/static/chunks/1ek5rtpo6rxev.js"],"default"]
4
4
  4:I[85960,["/_next/static/chunks/1ek5rtpo6rxev.js"],"ClientPageRoot"]
5
- 5:I[14936,["/_next/static/chunks/1ek5rtpo6rxev.js","/_next/static/chunks/224_scesvd739.js","/_next/static/chunks/2mleh3pbge181.js","/_next/static/chunks/1fruncg3k-3pu.js"],"default"]
5
+ 5:I[14936,["/_next/static/chunks/1ek5rtpo6rxev.js","/_next/static/chunks/13oqt2aoms4f6.js","/_next/static/chunks/2t9zu9v_g9kr9.js","/_next/static/chunks/34rcp8qrbp522.js"],"default"]
6
6
  8:I[1750,["/_next/static/chunks/1ek5rtpo6rxev.js"],"OutletBoundary"]
7
7
  9:"$Sreact.suspense"
8
8
  b:I[1750,["/_next/static/chunks/1ek5rtpo6rxev.js"],"ViewportBoundary"]
9
9
  d:I[1750,["/_next/static/chunks/1ek5rtpo6rxev.js"],"MetadataBoundary"]
10
10
  f:I[19606,["/_next/static/chunks/1ek5rtpo6rxev.js"],"default",1]
11
- :HL["/_next/static/chunks/2kw33jl_i9o5j.css","style"]
11
+ :HL["/_next/static/chunks/3ef6upwlgr4q-.css","style"]
12
12
  :HL["/_next/static/media/0c89a48fa5027cee-s.p.2cyn07wtgehh0.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
13
13
  :HL["/_next/static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
14
- 0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2kw33jl_i9o5j.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/1ek5rtpo6rxev.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"space_grotesk_59d6dcf5-module__z_Ctiq__variable jetbrains_mono_38c99671-module__5Dhsuq__variable","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@6","$@7"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/224_scesvd739.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/2mleh3pbge181.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/1fruncg3k-3pu.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,null]},null,false,null],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Le"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$f",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2kw33jl_i9o5j.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"2AsIePMYsPfJoAl46w-g4"}
14
+ 0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/3ef6upwlgr4q-.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/1ek5rtpo6rxev.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"space_grotesk_59d6dcf5-module__z_Ctiq__variable jetbrains_mono_38c99671-module__5Dhsuq__variable","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@6","$@7"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/13oqt2aoms4f6.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/2t9zu9v_g9kr9.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/34rcp8qrbp522.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,null]},null,false,null],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Le"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$f",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/3ef6upwlgr4q-.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"M5esRfAVlWSeBcfLV_jVr"}
15
15
  6:{}
16
16
  7:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params"
17
17
  c:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uptimizr/dashboard",
3
- "version": "0.3.2",
3
+ "version": "0.3.4",
4
4
  "description": "Uptimizr analytics dashboard — a static-export SPA that reads the collector query API. Serve it standalone, all-in-one via the collector, or drop the assets on any static host.",
5
5
  "keywords": [
6
6
  "uptimizr",
@@ -41,9 +41,9 @@
41
41
  "next": "^16.2.9",
42
42
  "react": "^19.2.7",
43
43
  "react-dom": "^19.2.7",
44
+ "@uptimizr/replay": "0.2.3",
44
45
  "@uptimizr/heatmap": "0.1.2",
45
- "@uptimizr/react": "0.7.0",
46
- "@uptimizr/replay": "0.2.2"
46
+ "@uptimizr/react": "0.8.1"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@types/node": "^26.0.1",