@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.
- package/out/404.html +1 -1
- package/out/__next.__PAGE__.txt +19 -5
- package/out/__next._full.txt +10 -10
- package/out/__next._tree.txt +1 -1
- package/out/_next/static/chunks/{3cp5nmtwxq4gr.js → 0-6mdj5wxsfid.js} +1 -1
- package/out/_next/static/chunks/{2clevl_9ayd0x.js → 0-qthfqvm1jyj.js} +1 -1
- package/out/_next/static/chunks/01viyuclp2gm9.js +1 -0
- package/out/_next/static/chunks/02aym4t2hgo5c.js +1 -0
- package/out/_next/static/chunks/{1fervgvgv10r-.js → 02ic9b5ejugow.js} +1 -1
- package/out/_next/static/chunks/03p70i4c7qt0v.js +1 -0
- package/out/_next/static/chunks/{3zv5kyos9vtmm.js → 03pjr-ivdicng.js} +1 -1
- package/out/_next/static/chunks/041a06-lxipy5.js +1 -0
- package/out/_next/static/chunks/{3-yhe6rcsjh88.js → 06dzkwetqis-5.js} +1 -1
- package/out/_next/static/chunks/{2mjjo0yj-4ro4.js → 06kvanz5-fo52.js} +1 -1
- package/out/_next/static/chunks/{28i3wgvgn_at1.js → 07y8ke_iy59dn.js} +1 -1
- package/out/_next/static/chunks/09jukc-4jl735.js +1 -0
- package/out/_next/static/chunks/{0cmyc-uvk93kl.js → 09khmdgez3t0a.js} +74 -74
- package/out/_next/static/chunks/{2x-7kbwq8tl-o.js → 0_dca4876jshu.js} +196 -196
- package/out/_next/static/chunks/0axcgnl5qzr6e.js +1 -0
- package/out/_next/static/chunks/0ay4fjomijs3n.js +1 -0
- package/out/_next/static/chunks/0c7fy79wlccat.js +1 -0
- package/out/_next/static/chunks/0cqe4-l3imct3.js +1 -0
- package/out/_next/static/chunks/0cssvelju788j.js +1 -0
- package/out/_next/static/chunks/{2-_a-v1xeo5hb.js → 0ctain5xq2wsd.js} +116 -115
- package/out/_next/static/chunks/{3yk0hzfq5rcs6.js → 0df-dr3otg_4w.js} +1 -1
- package/out/_next/static/chunks/{0i9wa8hjd-5tc.js → 0endw997j7ao9.js} +1 -1
- package/out/_next/static/chunks/0ev_pbit1v_qg.js +1 -0
- package/out/_next/static/chunks/0eyw9oiwipywb.js +1 -0
- package/out/_next/static/chunks/0fkzbuo1tex4u.js +1 -0
- package/out/_next/static/chunks/0govas0u0t4w3.js +1 -0
- package/out/_next/static/chunks/{287hakn2ijupp.js → 0guzhnususp3-.js} +2 -2
- package/out/_next/static/chunks/0h7bq_ysu17q7.js +3 -0
- package/out/_next/static/chunks/0hneh_3xzlo28.js +1 -0
- package/out/_next/static/chunks/0iaqwme19z_0s.js +1 -0
- package/out/_next/static/chunks/0ibmar10xndpn.js +1 -0
- package/out/_next/static/chunks/0ii8mqoteppgh.js +11 -0
- package/out/_next/static/chunks/{3ioxfi3bvznhh.js → 0ip6v64di_l6x.js} +1 -1
- package/out/_next/static/chunks/{184pz6z3dflfm.js → 0ixymgjgz3grn.js} +20 -20
- package/out/_next/static/chunks/0kuah8g7lt5ox.js +1 -0
- package/out/_next/static/chunks/0l3k4j19vxm17.js +1 -0
- package/out/_next/static/chunks/0l6hg0ohwh9-m.js +1 -0
- package/out/_next/static/chunks/0m4um4ylhlfan.js +1 -0
- package/out/_next/static/chunks/0mj837d4h0ddq.js +1 -0
- package/out/_next/static/chunks/0nyn-f4905o91.js +1 -0
- package/out/_next/static/chunks/0og6i9rsgkuif.js +1 -0
- package/out/_next/static/chunks/0os1x-fxzgnxs.js +1 -0
- package/out/_next/static/chunks/0otnra7mp0hog.js +1 -0
- package/out/_next/static/chunks/{3p03l0z65c8vc.js → 0oyf2xzv8ofkk.js} +253 -253
- package/out/_next/static/chunks/0qvsy3gcqjm12.js +1 -0
- package/out/_next/static/chunks/{0yd4_xh476fjn.js → 0rl4ddh2vgxyl.js} +97 -97
- package/out/_next/static/chunks/0rwpttmsmqvn_.js +1 -0
- package/out/_next/static/chunks/0so3wjp9ch93y.js +1 -0
- package/out/_next/static/chunks/{36pz_ews7u0xb.js → 0te4g160_rb5d.js} +1 -1
- package/out/_next/static/chunks/0uby-zvu799ef.js +1 -0
- package/out/_next/static/chunks/{2kk_vvmr2xm3d.js → 0uvn0op2mlr2u.js} +12 -12
- package/out/_next/static/chunks/0vwj4hxjm0igv.js +1 -0
- package/out/_next/static/chunks/{0r-x702_jvhud.js → 0w7c30w07uct2.js} +12 -12
- package/out/_next/static/chunks/0wm38z3u2133a.js +1 -0
- package/out/_next/static/chunks/0y7yk5al7_p8q.js +4 -0
- package/out/_next/static/chunks/0ycr0gi6fn6bt.js +1 -0
- package/out/_next/static/chunks/0ywvahq9t0tki.js +1 -0
- package/out/_next/static/chunks/0zh6nslagkby-.js +1 -0
- package/out/_next/static/chunks/{3twr9ds68-9us.js → 0zo8xa0nej3ex.js} +1 -1
- package/out/_next/static/chunks/{1lu7rjfvxj8yj.js → 0zsir95gpf3xw.js} +1 -1
- package/out/_next/static/chunks/{1j4c0nvdo5q68.js → 0zu6ryyj0ig-j.js} +1 -1
- package/out/_next/static/chunks/{1bv-jzy_2jiqs.js → 1-jv8k10q_1uw.js} +1 -1
- package/out/_next/static/chunks/{0xx7_7y5jdlh4.js → 1-s5ioie9a94e.js} +1 -1
- package/out/_next/static/chunks/{27z7j17kcrty_.js → 1-yos1h0qws5e.js} +11 -11
- package/out/_next/static/chunks/10o7brc3x027r.js +1 -0
- package/out/_next/static/chunks/{2xe4bgir5l-9b.js → 10pae4gb9i929.js} +504 -504
- package/out/_next/static/chunks/13p93itm8a3ym.js +1 -0
- package/out/_next/static/chunks/{2mrkv0z2i74pv.js → 147s8i_lktp4_.js} +2 -2
- package/out/_next/static/chunks/{3nwaovnpiyrt8.js → 14tgo5xt_3j4w.js} +3 -3
- package/out/_next/static/chunks/1699hx-vlak0n.js +22 -0
- package/out/_next/static/chunks/{2b5nt7yn-pq3a.js → 16d6n9e77rqti.js} +1 -1
- package/out/_next/static/chunks/{3nr48h9zwum-3.js → 16f3d5dv83rsr.js} +1 -1
- package/out/_next/static/chunks/16i_tpwn_cmr-.js +1 -0
- package/out/_next/static/chunks/{2117sv2qzo6yq.js → 16rfr165nbha0.js} +1 -1
- package/out/_next/static/chunks/16sl51pvzo4tf.js +1 -0
- package/out/_next/static/chunks/1760s-32qpwgg.js +1 -0
- package/out/_next/static/chunks/{3rj-5v0j_2-_2.js → 18kq07c5xy_4g.js} +4 -4
- package/out/_next/static/chunks/{2wgh5i70bzelt.js → 190tbzt861ao3.js} +392 -392
- package/out/_next/static/chunks/19bhv6cupnnyj.js +1 -0
- package/out/_next/static/chunks/1_14pn2wwebxy.js +1 -0
- package/out/_next/static/chunks/{2_lw4d7t-xcqi.js → 1_kikmeubh0wq.js} +523 -522
- package/out/_next/static/chunks/1ay3z6agelsvz.js +1 -0
- package/out/_next/static/chunks/1b-fi3bfmpe31.js +1 -0
- package/out/_next/static/chunks/1bae3tqv53x9_.js +1 -0
- package/out/_next/static/chunks/{2s4fzgzkwjluu.js → 1bf421g4peccx.js} +2 -2
- package/out/_next/static/chunks/1bfony5qsc5tp.js +1 -0
- package/out/_next/static/chunks/{3vtmucpx25o7q.js → 1ddt0ot7kl8vq.js} +584 -584
- package/out/_next/static/chunks/1emz2vjkgck4z.js +1 -0
- package/out/_next/static/chunks/1eogzzw8i1wsg.js +1 -0
- package/out/_next/static/chunks/1g9p2h1-31q8o.js +1 -0
- package/out/_next/static/chunks/1gcz1k1v1woca.js +1 -0
- package/out/_next/static/chunks/1h8lyicgqhpxa.js +1 -0
- package/out/_next/static/chunks/{0e5dcxmkprebg.js → 1hot663akaepl.js} +1 -1
- package/out/_next/static/chunks/1i7pgl3ks5ye0.js +1 -0
- package/out/_next/static/chunks/{0xzamrecplwzw.js → 1i8sk_qgpdjhs.js} +1 -1
- package/out/_next/static/chunks/1kk3ct7pkpf3b.js +1 -0
- package/out/_next/static/chunks/1kq9o8del67le.js +1 -0
- package/out/_next/static/chunks/1l7tzyx2mumlq.js +1 -0
- package/out/_next/static/chunks/1n_uwed9o--go.js +1 -0
- package/out/_next/static/chunks/1o351eldttogn.js +1 -0
- package/out/_next/static/chunks/{1f07l3q77zat1.js → 1ogs4_aj84bfn.js} +1 -1
- package/out/_next/static/chunks/{3_dm45k0vk1aa.js → 1p206txlluipi.js} +565 -565
- package/out/_next/static/chunks/1p2bt1w845v6c.js +1 -0
- package/out/_next/static/chunks/1p3rgz4aef1gk.js +1 -0
- package/out/_next/static/chunks/{0ypejzd74ixbw.js → 1qcgdx9yl0gfx.js} +15 -15
- package/out/_next/static/chunks/1ql3mm2w5r-m8.js +1 -0
- package/out/_next/static/chunks/1qvcyuyshi3ll.js +53 -0
- package/out/_next/static/chunks/1r0yyg5a_0knc.js +1 -0
- package/out/_next/static/chunks/{374lzksboll-t.js → 1sa6qiidtcyk2.js} +1 -1
- package/out/_next/static/chunks/1t-9vrdrsi8le.js +1 -0
- package/out/_next/static/chunks/1t97zo0tlpbnz.js +1 -0
- package/out/_next/static/chunks/1te2tinzqnwck.js +1 -0
- package/out/_next/static/chunks/{3j3ol_d1vsdhx.js → 1trt-m2nrck0v.js} +1 -1
- package/out/_next/static/chunks/{3vu5y270muh-7.js → 1ty9jpwr3o_st.js} +1 -1
- package/out/_next/static/chunks/{415g3asdds1ac.js → 1u6w6veke8rze.js} +1 -1
- package/out/_next/static/chunks/{0-laj-bivzp4x.js → 1u900urmrbv73.js} +1 -1
- package/out/_next/static/chunks/{0o73w0cn5n_vl.js → 1vz2gd8k74lpi.js} +1 -1
- package/out/_next/static/chunks/1wkpl9bfb0wn7.js +1 -0
- package/out/_next/static/chunks/1wrly9a9c3teq.js +1 -0
- package/out/_next/static/chunks/1x0m05155yy4e.js +1 -0
- package/out/_next/static/chunks/{1my968s78he8g.js → 1xf1wfow43ekc.js} +15 -15
- package/out/_next/static/chunks/1y10o40v9odam.js +1 -0
- package/out/_next/static/chunks/{3_gfl66zf638s.js → 1y_zykt3fpen4.js} +901 -906
- package/out/_next/static/chunks/1ye6xtbm16pg4.js +1 -0
- package/out/_next/static/chunks/1z6_57k5h31u7.js +1 -0
- package/out/_next/static/chunks/1zboqft0h6mop.js +1 -0
- package/out/_next/static/chunks/1zr3c351x0ri5.js +1 -0
- package/out/_next/static/chunks/2-5p2lcedvrli.js +1 -0
- package/out/_next/static/chunks/{1_4hh3dfop93j.js → 206hxrq60f1_e.js} +1 -1
- package/out/_next/static/chunks/20r05k3-studj.js +1 -0
- package/out/_next/static/chunks/22gs24kj2du56.js +1 -0
- package/out/_next/static/chunks/22x5pd1gyp7sf.js +1 -0
- package/out/_next/static/chunks/{3qo7e6b73mfxq.js → 22z-2t_yp1jzs.js} +1 -1
- package/out/_next/static/chunks/{3d43gd91r06y6.js → 23hmfdw6z5zfy.js} +507 -505
- package/out/_next/static/chunks/23y1krqnc-8sm.js +1 -0
- package/out/_next/static/chunks/{0gk5rnci1hznh.js → 24tbkj1qkux88.js} +2 -2
- package/out/_next/static/chunks/{2-i29-jdbwww6.js → 26cmri51v7497.js} +111 -111
- package/out/_next/static/chunks/27jalbk9zu-2b.js +1 -0
- package/out/_next/static/chunks/285d2s9096ryc.js +1 -0
- package/out/_next/static/chunks/296ykep2nvppv.js +1 -0
- package/out/_next/static/chunks/29nehg5cal-ug.js +1 -0
- package/out/_next/static/chunks/2_a56_k3x7to6.js +1 -0
- package/out/_next/static/chunks/2a-0l6eb1blh3.js +4 -0
- package/out/_next/static/chunks/{2oacwtbslo90t.js → 2a31-txop1jzg.js} +360 -360
- package/out/_next/static/chunks/2bse5vll1o-x0.js +1 -0
- package/out/_next/static/chunks/2ct40spu9wfj7.js +1 -0
- package/out/_next/static/chunks/{2epukrz6paj9n.js → 2ept01b7t-e03.js} +1 -1
- package/out/_next/static/chunks/{22yht3s7c-xih.js → 2ey5dqelco_g5.js} +1 -1
- package/out/_next/static/chunks/2fd_009hw7y0m.js +1 -0
- package/out/_next/static/chunks/{2fspbfbxbswzd.js → 2ftz9kaxrsgxh.js} +1 -1
- package/out/_next/static/chunks/2gefdnozflr7p.js +1 -0
- package/out/_next/static/chunks/{2as_br1awqk6k.js → 2gs-u1n5uv7iz.js} +496 -496
- package/out/_next/static/chunks/{1a94whad0y57f.js → 2hizqql79u-54.js} +1 -1
- package/out/_next/static/chunks/2iqf2dpdg_vfl.js +1 -0
- package/out/_next/static/chunks/2j7z127s_ycjd.js +1 -0
- package/out/_next/static/chunks/2kax7uslfxdnx.js +31 -0
- package/out/_next/static/chunks/{2laz1v9fg2a2z.js → 2lh_w9rzy3vek.js} +1 -1
- package/out/_next/static/chunks/{3mmy9zsb7zo-m.js → 2ln1na26qwp-3.js} +23 -23
- package/out/_next/static/chunks/2n08l1q5o_27e.js +1 -0
- package/out/_next/static/chunks/2n7268gyd9z-6.js +1 -0
- package/out/_next/static/chunks/2nq9cgjmtqwvp.js +1 -0
- package/out/_next/static/chunks/{25brs445bjbik.js → 2oj8qc_pv14nk.js} +2 -2
- package/out/_next/static/chunks/2q24e72-olbe8.js +1 -0
- package/out/_next/static/chunks/2qc4hscs26cro.js +1 -0
- package/out/_next/static/chunks/2qe46redkqhfg.js +1 -0
- package/out/_next/static/chunks/2qmfe0mqw150h.js +1 -0
- package/out/_next/static/chunks/2qtc0nbl_521e.js +1 -0
- package/out/_next/static/chunks/2rofu6gu1xzuq.js +1 -0
- package/out/_next/static/chunks/2tdi94rkq739i.js +1 -0
- package/out/_next/static/chunks/2u_2sacqa9xa7.js +1 -0
- package/out/_next/static/chunks/2ujqz6088shm5.js +1 -0
- package/out/_next/static/chunks/{3my05px5mv_s5.js → 2urh9qafp3fiw.js} +235 -235
- package/out/_next/static/chunks/{23-y1f_zw56vo.js → 2v06n4z8wsmn9.js} +1 -1
- package/out/_next/static/chunks/2vp-5skbk1nfu.js +1 -0
- package/out/_next/static/chunks/2vu973j_n6cpx.js +1 -0
- package/out/_next/static/chunks/2wwra56rehfcj.js +1 -0
- package/out/_next/static/chunks/2xpwr97h2asal.js +1 -0
- package/out/_next/static/chunks/3000-0b8n9t_2.js +1 -0
- package/out/_next/static/chunks/{0q0i4pdyq66gb.js → 30t3203d7p2da.js} +1 -1
- package/out/_next/static/chunks/{3t4ys6th6gf2w.js → 31kto7-dxkt3z.js} +1 -1
- package/out/_next/static/chunks/{0j0a0wvmmghxj.js → 32oflcl79d8mu.js} +1 -1
- package/out/_next/static/chunks/32ovg81ae0l03.js +1 -0
- package/out/_next/static/chunks/{2c8rmxz151fxa.js → 331kthnvoma7n.js} +224 -224
- package/out/_next/static/chunks/337kn1mn34rc6.js +1 -0
- package/out/_next/static/chunks/{336ckqpboqmbn.js → 33xug8kf0-a1o.js} +1 -1
- package/out/_next/static/chunks/34dcb7_flbrvo.js +1 -0
- package/out/_next/static/chunks/34zotyeqrz_nq.js +1 -0
- package/out/_next/static/chunks/351wsmi75l8db.js +1 -0
- package/out/_next/static/chunks/36yv-ialtpx98.js +1 -0
- package/out/_next/static/chunks/37hwasxtee5e0.js +1 -0
- package/out/_next/static/chunks/37t0iclgxes05.js +1 -0
- package/out/_next/static/chunks/{1x0j78ohufpul.js → 37xnvnx1jxfaf.js} +1 -1
- package/out/_next/static/chunks/{29hkkj9raxte9.js → 38w74ixqt-9co.js} +77 -77
- package/out/_next/static/chunks/{0jap7l5-bskj4.js → 39t2x_9zd2rst.js} +12 -12
- package/out/_next/static/chunks/{38q0enmlg5q9o.js → 39v73timmzwny.js} +2 -2
- package/out/_next/static/chunks/{3puu2_-t0lln9.js → 3_xqc3658d8sw.js} +12 -12
- package/out/_next/static/chunks/3ba8eudvlczwe.js +1 -0
- package/out/_next/static/chunks/3buezhxqc8n6n.js +1 -0
- package/out/_next/static/chunks/3c5iwwj-fhbue.js +1 -0
- package/out/_next/static/chunks/{2kmmk9coo9_b0.js → 3d8ot2tw6yqfq.js} +143 -143
- package/out/_next/static/chunks/3dc057ffe7ij-.js +1 -0
- package/out/_next/static/chunks/3djnlzwj9869o.js +1 -0
- package/out/_next/static/chunks/{2_6b9lraq-exh.js → 3fuqxjjf8o1v9.js} +5 -5
- package/out/_next/static/chunks/{0j2ygtc_-bo3m.js → 3gt6rzg9qw-an.js} +1 -1
- package/out/_next/static/chunks/{0rykrf_vofbad.js → 3h_05w5j8x538.js} +1 -1
- package/out/_next/static/chunks/{3txu-i5qn183a.js → 3hkhd1_k8xohv.js} +321 -321
- package/out/_next/static/chunks/{2h07np207nlx7.js → 3ijcc5tfisfnj.js} +1 -1
- package/out/_next/static/chunks/3j0dbpd9zop3p.js +1 -0
- package/out/_next/static/chunks/{14e4k-718qadd.js → 3ju83xk-ca7ma.js} +163 -168
- package/out/_next/static/chunks/3jxhl4apmhbm1.js +13 -0
- package/out/_next/static/chunks/{1h1gixjbjkbsl.js → 3la99oz_0p0r6.js} +5 -5
- package/out/_next/static/chunks/{1mt4cnd_d6jvf.js → 3n1b34fd5fdrh.js} +1 -1
- package/out/_next/static/chunks/3nq_hq4x3rn3r.js +1 -0
- package/out/_next/static/chunks/3pgb1kkqrdl9t.js +1 -0
- package/out/_next/static/chunks/3pik_-jj-zkfl.js +1 -0
- package/out/_next/static/chunks/{1zmx71cvc6ksk.js → 3q38kdbzd2nbd.js} +1 -1
- package/out/_next/static/chunks/3q5zl4ks17au2.js +1 -0
- package/out/_next/static/chunks/{1t2g1v0ubcsam.js → 3qr10445lte-n.js} +1 -1
- package/out/_next/static/chunks/3r-8bnguvxsyo.js +1 -0
- package/out/_next/static/chunks/3sg56j8boe-3o.js +1 -0
- package/out/_next/static/chunks/3u7zj1-jdg781.js +1 -0
- package/out/_next/static/chunks/{0o0qtv35dqv3i.js → 3wj5dmf6cywz8.js} +239 -239
- package/out/_next/static/chunks/{2iu0_3cx-ny74.js → 3wr_oijfsq8lr.js} +11 -11
- package/out/_next/static/chunks/3xu0dh1ikzwj2.js +1 -0
- package/out/_next/static/chunks/{0vzo-8t8c26k9.js → 3y5tpixt23-fl.js} +1 -1
- package/out/_next/static/chunks/40gjf-_jt8upu.js +5 -0
- package/out/_next/static/chunks/41f12o_5lf-i9.js +1 -0
- package/out/_next/static/chunks/42ma8lqduohlc.js +1 -0
- package/out/_next/static/chunks/43usshq2nc125.js +1 -0
- package/out/_next/static/chunks/{161yjxmdz9obc.js → 44bl4ufopbmyh.js} +1 -1
- package/out/_next/static/chunks/44iutzkw9r21x.js +1 -0
- package/out/_next/static/chunks/turbopack-1xrxa3noq196-.js +1 -0
- package/out/_not-found/__next._full.txt +11 -11
- package/out/_not-found/__next._not-found.__PAGE__.txt +19 -2
- package/out/_not-found/__next._tree.txt +1 -1
- package/out/_not-found.html +1 -1
- package/out/_not-found.txt +11 -11
- package/out/index.html +1 -1
- package/out/index.txt +10 -10
- package/package.json +11 -11
- package/out/__next._head.txt +0 -6
- package/out/__next._index.txt +0 -5
- package/out/_next/static/chunks/0-k4hp87gwues.js +0 -1
- package/out/_next/static/chunks/04zj0yf1qhk1o.js +0 -1
- package/out/_next/static/chunks/06fbalmyyfpsy.js +0 -1
- package/out/_next/static/chunks/07hgbbqksqd1g.js +0 -1
- package/out/_next/static/chunks/08ou2nvy48e0u.js +0 -1
- package/out/_next/static/chunks/08y5-irjbsiy8.js +0 -1
- package/out/_next/static/chunks/0_jrfk2u1u3fi.js +0 -1
- package/out/_next/static/chunks/0a475u_q5i_dd.js +0 -62
- package/out/_next/static/chunks/0aad2r4s4wl1x.js +0 -5
- package/out/_next/static/chunks/0d9pxx1w_zqr9.js +0 -1
- package/out/_next/static/chunks/0gnjtwq-474uc.js +0 -1
- package/out/_next/static/chunks/0gsh_d0m5xss1.js +0 -1
- package/out/_next/static/chunks/0ibzpjo0h731v.js +0 -1
- package/out/_next/static/chunks/0j_3k5qhv_mdx.js +0 -1
- package/out/_next/static/chunks/0jis2w2mfx062.js +0 -1
- package/out/_next/static/chunks/0jjvp2slpf7d6.js +0 -1
- package/out/_next/static/chunks/0ko10wo4rc9-b.js +0 -1
- package/out/_next/static/chunks/0lqmvz6k2h_of.js +0 -1
- package/out/_next/static/chunks/0lwjmr8efrlbt.js +0 -17
- package/out/_next/static/chunks/0noxyupihh8dk.js +0 -1
- package/out/_next/static/chunks/0o1vph7x9shzu.js +0 -1
- package/out/_next/static/chunks/0p6phe9kjlxn8.js +0 -1
- package/out/_next/static/chunks/0ptxb9dcwsw3o.js +0 -1
- package/out/_next/static/chunks/0q8pt8fd0ma30.js +0 -1
- package/out/_next/static/chunks/0qqx9aoz8l5d2.js +0 -1
- package/out/_next/static/chunks/0tsk32q-88t_7.js +0 -1
- package/out/_next/static/chunks/0u7577db_ivyr.js +0 -1
- package/out/_next/static/chunks/0unnrt0un064x.js +0 -1
- package/out/_next/static/chunks/0uygtr4mo3h0v.js +0 -1
- package/out/_next/static/chunks/0vf3facit951s.js +0 -1
- package/out/_next/static/chunks/0xyija62b6txc.js +0 -1
- package/out/_next/static/chunks/0zeb37703zcz3.js +0 -1
- package/out/_next/static/chunks/0zu5ato7-1-q9.js +0 -1
- package/out/_next/static/chunks/0zydv7y47dxgh.js +0 -1
- package/out/_next/static/chunks/103x4jwovb6d-.js +0 -1
- package/out/_next/static/chunks/107wfq84g9-kn.js +0 -1
- package/out/_next/static/chunks/10afagk8yn__n.js +0 -1
- package/out/_next/static/chunks/12ory_c78yl31.js +0 -1
- package/out/_next/static/chunks/133dqp8_7_yo6.js +0 -1
- package/out/_next/static/chunks/1365lgwdd4vuo.js +0 -1
- package/out/_next/static/chunks/146ou-ohb_qhs.js +0 -1
- package/out/_next/static/chunks/14orr68xgdykd.js +0 -1
- package/out/_next/static/chunks/15qfoj-vl9thu.js +0 -1
- package/out/_next/static/chunks/166yqx3_qvbpy.js +0 -1
- package/out/_next/static/chunks/16gwjao676ieb.js +0 -1
- package/out/_next/static/chunks/16rmmzhy2p7bw.js +0 -1
- package/out/_next/static/chunks/17_jjyx4jz9dd.js +0 -1
- package/out/_next/static/chunks/18h9ugdz6igdb.js +0 -1
- package/out/_next/static/chunks/19d8n5t7ka2fb.js +0 -1
- package/out/_next/static/chunks/1_rbzw3n4fk0g.js +0 -1
- package/out/_next/static/chunks/1aa9g197l4twm.js +0 -1
- package/out/_next/static/chunks/1bq0fcnt1wy86.js +0 -1
- package/out/_next/static/chunks/1c6mho7e0enta.js +0 -1
- package/out/_next/static/chunks/1dfaheve77dhi.js +0 -1
- package/out/_next/static/chunks/1dgf112ehnhm1.js +0 -1
- package/out/_next/static/chunks/1eirucr9s6-h5.js +0 -1
- package/out/_next/static/chunks/1fsof7un7igrn.js +0 -1
- package/out/_next/static/chunks/1gvu5a6ffbs7l.js +0 -1
- package/out/_next/static/chunks/1iel4pzhhh-c3.js +0 -1
- package/out/_next/static/chunks/1iojfx3-g4_n9.js +0 -1
- package/out/_next/static/chunks/1j4jt5q7px8sy.js +0 -1
- package/out/_next/static/chunks/1jjw9hxgi2vzi.js +0 -1
- package/out/_next/static/chunks/1k_8olnprvi8r.js +0 -1
- package/out/_next/static/chunks/1l0rt7d4m-xdk.js +0 -5
- package/out/_next/static/chunks/1s0dpdqy480hg.js +0 -1
- package/out/_next/static/chunks/1t-yolk97lmot.js +0 -12
- package/out/_next/static/chunks/1tbes2sv-qzcx.js +0 -1
- package/out/_next/static/chunks/1upy8a5cb75kt.js +0 -1
- package/out/_next/static/chunks/1xed71f608m4b.js +0 -1
- package/out/_next/static/chunks/1z790xxb46gxy.js +0 -1
- package/out/_next/static/chunks/219n3q-_eengm.js +0 -1
- package/out/_next/static/chunks/21wo3vdr_uby8.js +0 -1
- package/out/_next/static/chunks/25gep78-izw79.js +0 -4
- package/out/_next/static/chunks/26i7dn31afdtm.js +0 -1
- package/out/_next/static/chunks/27hbplu797elx.js +0 -1
- package/out/_next/static/chunks/2992eiy52nazj.js +0 -1
- package/out/_next/static/chunks/29_n5j-hg_gsa.js +0 -1
- package/out/_next/static/chunks/29bxq-67oazfg.js +0 -1
- package/out/_next/static/chunks/29ings58w7kp1.js +0 -1
- package/out/_next/static/chunks/2_n0cpkdsjzli.js +0 -1
- package/out/_next/static/chunks/2a3iy701j4r_y.js +0 -1
- package/out/_next/static/chunks/2al9dh3_1ixhv.js +0 -1
- package/out/_next/static/chunks/2awr1c_vfsutb.js +0 -1
- package/out/_next/static/chunks/2bxe3kjr17tdp.js +0 -1
- package/out/_next/static/chunks/2dvbzar93ooc-.js +0 -1
- package/out/_next/static/chunks/2e-vp0e11g9ew.js +0 -1
- package/out/_next/static/chunks/2exj9-0p6n9x-.js +0 -1
- package/out/_next/static/chunks/2gf8l6hbmt7v3.js +0 -1
- package/out/_next/static/chunks/2h9i_adbqaxs4.js +0 -1
- package/out/_next/static/chunks/2jio3sio-_43z.js +0 -1
- package/out/_next/static/chunks/2neieeo9g2u56.js +0 -1
- package/out/_next/static/chunks/2pb_uosb-aa8x.js +0 -1
- package/out/_next/static/chunks/2qu-gpm3ux1l6.js +0 -1
- package/out/_next/static/chunks/2rsi6v7qmqx2b.js +0 -1
- package/out/_next/static/chunks/2tdvuc-27khif.js +0 -1
- package/out/_next/static/chunks/2trolrgd7neax.js +0 -1
- package/out/_next/static/chunks/2uyuafmoe5wi0.js +0 -3
- package/out/_next/static/chunks/2w2e0pxgs-n8f.js +0 -1
- package/out/_next/static/chunks/2xujlsx3stqig.js +0 -1
- package/out/_next/static/chunks/30y71dxdpv52d.js +0 -1
- package/out/_next/static/chunks/32c-e_v8_2xkf.js +0 -1
- package/out/_next/static/chunks/32oj0iudhp8bm.js +0 -1
- package/out/_next/static/chunks/33p9du6y9eegg.js +0 -1
- package/out/_next/static/chunks/38om-j0h0rryk.js +0 -1
- package/out/_next/static/chunks/39cou9lia_g7l.js +0 -1
- package/out/_next/static/chunks/39pkya0_bvcaj.js +0 -1
- package/out/_next/static/chunks/39rhmj_32ujyj.js +0 -1
- package/out/_next/static/chunks/3_1zzmx92j9c0.js +0 -1
- package/out/_next/static/chunks/3_earszshuz4n.js +0 -1
- package/out/_next/static/chunks/3ap_uxc8lx7ni.js +0 -1
- package/out/_next/static/chunks/3b6na8zrex8jo.js +0 -1
- package/out/_next/static/chunks/3c0cxt72vilyz.js +0 -1
- package/out/_next/static/chunks/3g78x0pdaoi_4.js +0 -1
- package/out/_next/static/chunks/3gjvl1p-tugfe.js +0 -4
- package/out/_next/static/chunks/3i8iro1gas1vx.js +0 -1
- package/out/_next/static/chunks/3kpqfqr99vo7z.js +0 -1
- package/out/_next/static/chunks/3lladf_wemm-2.js +0 -1
- package/out/_next/static/chunks/3n62hbywoknop.js +0 -1
- package/out/_next/static/chunks/3o_dmzpahx-5g.js +0 -1
- package/out/_next/static/chunks/3r7v7un976sn7.js +0 -1
- package/out/_next/static/chunks/3rl_nhqwew40w.js +0 -1
- package/out/_next/static/chunks/3s7hqij6xp_4e.js +0 -1
- package/out/_next/static/chunks/3si3migsmvz9o.js +0 -1
- package/out/_next/static/chunks/3uarw1i1ij1er.js +0 -1
- package/out/_next/static/chunks/3un-w6wutw1qn.js +0 -1
- package/out/_next/static/chunks/3v8kgnjk27wbe.js +0 -1
- package/out/_next/static/chunks/3we1khqfexh3x.js +0 -1
- package/out/_next/static/chunks/3z35loj4i-id4.js +0 -1
- package/out/_next/static/chunks/42lqt7ig40wk5.js +0 -1
- package/out/_next/static/chunks/42s6ghsurq5q7.js +0 -1
- package/out/_next/static/chunks/42yctcfi2rfwr.js +0 -1
- package/out/_next/static/chunks/43_fau1gg69eo.js +0 -1
- package/out/_next/static/chunks/43ywrdzg_7af8.js +0 -31
- package/out/_next/static/chunks/44m1ijc5cv80x.js +0 -1
- package/out/_next/static/chunks/453_bg0lgesmp.js +0 -1
- package/out/_next/static/chunks/turbopack-1s36ieuku1ds3.js +0 -1
- package/out/_not-found/__next._head.txt +0 -6
- package/out/_not-found/__next._index.txt +0 -5
- package/out/_not-found/__next._not-found.txt +0 -5
- /package/out/_next/static/{5UjNvd7WCk97iC2cSmEGH → 4r0L0ZMJeBwOJCVDsvvZ4}/_buildManifest.js +0 -0
- /package/out/_next/static/{5UjNvd7WCk97iC2cSmEGH → 4r0L0ZMJeBwOJCVDsvvZ4}/_clientMiddlewareManifest.js +0 -0
- /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,
|
|
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}])},
|
|
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,
|
|
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}],
|
|
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}],
|
|
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}],
|
|
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}],
|
|
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}])},
|
|
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))}])}]);
|