@uptimizr/dashboard 0.4.6 → 0.4.8

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 (388) hide show
  1. package/out/404.html +1 -1
  2. package/out/__next.__PAGE__.txt +19 -5
  3. package/out/__next._full.txt +10 -10
  4. package/out/__next._tree.txt +1 -1
  5. package/out/_next/static/chunks/{3cp5nmtwxq4gr.js → 0-6mdj5wxsfid.js} +1 -1
  6. package/out/_next/static/chunks/{2clevl_9ayd0x.js → 0-qthfqvm1jyj.js} +1 -1
  7. package/out/_next/static/chunks/01viyuclp2gm9.js +1 -0
  8. package/out/_next/static/chunks/02aym4t2hgo5c.js +1 -0
  9. package/out/_next/static/chunks/{1fervgvgv10r-.js → 02ic9b5ejugow.js} +1 -1
  10. package/out/_next/static/chunks/03p70i4c7qt0v.js +1 -0
  11. package/out/_next/static/chunks/{3zv5kyos9vtmm.js → 03pjr-ivdicng.js} +1 -1
  12. package/out/_next/static/chunks/041a06-lxipy5.js +1 -0
  13. package/out/_next/static/chunks/{3-yhe6rcsjh88.js → 06dzkwetqis-5.js} +1 -1
  14. package/out/_next/static/chunks/{2mjjo0yj-4ro4.js → 06kvanz5-fo52.js} +1 -1
  15. package/out/_next/static/chunks/{28i3wgvgn_at1.js → 07y8ke_iy59dn.js} +1 -1
  16. package/out/_next/static/chunks/09jukc-4jl735.js +1 -0
  17. package/out/_next/static/chunks/{0cmyc-uvk93kl.js → 09khmdgez3t0a.js} +74 -74
  18. package/out/_next/static/chunks/{2x-7kbwq8tl-o.js → 0_dca4876jshu.js} +196 -196
  19. package/out/_next/static/chunks/0axcgnl5qzr6e.js +1 -0
  20. package/out/_next/static/chunks/0ay4fjomijs3n.js +1 -0
  21. package/out/_next/static/chunks/0c7fy79wlccat.js +1 -0
  22. package/out/_next/static/chunks/0cqe4-l3imct3.js +1 -0
  23. package/out/_next/static/chunks/0cssvelju788j.js +1 -0
  24. package/out/_next/static/chunks/{2-_a-v1xeo5hb.js → 0ctain5xq2wsd.js} +116 -115
  25. package/out/_next/static/chunks/{3yk0hzfq5rcs6.js → 0df-dr3otg_4w.js} +1 -1
  26. package/out/_next/static/chunks/{0i9wa8hjd-5tc.js → 0endw997j7ao9.js} +1 -1
  27. package/out/_next/static/chunks/0ev_pbit1v_qg.js +1 -0
  28. package/out/_next/static/chunks/0eyw9oiwipywb.js +1 -0
  29. package/out/_next/static/chunks/0fkzbuo1tex4u.js +1 -0
  30. package/out/_next/static/chunks/0govas0u0t4w3.js +1 -0
  31. package/out/_next/static/chunks/{287hakn2ijupp.js → 0guzhnususp3-.js} +2 -2
  32. package/out/_next/static/chunks/0h7bq_ysu17q7.js +3 -0
  33. package/out/_next/static/chunks/0hneh_3xzlo28.js +1 -0
  34. package/out/_next/static/chunks/0iaqwme19z_0s.js +1 -0
  35. package/out/_next/static/chunks/0ibmar10xndpn.js +1 -0
  36. package/out/_next/static/chunks/0ii8mqoteppgh.js +11 -0
  37. package/out/_next/static/chunks/{3ioxfi3bvznhh.js → 0ip6v64di_l6x.js} +1 -1
  38. package/out/_next/static/chunks/{184pz6z3dflfm.js → 0ixymgjgz3grn.js} +20 -20
  39. package/out/_next/static/chunks/0kuah8g7lt5ox.js +1 -0
  40. package/out/_next/static/chunks/0l3k4j19vxm17.js +1 -0
  41. package/out/_next/static/chunks/0l6hg0ohwh9-m.js +1 -0
  42. package/out/_next/static/chunks/0m4um4ylhlfan.js +1 -0
  43. package/out/_next/static/chunks/0mj837d4h0ddq.js +1 -0
  44. package/out/_next/static/chunks/0nyn-f4905o91.js +1 -0
  45. package/out/_next/static/chunks/0og6i9rsgkuif.js +1 -0
  46. package/out/_next/static/chunks/0os1x-fxzgnxs.js +1 -0
  47. package/out/_next/static/chunks/0otnra7mp0hog.js +1 -0
  48. package/out/_next/static/chunks/{3p03l0z65c8vc.js → 0oyf2xzv8ofkk.js} +253 -253
  49. package/out/_next/static/chunks/0qvsy3gcqjm12.js +1 -0
  50. package/out/_next/static/chunks/{0yd4_xh476fjn.js → 0rl4ddh2vgxyl.js} +97 -97
  51. package/out/_next/static/chunks/0rwpttmsmqvn_.js +1 -0
  52. package/out/_next/static/chunks/0so3wjp9ch93y.js +1 -0
  53. package/out/_next/static/chunks/{36pz_ews7u0xb.js → 0te4g160_rb5d.js} +1 -1
  54. package/out/_next/static/chunks/0uby-zvu799ef.js +1 -0
  55. package/out/_next/static/chunks/{2kk_vvmr2xm3d.js → 0uvn0op2mlr2u.js} +12 -12
  56. package/out/_next/static/chunks/0vwj4hxjm0igv.js +1 -0
  57. package/out/_next/static/chunks/{0r-x702_jvhud.js → 0w7c30w07uct2.js} +12 -12
  58. package/out/_next/static/chunks/0wm38z3u2133a.js +1 -0
  59. package/out/_next/static/chunks/0y7yk5al7_p8q.js +4 -0
  60. package/out/_next/static/chunks/0ycr0gi6fn6bt.js +1 -0
  61. package/out/_next/static/chunks/0ywvahq9t0tki.js +1 -0
  62. package/out/_next/static/chunks/0zh6nslagkby-.js +1 -0
  63. package/out/_next/static/chunks/{3twr9ds68-9us.js → 0zo8xa0nej3ex.js} +1 -1
  64. package/out/_next/static/chunks/{1lu7rjfvxj8yj.js → 0zsir95gpf3xw.js} +1 -1
  65. package/out/_next/static/chunks/{1j4c0nvdo5q68.js → 0zu6ryyj0ig-j.js} +1 -1
  66. package/out/_next/static/chunks/{1bv-jzy_2jiqs.js → 1-jv8k10q_1uw.js} +1 -1
  67. package/out/_next/static/chunks/{0xx7_7y5jdlh4.js → 1-s5ioie9a94e.js} +1 -1
  68. package/out/_next/static/chunks/{27z7j17kcrty_.js → 1-yos1h0qws5e.js} +11 -11
  69. package/out/_next/static/chunks/10o7brc3x027r.js +1 -0
  70. package/out/_next/static/chunks/{2xe4bgir5l-9b.js → 10pae4gb9i929.js} +504 -504
  71. package/out/_next/static/chunks/13p93itm8a3ym.js +1 -0
  72. package/out/_next/static/chunks/{2mrkv0z2i74pv.js → 147s8i_lktp4_.js} +2 -2
  73. package/out/_next/static/chunks/{3nwaovnpiyrt8.js → 14tgo5xt_3j4w.js} +3 -3
  74. package/out/_next/static/chunks/1699hx-vlak0n.js +22 -0
  75. package/out/_next/static/chunks/{2b5nt7yn-pq3a.js → 16d6n9e77rqti.js} +1 -1
  76. package/out/_next/static/chunks/{3nr48h9zwum-3.js → 16f3d5dv83rsr.js} +1 -1
  77. package/out/_next/static/chunks/16i_tpwn_cmr-.js +1 -0
  78. package/out/_next/static/chunks/{2117sv2qzo6yq.js → 16rfr165nbha0.js} +1 -1
  79. package/out/_next/static/chunks/16sl51pvzo4tf.js +1 -0
  80. package/out/_next/static/chunks/1760s-32qpwgg.js +1 -0
  81. package/out/_next/static/chunks/{3rj-5v0j_2-_2.js → 18kq07c5xy_4g.js} +4 -4
  82. package/out/_next/static/chunks/{2wgh5i70bzelt.js → 190tbzt861ao3.js} +392 -392
  83. package/out/_next/static/chunks/19bhv6cupnnyj.js +1 -0
  84. package/out/_next/static/chunks/1_14pn2wwebxy.js +1 -0
  85. package/out/_next/static/chunks/{2_lw4d7t-xcqi.js → 1_kikmeubh0wq.js} +523 -522
  86. package/out/_next/static/chunks/1ay3z6agelsvz.js +1 -0
  87. package/out/_next/static/chunks/1b-fi3bfmpe31.js +1 -0
  88. package/out/_next/static/chunks/1bae3tqv53x9_.js +1 -0
  89. package/out/_next/static/chunks/{2s4fzgzkwjluu.js → 1bf421g4peccx.js} +2 -2
  90. package/out/_next/static/chunks/1bfony5qsc5tp.js +1 -0
  91. package/out/_next/static/chunks/{3vtmucpx25o7q.js → 1ddt0ot7kl8vq.js} +584 -584
  92. package/out/_next/static/chunks/1emz2vjkgck4z.js +1 -0
  93. package/out/_next/static/chunks/1eogzzw8i1wsg.js +1 -0
  94. package/out/_next/static/chunks/1g9p2h1-31q8o.js +1 -0
  95. package/out/_next/static/chunks/1gcz1k1v1woca.js +1 -0
  96. package/out/_next/static/chunks/1h8lyicgqhpxa.js +1 -0
  97. package/out/_next/static/chunks/{0e5dcxmkprebg.js → 1hot663akaepl.js} +1 -1
  98. package/out/_next/static/chunks/1i7pgl3ks5ye0.js +1 -0
  99. package/out/_next/static/chunks/{0xzamrecplwzw.js → 1i8sk_qgpdjhs.js} +1 -1
  100. package/out/_next/static/chunks/1kk3ct7pkpf3b.js +1 -0
  101. package/out/_next/static/chunks/1kq9o8del67le.js +1 -0
  102. package/out/_next/static/chunks/1l7tzyx2mumlq.js +1 -0
  103. package/out/_next/static/chunks/1n_uwed9o--go.js +1 -0
  104. package/out/_next/static/chunks/1o351eldttogn.js +1 -0
  105. package/out/_next/static/chunks/{1f07l3q77zat1.js → 1ogs4_aj84bfn.js} +1 -1
  106. package/out/_next/static/chunks/{3_dm45k0vk1aa.js → 1p206txlluipi.js} +565 -565
  107. package/out/_next/static/chunks/1p2bt1w845v6c.js +1 -0
  108. package/out/_next/static/chunks/1p3rgz4aef1gk.js +1 -0
  109. package/out/_next/static/chunks/{0ypejzd74ixbw.js → 1qcgdx9yl0gfx.js} +15 -15
  110. package/out/_next/static/chunks/1ql3mm2w5r-m8.js +1 -0
  111. package/out/_next/static/chunks/1qvcyuyshi3ll.js +53 -0
  112. package/out/_next/static/chunks/1r0yyg5a_0knc.js +1 -0
  113. package/out/_next/static/chunks/{374lzksboll-t.js → 1sa6qiidtcyk2.js} +1 -1
  114. package/out/_next/static/chunks/1t-9vrdrsi8le.js +1 -0
  115. package/out/_next/static/chunks/1t97zo0tlpbnz.js +1 -0
  116. package/out/_next/static/chunks/1te2tinzqnwck.js +1 -0
  117. package/out/_next/static/chunks/{3j3ol_d1vsdhx.js → 1trt-m2nrck0v.js} +1 -1
  118. package/out/_next/static/chunks/{3vu5y270muh-7.js → 1ty9jpwr3o_st.js} +1 -1
  119. package/out/_next/static/chunks/{415g3asdds1ac.js → 1u6w6veke8rze.js} +1 -1
  120. package/out/_next/static/chunks/{0-laj-bivzp4x.js → 1u900urmrbv73.js} +1 -1
  121. package/out/_next/static/chunks/{0o73w0cn5n_vl.js → 1vz2gd8k74lpi.js} +1 -1
  122. package/out/_next/static/chunks/1wkpl9bfb0wn7.js +1 -0
  123. package/out/_next/static/chunks/1wrly9a9c3teq.js +1 -0
  124. package/out/_next/static/chunks/1x0m05155yy4e.js +1 -0
  125. package/out/_next/static/chunks/{1my968s78he8g.js → 1xf1wfow43ekc.js} +15 -15
  126. package/out/_next/static/chunks/1y10o40v9odam.js +1 -0
  127. package/out/_next/static/chunks/{3_gfl66zf638s.js → 1y_zykt3fpen4.js} +901 -906
  128. package/out/_next/static/chunks/1ye6xtbm16pg4.js +1 -0
  129. package/out/_next/static/chunks/1z6_57k5h31u7.js +1 -0
  130. package/out/_next/static/chunks/1zboqft0h6mop.js +1 -0
  131. package/out/_next/static/chunks/1zr3c351x0ri5.js +1 -0
  132. package/out/_next/static/chunks/2-5p2lcedvrli.js +1 -0
  133. package/out/_next/static/chunks/{1_4hh3dfop93j.js → 206hxrq60f1_e.js} +1 -1
  134. package/out/_next/static/chunks/20r05k3-studj.js +1 -0
  135. package/out/_next/static/chunks/22gs24kj2du56.js +1 -0
  136. package/out/_next/static/chunks/22x5pd1gyp7sf.js +1 -0
  137. package/out/_next/static/chunks/{3qo7e6b73mfxq.js → 22z-2t_yp1jzs.js} +1 -1
  138. package/out/_next/static/chunks/{3d43gd91r06y6.js → 23hmfdw6z5zfy.js} +507 -505
  139. package/out/_next/static/chunks/23y1krqnc-8sm.js +1 -0
  140. package/out/_next/static/chunks/{0gk5rnci1hznh.js → 24tbkj1qkux88.js} +2 -2
  141. package/out/_next/static/chunks/{2-i29-jdbwww6.js → 26cmri51v7497.js} +111 -111
  142. package/out/_next/static/chunks/27jalbk9zu-2b.js +1 -0
  143. package/out/_next/static/chunks/285d2s9096ryc.js +1 -0
  144. package/out/_next/static/chunks/296ykep2nvppv.js +1 -0
  145. package/out/_next/static/chunks/29nehg5cal-ug.js +1 -0
  146. package/out/_next/static/chunks/2_a56_k3x7to6.js +1 -0
  147. package/out/_next/static/chunks/2a-0l6eb1blh3.js +4 -0
  148. package/out/_next/static/chunks/{2oacwtbslo90t.js → 2a31-txop1jzg.js} +360 -360
  149. package/out/_next/static/chunks/2bse5vll1o-x0.js +1 -0
  150. package/out/_next/static/chunks/2ct40spu9wfj7.js +1 -0
  151. package/out/_next/static/chunks/{2epukrz6paj9n.js → 2ept01b7t-e03.js} +1 -1
  152. package/out/_next/static/chunks/{22yht3s7c-xih.js → 2ey5dqelco_g5.js} +1 -1
  153. package/out/_next/static/chunks/2fd_009hw7y0m.js +1 -0
  154. package/out/_next/static/chunks/{2fspbfbxbswzd.js → 2ftz9kaxrsgxh.js} +1 -1
  155. package/out/_next/static/chunks/2gefdnozflr7p.js +1 -0
  156. package/out/_next/static/chunks/{2as_br1awqk6k.js → 2gs-u1n5uv7iz.js} +496 -496
  157. package/out/_next/static/chunks/{1a94whad0y57f.js → 2hizqql79u-54.js} +1 -1
  158. package/out/_next/static/chunks/2iqf2dpdg_vfl.js +1 -0
  159. package/out/_next/static/chunks/2j7z127s_ycjd.js +1 -0
  160. package/out/_next/static/chunks/2kax7uslfxdnx.js +31 -0
  161. package/out/_next/static/chunks/{2laz1v9fg2a2z.js → 2lh_w9rzy3vek.js} +1 -1
  162. package/out/_next/static/chunks/{3mmy9zsb7zo-m.js → 2ln1na26qwp-3.js} +23 -23
  163. package/out/_next/static/chunks/2n08l1q5o_27e.js +1 -0
  164. package/out/_next/static/chunks/2n7268gyd9z-6.js +1 -0
  165. package/out/_next/static/chunks/2nq9cgjmtqwvp.js +1 -0
  166. package/out/_next/static/chunks/{25brs445bjbik.js → 2oj8qc_pv14nk.js} +2 -2
  167. package/out/_next/static/chunks/2q24e72-olbe8.js +1 -0
  168. package/out/_next/static/chunks/2qc4hscs26cro.js +1 -0
  169. package/out/_next/static/chunks/2qe46redkqhfg.js +1 -0
  170. package/out/_next/static/chunks/2qmfe0mqw150h.js +1 -0
  171. package/out/_next/static/chunks/2qtc0nbl_521e.js +1 -0
  172. package/out/_next/static/chunks/2rofu6gu1xzuq.js +1 -0
  173. package/out/_next/static/chunks/2tdi94rkq739i.js +1 -0
  174. package/out/_next/static/chunks/2u_2sacqa9xa7.js +1 -0
  175. package/out/_next/static/chunks/2ujqz6088shm5.js +1 -0
  176. package/out/_next/static/chunks/{3my05px5mv_s5.js → 2urh9qafp3fiw.js} +235 -235
  177. package/out/_next/static/chunks/{23-y1f_zw56vo.js → 2v06n4z8wsmn9.js} +1 -1
  178. package/out/_next/static/chunks/2vp-5skbk1nfu.js +1 -0
  179. package/out/_next/static/chunks/2vu973j_n6cpx.js +1 -0
  180. package/out/_next/static/chunks/2wwra56rehfcj.js +1 -0
  181. package/out/_next/static/chunks/2xpwr97h2asal.js +1 -0
  182. package/out/_next/static/chunks/3000-0b8n9t_2.js +1 -0
  183. package/out/_next/static/chunks/{0q0i4pdyq66gb.js → 30t3203d7p2da.js} +1 -1
  184. package/out/_next/static/chunks/{3t4ys6th6gf2w.js → 31kto7-dxkt3z.js} +1 -1
  185. package/out/_next/static/chunks/{0j0a0wvmmghxj.js → 32oflcl79d8mu.js} +1 -1
  186. package/out/_next/static/chunks/32ovg81ae0l03.js +1 -0
  187. package/out/_next/static/chunks/{2c8rmxz151fxa.js → 331kthnvoma7n.js} +224 -224
  188. package/out/_next/static/chunks/337kn1mn34rc6.js +1 -0
  189. package/out/_next/static/chunks/{336ckqpboqmbn.js → 33xug8kf0-a1o.js} +1 -1
  190. package/out/_next/static/chunks/34dcb7_flbrvo.js +1 -0
  191. package/out/_next/static/chunks/34zotyeqrz_nq.js +1 -0
  192. package/out/_next/static/chunks/351wsmi75l8db.js +1 -0
  193. package/out/_next/static/chunks/36yv-ialtpx98.js +1 -0
  194. package/out/_next/static/chunks/37hwasxtee5e0.js +1 -0
  195. package/out/_next/static/chunks/37t0iclgxes05.js +1 -0
  196. package/out/_next/static/chunks/{1x0j78ohufpul.js → 37xnvnx1jxfaf.js} +1 -1
  197. package/out/_next/static/chunks/{29hkkj9raxte9.js → 38w74ixqt-9co.js} +77 -77
  198. package/out/_next/static/chunks/{0jap7l5-bskj4.js → 39t2x_9zd2rst.js} +12 -12
  199. package/out/_next/static/chunks/{38q0enmlg5q9o.js → 39v73timmzwny.js} +2 -2
  200. package/out/_next/static/chunks/{3puu2_-t0lln9.js → 3_xqc3658d8sw.js} +12 -12
  201. package/out/_next/static/chunks/3ba8eudvlczwe.js +1 -0
  202. package/out/_next/static/chunks/3buezhxqc8n6n.js +1 -0
  203. package/out/_next/static/chunks/3c5iwwj-fhbue.js +1 -0
  204. package/out/_next/static/chunks/{2kmmk9coo9_b0.js → 3d8ot2tw6yqfq.js} +143 -143
  205. package/out/_next/static/chunks/3dc057ffe7ij-.js +1 -0
  206. package/out/_next/static/chunks/3djnlzwj9869o.js +1 -0
  207. package/out/_next/static/chunks/{2_6b9lraq-exh.js → 3fuqxjjf8o1v9.js} +5 -5
  208. package/out/_next/static/chunks/{0j2ygtc_-bo3m.js → 3gt6rzg9qw-an.js} +1 -1
  209. package/out/_next/static/chunks/{0rykrf_vofbad.js → 3h_05w5j8x538.js} +1 -1
  210. package/out/_next/static/chunks/{3txu-i5qn183a.js → 3hkhd1_k8xohv.js} +321 -321
  211. package/out/_next/static/chunks/{2h07np207nlx7.js → 3ijcc5tfisfnj.js} +1 -1
  212. package/out/_next/static/chunks/3j0dbpd9zop3p.js +1 -0
  213. package/out/_next/static/chunks/{14e4k-718qadd.js → 3ju83xk-ca7ma.js} +163 -168
  214. package/out/_next/static/chunks/3jxhl4apmhbm1.js +13 -0
  215. package/out/_next/static/chunks/{1h1gixjbjkbsl.js → 3la99oz_0p0r6.js} +5 -5
  216. package/out/_next/static/chunks/{1mt4cnd_d6jvf.js → 3n1b34fd5fdrh.js} +1 -1
  217. package/out/_next/static/chunks/3nq_hq4x3rn3r.js +1 -0
  218. package/out/_next/static/chunks/3pgb1kkqrdl9t.js +1 -0
  219. package/out/_next/static/chunks/3pik_-jj-zkfl.js +1 -0
  220. package/out/_next/static/chunks/{1zmx71cvc6ksk.js → 3q38kdbzd2nbd.js} +1 -1
  221. package/out/_next/static/chunks/3q5zl4ks17au2.js +1 -0
  222. package/out/_next/static/chunks/{1t2g1v0ubcsam.js → 3qr10445lte-n.js} +1 -1
  223. package/out/_next/static/chunks/3r-8bnguvxsyo.js +1 -0
  224. package/out/_next/static/chunks/3sg56j8boe-3o.js +1 -0
  225. package/out/_next/static/chunks/3u7zj1-jdg781.js +1 -0
  226. package/out/_next/static/chunks/{0o0qtv35dqv3i.js → 3wj5dmf6cywz8.js} +239 -239
  227. package/out/_next/static/chunks/{2iu0_3cx-ny74.js → 3wr_oijfsq8lr.js} +11 -11
  228. package/out/_next/static/chunks/3xu0dh1ikzwj2.js +1 -0
  229. package/out/_next/static/chunks/{0vzo-8t8c26k9.js → 3y5tpixt23-fl.js} +1 -1
  230. package/out/_next/static/chunks/40gjf-_jt8upu.js +5 -0
  231. package/out/_next/static/chunks/41f12o_5lf-i9.js +1 -0
  232. package/out/_next/static/chunks/42ma8lqduohlc.js +1 -0
  233. package/out/_next/static/chunks/43usshq2nc125.js +1 -0
  234. package/out/_next/static/chunks/{161yjxmdz9obc.js → 44bl4ufopbmyh.js} +1 -1
  235. package/out/_next/static/chunks/44iutzkw9r21x.js +1 -0
  236. package/out/_next/static/chunks/turbopack-1xrxa3noq196-.js +1 -0
  237. package/out/_not-found/__next._full.txt +11 -11
  238. package/out/_not-found/__next._not-found.__PAGE__.txt +19 -2
  239. package/out/_not-found/__next._tree.txt +1 -1
  240. package/out/_not-found.html +1 -1
  241. package/out/_not-found.txt +11 -11
  242. package/out/index.html +1 -1
  243. package/out/index.txt +10 -10
  244. package/package.json +11 -11
  245. package/out/__next._head.txt +0 -6
  246. package/out/__next._index.txt +0 -5
  247. package/out/_next/static/chunks/0-k4hp87gwues.js +0 -1
  248. package/out/_next/static/chunks/04zj0yf1qhk1o.js +0 -1
  249. package/out/_next/static/chunks/06fbalmyyfpsy.js +0 -1
  250. package/out/_next/static/chunks/07hgbbqksqd1g.js +0 -1
  251. package/out/_next/static/chunks/08ou2nvy48e0u.js +0 -1
  252. package/out/_next/static/chunks/08y5-irjbsiy8.js +0 -1
  253. package/out/_next/static/chunks/0_jrfk2u1u3fi.js +0 -1
  254. package/out/_next/static/chunks/0a475u_q5i_dd.js +0 -62
  255. package/out/_next/static/chunks/0aad2r4s4wl1x.js +0 -5
  256. package/out/_next/static/chunks/0d9pxx1w_zqr9.js +0 -1
  257. package/out/_next/static/chunks/0gnjtwq-474uc.js +0 -1
  258. package/out/_next/static/chunks/0gsh_d0m5xss1.js +0 -1
  259. package/out/_next/static/chunks/0ibzpjo0h731v.js +0 -1
  260. package/out/_next/static/chunks/0j_3k5qhv_mdx.js +0 -1
  261. package/out/_next/static/chunks/0jis2w2mfx062.js +0 -1
  262. package/out/_next/static/chunks/0jjvp2slpf7d6.js +0 -1
  263. package/out/_next/static/chunks/0ko10wo4rc9-b.js +0 -1
  264. package/out/_next/static/chunks/0lqmvz6k2h_of.js +0 -1
  265. package/out/_next/static/chunks/0lwjmr8efrlbt.js +0 -17
  266. package/out/_next/static/chunks/0noxyupihh8dk.js +0 -1
  267. package/out/_next/static/chunks/0o1vph7x9shzu.js +0 -1
  268. package/out/_next/static/chunks/0p6phe9kjlxn8.js +0 -1
  269. package/out/_next/static/chunks/0ptxb9dcwsw3o.js +0 -1
  270. package/out/_next/static/chunks/0q8pt8fd0ma30.js +0 -1
  271. package/out/_next/static/chunks/0qqx9aoz8l5d2.js +0 -1
  272. package/out/_next/static/chunks/0tsk32q-88t_7.js +0 -1
  273. package/out/_next/static/chunks/0u7577db_ivyr.js +0 -1
  274. package/out/_next/static/chunks/0unnrt0un064x.js +0 -1
  275. package/out/_next/static/chunks/0uygtr4mo3h0v.js +0 -1
  276. package/out/_next/static/chunks/0vf3facit951s.js +0 -1
  277. package/out/_next/static/chunks/0xyija62b6txc.js +0 -1
  278. package/out/_next/static/chunks/0zeb37703zcz3.js +0 -1
  279. package/out/_next/static/chunks/0zu5ato7-1-q9.js +0 -1
  280. package/out/_next/static/chunks/0zydv7y47dxgh.js +0 -1
  281. package/out/_next/static/chunks/103x4jwovb6d-.js +0 -1
  282. package/out/_next/static/chunks/107wfq84g9-kn.js +0 -1
  283. package/out/_next/static/chunks/10afagk8yn__n.js +0 -1
  284. package/out/_next/static/chunks/12ory_c78yl31.js +0 -1
  285. package/out/_next/static/chunks/133dqp8_7_yo6.js +0 -1
  286. package/out/_next/static/chunks/1365lgwdd4vuo.js +0 -1
  287. package/out/_next/static/chunks/146ou-ohb_qhs.js +0 -1
  288. package/out/_next/static/chunks/14orr68xgdykd.js +0 -1
  289. package/out/_next/static/chunks/15qfoj-vl9thu.js +0 -1
  290. package/out/_next/static/chunks/166yqx3_qvbpy.js +0 -1
  291. package/out/_next/static/chunks/16gwjao676ieb.js +0 -1
  292. package/out/_next/static/chunks/16rmmzhy2p7bw.js +0 -1
  293. package/out/_next/static/chunks/17_jjyx4jz9dd.js +0 -1
  294. package/out/_next/static/chunks/18h9ugdz6igdb.js +0 -1
  295. package/out/_next/static/chunks/19d8n5t7ka2fb.js +0 -1
  296. package/out/_next/static/chunks/1_rbzw3n4fk0g.js +0 -1
  297. package/out/_next/static/chunks/1aa9g197l4twm.js +0 -1
  298. package/out/_next/static/chunks/1bq0fcnt1wy86.js +0 -1
  299. package/out/_next/static/chunks/1c6mho7e0enta.js +0 -1
  300. package/out/_next/static/chunks/1dfaheve77dhi.js +0 -1
  301. package/out/_next/static/chunks/1dgf112ehnhm1.js +0 -1
  302. package/out/_next/static/chunks/1eirucr9s6-h5.js +0 -1
  303. package/out/_next/static/chunks/1fsof7un7igrn.js +0 -1
  304. package/out/_next/static/chunks/1gvu5a6ffbs7l.js +0 -1
  305. package/out/_next/static/chunks/1iel4pzhhh-c3.js +0 -1
  306. package/out/_next/static/chunks/1iojfx3-g4_n9.js +0 -1
  307. package/out/_next/static/chunks/1j4jt5q7px8sy.js +0 -1
  308. package/out/_next/static/chunks/1jjw9hxgi2vzi.js +0 -1
  309. package/out/_next/static/chunks/1k_8olnprvi8r.js +0 -1
  310. package/out/_next/static/chunks/1l0rt7d4m-xdk.js +0 -5
  311. package/out/_next/static/chunks/1s0dpdqy480hg.js +0 -1
  312. package/out/_next/static/chunks/1t-yolk97lmot.js +0 -12
  313. package/out/_next/static/chunks/1tbes2sv-qzcx.js +0 -1
  314. package/out/_next/static/chunks/1upy8a5cb75kt.js +0 -1
  315. package/out/_next/static/chunks/1xed71f608m4b.js +0 -1
  316. package/out/_next/static/chunks/1z790xxb46gxy.js +0 -1
  317. package/out/_next/static/chunks/219n3q-_eengm.js +0 -1
  318. package/out/_next/static/chunks/21wo3vdr_uby8.js +0 -1
  319. package/out/_next/static/chunks/25gep78-izw79.js +0 -4
  320. package/out/_next/static/chunks/26i7dn31afdtm.js +0 -1
  321. package/out/_next/static/chunks/27hbplu797elx.js +0 -1
  322. package/out/_next/static/chunks/2992eiy52nazj.js +0 -1
  323. package/out/_next/static/chunks/29_n5j-hg_gsa.js +0 -1
  324. package/out/_next/static/chunks/29bxq-67oazfg.js +0 -1
  325. package/out/_next/static/chunks/29ings58w7kp1.js +0 -1
  326. package/out/_next/static/chunks/2_n0cpkdsjzli.js +0 -1
  327. package/out/_next/static/chunks/2a3iy701j4r_y.js +0 -1
  328. package/out/_next/static/chunks/2al9dh3_1ixhv.js +0 -1
  329. package/out/_next/static/chunks/2awr1c_vfsutb.js +0 -1
  330. package/out/_next/static/chunks/2bxe3kjr17tdp.js +0 -1
  331. package/out/_next/static/chunks/2dvbzar93ooc-.js +0 -1
  332. package/out/_next/static/chunks/2e-vp0e11g9ew.js +0 -1
  333. package/out/_next/static/chunks/2exj9-0p6n9x-.js +0 -1
  334. package/out/_next/static/chunks/2gf8l6hbmt7v3.js +0 -1
  335. package/out/_next/static/chunks/2h9i_adbqaxs4.js +0 -1
  336. package/out/_next/static/chunks/2jio3sio-_43z.js +0 -1
  337. package/out/_next/static/chunks/2neieeo9g2u56.js +0 -1
  338. package/out/_next/static/chunks/2pb_uosb-aa8x.js +0 -1
  339. package/out/_next/static/chunks/2qu-gpm3ux1l6.js +0 -1
  340. package/out/_next/static/chunks/2rsi6v7qmqx2b.js +0 -1
  341. package/out/_next/static/chunks/2tdvuc-27khif.js +0 -1
  342. package/out/_next/static/chunks/2trolrgd7neax.js +0 -1
  343. package/out/_next/static/chunks/2uyuafmoe5wi0.js +0 -3
  344. package/out/_next/static/chunks/2w2e0pxgs-n8f.js +0 -1
  345. package/out/_next/static/chunks/2xujlsx3stqig.js +0 -1
  346. package/out/_next/static/chunks/30y71dxdpv52d.js +0 -1
  347. package/out/_next/static/chunks/32c-e_v8_2xkf.js +0 -1
  348. package/out/_next/static/chunks/32oj0iudhp8bm.js +0 -1
  349. package/out/_next/static/chunks/33p9du6y9eegg.js +0 -1
  350. package/out/_next/static/chunks/38om-j0h0rryk.js +0 -1
  351. package/out/_next/static/chunks/39cou9lia_g7l.js +0 -1
  352. package/out/_next/static/chunks/39pkya0_bvcaj.js +0 -1
  353. package/out/_next/static/chunks/39rhmj_32ujyj.js +0 -1
  354. package/out/_next/static/chunks/3_1zzmx92j9c0.js +0 -1
  355. package/out/_next/static/chunks/3_earszshuz4n.js +0 -1
  356. package/out/_next/static/chunks/3ap_uxc8lx7ni.js +0 -1
  357. package/out/_next/static/chunks/3b6na8zrex8jo.js +0 -1
  358. package/out/_next/static/chunks/3c0cxt72vilyz.js +0 -1
  359. package/out/_next/static/chunks/3g78x0pdaoi_4.js +0 -1
  360. package/out/_next/static/chunks/3gjvl1p-tugfe.js +0 -4
  361. package/out/_next/static/chunks/3i8iro1gas1vx.js +0 -1
  362. package/out/_next/static/chunks/3kpqfqr99vo7z.js +0 -1
  363. package/out/_next/static/chunks/3lladf_wemm-2.js +0 -1
  364. package/out/_next/static/chunks/3n62hbywoknop.js +0 -1
  365. package/out/_next/static/chunks/3o_dmzpahx-5g.js +0 -1
  366. package/out/_next/static/chunks/3r7v7un976sn7.js +0 -1
  367. package/out/_next/static/chunks/3rl_nhqwew40w.js +0 -1
  368. package/out/_next/static/chunks/3s7hqij6xp_4e.js +0 -1
  369. package/out/_next/static/chunks/3si3migsmvz9o.js +0 -1
  370. package/out/_next/static/chunks/3uarw1i1ij1er.js +0 -1
  371. package/out/_next/static/chunks/3un-w6wutw1qn.js +0 -1
  372. package/out/_next/static/chunks/3v8kgnjk27wbe.js +0 -1
  373. package/out/_next/static/chunks/3we1khqfexh3x.js +0 -1
  374. package/out/_next/static/chunks/3z35loj4i-id4.js +0 -1
  375. package/out/_next/static/chunks/42lqt7ig40wk5.js +0 -1
  376. package/out/_next/static/chunks/42s6ghsurq5q7.js +0 -1
  377. package/out/_next/static/chunks/42yctcfi2rfwr.js +0 -1
  378. package/out/_next/static/chunks/43_fau1gg69eo.js +0 -1
  379. package/out/_next/static/chunks/43ywrdzg_7af8.js +0 -31
  380. package/out/_next/static/chunks/44m1ijc5cv80x.js +0 -1
  381. package/out/_next/static/chunks/453_bg0lgesmp.js +0 -1
  382. package/out/_next/static/chunks/turbopack-1s36ieuku1ds3.js +0 -1
  383. package/out/_not-found/__next._head.txt +0 -6
  384. package/out/_not-found/__next._index.txt +0 -5
  385. package/out/_not-found/__next._not-found.txt +0 -5
  386. /package/out/_next/static/{5UjNvd7WCk97iC2cSmEGH → 4r0L0ZMJeBwOJCVDsvvZ4}/_buildManifest.js +0 -0
  387. /package/out/_next/static/{5UjNvd7WCk97iC2cSmEGH → 4r0L0ZMJeBwOJCVDsvvZ4}/_clientMiddlewareManifest.js +0 -0
  388. /package/out/_next/static/{5UjNvd7WCk97iC2cSmEGH → 4r0L0ZMJeBwOJCVDsvvZ4}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,66410,e=>{"use strict";var t=e.i(60699),s=e.i(65678),i=e.i(68282);class r extends t.FlowGraphBlock{constructor(e){super(e),this.userVariables=this.registerDataOutput("userVariables",s.RichTypeAny),this.executionId=this.registerDataOutput("executionId",s.RichTypeNumber)}_updateOutputs(e){this.userVariables.setValue(e.userVariables,e),this.executionId.setValue(e.executionId,e)}serialize(e){super.serialize(e)}getClassName(){return"FlowGraphContextBlock"}}let a=!1;e.s(["FlowGraphContextBlock",0,r,"RegisterFlowGraphContextBlock",0,function(){a||(a=!0,(0,i.RegisterClass)("FlowGraphContextBlock",r))}])}]);
@@ -1,4 +1,4 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,3954,e=>{"use strict";var r=e.i(47150);let o="helperFunctions",a=`const float PI=3.1415926535897932384626433832795;const float TWO_PI=6.283185307179586;const float HALF_PI=1.5707963267948966;const float RECIPROCAL_PI=0.3183098861837907;const float RECIPROCAL_PI2=0.15915494309189535;const float RECIPROCAL_PI4=0.07957747154594767;const float HALF_MIN=5.96046448e-08;
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,31660,e=>{"use strict";var r=e.i(25044);let o="helperFunctions",a=`const float PI=3.1415926535897932384626433832795;const float TWO_PI=6.283185307179586;const float HALF_PI=1.5707963267948966;const float RECIPROCAL_PI=0.3183098861837907;const float RECIPROCAL_PI2=0.15915494309189535;const float RECIPROCAL_PI4=0.07957747154594767;const float HALF_MIN=5.96046448e-08;
2
2
  const float LinearEncodePowerApprox=2.2;const float GammaEncodePowerApprox=1.0/LinearEncodePowerApprox;const vec3 LuminanceEncodeApprox=vec3(0.2126,0.7152,0.0722);const float Epsilon=0.0000001;
3
3
  #define saturate(x) clamp(x,0.0,1.0)
4
4
  #define absEps(x) abs(x)+Epsilon
@@ -116,7 +116,7 @@ float uint2float(uint i) {return uintBitsToFloat(0x3F800000u | (i>>9u))-1.0;}
116
116
  vec2 plasticSequence(const uint rstate) {return vec2(uint2float(rstate*3242174889u),
117
117
  uint2float(rstate*2447445414u));}
118
118
  #endif
119
- `;r.ShaderStore.IncludesShadersStore[o]||(r.ShaderStore.IncludesShadersStore[o]=a),e.s(["helperFunctions",0,{name:o,shader:a}])},3449,e=>{"use strict";var r=e.i(47150),o=e.i(3954);let a="rgbdDecodePixelShader",t=`varying vec2 vUV;uniform sampler2D textureSampler;
119
+ `;r.ShaderStore.IncludesShadersStore[o]||(r.ShaderStore.IncludesShadersStore[o]=a),e.s(["helperFunctions",0,{name:o,shader:a}])},44857,e=>{"use strict";var r=e.i(25044),o=e.i(31660);let a="rgbdDecodePixelShader",t=`varying vec2 vUV;uniform sampler2D textureSampler;
120
120
  #include<helperFunctions>
121
121
  #define CUSTOM_FRAGMENT_DEFINITIONS
122
122
  void main(void)
@@ -1,106 +1,4 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,55880,e=>{"use strict";var t=e.i(47150);let a="helperFunctions",r=`const PI: f32=3.1415926535897932384626433832795;const TWO_PI: f32=6.283185307179586;const HALF_PI: f32=1.5707963267948966;const RECIPROCAL_PI: f32=0.3183098861837907;const RECIPROCAL_PI2: f32=0.15915494309189535;const RECIPROCAL_PI4: f32=0.07957747154594767;const HALF_MIN: f32=5.96046448e-08;
2
- const LinearEncodePowerApprox: f32=2.2;const GammaEncodePowerApprox: f32=1.0/LinearEncodePowerApprox;const LuminanceEncodeApprox: vec3f=vec3f(0.2126,0.7152,0.0722);const Epsilon:f32=0.0000001;fn square(x: f32)->f32 {return x*x;}
3
- fn saturate(x: f32)->f32 {return clamp(x,0.0,1.0);}
4
- fn saturateVec3(x: vec3f)->vec3f {return clamp(x,vec3f(),vec3f(1.0));}
5
- fn saturateEps(x: f32)->f32 {return clamp(x,Epsilon,1.0);}
6
- fn maxEps(x: f32)->f32 {return max(x,Epsilon);}
7
- fn maxEpsVec3(x: vec3f)->vec3f {return max(x,vec3f(Epsilon));}
8
- fn absEps(x: f32)->f32 {return abs(x)+Epsilon;}
9
- fn transposeMat3(inMatrix: mat3x3f)->mat3x3f {let i0: vec3f=inMatrix[0];let i1: vec3f=inMatrix[1];let i2: vec3f=inMatrix[2];let outMatrix:mat3x3f=mat3x3f(
10
- vec3(i0.x,i1.x,i2.x),
11
- vec3(i0.y,i1.y,i2.y),
12
- vec3(i0.z,i1.z,i2.z)
13
- );return outMatrix;}
14
- fn inverseMat3(inMatrix: mat3x3f)->mat3x3f {let a00: f32=inMatrix[0][0];let a01: f32=inMatrix[0][1];let a02: f32=inMatrix[0][2];let a10: f32=inMatrix[1][0];let a11: f32=inMatrix[1][1];let a12: f32=inMatrix[1][2];let a20: f32=inMatrix[2][0];let a21: f32=inMatrix[2][1];let a22: f32=inMatrix[2][2];let b01: f32=a22*a11-a12*a21;let b11: f32=-a22*a10+a12*a20;let b21: f32=a21*a10-a11*a20;let det: f32=a00*b01+a01*b11+a02*b21;return mat3x3f(b01/det,(-a22*a01+a02*a21)/det,(a12*a01-a02*a11)/det,
15
- b11/det,(a22*a00-a02*a20)/det,(-a12*a00+a02*a10)/det,
16
- b21/det,(-a21*a00+a01*a20)/det,(a11*a00-a01*a10)/det);}
17
- #if USE_EXACT_SRGB_CONVERSIONS
18
- fn toLinearSpaceExact(color: vec3f)->vec3f
19
- {let nearZeroSection: vec3f=0.0773993808*color;let remainingSection: vec3f=pow(0.947867299*(color+vec3f(0.055)),vec3f(2.4));return select(remainingSection,nearZeroSection,color<=vec3f(0.04045));}
20
- fn toGammaSpaceExact(color: vec3f)->vec3f
21
- {let nearZeroSection: vec3f=12.92*color;let remainingSection: vec3f=1.055*pow(color,vec3f(0.41666))-vec3f(0.055);return select(remainingSection,nearZeroSection,color<=vec3f(0.0031308));}
22
- #endif
23
- fn toLinearSpace(color: f32)->f32
24
- {
25
- #if USE_EXACT_SRGB_CONVERSIONS
26
- var nearZeroSection=0.0773993808*color;var remainingSection=pow(0.947867299*(color+0.055),2.4);return select(remainingSection,nearZeroSection,color<=0.04045);
27
- #else
28
- return pow(color,LinearEncodePowerApprox);
29
- #endif
30
- }
31
- fn toLinearSpaceVec3(color: vec3f)->vec3f
32
- {
33
- #if USE_EXACT_SRGB_CONVERSIONS
34
- return toLinearSpaceExact(color);
35
- #else
36
- return pow(color,vec3f(LinearEncodePowerApprox));
37
- #endif
38
- }
39
- fn toLinearSpaceVec4(color: vec4<f32>)->vec4<f32>
40
- {
41
- #if USE_EXACT_SRGB_CONVERSIONS
42
- return vec4f(toLinearSpaceExact(color.rgb),color.a);
43
- #else
44
- return vec4f(pow(color.rgb,vec3f(LinearEncodePowerApprox)),color.a);
45
- #endif
46
- }
47
- fn toGammaSpace(color: vec4<f32>)->vec4<f32>
48
- {
49
- #if USE_EXACT_SRGB_CONVERSIONS
50
- return vec4<f32>(toGammaSpaceExact(color.rgb),color.a);
51
- #else
52
- return vec4<f32>(pow(color.rgb,vec3f(GammaEncodePowerApprox)),color.a);
53
- #endif
54
- }
55
- fn toGammaSpaceVec3(color: vec3f)->vec3f
56
- {
57
- #if USE_EXACT_SRGB_CONVERSIONS
58
- return toGammaSpaceExact(color);
59
- #else
60
- return pow(color,vec3f(GammaEncodePowerApprox));
61
- #endif
62
- }
63
- fn squareVec3(value: vec3f)->vec3f
64
- {return value*value;}
65
- fn pow5(value: f32)->f32 {let sq: f32=value*value;return sq*sq*value;}
66
- fn double_refract(I: vec3f,N: vec3f,eta: f32)->vec3f {let Tfront: vec3f=refract(I,N,1.0/eta);let Nback: vec3f=normalize(reflect(N,Tfront));return refract(Tfront,-Nback,eta);}
67
- fn getLuminanceUnclamped(color: vec3f)->f32
68
- {return dot(color,LuminanceEncodeApprox);}
69
- fn getLuminance(color: vec3f)->f32
70
- {return saturate(getLuminanceUnclamped(color));}
71
- fn getRand(seed: vec2<f32>)->f32 {return fract(sin(dot(seed.xy ,vec2<f32>(12.9898,78.233)))*43758.5453);}
72
- fn dither(seed: vec2<f32>,varianceAmount: f32)->f32 {let rand: f32=getRand(seed);let normVariance: f32=varianceAmount/255.0;let dither: f32=mix(-normVariance,normVariance,rand);return dither;}
73
- const rgbdMaxRange: f32=255.0;fn toRGBD(color: vec3f)->vec4<f32> {let maxRGB: f32=max(max(color.r,max(color.g,color.b)),Epsilon);var D: f32 =max(rgbdMaxRange/maxRGB,1.);D =clamp(floor(D)/255.0,0.,1.);var rgb: vec3f =color.rgb*D;rgb=toGammaSpaceVec3(rgb);return vec4<f32>(saturateVec3(rgb),D);}
74
- fn fromRGBD(rgbd: vec4<f32>)->vec3f {let rgb=toLinearSpaceVec3(rgbd.rgb);return rgb/rgbd.a;}
75
- fn parallaxCorrectNormal(vertexPos: vec3f,origVec: vec3f,cubeSize: vec3f,cubePos: vec3f)->vec3f {let invOrigVec: vec3f=vec3f(1.)/origVec;let halfSize: vec3f=cubeSize*0.5;let intersecAtMaxPlane: vec3f=(cubePos+halfSize-vertexPos)*invOrigVec;let intersecAtMinPlane: vec3f=(cubePos-halfSize-vertexPos)*invOrigVec;let largestIntersec: vec3f=max(intersecAtMaxPlane,intersecAtMinPlane);let distance: f32=min(min(largestIntersec.x,largestIntersec.y),largestIntersec.z);let intersectPositionWS: vec3f=vertexPos+origVec*distance;return intersectPositionWS-cubePos;}
76
- fn equirectangularToCubemapDirection(uv : vec2f)->vec3f {var longitude : f32=uv.x*TWO_PI-PI;var latitude : f32=HALF_PI-uv.y*PI;var direction : vec3f;direction.x=cos(latitude)*sin(longitude);direction.y=sin(latitude);direction.z=cos(latitude)*cos(longitude);return direction;}
77
- fn sqrtClamped(value: f32)->f32 {return sqrt(max(value,0.));}
78
- fn avg(value: vec3f)->f32 {return dot(value,vec3f(0.333333333));}
79
- fn singleScatterToMultiScatterAlbedo(rho_ss: vec3f)->vec3f {let s: vec3f=sqrt(max(vec3f(1.0)-rho_ss,vec3f(0.0)));return (vec3f(1.0)-s)*(vec3f(1.0)-vec3f(0.139)*s)/(vec3f(1.0)+vec3f(1.17)*s);}
80
- fn multiScatterToSingleScatterAlbedo(rho_ms: vec3f)->vec3f {let s: vec3f=4.09712f+4.20863f*rho_ms-sqrt(9.59217f+41.6808f*rho_ms+17.7126f*rho_ms*rho_ms);return 1.0f-s*s;}
81
- fn multiScatterToSingleScatterAlbedoWithAniso(rho_ms: vec3f,aniso: f32)->vec3f {let s: vec3f=4.09712+4.20863f*rho_ms-sqrt(9.59217f+41.6808f*rho_ms+17.7126f*rho_ms*rho_ms);return (vec3f(1.0f)-s*s)/maxEpsVec3(vec3f(1.0f)-vec3f(aniso)*s*s);}
82
- fn min3(v: vec3f)->f32 {return min(v.x,min(v.y,v.z));}
83
- fn max3(v: vec3f)->f32 {return max(v.x,max(v.y,v.z));}
84
- fn uint2float(i: u32)->f32 {return bitcast<f32>(0x3F800000u | (i>>9u))-1.0;}
85
- fn plasticSequence(rstate: u32)->vec2f {return vec2f(uint2float(rstate*3242174889u),
86
- uint2float(rstate*2447445414u));}
87
- `;t.ShaderStore.IncludesShadersStoreWGSL[a]||(t.ShaderStore.IncludesShadersStoreWGSL[a]=r),e.s(["helperFunctionsWGSL",0,{name:a,shader:r}])},73317,e=>{"use strict";var t=e.i(47150);let a="logDepthDeclaration",r=`#ifdef LOGARITHMICDEPTH
88
- uniform logarithmicDepthConstant: f32;varying vFragmentDepth: f32;
89
- #endif
90
- `;t.ShaderStore.IncludesShadersStoreWGSL[a]||(t.ShaderStore.IncludesShadersStoreWGSL[a]=r),e.s(["logDepthDeclarationWGSL",0,{name:a,shader:r}])},97793,e=>{"use strict";var t=e.i(47150);let a="sceneUboDeclaration",r=`struct Scene {viewProjection : mat4x4<f32>,
91
- #ifdef MULTIVIEW
92
- viewProjectionR : mat4x4<f32>,
93
- #endif
94
- view : mat4x4<f32>,
95
- projection : mat4x4<f32>,
96
- vEyePosition : vec4<f32>,
97
- inverseProjection : mat4x4<f32>,};
98
- #define SCENE_UBO
99
- var<uniform> scene : Scene;
100
- `;t.ShaderStore.IncludesShadersStoreWGSL[a]||(t.ShaderStore.IncludesShadersStoreWGSL[a]=r),e.s(["sceneUboDeclarationWGSL",0,{name:a,shader:r}])},36113,e=>{"use strict";var t=e.i(47150);let a="meshUboDeclaration",r=`struct Mesh {world : mat4x4<f32>,
101
- visibility : f32,};var<uniform> mesh : Mesh;
102
- #define WORLD_UBO
103
- `;t.ShaderStore.IncludesShadersStoreWGSL[a]||(t.ShaderStore.IncludesShadersStoreWGSL[a]=r),e.s(["meshUboDeclarationWGSL",0,{name:a,shader:r}])},63593,4534,e=>{"use strict";var t=e.i(47150);let a="clipPlaneVertexDeclaration",r=`#ifdef CLIPPLANE
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,67667,15345,e=>{"use strict";var t=e.i(25044);let a="clipPlaneVertexDeclaration",r=`#ifdef CLIPPLANE
104
2
  uniform vClipPlane: vec4<f32>;varying fClipDistance: f32;
105
3
  #endif
106
4
  #ifdef CLIPPLANE2
@@ -118,7 +16,7 @@ uniform vClipPlane5: vec4<f32>;varying fClipDistance5: f32;
118
16
  #ifdef CLIPPLANE6
119
17
  uniform vClipPlane6: vec4<f32>;varying fClipDistance6: f32;
120
18
  #endif
121
- `;t.ShaderStore.IncludesShadersStoreWGSL[a]||(t.ShaderStore.IncludesShadersStoreWGSL[a]=r),e.s(["clipPlaneVertexDeclarationWGSL",0,{name:a,shader:r}],63593);let s="clipPlaneVertex",o=`#ifdef CLIPPLANE
19
+ `;t.ShaderStore.IncludesShadersStoreWGSL[a]||(t.ShaderStore.IncludesShadersStoreWGSL[a]=r),e.s(["clipPlaneVertexDeclarationWGSL",0,{name:a,shader:r}],67667);let s="clipPlaneVertex",o=`#ifdef CLIPPLANE
122
20
  vertexOutputs.fClipDistance=dot(worldPos,uniforms.vClipPlane);
123
21
  #endif
124
22
  #ifdef CLIPPLANE2
@@ -136,20 +34,17 @@ vertexOutputs.fClipDistance5=dot(worldPos,uniforms.vClipPlane5);
136
34
  #ifdef CLIPPLANE6
137
35
  vertexOutputs.fClipDistance6=dot(worldPos,uniforms.vClipPlane6);
138
36
  #endif
139
- `;t.ShaderStore.IncludesShadersStoreWGSL[s]||(t.ShaderStore.IncludesShadersStoreWGSL[s]=o),e.s(["clipPlaneVertexWGSL",0,{name:s,shader:o}],4534)},53318,80849,e=>{"use strict";var t=e.i(47150);let a="fogVertexDeclaration",r=`#ifdef FOG
37
+ `;t.ShaderStore.IncludesShadersStoreWGSL[s]||(t.ShaderStore.IncludesShadersStoreWGSL[s]=o),e.s(["clipPlaneVertexWGSL",0,{name:s,shader:o}],15345)},3828,45320,e=>{"use strict";var t=e.i(25044);let a="fogVertexDeclaration",r=`#ifdef FOG
140
38
  varying vFogDistance: vec3f;
141
39
  #endif
142
- `;t.ShaderStore.IncludesShadersStoreWGSL[a]||(t.ShaderStore.IncludesShadersStoreWGSL[a]=r),e.s(["fogVertexDeclarationWGSL",0,{name:a,shader:r}],53318);let s="fogVertex",o=`#ifdef FOG
40
+ `;t.ShaderStore.IncludesShadersStoreWGSL[a]||(t.ShaderStore.IncludesShadersStoreWGSL[a]=r),e.s(["fogVertexDeclarationWGSL",0,{name:a,shader:r}],3828);let s="fogVertex",o=`#ifdef FOG
143
41
  #ifdef SCENE_UBO
144
42
  vertexOutputs.vFogDistance=(scene.view*worldPos).xyz;
145
43
  #else
146
44
  vertexOutputs.vFogDistance=(uniforms.view*worldPos).xyz;
147
45
  #endif
148
46
  #endif
149
- `;t.ShaderStore.IncludesShadersStoreWGSL[s]||(t.ShaderStore.IncludesShadersStoreWGSL[s]=o),e.s(["fogVertexWGSL",0,{name:s,shader:o}],80849)},52362,e=>{"use strict";var t=e.i(47150);let a="logDepthVertex",r=`#ifdef LOGARITHMICDEPTH
150
- vertexOutputs.vFragmentDepth=1.0+vertexOutputs.position.w;vertexOutputs.position.z=log2(max(0.000001,vertexOutputs.vFragmentDepth))*uniforms.logarithmicDepthConstant;
151
- #endif
152
- `;t.ShaderStore.IncludesShadersStoreWGSL[a]||(t.ShaderStore.IncludesShadersStoreWGSL[a]=r),e.s(["logDepthVertexWGSL",0,{name:a,shader:r}])},82450,e=>{"use strict";var t=e.i(47150);let a="gaussianSplatting",r=`fn getDataUV(index: f32,dataTextureSize: vec2f)->vec2<f32> {let y: f32=floor(index/dataTextureSize.x);let x: f32=index-y*dataTextureSize.x;return vec2f((x+0.5),(y+0.5));}
47
+ `;t.ShaderStore.IncludesShadersStoreWGSL[s]||(t.ShaderStore.IncludesShadersStoreWGSL[s]=o),e.s(["fogVertexWGSL",0,{name:s,shader:o}],45320)},98302,e=>{"use strict";var t=e.i(25044);let a="gaussianSplatting",r=`fn getDataUV(index: f32,dataTextureSize: vec2f)->vec2<f32> {let y: f32=floor(index/dataTextureSize.x);let x: f32=index-y*dataTextureSize.x;return vec2f((x+0.5),(y+0.5));}
153
48
  struct Splat {center: vec4f,
154
49
  color: vec4f,
155
50
  covA: vec4f,
@@ -444,7 +339,112 @@ vec3f(rotationB.z,rotationB.w,rotationScale.x)
444
339
  var offsetSplatSpace: vec3f;if (axisLengthInViewZ.x>axisLengthInViewZ.y && axisLengthInViewZ.x>axisLengthInViewZ.z) {offsetSplatSpace=vec3f(0.0,quadPos.x,quadPos.y)*splatScale*gaussianSplatCutoffStddev;} else if (axisLengthInViewZ.y>axisLengthInViewZ.z) {offsetSplatSpace=vec3f(quadPos.x,0.0,quadPos.y)*splatScale*gaussianSplatCutoffStddev;} else {offsetSplatSpace=vec3f(quadPos.x,quadPos.y,0.0)*splatScale*gaussianSplatCutoffStddev;}
445
340
  let vertexObjectSpace=center+splatRotation*offsetSplatSpace;return splatWorld*vec4f(vertexObjectSpace,1.0);}
446
341
  #endif
447
- `;t.ShaderStore.IncludesShadersStoreWGSL[a]||(t.ShaderStore.IncludesShadersStoreWGSL[a]=r),e.s(["gaussianSplattingWGSL",0,{name:a,shader:r}])},1433,e=>{"use strict";var t=e.i(47150),a=e.i(97793),r=e.i(36113),s=e.i(55880),o=e.i(63593),f=e.i(53318),i=e.i(73317),l=e.i(82450),c=e.i(4534),n=e.i(80849),d=e.i(52362);let x="gaussianSplattingVertexShader",v=`#include<sceneUboDeclaration>
342
+ `;t.ShaderStore.IncludesShadersStoreWGSL[a]||(t.ShaderStore.IncludesShadersStoreWGSL[a]=r),e.s(["gaussianSplattingWGSL",0,{name:a,shader:r}])},65503,e=>{"use strict";var t=e.i(25044);let a="helperFunctions",r=`const PI: f32=3.1415926535897932384626433832795;const TWO_PI: f32=6.283185307179586;const HALF_PI: f32=1.5707963267948966;const RECIPROCAL_PI: f32=0.3183098861837907;const RECIPROCAL_PI2: f32=0.15915494309189535;const RECIPROCAL_PI4: f32=0.07957747154594767;const HALF_MIN: f32=5.96046448e-08;
343
+ const LinearEncodePowerApprox: f32=2.2;const GammaEncodePowerApprox: f32=1.0/LinearEncodePowerApprox;const LuminanceEncodeApprox: vec3f=vec3f(0.2126,0.7152,0.0722);const Epsilon:f32=0.0000001;fn square(x: f32)->f32 {return x*x;}
344
+ fn saturate(x: f32)->f32 {return clamp(x,0.0,1.0);}
345
+ fn saturateVec3(x: vec3f)->vec3f {return clamp(x,vec3f(),vec3f(1.0));}
346
+ fn saturateEps(x: f32)->f32 {return clamp(x,Epsilon,1.0);}
347
+ fn maxEps(x: f32)->f32 {return max(x,Epsilon);}
348
+ fn maxEpsVec3(x: vec3f)->vec3f {return max(x,vec3f(Epsilon));}
349
+ fn absEps(x: f32)->f32 {return abs(x)+Epsilon;}
350
+ fn transposeMat3(inMatrix: mat3x3f)->mat3x3f {let i0: vec3f=inMatrix[0];let i1: vec3f=inMatrix[1];let i2: vec3f=inMatrix[2];let outMatrix:mat3x3f=mat3x3f(
351
+ vec3(i0.x,i1.x,i2.x),
352
+ vec3(i0.y,i1.y,i2.y),
353
+ vec3(i0.z,i1.z,i2.z)
354
+ );return outMatrix;}
355
+ fn inverseMat3(inMatrix: mat3x3f)->mat3x3f {let a00: f32=inMatrix[0][0];let a01: f32=inMatrix[0][1];let a02: f32=inMatrix[0][2];let a10: f32=inMatrix[1][0];let a11: f32=inMatrix[1][1];let a12: f32=inMatrix[1][2];let a20: f32=inMatrix[2][0];let a21: f32=inMatrix[2][1];let a22: f32=inMatrix[2][2];let b01: f32=a22*a11-a12*a21;let b11: f32=-a22*a10+a12*a20;let b21: f32=a21*a10-a11*a20;let det: f32=a00*b01+a01*b11+a02*b21;return mat3x3f(b01/det,(-a22*a01+a02*a21)/det,(a12*a01-a02*a11)/det,
356
+ b11/det,(a22*a00-a02*a20)/det,(-a12*a00+a02*a10)/det,
357
+ b21/det,(-a21*a00+a01*a20)/det,(a11*a00-a01*a10)/det);}
358
+ #if USE_EXACT_SRGB_CONVERSIONS
359
+ fn toLinearSpaceExact(color: vec3f)->vec3f
360
+ {let nearZeroSection: vec3f=0.0773993808*color;let remainingSection: vec3f=pow(0.947867299*(color+vec3f(0.055)),vec3f(2.4));return select(remainingSection,nearZeroSection,color<=vec3f(0.04045));}
361
+ fn toGammaSpaceExact(color: vec3f)->vec3f
362
+ {let nearZeroSection: vec3f=12.92*color;let remainingSection: vec3f=1.055*pow(color,vec3f(0.41666))-vec3f(0.055);return select(remainingSection,nearZeroSection,color<=vec3f(0.0031308));}
363
+ #endif
364
+ fn toLinearSpace(color: f32)->f32
365
+ {
366
+ #if USE_EXACT_SRGB_CONVERSIONS
367
+ var nearZeroSection=0.0773993808*color;var remainingSection=pow(0.947867299*(color+0.055),2.4);return select(remainingSection,nearZeroSection,color<=0.04045);
368
+ #else
369
+ return pow(color,LinearEncodePowerApprox);
370
+ #endif
371
+ }
372
+ fn toLinearSpaceVec3(color: vec3f)->vec3f
373
+ {
374
+ #if USE_EXACT_SRGB_CONVERSIONS
375
+ return toLinearSpaceExact(color);
376
+ #else
377
+ return pow(color,vec3f(LinearEncodePowerApprox));
378
+ #endif
379
+ }
380
+ fn toLinearSpaceVec4(color: vec4<f32>)->vec4<f32>
381
+ {
382
+ #if USE_EXACT_SRGB_CONVERSIONS
383
+ return vec4f(toLinearSpaceExact(color.rgb),color.a);
384
+ #else
385
+ return vec4f(pow(color.rgb,vec3f(LinearEncodePowerApprox)),color.a);
386
+ #endif
387
+ }
388
+ fn toGammaSpace(color: vec4<f32>)->vec4<f32>
389
+ {
390
+ #if USE_EXACT_SRGB_CONVERSIONS
391
+ return vec4<f32>(toGammaSpaceExact(color.rgb),color.a);
392
+ #else
393
+ return vec4<f32>(pow(color.rgb,vec3f(GammaEncodePowerApprox)),color.a);
394
+ #endif
395
+ }
396
+ fn toGammaSpaceVec3(color: vec3f)->vec3f
397
+ {
398
+ #if USE_EXACT_SRGB_CONVERSIONS
399
+ return toGammaSpaceExact(color);
400
+ #else
401
+ return pow(color,vec3f(GammaEncodePowerApprox));
402
+ #endif
403
+ }
404
+ fn squareVec3(value: vec3f)->vec3f
405
+ {return value*value;}
406
+ fn pow5(value: f32)->f32 {let sq: f32=value*value;return sq*sq*value;}
407
+ fn double_refract(I: vec3f,N: vec3f,eta: f32)->vec3f {let Tfront: vec3f=refract(I,N,1.0/eta);let Nback: vec3f=normalize(reflect(N,Tfront));return refract(Tfront,-Nback,eta);}
408
+ fn getLuminanceUnclamped(color: vec3f)->f32
409
+ {return dot(color,LuminanceEncodeApprox);}
410
+ fn getLuminance(color: vec3f)->f32
411
+ {return saturate(getLuminanceUnclamped(color));}
412
+ fn getRand(seed: vec2<f32>)->f32 {return fract(sin(dot(seed.xy ,vec2<f32>(12.9898,78.233)))*43758.5453);}
413
+ fn dither(seed: vec2<f32>,varianceAmount: f32)->f32 {let rand: f32=getRand(seed);let normVariance: f32=varianceAmount/255.0;let dither: f32=mix(-normVariance,normVariance,rand);return dither;}
414
+ const rgbdMaxRange: f32=255.0;fn toRGBD(color: vec3f)->vec4<f32> {let maxRGB: f32=max(max(color.r,max(color.g,color.b)),Epsilon);var D: f32 =max(rgbdMaxRange/maxRGB,1.);D =clamp(floor(D)/255.0,0.,1.);var rgb: vec3f =color.rgb*D;rgb=toGammaSpaceVec3(rgb);return vec4<f32>(saturateVec3(rgb),D);}
415
+ fn fromRGBD(rgbd: vec4<f32>)->vec3f {let rgb=toLinearSpaceVec3(rgbd.rgb);return rgb/rgbd.a;}
416
+ fn parallaxCorrectNormal(vertexPos: vec3f,origVec: vec3f,cubeSize: vec3f,cubePos: vec3f)->vec3f {let invOrigVec: vec3f=vec3f(1.)/origVec;let halfSize: vec3f=cubeSize*0.5;let intersecAtMaxPlane: vec3f=(cubePos+halfSize-vertexPos)*invOrigVec;let intersecAtMinPlane: vec3f=(cubePos-halfSize-vertexPos)*invOrigVec;let largestIntersec: vec3f=max(intersecAtMaxPlane,intersecAtMinPlane);let distance: f32=min(min(largestIntersec.x,largestIntersec.y),largestIntersec.z);let intersectPositionWS: vec3f=vertexPos+origVec*distance;return intersectPositionWS-cubePos;}
417
+ fn equirectangularToCubemapDirection(uv : vec2f)->vec3f {var longitude : f32=uv.x*TWO_PI-PI;var latitude : f32=HALF_PI-uv.y*PI;var direction : vec3f;direction.x=cos(latitude)*sin(longitude);direction.y=sin(latitude);direction.z=cos(latitude)*cos(longitude);return direction;}
418
+ fn sqrtClamped(value: f32)->f32 {return sqrt(max(value,0.));}
419
+ fn avg(value: vec3f)->f32 {return dot(value,vec3f(0.333333333));}
420
+ fn singleScatterToMultiScatterAlbedo(rho_ss: vec3f)->vec3f {let s: vec3f=sqrt(max(vec3f(1.0)-rho_ss,vec3f(0.0)));return (vec3f(1.0)-s)*(vec3f(1.0)-vec3f(0.139)*s)/(vec3f(1.0)+vec3f(1.17)*s);}
421
+ fn multiScatterToSingleScatterAlbedo(rho_ms: vec3f)->vec3f {let s: vec3f=4.09712f+4.20863f*rho_ms-sqrt(9.59217f+41.6808f*rho_ms+17.7126f*rho_ms*rho_ms);return 1.0f-s*s;}
422
+ fn multiScatterToSingleScatterAlbedoWithAniso(rho_ms: vec3f,aniso: f32)->vec3f {let s: vec3f=4.09712+4.20863f*rho_ms-sqrt(9.59217f+41.6808f*rho_ms+17.7126f*rho_ms*rho_ms);return (vec3f(1.0f)-s*s)/maxEpsVec3(vec3f(1.0f)-vec3f(aniso)*s*s);}
423
+ fn min3(v: vec3f)->f32 {return min(v.x,min(v.y,v.z));}
424
+ fn max3(v: vec3f)->f32 {return max(v.x,max(v.y,v.z));}
425
+ fn uint2float(i: u32)->f32 {return bitcast<f32>(0x3F800000u | (i>>9u))-1.0;}
426
+ fn plasticSequence(rstate: u32)->vec2f {return vec2f(uint2float(rstate*3242174889u),
427
+ uint2float(rstate*2447445414u));}
428
+ `;t.ShaderStore.IncludesShadersStoreWGSL[a]||(t.ShaderStore.IncludesShadersStoreWGSL[a]=r),e.s(["helperFunctionsWGSL",0,{name:a,shader:r}])},69288,e=>{"use strict";var t=e.i(25044);let a="logDepthDeclaration",r=`#ifdef LOGARITHMICDEPTH
429
+ uniform logarithmicDepthConstant: f32;varying vFragmentDepth: f32;
430
+ #endif
431
+ `;t.ShaderStore.IncludesShadersStoreWGSL[a]||(t.ShaderStore.IncludesShadersStoreWGSL[a]=r),e.s(["logDepthDeclarationWGSL",0,{name:a,shader:r}])},78507,e=>{"use strict";var t=e.i(25044);let a="logDepthVertex",r=`#ifdef LOGARITHMICDEPTH
432
+ vertexOutputs.vFragmentDepth=1.0+vertexOutputs.position.w;vertexOutputs.position.z=log2(max(0.000001,vertexOutputs.vFragmentDepth))*uniforms.logarithmicDepthConstant;
433
+ #endif
434
+ `;t.ShaderStore.IncludesShadersStoreWGSL[a]||(t.ShaderStore.IncludesShadersStoreWGSL[a]=r),e.s(["logDepthVertexWGSL",0,{name:a,shader:r}])},95057,e=>{"use strict";var t=e.i(25044);let a="meshUboDeclaration",r=`struct Mesh {world : mat4x4<f32>,
435
+ visibility : f32,};var<uniform> mesh : Mesh;
436
+ #define WORLD_UBO
437
+ `;t.ShaderStore.IncludesShadersStoreWGSL[a]||(t.ShaderStore.IncludesShadersStoreWGSL[a]=r),e.s(["meshUboDeclarationWGSL",0,{name:a,shader:r}])},38267,e=>{"use strict";var t=e.i(25044);let a="sceneUboDeclaration",r=`struct Scene {viewProjection : mat4x4<f32>,
438
+ #ifdef MULTIVIEW
439
+ viewProjectionR : mat4x4<f32>,
440
+ #endif
441
+ view : mat4x4<f32>,
442
+ projection : mat4x4<f32>,
443
+ vEyePosition : vec4<f32>,
444
+ inverseProjection : mat4x4<f32>,};
445
+ #define SCENE_UBO
446
+ var<uniform> scene : Scene;
447
+ `;t.ShaderStore.IncludesShadersStoreWGSL[a]||(t.ShaderStore.IncludesShadersStoreWGSL[a]=r),e.s(["sceneUboDeclarationWGSL",0,{name:a,shader:r}])},20689,e=>{"use strict";var t=e.i(25044),a=e.i(38267),r=e.i(95057),s=e.i(65503),o=e.i(67667),f=e.i(3828),i=e.i(69288),l=e.i(98302),c=e.i(15345),n=e.i(45320),d=e.i(78507);let x="gaussianSplattingVertexShader",v=`#include<sceneUboDeclaration>
448
448
  #include<meshUboDeclaration>
449
449
  #include<helperFunctions>
450
450
  #include<clipPlaneVertexDeclaration>
@@ -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 r=()=>{let t=e.pick(e.pointerX,e.pointerY);t?.hit&&t.pickedPoint&&n.setTarget(t.pickedPoint)};return t.addEventListener("dblclick",r),()=>t.removeEventListener("dblclick",r)},"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,r=e.upperRadiusLimit??1/0;e.radius=Math.min(r,Math.max(n,e.radius*t))}],2348);var n=e.i(63671);e.s(["ZoomButtons",0,function({onZoom:e,onReset:r}){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:"−"}),r?(0,n.jsx)("button",{type:"button","aria-label":"Reset camera focus to center",title:"Reset focus to center",className:a,onClick:r,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)},87456,e=>{"use strict";e.s(["attachMeshHover",0,function(e,t,n){let r=0,a=null,i=t=>{let i=t.offsetX,l=t.offsetY;r||(r=requestAnimationFrame(()=>{var t,s;let o;r=0;let u=e.pick(i,l,e=>e.isPickable&&e.isEnabled()),c=u?.pickedMesh?(t=u.pickedMesh,s=u.thinInstanceIndex??-1,(o=t.metadata)?s>=0&&o.hoverLabels?o.hoverLabels[s]??null:o.hoverLabel??null:null):null;c?n({label:c,x:i,y:l}):null!==a&&n(null),a=c}))},l=()=>{r&&(cancelAnimationFrame(r),r=0),null!==a&&(a=null,n(null))};return t.addEventListener("pointermove",i),t.addEventListener("pointerleave",l),()=>{t.removeEventListener("pointermove",i),t.removeEventListener("pointerleave",l),r&&cancelAnimationFrame(r)}}])},48939,e=>{"use strict";var t=e.i(63671),n=e.i(48093);function r(e){return Number.isNaN(e)||e<0?0:e>1?1:e}function a(e){let t=r(e),n=[[0,.1,.9],[0,.85,1],[.1,.9,.2],[1,.85,0],[1,.15,0],[1,1,1]],a=n.length-1,i=t*a,l=Math.min(Math.floor(i),a-1),s=i-l,o=n[l],u=n[l+1];return o&&u?[o[0]+(u[0]-o[0])*s,o[1]+(u[1]-o[1])*s,o[2]+(u[2]-o[2])*s]:[1,1,1]}var i=e.i(56054),l=e.i(2348),s=e.i(87456),o=e.i(18637),u=e.i(2413);e.s(["CameraDome3DView",0,function({bins:c,gridSize:d}){let h=(0,n.useRef)(null),m=(0,n.useRef)(null),f=(0,n.useRef)(null),[p,b]=(0,n.useState)("loading"),[g,x]=(0,n.useState)(null),[w,v]=(0,n.useState)("markers"),[y,k]=(0,n.useState)(null),M=(0,n.useRef)(c),C=(0,n.useRef)(d),S=(0,n.useRef)(w);M.current=c,C.current=d,S.current=w;let z=(0,n.useRef)(null),R=c.length>0;return(0,n.useEffect)(()=>{let t=h.current;if(!t)return;if(!R)return void b("empty");let n=!1,o=null;return b("loading"),x(null),(async()=>{try{let[{Engine:u},{Scene:c},{ArcRotateCamera:d},{HemisphericLight:h},{Vector3:p,Color3:g,Color4:x,Matrix:w},{MeshBuilder:v},{StandardMaterial:y},{Mesh:R},{DynamicTexture:L}]=await Promise.all([e.A(69721),e.A(341),e.A(21342),e.A(72976),e.A(35285),e.A(42598),e.A(97938),e.A(82141),e.A(53),e.A(95369),e.A(82926)]);if(n)return;let I=new u(t,!0,{preserveDrawingBuffer:!1}),_=new c(I);_.clearColor=new x(.04,.05,.07,1);let A=p.Zero(),j=new d("dome-cam",Math.PI/3,Math.PI/2.4,3.6,A,_);j.attachControl(t,!0),j.lowerRadiusLimit=1.6,j.upperRadiusLimit=8,(0,l.disableWheelZoom)(j),m.current=j,f.current={target:A,alpha:j.alpha,beta:j.beta,radius:j.radius},new h("dome-light",new p(.3,1,.2),_);let E=v.CreateSphere("dome",{diameter:2,segments:20},_),$=new y("dome-mat",_);$.wireframe=!0,$.disableLighting=!0,$.emissiveColor=new g(.16,.2,.28),$.alpha=.5,E.material=$,E.isPickable=!1;let P=[];for(let e=0;e<=64;e++){let t=e/64*Math.PI*2;P.push(new p(Math.cos(t),0,Math.sin(t)))}let N=v.CreateLines("dome-horizon",{points:P},_);N.color=new g(.3,.36,.46),N.isPickable=!1;let T=v.CreateLines("dome-forward",{points:[p.Zero(),new p(1.25,0,0)]},_);T.color=new g(.4,.7,.95),T.isPickable=!1;let B=[],F=()=>{for(let e of B)e.dispose(!1,!0);B=[];let e=M.current;if(0===e.length)return;let t=e.reduce((e,t)=>Math.max(e,t.count),1),n=C.current>0?C.current:1;if("markers"===S.current){let r=v.CreateBox("dome-marker",{size:1},_),a=new y("dome-marker-mat",_);a.disableLighting=!0,a.emissiveColor=g.White(),a.specularColor=new g(0,0,0),r.material=a,r.isPickable=!0,r.thinInstanceEnablePicking=!0;let l=e.length,s=new Float32Array(16*l),o=new Float32Array(4*l),u=Array(l);for(let r=0;r<l;r++){let a=e[r],l=(a.azimuth_bin+.5)/n*Math.PI*2-Math.PI,c=(a.elevation_bin+.5)/n*Math.PI-Math.PI/2,d=Math.cos(c),h=d*Math.cos(l),m=Math.sin(c),f=d*Math.sin(l),p=a.count/t,b=.03+.12*p;w.Scaling(b,b,b).multiply(w.Translation(h,m,f)).copyToArray(s,16*r);let[g,x,v]=(0,i.heatRgb)(p);o[4*r]=g,o[4*r+1]=x,o[4*r+2]=v,o[4*r+3]=1,u[r]=`dir (${a.azimuth_bin}, ${a.elevation_bin}) \xb7 ${a.count}`}r.thinInstanceSetBuffer("matrix",s,16,!0),r.thinInstanceSetBuffer("color",o,4,!0),r.metadata={hoverLabels:u},B.push(r)}else{let t=function(e,t={}){let n=void 0!==t.width&&t.width>0?Math.floor(t.width):256,i=void 0!==t.height&&t.height>0?Math.floor(t.height):Math.max(1,Math.floor(n/2)),l=t.colorRamp??a,s=void 0!==t.blurBins&&t.blurBins>0?t.blurBins:1.5,o=r(t.alphaFloor??0),u=r(t.opacity??1),c=e.gridSize>0?e.gridSize:1,d=new Uint8ClampedArray(n*i*4),h=e.bins.filter(e=>e.count>0);if(0===h.length)return{width:n,height:i,rgba:d};let m=Math.max(1e-4,Math.PI/c*s),f=2*m*m,p=Math.cos(Math.min(Math.PI,3*m)),b=h.map(e=>{var t,n;let r,[a,i]=(t=e.azimuthBin,n=e.elevationBin,[(t+.5)/c*Math.PI*2-Math.PI,(n+.5)/c*Math.PI-Math.PI/2]);return[(r=Math.cos(i))*Math.cos(a),Math.sin(i),r*Math.sin(a)]}),g=new Float32Array(n*i),x=0;for(let e=0;e<i;e++){let t=Math.PI/2-(e+.5)/i*Math.PI,r=Math.cos(t),a=Math.sin(t);for(let t=0;t<n;t++){let i=(t+.5)/n*Math.PI*2-Math.PI,l=r*Math.cos(i),s=r*Math.sin(i),o=0;for(let e=0;e<h.length;e++){let t=b[e],n=l*t[0]+a*t[1]+s*t[2];if(n<p)continue;let r=Math.acos(n>1?1:n<-1?-1:n);o+=h[e].count*Math.exp(-(r*r)/f)}g[e*n+t]=o,o>x&&(x=o)}}if(x<=0)return{width:n,height:i,rgba:d};for(let e=0;e<g.length;e++){let t=r(g[e]/x),[n,a,i]=l(t),s=(o+(1-o)*t)*u,c=4*e;d[c]=Math.round(255*n),d[c+1]=Math.round(255*a),d[c+2]=Math.round(255*i),d[c+3]=Math.round(255*r(s))}return{width:n,height:i,rgba:d}}({bins:e.map(e=>({azimuthBin:e.azimuth_bin,elevationBin:e.elevation_bin,count:e.count})),gridSize:n},{width:256,blurBins:1.5,opacity:.95}),i=new L("dome-skytex",{width:t.width,height:t.height},_,!1);i.hasAlpha=!0;let l=i.getContext(),s=l.createImageData(t.width,t.height);s.data.set(t.rgba),l.putImageData(s,0,0),i.update();let o=v.CreateSphere("dome-sky",{diameter:2,segments:48,sideOrientation:R.DOUBLESIDE},_),u=new y("dome-sky-mat",_);u.disableLighting=!0,u.emissiveColor=g.White(),u.diffuseColor=new g(0,0,0),u.specularColor=new g(0,0,0),u.emissiveTexture=i,u.opacityTexture=i,u.backFaceCulling=!1,o.material=u,o.isPickable=!1,B.push(o)}};z.current=F,F(),I.runRenderLoop(()=>_.render());let V=()=>I.resize();window.addEventListener("resize",V);let O=(0,s.attachMeshHover)(_,t,k),Z=(0,l.attachDoubleClickFocus)(_,t,j);b("ready"),o=()=>{window.removeEventListener("resize",V),O(),Z(),k(null),z.current=null,m.current=null,f.current=null,_.dispose(),I.dispose()}}catch(e){if(n)return;b("error"),x(e instanceof Error?e.message:"Failed to render dome.")}})(),()=>{n=!0,o?.()}},[R]),(0,n.useEffect)(()=>{z.current?.()},[c,d,w]),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("canvas",{ref:h,className:"aspect-video w-full rounded-lg border border-edge bg-ink"}),y?(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:y.x+12,top:y.y+12},children:y.label}):null,"ready"===p?(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:()=>v(e),className:`px-2.5 py-1 ${w===e?"bg-fg/15 font-medium text-white":"text-fg-muted hover:text-fg"}`,children:"markers"===e?"Markers":"Skydome"},e))}),(0,t.jsx)(u.ZoomButtons,{onZoom:e=>m.current&&(0,l.stepZoom)(m.current,e),onReset:()=>m.current&&f.current&&(0,l.resetFocus)(m.current,f.current)}),(0,t.jsx)(o.HeatLegend,{title:"Gaze density",lowLabel:"rarely",highLabel:"most-viewed",note:"markers"===w?"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"===p?"Rendering…":"empty"===p?"No camera samples in range.":"error"===p?g??"Dome unavailable.":null})]})}],48939)},19399,e=>{"use strict";var t=e.i(63671),n=e.i(48093);let r="__other_sp__",a="__other_mesh__";function i(e){return`${e[0]}|${e[1]}|${e[2]}`}function l(e,t){return t<=1?0:1.4-e/(t-1)*2.8}var s=e.i(56054),o=e.i(2348),u=e.i(87456),c=e.i(18637),d=e.i(2413);let h="__all__",m={maxStandpoints:6,maxMeshes:10,maxRibbons:70};function f(e,t){return`${e}|${t}`}function p(e){let t=e.aabb;return[(t[0]+t[3])/2,(t[1]+t[4])/2,(t[2]+t[5])/2]}function b(e){let t=0;for(let n=0;n<e.length;n++)t=31*t+e.charCodeAt(n)|0;return Math.abs(t)}function g({label:e,value:n,onChange:r,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=>r(e.target.value),children:[(0,t.jsx)("option",{value:h,children:a}),i.map(e=>(0,t.jsx)("option",{value:e.value,children:e.label},e.value))]})]})}function x({active:e,onClick:n,children:r,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:r})}function w({standpoints:e,proxyMeshes:r,selectedKey:a,onSelect:i}){let l=(0,n.useRef)(null),s=(0,n.useMemo)(()=>e.filter(e=>e.origin),[e]),o=(0,n.useMemo)(()=>{let e=1/0,t=-1/0,n=1/0,a=-1/0,i=(r,i)=>{e=Math.min(e,r),t=Math.max(t,r),n=Math.min(n,i),a=Math.max(a,i)};for(let e of r)i(e.aabb[0],e.aabb[2]),i(e.aabb[3],e.aabb[5]);for(let e of s)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}},[r,s]),u=(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]),c=(0,n.useMemo)(()=>s.reduce((e,t)=>Math.max(e,t.count),1),[s]);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,r)){let[e,n]=u(a.aabb[0],a.aabb[2]),[r,i]=u(a.aabb[3],a.aabb[5]);t.strokeRect(Math.min(e,r),Math.min(n,i),Math.abs(r-e),Math.abs(i-n))}for(let e of s){let[n,r]=u(e.origin[0],e.origin[2]),i=2+e.count/c*4,l=e.key===a;t.beginPath(),t.arc(n,r,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,r,i+2.5,0,2*Math.PI),t.strokeStyle="rgba(255,255,255,0.9)",t.lineWidth=1.5,t.stroke())}},[r,s,u,c,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===s.length)return;let n=t.getBoundingClientRect(),r=(e.clientX-n.left)/n.width*150,a=(e.clientY-n.top)/n.height*110,o=null,c=1/0;for(let e of s){let[t,n]=u(e.origin[0],e.origin[2]),i=(t-r)**2+(n-a)**2;i<c&&(c=i,o=e)}o&&c<=196&&i(o.key)}})]})}e.s(["FlowSankey3DView",0,function({links:v,gridSize:y,proxyMeshes:k=[],maxLinks:M=80,api:C,flowQuery:S,hasFirstPerson:z=!1}){let R=(0,n.useRef)(null),L=(0,n.useRef)(null),I=(0,n.useRef)(null),[_,A]=(0,n.useState)("loading"),[j,E]=(0,n.useState)(null),[$,P]=(0,n.useState)(h),[N,T]=(0,n.useState)(h),[B,F]=(0,n.useState)(h),[V,O]=(0,n.useState)("aggregate"),[Z,D]=(0,n.useState)(null),[W,H]=(0,n.useState)("all"),[K,U]=(0,n.useState)(v),G=!!(C&&S),Y=(0,n.useMemo)(()=>S?JSON.stringify(S):"",[S]),q=(0,n.useRef)(!1);(0,n.useEffect)(()=>{!q.current&&z&&(H("first-person"),q.current=!0)},[z]),(0,n.useEffect)(()=>{z&&"viewer"===W&&H("first-person")},[z,W]),(0,n.useEffect)(()=>{G||U(v)},[v,G]),(0,n.useEffect)(()=>{if(!C||!S)return;let e=!1,t="all"===W?void 0:W;return C.flowHeatmap({...S,bins:y,limit:400,groupByOrigin:!0,cameraMode:t}).then(t=>{e||U(t)}).catch(()=>{e||U([])}),()=>{e=!0}},[C,Y,W,y]);let X=(0,n.useMemo)(()=>{let e=new Map;for(let t of K){if(!t.originVoxel)continue;let n=i(t.originVoxel),r=t.origin,a=e.get(n);a?(a.count+=t.count,r&&(a.ox+=r[0]*t.count,a.oy+=r[1]*t.count,a.oz+=r[2]*t.count,a.wsum+=t.count)):e.set(n,{key:n,voxel:t.originVoxel,count:t.count,ox:r?r[0]*t.count:0,oy:r?r[1]*t.count:0,oz:r?r[2]*t.count:0,wsum:r?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)},[K]),J=X.length>0,Q=(0,n.useMemo)(()=>B===h?null:X.find(e=>e.key===B)??null,[X,B]),ee=(0,n.useMemo)(()=>(function(e,t,n,s){let o=e.filter(e=>e.originVoxel);if(0===o.length)return{standpoints:[],gazes:[],meshes:[],ribbons:[],maxCount:1};let u=t.slice(0,Math.max(1,s.maxStandpoints)),c=new Set(u.map(e=>e.key)),d=e=>{let t=e.originVoxel?i(e.originVoxel):r;return c.has(t)?t:r},h=new Map;for(let e of o)h.set(e.mesh,(h.get(e.mesh)??0)+e.count);let m=new Set([...h.entries()].sort((e,t)=>t[1]-e[1]).slice(0,Math.max(1,s.maxMeshes)).map(([e])=>e)),f=e=>m.has(e)?e:a,p=new Map;for(let e of o){let t=d(e),n=f(e.mesh),r=`${t}|${e.azimuth_bin}|${e.elevation_bin}|${n}`,a=p.get(r);a?a.count+=e.count:p.set(r,{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=[...p.values()].sort((e,t)=>t.count-e.count),g=b.slice(0,Math.max(1,s.maxRibbons)),x=b.slice(Math.max(1,s.maxRibbons));if(x.length>0){let e=new Map(g.map(e=>[`${e.standpointId}|${e.azimuthBin}|${e.elevationBin}|${a}`,e]));for(let t of x){let n=`${t.standpointId}|${t.azimuthBin}|${t.elevationBin}|${a}`,r=e.get(n);if(r)r.count+=t.count;else{let r={standpointId:t.standpointId,gazeId:t.gazeId,meshId:a,azimuthBin:t.azimuthBin,elevationBin:t.elevationBin,count:t.count};e.set(n,r),g.push(r)}}}let w=new Set(g.map(e=>e.standpointId)),v=new Set(g.map(e=>e.meshId)),y=[...u.filter(e=>w.has(e.key)).map(e=>e.key),...w.has(r)?[r]:[]],k=y.map((e,t)=>{let n=u.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,l(t,y.length),0],count:a,label:n?`[${n.voxel[0]}, ${n.voxel[1]}, ${n.voxel[2]}]`:"Other standpoints",isOther:e===r}}),M=new Map(k.map(e=>[e.id,e.pos[1]])),C=new Map;for(let e of g)C.set(e.meshId,(C.get(e.meshId)??0)+e.count);let S=[...v].sort((e,t)=>(C.get(t)??0)-(C.get(e)??0));S.sort((e,t)=>(e===a)-(t===a));let z=S.map((e,t)=>({id:e,kind:"mesh",pos:[2.6,l(t,S.length),0],count:C.get(e)??0,label:e===a?"Other meshes":e,isOther:e===a})),R=new Map;for(let e of g){let t=R.get(e.gazeId);t?t.count+=e.count:R.set(e.gazeId,{az:e.azimuthBin,el:e.elevationBin,sp:e.standpointId,count:e.count})}let L=[...R.entries()].map(([e,t])=>{let r=M.get(t.sp)??0,a=(t.az+.5)/n-.5;return{id:e,kind:"gaze",pos:[0,r+((t.el+.5)/n-.5)*.85,1.6*a],count:t.count,label:`(${t.az}, ${t.el})`,isOther:!1}}),I=g.reduce((e,t)=>Math.max(e,t.count),1);return{standpoints:k,gazes:L,meshes:z,ribbons:g,maxCount:I}})(K,X,y,m),[K,X,y]),et="twostage"===V&&J;(0,n.useEffect)(()=>{"twostage"!==V||J||O("aggregate")},[V,J]);let en=(0,n.useMemo)(()=>{if(B!==h&&J)return K.filter(e=>e.originVoxel&&i(e.originVoxel)===B);if(!J)return K;let e=new Map;for(let t of K){let n=`${t.azimuth_bin}|${t.elevation_bin}|${t.mesh}`,r=e.get(n);r?r.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()]},[K,B,J]),er=(0,n.useMemo)(()=>[...en].sort((e,t)=>t.count-e.count).slice(0,Math.max(1,M)),[en,M]),ea=(0,n.useMemo)(()=>{let e=new Map;for(let t of er)e.set(t.mesh,(e.get(t.mesh)??0)+t.count);return[...e.entries()].sort((e,t)=>t[1]-e[1])},[er]),ei=(0,n.useMemo)(()=>{let e=new Map;for(let t of er){let n=f(t.azimuth_bin,t.elevation_bin),r=e.get(n);r?r.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)},[er]);(0,n.useEffect)(()=>{!et&&$!==h&&(ea.some(([e])=>e===$)||P(h))},[et,$,ea]),(0,n.useEffect)(()=>{!et&&N!==h&&(ei.some(e=>f(e.azimuthBin,e.elevationBin)===N)||T(h))},[et,N,ei]),(0,n.useEffect)(()=>{!et&&B!==h&&(X.some(e=>e.key===B)||F(h))},[et,B,X]),(0,n.useEffect)(()=>{P(h),T(h),F(h)},[V]);let el=(0,n.useMemo)(()=>et?ee.ribbons.filter(e=>{let t=B===h||e.standpointId===B,n=N===h||f(e.azimuthBin,e.elevationBin)===N,r=$===h||e.meshId===$;return t&&n&&r}).length:er.filter(e=>{let t=N===h||f(e.azimuth_bin,e.elevation_bin)===N,n=$===h||e.mesh===$;return t&&n}).length,[et,ee,er,$,N,B]),es=et?ee.ribbons.length:er.length,eo=(0,n.useMemo)(()=>et?ee.standpoints.map(e=>({value:e.id,label:`${e.label} \xb7 ${e.count}`})):X.slice(0,24).map(e=>({value:e.key,label:`[${e.voxel[0]}, ${e.voxel[1]}, ${e.voxel[2]}] \xb7 ${e.count}`})),[et,ee,X]),eu=(0,n.useMemo)(()=>{if(et){let e=new Map;for(let t of ee.ribbons){let n=f(t.azimuthBin,t.elevationBin),r=e.get(n);r?r.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}`}))},[et,ee,ei]),ec=(0,n.useMemo)(()=>et?ee.meshes.map(e=>({value:e.id,label:`${e.label} \xb7 ${e.count}`})):ea.map(([e,t])=>({value:e,label:`${e} \xb7 ${t}`})),[et,ee,ea]),ed=(0,n.useRef)(er);ed.current=er;let eh=(0,n.useRef)(ee);eh.current=ee;let em=(0,n.useRef)(k);em.current=k;let ef=(0,n.useRef)(ea);ef.current=ea;let ep=(0,n.useRef)($);ep.current=$;let eb=(0,n.useRef)(N);eb.current=N;let eg=(0,n.useRef)(B);eg.current=B;let ex=(0,n.useRef)(Q);ex.current=Q;let ew=(0,n.useRef)(null),ev=et?ee.ribbons.length>0:er.length>0;return(0,n.useEffect)(()=>{let t=R.current;if(!t)return;if(!ev)return void A("empty");let n=!1,r=null;return A("loading"),E(null),(async()=>{try{let a,[{Engine:i},{Scene:l},{ArcRotateCamera:c},{HemisphericLight:d},{Vector3:m,Color3:g,Color4:x},{MeshBuilder:w},{StandardMaterial:v}]=await Promise.all([e.A(69721),e.A(341),e.A(21342),e.A(72976),e.A(35285),e.A(42598),e.A(97938),e.A(82926)]);if(n)return;let k=new i(t,!0,{preserveDrawingBuffer:!1}),M=new l(k);M.clearColor=new x(.04,.05,.07,1);let C=[],S=()=>{for(let e of C)e.dispose();C=[]};if(et){let e=m.Zero();(a=new c("ts-cam",Math.PI/2,Math.PI/2.4,8.5,e,M)).attachControl(t,!0),(0,o.disableWheelZoom)(a),L.current=a,I.current={target:e,alpha:a.alpha,beta:a.beta,radius:a.radius},new d("ts-light",new m(.3,1,.2),M);let n={standpoint:[.95,.45,.95],gaze:[.45,.75,1],mesh:[1,.82,.42]},r={standpoint:.26,gaze:.13,mesh:.22},i=(e,t,n)=>{let r=e[0],a=e[1],i=e[2],l=t[0],s=t[1],o=t[2],u=[(r+l)/2,(a+s)/2+n,(i+o)/2],c=[];for(let e=0;e<=12;e++){let t=e/12,n=1-t;c.push(new m(n*n*r+2*n*t*u[0]+t*t*l,n*n*a+2*n*t*u[1]+t*t*s,n*n*i+2*n*t*u[2]+t*t*o))}return c},l=()=>{S();let e=eh.current;if(0===e.ribbons.length)return;let t=eg.current,a=eb.current,l=ep.current,o=e=>{let n=t===h||e.standpointId===t,r=a===h||f(e.azimuthBin,e.elevationBin)===a,i=l===h||e.meshId===l;return n&&r&&i},u=t!==h||a!==h||l!==h,c=new Set;for(let t of e.ribbons)o(t)&&(c.add(t.standpointId),c.add(t.gazeId),c.add(t.meshId));let d=[...e.standpoints,...e.gazes,...e.meshes],p=new Map(d.map(e=>[e.id,e.pos])),b=new Map(d.map(e=>[e.id,e.label]));for(let e of d){let t=w.CreateSphere(`ts-node-${e.kind}-${e.id}`,{diameter:r[e.kind],segments:8},M);t.position=new m(e.pos[0],e.pos[1],e.pos[2]);let a=new v(`ts-node-mat-${e.kind}-${e.id}`,M);a.disableLighting=!0;let[i,l,s]=n[e.kind];a.emissiveColor=new g(i,l,s),a.alpha=!u||c.has(e.id)?1:.2,t.material=a,t.isPickable=!0,t.metadata={hoverLabel:e.label},C.push(t,a)}for(let t of e.ribbons){let n=p.get(t.standpointId),r=p.get(t.gazeId),a=p.get(t.meshId);if(!n||!r||!a)continue;let l=t.count/e.maxCount,c=.18+.5*l,d=[...i(n,r,c),...i(r,a,c).slice(1)],h=o(t),[m,f,x]=(0,s.heatRgb)(l),y=w.CreateTube(`ts-link-${t.standpointId}-${t.gazeId}-${t.meshId}`,{path:d,radius:(h?1:.4)*(.012+.04*l),tessellation:8,cap:0,sideOrientation:0},M),k=new v(`ts-link-mat-${t.standpointId}-${t.gazeId}-${t.meshId}`,M);k.disableLighting=!0,k.emissiveColor=new g(m,f,x),k.alpha=h?.35+.65*l:u?.06:.18,y.material=k,y.isPickable=!0,y.metadata={hoverLabel:b.get(t.meshId)??t.meshId},C.push(y,k)}};ew.current=l,l()}else{let e=new Map;for(let t of em.current)e.set(t.name,p(t));let n=new Map,r=ef.current.map(([e])=>e).filter(t=>!e.has(t));for(let e=0;e<r.length;e++){let t=r[e],a=b(t),i=e/Math.max(1,r.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,r]of e.entries())n.set(t,r);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 k=new m(i/Math.max(1,x),l/Math.max(1,x),u/Math.max(1,x)),z=1.8;for(let e of n.values()){let t=e[0]-k.x,n=e[1]-k.y,r=e[2]-k.z;z=Math.max(z,Math.sqrt(t*t+n*n+r*r))}let R=.75*z+1,_=Math.max(1,z/1.8);(a=new c("flow-cam",Math.PI/4,Math.PI/3,3.4*z,k,M)).attachControl(t,!0),(0,o.disableWheelZoom)(a),L.current=a,I.current={target:k,alpha:a.alpha,beta:a.beta,radius:a.radius},new d("flow-light",new m(.3,1,.2),M);let A=w.CreateSphere("flow-source-dome",{diameter:2*R,segments:20},M);A.position=k;let j=new v("flow-source-dome-mat",M);j.wireframe=!0,j.disableLighting=!0,j.emissiveColor=new g(.16,.2,.28),j.alpha=.35,A.material=j,A.isPickable=!1;let E=()=>{S();let e=ed.current;if(0===e.length)return;let t=ep.current,n=eb.current,r=ex.current,a=new Map;for(let e of em.current)a.set(e.name,p(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=b(t),r=e/Math.max(1,l.length)*Math.PI*2+n%100/100*.35;i.set(t,[2.2*Math.cos(r),-.35+(n%7-3)*.06,2.2*Math.sin(r)])}for(let[e,t]of a.entries())i.set(e,t);let o=e.reduce((e,t)=>Math.max(e,t.count),1),u=new v("flow-source-node",M);u.disableLighting=!0,u.emissiveColor=new g(.45,.75,1);let c=new v("flow-target-node",M);c.disableLighting=!0,c.emissiveColor=new g(1,.82,.42),C.push(u,c);let d=new Set,x=new Set,z=e=>{let r=n===h||f(e.azimuth_bin,e.elevation_bin)===n,a=t===h||e.mesh===t;return r&&a},L=new Set,I=new Set;for(let t of e)z(t)&&(L.add(f(t.azimuth_bin,t.elevation_bin)),I.add(t.mesh));for(let r of e){let e=`${r.azimuth_bin}|${r.elevation_bin}`,a=i.get(r.mesh);if(!a)continue;let l=z(r),f=(r.azimuth_bin+.5)/y*Math.PI*2-Math.PI,p=(r.elevation_bin+.5)/y*Math.PI-Math.PI/2,b=Math.cos(p),S=b*Math.cos(f),A=Math.sin(p),j=b*Math.sin(f),E=new m(k.x+S*R,k.y+A*R,k.z+j*R),$=new m(a[0],a[1],a[2]);if(!d.has(e)){let r=w.CreateSphere(`flow-src-${e}`,{diameter:.12*_,segments:6},M);r.position=E;let a=u.clone(`flow-src-mat-${e}`);a.alpha=L.has(e)||t===h&&n===h?1:.22,r.material=a,r.isPickable=!1,d.add(e),C.push(r,a)}if(!x.has(r.mesh)){let e=w.CreateSphere(`flow-target-${r.mesh}`,{diameter:.2*_,segments:7},M);e.position=$;let a=c.clone(`flow-target-mat-${r.mesh}`);a.alpha=I.has(r.mesh)||t===h&&n===h?1:.22,e.material=a,e.isPickable=!0,e.metadata={hoverLabel:r.mesh},x.add(r.mesh),C.push(e,a)}let P=E.add($).scale(.5),N=P.subtract(k),T=Math.sqrt(N.x*N.x+N.y*N.y+N.z*N.z),B=T>1e-6?N.x/T:0,F=T>1e-6?N.y/T:1,V=T>1e-6?N.z/T:0,O=(.35+r.count/o*.75)*_,Z=new m(P.x+B*O,P.y+F*O+.12*_,P.z+V*O),D=[];for(let e=0;e<=18;e++){let t=e/18,n=1-t;D.push(new m(n*n*E.x+2*n*t*Z.x+t*t*$.x,n*n*E.y+2*n*t*Z.y+t*t*$.y,n*n*E.z+2*n*t*Z.z+t*t*$.z))}let W=r.count/o,[H,K,U]=(0,s.heatRgb)(W),G=w.CreateTube(`flow-link-${r.mesh}-${e}`,{path:D,radius:(l?1:.4)*(.012+.04*W)*_,tessellation:8,cap:0,sideOrientation:0},M),Y=new v(`flow-link-mat-${r.mesh}-${e}`,M);Y.disableLighting=!0,Y.emissiveColor=new g(H,K,U),Y.alpha=l?.35+.65*W:.08,G.material=Y,G.isPickable=!0,G.metadata={hoverLabel:r.mesh},C.push(G,Y)}let A=r?.origin;if(A){let e=new m(A[0],A[1],A[2]),t=w.CreateSphere("flow-standpoint",{diameter:.26*_,segments:10},M);t.position=e;let n=new v("flow-standpoint-mat",M);n.disableLighting=!0,n.emissiveColor=new g(.95,.45,.95),t.material=n,t.isPickable=!1;let r=w.CreateLines("flow-standpoint-stem",{points:[e,new m(e.x,k.y,e.z)]},M);r.color=new g(.95,.45,.95),r.isPickable=!1,C.push(t,n,r)}};ew.current=E,E()}k.runRenderLoop(()=>M.render());let z=()=>k.resize();window.addEventListener("resize",z);let R=(0,u.attachMeshHover)(M,t,D),_=(0,o.attachDoubleClickFocus)(M,t,a);A("ready"),r=()=>{window.removeEventListener("resize",z),R(),_(),D(null),ew.current=null,L.current=null,I.current=null,S(),M.dispose(),k.dispose()}}catch(e){if(n)return;A("error"),E(e instanceof Error?e.message:"Failed to render flow links.")}})(),()=>{n=!0,r?.()}},[et,y,ev]),(0,n.useEffect)(()=>{ew.current?.()},[er,ee,k,$,N,B,Q]),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("canvas",{ref:R,className:"aspect-video w-full rounded-lg border border-edge bg-ink"}),Z?(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:Z.x+12,top:Z.y+12},children:Z.label}):null,"ready"===_?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"absolute left-3 top-3 flex flex-wrap gap-2",children:[J?(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)(x,{active:!et,onClick:()=>O("aggregate"),children:"Aggregate"}),(0,t.jsx)(x,{active:et,onClick:()=>O("twostage"),children:"Two-stage"})]}):null,G?(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)(x,{active:"first-person"===W,onClick:()=>H("first-person"),children:"Walk"}),(0,t.jsx)(x,{active:"viewer"===W,onClick:()=>H("viewer"),disabled:z,title:z?"Orbit (viewer) flow isn't available for walkable scenes":void 0,children:"Orbit"}),(0,t.jsx)(x,{active:"all"===W,onClick:()=>H("all"),children:"All"})]}):null,J?(0,t.jsx)(g,{label:"Standpoint",value:B,onChange:F,allLabel:"All standpoints",options:eo}):null,(0,t.jsx)(g,{label:et?"Gaze":"Source",value:N,onChange:T,allLabel:et?"All gaze sectors":"All sources",options:eu}),(0,t.jsx)(g,{label:"Mesh",value:$,onChange:P,allLabel:"All meshes",options:ec})]}),et?(0,t.jsx)(w,{standpoints:X,proxyMeshes:k,selectedKey:B,onSelect:e=>F(t=>t===e?h: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:[G&&!z?(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: ",el,"/",es]})]}),(0,t.jsx)(d.ZoomButtons,{onZoom:e=>L.current&&(0,o.stepZoom)(L.current,e),onReset:()=>L.current&&I.current&&(0,o.resetFocus)(L.current,I.current)}),(0,t.jsx)(c.HeatLegend,{title:"Flow volume",lowLabel:"fewer links",highLabel:"dominant links",note:et?"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"===_?"Rendering…":"empty"===_?"No aggregate flow links in range.":"error"===_?j??"Flow view unavailable.":null})]})}],19399)},39592,e=>{"use strict";var t=e.i(63671),n=e.i(48093),r=e.i(56054),a=e.i(2348),i=e.i(87456),l=e.i(2413);function s(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 u({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 c({active:e,onClick:n,children:r}){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:r})}e.s(["GazeClickDivergence3DView",0,function({gazeVoxels:d,clickVoxels:h,cellSize:m,proxyMeshes:f=[]}){let p=(0,n.useRef)(null),b=(0,n.useRef)(null),g=(0,n.useRef)(null),[x,w]=(0,n.useState)("loading"),[v,y]=(0,n.useState)(null),[k,M]=(0,n.useState)("overlay"),[C,S]=(0,n.useState)(null),z=(0,n.useRef)(d),R=(0,n.useRef)(h),L=(0,n.useRef)(f),I=(0,n.useRef)(k);z.current=d,R.current=h,L.current=f,I.current=k;let _=(0,n.useRef)(null),A=d.length>0||h.length>0||f.length>0;return(0,n.useEffect)(()=>{let t=p.current;if(!t)return;if(!A)return void w("empty");let n=!1,l=null;return w("loading"),y(null),(async()=>{try{let[{Engine:u},{Scene:c},{ArcRotateCamera:d},{HemisphericLight:h},{Vector3:f,Color3:p,Color4:x,Matrix:v},{MeshBuilder:y},{StandardMaterial:k}]=await Promise.all([e.A(69721),e.A(341),e.A(21342),e.A(72976),e.A(35285),e.A(42598),e.A(97938),e.A(95369),e.A(82926)]);if(n)return;let M=z.current,C=R.current,A=L.current,j=[...M,...C],E=0,$=0,P=0,N=0;for(let e of j)E+=(e.vx+.5)*m,$+=(e.vy+.5)*m,P+=(e.vz+.5)*m,N++;if(0===N)for(let e of A)E+=(e.aabb[0]+e.aabb[3])/2,$+=(e.aabb[1]+e.aabb[4])/2,P+=(e.aabb[2]+e.aabb[5])/2,N++;let T=new f(E/N,$/N,P/N),B=4*m;for(let e of j){let t=(e.vx+.5)*m-T.x,n=(e.vy+.5)*m-T.y,r=(e.vz+.5)*m-T.z;B=Math.max(B,Math.sqrt(t*t+n*n+r*r))}for(let e of A){let t=(e.aabb[0]+e.aabb[3])/2-T.x,n=(e.aabb[1]+e.aabb[4])/2-T.y,r=(e.aabb[2]+e.aabb[5])/2-T.z;B=Math.max(B,Math.sqrt(t*t+n*n+r*r))}let F=new u(t,!0,{preserveDrawingBuffer:!1}),V=new c(F);V.clearColor=new x(.04,.05,.07,1);let O=new d("divergence-cam",Math.PI/4,Math.PI/3,2.4*B,T,V);O.attachControl(t,!0),(0,a.disableWheelZoom)(O),b.current=O,g.current={target:T,alpha:O.alpha,beta:O.beta,radius:O.radius},new h("divergence-light",new f(.4,1,.3),V);let Z=null,D="\0",W=Math.max(.02*B,.25*m)/(.9*m),H=[],K=(e,t,n,r,a)=>{if(0===t.length)return;let i=y.CreateSphere(e,{diameter:.9*m,segments:6},V),l=new k(`${e}-mat`,V);l.diffuseColor=new p(1,1,1),l.specularColor=new p(0,0,0),i.material=l,i.metadata={hoverLabel:a},H.push(i);let s=t.length,o=new Float32Array(16*s),u=new Float32Array(4*s);for(let e=0;e<s;e++){let a=t[e],i=a.count/n,l=W*(.5+.5*i);v.Scaling(l,l,l).multiply(v.Translation((a.vx+.5)*m,(a.vy+.5)*m,(a.vz+.5)*m)).copyToArray(o,16*e);let[s,c,d]=r(i);u[4*e]=s,u[4*e+1]=c,u[4*e+2]=d,u[4*e+3]=1}i.thinInstanceSetBuffer("matrix",o,16,!1),i.thinInstanceSetBuffer("color",u,4,!0)},U=()=>{for(let e of((()=>{let e=L.current,t=e.map(e=>`${e.name}:${e.aabb.join(",")}`).join("|");if(t===D||(D=t,Z&&(Z.dispose(!1,!0),Z=null),0===e.length))return;Z=y.CreateBox("scene-proxy",{size:1},V);let n=new k("scene-proxy-mat",V);n.wireframe=!0,n.disableLighting=!0,n.emissiveColor=new p(.32,.4,.52),n.alpha=.35,Z.material=n,Z.isPickable=!0,Z.thinInstanceEnablePicking=!0,Z.metadata={hoverLabels:e.map(e=>e.name)};let r=e.length,a=new Float32Array(16*r);for(let t=0;t<r;t++){let n=e[t].aabb,r=Math.max(n[3]-n[0],.001),i=Math.max(n[4]-n[1],.001),l=Math.max(n[5]-n[2],.001);v.Scaling(r,i,l).multiply(v.Translation((n[0]+n[3])/2,(n[1]+n[4])/2,(n[2]+n[5])/2)).copyToArray(a,16*t)}Z.thinInstanceSetBuffer("matrix",a,16,!0)})(),H))e.dispose(!1,!0);H=[];let e=z.current,t=R.current,n=e.reduce((e,t)=>Math.max(e,t.count),1),a=t.reduce((e,t)=>Math.max(e,t.count),1),i=I.current;if("divergence"===i){let i=new Map(e.map(e=>[o(e),e])),l=new Map(t.map(e=>[o(e),e])),u=new Set([...i.keys(),...l.keys()]),c=[],d=[];for(let e of u){let t=(i.get(e)?.count??0)/n,r=(l.get(e)?.count??0)/a,s=l.get(e)??i.get(e),o=r-t,u={vx:s.vx,vy:s.vy,vz:s.vz,count:1e3*Math.abs(o)};(o>=0?c:d).push(u)}K("div-click",c,1e3,r.heatRgb,"Click-heavy"),K("div-gaze",d,1e3,s,"Gaze-heavy")}else("overlay"===i||"gaze"===i)&&K("gaze-voxel",e,n,s,"Gaze"),("overlay"===i||"click"===i)&&K("click-voxel",t,a,r.heatRgb,"Click")};_.current=U,U(),F.runRenderLoop(()=>V.render());let G=()=>F.resize();window.addEventListener("resize",G);let Y=(0,i.attachMeshHover)(V,t,S),q=(0,a.attachDoubleClickFocus)(V,t,O);w("ready"),l=()=>{window.removeEventListener("resize",G),Y(),q(),S(null),_.current=null,b.current=null,g.current=null,V.dispose(),F.dispose()}}catch(e){if(n)return;w("error"),y(e instanceof Error?e.message:"Failed to render overlay.")}})(),()=>{n=!0,l?.()}},[A,m]),(0,n.useEffect)(()=>{_.current?.()},[d,h,f,m,k]),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("canvas",{ref:p,className:"aspect-video w-full rounded-lg border border-edge bg-ink"}),C?(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:C.x+12,top:C.y+12},children:C.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)(c,{active:"overlay"===k,onClick:()=>M("overlay"),children:"Overlay"}),(0,t.jsx)(c,{active:"gaze"===k,onClick:()=>M("gaze"),children:"Gaze"}),(0,t.jsx)(c,{active:"click"===k,onClick:()=>M("click"),children:"Clicks"}),(0,t.jsx)(c,{active:"divergence"===k,onClick:()=>M("divergence"),children:"Divergence"})]}),(0,t.jsx)(l.ZoomButtons,{onZoom:e=>b.current&&(0,a.stepZoom)(b.current,e),onReset:()=>b.current&&g.current&&(0,a.resetFocus)(b.current,g.current)}),(0,t.jsx)(u,{mode:k})]}):(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?v??"Overlay unavailable.":null})]})}])},76421,e=>{"use strict";var t=e.i(63671),n=e.i(48093);let r={status:"idle",gated:!1,count:0};var a=e.i(60614),i=e.i(2348),l=e.i(2413);let s=new Set,o=[{key:"interaction",label:"Clicks & picks",color:"#fb923c",types:new Set(["pointer_click","mesh_interaction"])},{key:"actors",label:"Scene actors",color:"#e879f9",types:new Set(["node_transform"])},{key:"custom",label:"Custom",color:"#34d399",types:new Set(["custom"])},{key:"camera",label:"Camera",color:"#38bdf8",types:new Set(["camera_sample"])},{key:"pointer",label:"Pointer",color:"#94a3b8",types:new Set(["pointer_move","pointer_down","pointer_up"])},{key:"perf",label:"Perf",color:"#a78bfa",types:new Set(["frame_perf"])},{key:"lifecycle",label:"Lifecycle",color:"#f472b6",types:new Set(["session_start","session_end","scene_change","focus_change","visibility_change","viewport_resize","context_lost","context_restored","runtime_error","capability_change","input_action","resource_sample","compile_stall","mesh_visibility","hover_dwell"])}];function u(e,t,n){let r=Math.max(1,n),a=new Map;o.forEach((e,t)=>{for(let n of e.types)a.set(n,t)});let i=o.map(()=>new Set);for(let n of e){let e=a.get(n.type);if(void 0===e)continue;let l=Math.min(1,Math.max(0,(n.ts-t)/r));i[e].add(Math.round(600*l))}return o.map((e,t)=>({key:e.key,label:e.label,color:e.color,marks:[...i[t]].sort((e,t)=>e-t).map(e=>e/600)})).filter(e=>e.marks.length>0)}function c(e){let t=Math.max(0,Math.round(e/1e3)),n=Math.floor(t/60);return`${n}:${(t%60).toString().padStart(2,"0")}`}function d(e){let t=e.slice(e.lastIndexOf("/")+1);return t.length>20?`${t.slice(0,19)}\u2026`:t}function h({lanes:e,duration:n,progress:r,onSeek:a,hiddenTypes:i}){let l=e.filter(e=>{let t=o.find(t=>t.key===e.key);if(!t)return!0;for(let e of t.types)if(!i.has(e))return!0;return!1});if(0===l.length)return null;let s=`${Math.min(100,Math.max(0,r/Math.max(1,n)*100))}%`;return(0,t.jsxs)("div",{className:"mt-4",children:[(0,t.jsx)("div",{className:"mb-1.5 flex flex-wrap items-center gap-x-3 gap-y-1 text-[10px] text-fg-muted",children:l.map(e=>(0,t.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,t.jsx)("span",{"aria-hidden":!0,className:"inline-block h-2 w-2 rounded-sm",style:{backgroundColor:e.color}}),e.label,(0,t.jsxs)("span",{className:"tabular-nums text-fg-muted",children:["(",e.marks.length,")"]})]},e.key))}),(0,t.jsxs)("button",{type:"button","aria-label":"Event timeline — click to seek",className:"relative block w-full cursor-pointer select-none rounded-md border border-edge bg-ink/60 p-1.5 text-left",onClick:e=>{var t;let r;return t=e.clientX,void a(Math.min(1,Math.max(0,(t-(r=e.currentTarget.getBoundingClientRect()).left)/(r.width||1)))*n)},children:[(0,t.jsx)("div",{className:"flex flex-col gap-1",children:l.map(e=>(0,t.jsx)("div",{className:"relative h-2.5 rounded-sm bg-white/5",children:e.marks.map((n,r)=>(0,t.jsx)("span",{"aria-hidden":!0,className:"pointer-events-none absolute top-0 h-full w-px",style:{left:`${100*n}%`,backgroundColor:e.color,opacity:.85}},r))},e.key))}),(0,t.jsx)("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-y-1 w-px bg-saffron",style:{left:s}})]})]})}e.s(["SessionReplayView",0,function({api:o,sessionId:m,hiddenTypes:f,isLive:p=!1}){let b=(0,n.useRef)(null),g=(0,n.useRef)(null),x=(0,n.useRef)(0),w=(0,n.useRef)(f??s),v=(0,n.useRef)(!1),y=(0,n.useRef)(null),k=(0,n.useRef)(!1),M=(0,n.useRef)(!1),C=(0,n.useRef)(null),S=(0,n.useRef)(0),z=(0,n.useRef)([]),R=(0,n.useRef)([]),L=(0,n.useRef)([]),I=(0,n.useRef)(!0),_=(0,n.useRef)("birdview"),A=(0,n.useRef)(null),j=(0,n.useRef)(null),E=(0,n.useRef)([]),$=(0,n.useRef)(null),P=(0,n.useRef)(null),[N,T]=(0,n.useState)("idle"),[B,F]=(0,n.useState)(null),[V,O]=(0,n.useState)(0),[Z,D]=(0,n.useState)(0),[W,H]=(0,n.useState)(!1),[K,U]=(0,n.useState)([]),[G,Y]=(0,n.useState)([]),[q,X]=(0,n.useState)([]),[J,Q]=(0,n.useState)(!0),[ee,et]=(0,n.useState)(!1),[en,er]=(0,n.useState)("birdview"),[ea,ei]=(0,n.useState)(null),[el,es]=(0,n.useState)(!1),[eo,eu]=(0,n.useState)(!1),[ec,ed]=(0,n.useState)(null);(0,n.useEffect)(()=>{I.current=J},[J]),(0,n.useEffect)(()=>{M.current=W},[W]),(0,n.useEffect)(()=>{k.current=ee},[ee]),(0,n.useEffect)(()=>{_.current=en,v.current=!0},[en]),(0,n.useEffect)(()=>{w.current=f??s,v.current=!0},[f]),(0,n.useEffect)(()=>{let t=b.current;if(!t)return;let n=!1,r=null;return T("loading"),F(null),H(!1),O(0),D(0),U([]),Y([]),X([]),ei(null),A.current=null,z.current=[],R.current=[],L.current=[],x.current=0,$.current=null,E.current=[],j.current=null,es(!1),eu(!1),ed(null),(async()=>{try{let[{Engine:l},{Scene:s},{ArcRotateCamera:c},{UniversalCamera:d},{HemisphericLight:h},{Vector3:f,Color3:b,Color4:P,Matrix:N},{MeshBuilder:B},{StandardMaterial:F},{ReplayPlayer:V}]=await Promise.all([e.A(69721),e.A(341),e.A(21342),e.A(98211),e.A(72976),e.A(35285),e.A(42598),e.A(97938),e.A(85461),e.A(82926)]),Z=await o.sessionEvents(m);if(n)return;if(0===Z.length)return void T("empty");let W=Z[0].ts,K=Z[0].ts;for(let e of Z)e.ts<W&&(W=e.ts),e.ts>K&&(K=e.ts);let G=await (0,a.mergeSceneProxies)(o,{since:W-1,until:K+1});if(n)return;let q=[...Z].sort((e,t)=>e.ts-t.ts),J=q[0].ts,Q=[],ee=[],en=new Map,er=null;for(let e of q){let t=e.ts-J;if("camera_sample"===e.type){er=[e.position[0],e.position[1],e.position[2]],Q.push({at:t,position:er,direction:[e.direction[0],e.direction[1],e.direction[2]],..."number"==typeof e.fov?{fov:e.fov}:{}});continue}if("node_transform"===e.type){if(e.boneId)continue;let n=e.childPath?`${e.nodeId}/${e.childPath}`:e.nodeId,r=en.get(n);r||(r=[],en.set(n,r)),r.push({at:t,position:[e.position[0],e.position[1],e.position[2]]});continue}if("pointer_click"===e.type&&e.hitPoint){let n=e.ray?.origin??er;if(!n)continue;ee.push({at:t,type:"pointer_click",origin:[n[0],n[1],n[2]],hit:[e.hitPoint[0],e.hitPoint[1],e.hitPoint[2]],...e.hitMesh?{mesh:e.hitMesh}:{}});continue}if("mesh_interaction"===e.type&&e.point){if(!er)continue;ee.push({at:t,type:"mesh_interaction",origin:[er[0],er[1],er[2]],hit:[e.point[0],e.point[1],e.point[2]],...e.mesh?{mesh:e.mesh}:{}})}}if(0===Q.length&&0===ee.length&&0===en.size)return void T("empty");let ea=new l(t,!0,{preserveDrawingBuffer:!1}),el=new s(ea);el.clearColor=new P(.04,.05,.07,1),j.current=el;let es=new c("birdview-cam",-Math.PI/2,.22,12,f.Zero(),el);es.attachControl(t,!0),(0,i.disableWheelZoom)(es),g.current=es,new h("replay-light",new f(0,1,0),el);let eo=new d("replay-follow-cam",f.Zero(),el);eo.minZ=.05,eo.fov=Math.PI/3,el.activeCamera=es;let eu="birdview",ec=B.CreateGround("replay-ground",{width:20,height:20,subdivisions:20},el),ed=new F("replay-ground-mat",el);ed.diffuseColor=new b(.12,.14,.18),ed.wireframe=!0,ec.material=ed;let eh=new Set(en.keys()),em=new Set(Array.from(eh,e=>e.slice(e.lastIndexOf("/")+1))),ef=[],ep=[],eb=new Set,eg=e=>{if(eb.has(e.name)||(e=>{if(e.path){for(let t of eh)if(e.path===t||e.path.endsWith(`/${t}`))return!0}return em.has(e.name)})(e))return!1;eb.add(e.name);let t=e.aabb,n=Math.max(t[3]-t[0],.001),r=Math.max(t[4]-t[1],.001),a=Math.max(t[5]-t[2],.001),i=B.CreateBox(`replay-proxy-${e.name}`,{width:n,height:r,depth:a},el);i.position=new f((t[0]+t[3])/2,(t[1]+t[4])/2,(t[2]+t[5])/2);let l=new F(`replay-proxy-mat-${e.name}`,el);return l.wireframe=!0,l.disableLighting=!0,l.emissiveColor=new b(.32,.4,.52),l.alpha=.35,i.material=l,i.isPickable=!1,$.current&&i.setEnabled(!1),ep.push(i),ef.push({name:e.name,center:new f((t[0]+t[3])/2,t[4],(t[2]+t[5])/2)}),!0};for(let e of G)eg(e);z.current=ef,R.current=ef.map(()=>null),Y(ef.map(e=>e.name)),E.current=ep;let ex=async()=>{let e=await (0,a.mergeSceneProxies)(o,{since:W-1}).catch(()=>null);if(n||!e)return;let t=!1;for(let n of e)eg(n)&&(t=!0);t&&(z.current=ef,R.current=ef.map((e,t)=>R.current[t]??null),Y(ef.map(e=>e.name)),v.current=!0)},ew=[[.91,.47,.98],[.4,.95,.6],[.98,.8,.3],[.45,.85,1]],ev=e=>{let t=e.indexOf("/");return -1===t?e:e.slice(0,t)},ey=[],ek=new Map,eM=0,eC=(e,t,n)=>{let r=B.CreateSphere(`replay-actor-${e}`,{diameter:.5,segments:12},el),a=new F(`replay-actor-mat-${e}`,el);a.disableLighting=!0;let i=ew[eM%ew.length];a.emissiveColor=new b(i[0],i[1],i[2]),r.material=a,r.isPickable=!1,r.isVisible=!1,eM++;let l={key:e,mesh:r,samples:n,driveKey:t};return ey.push(l),ek.set(e,l),l},eS=new Map,ez=new Map;for(let[e,t]of en){if(0===t.length)continue;let n=ev(e);if(e===n)eS.set(n,t);else{let r=ez.get(n);(!r||t.length>r.samples.length)&&ez.set(n,{key:e,samples:t})}}for(let e of new Set([...eS.keys(),...ez.keys()])){let t=eS.get(e);if(t)eC(e,e,t);else{let t=ez.get(e);eC(e,t.key,t.samples)}}L.current=ey.map(()=>null),X(ey.map(e=>e.key));let eR=(e,t)=>{if(0===e.length||t<e[0].at)return null;let n=0,r=e.length-1,a=-1;for(;n<=r;){let i=n+r>>1;e[i].at<=t?(a=i,n=i+1):r=i-1}if(a<0)return null;let i=e[a],l=e[a+1];if(!l)return i.position;let s=l.at-i.at;if(s<=0)return i.position;let o=Math.max(0,Math.min(1,(t-i.at)/s));return[i.position[0]+(l.position[0]-i.position[0])*o,i.position[1]+(l.position[1]-i.position[1])*o,i.position[2]+(l.position[2]-i.position[2])*o]},eL=1,eI=1.4,e_=B.CreateSphere("replay-camera-origin",{diameter:.35,segments:12},el),eA=new F("replay-camera-origin-mat",el);eA.disableLighting=!0,eA.emissiveColor=new b(.6,.9,1),e_.material=eA;let ej=B.CreateLines("replay-camera-frustum",{points:[f.Zero(),new f(0,0,1)]},el);ej.color=new b(.7,.95,1),ej.isPickable=!1;let eE=B.CreateCylinder("replay-camera-cone",{height:1,diameterTop:0,diameterBottom:1,tessellation:24},el);eE.bakeTransformIntoVertices(N.RotationX(-Math.PI/2).multiply(N.Translation(0,0,.5)));let e$=new F("replay-camera-cone-mat",el);e$.disableLighting=!0,e$.emissiveColor=new b(.4,.78,1),e$.alpha=.16,e$.backFaceCulling=!1,eE.material=e$,eE.isPickable=!1,eE.isVisible=!1;let eP=(e,t,n,r)=>{if(e?.dispose(),0===n.length)return null;let a=B.CreateLineSystem(t,{lines:n,...r?{colors:r,useVertexAlpha:!0}:{}},el);return a.isPickable=!1,a},eN=null,eT=null,eB=null,eF=()=>{let e=w.current,t=[],n=[];for(let r of ee){if(e.has(r.type))continue;let[a,i,l]=r.hit,s="mesh_interaction"===r.type?new P(.45,.85,1,.32):new P(1,.7,.35,.32);t.push([new f(a-.1,i,l),new f(a+.1,i,l)]),t.push([new f(a,i-.1,l),new f(a,i+.1,l)]),t.push([new f(a,i,l-.1),new f(a,i,l+.1)]),n.push([s,s],[s,s],[s,s])}eB=eP(eB,"replay-persistent-marks",t,n)};eF();let eV=B.CreateSphere("replay-glow",{diameter:1,segments:12},el),eO=new F("replay-glow-mat",el);eO.disableLighting=!0,eO.emissiveColor=new b(1,.62,.2),eO.alpha=0,eV.material=eO,eV.isPickable=!1,eV.isVisible=!1;let eZ=1/0,eD=1/0,eW=1/0,eH=-1/0,eK=-1/0,eU=-1/0,eG=!1,eY=e=>{eZ=Math.min(eZ,e[0]),eD=Math.min(eD,e[1]),eW=Math.min(eW,e[2]),eH=Math.max(eH,e[0]),eK=Math.max(eK,e[1]),eU=Math.max(eU,e[2])},eq=()=>{let e;if(eG||!Number.isFinite(eZ))return;let t=(eZ+eH)/2,n=(eD+eK)/2,r=(eW+eU)/2,a=eH-eZ,i=eK-eD,l=eU-eW,s=Math.sqrt(a*a+i*i+l*l);es.setTarget(new f(t,n,r)),e=1.3*s,es.radius=Number.isFinite(e)?Math.max(8,e):12,eG=!0};for(let e of Q)eY(e.position);for(let e of ee)eY(e.origin),eY(e.hit);for(let e of en.values())for(let t of e)eY(t.position);for(let e of G)eY(e.aabb.slice(0,3)),eY(e.aabb.slice(3,6));eq();{let e=eH-eZ,t=eK-eD,n=eU-eW,r=Number.isFinite(e)?Math.sqrt(e*e+t*t+n*n):0,a=Math.min(Math.max(.035*r,.45),Math.max(.45,.18*r));eL=a/.35,eI=Math.max(.16*r,3.2*a,1.4),e_.scaling.setAll(eL)}let eX=-1,eJ=e=>{var r;let a=v.current;if(!a&&e===eX)return;v.current=!1,eX=e,a&&eF();let i=w.current;(r=_.current)!==eu&&(eu=r,"follow"===r?(es.detachControl(),el.activeCamera=eo):(el.activeCamera=es,es.attachControl(t,!0)));let l="follow"===_.current,s=i.has("camera_sample")?null:(e=>{if(0===Q.length)return null;let t=0,n=Q.length-1,r=-1;for(;t<=n;){let a=t+n>>1;Q[a].at<=e?(r=a,t=a+1):n=a-1}return r>=0?Q[r]:null})(e);if(s){e_.position.set(s.position[0],s.position[1],s.position[2]);let e=s.direction,t=Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2])||1,n=eI,r=new f(s.position[0]+e[0]/t*n,s.position[1]+e[1]/t*n,s.position[2]+e[2]/t*n);if(l)e_.isVisible=!1,ej.isVisible=!1,eE.isVisible=!1,eo.position.set(s.position[0],s.position[1],s.position[2]),eo.setTarget(r),s.fov&&s.fov>0&&(eo.fov=s.fov);else{e_.isVisible=!0,ej.isVisible=!0,ej=B.CreateLines("replay-camera-frustum",{points:[e_.position.clone(),r],instance:ej},el);let e=(s.fov&&s.fov>0?s.fov:Math.PI/3)/2,t=n*Math.tan(e);eE.isVisible=!0,eE.position.copyFrom(e_.position),eE.lookAt(r),eE.scaling.set(2*t,2*t,n)}}else e_.isVisible=!1,ej.isVisible=!1,eE.isVisible=!1;let o=i.has("node_transform");for(let t of ey){let n=o?null:eR(t.samples,e);if(!n){t.mesh.isVisible=!1;continue}t.mesh.isVisible=!0,t.mesh.position.set(n[0],n[1],n[2])}let u=ee.filter(t=>!i.has(t.type)&&t.at<=e&&t.at>=e-2200),c=[],d=[],h=[],m=[],p=null;for(let t of u){let n=e-t.at,r=Math.max(0,Math.min(1,1-n/2200)),a=new P(1,.62,.2,.18+.72*r),i=new f(t.origin[0],t.origin[1],t.origin[2]),l=new f(t.hit[0],t.hit[1],t.hit[2]);c.push([i,l]),d.push([a,a]);let s=.12+.08*r;h.push([new f(l.x-s,l.y,l.z),new f(l.x+s,l.y,l.z)]),h.push([new f(l.x,l.y-s,l.z),new f(l.x,l.y+s,l.z)]),h.push([new f(l.x,l.y,l.z-s),new f(l.x,l.y,l.z+s)]);let o=new P(1,.78,.42,.22+.72*r);if(m.push([o,o],[o,o],[o,o]),n<=900){let e=1-n/900;(!p||e>p.t)&&(p={hit:t.hit,t:e})}}if(p){let e=.25+.9*p.t;eV.isVisible=!0,eV.scaling.set(e,e,e),eV.position.set(p.hit[0],p.hit[1],p.hit[2]),eO.alpha=.12+.5*p.t}else eV.isVisible=!1;let b=null,g=-1/0;for(let e of u)e.mesh&&e.at>g&&(g=e.at,b=e.mesh);b!==A.current&&(A.current=b,n||ei(b)),eN=eP(eN,"replay-trail-lines",c,d),eT=eP(eT,"replay-trail-hits",h,m)},eQ=q.length>0?q[q.length-1].ts-J:0,e0=eQ,e1=q.length>0?q[q.length-1].ts:-1/0,e2=q.map(e=>({type:e.type,ts:e.ts})),e5=0,e3=null;if(p)y.current=null,C.current=e=>{if(n)return;let t="number"==typeof e.ts?e.ts:NaN;if(!Number.isFinite(t)||t<=e1)return;e1=t;let r=t-J;if(r>e0&&(e0=r),r>eQ&&(eQ=r),e2.push({type:e.type,ts:t}),"camera_sample"===e.type){let t=e.position,n=e.direction;if(t&&n){let a=[t[0],t[1],t[2]];er=a;let i="number"==typeof e.fov?e.fov:void 0;Q.push({at:r,position:a,direction:[n[0],n[1],n[2]],...void 0!==i?{fov:i}:{}}),eY(a),eq()}}else if("pointer_click"===e.type){let t=e.hitPoint,n=e.ray,a=n?.origin??er;if(t&&a){let n="string"==typeof e.hitMesh?e.hitMesh:void 0;ee.push({at:r,type:"pointer_click",origin:[a[0],a[1],a[2]],hit:[t[0],t[1],t[2]],...n?{mesh:n}:{}}),eY(t),v.current=!0}}else if("mesh_interaction"===e.type){let t=e.point;if(t&&er){let n="string"==typeof e.mesh?e.mesh:void 0;ee.push({at:r,type:"mesh_interaction",origin:[er[0],er[1],er[2]],hit:[t[0],t[1],t[2]],...n?{mesh:n}:{}}),eY(t),v.current=!0}}else if("node_transform"===e.type){let t=e.position;if(e.boneId||"string"!=typeof e.nodeId||!t)return;let n="string"==typeof e.childPath?e.childPath:void 0,a=n?`${e.nodeId}/${n}`:e.nodeId;((e,t)=>{let n=ev(e),r=ek.get(n);if(!r){r=eC(n,e,[]);let t=L.current;L.current=ey.map((e,n)=>t[n]??null),X(ey.map(e=>e.key))}e===r.driveKey?r.samples.push(t):e===n&&r.driveKey!==n&&(r.driveKey=n,r.samples.length=0,r.samples.push(t))})(a,{at:r,position:[t[0],t[1],t[2]]}),eY(t)}let a=performance.now();a-e5>250&&(e5=a,U(u(e2,J,Math.max(1,eQ)))),k.current&&r>x.current&&(x.current=r)},S.current=eQ,x.current=eQ,k.current=!0,et(!0),H(!1),O(eQ),D(eQ),U(u(e2,J,Math.max(1,eQ))),eJ(eQ),e3=setInterval(()=>void ex(),4e3);else{let e=new V(Z,{reset(){},apply(){}},{onProgress:e=>{n||(x.current=e,D(e))},onComplete:()=>{n||H(!1)}});y.current=e,O(e.durationMs),U(u(q,J,e.durationMs)),e.update(0),eJ(0)}let e4=N.Identity(),e6=new Map,e8=e=>{let t=e6.get(e);if(t)return t;let n={w:e.offsetWidth||60,h:e.offsetHeight||16};return e.offsetWidth>0&&e6.set(e,n),n},e9=performance.now(),e7=0;ea.runRenderLoop(()=>{if(p){let e=performance.now(),t=e-e9;if(e9=e,k.current)x.current+=t,x.current>eQ&&(eQ=x.current),S.current=eQ,D(x.current),e-e7>250&&(e7=e,O(eQ));else if(M.current){let e=x.current+t;e>=eQ&&(e=eQ),x.current=e,D(e)}}eJ(x.current),el.render(),(()=>{if(!I.current)return;let e=t.clientWidth||ea.getRenderWidth(),n=t.clientHeight||ea.getRenderHeight(),r=es.viewport.toGlobal(e,n),a=el.getTransformMatrix(),i=A.current,l=e=>e.slice(e.lastIndexOf("/")+1),s=e=>!!i&&(i===e||l(i)===l(e)||e.endsWith(`/${i}`)||i.endsWith(`/${e}`)),o=[],u=z.current,c=R.current;for(let e=0;e<u.length;e++){let t=c[e];if(!t)continue;let n=f.Project(u[e].center,e4,a,r);if(n.z<0||n.z>1){t.style.opacity="0";continue}o.push({el:t,x:n.x,y:n.y,liftPct:140,highlighted:s(u[e].name)})}let d=L.current;for(let e=0;e<ey.length;e++){let t=d[e];if(!t)continue;let n=ey[e].mesh;if(!n.isVisible){t.style.opacity="0";continue}let i=f.Project(n.position,e4,a,r);if(i.z<0||i.z>1){t.style.opacity="0";continue}o.push({el:t,x:i.x,y:i.y,liftPct:180,highlighted:s(ey[e].key)})}o.sort((e,t)=>e.highlighted!==t.highlighted?e.highlighted?-1:1:e.y-t.y||e.x-t.x);let h=[];for(let e of o){let{w:t,h:n}=e8(e.el),r=e.x-t/2,a=e.x+t/2,i=e.y-e.liftPct/100*n,l=i,s=!0,o=0;for(;s&&o++<256;)for(let e of(s=!1,h))r<e.right&&a>e.left&&l<e.bottom&&l+n>e.top&&(l=e.bottom+1,s=!0);h.push({left:r,right:a,top:l,bottom:l+n});let u=l-i;e.el.style.opacity="1",e.el.style.zIndex=e.highlighted?"10":"",e.el.style.transform=`translate(${e.x}px, ${e.y+u}px) translate(-50%, -${e.liftPct}%)`}})()});let te=()=>ea.resize();window.addEventListener("resize",te),T("ready"),r=()=>{window.removeEventListener("resize",te),e3&&clearInterval(e3),C.current=null,y.current?.pause(),ej.dispose(),eE.dispose(),eN?.dispose(),eT?.dispose(),eB?.dispose(),eV.dispose(),$.current?.dispose(),$.current=null,E.current=[],j.current=null,el.dispose(),ea.dispose(),g.current=null,y.current=null}}catch(e){if(n)return;T("error"),F(e instanceof Error?e.message:"Failed to load replay.")}})(),()=>{n=!0,r?.()}},[o,m,p]);let eh=(0,n.useCallback)(()=>{if(p){et(!1),k.current=!1,H(e=>{let t=!e;return M.current=t,t});return}let e=y.current;e&&H(t=>(t?e.pause():e.play(),!t))},[p]),em=(0,n.useCallback)(e=>{if(p){et(!1),k.current=!1,H(!1),M.current=!1,x.current=e,D(e);return}let t=y.current;t&&(t.pause(),t.seek(e),H(!1),x.current=e,D(e))},[p]),ef=(0,n.useCallback)(()=>{et(!0),k.current=!0,H(!1),M.current=!1,x.current=S.current,D(S.current)},[]),{gated:ep}=function(e,t,a,i,l){let[s,o]=(0,n.useState)(r),u=(0,n.useRef)(i),c=(0,n.useRef)(l);return u.current=i,c.current=l,(0,n.useEffect)(()=>a?e.liveSession(t,e=>u.current(e),{onReset:()=>c.current(),onState:o}):void o(r),[e,t,a]),s}(o,m,p&&"ready"===N,e=>C.current?.(e),()=>{}),eb=(0,n.useCallback)(e=>{if(!ea)return!1;if(ea===e)return!0;let t=e=>e.slice(e.lastIndexOf("/")+1);return t(ea)===t(e)||e.endsWith(`/${ea}`)||ea.endsWith(`/${e}`)},[ea]),eg=(0,n.useCallback)(async t=>{let n=j.current;if(n){eu(!0),ed(`Loading ${t.name}…`);try{let[{loadSceneBackdrop:r}]=await Promise.all([e.A(3633),e.A(80610)]);if(j.current!==n)return;$.current?.dispose();let a=await r(n,t);if(j.current!==n)return void a.dispose();for(let e of($.current=a,E.current))e.setEnabled(!1);v.current=!0,es(!0),ed(`Loaded ${t.name} (${a.meshes.length} meshes).`)}catch(e){ed(e instanceof Error?e.message:"Could not load model.")}finally{eu(!1)}}},[]),ex=(0,n.useCallback)(e=>{let t=e.target.files?.[0];e.target.value="",t&&eg(t)},[eg]),ew=(0,n.useCallback)(()=>{for(let e of($.current?.dispose(),$.current=null,E.current))e.setEnabled(!0);v.current=!0,es(!1),ed(null)},[]);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("canvas",{ref:b,className:"aspect-video w-full rounded-lg border border-edge bg-ink"}),(0,t.jsxs)("div",{className:`pointer-events-none absolute inset-0 overflow-hidden ${J?"":"hidden"}`,children:[G.map((e,n)=>(0,t.jsx)("div",{title:e,ref:e=>{e&&(R.current[n]=e)},className:`absolute left-0 top-0 whitespace-nowrap rounded px-1.5 py-0.5 text-[10px] font-medium opacity-0 transition-colors ${eb(e)?"bg-amber/30 text-white ring-2 ring-amber shadow-lg shadow-amber/30":"bg-ink/80 text-saffron ring-1 ring-amber/30"}`,children:d(e)},e)),q.map((e,n)=>(0,t.jsx)("div",{title:e,ref:e=>{e&&(L.current[n]=e)},className:`absolute left-0 top-0 whitespace-nowrap rounded px-1.5 py-0.5 text-[10px] font-medium opacity-0 transition-colors ${eb(e)?"bg-fuchsia-400/30 text-white ring-2 ring-fuchsia-300 shadow-lg shadow-fuchsia-500/30":"bg-ink/80 text-fuchsia-300 ring-1 ring-fuchsia-400/30"}`,children:d(e)},`actor-${e}`))]}),"ready"===N&&(G.length>0||q.length>0)?(0,t.jsx)("button",{type:"button",onClick:()=>Q(e=>!e),className:"absolute left-3 top-3 rounded-md border border-edge bg-ink/80 px-2 py-1 text-xs font-medium text-fg transition hover:bg-ink hover:text-white","aria-pressed":J?"true":"false",children:J?"Hide labels":"Show labels"}):null,"ready"===N&&"birdview"===en?(0,t.jsx)(l.ZoomButtons,{onZoom:e=>g.current&&(0,i.stepZoom)(g.current,e)}):null,"ready"!==N?(0,t.jsx)("div",{className:"pointer-events-none absolute inset-0 grid place-items-center text-sm text-fg-muted",children:"loading"===N?"Loading replay…":"empty"===N?"No replayable events (raw retention may be disabled).":"error"===N?B??"Replay unavailable.":null}):null]}),(0,t.jsxs)("div",{className:"mt-3 flex items-center gap-3",children:[(0,t.jsx)("button",{type:"button",onClick:eh,disabled:"ready"!==N,className:"rounded-md bg-amber px-3 py-1.5 text-sm font-medium text-ink transition hover:bg-ember disabled:opacity-40",children:W?"Pause":"Play"}),p?(0,t.jsxs)("button",{type:"button",onClick:ef,disabled:"ready"!==N,"aria-pressed":ee?"true":"false",className:`flex items-center gap-1.5 rounded-md px-2.5 py-1.5 text-sm font-medium transition disabled:opacity-40 ${ee?"bg-rose-500/20 text-rose-300 ring-1 ring-rose-400/40":"border border-edge text-fg hover:bg-ink hover:text-white"}`,children:[(0,t.jsx)("span",{className:`inline-block h-2 w-2 rounded-full ${ee?"animate-pulse bg-rose-400":"bg-fg-muted"}`}),ee?"LIVE":"Resume live"]}):null,(0,t.jsxs)("div",{role:"group","aria-label":"Camera view",className:"flex items-center rounded-md border border-edge p-0.5 text-xs font-medium",children:[(0,t.jsx)("button",{type:"button",onClick:()=>er("birdview"),disabled:"ready"!==N,"aria-pressed":"birdview"===en?"true":"false",className:`rounded px-2 py-1 transition disabled:opacity-40 ${"birdview"===en?"bg-amber text-ink":"text-fg hover:text-white"}`,children:"Birdview"}),(0,t.jsx)("button",{type:"button",onClick:()=>er("follow"),disabled:"ready"!==N,"aria-pressed":"follow"===en?"true":"false",className:`rounded px-2 py-1 transition disabled:opacity-40 ${"follow"===en?"bg-amber text-ink":"text-fg hover:text-white"}`,children:"Follow camera"})]}),(0,t.jsx)("span",{className:"w-12 text-right font-mono text-xs tabular-nums text-fg-muted",children:c(Z)}),(0,t.jsx)("input",{type:"range",min:0,max:Math.max(1,V),step:50,value:Math.min(Z,V),onChange:e=>em(Number(e.target.value)),disabled:"ready"!==N,className:"flex-1 accent-amber"}),(0,t.jsx)("span",{className:"w-12 font-mono text-xs tabular-nums text-fg-muted",children:c(V)})]}),"ready"===N?(0,t.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-3",children:[(0,t.jsx)("input",{ref:P,type:"file",accept:".glb,.gltf,model/gltf-binary,model/gltf+json",onChange:ex,className:"hidden"}),(0,t.jsx)("button",{type:"button",onClick:()=>P.current?.click(),disabled:eo,className:"rounded-md border border-edge bg-ink/80 px-2.5 py-1.5 text-xs font-medium text-fg transition hover:bg-ink hover:text-white disabled:opacity-40",children:eo?"Loading model…":el?"Replace model (.glb)":"Load model (.glb)"}),el?(0,t.jsx)("button",{type:"button",onClick:ew,disabled:eo,className:"rounded-md border border-edge px-2.5 py-1.5 text-xs font-medium text-fg transition hover:bg-ink hover:text-white disabled:opacity-40",children:"Remove model"}):null,ec?(0,t.jsx)("span",{className:"text-xs text-fg-muted",role:"status",children:ec}):(0,t.jsx)("span",{className:"text-xs text-fg-muted",children:"Load a glTF model to replace the wireframe boxes with your real scene."})]}):null,"ready"===N?(0,t.jsx)(h,{lanes:K,duration:V,progress:Z,onSeek:em,hiddenTypes:f??s}):null,p&&ep&&"ready"===N?(0,t.jsx)("p",{className:"mt-2 text-xs text-fg-muted",children:"Live follow is unavailable — raw session retention is disabled on the collector."}):null]})}],76421)},53993,e=>{"use strict";var t=e.i(63671),n=e.i(48093),r=e.i(56054),a=e.i(2348),i=e.i(87456),l=e.i(18637),s=e.i(2413);function o({shape:e,onChange:n}){let r=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"}`,a="sphere"===e,i="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:r(a),"aria-pressed":a,onClick:()=>n("sphere"),children:"Spheres"}),(0,t.jsx)("button",{type:"button",className:r(i),"aria-pressed":i,onClick:()=>n("cube"),children:"Cubes"})]})}e.s(["WorldHeatmap3DView",0,function({voxels:u,cellSize:c,proxyMeshes:d=[],legendTitle:h="Pointer-hit density",legendLow:m="few hits",legendHigh:f="most hits",legendNote:p="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 w=(0,n.useRef)(null),v=(0,n.useRef)(null),y=(0,n.useRef)(null),[k,M]=(0,n.useState)("loading"),[C,S]=(0,n.useState)(null),[z,R]=(0,n.useState)("sphere"),[L,I]=(0,n.useState)(null),_=(0,n.useRef)(u),A=(0,n.useRef)(d),j=(0,n.useRef)(x);_.current=u,A.current=d,j.current=x;let E=(0,n.useRef)(null),$=u.length>0||d.length>0;(0,n.useEffect)(()=>{let t=w.current;if(!t)return;if(!$)return void M("empty");let n=!1,l=null;return M("loading"),S(null),(async()=>{try{let[{Engine:s},{Scene:o},{ArcRotateCamera:u},{HemisphericLight:d},{Vector3:h,Color3:m,Color4:f,Matrix:p},{MeshBuilder:b},{StandardMaterial:g}]=await Promise.all([e.A(69721),e.A(341),e.A(21342),e.A(72976),e.A(35285),e.A(42598),e.A(97938),e.A(95369),e.A(82926)]);if(n)return;let x=_.current,w=A.current,k=0,C=0,S=0,R=0;for(let e of x)k+=(e.vx+.5)*c,C+=(e.vy+.5)*c,S+=(e.vz+.5)*c,R++;if(0===R)for(let e of w)k+=(e.aabb[0]+e.aabb[3])/2,C+=(e.aabb[1]+e.aabb[4])/2,S+=(e.aabb[2]+e.aabb[5])/2,R++;let L=new h(k/R,C/R,S/R),$=4*c;for(let e of x){let t=(e.vx+.5)*c-L.x,n=(e.vy+.5)*c-L.y,r=(e.vz+.5)*c-L.z;$=Math.max($,Math.sqrt(t*t+n*n+r*r))}for(let e of w){let t=(e.aabb[0]+e.aabb[3])/2-L.x,n=(e.aabb[1]+e.aabb[4])/2-L.y,r=(e.aabb[2]+e.aabb[5])/2-L.z;$=Math.max($,Math.sqrt(t*t+n*n+r*r))}let P=new s(t,!0,{preserveDrawingBuffer:!1}),N=new o(P);N.clearColor=new f(.04,.05,.07,1);let T=new u("world-cam",Math.PI/4,Math.PI/3,2.4*$,L,N);T.attachControl(t,!0),(0,a.disableWheelZoom)(T),v.current=T,y.current={target:L,alpha:T.alpha,beta:T.beta,radius:T.radius},new d("world-light",new h(.4,1,.3),N);let B=Math.max(.02*$,.25*c)/(.9*c),F=T.radius,V="cube"===z?b.CreateBox("world-voxel",{size:.9*c},N):b.CreateSphere("world-voxel",{diameter:.9*c,segments:6},N),O=new g("world-voxel-mat",N);O.diffuseColor=new m(1,1,1),O.specularColor=new m(0,0,0),V.material=O;let Z=0,D=new Float32Array(0),W=new Float32Array(0),H=-1,K=()=>{if(0===Z)return;let e=Math.min(8,Math.max(.6,T.radius/F));if(!(.01>Math.abs(e-H))){H=e;for(let t=0;t<Z;t++){let n=W[t]*e,r=16*t;D[r]=n,D[r+5]=n,D[r+10]=n}V.thinInstanceBufferUpdated("matrix")}};N.onBeforeRenderObservable.add(K);let U=null,G="\0",Y=()=>{(()=>{let e=A.current,t=e.map(e=>`${e.name}:${e.aabb.join(",")}`).join("|");if(t===G||(G=t,U&&(U.dispose(!1,!0),U=null),0===e.length))return;U=b.CreateBox("scene-proxy",{size:1},N);let n=new g("scene-proxy-mat",N);n.wireframe=!0,n.disableLighting=!0,n.emissiveColor=new m(.32,.4,.52),n.alpha=.35,U.material=n,U.isPickable=!0,U.thinInstanceEnablePicking=!0,U.metadata={hoverLabels:e.map(e=>e.name)};let r=e.length,a=new Float32Array(16*r);for(let t=0;t<r;t++){let n=e[t].aabb,r=Math.max(n[3]-n[0],.001),i=Math.max(n[4]-n[1],.001),l=Math.max(n[5]-n[2],.001);p.Scaling(r,i,l).multiply(p.Translation((n[0]+n[3])/2,(n[1]+n[4])/2,(n[2]+n[5])/2)).copyToArray(a,16*t)}U.thinInstanceSetBuffer("matrix",a,16,!0)})(),(()=>{let e=_.current,t=j.current,n=e.length;if(0===n){Z=0,V.isVisible=!1;return}let a=(0,r.percentileMax)(e.map(e=>e.count),.95),i=new Float32Array(16*n),l=new Float32Array(4*n),s=new Float32Array(n);for(let t=0;t<n;t++){let n=e[t],o=Math.min(1,n.count/a),u=B*(.5+.5*o);s[t]=u,p.Scaling(u,u,u).multiply(p.Translation((n.vx+.5)*c,(n.vy+.5)*c,(n.vz+.5)*c)).copyToArray(i,16*t);let[d,h,m]=(0,r.heatRgb)(o);l[4*t]=d,l[4*t+1]=h,l[4*t+2]=m,l[4*t+3]=1}Z=n,D=i,W=s,V.isVisible=!0,V.isPickable=!!t,V.thinInstanceEnablePicking=!!t,V.metadata=t?{hoverLabels:t}:null,V.thinInstanceSetBuffer("matrix",D,16,!1),V.thinInstanceSetBuffer("color",l,4,!0),H=-1,K()})()};E.current=Y,Y(),P.runRenderLoop(()=>N.render());let q=()=>P.resize();window.addEventListener("resize",q);let X=(0,i.attachMeshHover)(N,t,I),J=(0,a.attachDoubleClickFocus)(N,t,T);M("ready"),l=()=>{window.removeEventListener("resize",q),X(),J(),I(null),E.current=null,v.current=null,y.current=null,N.dispose(),P.dispose()}}catch(e){if(n)return;M("error"),S(e instanceof Error?e.message:"Failed to render heatmap.")}})(),()=>{n=!0,l?.()}},[z,c,$]),(0,n.useEffect)(()=>{E.current?.()},[u,d,x]);let P=g?g.cells>u.length?` Showing the ${u.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:w,className:"aspect-video w-full rounded-lg border border-edge bg-ink"}),L?(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:L.x+12,top:L.y+12},children:L.label}):null,"ready"===k?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o,{shape:z,onChange:R}),(0,t.jsx)(s.ZoomButtons,{onZoom:e=>v.current&&(0,a.stepZoom)(v.current,e),onReset:()=>v.current&&y.current&&(0,a.resetFocus)(v.current,y.current)}),(0,t.jsx)(l.HeatLegend,{title:h,lowLabel:m,highLabel:f,note:p+P})]}):(0,t.jsx)("div",{className:"pointer-events-none absolute inset-0 grid place-items-center text-sm text-fg-muted",children:"loading"===k?"Rendering…":"empty"===k?b:"error"===k?C??"Heatmap unavailable.":null})]})}])},64434,e=>{"use strict";e.s([],4255),e.i(4255);var t=e.i(48939),n=e.i(53993),r=e.i(19399),a=e.i(39592),i=e.i(63671),l=e.i(48093),s=e.i(56054),o=e.i(2348),u=e.i(87456),c=e.i(18637),d=e.i(2413);let h="__all__";function m(e){return`${e[0]},${e[1]},${e[2]}`}function f({label:e,value:t,onChange:n,allLabel:r,options:a}){return(0,i.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,i.jsx)("span",{className:"font-medium text-fg-muted",children:e}),(0,i.jsxs)("select",{className:"max-w-[12rem] bg-transparent text-white outline-none",value:t,onChange:e=>n(e.target.value),children:[(0,i.jsx)("option",{value:h,children:r}),a.map(e=>(0,i.jsx)("option",{value:e.value,children:e.label},e.value))]})]})}var p=e.i(76421),b=e.i(37215);e.s(["CAMERA_DOME_SUBTITLE",()=>b.CAMERA_DOME_SUBTITLE,"CAMERA_DOME_TITLE",()=>b.CAMERA_DOME_TITLE,"CLICK_RAYS_SUBTITLE",()=>b.CLICK_RAYS_SUBTITLE,"CLICK_RAYS_TITLE",()=>b.CLICK_RAYS_TITLE,"CameraDome3DView",()=>t.CameraDome3DView,"ClickRays3DView",0,function({rays:t,cellSize:n,proxyMeshes:r=[]}){let a=(0,l.useRef)(null),p=(0,l.useRef)(null),b=(0,l.useRef)(null),[g,x]=(0,l.useState)("loading"),[w,v]=(0,l.useState)(null),[y,k]=(0,l.useState)(h),[M,C]=(0,l.useState)(h),[S,z]=(0,l.useState)(null),R=(0,l.useRef)(t),L=(0,l.useRef)(r),I=(0,l.useRef)(y),_=(0,l.useRef)(M);R.current=t,L.current=r,I.current=y,_.current=M;let A=(0,l.useRef)(null),j=t.length>0,E=(0,l.useMemo)(()=>{let e=new Map;for(let n of t){let t=m(n.camVoxel),r=e.get(t);r?r.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]),$=(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)(()=>{y!==h&&(E.some(e=>e.key===y)||k(h))},[y,E]),(0,l.useEffect)(()=>{M!==h&&($.some(e=>e.name===M)||C(h))},[M,$]),(0,l.useEffect)(()=>{let t=a.current;if(!t)return;if(!j)return void x("empty");let r=!1,i=null;return x("loading"),v(null),(async()=>{try{let[{Engine:a},{Scene:l},{ArcRotateCamera:c},{HemisphericLight:d},{Vector3:f,Color3:g,Color4:w,Matrix:v},{MeshBuilder:y},{StandardMaterial:k}]=await Promise.all([e.A(69721),e.A(341),e.A(21342),e.A(72976),e.A(35285),e.A(42598),e.A(97938),e.A(95369),e.A(82926)]);if(r)return;let M=R.current,C=0,S=0,j=0,E=0,$=(e,t,n)=>{C+=e,S+=t,j+=n,E++};for(let e of M)$(e.origin[0],e.origin[1],e.origin[2]),$(e.hit[0],e.hit[1],e.hit[2]);let P=E>0?new f(C/E,S/E,j/E):f.Zero(),N=4*n;for(let e of M)for(let t of[e.origin,e.hit]){let e=t[0]-P.x,n=t[1]-P.y,r=t[2]-P.z;N=Math.max(N,Math.sqrt(e*e+n*n+r*r))}let T=new a(t,!0,{preserveDrawingBuffer:!1}),B=new l(T);B.clearColor=new w(.04,.05,.07,1);let F=new c("rays-cam",Math.PI/4,Math.PI/3,2.4*N,P,B);F.attachControl(t,!0),(0,o.disableWheelZoom)(F),p.current=F,b.current={target:P,alpha:F.alpha,beta:F.beta,radius:F.radius},new d("rays-light",new f(.4,1,.3),B);let V=null,O="\0",Z=[],D=Math.max(3*n,.18*N),W=()=>{for(let e of((()=>{let e=L.current,t=e.map(e=>`${e.name}:${e.aabb.join(",")}`).join("|");if(t===O||(O=t,V&&(V.dispose(!1,!0),V=null),0===e.length))return;V=y.CreateBox("scene-proxy",{size:1},B);let n=new k("scene-proxy-mat",B);n.wireframe=!0,n.disableLighting=!0,n.emissiveColor=new g(.32,.4,.52),n.alpha=.35,V.material=n,V.isPickable=!0,V.thinInstanceEnablePicking=!0,V.metadata={hoverLabels:e.map(e=>e.name)};let r=e.length,a=new Float32Array(16*r);for(let t=0;t<r;t++){let n=e[t].aabb,r=Math.max(n[3]-n[0],.001),i=Math.max(n[4]-n[1],.001),l=Math.max(n[5]-n[2],.001);v.Scaling(r,i,l).multiply(v.Translation((n[0]+n[3])/2,(n[1]+n[4])/2,(n[2]+n[5])/2)).copyToArray(a,16*t)}V.thinInstanceSetBuffer("matrix",a,16,!0)})(),Z))e.dispose(!1,!0);Z=[];let e=R.current,t=L.current,r=I.current,a=_.current,i=r===h?e:e.filter(e=>m(e.camVoxel)===r),l=i.reduce((e,t)=>Math.max(e,t.count),1),o=[],u=[];for(let e of i){let t=e.count/l,[n,r,a]=(0,s.heatRgb)(t),i=new w(n,r,a,.35+.65*t);o.push([new f(e.origin[0],e.origin[1],e.origin[2]),new f(e.hit[0],e.hit[1],e.hit[2])]),u.push([i,i])}if(o.length>0){let e=y.CreateLineSystem("click-rays",{lines:o,colors:u,useVertexAlpha:!0},B);e.isPickable=!1,Z.push(e)}let c=new Map;for(let e of i)c.set(m(e.camVoxel),e.camVoxel);if(c.size>0){let e=y.CreateSphere("rays-eye",{diameter:.6*n,segments:6},B),t=new k("rays-eye-mat",B);t.disableLighting=!0,t.emissiveColor=new g(.9,.95,1),e.material=t;let r=[...c.values()],a=new Float32Array(16*r.length);for(let e=0;e<r.length;e++){let t=r[e];v.Translation((t[0]+.5)*n,(t[1]+.5)*n,(t[2]+.5)*n).copyToArray(a,16*e)}e.thinInstanceSetBuffer("matrix",a,16,!0),Z.push(e)}if(a!==h){let r=e.filter(e=>e.mesh===a);if(r.length>0){let e,i=t.find(e=>e.name===a);if(i){let t=i.aabb;e=new f((t[0]+t[3])/2,(t[1]+t[4])/2,(t[2]+t[5])/2)}else{let t=0,n=0,a=0;for(let e of r)t+=e.hit[0],n+=e.hit[1],a+=e.hit[2];e=new f(t/r.length,n/r.length,a/r.length)}let l=r.reduce((e,t)=>Math.max(e,t.count),1),o=[],u=[];for(let t of r){let n=t.origin[0]-t.hit[0],r=t.origin[1]-t.hit[1],a=t.origin[2]-t.hit[2],i=Math.sqrt(n*n+r*r+a*a)||1,c=t.count/l,d=D*(.4+.6*c),h=new f(e.x+n/i*d,e.y+r/i*d,e.z+a/i*d),[m,p,b]=(0,s.heatRgb)(c),g=new w(m,p,b,1);o.push([e.clone(),h]),u.push([new w(m,p,b,.25),g])}if(o.length>0){let e=y.CreateLineSystem("mesh-rose",{lines:o,colors:u,useVertexAlpha:!0},B);e.isPickable=!1,Z.push(e)}let c=y.CreateSphere("mesh-rose-hub",{diameter:.8*n,segments:8},B),d=new k("mesh-rose-hub-mat",B);d.disableLighting=!0,d.emissiveColor=new g(1,.85,.4),c.material=d,c.position=e,c.isPickable=!0,c.metadata={hoverLabel:a},Z.push(c)}}};A.current=W,W(),T.runRenderLoop(()=>B.render());let H=()=>T.resize();window.addEventListener("resize",H);let K=(0,u.attachMeshHover)(B,t,z),U=(0,o.attachDoubleClickFocus)(B,t,F);x("ready"),i=()=>{window.removeEventListener("resize",H),K(),U(),z(null),A.current=null,p.current=null,b.current=null,B.dispose(),T.dispose()}}catch(e){if(r)return;x("error"),v(e instanceof Error?e.message:"Failed to render click rays.")}})(),()=>{r=!0,i?.()}},[j,n]),(0,l.useEffect)(()=>{A.current?.()},[t,r,n,y,M]),(0,i.jsxs)("div",{className:"relative",children:[(0,i.jsx)("canvas",{ref:a,className:"aspect-video w-full rounded-lg border border-edge bg-ink"}),S?(0,i.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:S.x+12,top:S.y+12},children:S.label}):null,"ready"===g?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)("div",{className:"absolute left-3 top-3 flex gap-2",children:[(0,i.jsx)(f,{label:"Viewpoint",value:y,onChange:k,allLabel:"All viewpoints",options:E.map(e=>({value:e.key,label:`(${e.voxel.join(", ")}) \xb7 ${e.count}`}))}),(0,i.jsx)(f,{label:"Mesh rose",value:M,onChange:C,allLabel:"No mesh focus",options:$.map(e=>({value:e.name,label:`${e.name} \xb7 ${e.count}`}))})]}),(0,i.jsx)(d.ZoomButtons,{onZoom:e=>p.current&&(0,o.stepZoom)(p.current,e),onReset:()=>p.current&&b.current&&(0,o.resetFocus)(p.current,b.current)}),(0,i.jsx)(c.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,i.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?w??"Click rays unavailable.":null})]})},"ERROR_HEATMAP_SUBTITLE",()=>b.ERROR_HEATMAP_SUBTITLE,"ERROR_HEATMAP_TITLE",()=>b.ERROR_HEATMAP_TITLE,"FLOW_SANKEY_HELP",()=>b.FLOW_SANKEY_HELP,"FLOW_SANKEY_SUBTITLE",()=>b.FLOW_SANKEY_SUBTITLE,"FLOW_SANKEY_TITLE",()=>b.FLOW_SANKEY_TITLE,"FlowSankey3DView",()=>r.FlowSankey3DView,"GAZE_CLICK_SUBTITLE",()=>b.GAZE_CLICK_SUBTITLE,"GAZE_CLICK_TITLE",()=>b.GAZE_CLICK_TITLE,"GazeClickDivergence3DView",()=>a.GazeClickDivergence3DView,"SESSION_REPLAY_TITLE",()=>b.SESSION_REPLAY_TITLE,"SessionReplayView",()=>p.SessionReplayView,"WORLD_HEATMAP_SUBTITLE",()=>b.WORLD_HEATMAP_SUBTITLE,"WORLD_HEATMAP_TITLE",()=>b.WORLD_HEATMAP_TITLE,"WorldHeatmap3DView",()=>n.WorldHeatmap3DView,"sessionReplaySubtitle",()=>b.sessionReplaySubtitle,"sessionReplayTitle",()=>b.sessionReplayTitle],64434)},94452,function(e){e.n(e.i(64434))}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,46591,t=>{"use strict";var e=t.i(60699),i=t.i(65678),a=t.i(28215),n=t.i(68282);class r extends e.FlowGraphBlock{constructor(t={}){super(t),this.keyFrames=[];const e="string"==typeof t?.animationType?(0,i.getRichTypeByFlowGraphType)(t.animationType):(0,i.getRichTypeByAnimationType)(t?.animationType??0),a=t?.keyFramesCount??1,n=this.registerDataInput("duration_0",i.RichTypeNumber,0),r=this.registerDataInput("value_0",e);this.keyFrames.push({duration:n,value:r});for(let n=1;n<a+1;n++){const r=this.registerDataInput(`duration_${n}`,i.RichTypeNumber,n===a?t.duration:void 0),s=this.registerDataInput(`value_${n}`,e);this.keyFrames.push({duration:r,value:s})}this.initialValue=this.keyFrames[0].value,this.endValue=this.keyFrames[a].value,this.easingFunction=this.registerDataInput("easingFunction",i.RichTypeAny),this.animation=this.registerDataOutput("animation",i.RichTypeAny),this.propertyName=this.registerDataInput("propertyName",i.RichTypeString,t?.propertyName),this.customBuildAnimation=this.registerDataInput("customBuildAnimation",i.RichTypeAny)}_updateOutputs(t){let e=t._getGlobalContextVariable("interpolationAnimations",[]),i=this.propertyName.getValue(t),a=this.easingFunction.getValue(t),n=this._createAnimation(t,i,a);if(this.animation.setValue(n,t),Array.isArray(n))for(let t of n)e.push(t.uniqueId);else e.push(n.uniqueId);t._setGlobalContextVariable("interpolationAnimations",e)}_createAnimation(t,e,i){let n=this.initialValue.richType,r=[],s=this.initialValue.getValue(t)||n.defaultValue;r.push({frame:0,value:s});let o=this.config?.numberOfKeyFrames??1;for(let e=1;e<o+1;e++){let i=this.keyFrames[e].duration?.getValue(t),a=this.keyFrames[e].value?.getValue(t);e===o-1&&(a=a||n.defaultValue),void 0!==i&&a&&r.push({frame:60*i,value:a})}let u=this.customBuildAnimation.getValue(t);if(u)return u(null,null,t)(r,60,n.animationType,i);if("string"!=typeof e)return e.map(t=>{let e=(0,a.AnimationCreateAnimation)(t,n.animationType,60,i);return e.setKeys(r),e});{let t=(0,a.AnimationCreateAnimation)(e,n.animationType,60,i);return t.setKeys(r),[t]}}getClassName(){return"FlowGraphInterpolationBlock"}}let s=!1;t.s(["FlowGraphInterpolationBlock",0,r,"RegisterFlowGraphInterpolationBlock",0,function(){s||(s=!0,(0,n.RegisterClass)("FlowGraphInterpolationBlock",r))}])}]);