@uptimizr/dashboard 0.3.4 → 0.3.5
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.
- package/out/404.html +1 -1
- package/out/__next.__PAGE__.txt +2 -2
- package/out/__next._full.txt +2 -2
- package/out/__next._head.txt +1 -1
- package/out/__next._index.txt +1 -1
- package/out/__next._tree.txt +1 -1
- package/out/_next/static/chunks/{2h051-1hu4co_.js → 020h1b22yfzjc.js} +1 -1
- package/out/_next/static/chunks/{0k9-8s-jof_gw.js → 0jsh6juckq525.js} +1 -1
- package/out/_next/static/chunks/{1zcrrq1fx8g2y.js → 0n0thxa3jkour.js} +2 -2
- package/out/_next/static/chunks/0yvei5e7uye4f.js +3 -0
- package/out/_next/static/chunks/{01aeari2x_tlz.js → 10w513bgw-bgi.js} +1 -1
- package/out/_next/static/chunks/{39lxb7c--3_2u.js → 16hx9_epo71u-.js} +1 -1
- package/out/_next/static/chunks/{3d5yb9ybkz7hx.js → 1bxxv3nsl2-o_.js} +1 -1
- package/out/_next/static/chunks/{2yzui3v-besdu.js → 1f-2upk7uaxky.js} +1 -1
- package/out/_next/static/chunks/{38wksra3d_k-4.js → 1q-gcxr6o4bx2.js} +1 -1
- package/out/_next/static/chunks/{0fxfsshoxnnh6.js → 1st81sc3owvku.js} +1 -1
- package/out/_next/static/chunks/28ud4w7xswcir.js +1 -0
- package/out/_next/static/chunks/{1--aypw9o8yng.js → 2cqxw5m39njar.js} +4 -4
- package/out/_next/static/chunks/{09p5fltt7o3to.js → 2fle007r0cdnq.js} +1 -1
- package/out/_next/static/chunks/{29v8falcmjvev.js → 2jfmqd86u1tzv.js} +1 -1
- package/out/_next/static/chunks/{1bv97vf67p_ri.js → 2owp-uukmhm4s.js} +2 -2
- package/out/_next/static/chunks/{13oqt2aoms4f6.js → 2pkoed609lf41.js} +1 -1
- package/out/_next/static/chunks/{3pyggl13glbdc.js → 2wdk-kbm-n-m5.js} +1 -1
- package/out/_next/static/chunks/{42oyfkhdvb-u3.js → 30_2jsjk52x2i.js} +1 -1
- package/out/_next/static/chunks/{0zcdc17ie6lmh.js → 33h_kt3pzks_y.js} +1 -1
- package/out/_next/static/chunks/{2s0dwzg7kq36n.js → 366e7izc386pj.js} +1 -1
- package/out/_next/static/chunks/{0ufakw529sr9d.js → 36waz9xq39n4t.js} +4 -4
- package/out/_next/static/chunks/{1ll0ta8a2qx1p.js → 39dscgnk4__gl.js} +2 -2
- package/out/_next/static/chunks/{413o2v11bygt5.js → 3ghwe2mr2ig7e.js} +1 -1
- package/out/_next/static/chunks/3mcfjxvxo0o3e.js +1 -0
- package/out/_next/static/chunks/{259xlbe69b9tc.js → 3oj29s_tuqbkm.js} +1 -1
- package/out/_next/static/chunks/{3bsvp8qhjqdu0.js → 3r2hbpm4wju16.js} +1 -1
- package/out/_next/static/chunks/{340pg0qkv5tqq.js → 3rx1jhuop94-l.js} +1 -1
- package/out/_not-found/__next._full.txt +1 -1
- package/out/_not-found/__next._head.txt +1 -1
- package/out/_not-found/__next._index.txt +1 -1
- package/out/_not-found/__next._not-found.__PAGE__.txt +1 -1
- package/out/_not-found/__next._not-found.txt +1 -1
- package/out/_not-found/__next._tree.txt +1 -1
- package/out/_not-found.html +1 -1
- package/out/_not-found.txt +1 -1
- package/out/index.html +1 -1
- package/out/index.txt +2 -2
- package/package.json +3 -3
- package/out/_next/static/chunks/06m_64ysu9kn0.js +0 -1
- package/out/_next/static/chunks/34rcp8qrbp522.js +0 -3
- package/out/_next/static/chunks/3l6t8b3addlw7.js +0 -1
- /package/out/_next/static/{M5esRfAVlWSeBcfLV_jVr → RC8D0Hg382TugUN5Syz31}/_buildManifest.js +0 -0
- /package/out/_next/static/{M5esRfAVlWSeBcfLV_jVr → RC8D0Hg382TugUN5Syz31}/_clientMiddlewareManifest.js +0 -0
- /package/out/_next/static/{M5esRfAVlWSeBcfLV_jVr → RC8D0Hg382TugUN5Syz31}/_ssgManifest.js +0 -0
|
@@ -326,7 +326,7 @@ vertexOutputs.vColor=vec4f(vertexOutputs.vColor.rgb*colorUpdated.rgb,vertexOutpu
|
|
|
326
326
|
vertexOutputs.vColor*=vertexInputs.instanceColor;
|
|
327
327
|
#endif
|
|
328
328
|
#endif
|
|
329
|
-
`;t.ShaderStore.IncludesShadersStoreWGSL[f]||(t.ShaderStore.IncludesShadersStoreWGSL[f]=d),e.s(["vertexColorMixingWGSL",0,{name:f,shader:d}],97885)},62983,
|
|
329
|
+
`;t.ShaderStore.IncludesShadersStoreWGSL[f]||(t.ShaderStore.IncludesShadersStoreWGSL[f]=d),e.s(["vertexColorMixingWGSL",0,{name:f,shader:d}],97885)},62983,76752,13103,98386,81740,87143,86424,84722,18012,64107,3309,e=>{"use strict";var t=e.i(1719);let r="uvAttributeDeclaration",i=`#if defined(UV{X}) && !defined(USE_VERTEX_PULLING)
|
|
330
330
|
attribute uv{X}: vec2f;
|
|
331
331
|
#endif
|
|
332
332
|
`;t.ShaderStore.IncludesShadersStoreWGSL[r]||(t.ShaderStore.IncludesShadersStoreWGSL[r]=i),e.s(["uvAttributeDeclarationWGSL",0,{name:r,shader:i}],62983);let a="prePassVertexDeclaration",n=`#ifdef PREPASS
|
|
@@ -343,7 +343,7 @@ varying vNormViewDepth: f32;
|
|
|
343
343
|
uniform previousViewProjection: mat4x4f;varying vCurrentPosition: vec4f;varying vPreviousPosition: vec4f;
|
|
344
344
|
#endif
|
|
345
345
|
#endif
|
|
346
|
-
`;t.ShaderStore.IncludesShadersStoreWGSL[a]||(t.ShaderStore.IncludesShadersStoreWGSL[a]=n),e.s(["prePassVertexDeclarationWGSL",0,{name:a,shader:n}],
|
|
346
|
+
`;t.ShaderStore.IncludesShadersStoreWGSL[a]||(t.ShaderStore.IncludesShadersStoreWGSL[a]=n),e.s(["prePassVertexDeclarationWGSL",0,{name:a,shader:n}],76752);let f="samplerVertexDeclaration",d=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0
|
|
347
347
|
varying v_VARYINGNAME_UV: vec2f;
|
|
348
348
|
#endif
|
|
349
349
|
`;t.ShaderStore.IncludesShadersStoreWGSL[f]||(t.ShaderStore.IncludesShadersStoreWGSL[f]=d),e.s(["samplerVertexDeclarationWGSL",0,{name:f,shader:d}],13103);let o="lightVxUboDeclaration",s=`#ifdef LIGHT{X}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,56054,e=>{"use strict";e.s(["HEAT_GRADIENT",0,"linear-gradient(to right, rgb(178,47,38), rgb(224,123,57), rgb(244,200,75))","heatRgb",0,function(e){let t=Math.max(0,Math.min(1,e)),s=[.878,.482,.224],r=(e,t,s)=>[e[0]+(t[0]-e[0])*s,e[1]+(t[1]-e[1])*s,e[2]+(t[2]-e[2])*s];return t<.5?r([.698,.184,.149],s,t/.5):r(s,[.957,.784,.294],(t-.5)/.5)},"percentileMax",0,function(e,t=.95){if(0===e.length)return 1;let s=[...e].sort((e,t)=>e-t),r=Math.max(0,Math.min(1,t))*(s.length-1),n=Math.floor(r),i=Math.ceil(r);return Math.max(1,n===i?s[n]:s[n]+(s[i]-s[n])*(r-n))}])},18637,e=>{"use strict";var t=e.i(28100),s=e.i(56054);e.s(["HeatLegend",0,function({title:e,lowLabel:r="low",highLabel:n="high",note:i}){return(0,t.jsxs)("div",{className:"pointer-events-none absolute bottom-3 left-3 rounded-md border border-edge bg-ink/80 px-3 py-2 text-fg backdrop-blur-sm",children:[(0,t.jsx)("div",{className:"mb-1 text-xs font-medium text-fg",children:e}),(0,t.jsx)("div",{className:"h-2 w-36 rounded-sm",style:{background:s.HEAT_GRADIENT}}),(0,t.jsxs)("div",{className:"mt-1 flex w-36 justify-between text-[10px] text-fg-muted",children:[(0,t.jsx)("span",{children:r}),(0,t.jsx)("span",{children:n})]}),i?(0,t.jsx)("div",{className:"mt-1 max-w-44 text-[10px] leading-tight text-fg-muted",children:i}):null]})}])},20880,e=>{"use strict";class t extends Error{status;constructor(e,t){super(e),this.status=t,this.name="ApiError"}}function s(e){return e.endsWith("/")?e:`${e}/`}e.s(["ApiError",0,t,"CollectorApi",0,class{baseUrl;apiKey;constructor(e,t){this.baseUrl=e,this.apiKey=t}async get(e,r={}){let n=new URL(e,s(this.baseUrl));for(let[e,t]of Object.entries(r))null!=t&&n.searchParams.set(e,String(t));let i=await fetch(n,{headers:{"x-api-key":this.apiKey},cache:"no-store"});if(!i.ok)throw new t(await i.text().catch(()=>"")||i.statusText,i.status);return await i.json()}sessions(e){return this.get("api/v1/sessions",e).then(e=>e.map(e=>({...e,events:Number(e.events)})))}pointerHeatmap(e){return this.get("api/v1/heatmaps/pointer",e)}meshUvHeatmap(e){return this.get("api/v1/heatmaps/mesh-uv",e)}cameraHeatmap(e){return this.get("api/v1/heatmaps/camera",e)}viewCoverageHistogram(e){return this.get("api/v1/coverage/view-histogram",e).then(e=>e.map(e=>({bucket:Number(e.bucket??0),sessions:Number(e.sessions??0)})))}topMeshes(e){return this.get("api/v1/meshes/top",e).then(e=>e.map(e=>({...e,count:Number(e.count)})))}meshBlindSpots(e){return this.get("api/v1/meshes/blind-spots",e).then(e=>e.map(e=>({mesh:String(e.mesh??""),visible_ms:Number(e.visible_ms??0),vis_samples:Number(e.vis_samples??0),interactions:Number(e.interactions??0),hover_ms:Number(e.hover_ms??0),hover_episodes:Number(e.hover_episodes??0)})))}meshKinds(e){return this.get("api/v1/meshes/kinds",e).then(e=>e.map(e=>({mesh:String(e.mesh??""),kind:String(e.kind??""),count:Number(e.count??0)})))}reachability(e){return this.get("api/v1/meshes/reachability",e).then(e=>e.map(e=>({mesh:String(e.mesh??""),bucket:Number(e.bucket??0),count:Number(e.count??0),avg_distance:Number(e.avg_distance??0)})))}topMeshesBySource(e){return this.get("api/v1/meshes/sources",e).then(e=>e.map(e=>({mesh:String(e.mesh??""),source:String(e.source??""),count:Number(e.count??0)})))}topMeshesTrend(e){return this.get("api/v1/meshes/trend",e).then(e=>e.map(e=>({mesh:String(e.mesh??""),bucket:Number(e.bucket??0),count:Number(e.count??0)})))}topInputActions(e){return this.get("api/v1/input-actions/top",e).then(e=>e.map(e=>({action:String(e.action??""),source:String(e.source??""),count:Number(e.count??0)})))}perf(e){return this.get("api/v1/perf",e).then(e=>({samples:Number(e.samples??0),avg_fps:Number(e.avg_fps??0),min_fps:Number(e.min_fps??0),p50_fps:Number(e.p50_fps??0)}))}renderScale(e){return this.get("api/v1/perf/render-scale",e).then(e=>{let t=e[0]??{},s=Number(t.downscaled_samples??0),r=Number(t.scale_samples??0);return{samples:Number(t.samples??0),avg_fps:Number(t.avg_fps??0),p50_fps:Number(t.p50_fps??0),avg_render_scale:Number(t.avg_render_scale??0),p50_render_scale:Number(t.p50_render_scale??0),downscaled_samples:s,scale_samples:r,downscaled_share:r>0?s/r:0}})}perfDistribution(e){return this.get("api/v1/perf/distribution",e).then(e=>{let t=e[0]??{};return{sessions:Number(t.sessions??0),samples:Number(t.samples??0),p05_fps:Number(t.p05_fps??0),p50_fps:Number(t.p50_fps??0),p95_fps:Number(t.p95_fps??0)}})}fpsHistogram(e){return this.get("api/v1/perf/fps-histogram",e).then(e=>e.map(e=>({bucket:Number(e.bucket??0),sessions:Number(e.sessions??0)})))}frameTimePercentiles(e){return this.get("api/v1/perf/frame-time",e).then(e=>{let t=e[0]??{};return{sessions:Number(t.sessions??0),samples:Number(t.samples??0),p50_ms:Number(t.p50_ms??0),p95_ms:Number(t.p95_ms??0)}})}jankRate(e){return this.get("api/v1/perf/jank",e).then(e=>{let t=e[0]??{};return{sessions:Number(t.sessions??0),total_long_frames:Number(t.total_long_frames??0),median_rate:Number(t.median_rate??0),worst_decile_rate:Number(t.worst_decile_rate??0)}})}perfChurn(e){return this.get("api/v1/perf/churn",e).then(e=>{let t=e[0]??{};return{sessions:Number(t.sessions??0),churn_sessions:Number(t.churn_sessions??0),fps_churn_sessions:Number(t.fps_churn_sessions??0),stall_churn_sessions:Number(t.stall_churn_sessions??0)}})}perfByDevice(e){return this.get("api/v1/perf/by-device",e).then(e=>e.map(e=>({engine:String(e.engine??""),is_mobile:String(e.is_mobile??""),renderer:String(e.renderer??""),browser:String(e.browser??""),os:String(e.os??""),sessions:Number(e.sessions??0),samples:Number(e.samples??0),p50_fps:Number(e.p50_fps??0)})))}perfByScene(e){return this.get("api/v1/perf/by-scene",e).then(e=>e.map(e=>({scene_id:String(e.scene_id??""),sessions:Number(e.sessions??0),samples:Number(e.samples??0),p50_fps:Number(e.p50_fps??0)})))}resourcePercentiles(e){return this.get("api/v1/perf/resource-percentiles",e).then(e=>{let t=e[0]??{};return{sessions:Number(t.sessions??0),samples:Number(t.samples??0),p50_js_heap_bytes:Number(t.p50_js_heap_bytes??0),p95_js_heap_bytes:Number(t.p95_js_heap_bytes??0),p50_texture_bytes:Number(t.p50_texture_bytes??0),p95_texture_bytes:Number(t.p95_texture_bytes??0),p50_triangles:Number(t.p50_triangles??0),p95_triangles:Number(t.p95_triangles??0)}})}stabilityCounts(e){return this.get("api/v1/perf/stability",e).then(e=>{let t=e[0]??{};return{context_losses:Number(t.context_losses??0),compile_stalls:Number(t.compile_stalls??0),incidents:Number(t.incidents??0)}})}graphicsDiagnosticCounts(e){return this.get("api/v1/graphics-diagnostics",e).then(e=>e.map(e=>({severity:String(e.severity??""),category:String(e.category??""),backend:String(e.backend??""),incidents:Number(e.incidents??0)})))}renderingTechnology(e){return this.get("api/v1/rendering-technology",e).then(e=>e.map(e=>({api:String(e.api??""),backend:String(e.backend??""),apiVersion:String(e.api_version??""),shadingLanguage:String(e.shading_language??""),sessions:Number(e.sessions??0)})))}worldHeatmap(e){return this.get("api/v1/heatmaps/world",e).then(e=>e.map(e=>({vx:Number(e.vx),vy:Number(e.vy),vz:Number(e.vz),count:Number(e.count)})))}gazeHeatmap(e){return this.get("api/v1/heatmaps/gaze",e).then(e=>e.map(e=>({vx:Number(e.vx),vy:Number(e.vy),vz:Number(e.vz),count:Number(e.count)})))}errorHeatmap(e){return this.get("api/v1/heatmaps/errors",e).then(e=>e.map(e=>({vx:Number(e.vx),vy:Number(e.vy),vz:Number(e.vz),count:Number(e.count)})))}worldHeatmapStats(e){return this.get("api/v1/heatmaps/world/stats",e).then(e=>({cellSize:Number(e.cellSize??0),cells:Number(e.cells??0),hits:Number(e.hits??0)}))}gazeHeatmapStats(e){return this.get("api/v1/heatmaps/gaze/stats",e).then(e=>({cellSize:Number(e.cellSize??0),cells:Number(e.cells??0),hits:Number(e.hits??0)}))}cameraPositionHeatmap(e){return this.get("api/v1/heatmaps/position",e).then(e=>e.map(e=>({gx:Number(e.gx),gz:Number(e.gz),avg_y:Number(e.avg_y??0),count:Number(e.count??0)})))}sessionTrajectory(e,t){return this.get(`api/v1/sessions/${encodeURIComponent(e)}/trajectory`,t).then(e=>e.map(e=>({ts:Number(e.ts),x:Number(e.x),y:Number(e.y),z:Number(e.z)})))}aggregatePaths(e){return this.get("api/v1/paths",e).then(e=>e.map(e=>({session_id:String(e.session_id??""),ts:Number(e.ts),gx:Number(e.gx),gz:Number(e.gz)})))}clickRays(e){return this.get("api/v1/heatmaps/click-rays",e).then(e=>e.map(e=>({camVoxel:[Number(e.cam_vx),Number(e.cam_vy),Number(e.cam_vz)],origin:[Number(e.origin_x),Number(e.origin_y),Number(e.origin_z)],hitVoxel:[Number(e.hit_vx),Number(e.hit_vy),Number(e.hit_vz)],hit:[Number(e.hit_x),Number(e.hit_y),Number(e.hit_z)],mesh:String(e.mesh??""),count:Number(e.count)})))}flowHeatmap(e){return this.get("api/v1/heatmaps/flow",e).then(e=>e.map(e=>{let t={azimuth_bin:Number(e.azimuth_bin),elevation_bin:Number(e.elevation_bin),mesh:String(e.mesh??""),count:Number(e.count)};return null!=e.origin_vx&&(t.originVoxel=[Number(e.origin_vx),Number(e.origin_vy),Number(e.origin_vz)],t.origin=[Number(e.origin_x),Number(e.origin_y),Number(e.origin_z)]),t}))}scenes(e){return this.get("api/v1/scenes",e).then(e=>e.map(e=>({...e,events:Number(e.events)})))}timeseries(e){return this.get("api/v1/timeseries",e).then(e=>e.map(e=>({bucket:Number(e.bucket),events:Number(e.events??0),avg_fps:Number(e.avg_fps??0)})))}eventCounts(e){return this.get("api/v1/event-counts",e).then(e=>e.map(e=>({event_type:String(e.event_type),count:Number(e.count??0)})))}funnel(e,t){return this.get("api/v1/funnel",{...t,steps:JSON.stringify(e)}).then(e=>e.map(e=>({step:Number(e.step),sessions:Number(e.sessions??0)})))}sceneRetention(e){return this.get("api/v1/scene-retention",e).then(e=>e.map(e=>({from:String(e.from_scene??""),to:String(e.to_scene??""),sessions:Number(e.sessions??0)})))}loadBounce(e){let{bands:t,...s}=e??{};return this.get("api/v1/load-bounce",{...s,...null!=t&&t.length>0?{bands:t.join(",")}:{}}).then(e=>e.map(e=>({band:Number(e.band??0),sessions:Number(e.sessions??0),bounced:Number(e.bounced??0)})))}variantLeaderboard(e={},t){return this.get("api/v1/variant-leaderboard",{...t,variant:e.variant?JSON.stringify(e.variant):void 0,conversion:e.conversion?JSON.stringify(e.conversion):void 0}).then(e=>e.map(e=>{let t=Number(e.sessions??0),s=Number(e.conversions??0);return{variant:String(e.variant),views:Number(e.views??0),sessions:t,conversions:s,avgDwellMs:Number(e.avg_dwell_ms??0),conversionRate:t>0?s/t:0}}))}coverage(e){return this.get("api/v1/coverage",e).then(e=>e.map(e=>({vx:Number(e.vx),vy:Number(e.vy),vz:Number(e.vz),count:Number(e.count??0)})))}perfHeatmap(e){return this.get("api/v1/heatmaps/perf",e).then(e=>e.map(e=>({vx:Number(e.vx),vy:Number(e.vy),vz:Number(e.vz),samples:Number(e.samples??0),avgFps:Number(e.avg_fps??0),minFps:Number(e.min_fps??0)})))}cameraDistance(e){return this.get("api/v1/camera/distance",e).then(e=>e.map(e=>({bucket:Number(e.bucket),count:Number(e.count??0)})))}navigation(e){return this.get("api/v1/navigation",e).then(e=>e.map(e=>({session_id:String(e.session_id??""),segments:Number(e.segments??0),total_distance:Number(e.total_distance??0),active_segments:Number(e.active_segments??0),active_distance:Number(e.active_distance??0)})))}backtrackRatio(e){return this.get("api/v1/backtrack",e).then(e=>e.map(e=>({scene:String(e.scene??""),sessions:Number(e.sessions??0),entries:Number(e.entries??0),revisits:Number(e.revisits??0),backtrack_ratio:Number(e.backtrack_ratio??0)})))}cameraGestures(e){return this.get("api/v1/camera-gestures",e).then(e=>e.map(e=>({kind:String(e.kind??""),gestures:Number(e.gestures??0),total_ms:Number(e.total_ms??0),avg_ms:Number(e.avg_ms??0),max_ms:Number(e.max_ms??0)})))}interactionsBySource(e){return this.get("api/v1/interactions/sources",e).then(e=>e.map(e=>({event_type:String(e.event_type??""),source:String(e.source??""),count:Number(e.count??0),sessions:Number(e.sessions??0)})))}xrLocomotion(e){return this.get("api/v1/xr/locomotion",e).then(e=>e.map(e=>({session_id:String(e.session_id??""),fly_gestures:Number(e.fly_gestures??0),navigate_gestures:Number(e.navigate_gestures??0),teleports:Number(e.teleports??0),locomotion_ms:Number(e.locomotion_ms??0),started_at:String(e.started_at??""),ended_at:String(e.ended_at??"")})))}sessionMeta(e){return this.get(`api/v1/sessions/${encodeURIComponent(e)}/meta`)}async sceneRepresentation(e){try{return await this.get(`api/v1/scenes/${encodeURIComponent(e)}/representation`)}catch(e){if(e instanceof t&&404===e.status)return null;throw e}}async liveToken(){let e=new URL("api/v1/live/token",s(this.baseUrl)),r=await fetch(e,{method:"POST",headers:{"x-api-key":this.apiKey},cache:"no-store"});if(!r.ok)throw new t(await r.text().catch(()=>"")||r.statusText,r.status);return await r.json()}livePresenceUrl(e){let t=new URL("api/v1/live/presence",s(this.baseUrl));return t.searchParams.set("token",e),t.toString()}liveStreamUrl(e,t){let r=new URL("api/v1/live/stream",s(this.baseUrl));return r.searchParams.set("token",e),t&&t.length>0&&r.searchParams.set("types",t.join(",")),r.toString()}liveSessionUrl(e,t){let r=new URL(`api/v1/live/sessions/${encodeURIComponent(t)}`,s(this.baseUrl));return r.searchParams.set("token",e),r.toString()}}])},37215,e=>{"use strict";var t=e.i(28100);let s=(0,t.jsxs)(t.Fragment,{children:["Each ",(0,t.jsx)("strong",{children:"source"})," is a camera ",(0,t.jsx)("em",{children:"gaze-direction bin"})," — a cell on the sphere of where viewers were looking (grouped by azimuth/elevation). Each ",(0,t.jsx)("strong",{children:"target"})," is a"," ",(0,t.jsx)("em",{children:"mesh that was clicked"}),". A ribbon's thickness is how many clicks on that mesh happened while viewers looked from that direction, so you can see which viewpoints drive interaction with which objects. When the scene reports ",(0,t.jsx)("em",{children:"standpoints"}),' (where the viewer stood, §7.8), pick one to gate the flow to clicks made from that vantage — a pin marks it in the scene. "All standpoints" is the aggregate view. Switch to ',(0,t.jsx)("strong",{children:"Two-stage"})," ","for a three-column ",(0,t.jsx)("em",{children:"standpoint → gaze sector → mesh"}),' flow with a birdview minimap; the busiest standpoints/meshes are kept and the tail folds into an "Other" node.']});e.s(["CAMERA_DOME_SUBTITLE",0,"Where the audience looked, mapped onto a sphere — drag to orbit, +/- to zoom, double-click to focus","CAMERA_DOME_TITLE",0,"View-direction dome (3D)","CLICK_RAYS_SUBTITLE",0,"Each click joined to the view it was made from — gate by viewpoint or focus a mesh; double-click to recenter","CLICK_RAYS_TITLE",0,"Click rays (3D)","ERROR_HEATMAP_SUBTITLE",0,"Where errors & engine diagnostics fired, voxel-binned by the camera position at the moment they hit — drag to orbit, double-click to focus","ERROR_HEATMAP_TITLE",0,"Error heatmap (3D)","FLOW_SANKEY_HELP",0,s,"FLOW_SANKEY_SUBTITLE",0,"Direction-bin → mesh links (aggregate), or standpoint → gaze → mesh (two-stage) — double-click to focus","FLOW_SANKEY_TITLE",0,"Flow Sankey (3D)","GAZE_CLICK_SUBTITLE",0,"Where viewers look (gaze) vs. where they act (clicks), voxel-binned in world space — double-click to focus","GAZE_CLICK_TITLE",0,"Gaze vs. click divergence","PERF_HEATMAP_SUBTITLE",0,"Where FPS is bad in your scene — frame_perf samples voxel-binned by camera position; hot = slow. Drag to orbit, +/- to zoom, double-click to focus","PERF_HEATMAP_TITLE",0,"Performance heatmap (3D)","WORLD_HEATMAP_SUBTITLE",0,"Pointer hit-points voxel-binned in world space — drag to orbit, +/- to zoom, double-click to focus","WORLD_HEATMAP_TITLE",0,"World heatmap (3D)"])},82665,e=>{"use strict";var t=e.i(37998);let s=!!t.default.env.NEXT_PUBLIC_COLLECTOR_URL,r=t.default.env.NEXT_PUBLIC_COLLECTOR_URL??"http://localhost:4318",n="1"===t.default.env.DASHBOARD_STATIC?"":t.default.env.NEXT_PUBLIC_API_KEY??"",i=t.default.env.NEXT_PUBLIC_PLAYGROUND_URL??"http://localhost:5173";e.s(["COLLECTOR_URL_IS_PINNED",0,s,"DEFAULT_API_KEY",0,n,"DEFAULT_COLLECTOR_URL",0,r,"DEFAULT_PLAYGROUND_URL",0,i])},60614,e=>{"use strict";async function t(e,t){let s=await e.scenes(t).catch(()=>[]);if(0===s.length)return[];let r=await Promise.all(s.map(t=>e.sceneRepresentation(t.scene_id).catch(()=>null))),n=new Set,i=[];for(let e of r)for(let t of e?.proxy?.meshes??[])n.has(t.name)||(n.add(t.name),i.push(t));return i}e.s(["mergeSceneProxies",0,t])},88725,e=>{"use strict";var t=e.i(11623);e.i(82665);var s=e.i(20880);function r(e,t,s,r){let n={cancelled:!1,source:null,timer:null},i=0,a=async()=>{let a;if(n.cancelled)return;r(0===i?"connecting":"reconnecting");try{let{token:s}=await e.liveToken();a=t(s)}catch{o();return}if(n.cancelled)return;let u=new EventSource(a);n.source=u,u.onopen=()=>{i=0,r("open")},u.onerror=()=>{u.close(),n.source===u&&(n.source=null),o()},s(u)},o=()=>{if(n.cancelled)return;r("reconnecting");let e=Math.min(1e3*2**i,15e3);i+=1,n.timer=setTimeout(()=>void a(),e)};return a(),()=>{n.cancelled=!0,n.timer&&clearTimeout(n.timer),n.source?.close(),n.source=null}}async function n(e,t,s){let r=e.getReader(),n=new TextDecoder,i="";for(t.addEventListener("abort",()=>void r.cancel().catch(()=>{}));;){let{done:e,value:t}=await r.read();if(e)return;let a=(i+=n.decode(t,{stream:!0})).indexOf("\n\n");for(;a>=0;){let e=i.slice(0,a);i=i.slice(a+2);let t="message",r=[];for(let s of e.split("\n"))!s.startsWith(":")&&(s.startsWith("event:")?t=s.slice(6).trim():s.startsWith("data:")&&r.push(s.slice(5).replace(/^ /,"")));"event"===t&&r.length>0&&s(r.join("\n")),a=i.indexOf("\n\n")}}}e.s(["useLivePresence",0,function(e,n,i){let[a,o]=(0,t.useState)(null),[u,c]=(0,t.useState)("idle");return(0,t.useEffect)(()=>{if(!i||!n||!e){c("idle"),o(null);return}let t=new s.CollectorApi(e,n);return r(t,e=>t.livePresenceUrl(e),e=>{e.addEventListener("presence",e=>{try{o(JSON.parse(e.data))}catch{}})},c)},[e,n,i]),{snapshot:a,status:u}},"useLiveSession",0,function(e,r,i,a,o,u){let[c,l]=(0,t.useState)("idle"),[m,h]=(0,t.useState)(!1),[p,b]=(0,t.useState)(0),d=(0,t.useRef)(o),g=(0,t.useRef)(u);return d.current=o,g.current=u,(0,t.useEffect)(()=>{if(!a||!r||!e||!i)return void l("idle");let t=new s.CollectorApi(e,r),o=!1,u=0,c=null,m=null;h(!1),b(0);let p=()=>{if(o)return;l("reconnecting");let e=Math.min(1e3*2**u,15e3);u+=1,m=setTimeout(()=>void v(),e)},v=async()=>{let e;if(!o){l(0===u?"connecting":"reconnecting"),g.current(),b(0);try{({token:e}=await t.liveToken())}catch{p();return}if(!o){c=new AbortController;try{let s=await fetch(t.liveSessionUrl(e,i),{headers:{accept:"text/event-stream"},cache:"no-store",signal:c.signal});if(403===s.status){h(!0),l("idle");return}if(!s.ok||!s.body)return void p();u=0,l("open"),await n(s.body,c.signal,e=>{try{d.current(JSON.parse(e)),b(e=>e+1)}catch{}}),o||p()}catch{o||p()}}}};return v(),()=>{o=!0,m&&clearTimeout(m),c?.abort()}},[e,r,i,a]),{status:c,gated:m,count:p}},"useLiveStream",0,function(e,n,i,a,o){let[u,c]=(0,t.useState)("idle"),l=(0,t.useRef)(a);l.current=a;let m=o&&o.length>0?[...o].sort().join(","):"";return(0,t.useEffect)(()=>{if(!i||!n||!e)return void c("idle");let t=new s.CollectorApi(e,n),a=m?m.split(","):void 0;return r(t,e=>t.liveStreamUrl(e,a),e=>{e.addEventListener("event",e=>{try{l.current(JSON.parse(e.data))}catch{}})},c)},[e,n,i,m]),{status:u}}])},93425,e=>{"use strict";var t=e.i(28100),s=e.i(11623);function r({children:e,label:s="More information"}){return(0,t.jsxs)("span",{className:"group relative inline-flex",children:[(0,t.jsx)("button",{type:"button","aria-label":s,className:"flex h-4 w-4 items-center justify-center rounded-full border border-edge text-[10px] font-bold leading-none text-fg-muted transition hover:border-amber hover:text-fg-hi focus:outline-none focus:ring-1 focus:ring-amber",children:"?"}),(0,t.jsx)("span",{role:"tooltip",className:"pointer-events-none absolute left-1/2 top-6 z-20 w-64 -translate-x-1/2 rounded-md border border-edge bg-ink/95 p-2.5 text-xs font-normal normal-case leading-relaxed tracking-normal text-fg opacity-0 shadow-lg shadow-black/40 transition-opacity duration-150 group-hover:opacity-100 group-focus-within:opacity-100",children:e})]})}function n({label:e,onClick:s,active:r=!1,children:i}){return(0,t.jsx)("button",{type:"button","aria-label":e,title:e,onClick:s,"aria-pressed":r,className:`flex h-6 w-6 items-center justify-center rounded-md border text-sm leading-none transition focus:outline-none focus:ring-1 focus:ring-amber ${r?"border-amber text-amber":"border-edge text-fg-muted hover:border-amber hover:text-fg-hi"}`,children:i})}e.s(["Panel",0,function({title:e,subtitle:i,help:a,children:o,className:u="",collapsible:c=!1,defaultCollapsed:l=!1,onHide:m,settings:h}){let[p,b]=(0,s.useState)(c&&l),[d,g]=(0,s.useState)(!1),v=(0,t.jsxs)("header",{className:p?"":"mb-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsx)("h2",{className:"text-sm font-semibold uppercase tracking-wide text-fg",children:e}),c?(0,t.jsx)("span",{"aria-hidden":"true",className:"text-xs text-fg-muted",children:p?"▸":"▾"}):null,a?(0,t.jsx)(r,{label:`About: ${e}`,children:a}):null]}),i?(0,t.jsx)("p",{className:"mt-0.5 text-xs text-fg-muted",children:i}):null]}),_=!!h||!!m;return(0,t.jsxs)("section",{className:`rounded-xl border border-edge bg-panel p-4 shadow-lg shadow-black/20 ${u}`,children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[c?(0,t.jsx)("button",{type:"button",onClick:()=>b(e=>!e),"aria-expanded":p?"false":"true",className:"min-w-0 flex-1 text-left",children:v}):(0,t.jsx)("div",{className:"min-w-0 flex-1",children:v}),_?(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-1",children:[h?(0,t.jsx)(n,{label:`${e} settings`,active:d,onClick:()=>g(e=>!e),children:(0,t.jsx)("span",{"aria-hidden":"true",children:"⚙"})}):null,m?(0,t.jsx)(n,{label:`Hide ${e}`,onClick:m,children:(0,t.jsx)("span",{"aria-hidden":"true",children:"×"})}):null]}):null]}),h&&d?(0,t.jsx)("div",{className:"mb-3 rounded-lg border border-edge bg-ink/40 p-3",children:h}):null,p?null:o]})}])},78573,e=>{e.v(t=>Promise.all(["static/chunks/0k9-8s-jof_gw.js"].map(t=>e.l(t))).then(()=>t(48939)))},47410,e=>{e.v(t=>Promise.all(["static/chunks/259xlbe69b9tc.js"].map(t=>e.l(t))).then(()=>t(53993)))},70162,e=>{e.v(t=>Promise.all(["static/chunks/413o2v11bygt5.js"].map(t=>e.l(t))).then(()=>t(19399)))},21269,e=>{e.v(t=>Promise.all(["static/chunks/38wksra3d_k-4.js"].map(t=>e.l(t))).then(()=>t(39592)))},69091,e=>{e.v(t=>Promise.all(["static/chunks/06m_64ysu9kn0.js"].map(t=>e.l(t))).then(()=>t(12449)))},15867,e=>{e.v(t=>Promise.all(["static/chunks/3l6t8b3addlw7.js"].map(t=>e.l(t))).then(()=>t(94452)))}]);
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,56054,e=>{"use strict";e.s(["HEAT_GRADIENT",0,"linear-gradient(to right, rgb(178,47,38), rgb(224,123,57), rgb(244,200,75))","heatRgb",0,function(e){let t=Math.max(0,Math.min(1,e)),s=[.878,.482,.224],r=(e,t,s)=>[e[0]+(t[0]-e[0])*s,e[1]+(t[1]-e[1])*s,e[2]+(t[2]-e[2])*s];return t<.5?r([.698,.184,.149],s,t/.5):r(s,[.957,.784,.294],(t-.5)/.5)},"percentileMax",0,function(e,t=.95){if(0===e.length)return 1;let s=[...e].sort((e,t)=>e-t),r=Math.max(0,Math.min(1,t))*(s.length-1),n=Math.floor(r),i=Math.ceil(r);return Math.max(1,n===i?s[n]:s[n]+(s[i]-s[n])*(r-n))}])},18637,e=>{"use strict";var t=e.i(28100),s=e.i(56054);e.s(["HeatLegend",0,function({title:e,lowLabel:r="low",highLabel:n="high",note:i}){return(0,t.jsxs)("div",{className:"pointer-events-none absolute bottom-3 left-3 rounded-md border border-edge bg-ink/80 px-3 py-2 text-fg backdrop-blur-sm",children:[(0,t.jsx)("div",{className:"mb-1 text-xs font-medium text-fg",children:e}),(0,t.jsx)("div",{className:"h-2 w-36 rounded-sm",style:{background:s.HEAT_GRADIENT}}),(0,t.jsxs)("div",{className:"mt-1 flex w-36 justify-between text-[10px] text-fg-muted",children:[(0,t.jsx)("span",{children:r}),(0,t.jsx)("span",{children:n})]}),i?(0,t.jsx)("div",{className:"mt-1 max-w-44 text-[10px] leading-tight text-fg-muted",children:i}):null]})}])},20880,e=>{"use strict";class t extends Error{status;constructor(e,t){super(e),this.status=t,this.name="ApiError"}}function s(e){return e.endsWith("/")?e:`${e}/`}e.s(["ApiError",0,t,"CollectorApi",0,class{baseUrl;apiKey;constructor(e,t){this.baseUrl=e,this.apiKey=t}async get(e,r={}){let n=new URL(e,s(this.baseUrl));for(let[e,t]of Object.entries(r))null!=t&&n.searchParams.set(e,String(t));let i=await fetch(n,{headers:{"x-api-key":this.apiKey},cache:"no-store"});if(!i.ok)throw new t(await i.text().catch(()=>"")||i.statusText,i.status);return await i.json()}sessions(e){return this.get("api/v1/sessions",e).then(e=>e.map(e=>({...e,events:Number(e.events)})))}pointerHeatmap(e){return this.get("api/v1/heatmaps/pointer",e)}meshUvHeatmap(e){return this.get("api/v1/heatmaps/mesh-uv",e)}cameraHeatmap(e){return this.get("api/v1/heatmaps/camera",e)}viewCoverageHistogram(e){return this.get("api/v1/coverage/view-histogram",e).then(e=>e.map(e=>({bucket:Number(e.bucket??0),sessions:Number(e.sessions??0)})))}topMeshes(e){return this.get("api/v1/meshes/top",e).then(e=>e.map(e=>({...e,count:Number(e.count)})))}meshBlindSpots(e){return this.get("api/v1/meshes/blind-spots",e).then(e=>e.map(e=>({mesh:String(e.mesh??""),visible_ms:Number(e.visible_ms??0),vis_samples:Number(e.vis_samples??0),interactions:Number(e.interactions??0),hover_ms:Number(e.hover_ms??0),hover_episodes:Number(e.hover_episodes??0)})))}meshKinds(e){return this.get("api/v1/meshes/kinds",e).then(e=>e.map(e=>({mesh:String(e.mesh??""),kind:String(e.kind??""),count:Number(e.count??0)})))}reachability(e){return this.get("api/v1/meshes/reachability",e).then(e=>e.map(e=>({mesh:String(e.mesh??""),bucket:Number(e.bucket??0),count:Number(e.count??0),avg_distance:Number(e.avg_distance??0)})))}topMeshesBySource(e){return this.get("api/v1/meshes/sources",e).then(e=>e.map(e=>({mesh:String(e.mesh??""),source:String(e.source??""),count:Number(e.count??0)})))}topMeshesTrend(e){return this.get("api/v1/meshes/trend",e).then(e=>e.map(e=>({mesh:String(e.mesh??""),bucket:Number(e.bucket??0),count:Number(e.count??0)})))}topInputActions(e){return this.get("api/v1/input-actions/top",e).then(e=>e.map(e=>({action:String(e.action??""),source:String(e.source??""),count:Number(e.count??0)})))}perf(e){return this.get("api/v1/perf",e).then(e=>({samples:Number(e.samples??0),avg_fps:Number(e.avg_fps??0),min_fps:Number(e.min_fps??0),p50_fps:Number(e.p50_fps??0)}))}renderScale(e){return this.get("api/v1/perf/render-scale",e).then(e=>{let t=e[0]??{},s=Number(t.downscaled_samples??0),r=Number(t.scale_samples??0);return{samples:Number(t.samples??0),avg_fps:Number(t.avg_fps??0),p50_fps:Number(t.p50_fps??0),avg_render_scale:Number(t.avg_render_scale??0),p50_render_scale:Number(t.p50_render_scale??0),downscaled_samples:s,scale_samples:r,downscaled_share:r>0?s/r:0}})}perfDistribution(e){return this.get("api/v1/perf/distribution",e).then(e=>{let t=e[0]??{};return{sessions:Number(t.sessions??0),samples:Number(t.samples??0),p05_fps:Number(t.p05_fps??0),p50_fps:Number(t.p50_fps??0),p95_fps:Number(t.p95_fps??0)}})}fpsHistogram(e){return this.get("api/v1/perf/fps-histogram",e).then(e=>e.map(e=>({bucket:Number(e.bucket??0),sessions:Number(e.sessions??0)})))}frameTimePercentiles(e){return this.get("api/v1/perf/frame-time",e).then(e=>{let t=e[0]??{};return{sessions:Number(t.sessions??0),samples:Number(t.samples??0),p50_ms:Number(t.p50_ms??0),p95_ms:Number(t.p95_ms??0)}})}jankRate(e){return this.get("api/v1/perf/jank",e).then(e=>{let t=e[0]??{};return{sessions:Number(t.sessions??0),total_long_frames:Number(t.total_long_frames??0),median_rate:Number(t.median_rate??0),worst_decile_rate:Number(t.worst_decile_rate??0)}})}perfChurn(e){return this.get("api/v1/perf/churn",e).then(e=>{let t=e[0]??{};return{sessions:Number(t.sessions??0),churn_sessions:Number(t.churn_sessions??0),fps_churn_sessions:Number(t.fps_churn_sessions??0),stall_churn_sessions:Number(t.stall_churn_sessions??0)}})}perfByDevice(e){return this.get("api/v1/perf/by-device",e).then(e=>e.map(e=>({engine:String(e.engine??""),is_mobile:String(e.is_mobile??""),renderer:String(e.renderer??""),browser:String(e.browser??""),os:String(e.os??""),sessions:Number(e.sessions??0),samples:Number(e.samples??0),p50_fps:Number(e.p50_fps??0)})))}perfByScene(e){return this.get("api/v1/perf/by-scene",e).then(e=>e.map(e=>({scene_id:String(e.scene_id??""),sessions:Number(e.sessions??0),samples:Number(e.samples??0),p50_fps:Number(e.p50_fps??0)})))}resourcePercentiles(e){return this.get("api/v1/perf/resource-percentiles",e).then(e=>{let t=e[0]??{};return{sessions:Number(t.sessions??0),samples:Number(t.samples??0),p50_js_heap_bytes:Number(t.p50_js_heap_bytes??0),p95_js_heap_bytes:Number(t.p95_js_heap_bytes??0),p50_texture_bytes:Number(t.p50_texture_bytes??0),p95_texture_bytes:Number(t.p95_texture_bytes??0),p50_triangles:Number(t.p50_triangles??0),p95_triangles:Number(t.p95_triangles??0)}})}stabilityCounts(e){return this.get("api/v1/perf/stability",e).then(e=>{let t=e[0]??{};return{context_losses:Number(t.context_losses??0),compile_stalls:Number(t.compile_stalls??0),incidents:Number(t.incidents??0)}})}graphicsDiagnosticCounts(e){return this.get("api/v1/graphics-diagnostics",e).then(e=>e.map(e=>({severity:String(e.severity??""),category:String(e.category??""),backend:String(e.backend??""),incidents:Number(e.incidents??0)})))}renderingTechnology(e){return this.get("api/v1/rendering-technology",e).then(e=>e.map(e=>({api:String(e.api??""),backend:String(e.backend??""),apiVersion:String(e.api_version??""),shadingLanguage:String(e.shading_language??""),sessions:Number(e.sessions??0)})))}worldHeatmap(e){return this.get("api/v1/heatmaps/world",e).then(e=>e.map(e=>({vx:Number(e.vx),vy:Number(e.vy),vz:Number(e.vz),count:Number(e.count)})))}gazeHeatmap(e){return this.get("api/v1/heatmaps/gaze",e).then(e=>e.map(e=>({vx:Number(e.vx),vy:Number(e.vy),vz:Number(e.vz),count:Number(e.count)})))}errorHeatmap(e){return this.get("api/v1/heatmaps/errors",e).then(e=>e.map(e=>({vx:Number(e.vx),vy:Number(e.vy),vz:Number(e.vz),count:Number(e.count)})))}worldHeatmapStats(e){return this.get("api/v1/heatmaps/world/stats",e).then(e=>({cellSize:Number(e.cellSize??0),cells:Number(e.cells??0),hits:Number(e.hits??0)}))}gazeHeatmapStats(e){return this.get("api/v1/heatmaps/gaze/stats",e).then(e=>({cellSize:Number(e.cellSize??0),cells:Number(e.cells??0),hits:Number(e.hits??0)}))}cameraPositionHeatmap(e){return this.get("api/v1/heatmaps/position",e).then(e=>e.map(e=>({gx:Number(e.gx),gz:Number(e.gz),avg_y:Number(e.avg_y??0),count:Number(e.count??0)})))}sessionTrajectory(e,t){return this.get(`api/v1/sessions/${encodeURIComponent(e)}/trajectory`,t).then(e=>e.map(e=>({ts:Number(e.ts),x:Number(e.x),y:Number(e.y),z:Number(e.z)})))}aggregatePaths(e){return this.get("api/v1/paths",e).then(e=>e.map(e=>({session_id:String(e.session_id??""),ts:Number(e.ts),gx:Number(e.gx),gz:Number(e.gz)})))}clickRays(e){return this.get("api/v1/heatmaps/click-rays",e).then(e=>e.map(e=>({camVoxel:[Number(e.cam_vx),Number(e.cam_vy),Number(e.cam_vz)],origin:[Number(e.origin_x),Number(e.origin_y),Number(e.origin_z)],hitVoxel:[Number(e.hit_vx),Number(e.hit_vy),Number(e.hit_vz)],hit:[Number(e.hit_x),Number(e.hit_y),Number(e.hit_z)],mesh:String(e.mesh??""),count:Number(e.count)})))}flowHeatmap(e){return this.get("api/v1/heatmaps/flow",e).then(e=>e.map(e=>{let t={azimuth_bin:Number(e.azimuth_bin),elevation_bin:Number(e.elevation_bin),mesh:String(e.mesh??""),count:Number(e.count)};return null!=e.origin_vx&&(t.originVoxel=[Number(e.origin_vx),Number(e.origin_vy),Number(e.origin_vz)],t.origin=[Number(e.origin_x),Number(e.origin_y),Number(e.origin_z)]),t}))}scenes(e){return this.get("api/v1/scenes",e).then(e=>e.map(e=>({...e,events:Number(e.events)})))}timeseries(e){return this.get("api/v1/timeseries",e).then(e=>e.map(e=>({bucket:Number(e.bucket),events:Number(e.events??0),avg_fps:Number(e.avg_fps??0)})))}eventCounts(e){return this.get("api/v1/event-counts",e).then(e=>e.map(e=>({event_type:String(e.event_type),count:Number(e.count??0)})))}funnel(e,t){return this.get("api/v1/funnel",{...t,steps:JSON.stringify(e)}).then(e=>e.map(e=>({step:Number(e.step),sessions:Number(e.sessions??0)})))}sceneRetention(e){return this.get("api/v1/scene-retention",e).then(e=>e.map(e=>({from:String(e.from_scene??""),to:String(e.to_scene??""),sessions:Number(e.sessions??0)})))}loadBounce(e){let{bands:t,...s}=e??{};return this.get("api/v1/load-bounce",{...s,...null!=t&&t.length>0?{bands:t.join(",")}:{}}).then(e=>e.map(e=>({band:Number(e.band??0),sessions:Number(e.sessions??0),bounced:Number(e.bounced??0)})))}variantLeaderboard(e={},t){return this.get("api/v1/variant-leaderboard",{...t,variant:e.variant?JSON.stringify(e.variant):void 0,conversion:e.conversion?JSON.stringify(e.conversion):void 0}).then(e=>e.map(e=>{let t=Number(e.sessions??0),s=Number(e.conversions??0);return{variant:String(e.variant),views:Number(e.views??0),sessions:t,conversions:s,avgDwellMs:Number(e.avg_dwell_ms??0),conversionRate:t>0?s/t:0}}))}coverage(e){return this.get("api/v1/coverage",e).then(e=>e.map(e=>({vx:Number(e.vx),vy:Number(e.vy),vz:Number(e.vz),count:Number(e.count??0)})))}perfHeatmap(e){return this.get("api/v1/heatmaps/perf",e).then(e=>e.map(e=>({vx:Number(e.vx),vy:Number(e.vy),vz:Number(e.vz),samples:Number(e.samples??0),avgFps:Number(e.avg_fps??0),minFps:Number(e.min_fps??0)})))}cameraDistance(e){return this.get("api/v1/camera/distance",e).then(e=>e.map(e=>({bucket:Number(e.bucket),count:Number(e.count??0)})))}navigation(e){return this.get("api/v1/navigation",e).then(e=>e.map(e=>({session_id:String(e.session_id??""),segments:Number(e.segments??0),total_distance:Number(e.total_distance??0),active_segments:Number(e.active_segments??0),active_distance:Number(e.active_distance??0)})))}backtrackRatio(e){return this.get("api/v1/backtrack",e).then(e=>e.map(e=>({scene:String(e.scene??""),sessions:Number(e.sessions??0),entries:Number(e.entries??0),revisits:Number(e.revisits??0),backtrack_ratio:Number(e.backtrack_ratio??0)})))}cameraGestures(e){return this.get("api/v1/camera-gestures",e).then(e=>e.map(e=>({kind:String(e.kind??""),gestures:Number(e.gestures??0),total_ms:Number(e.total_ms??0),avg_ms:Number(e.avg_ms??0),max_ms:Number(e.max_ms??0)})))}interactionsBySource(e){return this.get("api/v1/interactions/sources",e).then(e=>e.map(e=>({event_type:String(e.event_type??""),source:String(e.source??""),count:Number(e.count??0),sessions:Number(e.sessions??0)})))}xrLocomotion(e){return this.get("api/v1/xr/locomotion",e).then(e=>e.map(e=>({session_id:String(e.session_id??""),fly_gestures:Number(e.fly_gestures??0),navigate_gestures:Number(e.navigate_gestures??0),teleports:Number(e.teleports??0),locomotion_ms:Number(e.locomotion_ms??0),started_at:String(e.started_at??""),ended_at:String(e.ended_at??"")})))}sessionMeta(e){return this.get(`api/v1/sessions/${encodeURIComponent(e)}/meta`)}async sceneRepresentation(e){try{return await this.get(`api/v1/scenes/${encodeURIComponent(e)}/representation`)}catch(e){if(e instanceof t&&404===e.status)return null;throw e}}async liveToken(){let e=new URL("api/v1/live/token",s(this.baseUrl)),r=await fetch(e,{method:"POST",headers:{"x-api-key":this.apiKey},cache:"no-store"});if(!r.ok)throw new t(await r.text().catch(()=>"")||r.statusText,r.status);return await r.json()}livePresenceUrl(e){let t=new URL("api/v1/live/presence",s(this.baseUrl));return t.searchParams.set("token",e),t.toString()}liveStreamUrl(e,t){let r=new URL("api/v1/live/stream",s(this.baseUrl));return r.searchParams.set("token",e),t&&t.length>0&&r.searchParams.set("types",t.join(",")),r.toString()}liveSessionUrl(e,t){let r=new URL(`api/v1/live/sessions/${encodeURIComponent(t)}`,s(this.baseUrl));return r.searchParams.set("token",e),r.toString()}}])},60614,e=>{"use strict";async function t(e,t){let s=await e.scenes(t).catch(()=>[]);if(0===s.length)return[];let r=await Promise.all(s.map(t=>e.sceneRepresentation(t.scene_id).catch(()=>null))),n=new Set,i=[];for(let e of r)for(let t of e?.proxy?.meshes??[])n.has(t.name)||(n.add(t.name),i.push(t));return i}e.s(["mergeSceneProxies",0,t])},37215,e=>{"use strict";var t=e.i(28100);let s=(0,t.jsxs)(t.Fragment,{children:["Each ",(0,t.jsx)("strong",{children:"source"})," is a camera ",(0,t.jsx)("em",{children:"gaze-direction bin"})," — a cell on the sphere of where viewers were looking (grouped by azimuth/elevation). Each ",(0,t.jsx)("strong",{children:"target"})," is a"," ",(0,t.jsx)("em",{children:"mesh that was clicked"}),". A ribbon's thickness is how many clicks on that mesh happened while viewers looked from that direction, so you can see which viewpoints drive interaction with which objects. When the scene reports ",(0,t.jsx)("em",{children:"standpoints"}),' (where the viewer stood, §7.8), pick one to gate the flow to clicks made from that vantage — a pin marks it in the scene. "All standpoints" is the aggregate view. Switch to ',(0,t.jsx)("strong",{children:"Two-stage"})," ","for a three-column ",(0,t.jsx)("em",{children:"standpoint → gaze sector → mesh"}),' flow with a birdview minimap; the busiest standpoints/meshes are kept and the tail folds into an "Other" node.']});e.s(["CAMERA_DOME_SUBTITLE",0,"Where the audience looked, mapped onto a sphere — drag to orbit, +/- to zoom, double-click to focus","CAMERA_DOME_TITLE",0,"View-direction dome (3D)","CLICK_RAYS_SUBTITLE",0,"Each click joined to the view it was made from — gate by viewpoint or focus a mesh; double-click to recenter","CLICK_RAYS_TITLE",0,"Click rays (3D)","ERROR_HEATMAP_SUBTITLE",0,"Where errors & engine diagnostics fired, voxel-binned by the camera position at the moment they hit — drag to orbit, double-click to focus","ERROR_HEATMAP_TITLE",0,"Error heatmap (3D)","FLOW_SANKEY_HELP",0,s,"FLOW_SANKEY_SUBTITLE",0,"Direction-bin → mesh links (aggregate), or standpoint → gaze → mesh (two-stage) — double-click to focus","FLOW_SANKEY_TITLE",0,"Flow Sankey (3D)","GAZE_CLICK_SUBTITLE",0,"Where viewers look (gaze) vs. where they act (clicks), voxel-binned in world space — double-click to focus","GAZE_CLICK_TITLE",0,"Gaze vs. click divergence","PERF_HEATMAP_SUBTITLE",0,"Where FPS is bad in your scene — frame_perf samples voxel-binned by camera position; hot = slow. Drag to orbit, +/- to zoom, double-click to focus","PERF_HEATMAP_TITLE",0,"Performance heatmap (3D)","SESSION_REPLAY_TITLE",0,"Session replay","WORLD_HEATMAP_SUBTITLE",0,"Pointer hit-points voxel-binned in world space — drag to orbit, +/- to zoom, double-click to focus","WORLD_HEATMAP_TITLE",0,"World heatmap (3D)","sessionReplaySubtitle",0,function(e){return e?"Following this session live — new camera moves and interactions stream in and the timeline grows. Scrub back to review, then press ● LIVE to return to the edge.":"Scrub the camera path and interaction rays; every click stays marked and glows as the playhead passes it. The color-coded strip marks when each event fired (click to seek)."},"sessionReplayTitle",0,function(e){return e?"Session replay · live":"Session replay (birdview timeline)"}])},78573,e=>{e.v(t=>Promise.all(["static/chunks/0jsh6juckq525.js"].map(t=>e.l(t))).then(()=>t(48939)))},47410,e=>{e.v(t=>Promise.all(["static/chunks/3oj29s_tuqbkm.js"].map(t=>e.l(t))).then(()=>t(53993)))},70162,e=>{e.v(t=>Promise.all(["static/chunks/3ghwe2mr2ig7e.js"].map(t=>e.l(t))).then(()=>t(19399)))},21269,e=>{e.v(t=>Promise.all(["static/chunks/1q-gcxr6o4bx2.js"].map(t=>e.l(t))).then(()=>t(39592)))},44113,e=>{e.v(t=>Promise.all(["static/chunks/3mcfjxvxo0o3e.js"].map(t=>e.l(t))).then(()=>t(76421)))},15867,e=>{e.v(t=>Promise.all(["static/chunks/28ud4w7xswcir.js"].map(t=>e.l(t))).then(()=>t(94452)))}]);
|