framefields 2.5.3 → 2.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (448) hide show
  1. package/dist/audio/index.d.mts +4 -4
  2. package/dist/audio/index.mjs +10 -10
  3. package/dist/{audio-2ew5y0Bl.d.mts → audio-B5mdR8vv.d.mts} +3 -3
  4. package/dist/{audio-2ew5y0Bl.d.mts.map → audio-B5mdR8vv.d.mts.map} +1 -1
  5. package/dist/{audio-DrUskzwZ.mjs → audio-C9euVW4K.mjs} +3 -3
  6. package/dist/{audio-DrUskzwZ.mjs.map → audio-C9euVW4K.mjs.map} +1 -1
  7. package/dist/components/index.d.mts +10 -10
  8. package/dist/components/index.mjs +44 -44
  9. package/dist/dist-BPOi5xb_.mjs.map +1 -1
  10. package/dist/{dist-Bf0H4lp1.mjs → dist-BuirkW-f.mjs} +11 -3
  11. package/dist/dist-BuirkW-f.mjs.map +1 -0
  12. package/dist/{dist-DG65RDhc.mjs → dist-DBdxM6xv.mjs} +5 -6
  13. package/dist/dist-DBdxM6xv.mjs.map +1 -0
  14. package/dist/effects/index.d.mts +4 -4
  15. package/dist/effects/index.mjs +35 -35
  16. package/dist/{effects-Z-brb-n7.mjs → effects-B263lgUi.mjs} +2 -2
  17. package/dist/{effects-Z-brb-n7.mjs.map → effects-B263lgUi.mjs.map} +1 -1
  18. package/dist/fonts/index.mjs +2 -2
  19. package/dist/{fonts-DqYgk_1a.mjs → fonts-DNx6ps2p.mjs} +2 -2
  20. package/dist/{fonts-DqYgk_1a.mjs.map → fonts-DNx6ps2p.mjs.map} +1 -1
  21. package/dist/{gpu-CevnCkZC.mjs → gpu-BRBIoxMC.mjs} +2 -2
  22. package/dist/{gpu-CevnCkZC.mjs.map → gpu-BRBIoxMC.mjs.map} +1 -1
  23. package/dist/{index-D1C735Wp.d.mts → index-3Vdef2KE.d.mts} +3 -3
  24. package/dist/{index-D1C735Wp.d.mts.map → index-3Vdef2KE.d.mts.map} +1 -1
  25. package/dist/{index-COQTaniR.d.mts → index-B4o6F1JC.d.mts} +2 -2
  26. package/dist/{index-COQTaniR.d.mts.map → index-B4o6F1JC.d.mts.map} +1 -1
  27. package/dist/{index-KqW22NHL.d.mts → index-BhzlG_1Q.d.mts} +2 -2
  28. package/dist/{index-KqW22NHL.d.mts.map → index-BhzlG_1Q.d.mts.map} +1 -1
  29. package/dist/{index-DSGFMpwL.d.mts → index-D-Gnyffj.d.mts} +4 -4
  30. package/dist/{index-DSGFMpwL.d.mts.map → index-D-Gnyffj.d.mts.map} +1 -1
  31. package/dist/{index-tCKz9Tku.d.mts → index-N1tMc5Z9.d.mts} +54 -54
  32. package/dist/index-N1tMc5Z9.d.mts.map +1 -0
  33. package/dist/{index-CfMylY3O.d.mts → index-o8LxWdwz.d.mts} +3 -3
  34. package/dist/{index-CfMylY3O.d.mts.map → index-o8LxWdwz.d.mts.map} +1 -1
  35. package/dist/{index-CZK6CFLy.d.mts → index-ocZc12ZS.d.mts} +17 -17
  36. package/dist/index-ocZc12ZS.d.mts.map +1 -0
  37. package/dist/index.d.mts +10 -10
  38. package/dist/index.mjs +51 -51
  39. package/dist/preview/index.d.mts +3 -3
  40. package/dist/preview/index.mjs +10 -10
  41. package/dist/{preview-DVw2jLDh.mjs → preview-ChR8Z8Fm.mjs} +2 -2
  42. package/dist/{preview-DVw2jLDh.mjs.map → preview-ChR8Z8Fm.mjs.map} +1 -1
  43. package/dist/preview-engine/audio.mjs +1 -1
  44. package/dist/preview-engine/{chunk-MCFYUKAJ.mjs → chunk-2LQCQ3OT.mjs} +8 -8
  45. package/dist/preview-engine/{chunk-PR37RCNO.mjs → chunk-2TCJSHFA.mjs} +1 -1
  46. package/dist/preview-engine/{chunk-JMOJKT5W.mjs → chunk-2YGR5YCN.mjs} +1 -1
  47. package/dist/preview-engine/{chunk-LNJYHSYX.mjs → chunk-3KHD67Q3.mjs} +1 -1
  48. package/dist/preview-engine/chunk-3SR6BI4B.mjs +1 -0
  49. package/dist/preview-engine/{chunk-NXKXOSE6.mjs → chunk-4INGTMZ5.mjs} +1 -1
  50. package/dist/preview-engine/{chunk-T4VP45AP.mjs → chunk-4JX5LBE2.mjs} +1 -1
  51. package/dist/preview-engine/{chunk-7JYMNGNK.mjs → chunk-5NT7WWJR.mjs} +1 -1
  52. package/dist/preview-engine/{chunk-NB55FW7D.mjs → chunk-6PMATELR.mjs} +1 -1
  53. package/dist/preview-engine/{chunk-45XGWIOY.mjs → chunk-AKT4YQWL.mjs} +1 -1
  54. package/dist/preview-engine/{chunk-RNFYEZLL.mjs → chunk-ALSOO22Q.mjs} +1 -1
  55. package/dist/preview-engine/{chunk-3AYICEZ5.mjs → chunk-B7J72YSP.mjs} +1 -1
  56. package/dist/preview-engine/{chunk-I3ZTDIVM.mjs → chunk-BBHRXV75.mjs} +1 -1
  57. package/dist/preview-engine/{chunk-NHQR76WL.mjs → chunk-DDFWN7DI.mjs} +1 -1
  58. package/dist/preview-engine/{chunk-ZVUTFXDR.mjs → chunk-DOCFOSA6.mjs} +1 -1
  59. package/dist/preview-engine/{chunk-YJ24W73B.mjs → chunk-FZLKPBKS.mjs} +1 -1
  60. package/dist/preview-engine/{chunk-EU7CFSB5.mjs → chunk-GQIRV466.mjs} +1 -1
  61. package/dist/preview-engine/{chunk-DWHQSNSJ.mjs → chunk-IIOHF7MH.mjs} +1 -1
  62. package/dist/preview-engine/{chunk-WUMVCQYI.mjs → chunk-J24VHZS6.mjs} +1 -1
  63. package/dist/preview-engine/{chunk-2WOCQNZX.mjs → chunk-JD4TBC6Z.mjs} +8 -8
  64. package/dist/preview-engine/{chunk-X6BJLPW6.mjs → chunk-JTT3YX7W.mjs} +1 -1
  65. package/dist/preview-engine/{chunk-XJ4CQIZZ.mjs → chunk-KWTTANYN.mjs} +1 -1
  66. package/dist/preview-engine/{chunk-QCUGWPYP.mjs → chunk-LN3YAWUD.mjs} +1 -1
  67. package/dist/preview-engine/{chunk-M6ZKK6ZU.mjs → chunk-LYSU6S4O.mjs} +1 -1
  68. package/dist/preview-engine/{chunk-TE2QAKKF.mjs → chunk-MJCK5FLZ.mjs} +1 -1
  69. package/dist/preview-engine/{chunk-24H3QVYB.mjs → chunk-MMVFX42U.mjs} +1 -1
  70. package/dist/preview-engine/{chunk-25T3M6MI.mjs → chunk-MUOJMF7M.mjs} +1 -1
  71. package/dist/preview-engine/{chunk-B555EGEU.mjs → chunk-NQZRPPUU.mjs} +1 -1
  72. package/dist/preview-engine/{chunk-VTE3IISK.mjs → chunk-OXXRKNHW.mjs} +1 -1
  73. package/dist/preview-engine/{chunk-DUEY7AXY.mjs → chunk-PJMX2GFY.mjs} +1 -1
  74. package/dist/preview-engine/{chunk-MA4YVA2E.mjs → chunk-Q7JN4EHX.mjs} +1 -1
  75. package/dist/preview-engine/{chunk-YSXMXD3F.mjs → chunk-Q7XC3FI7.mjs} +1 -1
  76. package/dist/preview-engine/{chunk-UXCTWFKK.mjs → chunk-QPBTLJ5W.mjs} +1 -1
  77. package/dist/preview-engine/{chunk-LQVACZDE.mjs → chunk-QRYCB6E3.mjs} +1 -1
  78. package/dist/preview-engine/{chunk-2QQQTZHS.mjs → chunk-RDEQ4LQU.mjs} +1 -1
  79. package/dist/preview-engine/{chunk-KKBJ7X3T.mjs → chunk-RF62TV3G.mjs} +1 -1
  80. package/dist/preview-engine/{chunk-CE6CG5BH.mjs → chunk-RHXZXWJ4.mjs} +1 -1
  81. package/dist/preview-engine/{chunk-BNO5JAEZ.mjs → chunk-RKNV5N7D.mjs} +1 -1
  82. package/dist/preview-engine/{chunk-PXWCGXTF.mjs → chunk-SP22JWN2.mjs} +1 -1
  83. package/dist/preview-engine/{chunk-NYEDWUFS.mjs → chunk-SQ52PBF3.mjs} +1 -1
  84. package/dist/preview-engine/{chunk-QYIKOOFI.mjs → chunk-SVE3XWO7.mjs} +1 -1
  85. package/dist/preview-engine/{chunk-QJYAIQYU.mjs → chunk-SXNCNG4L.mjs} +1 -1
  86. package/dist/preview-engine/{chunk-VH5V54RA.mjs → chunk-TPFDAOW7.mjs} +1 -1
  87. package/dist/preview-engine/{chunk-ENS4KUJV.mjs → chunk-UEQIO6AH.mjs} +1 -1
  88. package/dist/preview-engine/{chunk-XYRBFLFF.mjs → chunk-ULPLHKM2.mjs} +1 -1
  89. package/dist/preview-engine/{chunk-MCR7XMNQ.mjs → chunk-ULVX4VYT.mjs} +1 -1
  90. package/dist/preview-engine/{chunk-ZAIVXGSS.mjs → chunk-UQD2UE6I.mjs} +1 -1
  91. package/dist/preview-engine/{chunk-QP24X77K.mjs → chunk-VY6ST4QX.mjs} +1 -1
  92. package/dist/preview-engine/{chunk-7BUKVFWB.mjs → chunk-W2EZFV4Q.mjs} +1 -1
  93. package/dist/preview-engine/{chunk-P734GD7D.mjs → chunk-WDWHOXSA.mjs} +1 -1
  94. package/dist/preview-engine/{chunk-2RZ6S4SW.mjs → chunk-YEPYVASB.mjs} +1 -1
  95. package/dist/preview-engine/{chunk-5FTCPTOX.mjs → chunk-ZJLNXN7W.mjs} +8 -8
  96. package/dist/preview-engine/{chunk-FAEWI3LF.mjs → chunk-ZZAZF6VC.mjs} +1 -1
  97. package/dist/preview-engine/components.mjs +1 -1
  98. package/dist/preview-engine/effects.mjs +1 -1
  99. package/dist/preview-engine/fonts.mjs +1 -1
  100. package/dist/preview-engine/framefields.mjs +1 -1
  101. package/dist/preview-engine/player.mjs +1 -1
  102. package/dist/preview-engine/renderers-4CRXZJ5G.mjs +1 -0
  103. package/dist/preview-engine/{renderers-WPBTAU2E.mjs → renderers-4RVSLTCX.mjs} +1 -1
  104. package/dist/preview-engine/{renderers-W5CTR4B5.mjs → renderers-56TGEFDK.mjs} +1 -1
  105. package/dist/preview-engine/renderers-5QF4OLFQ.mjs +1 -0
  106. package/dist/preview-engine/renderers-5SOW6OVE.mjs +1 -0
  107. package/dist/preview-engine/renderers-6M2HPY2J.mjs +1 -0
  108. package/dist/preview-engine/{renderers-DZZFIYYA.mjs → renderers-7GMW52G3.mjs} +1 -1
  109. package/dist/preview-engine/renderers-7HT5NW7W.mjs +1 -0
  110. package/dist/preview-engine/{renderers-KV3TTCO6.mjs → renderers-7SW2AHM2.mjs} +1 -1
  111. package/dist/preview-engine/{renderers-BNXTSIXJ.mjs → renderers-ART3EGSZ.mjs} +1 -1
  112. package/dist/preview-engine/{renderers-6NFRKHNO.mjs → renderers-ATTGUTYY.mjs} +1 -1
  113. package/dist/preview-engine/renderers-AYWCRBQC.mjs +1 -0
  114. package/dist/preview-engine/renderers-BA6ZCPI5.mjs +1 -0
  115. package/dist/preview-engine/{renderers-AKZAAGR7.mjs → renderers-BAS7RXTC.mjs} +1 -1
  116. package/dist/preview-engine/{renderers-CLLR5MOQ.mjs → renderers-BWRNCXR6.mjs} +1 -1
  117. package/dist/preview-engine/{renderers-N7T34SCI.mjs → renderers-C3YXNKNM.mjs} +1 -1
  118. package/dist/preview-engine/renderers-CZTCW4FC.mjs +1 -0
  119. package/dist/preview-engine/{renderers-C7SJ3M6S.mjs → renderers-D2XEQ2YY.mjs} +1 -1
  120. package/dist/preview-engine/renderers-DFIJYBW2.mjs +1 -0
  121. package/dist/preview-engine/{renderers-DHKB5LI6.mjs → renderers-EJGF3PYQ.mjs} +1 -1
  122. package/dist/preview-engine/renderers-EJN6M6DO.mjs +1 -0
  123. package/dist/preview-engine/{renderers-MKEXNBCW.mjs → renderers-EK3HQUUF.mjs} +1 -1
  124. package/dist/preview-engine/{renderers-O56IOD7J.mjs → renderers-EQDINUMT.mjs} +1 -1
  125. package/dist/preview-engine/{renderers-VYK2BJID.mjs → renderers-FC7G7KU7.mjs} +1 -1
  126. package/dist/preview-engine/{renderers-BQLYS4TM.mjs → renderers-FD3ZT73R.mjs} +1 -1
  127. package/dist/preview-engine/{renderers-TASYN62K.mjs → renderers-FYI6QNUH.mjs} +1 -1
  128. package/dist/preview-engine/renderers-G34C5J27.mjs +1 -0
  129. package/dist/preview-engine/{renderers-ROSSJ7Y2.mjs → renderers-GHP7SL5M.mjs} +1 -1
  130. package/dist/preview-engine/renderers-GKVTNDVH.mjs +1 -0
  131. package/dist/preview-engine/{renderers-MPCYLXXU.mjs → renderers-GY4R467B.mjs} +1 -1
  132. package/dist/preview-engine/{renderers-TAMDNTEQ.mjs → renderers-H2UI7YEO.mjs} +1 -1
  133. package/dist/preview-engine/{renderers-6PVGRTXV.mjs → renderers-HBIBRZD7.mjs} +1 -1
  134. package/dist/preview-engine/{renderers-GF77N2KM.mjs → renderers-HMNCIEU3.mjs} +1 -1
  135. package/dist/preview-engine/{renderers-SIBP54WK.mjs → renderers-HZBYQKIQ.mjs} +1 -1
  136. package/dist/preview-engine/renderers-IK7ZJJKJ.mjs +1 -0
  137. package/dist/preview-engine/renderers-ISASPH6T.mjs +1 -0
  138. package/dist/preview-engine/renderers-IW5MWDBI.mjs +1 -0
  139. package/dist/preview-engine/renderers-K2PI4WJS.mjs +1 -0
  140. package/dist/preview-engine/renderers-KESHVFL2.mjs +1 -0
  141. package/dist/preview-engine/renderers-KTZZVAB2.mjs +1 -0
  142. package/dist/preview-engine/renderers-KY5CJEOV.mjs +1 -0
  143. package/dist/preview-engine/{renderers-MS4HG3M4.mjs → renderers-LTV5RFDJ.mjs} +1 -1
  144. package/dist/preview-engine/{renderers-CEJP6Q7F.mjs → renderers-LV6LLULR.mjs} +1 -1
  145. package/dist/preview-engine/renderers-M5W6SUQD.mjs +1 -0
  146. package/dist/preview-engine/{renderers-H3ZM2TOA.mjs → renderers-MEM3REMI.mjs} +1 -1
  147. package/dist/preview-engine/{renderers-EJATUIUP.mjs → renderers-N36R42RL.mjs} +1 -1
  148. package/dist/preview-engine/{renderers-UVABXXQF.mjs → renderers-NTKSN32T.mjs} +1 -1
  149. package/dist/preview-engine/renderers-O5XMWFPY.mjs +1 -0
  150. package/dist/preview-engine/{renderers-QO2RHF7F.mjs → renderers-P2FTCDZ7.mjs} +1 -1
  151. package/dist/preview-engine/{renderers-L7EITUCD.mjs → renderers-PYDOSDEY.mjs} +1 -1
  152. package/dist/preview-engine/renderers-QJA35PKC.mjs +1 -0
  153. package/dist/preview-engine/{renderers-TWZHTKW7.mjs → renderers-RDHHVXRE.mjs} +1 -1
  154. package/dist/preview-engine/{renderers-RRJ2DX2W.mjs → renderers-SY435YU3.mjs} +1 -1
  155. package/dist/preview-engine/renderers-TJIFTQHV.mjs +1 -0
  156. package/dist/preview-engine/renderers-TN4XN436.mjs +1 -0
  157. package/dist/preview-engine/renderers-UDYLCYCB.mjs +1 -0
  158. package/dist/preview-engine/renderers-WZ7SFIBZ.mjs +1 -0
  159. package/dist/preview-engine/renderers-WZEV464O.mjs +228 -0
  160. package/dist/preview-engine/renderers-X6QNDC6R.mjs +1 -0
  161. package/dist/preview-engine/renderers-X6RNTJOV.mjs +1 -0
  162. package/dist/preview-engine/{renderers-QPFZBLDI.mjs → renderers-Y3N7236P.mjs} +1 -1
  163. package/dist/preview-engine/{renderers-XSPU2BIQ.mjs → renderers-YBTWN76S.mjs} +1 -1
  164. package/dist/preview-engine/{renderers-T62TXGVO.mjs → renderers-YK74777T.mjs} +1 -1
  165. package/dist/preview-engine/renderers-YP3ASXIJ.mjs +1 -0
  166. package/dist/preview-engine/renderers-YVJAG3PD.mjs +1 -0
  167. package/dist/preview-engine/{renderers-4RFB2LG2.mjs → renderers-ZAMSS7QN.mjs} +1 -1
  168. package/dist/preview-engine/{renderers-FOHW7RWH.mjs → renderers-ZDMDDWLN.mjs} +1 -1
  169. package/dist/preview-engine/renderers-ZPPZNMKJ.mjs +1 -0
  170. package/dist/preview-engine/signals.mjs +1 -1
  171. package/dist/{program-4mAVgg3c.mjs → program-O2bWX0cs.mjs} +2 -2
  172. package/dist/{program-4mAVgg3c.mjs.map → program-O2bWX0cs.mjs.map} +1 -1
  173. package/dist/registry/card-stack.json +3 -2
  174. package/dist/registry/chat-thread.json +4 -3
  175. package/dist/registry/index.json +3 -2
  176. package/dist/renderer/index.d.mts +2 -2
  177. package/dist/renderer/index.mjs +2 -2
  178. package/dist/renderer-0441BN0U.mjs +5 -0
  179. package/dist/{renderer-RiWi7y5C.mjs → renderer-1NoJLLDa.mjs} +4 -4
  180. package/dist/{renderer-RiWi7y5C.mjs.map → renderer-1NoJLLDa.mjs.map} +1 -1
  181. package/dist/renderer-3qDgFc-W.mjs +5 -0
  182. package/dist/renderer-6AIqTN5Z.mjs +5 -0
  183. package/dist/{renderer-zdpn1Hkk.mjs → renderer-8_d6YNnE.mjs} +3 -3
  184. package/dist/{renderer-zdpn1Hkk.mjs.map → renderer-8_d6YNnE.mjs.map} +1 -1
  185. package/dist/{renderer-DTXAa2pL.mjs → renderer-B0IJirDs.mjs} +4 -4
  186. package/dist/{renderer-DTXAa2pL.mjs.map → renderer-B0IJirDs.mjs.map} +1 -1
  187. package/dist/{renderer-_vcT__tW.mjs → renderer-B2no_9zi.mjs} +4 -4
  188. package/dist/{renderer-_vcT__tW.mjs.map → renderer-B2no_9zi.mjs.map} +1 -1
  189. package/dist/{renderer-CkJXq4bD.mjs → renderer-B5ZdkcMi.mjs} +3 -3
  190. package/dist/{renderer-CkJXq4bD.mjs.map → renderer-B5ZdkcMi.mjs.map} +1 -1
  191. package/dist/renderer-B7MZ5R7u.mjs +5 -0
  192. package/dist/{renderer-Bh0dwc8n.mjs → renderer-B7vXnBUo.mjs} +4 -4
  193. package/dist/{renderer-Bh0dwc8n.mjs.map → renderer-B7vXnBUo.mjs.map} +1 -1
  194. package/dist/renderer-BE2rIA4B.mjs +5 -0
  195. package/dist/renderer-BIQ81ln4.mjs +5 -0
  196. package/dist/{renderer-BIYJKdwA.mjs → renderer-BKJ8cywK.mjs} +3 -3
  197. package/dist/{renderer-BIYJKdwA.mjs.map → renderer-BKJ8cywK.mjs.map} +1 -1
  198. package/dist/renderer-BKm3_Ob3.mjs +5 -0
  199. package/dist/{renderer-DPzair18.mjs → renderer-BMiZIGkZ.mjs} +2 -2
  200. package/dist/renderer-BNdT1Wwf.mjs +5 -0
  201. package/dist/{renderer-C1sFg34Y.mjs → renderer-BNs31kME.mjs} +4 -4
  202. package/dist/{renderer-C1sFg34Y.mjs.map → renderer-BNs31kME.mjs.map} +1 -1
  203. package/dist/renderer-BQycs1q_.mjs +5 -0
  204. package/dist/{renderer-Bt_j2Zi6.mjs → renderer-BStETpqC.mjs} +3 -3
  205. package/dist/{renderer-Bt_j2Zi6.mjs.map → renderer-BStETpqC.mjs.map} +1 -1
  206. package/dist/{renderer-CT_3Fegr.mjs → renderer-BWNQQZ12.mjs} +4 -4
  207. package/dist/{renderer-CT_3Fegr.mjs.map → renderer-BWNQQZ12.mjs.map} +1 -1
  208. package/dist/{renderer-C8-NmotX.mjs → renderer-BZ5uOfoX.mjs} +3 -3
  209. package/dist/{renderer-C8-NmotX.mjs.map → renderer-BZ5uOfoX.mjs.map} +1 -1
  210. package/dist/{renderer-Ddg3dJmu.mjs → renderer-Bag1LFos.mjs} +4 -4
  211. package/dist/{renderer-Ddg3dJmu.mjs.map → renderer-Bag1LFos.mjs.map} +1 -1
  212. package/dist/{renderer-CvYxxS_X.mjs → renderer-BfQdc3RM.mjs} +73 -73
  213. package/dist/{renderer-CvYxxS_X.mjs.map → renderer-BfQdc3RM.mjs.map} +1 -1
  214. package/dist/{renderer-C9r0-KY4.mjs → renderer-BgmO1Dzw.mjs} +11 -2
  215. package/dist/{renderer-C9r0-KY4.mjs.map → renderer-BgmO1Dzw.mjs.map} +1 -1
  216. package/dist/renderer-Bj7MxXfk.mjs +5 -0
  217. package/dist/renderer-BjRAGYYC.mjs +5 -0
  218. package/dist/{renderer-BIt-At3v.mjs → renderer-BlU3Sh_0.mjs} +4 -4
  219. package/dist/{renderer-BIt-At3v.mjs.map → renderer-BlU3Sh_0.mjs.map} +1 -1
  220. package/dist/renderer-BqE2BQ_X.mjs +5 -0
  221. package/dist/{renderer-CxkUI9s_.mjs → renderer-BrKgtYq4.mjs} +4 -4
  222. package/dist/{renderer-CxkUI9s_.mjs.map → renderer-BrKgtYq4.mjs.map} +1 -1
  223. package/dist/{renderer-NL2IZShC.mjs → renderer-Bs6BaMLf.mjs} +4 -4
  224. package/dist/{renderer-NL2IZShC.mjs.map → renderer-Bs6BaMLf.mjs.map} +1 -1
  225. package/dist/renderer-BsewLDHZ.mjs +3 -0
  226. package/dist/{renderer-Bk7vVfTu.mjs → renderer-BvA4sQz5.mjs} +3 -3
  227. package/dist/{renderer-Bk7vVfTu.mjs.map → renderer-BvA4sQz5.mjs.map} +1 -1
  228. package/dist/{renderer-BwRLXhxJ.mjs → renderer-Bvizxddu.mjs} +3 -3
  229. package/dist/{renderer-BwRLXhxJ.mjs.map → renderer-Bvizxddu.mjs.map} +1 -1
  230. package/dist/{renderer-D-FwaV1R.mjs → renderer-Bwxm-kWL.mjs} +2 -2
  231. package/dist/renderer-Bz5BMkOE.mjs +5 -0
  232. package/dist/{renderer-CE9N4EEI.d.mts → renderer-C-dcd14F.d.mts} +2 -2
  233. package/dist/{renderer-CE9N4EEI.d.mts.map → renderer-C-dcd14F.d.mts.map} +1 -1
  234. package/dist/{renderer-BcSSAzc4.mjs → renderer-C2MaJKfY.mjs} +4 -4
  235. package/dist/{renderer-BcSSAzc4.mjs.map → renderer-C2MaJKfY.mjs.map} +1 -1
  236. package/dist/{renderer-C4pS7aAI.mjs → renderer-C3tdjg8B.mjs} +4 -4
  237. package/dist/{renderer-C4pS7aAI.mjs.map → renderer-C3tdjg8B.mjs.map} +1 -1
  238. package/dist/{renderer-C4f_X1Qc.mjs → renderer-C5QYI1Wu.mjs} +3 -3
  239. package/dist/{renderer-C4f_X1Qc.mjs.map → renderer-C5QYI1Wu.mjs.map} +1 -1
  240. package/dist/{renderer-DPVEs5ME.mjs → renderer-C6n8y6Pw.mjs} +4 -4
  241. package/dist/{renderer-DPVEs5ME.mjs.map → renderer-C6n8y6Pw.mjs.map} +1 -1
  242. package/dist/{renderer-BKayVZhL.mjs → renderer-C8pJFxcL.mjs} +3 -3
  243. package/dist/{renderer-BKayVZhL.mjs.map → renderer-C8pJFxcL.mjs.map} +1 -1
  244. package/dist/{renderer-CTvPNRMH.mjs → renderer-CA_CwisV.mjs} +3 -3
  245. package/dist/{renderer-CTvPNRMH.mjs.map → renderer-CA_CwisV.mjs.map} +1 -1
  246. package/dist/renderer-CDOSfB9H.mjs +5 -0
  247. package/dist/{renderer-C0P8ZRiC.mjs → renderer-CEAmByVW.mjs} +3 -3
  248. package/dist/{renderer-C0P8ZRiC.mjs.map → renderer-CEAmByVW.mjs.map} +1 -1
  249. package/dist/{renderer-C7HIJcJK.mjs → renderer-CFCR_7bq.mjs} +4 -4
  250. package/dist/{renderer-C7HIJcJK.mjs.map → renderer-CFCR_7bq.mjs.map} +1 -1
  251. package/dist/{renderer-Y5JmTL8J.mjs → renderer-CFRTJ7cT.mjs} +3 -3
  252. package/dist/{renderer-Y5JmTL8J.mjs.map → renderer-CFRTJ7cT.mjs.map} +1 -1
  253. package/dist/{renderer-Cm9fEQsw.mjs → renderer-CPSg6eEQ.mjs} +3 -3
  254. package/dist/{renderer-Cm9fEQsw.mjs.map → renderer-CPSg6eEQ.mjs.map} +1 -1
  255. package/dist/renderer-CT26yQT-.mjs +5 -0
  256. package/dist/{renderer-B8PNlKEM.mjs → renderer-CTy0bSsl.mjs} +4 -4
  257. package/dist/{renderer-B8PNlKEM.mjs.map → renderer-CTy0bSsl.mjs.map} +1 -1
  258. package/dist/{renderer-Dkt1oh9H.mjs → renderer-CVbNiH03.mjs} +4 -4
  259. package/dist/{renderer-Dkt1oh9H.mjs.map → renderer-CVbNiH03.mjs.map} +1 -1
  260. package/dist/renderer-CZeAbz48.mjs +5 -0
  261. package/dist/{renderer-DYdll3xW.mjs → renderer-CbxfSmYE.mjs} +4 -4
  262. package/dist/{renderer-DYdll3xW.mjs.map → renderer-CbxfSmYE.mjs.map} +1 -1
  263. package/dist/{renderer-nLPfvY3-.mjs → renderer-CdxNwGeb.mjs} +2 -2
  264. package/dist/{renderer-nLPfvY3-.mjs.map → renderer-CdxNwGeb.mjs.map} +1 -1
  265. package/dist/{renderer-Cb5uDZm0.mjs → renderer-Cg2xS8h8.mjs} +3 -3
  266. package/dist/{renderer-Cb5uDZm0.mjs.map → renderer-Cg2xS8h8.mjs.map} +1 -1
  267. package/dist/{renderer-CJ2-jEy7.mjs → renderer-CnclEQdA.mjs} +3 -3
  268. package/dist/{renderer-CJ2-jEy7.mjs.map → renderer-CnclEQdA.mjs.map} +1 -1
  269. package/dist/{renderer-CgMnZYTM.mjs → renderer-CpDaUeCN.mjs} +4 -4
  270. package/dist/{renderer-CgMnZYTM.mjs.map → renderer-CpDaUeCN.mjs.map} +1 -1
  271. package/dist/{renderer-Du8z4UrN.mjs → renderer-CqJou_2L.mjs} +3 -3
  272. package/dist/{renderer-Du8z4UrN.mjs.map → renderer-CqJou_2L.mjs.map} +1 -1
  273. package/dist/{renderer-CxOaqnho.mjs → renderer-CrKYlipx.mjs} +3 -3
  274. package/dist/{renderer-CxOaqnho.mjs.map → renderer-CrKYlipx.mjs.map} +1 -1
  275. package/dist/{renderer-CPl1wOrj.mjs → renderer-D3FJcRA3.mjs} +3 -3
  276. package/dist/{renderer-CPl1wOrj.mjs.map → renderer-D3FJcRA3.mjs.map} +1 -1
  277. package/dist/renderer-D50b7kip.mjs +5 -0
  278. package/dist/renderer-D5LmrO96.mjs +5 -0
  279. package/dist/{renderer-vc8t_z-y.mjs → renderer-D8m3fuRp.mjs} +3 -3
  280. package/dist/{renderer-vc8t_z-y.mjs.map → renderer-D8m3fuRp.mjs.map} +1 -1
  281. package/dist/{renderer-BpBhvMi1.mjs → renderer-DADTT3ym.mjs} +2 -2
  282. package/dist/renderer-DCvqZ5o_.mjs +5 -0
  283. package/dist/{renderer-BBA-iCi-.mjs → renderer-DGOY-LBR.mjs} +34 -9
  284. package/dist/renderer-DGOY-LBR.mjs.map +1 -0
  285. package/dist/{renderer-Cz5SOnJr.mjs → renderer-DHdFVpdH.mjs} +3 -3
  286. package/dist/{renderer-Cz5SOnJr.mjs.map → renderer-DHdFVpdH.mjs.map} +1 -1
  287. package/dist/renderer-DJGJeGEn.mjs +5 -0
  288. package/dist/{renderer-BjxceNBj.mjs → renderer-DO1TeUqV.mjs} +4 -4
  289. package/dist/{renderer-BjxceNBj.mjs.map → renderer-DO1TeUqV.mjs.map} +1 -1
  290. package/dist/renderer-DONvNNXi.mjs +5 -0
  291. package/dist/renderer-DPaSo--Y.mjs +6 -0
  292. package/dist/{renderer-D0iSbNza.mjs → renderer-DTPmvL1i.mjs} +4 -4
  293. package/dist/{renderer-D0iSbNza.mjs.map → renderer-DTPmvL1i.mjs.map} +1 -1
  294. package/dist/{renderer-CWnhRMOq.mjs → renderer-DVGVcDvB.mjs} +4 -4
  295. package/dist/{renderer-CWnhRMOq.mjs.map → renderer-DVGVcDvB.mjs.map} +1 -1
  296. package/dist/{renderer-Cjw6lyaK.mjs → renderer-DW21AyEv.mjs} +4 -4
  297. package/dist/{renderer-Cjw6lyaK.mjs.map → renderer-DW21AyEv.mjs.map} +1 -1
  298. package/dist/{renderer-B9iVE2GG.mjs → renderer-DWG6EXGj.mjs} +4 -4
  299. package/dist/{renderer-B9iVE2GG.mjs.map → renderer-DWG6EXGj.mjs.map} +1 -1
  300. package/dist/{renderer-De7gno9X.mjs → renderer-Daqvhwjp.mjs} +4 -4
  301. package/dist/{renderer-De7gno9X.mjs.map → renderer-Daqvhwjp.mjs.map} +1 -1
  302. package/dist/{renderer-5-9DPis6.mjs → renderer-DcApNxER.mjs} +3 -3
  303. package/dist/{renderer-5-9DPis6.mjs.map → renderer-DcApNxER.mjs.map} +1 -1
  304. package/dist/{renderer-CGKKjJ5Q.mjs → renderer-DdkPY4hO.mjs} +3 -3
  305. package/dist/{renderer-CGKKjJ5Q.mjs.map → renderer-DdkPY4hO.mjs.map} +1 -1
  306. package/dist/renderer-DfYYokhr.mjs +5 -0
  307. package/dist/{renderer-C5h2TSjH.mjs → renderer-Dk0okoS3.mjs} +3 -3
  308. package/dist/{renderer-C5h2TSjH.mjs.map → renderer-Dk0okoS3.mjs.map} +1 -1
  309. package/dist/{renderer-B9m7xIPo.mjs → renderer-DkM6Ikdf.mjs} +4 -4
  310. package/dist/{renderer-B9m7xIPo.mjs.map → renderer-DkM6Ikdf.mjs.map} +1 -1
  311. package/dist/{renderer-T2dd9a2L.mjs → renderer-DkOxEQsg.mjs} +4 -4
  312. package/dist/{renderer-T2dd9a2L.mjs.map → renderer-DkOxEQsg.mjs.map} +1 -1
  313. package/dist/renderer-DlIJhdEM.mjs +5 -0
  314. package/dist/{renderer-BmX2CmyO.mjs → renderer-DmTxEeMh.mjs} +4 -4
  315. package/dist/{renderer-BmX2CmyO.mjs.map → renderer-DmTxEeMh.mjs.map} +1 -1
  316. package/dist/renderer-DqD3nMtv.mjs +5 -0
  317. package/dist/renderer-DrIl-uGt.mjs +5 -0
  318. package/dist/{renderer-khVVYoVF.mjs → renderer-DsnV8tpW.mjs} +4 -4
  319. package/dist/{renderer-khVVYoVF.mjs.map → renderer-DsnV8tpW.mjs.map} +1 -1
  320. package/dist/{renderer-wEXBnlr1.mjs → renderer-DtqiWq1m.mjs} +4 -4
  321. package/dist/{renderer-wEXBnlr1.mjs.map → renderer-DtqiWq1m.mjs.map} +1 -1
  322. package/dist/{renderer-wIsJb2eO.mjs → renderer-Duorbrb8.mjs} +2 -2
  323. package/dist/{renderer-wIsJb2eO.mjs.map → renderer-Duorbrb8.mjs.map} +1 -1
  324. package/dist/{renderer-CjcrhBB2.mjs → renderer-Dw3K8KT9.mjs} +3 -3
  325. package/dist/{renderer-CjcrhBB2.mjs.map → renderer-Dw3K8KT9.mjs.map} +1 -1
  326. package/dist/{renderer-4P-DCjk2.mjs → renderer-Dwh0jaor.mjs} +4 -4
  327. package/dist/{renderer-4P-DCjk2.mjs.map → renderer-Dwh0jaor.mjs.map} +1 -1
  328. package/dist/renderer-DyCB3Q1d.mjs +5 -0
  329. package/dist/renderer-DyJ-iSv6.mjs +5 -0
  330. package/dist/{renderer-DnT62IDK.mjs → renderer-Dz4muMyE.mjs} +3 -3
  331. package/dist/{renderer-DnT62IDK.mjs.map → renderer-Dz4muMyE.mjs.map} +1 -1
  332. package/dist/renderer-Dzs0jV0G.mjs +5 -0
  333. package/dist/{renderer-B9yv3R1y.mjs → renderer-H4-8sBjl.mjs} +3 -3
  334. package/dist/{renderer-B9yv3R1y.mjs.map → renderer-H4-8sBjl.mjs.map} +1 -1
  335. package/dist/renderer-HIKXw5-Y.mjs +5 -0
  336. package/dist/renderer-Jgt2g8Wp.mjs +5 -0
  337. package/dist/renderer-KnZWmT-M.mjs +5 -0
  338. package/dist/renderer-OMSXddG9.mjs +5 -0
  339. package/dist/renderer-P78xh6OV.mjs +5 -0
  340. package/dist/{renderer-BVtQzjgT.mjs → renderer-PhjHSS97.mjs} +3 -3
  341. package/dist/{renderer-BVtQzjgT.mjs.map → renderer-PhjHSS97.mjs.map} +1 -1
  342. package/dist/{renderer-9gjn790a.mjs → renderer-QQDU1b0Z.mjs} +4 -4
  343. package/dist/{renderer-9gjn790a.mjs.map → renderer-QQDU1b0Z.mjs.map} +1 -1
  344. package/dist/{renderer-BWqQxZNk.mjs → renderer-R5Lg65F8.mjs} +2 -2
  345. package/dist/{renderer-D22g6ION.mjs → renderer-RbMM6Njv.mjs} +4 -4
  346. package/dist/{renderer-D22g6ION.mjs.map → renderer-RbMM6Njv.mjs.map} +1 -1
  347. package/dist/{renderer-92IAZzBU.d.mts → renderer-WTvo3wo9.d.mts} +18 -4
  348. package/dist/renderer-WTvo3wo9.d.mts.map +1 -0
  349. package/dist/renderer-WyaqnVMz.mjs +3 -0
  350. package/dist/{renderer-B9AZ6R1U.mjs → renderer-YBwN9uyj.mjs} +172 -8
  351. package/dist/renderer-YBwN9uyj.mjs.map +1 -0
  352. package/dist/{renderer-CXa6SWXy.mjs → renderer-YFHESw3v.mjs} +4 -4
  353. package/dist/{renderer-CXa6SWXy.mjs.map → renderer-YFHESw3v.mjs.map} +1 -1
  354. package/dist/renderer-gaFP1Kak.mjs +5 -0
  355. package/dist/{renderer-PNIgmWft.mjs → renderer-kFtcuY9J.mjs} +2 -2
  356. package/dist/{renderer-PNIgmWft.mjs.map → renderer-kFtcuY9J.mjs.map} +1 -1
  357. package/dist/renderer-lQ8gH7Zd.mjs +5 -0
  358. package/dist/{renderer-MQPiZQXN.mjs → renderer-oR1LvHeO.mjs} +3 -3
  359. package/dist/{renderer-MQPiZQXN.mjs.map → renderer-oR1LvHeO.mjs.map} +1 -1
  360. package/dist/{renderer-CuwVuVKG.mjs → renderer-tcS585Iy.mjs} +3 -3
  361. package/dist/{renderer-CuwVuVKG.mjs.map → renderer-tcS585Iy.mjs.map} +1 -1
  362. package/dist/{renderer-Datqywo_.mjs → renderer-x1xlZaH_.mjs} +4 -4
  363. package/dist/{renderer-Datqywo_.mjs.map → renderer-x1xlZaH_.mjs.map} +1 -1
  364. package/dist/{renderers-CP8CFWDs-BbLkcJTN.mjs → renderers-CP8CFWDs-EZZPEbhW.mjs} +3 -3
  365. package/dist/{renderers-CP8CFWDs-BbLkcJTN.mjs.map → renderers-CP8CFWDs-EZZPEbhW.mjs.map} +1 -1
  366. package/dist/signals/index.d.mts +5 -5
  367. package/dist/signals/index.mjs +5 -5
  368. package/dist/{src-WAnxhDYD.mjs → src-r7Suenhp.mjs} +8 -8
  369. package/dist/{src-WAnxhDYD.mjs.map → src-r7Suenhp.mjs.map} +1 -1
  370. package/package.json +58 -58
  371. package/dist/dist-Bf0H4lp1.mjs.map +0 -1
  372. package/dist/dist-DG65RDhc.mjs.map +0 -1
  373. package/dist/index-CZK6CFLy.d.mts.map +0 -1
  374. package/dist/index-tCKz9Tku.d.mts.map +0 -1
  375. package/dist/preview-engine/chunk-I6E3AKLS.mjs +0 -1
  376. package/dist/preview-engine/renderers-2S5ZWL2J.mjs +0 -1
  377. package/dist/preview-engine/renderers-37CN7O4S.mjs +0 -1
  378. package/dist/preview-engine/renderers-3UGG2IMP.mjs +0 -1
  379. package/dist/preview-engine/renderers-7MPBAHYA.mjs +0 -1
  380. package/dist/preview-engine/renderers-AFTYMS3H.mjs +0 -1
  381. package/dist/preview-engine/renderers-AYEWAW7F.mjs +0 -1
  382. package/dist/preview-engine/renderers-BILNWTUC.mjs +0 -228
  383. package/dist/preview-engine/renderers-DUF2CTX6.mjs +0 -1
  384. package/dist/preview-engine/renderers-EIJFIY6L.mjs +0 -1
  385. package/dist/preview-engine/renderers-EOMMSENQ.mjs +0 -1
  386. package/dist/preview-engine/renderers-JXBZPQKP.mjs +0 -1
  387. package/dist/preview-engine/renderers-LD3COS4X.mjs +0 -1
  388. package/dist/preview-engine/renderers-MCTBJEL7.mjs +0 -1
  389. package/dist/preview-engine/renderers-OZGEXW2X.mjs +0 -1
  390. package/dist/preview-engine/renderers-PSEDMUBV.mjs +0 -1
  391. package/dist/preview-engine/renderers-PVUROEGR.mjs +0 -1
  392. package/dist/preview-engine/renderers-QBVVTQV6.mjs +0 -1
  393. package/dist/preview-engine/renderers-R4U2TK6P.mjs +0 -1
  394. package/dist/preview-engine/renderers-RBLNDAO4.mjs +0 -1
  395. package/dist/preview-engine/renderers-RM25AXWZ.mjs +0 -1
  396. package/dist/preview-engine/renderers-RYRFCEYT.mjs +0 -1
  397. package/dist/preview-engine/renderers-SKT7AGGE.mjs +0 -1
  398. package/dist/preview-engine/renderers-SRU6QXLN.mjs +0 -1
  399. package/dist/preview-engine/renderers-TBP2EKJ4.mjs +0 -1
  400. package/dist/preview-engine/renderers-UQHKFGDX.mjs +0 -1
  401. package/dist/preview-engine/renderers-WDV7ENJA.mjs +0 -1
  402. package/dist/preview-engine/renderers-WNBDSSJ3.mjs +0 -1
  403. package/dist/preview-engine/renderers-WTC2RNGU.mjs +0 -1
  404. package/dist/preview-engine/renderers-XVUOO7B6.mjs +0 -1
  405. package/dist/preview-engine/renderers-YHOQUEHD.mjs +0 -1
  406. package/dist/preview-engine/renderers-YPFM5UJO.mjs +0 -1
  407. package/dist/preview-engine/renderers-YW3LBALW.mjs +0 -1
  408. package/dist/renderer-1ymN1FIT.mjs +0 -5
  409. package/dist/renderer-92IAZzBU.d.mts.map +0 -1
  410. package/dist/renderer-B-43EuKb.mjs +0 -5
  411. package/dist/renderer-B-v5ZboU.mjs +0 -5
  412. package/dist/renderer-B9AZ6R1U.mjs.map +0 -1
  413. package/dist/renderer-BBA-iCi-.mjs.map +0 -1
  414. package/dist/renderer-BKF8Sfbg.mjs +0 -3
  415. package/dist/renderer-BTB8ifgH.mjs +0 -5
  416. package/dist/renderer-BYxzR6Hp.mjs +0 -5
  417. package/dist/renderer-BcGhO_Mw.mjs +0 -5
  418. package/dist/renderer-Bk3RgiFg.mjs +0 -5
  419. package/dist/renderer-BvItCxkw.mjs +0 -5
  420. package/dist/renderer-BvcqncI2.mjs +0 -3
  421. package/dist/renderer-CCnfPHqk.mjs +0 -5
  422. package/dist/renderer-CIoWQNaA.mjs +0 -5
  423. package/dist/renderer-CMwQtIIq.mjs +0 -5
  424. package/dist/renderer-CN8kRB90.mjs +0 -6
  425. package/dist/renderer-CPKBDif1.mjs +0 -5
  426. package/dist/renderer-CamsHxEP.mjs +0 -5
  427. package/dist/renderer-CeQormOH.mjs +0 -5
  428. package/dist/renderer-Cex4eMtv.mjs +0 -5
  429. package/dist/renderer-CjyTrNlr.mjs +0 -5
  430. package/dist/renderer-Clv9TO6C.mjs +0 -5
  431. package/dist/renderer-D4LnJk-M.mjs +0 -5
  432. package/dist/renderer-D5OfQ8Ut.mjs +0 -5
  433. package/dist/renderer-DBYssktC.mjs +0 -5
  434. package/dist/renderer-DC-Aj3me.mjs +0 -5
  435. package/dist/renderer-DG97_Aoc.mjs +0 -5
  436. package/dist/renderer-DS4UGjcS.mjs +0 -5
  437. package/dist/renderer-DdG6ibtM.mjs +0 -5
  438. package/dist/renderer-DhZi4f3t.mjs +0 -5
  439. package/dist/renderer-MgLekf6d.mjs +0 -5
  440. package/dist/renderer-Qvs-1lWh.mjs +0 -5
  441. package/dist/renderer-bN7dOErt.mjs +0 -5
  442. package/dist/renderer-jWKVmReU.mjs +0 -5
  443. package/dist/renderer-lk-At57G.mjs +0 -5
  444. package/dist/renderer-qi8Slwfo.mjs +0 -5
  445. package/dist/renderer-qxOH4JH1.mjs +0 -5
  446. package/dist/renderer-t30NpmIl.mjs +0 -5
  447. package/dist/renderer-wKW4HWRx.mjs +0 -5
  448. package/dist/renderer-ydjPm8bp.mjs +0 -5
@@ -1,4 +1,4 @@
1
- import{a as P,d as y,e as F,f as N,g as k,h as C,j as H,k as D,m as O}from"./chunk-ENKKLU7B.mjs";import{d as x}from"./chunk-6YJP57MZ.mjs";import{A as G}from"./chunk-RNFYEZLL.mjs";import{e as h}from"./chunk-BVF64D6H.mjs";h();h();function Y(e,t,r,u){if(e==null)return t;if(typeof e=="object"&&e!==null){if("get"in e&&typeof e.get=="function")try{let o=e.get({frame:r,fps:u,time:u>0?r/u:0,duration:0,durationMs:0,progress:0,deltaTime:u>0?1/u:0}),p=Number(o);if(Number.isFinite(p))return p}catch{}if("value"in e){let o=Number(e.value);if(Number.isFinite(o))return o}}else if(typeof e=="function")try{let o=e(r,u),p=Number(o);if(Number.isFinite(p))return p}catch{}let s=Number(e);return Number.isFinite(s)?s:t}function b(e,t,r,u,s,o=0,p=30){let i=`${t}HandleId`,d=e[i],a=d?e.inputs?.[d]:null,l=!!(a?.connectionValid&&a.outputItem?.type==="Signal"),n=l?a?.outputItem?.data:null,c=r;if(l)n&&typeof n=="object"&&"offset"in n&&(c=Number(n.offset??r));else if(a?.connectionValid&&a.outputItem?.type==="Number")c=Number(a.outputItem.data??r);else{let v=e[t]??e.signals?.[t];c=Y(v,r,o,p)}return c=Math.max(u,Math.min(s,c)),{hasSignal:l,sd:n,value:c}}var Z=`
1
+ import{a as P,d as y,e as F,f as N,g as k,h as C,j as H,k as D,m as O}from"./chunk-ENKKLU7B.mjs";import{d as x}from"./chunk-6YJP57MZ.mjs";import{A as G}from"./chunk-ALSOO22Q.mjs";import{e as h}from"./chunk-BVF64D6H.mjs";h();h();function Y(e,t,r,u){if(e==null)return t;if(typeof e=="object"&&e!==null){if("get"in e&&typeof e.get=="function")try{let o=e.get({frame:r,fps:u,time:u>0?r/u:0,duration:0,durationMs:0,progress:0,deltaTime:u>0?1/u:0}),p=Number(o);if(Number.isFinite(p))return p}catch{}if("value"in e){let o=Number(e.value);if(Number.isFinite(o))return o}}else if(typeof e=="function")try{let o=e(r,u),p=Number(o);if(Number.isFinite(p))return p}catch{}let s=Number(e);return Number.isFinite(s)?s:t}function b(e,t,r,u,s,o=0,p=30){let i=`${t}HandleId`,d=e[i],a=d?e.inputs?.[d]:null,l=!!(a?.connectionValid&&a.outputItem?.type==="Signal"),n=l?a?.outputItem?.data:null,c=r;if(l)n&&typeof n=="object"&&"offset"in n&&(c=Number(n.offset??r));else if(a?.connectionValid&&a.outputItem?.type==="Number")c=Number(a.outputItem.data??r);else{let v=e[t]??e.signals?.[t];c=Y(v,r,o,p)}return c=Math.max(u,Math.min(s,c)),{hasSignal:l,sd:n,value:c}}var Z=`
2
2
  struct ModulateUniforms {
3
3
  hue : f32,
4
4
  brightness : f32,
@@ -1,4 +1,4 @@
1
- import{a as p}from"./chunk-MA4YVA2E.mjs";import{A as u,c as n,z as f}from"./chunk-RNFYEZLL.mjs";import{e as t}from"./chunk-BVF64D6H.mjs";t();t();var P=["threshold","ratio","attack","release","knee","makeupGain"],y=()=>`
1
+ import{a as p}from"./chunk-Q7JN4EHX.mjs";import{A as u,c as n,z as f}from"./chunk-ALSOO22Q.mjs";import{e as t}from"./chunk-BVF64D6H.mjs";t();t();var P=["threshold","ratio","attack","release","knee","makeupGain"],y=()=>`
2
2
  struct Uniforms {
3
3
  sampleRate : f32,
4
4
  threshold : f32,
@@ -1,4 +1,4 @@
1
- import{a as q}from"./chunk-QVW5METG.mjs";import{b as J,c as Z}from"./chunk-NKGXINCU.mjs";import{a as r}from"./chunk-V3FODTPI.mjs";import{a as $,d as X,e as L,g as K,h as V,j as Y,k as j,l as Q,m as w}from"./chunk-ENKKLU7B.mjs";import{A as H,x as E}from"./chunk-RNFYEZLL.mjs";import{e as l}from"./chunk-BVF64D6H.mjs";l();l();l();l();var I=200,be=r.enum(["Union","Intersect","Subtract","Difference","Invert","Dilate","Erode","Choke","Feather"]),ee=r.enum(["Alpha","Luminance","Red","Green","Blue"]),ke=r.enum(["WhiteWithAlpha","GrayscaleRGB","AlphaOnly","PassthroughRGB"]),Re=q().field("operation",be.default("Union"),{label:"Operation",description:"Morphological or Boolean set operation applied to input alpha masks."}).field("radius",r.number().min(0).max(I).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Radius / Width (px)",description:"Kernel radius in pixels for Dilate, Erode, Choke, or Feather operations."}).field("threshold",r.number().multipleOf(.01).min(0).max(1).default(.5),{bindable:!0,dataTypes:["Number","Signal"],label:"Threshold",description:"Cutoff threshold level (0.0\u20131.0) for binarization step or non-linear choke."}).field("clampMin",r.number().multipleOf(.01).min(0).max(1).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Clamp Min",description:"Minimum alpha matte cutoff limit (0.0\u20131.0)."}).field("clampMax",r.number().multipleOf(.01).min(0).max(1).default(1),{bindable:!0,dataTypes:["Number","Signal"],label:"Clamp Max",description:"Maximum alpha matte cutoff limit (0.0\u20131.0)."}).field("channelA",ee.default("Alpha"),{label:"Mask A Channel",description:"Source channel to extract mask from Mask A (Alpha, Luminance, Red, Green, Blue)."}).field("channelB",ee.default("Alpha"),{label:"Mask B Channel",description:"Source channel to extract mask from Mask B (Alpha, Luminance, Red, Green, Blue)."}).field("binarize",r.boolean().default(!1),{label:"Binarize",description:"When enabled, outputs crisp 1-bit binary matte based on threshold."}).field("invertResult",r.boolean().default(!1),{label:"Invert Result",description:"Inverts final matte output."}).field("outputFormat",ke.default("WhiteWithAlpha"),{label:"Output Format",description:"WhiteWithAlpha (rgba(1,1,1,a)), GrayscaleRGB (rgba(a,a,a,1)), AlphaOnly (rgba(0,0,0,a)), PassthroughRGB (Mask A RGB with new alpha)."}).build(),Le=Re.schema,Ve=r.union([J,Z]);l();var Ae={Union:0,Intersect:1,Subtract:2,Difference:3,Invert:4,Dilate:5,Erode:6,Choke:7,Feather:8},ae={Alpha:0,Luminance:1,Red:2,Green:3,Blue:4},ye={WhiteWithAlpha:0,GrayscaleRGB:1,AlphaOnly:2,PassthroughRGB:3},Be=`
1
+ import{a as q}from"./chunk-QVW5METG.mjs";import{b as J,c as Z}from"./chunk-NKGXINCU.mjs";import{a as r}from"./chunk-V3FODTPI.mjs";import{a as $,d as X,e as L,g as K,h as V,j as Y,k as j,l as Q,m as w}from"./chunk-ENKKLU7B.mjs";import{A as H,x as E}from"./chunk-ALSOO22Q.mjs";import{e as l}from"./chunk-BVF64D6H.mjs";l();l();l();l();var I=200,be=r.enum(["Union","Intersect","Subtract","Difference","Invert","Dilate","Erode","Choke","Feather"]),ee=r.enum(["Alpha","Luminance","Red","Green","Blue"]),ke=r.enum(["WhiteWithAlpha","GrayscaleRGB","AlphaOnly","PassthroughRGB"]),Re=q().field("operation",be.default("Union"),{label:"Operation",description:"Morphological or Boolean set operation applied to input alpha masks."}).field("radius",r.number().min(0).max(I).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Radius / Width (px)",description:"Kernel radius in pixels for Dilate, Erode, Choke, or Feather operations."}).field("threshold",r.number().multipleOf(.01).min(0).max(1).default(.5),{bindable:!0,dataTypes:["Number","Signal"],label:"Threshold",description:"Cutoff threshold level (0.0\u20131.0) for binarization step or non-linear choke."}).field("clampMin",r.number().multipleOf(.01).min(0).max(1).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Clamp Min",description:"Minimum alpha matte cutoff limit (0.0\u20131.0)."}).field("clampMax",r.number().multipleOf(.01).min(0).max(1).default(1),{bindable:!0,dataTypes:["Number","Signal"],label:"Clamp Max",description:"Maximum alpha matte cutoff limit (0.0\u20131.0)."}).field("channelA",ee.default("Alpha"),{label:"Mask A Channel",description:"Source channel to extract mask from Mask A (Alpha, Luminance, Red, Green, Blue)."}).field("channelB",ee.default("Alpha"),{label:"Mask B Channel",description:"Source channel to extract mask from Mask B (Alpha, Luminance, Red, Green, Blue)."}).field("binarize",r.boolean().default(!1),{label:"Binarize",description:"When enabled, outputs crisp 1-bit binary matte based on threshold."}).field("invertResult",r.boolean().default(!1),{label:"Invert Result",description:"Inverts final matte output."}).field("outputFormat",ke.default("WhiteWithAlpha"),{label:"Output Format",description:"WhiteWithAlpha (rgba(1,1,1,a)), GrayscaleRGB (rgba(a,a,a,1)), AlphaOnly (rgba(0,0,0,a)), PassthroughRGB (Mask A RGB with new alpha)."}).build(),Le=Re.schema,Ve=r.union([J,Z]);l();var Ae={Union:0,Intersect:1,Subtract:2,Difference:3,Invert:4,Dilate:5,Erode:6,Choke:7,Feather:8},ae={Alpha:0,Luminance:1,Red:2,Green:3,Blue:4},ye={WhiteWithAlpha:0,GrayscaleRGB:1,AlphaOnly:2,PassthroughRGB:3},Be=`
2
2
  struct MaskMathUniforms {
3
3
  dirX : f32,
4
4
  dirY : f32,
@@ -1,4 +1,4 @@
1
- import{a as C,d as G,g as O,h as V,m as A}from"./chunk-ENKKLU7B.mjs";import{A as I}from"./chunk-RNFYEZLL.mjs";import{e as M}from"./chunk-BVF64D6H.mjs";M();M();var se=e=>e*e,ae=e=>e*(2-e),ue=e=>e<.5?2*e*e:-1+(4-2*e)*e,ce=e=>{let t=2*Math.PI/3;return e===0?0:e===1?1:2**(-10*e)*Math.sin((e*10-.75)*t)+1},le=(e,t)=>{switch(t){case"ease-in":return se(e);case"ease-out":return ae(e);case"ease-in-out":return ue(e);case"spring":return ce(e);default:return e}},T=(e,t,o,s,i)=>{let n=i*i,r=n*i;return .5*(2*t+(-e+o)*i+(2*e-5*t+4*o-s)*n+(-e+3*t-3*o+s)*r)};function E(e,t,o="spline"){if(e.length===0)return{x:50,y:50,scale:1};if(e.length===1){let n=e[0];return{x:n.x??50,y:n.y??50,scale:n.scale??1}}let s=0;for(let n=0;n<e.length;n++){let r=e[n],h=r.holdMs??0,m=r.durationMs??0;if(t<=s+h)return{x:r.x??50,y:r.y??50,scale:r.scale??1};if(s+=h,n<e.length-1&&m>0){if(t<=s+m){let f=(t-s)/m,a=le(Math.max(0,Math.min(1,f)),r.easing),u=e[n+1];if(o==="spline"){let b=e[n-1]??r,x=e[n+2]??u;return{x:T(b.x??50,r.x??50,u.x??50,x.x??50,a),y:T(b.y??50,r.y??50,u.y??50,x.y??50,a),scale:T(b.scale??1,r.scale??1,u.scale??1,x.scale??1,a)}}return{x:(r.x??50)+((u.x??50)-(r.x??50))*a,y:(r.y??50)+((u.y??50)-(r.y??50))*a,scale:(r.scale??1)+((u.scale??1)-(r.scale??1))*a}}s+=m}}let i=e[e.length-1];return{x:i.x??50,y:i.y??50,scale:i.scale??1}}function X(e,t,o,s){let i=100,n=100;if(s!=="input"){let p=s.split(":"),g=Number(p[0]),c=Number(p[1]);if(!Number.isNaN(g)&&!Number.isNaN(c)&&g>0&&c>0){let l=g/c,y=t/o;y>l?(n=100,i=l/y*100):(i=100,n=y/l*100)}}let r=i/100*t,h=n/100*o,m=Math.max(e.scale,1),f=r/m,a=h/m,u=e.x/100*t,b=e.y/100*o,x=f/2,B=a/2,P=Math.max(x,Math.min(t-x,u)),R=Math.max(B,Math.min(o-B,b));return{x:P-x,y:R-B,width:f,height:a}}var me=`
1
+ import{a as C,d as G,g as O,h as V,m as A}from"./chunk-ENKKLU7B.mjs";import{A as I}from"./chunk-ALSOO22Q.mjs";import{e as M}from"./chunk-BVF64D6H.mjs";M();M();var se=e=>e*e,ae=e=>e*(2-e),ue=e=>e<.5?2*e*e:-1+(4-2*e)*e,ce=e=>{let t=2*Math.PI/3;return e===0?0:e===1?1:2**(-10*e)*Math.sin((e*10-.75)*t)+1},le=(e,t)=>{switch(t){case"ease-in":return se(e);case"ease-out":return ae(e);case"ease-in-out":return ue(e);case"spring":return ce(e);default:return e}},T=(e,t,o,s,i)=>{let n=i*i,r=n*i;return .5*(2*t+(-e+o)*i+(2*e-5*t+4*o-s)*n+(-e+3*t-3*o+s)*r)};function E(e,t,o="spline"){if(e.length===0)return{x:50,y:50,scale:1};if(e.length===1){let n=e[0];return{x:n.x??50,y:n.y??50,scale:n.scale??1}}let s=0;for(let n=0;n<e.length;n++){let r=e[n],h=r.holdMs??0,m=r.durationMs??0;if(t<=s+h)return{x:r.x??50,y:r.y??50,scale:r.scale??1};if(s+=h,n<e.length-1&&m>0){if(t<=s+m){let f=(t-s)/m,a=le(Math.max(0,Math.min(1,f)),r.easing),u=e[n+1];if(o==="spline"){let b=e[n-1]??r,x=e[n+2]??u;return{x:T(b.x??50,r.x??50,u.x??50,x.x??50,a),y:T(b.y??50,r.y??50,u.y??50,x.y??50,a),scale:T(b.scale??1,r.scale??1,u.scale??1,x.scale??1,a)}}return{x:(r.x??50)+((u.x??50)-(r.x??50))*a,y:(r.y??50)+((u.y??50)-(r.y??50))*a,scale:(r.scale??1)+((u.scale??1)-(r.scale??1))*a}}s+=m}}let i=e[e.length-1];return{x:i.x??50,y:i.y??50,scale:i.scale??1}}function X(e,t,o,s){let i=100,n=100;if(s!=="input"){let p=s.split(":"),g=Number(p[0]),c=Number(p[1]);if(!Number.isNaN(g)&&!Number.isNaN(c)&&g>0&&c>0){let l=g/c,y=t/o;y>l?(n=100,i=l/y*100):(i=100,n=y/l*100)}}let r=i/100*t,h=n/100*o,m=Math.max(e.scale,1),f=r/m,a=h/m,u=e.x/100*t,b=e.y/100*o,x=f/2,B=a/2,P=Math.max(x,Math.min(t-x,u)),R=Math.max(B,Math.min(o-B,b));return{x:P-x,y:R-B,width:f,height:a}}var me=`
2
2
  struct MotionBlurUniforms {
3
3
  prev_origin : vec2<f32>,
4
4
  prev_size : vec2<f32>,
@@ -1,4 +1,4 @@
1
- import{a as z,h as D}from"./chunk-ENKKLU7B.mjs";import{A as q}from"./chunk-RNFYEZLL.mjs";import{e as W}from"./chunk-BVF64D6H.mjs";W();W();var A=`
1
+ import{a as z,h as D}from"./chunk-ENKKLU7B.mjs";import{A as q}from"./chunk-ALSOO22Q.mjs";import{e as W}from"./chunk-BVF64D6H.mjs";W();W();var A=`
2
2
  struct MaskUniforms {
3
3
  rect : vec4<f32>,
4
4
  roundness : f32,
@@ -1,4 +1,4 @@
1
- import{b as S,c as G}from"./chunk-NKGXINCU.mjs";import{a}from"./chunk-V3FODTPI.mjs";import{d as g,g as M,h as C,j as R,m as P}from"./chunk-ENKKLU7B.mjs";import{A as k}from"./chunk-RNFYEZLL.mjs";import{e as c}from"./chunk-BVF64D6H.mjs";c();c();c();var w=`
1
+ import{b as S,c as G}from"./chunk-NKGXINCU.mjs";import{a}from"./chunk-V3FODTPI.mjs";import{d as g,g as M,h as C,j as R,m as P}from"./chunk-ENKKLU7B.mjs";import{A as k}from"./chunk-ALSOO22Q.mjs";import{e as c}from"./chunk-BVF64D6H.mjs";c();c();c();var w=`
2
2
  struct ColorMatrixUniforms {
3
3
  row0 : vec4<f32>,
4
4
  row1 : vec4<f32>,
@@ -1,4 +1,4 @@
1
- import{a as g}from"./chunk-MA4YVA2E.mjs";import{A as l,c as m,h as u}from"./chunk-RNFYEZLL.mjs";import{e as t}from"./chunk-BVF64D6H.mjs";t();t();var x=["pan"],w=()=>`
1
+ import{a as g}from"./chunk-Q7JN4EHX.mjs";import{A as l,c as m,h as u}from"./chunk-ALSOO22Q.mjs";import{e as t}from"./chunk-BVF64D6H.mjs";t();t();var x=["pan"],w=()=>`
2
2
  struct Uniforms {
3
3
  sampleRate : f32,
4
4
  pan : f32,
@@ -1,4 +1,4 @@
1
- import{o as at,r as sr,t as _t}from"./chunk-I3ZTDIVM.mjs";import{c as Ar}from"./chunk-OLLY3Q7M.mjs";import{h as jn,l as $n}from"./chunk-24P6DAB3.mjs";import{d as nr}from"./chunk-6YJP57MZ.mjs";import{j as te,v as rr,w as ir,x as NA,y as or,z as ar}from"./chunk-MCFYUKAJ.mjs";import{r as cA}from"./chunk-MTJHQATU.mjs";import{a as ot}from"./chunk-IQC2I5A5.mjs";import{c as er,e as tr}from"./chunk-IQKIHFNZ.mjs";import{o as MA}from"./chunk-YAQFFQPG.mjs";import{a as qn,c as _n,e as k}from"./chunk-BVF64D6H.mjs";var Er=qn((Ms,fr)=>{k();var ct=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":ct(),apply:()=>ct(),construct:()=>ct()});fr.exports=ct()});var qr=qn((ru,Zr)=>{k();var St=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":St(),apply:()=>St(),construct:()=>St()});Zr.exports=St()});k();var lr=new Float32Array(2048);for(let A=0;A<2048;A++)lr[A]=.5*(1-Math.cos(2*Math.PI*A/2047));var ur=new Uint16Array(2048);for(let A=0;A<2048;A++){let e=0,t=A;for(let n=0;n<11;n++)e=e<<1|t&1,t>>=1;ur[A]=e}var cr=new Float32Array(2048/2),Ir=new Float32Array(2048/2);for(let A=0;A<2048/2;A++){let e=-2*Math.PI*A/2048;cr[A]=Math.cos(e),Ir[A]=Math.sin(e)}function Yi(A,e){for(let t=0;t<2048;t++){let n=ur[t]??0;if(n>t){let r=A[t]??0;A[t]=A[n]??0,A[n]=r;let i=e[t]??0;e[t]=e[n]??0,e[n]=i}}for(let t=2;t<=2048;t<<=1){let n=t>>1,r=2048/t;for(let i=0;i<2048;i+=t)for(let o=0;o<n;o++){let a=o*r,s=cr[a]??1,g=Ir[a]??0,l=A[i+o]??0,u=e[i+o]??0,c=A[i+o+n]??0,I=e[i+o+n]??0,E=c*s-I*g,d=c*g+I*s;A[i+o]=l+E,e[i+o]=u+d,A[i+o+n]=l-E,e[i+o+n]=u-d}}}var st=class A{tempReal=new Float32Array(2048);tempImag=new Float32Array(2048);previousBins=new Float32Array(1024);extractAtTime(e,t,n){let r=e.length,i=r>0?e[0]?.length??0:0,a=Math.round(n*t)-1024;for(let G=0;G<2048;G++){let N=a+G,w=0;N>=0&&N<i&&(r===1?w=e[0]?.[N]??0:r>=2&&(w=((e[0]?.[N]??0)+(e[1]?.[N]??0))*.5)),this.tempReal[G]=w*(lr[G]??1),this.tempImag[G]=0}Yi(this.tempReal,this.tempImag);let s=new Float32Array(1024),g=2/2048;for(let G=0;G<1024;G++){let N=this.tempReal[G]??0,w=this.tempImag[G]??0;s[G]=Math.sqrt(N*N+w*w)*g*2}let l=t/2048,u=Math.max(1,Math.round(20/l)),c=Math.max(u+1,Math.round(150/l)),I=0;for(let G=u;G<=c&&G<1024;G++)I+=(s[G]??0)*(s[G]??0);let E=Math.min(1,Math.sqrt(I/(c-u+1))*4),d=0;for(let G=0;G<1024;G++){let N=(s[G]??0)-(this.previousBins[G]??0);N>0&&(d+=N),this.previousBins[G]=s[G]??0}let h=Math.min(1,d*.15),Q=Math.round(300/l),m=Math.min(1023,Math.round(3400/l)),D=0;for(let G=Q;G<=m;G++)D+=(s[G]??0)*(s[G]??0);let p=Math.min(1,Math.sqrt(D/(m-Q+1))*3.5);return{fftBins:s,bassEnergy:E,drumTransient:h,vocalEnergy:p,timeMs:n*1e3}}static packBufferData(e){let t=new Float32Array(1028);return t.set(e.fftBins,0),t[1024]=e.bassEnergy,t[1025]=e.drumTransient,t[1026]=e.vocalEnergy,t[1027]=e.timeMs,t}static createGpuBuffer(e,t){let n=t?A.packBufferData(t):new Float32Array(1028),r=e.createBuffer({label:"AudioLatentBuffer",size:4112,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return new Float32Array(r.getMappedRange()).set(n),r.unmap(),r}static updateGpuBuffer(e,t,n){let r=A.packBufferData(n);e.queue.writeBuffer(t,0,r)}},gr=class{constructor(e,t,n,r){this.channels=e;this.sampleRate=t;this.fps=n;this.totalFrames=r;let i=new st,o=t||48e3,a=n||30,s=e[0]?.length??0,g=Math.max(10,Math.ceil(s/o*a)+10),l=typeof r=="number"&&Number.isFinite(r)&&r>0?Math.round(r):g;this.frames=new Array(l);for(let u=0;u<l;u++){let c=u/a;this.frames[u]=i.extractAtTime(e,o,c)}}channels;sampleRate;fps;totalFrames;frames=[];gpuBuffers=new WeakMap;getFrameData(e){let t=Math.max(0,Math.min(this.totalFrames-1,Math.round(e)));return this.frames[t]??{fftBins:new Float32Array(1024),bassEnergy:0,drumTransient:0,vocalEnergy:0,timeMs:t/this.fps*1e3}}getGpuBuffer(e,t){let n=this.gpuBuffers.get(e);n||(n=new Map,this.gpuBuffers.set(e,n));let r=Math.max(0,Math.min(this.totalFrames-1,Math.round(t))),i=n.get(r);if(!i){let o=this.getFrameData(r);i=st.createGpuBuffer(e,o),n.set(r,i)}return i}};k();var H={create(A=0,e=0,t=0){return[A,e,t]},copy(A){return[A[0],A[1],A[2]]},set(A,e,t,n){return A[0]=e,A[1]=t,A[2]=n,A},add(A,e){return[A[0]+e[0],A[1]+e[1],A[2]+e[2]]},subtract(A,e){return[A[0]-e[0],A[1]-e[1],A[2]-e[2]]},multiplyScalar(A,e){return[A[0]*e,A[1]*e,A[2]*e]},dot(A,e){return A[0]*e[0]+A[1]*e[1]+A[2]*e[2]},cross(A,e){return[A[1]*e[2]-A[2]*e[1],A[2]*e[0]-A[0]*e[2],A[0]*e[1]-A[1]*e[0]]},lengthSq(A){return A[0]*A[0]+A[1]*A[1]+A[2]*A[2]},length(A){return Math.hypot(A[0],A[1],A[2])},distance(A,e){return Math.hypot(A[0]-e[0],A[1]-e[1],A[2]-e[2])},normalize(A){let e=Math.hypot(A[0],A[1],A[2]);if(e===0)return[0,0,0];let t=1/e;return[A[0]*t,A[1]*t,A[2]*t]},lerp(A,e,t){return[A[0]+(e[0]-A[0])*t,A[1]+(e[1]-A[1])*t,A[2]+(e[2]-A[2])*t]},equals(A,e,t=1e-6){return Math.abs(A[0]-e[0])<=t&&Math.abs(A[1]-e[1])<=t&&Math.abs(A[2]-e[2])<=t}};k();var _={identity(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},copy(A){return[...A]},multiply(A,e){let t=new Array(16);for(let n=0;n<4;n++)for(let r=0;r<4;r++)t[r*4+n]=A[0+n]*e[r*4+0]+A[4+n]*e[r*4+1]+A[8+n]*e[r*4+2]+A[12+n]*e[r*4+3];return t},translate(A,e,t=0){return[1,0,0,0,0,1,0,0,0,0,1,0,A,e,t,1]},scale(A,e,t=1){return[A,0,0,0,0,e,0,0,0,0,t,0,0,0,0,1]},rotateX(A){let e=Math.cos(A),t=Math.sin(A);return[1,0,0,0,0,e,t,0,0,-t,e,0,0,0,0,1]},rotateY(A){let e=Math.cos(A),t=Math.sin(A);return[e,0,-t,0,0,1,0,0,t,0,e,0,0,0,0,1]},rotateZ(A){let e=Math.cos(A),t=Math.sin(A);return[e,t,0,0,-t,e,0,0,0,0,1,0,0,0,0,1]},rotateAxis(A,e){let t=H.normalize(A),n=t[0],r=t[1],i=t[2],o=Math.cos(e),a=Math.sin(e),s=1-o;return[s*n*n+o,s*n*r+a*i,s*n*i-a*r,0,s*n*r-a*i,s*r*r+o,s*r*i+a*n,0,s*n*i+a*r,s*r*i-a*n,s*i*i+o,0,0,0,0,1]},lookAt(A,e,t=[0,-1,0]){let n=H.subtract(e,A);H.lengthSq(n)===0?n=[0,0,1]:n=H.normalize(n);let r=H.cross(n,t);H.lengthSq(r)===0?r=[1,0,0]:r=H.normalize(r);let i=H.cross(r,n);return[r[0],i[0],n[0],0,r[1],i[1],n[1],0,r[2],i[2],n[2],0,-H.dot(r,A),-H.dot(i,A),-H.dot(n,A),1]},perspective(A,e,t,n){let r=1/Math.tan(A/2),i=1/(n-t);return[r/e,0,0,0,0,r,0,0,0,0,n*i,1,0,0,-t*n*i,0]},orthographic(A,e,t,n,r,i){let o=1/(e-A),a=1/(n-t),s=1/(i-r);return[2*o,0,0,0,0,2*a,0,0,0,0,s,0,-(e+A)*o,-(n+t)*a,-r*s,1]},invert(A){let e=new Array(16);e[0]=A[5]*A[10]*A[15]-A[5]*A[11]*A[14]-A[9]*A[6]*A[15]+A[9]*A[7]*A[14]+A[13]*A[6]*A[11]-A[13]*A[7]*A[10],e[4]=-A[4]*A[10]*A[15]+A[4]*A[11]*A[14]+A[8]*A[6]*A[15]-A[8]*A[7]*A[14]-A[12]*A[6]*A[11]+A[12]*A[7]*A[10],e[8]=A[4]*A[9]*A[15]-A[4]*A[11]*A[13]-A[8]*A[5]*A[15]+A[8]*A[7]*A[13]+A[12]*A[5]*A[11]-A[12]*A[7]*A[9],e[12]=-A[4]*A[9]*A[14]+A[4]*A[10]*A[13]+A[8]*A[5]*A[14]-A[8]*A[6]*A[13]-A[12]*A[5]*A[10]+A[12]*A[6]*A[9],e[1]=-A[1]*A[10]*A[15]+A[1]*A[11]*A[14]+A[9]*A[2]*A[15]-A[9]*A[3]*A[14]-A[13]*A[2]*A[11]+A[13]*A[3]*A[10],e[5]=A[0]*A[10]*A[15]-A[0]*A[11]*A[14]-A[8]*A[2]*A[15]+A[8]*A[3]*A[14]+A[12]*A[2]*A[11]-A[12]*A[3]*A[10],e[9]=-A[0]*A[9]*A[15]+A[0]*A[11]*A[13]+A[8]*A[1]*A[15]-A[8]*A[3]*A[13]-A[12]*A[1]*A[11]+A[12]*A[3]*A[9],e[13]=A[0]*A[9]*A[14]-A[0]*A[10]*A[13]-A[8]*A[1]*A[14]+A[8]*A[2]*A[13]+A[12]*A[1]*A[10]-A[12]*A[2]*A[9],e[2]=A[1]*A[6]*A[15]-A[1]*A[7]*A[14]-A[5]*A[2]*A[15]+A[5]*A[3]*A[14]+A[13]*A[2]*A[7]-A[13]*A[3]*A[6],e[6]=-A[0]*A[6]*A[15]+A[0]*A[7]*A[14]+A[4]*A[2]*A[15]-A[4]*A[3]*A[14]-A[12]*A[2]*A[7]+A[12]*A[3]*A[6],e[10]=A[0]*A[5]*A[15]-A[0]*A[7]*A[13]-A[4]*A[1]*A[15]+A[4]*A[3]*A[13]+A[12]*A[1]*A[7]-A[12]*A[3]*A[5],e[14]=-A[0]*A[5]*A[14]+A[0]*A[6]*A[13]+A[4]*A[1]*A[14]-A[4]*A[2]*A[13]-A[12]*A[1]*A[6]+A[12]*A[2]*A[5],e[3]=-A[1]*A[6]*A[11]+A[1]*A[7]*A[10]+A[5]*A[2]*A[11]-A[5]*A[3]*A[10]-A[9]*A[2]*A[7]+A[9]*A[3]*A[6],e[7]=A[0]*A[6]*A[11]-A[0]*A[7]*A[10]-A[4]*A[2]*A[11]+A[4]*A[3]*A[10]+A[8]*A[2]*A[7]-A[8]*A[3]*A[6],e[11]=-A[0]*A[5]*A[11]+A[0]*A[7]*A[9]+A[4]*A[1]*A[11]-A[4]*A[3]*A[9]-A[8]*A[1]*A[7]+A[8]*A[3]*A[5],e[15]=A[0]*A[5]*A[10]-A[0]*A[6]*A[9]-A[4]*A[1]*A[10]+A[4]*A[2]*A[9]+A[8]*A[1]*A[6]-A[8]*A[2]*A[5];let t=A[0]*e[0]+A[1]*e[4]+A[2]*e[8]+A[3]*e[12];if(Math.abs(t)<1e-12)return null;t=1/t;for(let n=0;n<16;n++)e[n]*=t;return e},transpose(A){return[A[0],A[4],A[8],A[12],A[1],A[5],A[9],A[13],A[2],A[6],A[10],A[14],A[3],A[7],A[11],A[15]]},projectPoint(A,e){let t=e[0],n=e[1],r=e[2],i=A[0]*t+A[4]*n+A[8]*r+A[12],o=A[1]*t+A[5]*n+A[9]*r+A[13],a=A[2]*t+A[6]*n+A[10]*r+A[14],s=A[3]*t+A[7]*n+A[11]*r+A[15],g=Math.abs(s)>1e-6?1/s:1;return[i*g,o*g,a*g]},projectRectangle(A,e,t){return[_.projectPoint(A,[0,0,0]),_.projectPoint(A,[e,0,0]),_.projectPoint(A,[e,t,0]),_.projectPoint(A,[0,t,0])]},toFloat32Array(A){return new Float32Array(A)}};k();function Se(A,e,t=3){let n=0,r=1,i=1,o=0;for(let a=0;a<t;a++){let s=Math.sin(A*r*2*Math.PI+e+a*1.7),g=Math.cos(A*r*1.414*Math.PI+e*2.1+a*.9);n+=(s*.6+g*.4)*i,o+=i,r*=2,i*=.5}return o>0?n/o:0}var fe={createDefaultCamera(A,e,t=50){let n=t*Math.PI/180,r=e/2/Math.tan(n/2);return{eye:[A/2,e/2,-r],target:[A/2,e/2,0],up:[0,-1,0],fov:t,aspect:Math.max(1e-4,A/e),near:1,far:5e4,zoom:1,focusDistance:r,fStop:2.8,maxBlurRadius:32}},computeViewMatrix(A){return _.lookAt(A.eye,A.target,A.up)},computeProjectionMatrix(A){let e=A.fov*Math.PI/180,t=_.perspective(e,A.aspect,A.near,A.far);return A.zoom!==1&&A.zoom>0&&(t[0]*=A.zoom,t[5]*=A.zoom),t},computeViewProjectionMatrix(A){let e=fe.computeViewMatrix(A),t=fe.computeProjectionMatrix(A);return _.multiply(t,e)},dolly(A,e,t){let n=H.normalize(H.subtract(e,A)),r=H.multiplyScalar(n,t);return{eye:H.add(A,r),target:e}},truckPedestal(A,e,t,n,r){let i=H.normalize(H.subtract(e,A)),o=H.normalize(H.cross(i,t)),a=H.cross(o,i),s=H.multiplyScalar(o,n),g=H.multiplyScalar(a,r),l=H.add(s,g);return{eye:H.add(A,l),target:H.add(e,l)}},orbit(A,e,t,n){let r=t*Math.PI/180,i=n*Math.PI/180,o=Math.cos(i),a=Math.sin(i),s=Math.cos(r),g=Math.sin(r),l=A[0]+e*o*g,u=A[1]-e*a,c=A[2]-e*o*s;return[l,u,c]},applyOrientation(A,e,t,n){if(e===0&&t===0&&n===0)return A;let r=H.normalize(H.subtract(A.target,A.eye)),i=H.normalize(H.cross(r,A.up)),o=H.cross(i,r),a=H.distance(A.eye,A.target),s=r,g=o;if(t!==0){let c=t*Math.PI/180,I=Math.cos(c),E=Math.sin(c);s=H.normalize(H.subtract(H.multiplyScalar(s,I),H.multiplyScalar(i,E)))}let l=H.normalize(H.cross(s,g));if(e!==0){let c=e*Math.PI/180,I=Math.cos(c),E=Math.sin(c);s=H.normalize(H.add(H.multiplyScalar(s,I),H.multiplyScalar(g,E))),g=H.normalize(H.cross(l,s))}if(n!==0){let c=n*Math.PI/180,I=Math.cos(c),E=Math.sin(c);g=H.normalize(H.add(H.multiplyScalar(g,I),H.multiplyScalar(l,E)))}let u=H.add(A.eye,H.multiplyScalar(s,a));return{...A,target:u,up:g}},applyCameraShake(A,e,t){let{translationAmplitude:n,rotationAmplitude:r,frequency:i=2.5,octaves:o=3,seed:a=42}=t;if(n<=0&&r<=0)return A;let s=e*i,g=Se(s,a,o)*n,l=Se(s,a+101.5,o)*n,u=Se(s,a+203.7,o)*(n*.5),c=Se(s,a+307.1,o)*r,I=Se(s,a+409.3,o)*r,E=H.normalize(H.subtract(A.target,A.eye)),d=H.normalize(H.cross(E,A.up)),h=H.cross(d,E),Q=H.add(H.multiplyScalar(d,g),H.add(H.multiplyScalar(h,l),H.multiplyScalar(E,u))),m=H.add(A.eye,Q),D=H.add(A.target,H.add(H.multiplyScalar(d,I*10),H.multiplyScalar(h,c*10)));return{...A,eye:m,target:D}},computeCircleOfConfusion(A,e,t,n,r=32){if(e<=0||n<=0||A<=0)return 0;let i=Math.abs(A-e),o=t/n,a=i/A*o*.5;return Math.min(r,Math.max(0,a))},computeCameraFrustumPlanes(A){let e=t=>{let n=Math.hypot(t[0],t[1],t[2]);return n===0?t:[t[0]/n,t[1]/n,t[2]/n,t[3]/n]};return{left:e([A[3]+A[0],A[7]+A[4],A[11]+A[8],A[15]+A[12]]),right:e([A[3]-A[0],A[7]-A[4],A[11]-A[8],A[15]-A[12]]),bottom:e([A[3]+A[1],A[7]+A[5],A[11]+A[9],A[15]+A[13]]),top:e([A[3]-A[1],A[7]-A[5],A[11]-A[9],A[15]-A[13]]),near:e([A[2],A[6],A[10],A[14]]),far:e([A[3]-A[2],A[7]-A[6],A[11]-A[10],A[15]-A[14]])}},isBoxInFrustum(A,e,t){let n=[t.left,t.right,t.bottom,t.top,t.near,t.far];for(let r of n){let i=r[0]>0?e[0]:A[0],o=r[1]>0?e[1]:A[1],a=r[2]>0?e[2]:A[2];if(r[0]*i+r[1]*o+r[2]*a+r[3]<0)return!1}return!0}};k();var Wi={studio:{top:"#9da3ad",horizon:"#5d626b",bottom:"#202226",softboxes:3.5},soft:{top:"#f1efea",horizon:"#cfcac1",bottom:"#77726a",softboxes:1.2},sunset:{top:"#4d63a3",horizon:"#ff9a5c",bottom:"#3b2a28",softboxes:1},night:{top:"#121a3a",horizon:"#1f2950",bottom:"#05060b",softboxes:.5},neutral:{top:"#9a9a9a",horizon:"#808080",bottom:"#5c5c5c",softboxes:0}},zi={none:0,aces:1,agx:2,neutral:3};function gt(A){let e=er(A)??[0,0,0,1],t=n=>n<=.04045?n/12.92:((n+.055)/1.055)**2.4;return[t(e[0]),t(e[1]),t(e[2])]}function Br(A){let e=Wi[A.preset??"studio"],t=A.intensity??1,n=r=>[r[0]*t,r[1]*t,r[2]*t];return{top:n(gt(A.top??e.top)),horizon:n(gt(A.horizon??e.horizon)),bottom:n(gt(A.bottom??e.bottom)),softboxes:(A.softboxes??e.softboxes)*t,rotationRad:(A.rotation??0)*Math.PI/180,exposureMultiplier:2**(A.exposure??0),toneMapping:zi[A.toneMapping??"neutral"],fog:A.fog?{color:gt(A.fog.color),start:A.fog.start,end:A.fog.end,opacity:Math.max(0,Math.min(1,A.fog.opacity??1))}:void 0}}k();var lt=8,$t=736;function jt(A){if(!A)return[1,1,1];if(Array.isArray(A)){let r=A[0]??1,i=A[1]??1,o=A[2]??1;return[r>1?r/255:r,i>1?i/255:i,o>1?o/255:o]}if(typeof A=="object"&&A!==null){let r=A.r??1,i=A.g??1,o=A.b??1;return[r>1?r/255:r,i>1?i/255:i,o>1?o/255:o]}if(typeof A!="string")return[1,1,1];let e=A.trim().toLowerCase();if(e.startsWith("#")){let r=e.slice(1);if(r.length===3){let i=Number.parseInt(r[0]+r[0],16)/255,o=Number.parseInt(r[1]+r[1],16)/255,a=Number.parseInt(r[2]+r[2],16)/255;return[i,o,a]}if(r.length>=6){let i=Number.parseInt(r.slice(0,2),16)/255,o=Number.parseInt(r.slice(2,4),16)/255,a=Number.parseInt(r.slice(4,6),16)/255;return[i,o,a]}}let t=e.match(/rgba?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/);if(t){let r=Number.parseFloat(t[1])/255,i=Number.parseFloat(t[2])/255,o=Number.parseFloat(t[3])/255;return[Math.max(0,Math.min(1,r)),Math.max(0,Math.min(1,i)),Math.max(0,Math.min(1,o))]}let n=e.match(/hsla?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)%?\s*,\s*([\d.]+)%?/);if(n){let r=Number.parseFloat(n[1])/360,i=Number.parseFloat(n[2])/100,o=Number.parseFloat(n[3])/100;return Xi(r,i,o)}return[1,1,1]}function Xi(A,e,t){if(e===0)return[t,t,t];let n=(o,a,s)=>{let g=s;return g<0&&(g+=1),g>1&&(g-=1),g<1/6?o+(a-o)*6*g:g<1/2?a:g<2/3?o+(a-o)*(2/3-g)*6:o},r=t<.5?t*(1+e):t+e-t*e,i=2*t-r;return[n(i,r,A+1/3),n(i,r,A),n(i,r,A-1/3)]}var qA={computeNormalMatrix(A){let e=_.invert(A);return e?[e[0],e[4],e[8],0,e[1],e[5],e[9],0,e[2],e[6],e[10],0,0,0,0,1]:_.identity()},processLight(A){let e=jt(A.color),t=A.intensity??1,n=A.position?A.position[0]:A.x??0,r=A.position?A.position[1]:A.y??0,i=A.position?A.position[2]:A.z??0,o=A.lightType??A.type??"directional",a=1;o==="ambient"?a=0:o==="directional"?a=1:o==="point"?a=2:o==="spot"&&(a=3);let s=[0,0,-1];if(A.direction)s=H.normalize(A.direction);else if(A.target||A.targetX!==void 0||A.targetY!==void 0||A.targetZ!==void 0){let Q=A.target?A.target[0]:A.targetX??n,m=A.target?A.target[1]:A.targetY??r,D=A.target?A.target[2]:A.targetZ??i,p=[Q,m,D],G=H.subtract(p,[n,r,i]);H.length(G)>1e-4&&(s=H.normalize(G))}let g=Math.max(1,A.radius??1e3),l=A.decay??2,u=Math.max(.1,Math.min(180,A.angle??45)),c=Math.max(0,Math.min(1,A.penumbra??.2)),I=u*Math.PI/180,E=I*(1-c),d=Math.cos(I),h=Math.cos(E);return{posType:[n,r,i,a],dirRadius:[s[0],s[1],s[2],g],colorIntensity:[e[0],e[1],e[2],t],spotParams:[d,h,l,0]}},packLightsUniforms(A,e,t){let n=new Float32Array($t/4);if(qA.packPhysicalBlock(n,A??[],e,t),(!A||A.length===0)&&!e)return n[4]=0,n[5]=0,n;let r=0,i=0,o=0,a=[];for(let g of A)if((g.lightType??g.type)==="ambient"){let u=jt(g.color),c=g.intensity??1;r+=u[0]*c,i+=u[1]*c,o+=u[2]*c}else a.length<lt&&a.push(qA.processLight(g));n[0]=r,n[1]=i,n[2]=o,n[3]=1,n[4]=a.length,n[5]=1;let s=8;for(let g=0;g<lt;g++){if(g<a.length){let l=a[g];n[s+0]=l.posType[0],n[s+1]=l.posType[1],n[s+2]=l.posType[2],n[s+3]=l.posType[3],n[s+4]=l.dirRadius[0],n[s+5]=l.dirRadius[1],n[s+6]=l.dirRadius[2],n[s+7]=l.dirRadius[3],n[s+8]=l.colorIntensity[0],n[s+9]=l.colorIntensity[1],n[s+10]=l.colorIntensity[2],n[s+11]=l.colorIntensity[3],n[s+12]=l.spotParams[0],n[s+13]=l.spotParams[1],n[s+14]=l.spotParams[2],n[s+15]=l.spotParams[3]}else for(let l=0;l<16;l++)n[s+l]=0;s+=16}return n},shadowCasterIndex(A){let e=0;for(let t of A){let n=t.lightType??t.type;if(n!=="ambient"){if(e>=lt)break;if(t.castShadow&&(n==="directional"||n==="spot"))return e;e++}}return-1},packPhysicalBlock(A,e,t,n){let r=8+lt*16,i=0,o=0,a=0;for(let s of e){if((s.lightType??s.type)!=="ambient")continue;let[g,l,u]=jt(s.color),c=s.intensity??1,I=E=>E<=.04045?E/12.92:((E+.055)/1.055)**2.4;i+=I(g)*c,o+=I(l)*c,a+=I(u)*c}if(A[r+0]=i,A[r+1]=o,A[r+2]=a,A[r+3]=1,t){let s=Br(t);A[6]=1,A[7]=s.toneMapping,A[r+3]=s.exposureMultiplier,A.set([...s.top,s.rotationRad],r+4),A.set([...s.horizon,s.softboxes],r+8),A.set([...s.bottom,1],r+12),s.fog&&(A.set([...s.fog.color,1],r+16),A.set([s.fog.start,s.fog.end,s.fog.opacity,0],r+20))}if(n&&n.lightIndex>=0){A.set([1,n.lightIndex,n.softness,n.mapSize],r+24),A.set([n.bias,n.normalOffset,n.darkness,0],r+28);for(let s=0;s<16;s++)A[r+32+s]=n.matrix[s]??0}}};k();k();var An={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif",".tif":"image/tiff",".tiff":"image/tiff",".avif":"image/avif"};function Ue(A){return An[MA.extname(A).toLowerCase()]??"image/png"}function ut(A){let e=MA.extname(A.replace(/\\/g,"/")).toLowerCase();return!e||e in An}function ve(A,e){if(!A||typeof cA>"u"||!cA.existsSync||!ut(A))return;let t=A.trim().replace(/^file:\/\//,"");try{t=decodeURIComponent(t)}catch{}let n=t.replace(/\\/g,"/"),r=n.split("/").pop()??n,i=[];if(MA.isAbsolute(n)&&i.push(n),e){i.push(MA.resolve(e,n)),i.push(MA.join(e,r)),i.push(MA.join(e,"textures",r));try{for(let o of cA.readdirSync(e))o.toLowerCase().endsWith(".fbm")&&i.push(MA.join(e,o,r))}catch{}}for(let o of i)try{if(cA.existsSync(o)&&cA.statSync(o).isFile())return{bytes:new Uint8Array(cA.readFileSync(o)),mime:Ue(o)}}catch{}}function Ee(A,e,t){let n=ut(t)?"was not found":`is in an unsupported format (use ${Object.keys(An).join(", ")})`;console.warn(`[${A}] Texture "${t}" for material "${e}" ${n}; the material renders without it.`)}var Re=class A{static parse(e,t,n){let r=typeof t=="object"&&t!==null?t:n??{},i=typeof t=="string"?t:r.mtlText,o=[],a=[],s=[],g=[],l={materialName:"default",faces:[]};g.push(l);let u={};i&&Object.assign(u,A.loadTextures(A.parseMtl(i),r.basePath));let c=e.split(/\r?\n/);for(let P=0;P<c.length;P++){let nA=c[P]?.trim();if(!nA||nA.startsWith("#"))continue;let tA=nA.split(/\s+/),rA=tA[0]?.toLowerCase();if(rA==="mtllib"){let AA=tA.slice(1).join(" ").trim();if(r.basePath&&typeof cA<"u"&&cA.existsSync)try{let eA=MA.resolve(r.basePath,AA);if(cA.existsSync(eA)){let gA=cA.readFileSync(eA,"utf-8");Object.assign(u,A.loadTextures(A.parseMtl(gA),MA.dirname(eA)))}}catch{}}else if(rA==="v"){let AA=Number.parseFloat(tA[1]??"0"),eA=Number.parseFloat(tA[2]??"0"),gA=Number.parseFloat(tA[3]??"0");o.push([AA,eA,gA])}else if(rA==="vn"){let AA=Number.parseFloat(tA[1]??"0"),eA=Number.parseFloat(tA[2]??"0"),gA=Number.parseFloat(tA[3]??"0");a.push([AA,eA,gA])}else if(rA==="vt"){let AA=Number.parseFloat(tA[1]??"0"),eA=tA[2]!==void 0?Number.parseFloat(tA[2]):0;s.push([AA,eA])}else if(rA==="usemtl"){let AA=tA[1]??"default";l.faces.length>0?(l={materialName:AA,faces:[]},g.push(l)):l.materialName=AA}else if(rA==="f"){let AA=[];for(let eA=1;eA<tA.length;eA++){let gA=tA[eA];if(!gA)continue;let lA=gA.split("/"),BA=Number.parseInt(lA[0]??"0",10),EA=lA[1]&&lA[1].length>0?Number.parseInt(lA[1],10):0,QA=lA[2]&&lA[2].length>0?Number.parseInt(lA[2],10):0;BA<0&&(BA=o.length+BA+1),EA<0&&(EA=s.length+EA+1),QA<0&&(QA=a.length+QA+1),AA.push({v:BA-1,vt:EA-1,vn:QA-1})}if(AA.length>=3)for(let eA=1;eA<AA.length-1;eA++){let gA=AA[0],lA=AA[eA],BA=AA[eA+1];gA&&lA&&BA&&l.faces.push([gA,lA,BA])}}}let I=1/0,E=1/0,d=1/0,h=-1/0,Q=-1/0,m=-1/0;for(let P of o){let[nA,tA,rA]=P;nA===void 0||tA===void 0||rA===void 0||(nA<I&&(I=nA),tA<E&&(E=tA),rA<d&&(d=rA),nA>h&&(h=nA),tA>Q&&(Q=tA),rA>m&&(m=rA))}Number.isFinite(I)||(I=-1,E=-1,d=-1,h=1,Q=1,m=1);let D=(I+h)*.5,p=(E+Q)*.5,G=(d+m)*.5,N=Math.max(1e-4,h-I),w=Math.max(1e-4,Q-E),U=Math.max(1e-4,m-d),b=Math.max(N,w,U),M=1;r.normalizeSize&&r.normalizeSize>0&&(M=r.normalizeSize/b),typeof r.scale=="number"&&(M*=r.scale);let v=r.center??!1,R=v?D:0,S=v?p:0,K=v?G:0,F=[];for(let P=0;P<g.length;P++){let nA=g[P];if(!nA||nA.faces.length===0)continue;let tA=new Map,rA=[],AA=[],eA=[],gA=[],lA=!1;for(let QA of nA.faces)for(let sA of QA){let yA=`${sA.v}_${sA.vt}_${sA.vn}`,bA=tA.get(yA);if(bA===void 0){bA=rA.length/3,tA.set(yA,bA);let wA=o[sA.v]??[0,0,0],hA=((wA[0]??0)-R)*M,VA=((wA[1]??0)-S)*M,YA=((wA[2]??0)-K)*M;if(rA.push(hA,VA,YA),sA.vt>=0&&s[sA.vt]){let FA=s[sA.vt];eA.push(FA[0]??0,1-(FA[1]??0))}else eA.push(0,0);if(sA.vn>=0&&a[sA.vn]){lA=!0;let FA=a[sA.vn];AA.push(FA[0]??0,FA[1]??0,FA[2]??0)}else AA.push(0,0,0)}gA.push(bA)}if(!lA||r.smoothNormals){let QA=new Float32Array(rA.length);for(let sA=0;sA<gA.length;sA+=3){let yA=gA[sA],bA=gA[sA+1],wA=gA[sA+2],hA=[rA[yA*3],rA[yA*3+1],rA[yA*3+2]],VA=[rA[bA*3],rA[bA*3+1],rA[bA*3+2]],YA=[rA[wA*3],rA[wA*3+1],rA[wA*3+2]],FA=H.subtract(VA,hA),Ht=H.subtract(YA,hA),vA=H.cross(FA,Ht);QA[yA*3]+=vA[0],QA[yA*3+1]+=vA[1],QA[yA*3+2]+=vA[2],QA[bA*3]+=vA[0],QA[bA*3+1]+=vA[1],QA[bA*3+2]+=vA[2],QA[wA*3]+=vA[0],QA[wA*3+1]+=vA[1],QA[wA*3+2]+=vA[2]}for(let sA=0;sA<rA.length/3;sA++){let yA=QA[sA*3],bA=QA[sA*3+1],wA=QA[sA*3+2],hA=Math.hypot(yA,bA,wA)||1;AA[sA*3]=yA/hA,AA[sA*3+1]=bA/hA,AA[sA*3+2]=wA/hA}}let EA=rA.length/3>65535?new Uint32Array(gA):new Uint16Array(gA);F.push({id:`mesh_${P}`,name:nA.materialName,positions:new Float32Array(rA),normals:new Float32Array(AA),uvs:new Float32Array(eA),indices:EA,materialName:nA.materialName})}let z=(I-R)*M,Z=(E-S)*M,$=(d-K)*M,aA=(h-R)*M,W=(Q-S)*M,Y=(m-K)*M,j=aA-z,IA=W-Z,dA=Y-$,uA=(z+aA)*.5,mA=(Z+W)*.5,pA=($+Y)*.5,X=Math.hypot(j,IA,dA)*.5;return{meshes:F,materials:u,animations:[],bounds:{min:[z,Z,$],max:[aA,W,Y],center:[uA,mA,pA],size:[j,IA,dA],boundingSphereRadius:X}}}static parseMtl(e){let t={},n=null,r=e.split(/\r?\n/);for(let i of r){let o=i.trim();if(!o||o.startsWith("#"))continue;let a=o.split(/\s+/),s=a[0]?.toLowerCase();if(s==="newmtl"){let g=a[1]??"default";n={name:g,diffuseColor:[1,1,1,1],specularColor:[1,1,1],ambientColor:[.2,.2,.2],shininess:32,opacity:1},t[g]=n}else if(n)if(s==="kd"){let g=Number.parseFloat(a[1]??"1"),l=Number.parseFloat(a[2]??"1"),u=Number.parseFloat(a[3]??"1");n.diffuseColor=[g,l,u,n.diffuseColor?.[3]??1]}else if(s==="ks"){let g=Number.parseFloat(a[1]??"1"),l=Number.parseFloat(a[2]??"1"),u=Number.parseFloat(a[3]??"1");n.specularColor=[g,l,u],n.specularIntensity=(g+l+u)/3}else if(s==="ka"){let g=Number.parseFloat(a[1]??"0.2"),l=Number.parseFloat(a[2]??"0.2"),u=Number.parseFloat(a[3]??"0.2");n.ambientColor=[g,l,u]}else if(s==="ns")n.shininess=Number.parseFloat(a[1]??"32");else if(s==="d"||s==="tr"){let g=Number.parseFloat(a[1]??"1");n.opacity=s==="d"?g:1-g,n.diffuseColor&&(n.diffuseColor[3]=n.opacity)}else if(s==="map_kd"){n.diffuseTexture=A.mapFileName(a);let g=a.findIndex(l=>l.toLowerCase()==="-clamp");n.textureWrap=g>0&&a[g+1]?.toLowerCase()==="on"?"clamp":"repeat"}else(s==="norm"||s==="map_kn")&&(n.normalTexture=A.mapFileName(a))}return t}static MAP_OPTION_ARGS={"-blendu":1,"-blendv":1,"-cc":1,"-clamp":1,"-texres":1,"-bm":1,"-boost":1,"-imfchan":1,"-type":1,"-mm":2};static mapFileName(e){let t=1;for(;t<e.length&&e[t]?.startsWith("-");){let n=e[t].toLowerCase();if(t++,n==="-o"||n==="-s"||n==="-t")for(let r=0;r<3&&t<e.length&&!Number.isNaN(Number(e[t]));r++)t++;else t+=A.MAP_OPTION_ARGS[n]??0}return e.slice(t).join(" ")}static loadTextures(e,t){if(!t)return e;for(let n of Object.values(e)){if(n.diffuseTexture&&!n.diffuseTextureBuffer){let r=ve(n.diffuseTexture,t);r?(n.diffuseTextureBuffer=r.bytes,n.diffuseTextureMime=r.mime):Ee("ObjLoader",n.name,n.diffuseTexture)}if(n.normalTexture&&!n.normalTextureBuffer){let r=ve(n.normalTexture,t);r?n.normalTextureBuffer=r.bytes:Ee("ObjLoader",n.name,n.normalTexture)}}return e}};function bs(A,e,t={}){return Re.parse(A,e,t)}function Ds(A){return Re.parseMtl(A)}function Le(A,e,t={}){let n;if(typeof A!="string")n=new TextDecoder().decode(A);else{let r=A.trim();if(!(r.startsWith("v ")||r.startsWith("#")||r.includes(`
1
+ import{o as at,r as sr,t as _t}from"./chunk-BBHRXV75.mjs";import{c as Ar}from"./chunk-OLLY3Q7M.mjs";import{h as jn,l as $n}from"./chunk-24P6DAB3.mjs";import{d as nr}from"./chunk-6YJP57MZ.mjs";import{A as ar,j as te,w as rr,x as ir,y as NA,z as or}from"./chunk-2LQCQ3OT.mjs";import{r as cA}from"./chunk-MTJHQATU.mjs";import{a as ot}from"./chunk-IQC2I5A5.mjs";import{c as er,e as tr}from"./chunk-IQKIHFNZ.mjs";import{o as MA}from"./chunk-YAQFFQPG.mjs";import{a as qn,c as _n,e as k}from"./chunk-BVF64D6H.mjs";var Er=qn((Ms,fr)=>{k();var ct=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":ct(),apply:()=>ct(),construct:()=>ct()});fr.exports=ct()});var qr=qn((ru,Zr)=>{k();var St=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":St(),apply:()=>St(),construct:()=>St()});Zr.exports=St()});k();var lr=new Float32Array(2048);for(let A=0;A<2048;A++)lr[A]=.5*(1-Math.cos(2*Math.PI*A/2047));var ur=new Uint16Array(2048);for(let A=0;A<2048;A++){let e=0,t=A;for(let n=0;n<11;n++)e=e<<1|t&1,t>>=1;ur[A]=e}var cr=new Float32Array(2048/2),Ir=new Float32Array(2048/2);for(let A=0;A<2048/2;A++){let e=-2*Math.PI*A/2048;cr[A]=Math.cos(e),Ir[A]=Math.sin(e)}function Yi(A,e){for(let t=0;t<2048;t++){let n=ur[t]??0;if(n>t){let r=A[t]??0;A[t]=A[n]??0,A[n]=r;let i=e[t]??0;e[t]=e[n]??0,e[n]=i}}for(let t=2;t<=2048;t<<=1){let n=t>>1,r=2048/t;for(let i=0;i<2048;i+=t)for(let o=0;o<n;o++){let a=o*r,s=cr[a]??1,g=Ir[a]??0,l=A[i+o]??0,u=e[i+o]??0,c=A[i+o+n]??0,I=e[i+o+n]??0,E=c*s-I*g,d=c*g+I*s;A[i+o]=l+E,e[i+o]=u+d,A[i+o+n]=l-E,e[i+o+n]=u-d}}}var st=class A{tempReal=new Float32Array(2048);tempImag=new Float32Array(2048);previousBins=new Float32Array(1024);extractAtTime(e,t,n){let r=e.length,i=r>0?e[0]?.length??0:0,a=Math.round(n*t)-1024;for(let G=0;G<2048;G++){let N=a+G,w=0;N>=0&&N<i&&(r===1?w=e[0]?.[N]??0:r>=2&&(w=((e[0]?.[N]??0)+(e[1]?.[N]??0))*.5)),this.tempReal[G]=w*(lr[G]??1),this.tempImag[G]=0}Yi(this.tempReal,this.tempImag);let s=new Float32Array(1024),g=2/2048;for(let G=0;G<1024;G++){let N=this.tempReal[G]??0,w=this.tempImag[G]??0;s[G]=Math.sqrt(N*N+w*w)*g*2}let l=t/2048,u=Math.max(1,Math.round(20/l)),c=Math.max(u+1,Math.round(150/l)),I=0;for(let G=u;G<=c&&G<1024;G++)I+=(s[G]??0)*(s[G]??0);let E=Math.min(1,Math.sqrt(I/(c-u+1))*4),d=0;for(let G=0;G<1024;G++){let N=(s[G]??0)-(this.previousBins[G]??0);N>0&&(d+=N),this.previousBins[G]=s[G]??0}let h=Math.min(1,d*.15),Q=Math.round(300/l),m=Math.min(1023,Math.round(3400/l)),D=0;for(let G=Q;G<=m;G++)D+=(s[G]??0)*(s[G]??0);let p=Math.min(1,Math.sqrt(D/(m-Q+1))*3.5);return{fftBins:s,bassEnergy:E,drumTransient:h,vocalEnergy:p,timeMs:n*1e3}}static packBufferData(e){let t=new Float32Array(1028);return t.set(e.fftBins,0),t[1024]=e.bassEnergy,t[1025]=e.drumTransient,t[1026]=e.vocalEnergy,t[1027]=e.timeMs,t}static createGpuBuffer(e,t){let n=t?A.packBufferData(t):new Float32Array(1028),r=e.createBuffer({label:"AudioLatentBuffer",size:4112,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return new Float32Array(r.getMappedRange()).set(n),r.unmap(),r}static updateGpuBuffer(e,t,n){let r=A.packBufferData(n);e.queue.writeBuffer(t,0,r)}},gr=class{constructor(e,t,n,r){this.channels=e;this.sampleRate=t;this.fps=n;this.totalFrames=r;let i=new st,o=t||48e3,a=n||30,s=e[0]?.length??0,g=Math.max(10,Math.ceil(s/o*a)+10),l=typeof r=="number"&&Number.isFinite(r)&&r>0?Math.round(r):g;this.frames=new Array(l);for(let u=0;u<l;u++){let c=u/a;this.frames[u]=i.extractAtTime(e,o,c)}}channels;sampleRate;fps;totalFrames;frames=[];gpuBuffers=new WeakMap;getFrameData(e){let t=Math.max(0,Math.min(this.totalFrames-1,Math.round(e)));return this.frames[t]??{fftBins:new Float32Array(1024),bassEnergy:0,drumTransient:0,vocalEnergy:0,timeMs:t/this.fps*1e3}}getGpuBuffer(e,t){let n=this.gpuBuffers.get(e);n||(n=new Map,this.gpuBuffers.set(e,n));let r=Math.max(0,Math.min(this.totalFrames-1,Math.round(t))),i=n.get(r);if(!i){let o=this.getFrameData(r);i=st.createGpuBuffer(e,o),n.set(r,i)}return i}};k();var H={create(A=0,e=0,t=0){return[A,e,t]},copy(A){return[A[0],A[1],A[2]]},set(A,e,t,n){return A[0]=e,A[1]=t,A[2]=n,A},add(A,e){return[A[0]+e[0],A[1]+e[1],A[2]+e[2]]},subtract(A,e){return[A[0]-e[0],A[1]-e[1],A[2]-e[2]]},multiplyScalar(A,e){return[A[0]*e,A[1]*e,A[2]*e]},dot(A,e){return A[0]*e[0]+A[1]*e[1]+A[2]*e[2]},cross(A,e){return[A[1]*e[2]-A[2]*e[1],A[2]*e[0]-A[0]*e[2],A[0]*e[1]-A[1]*e[0]]},lengthSq(A){return A[0]*A[0]+A[1]*A[1]+A[2]*A[2]},length(A){return Math.hypot(A[0],A[1],A[2])},distance(A,e){return Math.hypot(A[0]-e[0],A[1]-e[1],A[2]-e[2])},normalize(A){let e=Math.hypot(A[0],A[1],A[2]);if(e===0)return[0,0,0];let t=1/e;return[A[0]*t,A[1]*t,A[2]*t]},lerp(A,e,t){return[A[0]+(e[0]-A[0])*t,A[1]+(e[1]-A[1])*t,A[2]+(e[2]-A[2])*t]},equals(A,e,t=1e-6){return Math.abs(A[0]-e[0])<=t&&Math.abs(A[1]-e[1])<=t&&Math.abs(A[2]-e[2])<=t}};k();var _={identity(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},copy(A){return[...A]},multiply(A,e){let t=new Array(16);for(let n=0;n<4;n++)for(let r=0;r<4;r++)t[r*4+n]=A[0+n]*e[r*4+0]+A[4+n]*e[r*4+1]+A[8+n]*e[r*4+2]+A[12+n]*e[r*4+3];return t},translate(A,e,t=0){return[1,0,0,0,0,1,0,0,0,0,1,0,A,e,t,1]},scale(A,e,t=1){return[A,0,0,0,0,e,0,0,0,0,t,0,0,0,0,1]},rotateX(A){let e=Math.cos(A),t=Math.sin(A);return[1,0,0,0,0,e,t,0,0,-t,e,0,0,0,0,1]},rotateY(A){let e=Math.cos(A),t=Math.sin(A);return[e,0,-t,0,0,1,0,0,t,0,e,0,0,0,0,1]},rotateZ(A){let e=Math.cos(A),t=Math.sin(A);return[e,t,0,0,-t,e,0,0,0,0,1,0,0,0,0,1]},rotateAxis(A,e){let t=H.normalize(A),n=t[0],r=t[1],i=t[2],o=Math.cos(e),a=Math.sin(e),s=1-o;return[s*n*n+o,s*n*r+a*i,s*n*i-a*r,0,s*n*r-a*i,s*r*r+o,s*r*i+a*n,0,s*n*i+a*r,s*r*i-a*n,s*i*i+o,0,0,0,0,1]},lookAt(A,e,t=[0,-1,0]){let n=H.subtract(e,A);H.lengthSq(n)===0?n=[0,0,1]:n=H.normalize(n);let r=H.cross(n,t);H.lengthSq(r)===0?r=[1,0,0]:r=H.normalize(r);let i=H.cross(r,n);return[r[0],i[0],n[0],0,r[1],i[1],n[1],0,r[2],i[2],n[2],0,-H.dot(r,A),-H.dot(i,A),-H.dot(n,A),1]},perspective(A,e,t,n){let r=1/Math.tan(A/2),i=1/(n-t);return[r/e,0,0,0,0,r,0,0,0,0,n*i,1,0,0,-t*n*i,0]},orthographic(A,e,t,n,r,i){let o=1/(e-A),a=1/(n-t),s=1/(i-r);return[2*o,0,0,0,0,2*a,0,0,0,0,s,0,-(e+A)*o,-(n+t)*a,-r*s,1]},invert(A){let e=new Array(16);e[0]=A[5]*A[10]*A[15]-A[5]*A[11]*A[14]-A[9]*A[6]*A[15]+A[9]*A[7]*A[14]+A[13]*A[6]*A[11]-A[13]*A[7]*A[10],e[4]=-A[4]*A[10]*A[15]+A[4]*A[11]*A[14]+A[8]*A[6]*A[15]-A[8]*A[7]*A[14]-A[12]*A[6]*A[11]+A[12]*A[7]*A[10],e[8]=A[4]*A[9]*A[15]-A[4]*A[11]*A[13]-A[8]*A[5]*A[15]+A[8]*A[7]*A[13]+A[12]*A[5]*A[11]-A[12]*A[7]*A[9],e[12]=-A[4]*A[9]*A[14]+A[4]*A[10]*A[13]+A[8]*A[5]*A[14]-A[8]*A[6]*A[13]-A[12]*A[5]*A[10]+A[12]*A[6]*A[9],e[1]=-A[1]*A[10]*A[15]+A[1]*A[11]*A[14]+A[9]*A[2]*A[15]-A[9]*A[3]*A[14]-A[13]*A[2]*A[11]+A[13]*A[3]*A[10],e[5]=A[0]*A[10]*A[15]-A[0]*A[11]*A[14]-A[8]*A[2]*A[15]+A[8]*A[3]*A[14]+A[12]*A[2]*A[11]-A[12]*A[3]*A[10],e[9]=-A[0]*A[9]*A[15]+A[0]*A[11]*A[13]+A[8]*A[1]*A[15]-A[8]*A[3]*A[13]-A[12]*A[1]*A[11]+A[12]*A[3]*A[9],e[13]=A[0]*A[9]*A[14]-A[0]*A[10]*A[13]-A[8]*A[1]*A[14]+A[8]*A[2]*A[13]+A[12]*A[1]*A[10]-A[12]*A[2]*A[9],e[2]=A[1]*A[6]*A[15]-A[1]*A[7]*A[14]-A[5]*A[2]*A[15]+A[5]*A[3]*A[14]+A[13]*A[2]*A[7]-A[13]*A[3]*A[6],e[6]=-A[0]*A[6]*A[15]+A[0]*A[7]*A[14]+A[4]*A[2]*A[15]-A[4]*A[3]*A[14]-A[12]*A[2]*A[7]+A[12]*A[3]*A[6],e[10]=A[0]*A[5]*A[15]-A[0]*A[7]*A[13]-A[4]*A[1]*A[15]+A[4]*A[3]*A[13]+A[12]*A[1]*A[7]-A[12]*A[3]*A[5],e[14]=-A[0]*A[5]*A[14]+A[0]*A[6]*A[13]+A[4]*A[1]*A[14]-A[4]*A[2]*A[13]-A[12]*A[1]*A[6]+A[12]*A[2]*A[5],e[3]=-A[1]*A[6]*A[11]+A[1]*A[7]*A[10]+A[5]*A[2]*A[11]-A[5]*A[3]*A[10]-A[9]*A[2]*A[7]+A[9]*A[3]*A[6],e[7]=A[0]*A[6]*A[11]-A[0]*A[7]*A[10]-A[4]*A[2]*A[11]+A[4]*A[3]*A[10]+A[8]*A[2]*A[7]-A[8]*A[3]*A[6],e[11]=-A[0]*A[5]*A[11]+A[0]*A[7]*A[9]+A[4]*A[1]*A[11]-A[4]*A[3]*A[9]-A[8]*A[1]*A[7]+A[8]*A[3]*A[5],e[15]=A[0]*A[5]*A[10]-A[0]*A[6]*A[9]-A[4]*A[1]*A[10]+A[4]*A[2]*A[9]+A[8]*A[1]*A[6]-A[8]*A[2]*A[5];let t=A[0]*e[0]+A[1]*e[4]+A[2]*e[8]+A[3]*e[12];if(Math.abs(t)<1e-12)return null;t=1/t;for(let n=0;n<16;n++)e[n]*=t;return e},transpose(A){return[A[0],A[4],A[8],A[12],A[1],A[5],A[9],A[13],A[2],A[6],A[10],A[14],A[3],A[7],A[11],A[15]]},projectPoint(A,e){let t=e[0],n=e[1],r=e[2],i=A[0]*t+A[4]*n+A[8]*r+A[12],o=A[1]*t+A[5]*n+A[9]*r+A[13],a=A[2]*t+A[6]*n+A[10]*r+A[14],s=A[3]*t+A[7]*n+A[11]*r+A[15],g=Math.abs(s)>1e-6?1/s:1;return[i*g,o*g,a*g]},projectRectangle(A,e,t){return[_.projectPoint(A,[0,0,0]),_.projectPoint(A,[e,0,0]),_.projectPoint(A,[e,t,0]),_.projectPoint(A,[0,t,0])]},toFloat32Array(A){return new Float32Array(A)}};k();function Se(A,e,t=3){let n=0,r=1,i=1,o=0;for(let a=0;a<t;a++){let s=Math.sin(A*r*2*Math.PI+e+a*1.7),g=Math.cos(A*r*1.414*Math.PI+e*2.1+a*.9);n+=(s*.6+g*.4)*i,o+=i,r*=2,i*=.5}return o>0?n/o:0}var fe={createDefaultCamera(A,e,t=50){let n=t*Math.PI/180,r=e/2/Math.tan(n/2);return{eye:[A/2,e/2,-r],target:[A/2,e/2,0],up:[0,-1,0],fov:t,aspect:Math.max(1e-4,A/e),near:1,far:5e4,zoom:1,focusDistance:r,fStop:2.8,maxBlurRadius:32}},computeViewMatrix(A){return _.lookAt(A.eye,A.target,A.up)},computeProjectionMatrix(A){let e=A.fov*Math.PI/180,t=_.perspective(e,A.aspect,A.near,A.far);return A.zoom!==1&&A.zoom>0&&(t[0]*=A.zoom,t[5]*=A.zoom),t},computeViewProjectionMatrix(A){let e=fe.computeViewMatrix(A),t=fe.computeProjectionMatrix(A);return _.multiply(t,e)},dolly(A,e,t){let n=H.normalize(H.subtract(e,A)),r=H.multiplyScalar(n,t);return{eye:H.add(A,r),target:e}},truckPedestal(A,e,t,n,r){let i=H.normalize(H.subtract(e,A)),o=H.normalize(H.cross(i,t)),a=H.cross(o,i),s=H.multiplyScalar(o,n),g=H.multiplyScalar(a,r),l=H.add(s,g);return{eye:H.add(A,l),target:H.add(e,l)}},orbit(A,e,t,n){let r=t*Math.PI/180,i=n*Math.PI/180,o=Math.cos(i),a=Math.sin(i),s=Math.cos(r),g=Math.sin(r),l=A[0]+e*o*g,u=A[1]-e*a,c=A[2]-e*o*s;return[l,u,c]},applyOrientation(A,e,t,n){if(e===0&&t===0&&n===0)return A;let r=H.normalize(H.subtract(A.target,A.eye)),i=H.normalize(H.cross(r,A.up)),o=H.cross(i,r),a=H.distance(A.eye,A.target),s=r,g=o;if(t!==0){let c=t*Math.PI/180,I=Math.cos(c),E=Math.sin(c);s=H.normalize(H.subtract(H.multiplyScalar(s,I),H.multiplyScalar(i,E)))}let l=H.normalize(H.cross(s,g));if(e!==0){let c=e*Math.PI/180,I=Math.cos(c),E=Math.sin(c);s=H.normalize(H.add(H.multiplyScalar(s,I),H.multiplyScalar(g,E))),g=H.normalize(H.cross(l,s))}if(n!==0){let c=n*Math.PI/180,I=Math.cos(c),E=Math.sin(c);g=H.normalize(H.add(H.multiplyScalar(g,I),H.multiplyScalar(l,E)))}let u=H.add(A.eye,H.multiplyScalar(s,a));return{...A,target:u,up:g}},applyCameraShake(A,e,t){let{translationAmplitude:n,rotationAmplitude:r,frequency:i=2.5,octaves:o=3,seed:a=42}=t;if(n<=0&&r<=0)return A;let s=e*i,g=Se(s,a,o)*n,l=Se(s,a+101.5,o)*n,u=Se(s,a+203.7,o)*(n*.5),c=Se(s,a+307.1,o)*r,I=Se(s,a+409.3,o)*r,E=H.normalize(H.subtract(A.target,A.eye)),d=H.normalize(H.cross(E,A.up)),h=H.cross(d,E),Q=H.add(H.multiplyScalar(d,g),H.add(H.multiplyScalar(h,l),H.multiplyScalar(E,u))),m=H.add(A.eye,Q),D=H.add(A.target,H.add(H.multiplyScalar(d,I*10),H.multiplyScalar(h,c*10)));return{...A,eye:m,target:D}},computeCircleOfConfusion(A,e,t,n,r=32){if(e<=0||n<=0||A<=0)return 0;let i=Math.abs(A-e),o=t/n,a=i/A*o*.5;return Math.min(r,Math.max(0,a))},computeCameraFrustumPlanes(A){let e=t=>{let n=Math.hypot(t[0],t[1],t[2]);return n===0?t:[t[0]/n,t[1]/n,t[2]/n,t[3]/n]};return{left:e([A[3]+A[0],A[7]+A[4],A[11]+A[8],A[15]+A[12]]),right:e([A[3]-A[0],A[7]-A[4],A[11]-A[8],A[15]-A[12]]),bottom:e([A[3]+A[1],A[7]+A[5],A[11]+A[9],A[15]+A[13]]),top:e([A[3]-A[1],A[7]-A[5],A[11]-A[9],A[15]-A[13]]),near:e([A[2],A[6],A[10],A[14]]),far:e([A[3]-A[2],A[7]-A[6],A[11]-A[10],A[15]-A[14]])}},isBoxInFrustum(A,e,t){let n=[t.left,t.right,t.bottom,t.top,t.near,t.far];for(let r of n){let i=r[0]>0?e[0]:A[0],o=r[1]>0?e[1]:A[1],a=r[2]>0?e[2]:A[2];if(r[0]*i+r[1]*o+r[2]*a+r[3]<0)return!1}return!0}};k();var Wi={studio:{top:"#9da3ad",horizon:"#5d626b",bottom:"#202226",softboxes:3.5},soft:{top:"#f1efea",horizon:"#cfcac1",bottom:"#77726a",softboxes:1.2},sunset:{top:"#4d63a3",horizon:"#ff9a5c",bottom:"#3b2a28",softboxes:1},night:{top:"#121a3a",horizon:"#1f2950",bottom:"#05060b",softboxes:.5},neutral:{top:"#9a9a9a",horizon:"#808080",bottom:"#5c5c5c",softboxes:0}},zi={none:0,aces:1,agx:2,neutral:3};function gt(A){let e=er(A)??[0,0,0,1],t=n=>n<=.04045?n/12.92:((n+.055)/1.055)**2.4;return[t(e[0]),t(e[1]),t(e[2])]}function Br(A){let e=Wi[A.preset??"studio"],t=A.intensity??1,n=r=>[r[0]*t,r[1]*t,r[2]*t];return{top:n(gt(A.top??e.top)),horizon:n(gt(A.horizon??e.horizon)),bottom:n(gt(A.bottom??e.bottom)),softboxes:(A.softboxes??e.softboxes)*t,rotationRad:(A.rotation??0)*Math.PI/180,exposureMultiplier:2**(A.exposure??0),toneMapping:zi[A.toneMapping??"neutral"],fog:A.fog?{color:gt(A.fog.color),start:A.fog.start,end:A.fog.end,opacity:Math.max(0,Math.min(1,A.fog.opacity??1))}:void 0}}k();var lt=8,$t=736;function jt(A){if(!A)return[1,1,1];if(Array.isArray(A)){let r=A[0]??1,i=A[1]??1,o=A[2]??1;return[r>1?r/255:r,i>1?i/255:i,o>1?o/255:o]}if(typeof A=="object"&&A!==null){let r=A.r??1,i=A.g??1,o=A.b??1;return[r>1?r/255:r,i>1?i/255:i,o>1?o/255:o]}if(typeof A!="string")return[1,1,1];let e=A.trim().toLowerCase();if(e.startsWith("#")){let r=e.slice(1);if(r.length===3){let i=Number.parseInt(r[0]+r[0],16)/255,o=Number.parseInt(r[1]+r[1],16)/255,a=Number.parseInt(r[2]+r[2],16)/255;return[i,o,a]}if(r.length>=6){let i=Number.parseInt(r.slice(0,2),16)/255,o=Number.parseInt(r.slice(2,4),16)/255,a=Number.parseInt(r.slice(4,6),16)/255;return[i,o,a]}}let t=e.match(/rgba?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/);if(t){let r=Number.parseFloat(t[1])/255,i=Number.parseFloat(t[2])/255,o=Number.parseFloat(t[3])/255;return[Math.max(0,Math.min(1,r)),Math.max(0,Math.min(1,i)),Math.max(0,Math.min(1,o))]}let n=e.match(/hsla?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)%?\s*,\s*([\d.]+)%?/);if(n){let r=Number.parseFloat(n[1])/360,i=Number.parseFloat(n[2])/100,o=Number.parseFloat(n[3])/100;return Xi(r,i,o)}return[1,1,1]}function Xi(A,e,t){if(e===0)return[t,t,t];let n=(o,a,s)=>{let g=s;return g<0&&(g+=1),g>1&&(g-=1),g<1/6?o+(a-o)*6*g:g<1/2?a:g<2/3?o+(a-o)*(2/3-g)*6:o},r=t<.5?t*(1+e):t+e-t*e,i=2*t-r;return[n(i,r,A+1/3),n(i,r,A),n(i,r,A-1/3)]}var qA={computeNormalMatrix(A){let e=_.invert(A);return e?[e[0],e[4],e[8],0,e[1],e[5],e[9],0,e[2],e[6],e[10],0,0,0,0,1]:_.identity()},processLight(A){let e=jt(A.color),t=A.intensity??1,n=A.position?A.position[0]:A.x??0,r=A.position?A.position[1]:A.y??0,i=A.position?A.position[2]:A.z??0,o=A.lightType??A.type??"directional",a=1;o==="ambient"?a=0:o==="directional"?a=1:o==="point"?a=2:o==="spot"&&(a=3);let s=[0,0,-1];if(A.direction)s=H.normalize(A.direction);else if(A.target||A.targetX!==void 0||A.targetY!==void 0||A.targetZ!==void 0){let Q=A.target?A.target[0]:A.targetX??n,m=A.target?A.target[1]:A.targetY??r,D=A.target?A.target[2]:A.targetZ??i,p=[Q,m,D],G=H.subtract(p,[n,r,i]);H.length(G)>1e-4&&(s=H.normalize(G))}let g=Math.max(1,A.radius??1e3),l=A.decay??2,u=Math.max(.1,Math.min(180,A.angle??45)),c=Math.max(0,Math.min(1,A.penumbra??.2)),I=u*Math.PI/180,E=I*(1-c),d=Math.cos(I),h=Math.cos(E);return{posType:[n,r,i,a],dirRadius:[s[0],s[1],s[2],g],colorIntensity:[e[0],e[1],e[2],t],spotParams:[d,h,l,0]}},packLightsUniforms(A,e,t){let n=new Float32Array($t/4);if(qA.packPhysicalBlock(n,A??[],e,t),(!A||A.length===0)&&!e)return n[4]=0,n[5]=0,n;let r=0,i=0,o=0,a=[];for(let g of A)if((g.lightType??g.type)==="ambient"){let u=jt(g.color),c=g.intensity??1;r+=u[0]*c,i+=u[1]*c,o+=u[2]*c}else a.length<lt&&a.push(qA.processLight(g));n[0]=r,n[1]=i,n[2]=o,n[3]=1,n[4]=a.length,n[5]=1;let s=8;for(let g=0;g<lt;g++){if(g<a.length){let l=a[g];n[s+0]=l.posType[0],n[s+1]=l.posType[1],n[s+2]=l.posType[2],n[s+3]=l.posType[3],n[s+4]=l.dirRadius[0],n[s+5]=l.dirRadius[1],n[s+6]=l.dirRadius[2],n[s+7]=l.dirRadius[3],n[s+8]=l.colorIntensity[0],n[s+9]=l.colorIntensity[1],n[s+10]=l.colorIntensity[2],n[s+11]=l.colorIntensity[3],n[s+12]=l.spotParams[0],n[s+13]=l.spotParams[1],n[s+14]=l.spotParams[2],n[s+15]=l.spotParams[3]}else for(let l=0;l<16;l++)n[s+l]=0;s+=16}return n},shadowCasterIndex(A){let e=0;for(let t of A){let n=t.lightType??t.type;if(n!=="ambient"){if(e>=lt)break;if(t.castShadow&&(n==="directional"||n==="spot"))return e;e++}}return-1},packPhysicalBlock(A,e,t,n){let r=8+lt*16,i=0,o=0,a=0;for(let s of e){if((s.lightType??s.type)!=="ambient")continue;let[g,l,u]=jt(s.color),c=s.intensity??1,I=E=>E<=.04045?E/12.92:((E+.055)/1.055)**2.4;i+=I(g)*c,o+=I(l)*c,a+=I(u)*c}if(A[r+0]=i,A[r+1]=o,A[r+2]=a,A[r+3]=1,t){let s=Br(t);A[6]=1,A[7]=s.toneMapping,A[r+3]=s.exposureMultiplier,A.set([...s.top,s.rotationRad],r+4),A.set([...s.horizon,s.softboxes],r+8),A.set([...s.bottom,1],r+12),s.fog&&(A.set([...s.fog.color,1],r+16),A.set([s.fog.start,s.fog.end,s.fog.opacity,0],r+20))}if(n&&n.lightIndex>=0){A.set([1,n.lightIndex,n.softness,n.mapSize],r+24),A.set([n.bias,n.normalOffset,n.darkness,0],r+28);for(let s=0;s<16;s++)A[r+32+s]=n.matrix[s]??0}}};k();k();var An={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif",".tif":"image/tiff",".tiff":"image/tiff",".avif":"image/avif"};function Ue(A){return An[MA.extname(A).toLowerCase()]??"image/png"}function ut(A){let e=MA.extname(A.replace(/\\/g,"/")).toLowerCase();return!e||e in An}function ve(A,e){if(!A||typeof cA>"u"||!cA.existsSync||!ut(A))return;let t=A.trim().replace(/^file:\/\//,"");try{t=decodeURIComponent(t)}catch{}let n=t.replace(/\\/g,"/"),r=n.split("/").pop()??n,i=[];if(MA.isAbsolute(n)&&i.push(n),e){i.push(MA.resolve(e,n)),i.push(MA.join(e,r)),i.push(MA.join(e,"textures",r));try{for(let o of cA.readdirSync(e))o.toLowerCase().endsWith(".fbm")&&i.push(MA.join(e,o,r))}catch{}}for(let o of i)try{if(cA.existsSync(o)&&cA.statSync(o).isFile())return{bytes:new Uint8Array(cA.readFileSync(o)),mime:Ue(o)}}catch{}}function Ee(A,e,t){let n=ut(t)?"was not found":`is in an unsupported format (use ${Object.keys(An).join(", ")})`;console.warn(`[${A}] Texture "${t}" for material "${e}" ${n}; the material renders without it.`)}var Re=class A{static parse(e,t,n){let r=typeof t=="object"&&t!==null?t:n??{},i=typeof t=="string"?t:r.mtlText,o=[],a=[],s=[],g=[],l={materialName:"default",faces:[]};g.push(l);let u={};i&&Object.assign(u,A.loadTextures(A.parseMtl(i),r.basePath));let c=e.split(/\r?\n/);for(let P=0;P<c.length;P++){let nA=c[P]?.trim();if(!nA||nA.startsWith("#"))continue;let tA=nA.split(/\s+/),rA=tA[0]?.toLowerCase();if(rA==="mtllib"){let AA=tA.slice(1).join(" ").trim();if(r.basePath&&typeof cA<"u"&&cA.existsSync)try{let eA=MA.resolve(r.basePath,AA);if(cA.existsSync(eA)){let gA=cA.readFileSync(eA,"utf-8");Object.assign(u,A.loadTextures(A.parseMtl(gA),MA.dirname(eA)))}}catch{}}else if(rA==="v"){let AA=Number.parseFloat(tA[1]??"0"),eA=Number.parseFloat(tA[2]??"0"),gA=Number.parseFloat(tA[3]??"0");o.push([AA,eA,gA])}else if(rA==="vn"){let AA=Number.parseFloat(tA[1]??"0"),eA=Number.parseFloat(tA[2]??"0"),gA=Number.parseFloat(tA[3]??"0");a.push([AA,eA,gA])}else if(rA==="vt"){let AA=Number.parseFloat(tA[1]??"0"),eA=tA[2]!==void 0?Number.parseFloat(tA[2]):0;s.push([AA,eA])}else if(rA==="usemtl"){let AA=tA[1]??"default";l.faces.length>0?(l={materialName:AA,faces:[]},g.push(l)):l.materialName=AA}else if(rA==="f"){let AA=[];for(let eA=1;eA<tA.length;eA++){let gA=tA[eA];if(!gA)continue;let lA=gA.split("/"),BA=Number.parseInt(lA[0]??"0",10),EA=lA[1]&&lA[1].length>0?Number.parseInt(lA[1],10):0,QA=lA[2]&&lA[2].length>0?Number.parseInt(lA[2],10):0;BA<0&&(BA=o.length+BA+1),EA<0&&(EA=s.length+EA+1),QA<0&&(QA=a.length+QA+1),AA.push({v:BA-1,vt:EA-1,vn:QA-1})}if(AA.length>=3)for(let eA=1;eA<AA.length-1;eA++){let gA=AA[0],lA=AA[eA],BA=AA[eA+1];gA&&lA&&BA&&l.faces.push([gA,lA,BA])}}}let I=1/0,E=1/0,d=1/0,h=-1/0,Q=-1/0,m=-1/0;for(let P of o){let[nA,tA,rA]=P;nA===void 0||tA===void 0||rA===void 0||(nA<I&&(I=nA),tA<E&&(E=tA),rA<d&&(d=rA),nA>h&&(h=nA),tA>Q&&(Q=tA),rA>m&&(m=rA))}Number.isFinite(I)||(I=-1,E=-1,d=-1,h=1,Q=1,m=1);let D=(I+h)*.5,p=(E+Q)*.5,G=(d+m)*.5,N=Math.max(1e-4,h-I),w=Math.max(1e-4,Q-E),U=Math.max(1e-4,m-d),b=Math.max(N,w,U),M=1;r.normalizeSize&&r.normalizeSize>0&&(M=r.normalizeSize/b),typeof r.scale=="number"&&(M*=r.scale);let v=r.center??!1,R=v?D:0,S=v?p:0,K=v?G:0,F=[];for(let P=0;P<g.length;P++){let nA=g[P];if(!nA||nA.faces.length===0)continue;let tA=new Map,rA=[],AA=[],eA=[],gA=[],lA=!1;for(let QA of nA.faces)for(let sA of QA){let yA=`${sA.v}_${sA.vt}_${sA.vn}`,bA=tA.get(yA);if(bA===void 0){bA=rA.length/3,tA.set(yA,bA);let wA=o[sA.v]??[0,0,0],hA=((wA[0]??0)-R)*M,VA=((wA[1]??0)-S)*M,YA=((wA[2]??0)-K)*M;if(rA.push(hA,VA,YA),sA.vt>=0&&s[sA.vt]){let FA=s[sA.vt];eA.push(FA[0]??0,1-(FA[1]??0))}else eA.push(0,0);if(sA.vn>=0&&a[sA.vn]){lA=!0;let FA=a[sA.vn];AA.push(FA[0]??0,FA[1]??0,FA[2]??0)}else AA.push(0,0,0)}gA.push(bA)}if(!lA||r.smoothNormals){let QA=new Float32Array(rA.length);for(let sA=0;sA<gA.length;sA+=3){let yA=gA[sA],bA=gA[sA+1],wA=gA[sA+2],hA=[rA[yA*3],rA[yA*3+1],rA[yA*3+2]],VA=[rA[bA*3],rA[bA*3+1],rA[bA*3+2]],YA=[rA[wA*3],rA[wA*3+1],rA[wA*3+2]],FA=H.subtract(VA,hA),Ht=H.subtract(YA,hA),vA=H.cross(FA,Ht);QA[yA*3]+=vA[0],QA[yA*3+1]+=vA[1],QA[yA*3+2]+=vA[2],QA[bA*3]+=vA[0],QA[bA*3+1]+=vA[1],QA[bA*3+2]+=vA[2],QA[wA*3]+=vA[0],QA[wA*3+1]+=vA[1],QA[wA*3+2]+=vA[2]}for(let sA=0;sA<rA.length/3;sA++){let yA=QA[sA*3],bA=QA[sA*3+1],wA=QA[sA*3+2],hA=Math.hypot(yA,bA,wA)||1;AA[sA*3]=yA/hA,AA[sA*3+1]=bA/hA,AA[sA*3+2]=wA/hA}}let EA=rA.length/3>65535?new Uint32Array(gA):new Uint16Array(gA);F.push({id:`mesh_${P}`,name:nA.materialName,positions:new Float32Array(rA),normals:new Float32Array(AA),uvs:new Float32Array(eA),indices:EA,materialName:nA.materialName})}let z=(I-R)*M,Z=(E-S)*M,$=(d-K)*M,aA=(h-R)*M,W=(Q-S)*M,Y=(m-K)*M,j=aA-z,IA=W-Z,dA=Y-$,uA=(z+aA)*.5,mA=(Z+W)*.5,pA=($+Y)*.5,X=Math.hypot(j,IA,dA)*.5;return{meshes:F,materials:u,animations:[],bounds:{min:[z,Z,$],max:[aA,W,Y],center:[uA,mA,pA],size:[j,IA,dA],boundingSphereRadius:X}}}static parseMtl(e){let t={},n=null,r=e.split(/\r?\n/);for(let i of r){let o=i.trim();if(!o||o.startsWith("#"))continue;let a=o.split(/\s+/),s=a[0]?.toLowerCase();if(s==="newmtl"){let g=a[1]??"default";n={name:g,diffuseColor:[1,1,1,1],specularColor:[1,1,1],ambientColor:[.2,.2,.2],shininess:32,opacity:1},t[g]=n}else if(n)if(s==="kd"){let g=Number.parseFloat(a[1]??"1"),l=Number.parseFloat(a[2]??"1"),u=Number.parseFloat(a[3]??"1");n.diffuseColor=[g,l,u,n.diffuseColor?.[3]??1]}else if(s==="ks"){let g=Number.parseFloat(a[1]??"1"),l=Number.parseFloat(a[2]??"1"),u=Number.parseFloat(a[3]??"1");n.specularColor=[g,l,u],n.specularIntensity=(g+l+u)/3}else if(s==="ka"){let g=Number.parseFloat(a[1]??"0.2"),l=Number.parseFloat(a[2]??"0.2"),u=Number.parseFloat(a[3]??"0.2");n.ambientColor=[g,l,u]}else if(s==="ns")n.shininess=Number.parseFloat(a[1]??"32");else if(s==="d"||s==="tr"){let g=Number.parseFloat(a[1]??"1");n.opacity=s==="d"?g:1-g,n.diffuseColor&&(n.diffuseColor[3]=n.opacity)}else if(s==="map_kd"){n.diffuseTexture=A.mapFileName(a);let g=a.findIndex(l=>l.toLowerCase()==="-clamp");n.textureWrap=g>0&&a[g+1]?.toLowerCase()==="on"?"clamp":"repeat"}else(s==="norm"||s==="map_kn")&&(n.normalTexture=A.mapFileName(a))}return t}static MAP_OPTION_ARGS={"-blendu":1,"-blendv":1,"-cc":1,"-clamp":1,"-texres":1,"-bm":1,"-boost":1,"-imfchan":1,"-type":1,"-mm":2};static mapFileName(e){let t=1;for(;t<e.length&&e[t]?.startsWith("-");){let n=e[t].toLowerCase();if(t++,n==="-o"||n==="-s"||n==="-t")for(let r=0;r<3&&t<e.length&&!Number.isNaN(Number(e[t]));r++)t++;else t+=A.MAP_OPTION_ARGS[n]??0}return e.slice(t).join(" ")}static loadTextures(e,t){if(!t)return e;for(let n of Object.values(e)){if(n.diffuseTexture&&!n.diffuseTextureBuffer){let r=ve(n.diffuseTexture,t);r?(n.diffuseTextureBuffer=r.bytes,n.diffuseTextureMime=r.mime):Ee("ObjLoader",n.name,n.diffuseTexture)}if(n.normalTexture&&!n.normalTextureBuffer){let r=ve(n.normalTexture,t);r?n.normalTextureBuffer=r.bytes:Ee("ObjLoader",n.name,n.normalTexture)}}return e}};function bs(A,e,t={}){return Re.parse(A,e,t)}function Ds(A){return Re.parseMtl(A)}function Le(A,e,t={}){let n;if(typeof A!="string")n=new TextDecoder().decode(A);else{let r=A.trim();if(!(r.startsWith("v ")||r.startsWith("#")||r.includes(`
2
2
  v `)||r.includes("\rv "))&&typeof cA<"u"&&cA.existsSync)try{let o=A.startsWith("file://")?A.slice(7):A;try{o=decodeURIComponent(o)}catch{}cA.existsSync(o)?(n=cA.readFileSync(o,"utf-8"),t={basePath:t.basePath??MA.dirname(o),...t}):n=A}catch{n=A}else n=A}return Re.parse(n,e,t)}k();var pr=_n(Er(),1);k();function ne(A,e,t){let n=r=>[A[r*3],A[r*3+1],A[r*3+2]];for(let r=0;r<e.length;r+=3){let i=e[r],o=e[r+1],a=e[r+2],s=n(i),g=H.cross(H.subtract(n(o),s),H.subtract(n(a),s));for(let l of[i,o,a])t[l*3]+=g[0],t[l*3+1]+=g[1],t[l*3+2]+=g[2]}for(let r=0;r<t.length;r+=3){let i=t[r],o=t[r+1],a=t[r+2],s=Math.hypot(i,o,a)||1;t[r]=i/s,t[r+1]=o/s,t[r+2]=a/s}}function HA(...A){let e=1/0,t=1/0,n=1/0,r=-1/0,i=-1/0,o=-1/0;for(let a of A)for(let s=0;s<a.length;s+=3){let g=a[s],l=a[s+1],u=a[s+2];g<e&&(e=g),g>r&&(r=g),l<t&&(t=l),l>i&&(i=l),u<n&&(n=u),u>o&&(o=u)}return Number.isFinite(e)||(e=t=n=0,r=i=o=0),{min:[e,t,n],max:[r,i,o],center:[(e+r)*.5,(t+i)*.5,(n+o)*.5],size:[r-e,i-t,o-n]}}function RA(A,e){let t=Math.max(...A.size,1e-4),n=1;e.normalizeSize&&e.normalizeSize>0&&(n=e.normalizeSize/t);let r=[n,n,n];return typeof e.scale=="number"?(r[0]*=e.scale,r[1]*=e.scale,r[2]*=e.scale):Array.isArray(e.scale)&&(r[0]*=e.scale[0],r[1]*=e.scale[1],r[2]*=e.scale[2]),{offset:e.center?A.center:[0,0,0],scale:r}}function JA(A,{offset:e,scale:t}){let n=new Float32Array(A.length);for(let r=0;r<A.length;r+=3)n[r]=(A[r]-e[0])*t[0],n[r+1]=(A[r+1]-e[1])*t[1],n[r+2]=(A[r+2]-e[2])*t[2];return n}function OA(A,e){return e>65535?new Uint32Array(A):new Uint16Array(A)}function KA(A,{offset:e,scale:t}){let n=[(A.min[0]-e[0])*t[0],(A.min[1]-e[1])*t[1],(A.min[2]-e[2])*t[2]],r=[(A.max[0]-e[0])*t[0],(A.max[1]-e[1])*t[1],(A.max[2]-e[2])*t[2]];return{min:n,max:r,center:[(n[0]+r[0])*.5,(n[1]+r[1])*.5,(n[2]+r[2])*.5],size:[r[0]-n[0],r[1]-n[1],r[2]-n[2]],boundingSphereRadius:Math.hypot(r[0]-n[0],r[1]-n[1],r[2]-n[2])*.5}}k();var re=128;function Zi(A,e,t){let[n,r,i,o]=e,a=n*n,s=r*r,g=i*i,l=n*r,u=n*i,c=r*i,I=o*n,E=o*r,d=o*i;return[(1-2*(s+g))*t[0],2*(l+d)*t[0],2*(u-E)*t[0],0,2*(l-d)*t[1],(1-2*(a+g))*t[1],2*(c+I)*t[1],0,2*(u+E)*t[2],2*(c-I)*t[2],(1-2*(a+s))*t[2],0,A[0],A[1],A[2],1]}function dr(A){let e=Math.hypot(A[0],A[1],A[2],A[3])||1;return[A[0]/e,A[1]/e,A[2]/e,A[3]/e]}function qi(A,e,t){let n=A[0]*e[0]+A[1]*e[1]+A[2]*e[2]+A[3]*e[3],r=n<0?-1:1;if(n*=r,n>.9995)return dr([A[0]+(r*e[0]-A[0])*t,A[1]+(r*e[1]-A[1])*t,A[2]+(r*e[2]-A[2])*t,A[3]+(r*e[3]-A[3])*t]);let i=Math.acos(n),o=Math.sin(i),a=Math.sin((1-t)*i)/o,s=r*Math.sin(t*i)/o;return[A[0]*a+e[0]*s,A[1]*a+e[1]*s,A[2]*a+e[2]*s,A[3]*a+e[3]*s]}function _i(A,e){let t=0,n=A.length-1;for(;t<n;){let r=t+n+1>>1;(A[r]??0)<=e?t=r:n=r-1}return t}function oe(A,e,t,n,r=1){let i=n?(e*3+r)*t:e*t;return Array.from(A.subarray(i,i+t))}function en(A,e,t,n){let{times:r}=A,i=A.interpolation==="cubic",o=r.length-1;if(n<=(r[0]??0))return oe(e,0,t,i);if(n>=(r[o]??0))return oe(e,o,t,i);let a=_i(r,n);if(A.interpolation==="step")return oe(e,a,t,i);let s=r[a]??0,g=(r[a+1]??s)-s,l=g>0?(n-s)/g:0,u=oe(e,a,t,i),c=oe(e,a+1,t,i);if(i){let I=oe(e,a,t,!0,2),E=oe(e,a+1,t,!0,0),d=l*l,h=d*l,Q=u.map((m,D)=>(2*h-3*d+1)*m+(h-2*d+l)*g*(I[D]??0)+(-2*h+3*d)*(c[D]??0)+(h-d)*g*(E[D]??0));return t===4?dr(Q):Q}return t===4?qi(u,c,l):u.map((I,E)=>I+((c[E]??I)-I)*l)}function ji(A,e,t){let n=A.map(a=>[...a.translation]),r=A.map(a=>[...a.rotation]),i=A.map(a=>[...a.scale]),o=new Map(A.map((a,s)=>[a.name,s]));for(let a of e?.tracks??[]){let s=a.node??o.get(a.nodeName);s===void 0||!a.times.length||(a.translations&&(n[s]=en(a,a.translations,3,t)),a.rotations&&(r[s]=en(a,a.rotations,4,t)),a.scales&&(i[s]=en(a,a.scales,3,t)))}return A.map((a,s)=>a.matrix??Zi(n[s],r[s],i[s]))}function It(A,e,t){let n=A.nodes??[],r=ji(n,e,t),i=new Array(n.length),o=a=>{let s=i[a];if(s)return s;let g=n[a].parent,l=g<0?r[a]:_.multiply(o(g),r[a]);return i[a]=l,l};return n.map((a,s)=>o(s))}function vs(A,e,t){let n=A.skins?.[e];if(!n)throw new Error(`model has no skin ${e}`);let r=new Float32Array(re*16);for(let i=0;i<re;i++){let o=n.joints[i];if(o===void 0){r.set(_.identity(),i*16);continue}let a=Array.from(n.inverseBindMatrices.subarray(i*16,i*16+16));r.set(_.multiply(t[o],a),i*16)}return r}var ae=class A{static FBX_KTIME=46186158e3;static parse(e,t={}){let n=typeof e=="string"?A.parseAscii(e):A.isBinary(e)?A.parseBinary(e):A.parseAscii(new TextDecoder().decode(e));return A.buildModelFromTree(n,t)}static isBinary(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);if(t.length<27)return!1;let n="Kaydara FBX Binary \0\0";for(let r=0;r<n.length;r++)if(t[r]!==n.charCodeAt(r))return!1;return!0}static parseBinary(e){let t=e instanceof Uint8Array?e:new Uint8Array(e),n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(23,!0)>=7500,o=27,a={name:"Root",props:[],children:[]},s=()=>{if(o>=t.byteLength)return null;let g,l,u;if(i){if(o+25>t.byteLength)return null;g=Number(n.getBigUint64(o,!0)),l=Number(n.getBigUint64(o+8,!0)),u=n.getUint8(o+24),o+=25}else{if(o+13>t.byteLength)return null;g=n.getUint32(o,!0),l=n.getUint32(o+4,!0),u=n.getUint8(o+12),o+=13}if(g===0)return null;let c=new TextDecoder().decode(t.subarray(o,o+u));o+=u;let I=[];for(let d=0;d<l;d++){let h=String.fromCharCode(t[o]);switch(o+=1,h){case"Y":{I.push(n.getInt16(o,!0)),o+=2;break}case"C":case"B":{I.push(n.getUint8(o)!==0),o+=1;break}case"I":{I.push(n.getInt32(o,!0)),o+=4;break}case"F":{I.push(n.getFloat32(o,!0)),o+=4;break}case"D":{I.push(n.getFloat64(o,!0)),o+=8;break}case"L":{I.push(Number(n.getBigInt64(o,!0))),o+=8;break}case"S":{let Q=n.getUint32(o,!0);o+=4;let m=new TextDecoder().decode(t.subarray(o,o+Q));I.push(m),o+=Q;break}case"R":{let Q=n.getUint32(o,!0);o+=4;let m=t.subarray(o,o+Q);I.push(m),o+=Q;break}case"f":case"d":case"i":case"l":case"b":case"c":{let Q=n.getUint32(o,!0),m=n.getUint32(o+4,!0),D=n.getUint32(o+8,!0);o+=12;let p;if(m===1){let N=t.subarray(o,o+D);p=(0,pr.inflateSync)(N),o+=D}else{let w=Q*(h==="d"||h==="l"?8:h==="f"||h==="i"?4:1);p=t.subarray(o,o+w),o+=w}let G=new DataView(p.buffer,p.byteOffset,p.byteLength);if(h==="f"){let N=new Float32Array(Q);for(let w=0;w<Q;w++)N[w]=G.getFloat32(w*4,!0);I.push(N)}else if(h==="d"){let N=new Float64Array(Q);for(let w=0;w<Q;w++)N[w]=G.getFloat64(w*8,!0);I.push(N)}else if(h==="i"){let N=new Int32Array(Q);for(let w=0;w<Q;w++)N[w]=G.getInt32(w*4,!0);I.push(N)}else if(h==="l"){let N=new Float64Array(Q);for(let w=0;w<Q;w++)N[w]=Number(G.getBigInt64(w*8,!0));I.push(N)}else if(h==="b"){let N=new Uint8Array(Q);for(let w=0;w<Q;w++)N[w]=G.getUint8(w);I.push(N)}else I.push(p);break}default:break}}let E=[];for(;o<g;){let d=s();if(d)E.push(d);else break}return o=g,{name:c,props:I,children:E}};for(;o<t.byteLength-(i?25:13);){let g=s();if(g)a.children.push(g);else break}return a}static parseAscii(e){let t={name:"Root",props:[],children:[]},n=[t],r=e.split(/\r?\n/);for(let i=0;i<r.length;i++){let o=r[i]?.trim();if(!o||o.startsWith(";"))continue;if(o==="}"){n.length>1&&n.pop();continue}let a=o.indexOf(":");if(a===-1)continue;let s=o.substring(0,a).trim(),g=o.substring(a+1).trim(),l=g.endsWith("{"),u=l?g.slice(0,-1).trim():g,c=[];if(u){let d=u.split(",").map(h=>h.trim());for(let h of d)h.startsWith('"')&&h.endsWith('"')?c.push(h.slice(1,-1)):Number.isNaN(Number(h))?c.push(h):c.push(Number(h))}let I={name:s,props:c,children:[]},E=n[n.length-1];E&&E.children.push(I),l&&n.push(I)}return t}static textureSlot(e){let t=e.toLowerCase();if(t==="diffusecolor"||t==="diffuse"||t.endsWith("|basecolor")||t.endsWith("|base_color")||t==="basecolor")return"diffuse";if(t==="normalmap"||t.endsWith("|normalcamera")||t.endsWith("|bump_map"))return"normal"}static attachTextures(e,t,n,r,i){let o=(a,s)=>{let g=a?.children.find(l=>l.name===s)?.props[0];return typeof g=="string"&&g?g:void 0};for(let a of r){if(a.parentId!==t||!a.propName)continue;let s=A.textureSlot(a.propName),g=n.get(a.childId);if(!s||g?.node.name!=="Texture"||(s==="diffuse"?e.diffuseTextureBuffer:e.normalTextureBuffer))continue;let l=r.filter(E=>E.parentId===a.childId&&!E.propName).map(E=>n.get(E.childId)?.node).find(E=>E?.name==="Video"),u=o(g.node,"RelativeFilename")??o(g.node,"FileName")??o(l,"RelativeFilename")??o(l,"Filename");if(u&&!ut(u)){Ee("FbxLoader",e.name,u);continue}let c,I=l?.children.find(E=>E.name==="Content")?.props[0];if(I instanceof Uint8Array&&I.length>0?c=I:u&&(c=ve(u,i)?.bytes),!c){u&&Ee("FbxLoader",e.name,u);continue}s==="diffuse"?(e.diffuseTextureBuffer=c,e.diffuseTextureMime=Ue(u??""),u&&(e.diffuseTexture=u),e.textureWrap="repeat"):(e.normalTextureBuffer=c,u&&(e.normalTexture=u))}}static buildModelFromTree(e,t={}){let n=e.children.find(b=>b.name==="Objects"),r=e.children.find(b=>b.name==="Connections"),i=new Map;if(n)for(let b of n.children){let M=b.props[0]??0,R=String(b.props[1]??"").split("::"),S=R.length>1?R[1]:R[0],K=String(b.props[2]??b.name);i.set(M,{id:M,name:S,type:K,node:b})}let o=[];if(r){for(let b of r.children)if(b.name==="C"||b.name==="Connect"){let M=String(b.props[0]),v=b.props[1]??0,R=b.props[2]??0,S=M==="OP"?String(b.props[3]):void 0;o.push({childId:v,parentId:R,propName:S})}}let a=b=>{for(let M of o){let v=M.parentId===b?i.get(M.childId):void 0;if(v?.node.name==="Material"&&!M.propName)return v.name}for(let M of o)if(!(M.childId!==b||M.propName))for(let v of o){if(v.parentId!==M.parentId||v.propName)continue;let R=i.get(v.childId);if(R?.node.name==="Material")return R.name}},s=[],g={};function l(b){if(!b)return[];if(b.props[0]instanceof Float32Array||b.props[0]instanceof Float64Array||b.props[0]instanceof Int32Array||Array.isArray(b.props[0]))return b.props[0];let M=b.children.find(v=>v.name==="a");return M&&M.props.length>0?M.props:Array.isArray(b.props)&&b.props.length>0&&typeof b.props[0]=="number"?b.props:[]}let u=[...i.values()].filter(b=>b.node.name==="Model").map(b=>b.id),c=new Map(u.map((b,M)=>[b,M])),I=u.map(b=>{let M=i.get(b),v=o.find(R=>R.childId===b&&!R.propName&&c.has(R.parentId));return{name:M.name,parent:v?c.get(v.parentId):-1,translation:ke(M.node,"Lcl Translation",0),rotation:Qr(M.node,Bt(ke(M.node,"Lcl Rotation",0),yr(M.node))),scale:ke(M.node,"Lcl Scaling",1)}}),E=b=>o.find(M=>M.childId===b&&!M.propName&&c.has(M.parentId))?.parentId,d=[];for(let[b,M]of i)if(M.node.name==="Geometry"&&(M.type==="Mesh"||M.node.props[2]==="Mesh"||M.type==="")){let v=M.node,R=v.children.find(AA=>AA.name==="Vertices"),S=v.children.find(AA=>AA.name==="PolygonVertexIndex");if(!R||!S)continue;let K=l(R),F=l(S),z=(AA,eA,gA,lA)=>{let BA=v.children.find(EA=>EA.name===AA);if(BA)return $i(BA,l(BA.children.find(EA=>EA.name===eA)),l(BA.children.find(EA=>EA.name===gA)),lA)},Z=z("LayerElementNormal","Normals","NormalsIndex",3),$=z("LayerElementUV","UV","UVIndex",2),aA=[],W=[],Y=0;for(let AA=0;AA<F.length;AA++){let eA=F[AA];if(W.push({cp:eA<0?-(eA+1):eA,pv:AA}),!(eA>=0)){for(let gA=1;gA<W.length-1;gA++)for(let lA of[W[0],W[gA],W[gA+1]])aA.push({...lA,poly:Y});W=[],Y++}}let j=aA.length,IA=new Float32Array(j*3),dA=new Float32Array(j*3),uA=new Float32Array(j*2),mA=new Array(j);aA.forEach(({cp:AA,pv:eA,poly:gA},lA)=>{IA[lA*3]=K[AA*3]??0,IA[lA*3+1]=K[AA*3+1]??0,IA[lA*3+2]=K[AA*3+2]??0;let BA=Z?.(AA,eA,gA);dA.set(BA??[0,0,1],lA*3);let EA=$?.(AA,eA,gA);uA[lA*2]=EA?.[0]??0,uA[lA*2+1]=1-(EA?.[1]??0),mA[lA]=lA}),(!Z||t.smoothNormals)&&(dA.fill(0),ne(IA,mA,dA));let pA=o.find(AA=>AA.parentId===b&&i.get(AA.childId)?.node.name==="Deformer"&&i.get(AA.childId)?.node.props[2]==="Skin"),X,P,nA;if(pA){let AA=[],eA=[],gA=new Map;for(let lA of o){let BA=i.get(lA.childId);if(lA.parentId!==pA.childId||BA?.node.name!=="Deformer"||BA.node.props[2]!=="Cluster")continue;let EA=o.find(hA=>hA.parentId===BA.id&&c.has(hA.childId))?.childId;if(EA===void 0)continue;let QA=AA.length;AA.push(c.get(EA));let sA=mr(BA.node,"Transform"),yA=mr(BA.node,"TransformLink");eA.push(..._.multiply(_.invert(yA)??_.identity(),sA));let bA=l(BA.node.children.find(hA=>hA.name==="Indexes")),wA=l(BA.node.children.find(hA=>hA.name==="Weights"));for(let hA=0;hA<bA.length;hA++){let VA=Number(wA[hA]??0);if(!(VA>0))continue;let YA=Number(bA[hA]),FA=gA.get(YA)??[];FA.push([QA,VA]),gA.set(YA,FA)}}if(AA.length>re)throw new Error(`FBX skin has ${AA.length} bones; the mesh shader holds ${re}`);AA.length>0&&(nA=d.length,d.push({joints:AA,inverseBindMatrices:new Float32Array(eA)}),X=new Float32Array(j*4),P=new Float32Array(j*4),aA.forEach(({cp:lA},BA)=>{let EA=(gA.get(lA)??[]).sort((sA,yA)=>yA[1]-sA[1]).slice(0,4),QA=EA.reduce((sA,[,yA])=>sA+yA,0);EA.forEach(([sA,yA],bA)=>{X[BA*4+bA]=sA,P[BA*4+bA]=QA>0?yA/QA:0})}))}let tA=E(b),rA=j>65535;s.push({id:`fbx_mesh_${b}`,name:M.name,positions:IA,normals:dA,uvs:uA,indices:rA?new Uint32Array(mA):new Uint16Array(mA),jointIndices:X,jointWeights:P,materialName:a(b)??M.name,node:tA!==void 0?c.get(tA):void 0,skin:nA})}for(let[,b]of i)if(b.node.name==="Material"){let v=b.node.children.find(z=>z.name==="Properties70"),R=[1,1,1,1],S=32,K=1;if(v){for(let z of v.children)if(z.name==="P"){let Z=String(z.props[0]);if(Z==="DiffuseColor"||Z==="Color"){let $=Number(z.props[4]??1),aA=Number(z.props[5]??1),W=Number(z.props[6]??1);R=[$,aA,W,1]}else Z==="Shininess"||Z==="ShininessExponent"?S=Number(z.props[4]??32):Z==="Opacity"&&(K=Number(z.props[4]??1),R[3]=K)}}let F={name:b.name,diffuseColor:R,shininess:S,opacity:K};A.attachTextures(F,b.id,i,o,t.basePath),g[b.name]=F}let h=[];for(let[b,M]of i)if(M.node.name==="AnimationStack"){let v=M.name||"Take 001",R=[],S=o.find(F=>F.parentId===b&&i.get(F.childId)?.node.name==="AnimationLayer");if(S){let F=o.filter(Z=>Z.parentId===S.childId&&i.get(Z.childId)?.node.name==="AnimationCurveNode"),z=new Map;for(let Z of F){let $=i.get(Z.childId);if(!$)continue;let aA=o.find(uA=>uA.childId===$.id&&i.get(uA.parentId)?.node.name==="Model"),W=aA?i.get(aA.parentId):void 0,Y=hr(aA?.propName)??hr($.name);if(!Y)continue;let j=`${W?.id??$.id}|${Y}`,IA=z.get(j);if(!IA){let uA=W?.node;IA={nodeName:W?.name??$.name,modelId:W?.id,model:uA,kind:Y,defaults:eo(uA,$.node,Y),channels:[void 0,void 0,void 0]},z.set(j,IA)}o.filter(uA=>uA.parentId===$.id&&i.get(uA.childId)?.node.name==="AnimationCurve").forEach((uA,mA)=>{let pA=Ao(uA.propName)??mA;if(pA>2)return;let X=i.get(uA.childId)?.node,P=l(X?.children.find(rA=>rA.name==="KeyTime")),nA=l(X?.children.find(rA=>rA.name==="KeyValueFloat")),tA=Math.min(P.length,nA.length);tA!==0&&(IA.channels[pA]={times:Array.from(P.slice(0,tA),rA=>Number(rA)),values:Array.from(nA.slice(0,tA),rA=>Number(rA))})})}for(let Z of z.values()){let $=ro(Z);if($){if(Z.modelId!==void 0&&($.node=c.get(Z.modelId)),$.rotations&&Z.model)for(let aA=0;aA<$.rotations.length;aA+=4){let W=Array.from($.rotations.subarray(aA,aA+4));$.rotations.set(Qr(Z.model,W),aA)}R.push($)}}}let K=1;for(let F of R)if(F.times.length>0){let z=F.times[F.times.length-1]??0;z>K&&(K=z)}h.push({name:v,duration:K,fps:30,tracks:R})}let Q={meshes:s,materials:g,animations:h,nodes:I,skins:d,bounds:{min:[0,0,0],max:[0,0,0],center:[0,0,0],size:[0,0,0],boundingSphereRadius:0}},m=It(Q,void 0,0),D=[1/0,1/0,1/0],p=[-1/0,-1/0,-1/0];for(let b of s){let M=b.node!==void 0?m[b.node]:void 0;for(let v=0;v<b.positions.length;v+=3){let R=[b.positions[v],b.positions[v+1],b.positions[v+2]],S=M?_.projectPoint(M,R):R;for(let K=0;K<3;K++)S[K]<D[K]&&(D[K]=S[K]),S[K]>p[K]&&(p[K]=S[K])}}Number.isFinite(D[0])||(D.fill(-1),p.fill(1));let{offset:G,scale:N}=RA({min:D,max:p,center:[(D[0]+p[0])*.5,(D[1]+p[1])*.5,(D[2]+p[2])*.5],size:[p[0]-D[0],p[1]-D[1],p[2]-D[2]]},t);Q.rootTransform=_.multiply(_.scale(N[0],N[1],N[2]),_.translate(-G[0],-G[1],-G[2]));let w=[0,1,2].map(b=>(D[b]-G[b])*N[b]),U=[0,1,2].map(b=>(p[b]-G[b])*N[b]);return Q.bounds={min:w,max:U,center:[(w[0]+U[0])*.5,(w[1]+U[1])*.5,(w[2]+U[2])*.5],size:[U[0]-w[0],U[1]-w[1],U[2]-w[2]],boundingSphereRadius:Math.hypot(U[0]-w[0],U[1]-w[1],U[2]-w[2])*.5},Q}};function ke(A,e,t){let n=de(A,e);return[0,1,2].map(r=>{let i=n?.[r];return i!==void 0&&Number.isFinite(i)?i:t})}function Cr(A,e){return[A[3]*e[0]+A[0]*e[3]+A[1]*e[2]-A[2]*e[1],A[3]*e[1]-A[0]*e[2]+A[1]*e[3]+A[2]*e[0],A[3]*e[2]+A[0]*e[1]-A[1]*e[0]+A[2]*e[3],A[3]*e[3]-A[0]*e[0]-A[1]*e[1]-A[2]*e[2]]}function Qr(A,e){let t=de(A,"PreRotation"),n=de(A,"PostRotation"),r=e;if(t&&(r=Cr(Bt(ke(A,"PreRotation",0)),r)),n){let i=Bt(ke(A,"PostRotation",0));r=Cr(r,[-i[0],-i[1],-i[2],i[3]])}return r}function mr(A,e){let t=A.children.find(i=>i.name===e),n=t?.children.find(i=>i.name==="a")?.props??t?.props,r=n?.[0]instanceof Float64Array||n?.[0]instanceof Float32Array?Array.from(n[0]):(n??[]).map(Number);return r.length===16?r:_.identity()}function $i(A,e,t,n){if(e.length===0)return;let r=a=>String(A.children.find(s=>s.name===a)?.props[0]??""),i=r("MappingInformationType"),o=/^Index/.test(r("ReferenceInformationType"))&&t.length>0;return(a,s,g)=>{let l=i==="ByPolygonVertex"?s:i==="ByPolygon"?g:i==="AllSame"?0:a;return o&&(l=Number(t[l]??l)),Array.from({length:n},(u,c)=>Number(e[l*n+c]??0))}}function hr(A){switch(A){case"Lcl Translation":case"T":return"T";case"Lcl Rotation":case"R":return"R";case"Lcl Scaling":case"S":return"S";default:return}}function Ao(A){switch(A){case"d|X":return 0;case"d|Y":return 1;case"d|Z":return 2;default:return}}function de(A,e){let n=A?.children.find(r=>r.name==="Properties70")?.children.find(r=>r.name==="P"&&r.props[0]===e);if(n)return n.props.slice(4).map(r=>Number(r))}function eo(A,e,t){let n=t==="S"?1:0,r=de(A,t==="T"?"Lcl Translation":t==="R"?"Lcl Rotation":"Lcl Scaling"),i=[n,n,n];for(let o=0;o<3;o++){let a=r?.[o],s=de(e,`d|${"XYZ"[o]}`)?.[0],g=a??s;g!==void 0&&Number.isFinite(g)&&(i[o]=g)}return i}var to=["XYZ","XZY","YZX","YXZ","ZXY","ZYX"];function yr(A){let e=de(A,"RotationOrder")?.[0]??0;return to[e]??"XYZ"}function Bt(A,e="XYZ"){let t=[0,0,0,1];for(let n of e){let r="XYZ".indexOf(n),i=(A[r]??0)*Math.PI/360,o=Math.sin(i),a=[0,0,0,Math.cos(i)];a[r]=o,t=[a[3]*t[0]+a[0]*t[3]+a[1]*t[2]-a[2]*t[1],a[3]*t[1]-a[0]*t[2]+a[1]*t[3]+a[2]*t[0],a[3]*t[2]+a[0]*t[1]-a[1]*t[0]+a[2]*t[3],a[3]*t[3]-a[0]*t[0]-a[1]*t[1]-a[2]*t[2]]}return t}function no(A,e){let{times:t,values:n}=A,r=t.length-1;if(e<=t[0])return n[0];if(e>=t[r])return n[r];let i=0;for(;i<r-1&&t[i+1]<=e;)i++;let o=t[i],a=t[i+1],s=a>o?(e-o)/(a-o):0;return n[i]+(n[i+1]-n[i])*s}function ro(A){let e=new Set;for(let s of A.channels)for(let g of s?.times??[])e.add(g);if(e.size===0)return;let t=[...e].sort((s,g)=>s-g),n=new Float32Array(t.length),r=A.kind==="R",i=new Float32Array(t.length*(r?4:3)),o=r?yr(A.model):"XYZ",a;return t.forEach((s,g)=>{n[g]=s/ae.FBX_KTIME;let l=[0,1,2].map(c=>{let I=A.channels[c];return I?no(I,s):A.defaults[c]});if(!r){i.set(l,g*3);return}let u=Bt(l,o);if(a&&a[0]*u[0]+a[1]*u[1]+a[2]*u[2]+a[3]*u[3]<0)for(let c=0;c<4;c++)u[c]=-u[c];a=u,i.set(u,g*4)}),{nodeName:A.nodeName,times:n,translations:A.kind==="T"?i:void 0,rotations:r?i:void 0,scales:A.kind==="S"?i:void 0}}function Ks(A,e={}){return ae.parse(A,e)}function Pe(A,e={}){let t=A;if(typeof A=="string"){let n=A.trim();if(!(n.includes("FBXHeaderExtension")||n.includes("Kaydara FBX"))&&typeof cA<"u"&&cA.existsSync)try{let i=A.startsWith("file://")?A.slice(7):A;try{i=decodeURIComponent(i)}catch{}if(cA.existsSync(i)){let o=cA.readFileSync(i);t=new Uint8Array(o.buffer,o.byteOffset,o.byteLength),e={basePath:MA.dirname(i),...e}}}catch{}}return ae.parse(t,e)}k();k();var br=`
3
3
  struct AudioLatentBuffer {
4
4
  fftBins : array<f32, 1024>,
@@ -1,4 +1,4 @@
1
- import{a as v,c as _,d,g as w,h as G,j as b,m as T}from"./chunk-ENKKLU7B.mjs";import{A as h,u as g}from"./chunk-RNFYEZLL.mjs";import{e as u}from"./chunk-BVF64D6H.mjs";u();u();u();function N(){return[{x:0,y:0},{x:100,y:0},{x:0,y:100},{x:100,y:100}]}function L(e){let r=e&&e.length===4?e:N();return g(r.map(t=>({x:t.x/100,y:t.y/100})))}var z=`
1
+ import{a as v,c as _,d,g as w,h as G,j as b,m as T}from"./chunk-ENKKLU7B.mjs";import{A as h,u as g}from"./chunk-ALSOO22Q.mjs";import{e as u}from"./chunk-BVF64D6H.mjs";u();u();u();function N(){return[{x:0,y:0},{x:100,y:0},{x:0,y:100},{x:100,y:100}]}function L(e){let r=e&&e.length===4?e:N();return g(r.map(t=>({x:t.x/100,y:t.y/100})))}var z=`
2
2
  struct CornerPinUniforms {
3
3
  matrix_row0 : vec4<f32>,
4
4
  matrix_row1 : vec4<f32>,
@@ -1,4 +1,4 @@
1
- import{a as F}from"./chunk-QVW5METG.mjs";import{b as I,c as B}from"./chunk-NKGXINCU.mjs";import{a as p}from"./chunk-V3FODTPI.mjs";import{a as L,d as y,g as N,h as V,j as D,m as k}from"./chunk-ENKKLU7B.mjs";import{e as b}from"./chunk-KJGNTREI.mjs";import{A as U}from"./chunk-RNFYEZLL.mjs";import{e as c}from"./chunk-BVF64D6H.mjs";c();c();c();var C=new Map;function _(e){let t=C.get(e);return t||(t=(async()=>{try{let r=await b.acquire(e);try{let o=await r.getPrimaryVideoTrack();return o?{width:o.displayWidth,height:o.displayHeight}:null}finally{b.release(e)}}catch{return null}})(),C.set(e,t)),t}c();var J=F().field("angle",p.number().default(90),{bindable:!0,dataTypes:["Number","Signal"],label:"Angle Signal",description:"Rotation in degrees about the frame center, clockwise. Any value; 90 / 180 / 270 fix footage shot sideways or upside down."}).field("fit",p.enum(["cover","contain","fill"]).default("cover"),{description:"How the rotated source sits in the output: cover fills it (cropping the overhang), contain shows all of it (transparent margins), fill keeps the unrotated source stretched to the output and only turns it."}).field("scale",p.number().min(.01).max(20).default(1),{bindable:!0,dataTypes:["Number","Signal"],label:"Scale Signal",description:"Extra zoom applied after the fit (1 = exactly fitted)."}).build(),ie=J.schema,ae=p.union([I,B]);function A(e,t,r,o,i,a){if(a==="fill")return{width:r,height:o};let d=i*Math.PI/180,n=Math.abs(Math.cos(d)),u=Math.abs(Math.sin(d)),s=a==="cover"?Math.max((n*r+u*o)/e,(u*r+n*o)/t):Math.min(r/(n*e+u*t),o/(u*e+n*t));return{width:e*s,height:t*s}}var K=`
1
+ import{a as F}from"./chunk-QVW5METG.mjs";import{b as I,c as B}from"./chunk-NKGXINCU.mjs";import{a as p}from"./chunk-V3FODTPI.mjs";import{a as L,d as y,g as N,h as V,j as D,m as k}from"./chunk-ENKKLU7B.mjs";import{e as b}from"./chunk-KJGNTREI.mjs";import{A as U}from"./chunk-ALSOO22Q.mjs";import{e as c}from"./chunk-BVF64D6H.mjs";c();c();c();var C=new Map;function _(e){let t=C.get(e);return t||(t=(async()=>{try{let r=await b.acquire(e);try{let o=await r.getPrimaryVideoTrack();return o?{width:o.displayWidth,height:o.displayHeight}:null}finally{b.release(e)}}catch{return null}})(),C.set(e,t)),t}c();var J=F().field("angle",p.number().default(90),{bindable:!0,dataTypes:["Number","Signal"],label:"Angle Signal",description:"Rotation in degrees about the frame center, clockwise. Any value; 90 / 180 / 270 fix footage shot sideways or upside down."}).field("fit",p.enum(["cover","contain","fill"]).default("cover"),{description:"How the rotated source sits in the output: cover fills it (cropping the overhang), contain shows all of it (transparent margins), fill keeps the unrotated source stretched to the output and only turns it."}).field("scale",p.number().min(.01).max(20).default(1),{bindable:!0,dataTypes:["Number","Signal"],label:"Scale Signal",description:"Extra zoom applied after the fit (1 = exactly fitted)."}).build(),ie=J.schema,ae=p.union([I,B]);function A(e,t,r,o,i,a){if(a==="fill")return{width:r,height:o};let d=i*Math.PI/180,n=Math.abs(Math.cos(d)),u=Math.abs(Math.sin(d)),s=a==="cover"?Math.max((n*r+u*o)/e,(u*r+n*o)/t):Math.min(r/(n*e+u*t),o/(u*e+n*t));return{width:e*s,height:t*s}}var K=`
2
2
  struct RotateUniforms {
3
3
  outSize: vec2<f32>,
4
4
  size : vec2<f32>,
@@ -1,4 +1,4 @@
1
- import{a as le}from"./chunk-QVW5METG.mjs";import{b as se,c as ue}from"./chunk-NKGXINCU.mjs";import{a as r}from"./chunk-V3FODTPI.mjs";import{a as te,d as ae,e as G,g as ie,h as _,j as ne,k as re,l as oe,m as L}from"./chunk-ENKKLU7B.mjs";import{A as ee,x as Z}from"./chunk-RNFYEZLL.mjs";import{e as n}from"./chunk-BVF64D6H.mjs";n();n();n();n();var N=0,U=1,V=.5,O=50,P=0,F=100,B=0,W=50,H=-100,z=100,ye=r.enum(["Alpha","Luminance","Red","Green","Blue"]),De=r.enum(["Composite","MatteOnly","DecontaminatedRGB"]),we=le().field("decontaminateAmount",r.number().multipleOf(.01).min(N).max(U).default(.7),{bindable:!0,dataTypes:["Number","Signal"],label:"Decontaminate Colors",description:"Amount of edge color spill decontamination/defringing (0.0\u20131.0)."}).field("radius",r.number().multipleOf(.1).min(V).max(O).default(2),{bindable:!0,dataTypes:["Number","Signal"],label:"Edge Detection Radius (px)",description:"Radius in pixels around alpha transitions to refine and decontaminate."}).field("smooth",r.number().min(P).max(F).default(5),{bindable:!0,dataTypes:["Number","Signal"],label:"Smoothness",description:"Matte edge smoothing curve intensity (0\u2013100)."}).field("feather",r.number().multipleOf(.1).min(B).max(W).default(.5),{bindable:!0,dataTypes:["Number","Signal"],label:"Feather (px)",description:"Sub-pixel gaussian softness along the matte boundary."}).field("shiftEdge",r.number().min(H).max(z).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Shift Edge (%)",description:"Contract (<0) or expand (>0) the edge boundary (-100% to +100%)."}).field("matteChannel",ye.default("Alpha"),{label:"Matte Channel",description:"Channel to extract matte from (Alpha, Luminance, Red, Green, Blue)."}).field("outputMode",De.default("Composite"),{label:"Output Mode",description:"Composite (decontaminated RGB + refined alpha), MatteOnly (grayscale mask), DecontaminatedRGB (clean RGB with full alpha)."}).build(),Oe=we.schema,Pe=r.union([se,ue]);n();var Ge={Alpha:0,Luminance:1,Red:2,Green:3,Blue:4},_e={Composite:0,MatteOnly:1,DecontaminatedRGB:2},Le=`
1
+ import{a as le}from"./chunk-QVW5METG.mjs";import{b as se,c as ue}from"./chunk-NKGXINCU.mjs";import{a as r}from"./chunk-V3FODTPI.mjs";import{a as te,d as ae,e as G,g as ie,h as _,j as ne,k as re,l as oe,m as L}from"./chunk-ENKKLU7B.mjs";import{A as ee,x as Z}from"./chunk-ALSOO22Q.mjs";import{e as n}from"./chunk-BVF64D6H.mjs";n();n();n();n();var N=0,U=1,V=.5,O=50,P=0,F=100,B=0,W=50,H=-100,z=100,ye=r.enum(["Alpha","Luminance","Red","Green","Blue"]),De=r.enum(["Composite","MatteOnly","DecontaminatedRGB"]),we=le().field("decontaminateAmount",r.number().multipleOf(.01).min(N).max(U).default(.7),{bindable:!0,dataTypes:["Number","Signal"],label:"Decontaminate Colors",description:"Amount of edge color spill decontamination/defringing (0.0\u20131.0)."}).field("radius",r.number().multipleOf(.1).min(V).max(O).default(2),{bindable:!0,dataTypes:["Number","Signal"],label:"Edge Detection Radius (px)",description:"Radius in pixels around alpha transitions to refine and decontaminate."}).field("smooth",r.number().min(P).max(F).default(5),{bindable:!0,dataTypes:["Number","Signal"],label:"Smoothness",description:"Matte edge smoothing curve intensity (0\u2013100)."}).field("feather",r.number().multipleOf(.1).min(B).max(W).default(.5),{bindable:!0,dataTypes:["Number","Signal"],label:"Feather (px)",description:"Sub-pixel gaussian softness along the matte boundary."}).field("shiftEdge",r.number().min(H).max(z).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Shift Edge (%)",description:"Contract (<0) or expand (>0) the edge boundary (-100% to +100%)."}).field("matteChannel",ye.default("Alpha"),{label:"Matte Channel",description:"Channel to extract matte from (Alpha, Luminance, Red, Green, Blue)."}).field("outputMode",De.default("Composite"),{label:"Output Mode",description:"Composite (decontaminated RGB + refined alpha), MatteOnly (grayscale mask), DecontaminatedRGB (clean RGB with full alpha)."}).build(),Oe=we.schema,Pe=r.union([se,ue]);n();var Ge={Alpha:0,Luminance:1,Red:2,Green:3,Blue:4},_e={Composite:0,MatteOnly:1,DecontaminatedRGB:2},Le=`
2
2
  struct RefineEdgeUniforms {
3
3
  dirX : f32,
4
4
  dirY : f32,
@@ -1,4 +1,4 @@
1
- import{a as ot}from"./chunk-LKYN3BM2.mjs";import{o as wt,p as C,q as T,r as Gt,s as Mt,t as Ut}from"./chunk-I3ZTDIVM.mjs";import{c as yt,d as xt,e as $}from"./chunk-SYP4AJMF.mjs";import{a as vt,b as it,d as bt,e as A}from"./chunk-KJGNTREI.mjs";import{A as St,b as Pt,j as O,x as G,y as U}from"./chunk-MCFYUKAJ.mjs";import{a as D,b as gt}from"./chunk-IQC2I5A5.mjs";import{e as x}from"./chunk-BVF64D6H.mjs";x();var I=class{constructor(t,e){this.url=t;this.isHeadless=e}url;isHeadless;input=null;initPromise=null;iterator=null;iteratorStartTimestamp=-1;currentFetchId=0;fetchLock=Promise.resolve();destroyed=!1;async init(){if(!this.input)return this.initPromise?this.initPromise:(this.destroyed=!1,this.initPromise=(async()=>{try{let t=await A.acquire(this.url);this.destroyed?A.release(this.url):this.input=t}catch(t){throw this.initPromise=null,t}})(),this.initPromise)}destroy(){this.destroyed=!0,this.iterator?.return(),this.input&&(A.release(this.url),this.input=null),this.initPromise=null,this.onDestroy()}},st=class extends I{canvasSink=null;videoSampleSink=null;currentFrame=null;nextFrame=null;currentSample=null;nextSample=null;headlessQueue=[];isDecoding=!1;decodeBuffer=null;nextRequest=null;pushHeadlessQueue(t){let e=this.headlessQueue.findIndex(r=>r.timestamp>t.timestamp);e===-1?this.headlessQueue.push(t):this.headlessQueue.splice(e,0,t)}async fillHeadlessQueue(t){if(this.iterator)for(;this.headlessQueue.length<2;){let e=await this.iterator.next();if(this.currentFetchId!==t){e.value?.close?.();return}if(e.done||!e.value)break;this.pushHeadlessQueue(e.value)}}async closeIterator(t){if(t)try{await t.return()}catch{}}resetSinks(){let t=this.iterator;if(this.iterator=null,t)try{t.return()}catch{}this.canvasSink=null,this.videoSampleSink=null,this.currentFrame=null,this.nextFrame=null,this.currentSample?.close(),this.currentSample=null,this.nextSample?.close(),this.nextSample=null;for(let e of this.headlessQueue)try{e.close()}catch{}this.headlessQueue=[],this.decodeBuffer=null,this.iteratorStartTimestamp=-1}onDestroy(){this.resetSinks()}async startIterator(t,e){if(!this.canvasSink)return;let r=Math.max(0,Number.isFinite(t)?t:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==e||this.destroyed)return;this.iterator=this.canvasSink.canvases(r);let n=await this.iterator.next();if(this.currentFetchId!==e||this.destroyed)return;this.currentFrame=n.value??null;let s=await this.iterator.next();this.currentFetchId!==e||this.destroyed||(this.nextFrame=s.value??null,this.iteratorStartTimestamp=r)}async startIteratorHeadless(t,e){if(!this.videoSampleSink)return;let r=Math.max(0,Number.isFinite(t)?t:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==e||this.destroyed)return;for(let s of this.headlessQueue)s.close();this.headlessQueue=[];let n=Math.max(0,r-.1);this.iterator=this.videoSampleSink.samples(n),await this.fillHeadlessQueue(e),!(this.currentFetchId!==e||this.destroyed)&&(this.iteratorStartTimestamp=r)}async getFrame(t){if(await this.init(),this.destroyed||!this.input)return null;let e=Math.max(0,Number.isFinite(t)?t:0);return this.isDecoding?(this.nextRequest&&this.nextRequest.resolve(null),new Promise((r,i)=>{this.nextRequest={timestampSec:e,resolve:r,reject:i}})):this.executeDecode(e)}async executeDecode(t){this.isDecoding=!0;try{return await this.performDecode(t)}finally{if(this.isDecoding=!1,this.nextRequest){let e=this.nextRequest;this.nextRequest=null,this.executeDecode(e.timestampSec).then(e.resolve).catch(e.reject)}}}async performDecodeHeadless(t,e){if(!this.videoSampleSink){if(this.destroyed||!this.input)return null;let h=await this.input.getPrimaryVideoTrack();if(!h)return null;this.videoSampleSink=new vt(h)}let r=1e-4;if((!this.iterator||t<this.iteratorStartTimestamp-r||this.headlessQueue.length>0&&t<this.headlessQueue[0].timestamp-.01||this.headlessQueue.length>0&&t-this.headlessQueue[0].timestamp>1)&&(await this.startIteratorHeadless(t,e),this.currentFetchId!==e||this.destroyed||!this.input))return null;for(;;){if(await this.fillHeadlessQueue(e),this.currentFetchId!==e||this.destroyed||!this.input)return null;if(this.headlessQueue.length>=2&&this.headlessQueue[1].timestamp<=t+r){this.headlessQueue.shift()?.close();continue}break}let s=this.headlessQueue[0];if(!s)return null;let a=s.displayWidth,o=s.displayHeight,l=a*o*4,u=this.decodeBuffer;return(!u||u.length!==l)&&(u=new Uint8Array(l),this.decodeBuffer=u),await s.copyTo(u,{format:"RGBA"}),this.currentFetchId!==e||this.destroyed||!this.input?null:(gt(u),{width:a,height:o,buffer:u})}async performDecodeInternal(t){this.currentFetchId++;let e=this.currentFetchId;if(this.isHeadless)return this.performDecodeHeadless(t,e);if(!this.canvasSink){if(this.destroyed||!this.input)return null;let a=await this.input.getPrimaryVideoTrack();if(!a)return null;this.canvasSink=new it(a,{poolSize:3,alpha:!0})}let r=1e-4;if((!this.iterator||t<this.iteratorStartTimestamp-r||this.currentFrame&&t<this.currentFrame.timestamp-.01||this.currentFrame&&t-this.currentFrame.timestamp>1)&&(await this.startIterator(t,e),this.currentFetchId!==e||this.destroyed||!this.input))return null;for(;this.nextFrame&&this.nextFrame.timestamp<=t+r;)if(this.currentFrame=this.nextFrame,this.nextFrame=null,this.iterator){let a=await this.iterator.next();if(this.currentFetchId!==e||this.destroyed||!this.input)return null;this.nextFrame=a.value??null}if(!this.currentFrame)return null;let s=this.currentFrame.canvas;return{width:s.width,height:s.height,canvas:s}}async performDecode(t){let e=Math.max(0,Number.isFinite(t)?t:0);try{return await this.performDecodeInternal(e)}catch(r){let i=r;if(i?.name==="InputDisposedError"||i?.message?.includes("disposed")||this.destroyed||!this.input)return null;this.resetSinks();try{if(!this.isHeadless&&this.input&&!this.destroyed){let n=await this.input.getPrimaryVideoTrack();if(n&&!this.destroyed)return this.canvasSink=new it(n,{poolSize:3,alpha:!0,decoderOptions:{hardwareAcceleration:"prefer-software"}}),await this.performDecodeInternal(e)}}catch{}throw r}}},nt=class extends I{audioSink=null;onDestroy(){this.audioSink=null}async startIterator(t,e){this.audioSink&&(this.iterator?.return(),this.iterator=this.audioSink.buffers(t),this.iteratorStartTimestamp=t)}async*getBuffers(t){try{if(await this.init(),this.destroyed||!this.input)return;if(!this.audioSink){let i=await this.input.getPrimaryAudioTrack();if(!i)return;this.audioSink=new bt(i)}(!this.iterator||Math.abs(t-this.iteratorStartTimestamp)>.05)&&(this.currentFetchId++,await this.startIterator(t,this.currentFetchId));let r=this.currentFetchId;if(!this.iterator)return;for await(let i of this.iterator){if(this.currentFetchId!==r||this.destroyed||!this.input)break;this.iteratorStartTimestamp=i.timestamp+i.duration,yield i}}catch(e){let r=e;if(r?.name==="InputDisposedError"||r?.message?.includes("disposed")||this.destroyed||!this.input)return;throw e}finally{let e=this.currentFetchId;this.currentFetchId===e&&(this.iterator=null)}}},at=class{videoDecoders=new Map;audioDecoders=new Map;lastAccessed=new Map;ticks=0;lastTick=new Map;touchKey(t){this.lastAccessed.set(t,Date.now()),this.lastTick.set(t,this.ticks)}dropKey(t){let e=this.videoDecoders.get(t);if(e){try{e.destroy()}catch{}this.videoDecoders.delete(t)}let r=this.audioDecoders.get(t);if(r){try{r.destroy()}catch{}this.audioDecoders.delete(t)}this.lastAccessed.delete(t),this.lastTick.delete(t)}tick(t=120){this.ticks++;for(let[e,r]of this.lastTick)this.ticks-r>t&&this.dropKey(e)}destroy(){for(let t of this.videoDecoders.values())try{t.destroy()}catch{}this.videoDecoders.clear();for(let t of this.audioDecoders.values())try{t.destroy()}catch{}this.audioDecoders.clear(),this.lastAccessed.clear(),this.lastTick.clear()}get size(){return this.videoDecoders.size+this.audioDecoders.size}prune(t=3e5){let e=Date.now();for(let[r,i]of this.lastAccessed.entries())e-i>t&&this.dropKey(r)}getVideo(t,e,r){let i=`${t}-${e}-${r??"default"}`,n=this.videoDecoders.get(i);return n||(n=new st(t,e),this.videoDecoders.set(i,n)),this.touchKey(i),this.prune(),n}getAudio(t,e){let r=`${t}-${e??"default"}`,i=this.audioDecoders.get(r);return i||(i=new nt(t,!1),this.audioDecoders.set(r,i)),this.touchKey(r),this.prune(),i}clearNode(t){let e=[...this.videoDecoders.keys(),...this.audioDecoders.keys()];for(let r of e)r.includes(t)&&this.dropKey(r)}},ee=new at;x();x();var Bt=`
1
+ import{a as ot}from"./chunk-LKYN3BM2.mjs";import{o as Gt,p as C,q as T,r as Mt,s as Ut,t as Bt}from"./chunk-BBHRXV75.mjs";import{c as yt,d as xt,e as $}from"./chunk-SYP4AJMF.mjs";import{a as vt,b as it,d as bt,e as A}from"./chunk-KJGNTREI.mjs";import{B as wt,b as Pt,j as O,v as St,y as G,z as U}from"./chunk-2LQCQ3OT.mjs";import{a as D,b as gt}from"./chunk-IQC2I5A5.mjs";import{e as x}from"./chunk-BVF64D6H.mjs";x();var I=class{constructor(t,e){this.url=t;this.isHeadless=e}url;isHeadless;input=null;initPromise=null;iterator=null;iteratorStartTimestamp=-1;currentFetchId=0;fetchLock=Promise.resolve();destroyed=!1;async init(){if(!this.input)return this.initPromise?this.initPromise:(this.destroyed=!1,this.initPromise=(async()=>{try{let t=await A.acquire(this.url);this.destroyed?A.release(this.url):this.input=t}catch(t){throw this.initPromise=null,t}})(),this.initPromise)}destroy(){this.destroyed=!0,this.iterator?.return(),this.input&&(A.release(this.url),this.input=null),this.initPromise=null,this.onDestroy()}},st=class extends I{canvasSink=null;videoSampleSink=null;currentFrame=null;nextFrame=null;currentSample=null;nextSample=null;headlessQueue=[];isDecoding=!1;decodeBuffer=null;nextRequest=null;pushHeadlessQueue(t){let e=this.headlessQueue.findIndex(r=>r.timestamp>t.timestamp);e===-1?this.headlessQueue.push(t):this.headlessQueue.splice(e,0,t)}async fillHeadlessQueue(t){if(this.iterator)for(;this.headlessQueue.length<2;){let e=await this.iterator.next();if(this.currentFetchId!==t){e.value?.close?.();return}if(e.done||!e.value)break;this.pushHeadlessQueue(e.value)}}async closeIterator(t){if(t)try{await t.return()}catch{}}resetSinks(){let t=this.iterator;if(this.iterator=null,t)try{t.return()}catch{}this.canvasSink=null,this.videoSampleSink=null,this.currentFrame=null,this.nextFrame=null,this.currentSample?.close(),this.currentSample=null,this.nextSample?.close(),this.nextSample=null;for(let e of this.headlessQueue)try{e.close()}catch{}this.headlessQueue=[],this.decodeBuffer=null,this.iteratorStartTimestamp=-1}onDestroy(){this.resetSinks()}async startIterator(t,e){if(!this.canvasSink)return;let r=Math.max(0,Number.isFinite(t)?t:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==e||this.destroyed)return;this.iterator=this.canvasSink.canvases(r);let n=await this.iterator.next();if(this.currentFetchId!==e||this.destroyed)return;this.currentFrame=n.value??null;let s=await this.iterator.next();this.currentFetchId!==e||this.destroyed||(this.nextFrame=s.value??null,this.iteratorStartTimestamp=r)}async startIteratorHeadless(t,e){if(!this.videoSampleSink)return;let r=Math.max(0,Number.isFinite(t)?t:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==e||this.destroyed)return;for(let s of this.headlessQueue)s.close();this.headlessQueue=[];let n=Math.max(0,r-.1);this.iterator=this.videoSampleSink.samples(n),await this.fillHeadlessQueue(e),!(this.currentFetchId!==e||this.destroyed)&&(this.iteratorStartTimestamp=r)}async getFrame(t){if(await this.init(),this.destroyed||!this.input)return null;let e=Math.max(0,Number.isFinite(t)?t:0);return this.isDecoding?(this.nextRequest&&this.nextRequest.resolve(null),new Promise((r,i)=>{this.nextRequest={timestampSec:e,resolve:r,reject:i}})):this.executeDecode(e)}async executeDecode(t){this.isDecoding=!0;try{return await this.performDecode(t)}finally{if(this.isDecoding=!1,this.nextRequest){let e=this.nextRequest;this.nextRequest=null,this.executeDecode(e.timestampSec).then(e.resolve).catch(e.reject)}}}async performDecodeHeadless(t,e){if(!this.videoSampleSink){if(this.destroyed||!this.input)return null;let h=await this.input.getPrimaryVideoTrack();if(!h)return null;this.videoSampleSink=new vt(h)}let r=1e-4;if((!this.iterator||t<this.iteratorStartTimestamp-r||this.headlessQueue.length>0&&t<this.headlessQueue[0].timestamp-.01||this.headlessQueue.length>0&&t-this.headlessQueue[0].timestamp>1)&&(await this.startIteratorHeadless(t,e),this.currentFetchId!==e||this.destroyed||!this.input))return null;for(;;){if(await this.fillHeadlessQueue(e),this.currentFetchId!==e||this.destroyed||!this.input)return null;if(this.headlessQueue.length>=2&&this.headlessQueue[1].timestamp<=t+r){this.headlessQueue.shift()?.close();continue}break}let s=this.headlessQueue[0];if(!s)return null;let a=s.displayWidth,o=s.displayHeight,l=a*o*4,u=this.decodeBuffer;return(!u||u.length!==l)&&(u=new Uint8Array(l),this.decodeBuffer=u),await s.copyTo(u,{format:"RGBA"}),this.currentFetchId!==e||this.destroyed||!this.input?null:(gt(u),{width:a,height:o,buffer:u})}async performDecodeInternal(t){this.currentFetchId++;let e=this.currentFetchId;if(this.isHeadless)return this.performDecodeHeadless(t,e);if(!this.canvasSink){if(this.destroyed||!this.input)return null;let a=await this.input.getPrimaryVideoTrack();if(!a)return null;this.canvasSink=new it(a,{poolSize:3,alpha:!0})}let r=1e-4;if((!this.iterator||t<this.iteratorStartTimestamp-r||this.currentFrame&&t<this.currentFrame.timestamp-.01||this.currentFrame&&t-this.currentFrame.timestamp>1)&&(await this.startIterator(t,e),this.currentFetchId!==e||this.destroyed||!this.input))return null;for(;this.nextFrame&&this.nextFrame.timestamp<=t+r;)if(this.currentFrame=this.nextFrame,this.nextFrame=null,this.iterator){let a=await this.iterator.next();if(this.currentFetchId!==e||this.destroyed||!this.input)return null;this.nextFrame=a.value??null}if(!this.currentFrame)return null;let s=this.currentFrame.canvas;return{width:s.width,height:s.height,canvas:s}}async performDecode(t){let e=Math.max(0,Number.isFinite(t)?t:0);try{return await this.performDecodeInternal(e)}catch(r){let i=r;if(i?.name==="InputDisposedError"||i?.message?.includes("disposed")||this.destroyed||!this.input)return null;this.resetSinks();try{if(!this.isHeadless&&this.input&&!this.destroyed){let n=await this.input.getPrimaryVideoTrack();if(n&&!this.destroyed)return this.canvasSink=new it(n,{poolSize:3,alpha:!0,decoderOptions:{hardwareAcceleration:"prefer-software"}}),await this.performDecodeInternal(e)}}catch{}throw r}}},nt=class extends I{audioSink=null;onDestroy(){this.audioSink=null}async startIterator(t,e){this.audioSink&&(this.iterator?.return(),this.iterator=this.audioSink.buffers(t),this.iteratorStartTimestamp=t)}async*getBuffers(t){try{if(await this.init(),this.destroyed||!this.input)return;if(!this.audioSink){let i=await this.input.getPrimaryAudioTrack();if(!i)return;this.audioSink=new bt(i)}(!this.iterator||Math.abs(t-this.iteratorStartTimestamp)>.05)&&(this.currentFetchId++,await this.startIterator(t,this.currentFetchId));let r=this.currentFetchId;if(!this.iterator)return;for await(let i of this.iterator){if(this.currentFetchId!==r||this.destroyed||!this.input)break;this.iteratorStartTimestamp=i.timestamp+i.duration,yield i}}catch(e){let r=e;if(r?.name==="InputDisposedError"||r?.message?.includes("disposed")||this.destroyed||!this.input)return;throw e}finally{let e=this.currentFetchId;this.currentFetchId===e&&(this.iterator=null)}}},at=class{videoDecoders=new Map;audioDecoders=new Map;lastAccessed=new Map;ticks=0;lastTick=new Map;touchKey(t){this.lastAccessed.set(t,Date.now()),this.lastTick.set(t,this.ticks)}dropKey(t){let e=this.videoDecoders.get(t);if(e){try{e.destroy()}catch{}this.videoDecoders.delete(t)}let r=this.audioDecoders.get(t);if(r){try{r.destroy()}catch{}this.audioDecoders.delete(t)}this.lastAccessed.delete(t),this.lastTick.delete(t)}tick(t=120){this.ticks++;for(let[e,r]of this.lastTick)this.ticks-r>t&&this.dropKey(e)}destroy(){for(let t of this.videoDecoders.values())try{t.destroy()}catch{}this.videoDecoders.clear();for(let t of this.audioDecoders.values())try{t.destroy()}catch{}this.audioDecoders.clear(),this.lastAccessed.clear(),this.lastTick.clear()}get size(){return this.videoDecoders.size+this.audioDecoders.size}prune(t=3e5){let e=Date.now();for(let[r,i]of this.lastAccessed.entries())e-i>t&&this.dropKey(r)}getVideo(t,e,r){let i=`${t}-${e}-${r??"default"}`,n=this.videoDecoders.get(i);return n||(n=new st(t,e),this.videoDecoders.set(i,n)),this.touchKey(i),this.prune(),n}getAudio(t,e){let r=`${t}-${e??"default"}`,i=this.audioDecoders.get(r);return i||(i=new nt(t,!1),this.audioDecoders.set(r,i)),this.touchKey(r),this.prune(),i}clearNode(t){let e=[...this.videoDecoders.keys(),...this.audioDecoders.keys()];for(let r of e)r.includes(t)&&this.dropKey(r)}},ee=new at;x();x();var Dt=`
2
2
  struct CompositeUniforms {
3
3
  blendMode : u32,
4
4
  padding1 : u32,
@@ -139,7 +139,7 @@ fn set_sat(c: vec3<f32>, s: f32) -> vec3<f32> {
139
139
 
140
140
  return vec4<f32>(out_rgb, out_a);
141
141
  }
142
- `;var Et=`
142
+ `;var Vt=`
143
143
  struct MotionBlur2DUniforms {
144
144
  vel: vec2<f32>,
145
145
  _pad: vec2<f32>,
@@ -183,7 +183,7 @@ fn fs(@builtin(position) pos: vec4<f32>) -> @location(0) vec4<f32> {
183
183
 
184
184
  return accum / max(totalWeight, 0.0001);
185
185
  }
186
- `,ut=class{textures=[];texturesByKey=new Map;index=0;getTexture(t,e,r,i,n){let s=new Set(Array.isArray(n)?n:n?[n]:[]),a=`${e}x${r}:${i}`,o=this.texturesByKey.get(a);if(o)for(let u=0;u<o.length;u++){let h=o[u];if(!s.has(h)){o.splice(u,1),o.unshift(h);let p=this.textures.indexOf(h);return p>=this.index&&(this.textures.splice(p,1),this.textures.splice(this.index,0,h),this.index++),h}}let l=t.createTexture({size:[e,r],format:i,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC});return this.texturesByKey.has(a)||this.texturesByKey.set(a,[]),this.texturesByKey.get(a).unshift(l),this.textures.splice(this.index,0,l),this.index++,l}reset(){this.index=0}destroy(){for(let t of this.textures)t.destroy();this.textures=[],this.texturesByKey.clear(),this.index=0}},Vt={normal:0,"source-over":0,multiply:1,screen:2,overlay:3,darken:4,lighten:5,"color-dodge":6,"color-burn":7,"hard-light":8,"soft-light":9,difference:10,exclusion:11,hue:12,saturation:13,color:14,luminosity:15,"mask-in":16,"destination-in":16,"mask-out":17,"destination-out":17,"source-in":18,"source-out":19,"source-atop":20,"destination-over":21,"destination-atop":22,lighter:23,copy:24,xor:25,"luma-in":26,"luma-out":27},E=class{device;compositeUniformLayout;dualTextureLayout;motionBlurUniformLayout;singleTextureLayout;compositePipeline;motionBlurPipeline;compositePool;motionBlurPool;texturePool;compositeUniformBindGroupCache=new U;motionBlurUniformBindGroupCache=new U;compositeData=new Uint32Array(4);motionBlurData=new Float32Array(8);constructor(t,e){this.device=t,this.compositePool=new G(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.motionBlurPool=new G(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.texturePool=new ut,this.compositeUniformLayout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.dualTextureLayout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),this.motionBlurUniformLayout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.singleTextureLayout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]});let r=t.createPipelineLayout({bindGroupLayouts:[this.compositeUniformLayout,this.dualTextureLayout]}),i=t.createShaderModule({label:"composite.wgsl",code:Bt});this.compositePipeline=t.createRenderPipeline({label:"CompositePipeline",layout:r,vertex:{module:i,entryPoint:"vs"},fragment:{module:i,entryPoint:"fs",targets:[{format:e}]},primitive:{topology:"triangle-strip"}});let n=t.createPipelineLayout({bindGroupLayouts:[this.motionBlurUniformLayout,this.singleTextureLayout]}),s=t.createShaderModule({label:"motion-blur-2d.wgsl",code:Et});this.motionBlurPipeline=t.createRenderPipeline({label:"MotionBlurPipeline",layout:n,vertex:{module:s,entryPoint:"vs"},fragment:{module:s,entryPoint:"fs",targets:[{format:e}]},primitive:{topology:"triangle-list"}})}resetPools(){this.compositePool.reset(),this.motionBlurPool.reset(),this.texturePool.reset()}getTexture(t,e,r,i,n){return this.texturePool.getTexture(t,e,r,i,n)}getBuffer(t,e){return this.compositePool.getBuffer(t,e)}composite(t,e,r,i,n,s,a,o){let l=r.getSampler(this.device),u=[i,n];o&&(Array.isArray(o)?u.push(...o):u.push(o));let h=this.texturePool.getTexture(this.device,i.width,i.height,a,u);this.compositeData[0]=Vt[s]??0;let p=this.compositePool.getBuffer(this.device,this.compositeData),d=t.beginRenderPass({colorAttachments:[{view:h.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});d.setPipeline(this.compositePipeline);let f=this.compositeUniformBindGroupCache.getBindGroup(this.device,this.compositeUniformLayout,p);d.setBindGroup(0,f);let m=e.getCompositeBindGroup(this.device,this.dualTextureLayout,i,n,l);return d.setBindGroup(1,m),d.draw(4),d.end(),h}applyMotionBlur(t,e,r,i,n,s,a=180,o=16,l,u){if(Math.abs(n)<.1&&Math.abs(s)<.1||a<=0)return i;let h=r.getSampler(this.device),p=[i];u&&(Array.isArray(u)?p.push(...u):p.push(u));let d=this.texturePool.getTexture(this.device,i.width,i.height,l,p);this.motionBlurData[0]=n/i.width,this.motionBlurData[1]=s/i.height,this.motionBlurData[2]=0,this.motionBlurData[3]=0,this.motionBlurData[4]=a/360,this.motionBlurData[5]=o,this.motionBlurData[6]=i.width,this.motionBlurData[7]=i.height;let f=this.motionBlurPool.getBuffer(this.device,this.motionBlurData),m=t.beginRenderPass({colorAttachments:[{view:d.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});m.setPipeline(this.motionBlurPipeline);let y=this.motionBlurUniformBindGroupCache.getBindGroup(this.device,this.motionBlurUniformLayout,f);return m.setBindGroup(0,y),m.setBindGroup(1,e.getBindGroup(this.device,this.singleTextureLayout,i,h)),m.draw(3),m.end(),d}destroy(){this.compositePool.destroy(),this.motionBlurPool.destroy(),this.texturePool.destroy(),this.compositeUniformBindGroupCache.destroy(),this.motionBlurUniformBindGroupCache.destroy()}};x();x();var V=class{cache=new WeakMap;dualCache=new WeakMap;getBindGroup(t,e,r,i){let n=this.cache.get(r);n||(n=new Map,this.cache.set(r,n));let s=n.get(e);return s||(s=t.createBindGroup({layout:e,entries:[{binding:0,resource:r.createView()},{binding:1,resource:i}]}),n.set(e,s)),s}getCompositeBindGroup(t,e,r,i,n){let s=this.dualCache.get(r);s||(s=new WeakMap,this.dualCache.set(r,s));let a=s.get(i);a||(a=new Map,s.set(i,a));let o=a.get(e);return o||(o=t.createBindGroup({layout:e,entries:[{binding:0,resource:r.createView()},{binding:1,resource:i.createView()},{binding:2,resource:n}]}),a.set(e,o)),o}destroy(){this.cache=new WeakMap,this.dualCache=new WeakMap}};x();var W=class{scissorStack=[];stencilStack=[];pushScissor(t,e,r){this.scissorStack.push({rect:t,surfaceWidth:e,surfaceHeight:r})}popScissor(){this.scissorStack.length>0&&this.scissorStack.pop()}saveScissors(){return[...this.scissorStack]}restoreScissors(t){this.scissorStack=[...t]}clearScissors(){this.scissorStack=[]}getCurrentScissor(t,e){let r=this.scissorStack[this.scissorStack.length-1];if(r&&!(t!==void 0&&e!==void 0&&r.surfaceWidth!==void 0&&r.surfaceHeight!==void 0&&r.surfaceWidth!==0&&r.surfaceHeight!==0&&(r.surfaceWidth!==t||r.surfaceHeight!==e)))return r.rect}pushStencilClip(t){this.stencilStack.push(t)}popStencilClip(){this.stencilStack.length>0&&this.stencilStack.pop()}getCurrentStencil(){return this.stencilStack[this.stencilStack.length-1]}applyScissorToPass(t,e,r){let i=this.getCurrentScissor(e,r);if(!i){t.setScissorRect(0,0,Math.max(1,Math.floor(e)),Math.max(1,Math.floor(r)));return}let n=Math.max(0,Math.floor(i.x)),s=Math.max(0,Math.floor(i.y)),a=Math.min(e,Math.ceil(i.x+i.width)),o=Math.min(r,Math.ceil(i.y+i.height)),l=Math.max(0,a-n),u=Math.max(0,o-s);if(!Number.isFinite(n)||!Number.isFinite(s)||!Number.isFinite(l)||!Number.isFinite(u)||l<=0||u<=0)t.setScissorRect(0,0,1,1);else{let h=Math.min(l,Math.max(0,e-n)),p=Math.min(u,Math.max(0,r-s));h<=0||p<=0?t.setScissorRect(0,0,1,1):t.setScissorRect(Math.floor(n),Math.floor(s),Math.floor(h),Math.floor(p))}}destroy(){this.scissorStack=[],this.stencilStack=[]}};x();function Dt(c,t,e,r,i=24){let n=[],s=c;for(let a=1;a<=i;a++){let o=a/i,l=1-o,u=l*l,h=u*l,p=o*o,d=p*o,f={x:h*c.x+3*u*o*t.x+3*l*p*e.x+d*r.x,y:h*c.y+3*u*o*t.y+3*l*p*e.y+d*r.y};n.push({p0:s,p1:f}),s=f}return n}function Ct(c,t,e,r=16){let i=[],n=c;for(let s=1;s<=r;s++){let a=s/r,o=1-a,l=o*o,u=a*a,h={x:l*c.x+2*o*a*t.x+u*e.x,y:l*c.y+2*o*a*t.y+u*e.y};i.push({p0:n,p1:h}),n=h}return i}function Wt(c,t,e,r,i,n,s){let a=Math.abs(t),o=Math.abs(e);if(a<1e-9||o<1e-9)return[{p0:c,p1:s}];if(Math.hypot(s.x-c.x,s.y-c.y)<1e-9)return[];let l=r*Math.PI/180,u=Math.cos(l),h=Math.sin(l),p=(c.x-s.x)/2,d=(c.y-s.y)/2,f=u*p+h*d,m=-h*p+u*d,y=f*f/(a*a)+m*m/(o*o);y>1&&(a*=Math.sqrt(y),o*=Math.sqrt(y));let g=a*a*o*o-a*a*m*m-o*o*f*f,v=a*a*m*m+o*o*f*f,b=(i===n?-1:1)*Math.sqrt(Math.max(0,g/v)),P=b*a*m/o,S=-b*o*f/a,M=u*P-h*S+(c.x+s.x)/2,F=h*P+u*S+(c.y+s.y)/2,tt=(k,_,R,L)=>Math.atan2(k*L-_*R,k*R+_*L),et=tt(1,0,(f-P)/a,(m-S)/o),B=tt((f-P)/a,(m-S)/o,(-f-P)/a,(-m-S)/o);!n&&B>0&&(B-=2*Math.PI),n&&B<0&&(B+=2*Math.PI);let rt=Math.max(4,Math.ceil(Math.abs(B)/(2*Math.PI)*64)),ft=[],dt=c;for(let k=1;k<=rt;k++){let _=et+B*k/rt,R=a*Math.cos(_),L=o*Math.sin(_),mt=k===rt?s:{x:u*R-h*L+M,y:h*R+u*L+F};ft.push({p0:dt,p1:mt}),dt=mt}return ft}function z(c){let t=[];if(!c||typeof c!="string")return t;let e=[],r=/([a-df-z])|([-+]?(?:\d*\.\d+|\d+)(?:[eE][-+]?\d+)?)/gi,i;for(;(i=r.exec(c))!==null;)i[1]?e.push(i[1]):i[2]&&e.push(parseFloat(i[2]));let n=0,s={x:0,y:0},a={x:0,y:0},o=null,l=null;for(;n<e.length;){let u=e[n++];if(typeof u!="string")continue;let h=u,p=h===h.toLowerCase(),d=h.toUpperCase(),f=()=>n<e.length&&typeof e[n]=="number"?e[n++]:0;switch(d){case"M":{let m=!0;for(;n<e.length&&typeof e[n]=="number";){let y=f(),g=f();p&&(y+=s.x,g+=s.y),m?(s={x:y,y:g},a={x:y,y:g},m=!1):(t.push({p0:s,p1:{x:y,y:g}}),s={x:y,y:g})}o=null,l=null;break}case"L":{for(;n<e.length&&typeof e[n]=="number";){let m=f(),y=f();p&&(m+=s.x,y+=s.y),t.push({p0:s,p1:{x:m,y}}),s={x:m,y}}o=null,l=null;break}case"H":{for(;n<e.length&&typeof e[n]=="number";){let m=f();p&&(m+=s.x);let y={x:m,y:s.y};t.push({p0:s,p1:y}),s=y}o=null,l=null;break}case"V":{for(;n<e.length&&typeof e[n]=="number";){let m=f();p&&(m+=s.y);let y={x:s.x,y:m};t.push({p0:s,p1:y}),s=y}o=null,l=null;break}case"C":{for(;n<e.length&&typeof e[n]=="number";){let m=f(),y=f(),g=f(),v=f(),b=f(),P=f();p&&(m+=s.x,y+=s.y,g+=s.x,v+=s.y,b+=s.x,P+=s.y);let S={x:m,y},M={x:g,y:v},F={x:b,y:P};t.push(...Dt(s,S,M,F)),s=F,o=M}l=null;break}case"S":{for(;n<e.length&&typeof e[n]=="number";){let m=f(),y=f(),g=f(),v=f();p&&(m+=s.x,y+=s.y,g+=s.x,v+=s.y);let b;o?b={x:2*s.x-o.x,y:2*s.y-o.y}:b={x:s.x,y:s.y};let P={x:m,y},S={x:g,y:v};t.push(...Dt(s,b,P,S)),s=S,o=P}l=null;break}case"Q":{for(;n<e.length&&typeof e[n]=="number";){let m=f(),y=f(),g=f(),v=f();p&&(m+=s.x,y+=s.y,g+=s.x,v+=s.y);let b={x:m,y},P={x:g,y:v};t.push(...Ct(s,b,P)),s=P,l=b}o=null;break}case"T":{for(;n<e.length&&typeof e[n]=="number";){let m=f(),y=f();p&&(m+=s.x,y+=s.y);let g;l?g={x:2*s.x-l.x,y:2*s.y-l.y}:g={x:s.x,y:s.y};let v={x:m,y};t.push(...Ct(s,g,v)),s=v,l=g}o=null;break}case"A":{for(;n<e.length&&typeof e[n]=="number";){let m=f(),y=f(),g=f(),v=f()!==0,b=f()!==0,P=f(),S=f();p&&(P+=s.x,S+=s.y);let M={x:P,y:S};t.push(...Wt(s,m,y,g,v,b,M)),s=M}o=null,l=null;break}case"Z":{Math.hypot(s.x-a.x,s.y-a.y)>1e-5&&t.push({p0:s,p1:a}),s=a,o=null,l=null;break}default:break}}return t}function j(c,t,e,r=0){if(c.length===0)return[];let i=[],n=0;for(let u of c){let h=Math.hypot(u.p1.x-u.p0.x,u.p1.y-u.p0.y);i.push(h),n+=h}if(n<1e-6)return[];let s=Math.abs(r)>1?r%360/360:r,a=(t+s)%1,o=(e+s)%1;a<0&&(a+=1),o<0&&(o+=1);let l=(u,h)=>{if(u>=h)return[];let p=[],d=0;for(let f=0;f<c.length;f++){let m=c[f],y=i[f],g=d,v=d+y;if(d=v,v<=u||g>=h||y<1e-6)continue;let b=Math.max(0,(u-g)/y),P=Math.min(1,(h-g)/y);if(P>b){let S={x:m.p0.x+(m.p1.x-m.p0.x)*b,y:m.p0.y+(m.p1.y-m.p0.y)*b},M={x:m.p0.x+(m.p1.x-m.p0.x)*P,y:m.p0.y+(m.p1.y-m.p0.y)*P};p.push({p0:S,p1:M})}}return p};if(t===0&&e===1&&r===0)return[...c];if(Math.abs(a-o)<1e-5)return[];if(a<=o)return l(a*n,o*n);{let u=l(a*n,n),h=l(0,o*n);return[...u,...h]}}function ct(c,t,e=0){if(c.length===0||t.length===0)return c;let r=0;for(let d of t)r+=d;if(r<1e-5)return c;let i=0,n=[];for(let d of c){let f=Math.hypot(d.p1.x-d.p0.x,d.p1.y-d.p0.y);n.push(f),i+=f}let s=[],a=(e%r+r)%r,o=0,l=!0,u=a;for(;u>t[o];)u-=t[o],o=(o+1)%t.length,l=!l;let h=t[o]-u,p=0;for(;p<i;){let d=Math.min(h,i-p);if(l&&d>1e-4){let f=j(c,p/i,(p+d)/i);s.push(...f)}p+=d,o=(o+1)%t.length,l=!l,h=t[o]}return s}function Tt(c,t,e=0,r=0,i=0,n=0){let s=Math.min(c/2,t/2),a=Math.min(e,s),o=Math.min(r,s),l=Math.min(i,s),u=Math.min(n,s);return a===0&&o===0&&l===0&&u===0?`M 0 0 L ${c} 0 L ${c} ${t} L 0 ${t} Z`:[`M ${a} 0`,`L ${c-o} 0`,o>0?`Q ${c} 0 ${c} ${o}`:`L ${c} 0`,`L ${c} ${t-l}`,l>0?`Q ${c} ${t} ${c-l} ${t}`:`L ${c} ${t}`,`L ${u} ${t}`,u>0?`Q 0 ${t} 0 ${t-u}`:`L 0 ${t}`,`L 0 ${a}`,a>0?`Q 0 0 ${a} 0`:"L 0 0","Z"].join(" ")}function zt(c,t){let e=Math.min(c,t)/2,r=c/2,i=t/2,n=e*.5522847498;return[`M ${r} ${i-e}`,`C ${r+n} ${i-e} ${r+e} ${i-n} ${r+e} ${i}`,`C ${r+e} ${i+n} ${r+n} ${i+e} ${r} ${i+e}`,`C ${r-n} ${i+e} ${r-e} ${i+n} ${r-e} ${i}`,`C ${r-e} ${i-n} ${r-n} ${i-e} ${r} ${i-e}`,"Z"].join(" ")}function jt(c,t){let e=c/2,r=t/2,i=e,n=r,s=e*.5522847498,a=r*.5522847498;return[`M ${i} ${n-r}`,`C ${i+s} ${n-r} ${i+e} ${n-a} ${i+e} ${n}`,`C ${i+e} ${n+a} ${i+s} ${n+r} ${i} ${n+r}`,`C ${i-s} ${n+r} ${i-e} ${n+a} ${i-e} ${n}`,`C ${i-e} ${n-a} ${i-s} ${n-r} ${i} ${n-r}`,"Z"].join(" ")}function Ht(c,t,e=5){let r=Math.max(3,e),i=Math.min(c,t)/2,n=c/2,s=t/2,a=[];for(let o=0;o<r;o++){let l=-Math.PI/2+o*2*Math.PI/r;a.push({x:n+i*Math.cos(l),y:s+i*Math.sin(l)})}return a.map((o,l)=>`${l===0?"M":"L"} ${o.x} ${o.y}`).join(" ")+" Z"}function Nt(c,t,e=5,r=.5){let i=Math.max(3,e),n=Math.min(c,t)/2,s=n*Math.max(.01,Math.min(.99,r)),a=c/2,o=t/2,l=[];for(let u=0;u<i*2;u++){let h=-Math.PI/2+u*Math.PI/i,p=u%2===0?n:s;l.push({x:a+p*Math.cos(h),y:o+p*Math.sin(h)})}return l.map((u,h)=>`${h===0?"M":"L"} ${u.x} ${u.y}`).join(" ")+" Z"}function qt(c,t,e=40,r=40,i=20){let n=Math.min(e,t),s=Math.min(r,c),a=Math.min(i,n),o=t/2;return[`M 0 ${o-a/2}`,`L ${c-s} ${o-a/2}`,`L ${c-s} ${o-n/2}`,`L ${c} ${o}`,`L ${c-s} ${o+n/2}`,`L ${c-s} ${o+a/2}`,`L 0 ${o+a/2}`,"Z"].join(" ")}function lt(c){let{shapeType:t,width:e,height:r}=c;switch(t){case"rect":return Tt(e,r,c.cornerRadius??0,c.cornerRadius??0,c.cornerRadius??0,c.cornerRadius??0);case"circle":return zt(e,r);case"ellipse":return jt(e,r);case"polygon":return Ht(e,r,c.polygonSides??5);case"star":return Nt(e,r,c.starPoints??5,c.starInnerRadiusRatio??.5);case"arrow":return qt(e,r,c.arrowHeadWidth??40,c.arrowHeadLength??40,c.arrowShaftWidth??20);case"path":return c.path??"";default:return""}}function kt(c){if(c.length<3)return[];if(c.length===3)return[c[0],c[1],c[2]];let t=[...c],e=t[t.length-1],r=t[0];if(Math.hypot(e.x-r.x,e.y-r.y)<1e-5&&t.pop(),t.length<3)return[];let i=0;for(let h=0;h<t.length;h++){let p=(h+1)%t.length;i+=t[h].x*t[p].y-t[p].x*t[h].y}i<0&&t.reverse();let n=(h,p,d,f)=>{let m=(d.x-p.x)*(h.y-p.y)-(d.y-p.y)*(h.x-p.x),y=(f.x-d.x)*(h.y-d.y)-(f.y-d.y)*(h.x-d.x),g=(p.x-f.x)*(h.y-f.y)-(p.y-f.y)*(h.x-f.x);return m>=-1e-6&&y>=-1e-6&&g>=-1e-6},s=(h,p,d,f)=>{if((p.x-h.x)*(d.y-h.y)-(p.y-h.y)*(d.x-h.x)<=1e-7)return!1;for(let y of f)if(!(y===h||y===p||y===d)&&n(y,h,p,d))return!1;return!0},a=[],o=[...t],l=0,u=o.length*o.length*2;for(;o.length>3&&l<u;){l++;let h=!1;for(let p=0;p<o.length;p++){let d=o[(p-1+o.length)%o.length],f=o[p],m=o[(p+1)%o.length];if(s(d,f,m,o)){a.push(d,f,m),o.splice(p,1),h=!0;break}}h||(a.push(o[0],o[1],o[2]),o.splice(1,1))}return o.length===3&&a.push(o[0],o[1],o[2]),a}function Ft(c){let{shapeType:t,width:e,height:r}=c;if(t==="rect"){let i=c.cornerRadius??0;if(i<=0)return new Float32Array([0,0,e,0,e,r,0,0,e,r,0,r]);let n=Tt(e,r,i,i,i,i),a=z(n).map(u=>u.p0),o=kt(a),l=new Float32Array(o.length*2);for(let u=0;u<o.length;u++)l[u*2]=o[u].x,l[u*2+1]=o[u].y;return l}if(t==="circle"||t==="ellipse"){let i=e/2,n=r/2,s=t==="circle"?Math.min(e,r)/2:e/2,a=t==="circle"?s:r/2,o=48,l=new Float32Array(o*3*2),u=0;for(let h=0;h<o;h++){let p=h*2*Math.PI/o,d=(h+1)*2*Math.PI/o;l[u++]=i,l[u++]=n,l[u++]=i+s*Math.cos(p),l[u++]=n+a*Math.sin(p),l[u++]=i+s*Math.cos(d),l[u++]=n+a*Math.sin(d)}return l}if(t==="polygon"){let i=Math.max(3,c.polygonSides??5),n=Math.min(e,r)/2,s=e/2,a=r/2,o=new Float32Array(i*3*2),l=0;for(let u=0;u<i;u++){let h=-Math.PI/2+u*2*Math.PI/i,p=-Math.PI/2+(u+1)*2*Math.PI/i;o[l++]=s,o[l++]=a,o[l++]=s+n*Math.cos(h),o[l++]=a+n*Math.sin(h),o[l++]=s+n*Math.cos(p),o[l++]=a+n*Math.sin(p)}return o}if(t==="star"){let i=Math.max(3,c.starPoints??5),n=Math.min(e,r)/2,s=n*Math.max(.01,Math.min(.99,c.starInnerRadiusRatio??.5)),a=e/2,o=r/2,l=i*2,u=new Float32Array(l*3*2),h=0;for(let p=0;p<l;p++){let d=-Math.PI/2+p*Math.PI/i,f=-Math.PI/2+(p+1)*Math.PI/i,m=p%2===0?n:s,y=(p+1)%2===0?n:s;u[h++]=a,u[h++]=o,u[h++]=a+m*Math.cos(d),u[h++]=o+m*Math.sin(d),u[h++]=a+y*Math.cos(f),u[h++]=o+y*Math.sin(f)}return u}if(t==="arrow"){let i=Math.min(c.arrowHeadWidth??40,r),n=Math.min(c.arrowHeadLength??40,e),s=Math.min(c.arrowShaftWidth??20,i),a=r/2,o=0,l=e-n,u=e,h=a-s/2,p=a+s/2,d=a-i/2,f=a+i/2;return new Float32Array([o,h,l,h,l,p,o,h,l,p,o,p,l,d,u,a,l,f])}if(t==="path"&&c.path){let i=z(c.path);if(i.length===0)return new Float32Array(0);let n=i.map(o=>o.p0),s=kt(n),a=new Float32Array(s.length*2);for(let o=0;o<s.length;o++)a[o*2]=s[o].x,a[o*2+1]=s[o].y;return a}return new Float32Array(0)}x();x();var _t=`
186
+ `,ut=class{textures=[];texturesByKey=new Map;index=0;getTexture(t,e,r,i,n){let s=new Set(Array.isArray(n)?n:n?[n]:[]),a=`${e}x${r}:${i}`,o=this.texturesByKey.get(a);if(o)for(let u=0;u<o.length;u++){let h=o[u];if(!s.has(h)){o.splice(u,1),o.unshift(h);let p=this.textures.indexOf(h);return p>=this.index&&(this.textures.splice(p,1),this.textures.splice(this.index,0,h),this.index++),h}}let l=t.createTexture({size:[e,r],format:i,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC});return this.texturesByKey.has(a)||this.texturesByKey.set(a,[]),this.texturesByKey.get(a).unshift(l),this.textures.splice(this.index,0,l),this.index++,l}reset(){this.index=0}destroy(){for(let t of this.textures)t.destroy();this.textures=[],this.texturesByKey.clear(),this.index=0}},Wt={normal:0,"source-over":0,multiply:1,screen:2,overlay:3,darken:4,lighten:5,"color-dodge":6,"color-burn":7,"hard-light":8,"soft-light":9,difference:10,exclusion:11,hue:12,saturation:13,color:14,luminosity:15,"mask-in":16,"destination-in":16,"mask-out":17,"destination-out":17,"source-in":18,"source-out":19,"source-atop":20,"destination-over":21,"destination-atop":22,lighter:23,copy:24,xor:25,"luma-in":26,"luma-out":27},E=class{device;compositeUniformLayout;dualTextureLayout;motionBlurUniformLayout;singleTextureLayout;compositePipeline;motionBlurPipeline;compositePool;motionBlurPool;texturePool;compositeUniformBindGroupCache=new U;motionBlurUniformBindGroupCache=new U;compositeData=new Uint32Array(4);motionBlurData=new Float32Array(8);constructor(t,e){this.device=t,this.compositePool=new G(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.motionBlurPool=new G(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.texturePool=new ut,this.compositeUniformLayout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.dualTextureLayout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),this.motionBlurUniformLayout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.singleTextureLayout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]});let r=t.createPipelineLayout({bindGroupLayouts:[this.compositeUniformLayout,this.dualTextureLayout]}),i=t.createShaderModule({label:"composite.wgsl",code:Dt});this.compositePipeline=t.createRenderPipeline({label:"CompositePipeline",layout:r,vertex:{module:i,entryPoint:"vs"},fragment:{module:i,entryPoint:"fs",targets:[{format:e}]},primitive:{topology:"triangle-strip"}});let n=t.createPipelineLayout({bindGroupLayouts:[this.motionBlurUniformLayout,this.singleTextureLayout]}),s=t.createShaderModule({label:"motion-blur-2d.wgsl",code:Vt});this.motionBlurPipeline=t.createRenderPipeline({label:"MotionBlurPipeline",layout:n,vertex:{module:s,entryPoint:"vs"},fragment:{module:s,entryPoint:"fs",targets:[{format:e}]},primitive:{topology:"triangle-list"}})}resetPools(){this.compositePool.reset(),this.motionBlurPool.reset(),this.texturePool.reset()}getTexture(t,e,r,i,n){return this.texturePool.getTexture(t,e,r,i,n)}getBuffer(t,e){return this.compositePool.getBuffer(t,e)}composite(t,e,r,i,n,s,a,o){let l=r.getSampler(this.device),u=[i,n];o&&(Array.isArray(o)?u.push(...o):u.push(o));let h=this.texturePool.getTexture(this.device,i.width,i.height,a,u);this.compositeData[0]=Wt[s]??0;let p=this.compositePool.getBuffer(this.device,this.compositeData),d=t.beginRenderPass({colorAttachments:[{view:h.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});d.setPipeline(this.compositePipeline);let f=this.compositeUniformBindGroupCache.getBindGroup(this.device,this.compositeUniformLayout,p);d.setBindGroup(0,f);let m=e.getCompositeBindGroup(this.device,this.dualTextureLayout,i,n,l);return d.setBindGroup(1,m),d.draw(4),d.end(),h}applyMotionBlur(t,e,r,i,n,s,a=180,o=16,l,u){if(Math.abs(n)<.1&&Math.abs(s)<.1||a<=0)return i;let h=r.getSampler(this.device),p=[i];u&&(Array.isArray(u)?p.push(...u):p.push(u));let d=this.texturePool.getTexture(this.device,i.width,i.height,l,p);this.motionBlurData[0]=n/i.width,this.motionBlurData[1]=s/i.height,this.motionBlurData[2]=0,this.motionBlurData[3]=0,this.motionBlurData[4]=a/360,this.motionBlurData[5]=o,this.motionBlurData[6]=i.width,this.motionBlurData[7]=i.height;let f=this.motionBlurPool.getBuffer(this.device,this.motionBlurData),m=t.beginRenderPass({colorAttachments:[{view:d.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});m.setPipeline(this.motionBlurPipeline);let y=this.motionBlurUniformBindGroupCache.getBindGroup(this.device,this.motionBlurUniformLayout,f);return m.setBindGroup(0,y),m.setBindGroup(1,e.getBindGroup(this.device,this.singleTextureLayout,i,h)),m.draw(3),m.end(),d}destroy(){this.compositePool.destroy(),this.motionBlurPool.destroy(),this.texturePool.destroy(),this.compositeUniformBindGroupCache.destroy(),this.motionBlurUniformBindGroupCache.destroy()}};x();x();var V=class{cache=new WeakMap;dualCache=new WeakMap;getBindGroup(t,e,r,i){let n=this.cache.get(r);n||(n=new Map,this.cache.set(r,n));let s=n.get(e);return s||(s=t.createBindGroup({layout:e,entries:[{binding:0,resource:r.createView()},{binding:1,resource:i}]}),n.set(e,s)),s}getCompositeBindGroup(t,e,r,i,n){let s=this.dualCache.get(r);s||(s=new WeakMap,this.dualCache.set(r,s));let a=s.get(i);a||(a=new Map,s.set(i,a));let o=a.get(e);return o||(o=t.createBindGroup({layout:e,entries:[{binding:0,resource:r.createView()},{binding:1,resource:i.createView()},{binding:2,resource:n}]}),a.set(e,o)),o}destroy(){this.cache=new WeakMap,this.dualCache=new WeakMap}};x();var W=class{scissorStack=[];stencilStack=[];pushScissor(t,e,r){this.scissorStack.push({rect:t,surfaceWidth:e,surfaceHeight:r})}popScissor(){this.scissorStack.length>0&&this.scissorStack.pop()}saveScissors(){return[...this.scissorStack]}restoreScissors(t){this.scissorStack=[...t]}clearScissors(){this.scissorStack=[]}getCurrentScissor(t,e){let r=this.scissorStack[this.scissorStack.length-1];if(r&&!(t!==void 0&&e!==void 0&&r.surfaceWidth!==void 0&&r.surfaceHeight!==void 0&&r.surfaceWidth!==0&&r.surfaceHeight!==0&&(r.surfaceWidth!==t||r.surfaceHeight!==e)))return r.rect}pushStencilClip(t){this.stencilStack.push(t)}popStencilClip(){this.stencilStack.length>0&&this.stencilStack.pop()}getCurrentStencil(){return this.stencilStack[this.stencilStack.length-1]}applyScissorToPass(t,e,r){let i=this.getCurrentScissor(e,r);if(!i){t.setScissorRect(0,0,Math.max(1,Math.floor(e)),Math.max(1,Math.floor(r)));return}let n=Math.max(0,Math.floor(i.x)),s=Math.max(0,Math.floor(i.y)),a=Math.min(e,Math.ceil(i.x+i.width)),o=Math.min(r,Math.ceil(i.y+i.height)),l=Math.max(0,a-n),u=Math.max(0,o-s);if(!Number.isFinite(n)||!Number.isFinite(s)||!Number.isFinite(l)||!Number.isFinite(u)||l<=0||u<=0)t.setScissorRect(0,0,1,1);else{let h=Math.min(l,Math.max(0,e-n)),p=Math.min(u,Math.max(0,r-s));h<=0||p<=0?t.setScissorRect(0,0,1,1):t.setScissorRect(Math.floor(n),Math.floor(s),Math.floor(h),Math.floor(p))}}destroy(){this.scissorStack=[],this.stencilStack=[]}};x();function Ct(c,t,e,r,i=24){let n=[],s=c;for(let a=1;a<=i;a++){let o=a/i,l=1-o,u=l*l,h=u*l,p=o*o,d=p*o,f={x:h*c.x+3*u*o*t.x+3*l*p*e.x+d*r.x,y:h*c.y+3*u*o*t.y+3*l*p*e.y+d*r.y};n.push({p0:s,p1:f}),s=f}return n}function kt(c,t,e,r=16){let i=[],n=c;for(let s=1;s<=r;s++){let a=s/r,o=1-a,l=o*o,u=a*a,h={x:l*c.x+2*o*a*t.x+u*e.x,y:l*c.y+2*o*a*t.y+u*e.y};i.push({p0:n,p1:h}),n=h}return i}function zt(c,t,e,r,i,n,s){let a=Math.abs(t),o=Math.abs(e);if(a<1e-9||o<1e-9)return[{p0:c,p1:s}];if(Math.hypot(s.x-c.x,s.y-c.y)<1e-9)return[];let l=r*Math.PI/180,u=Math.cos(l),h=Math.sin(l),p=(c.x-s.x)/2,d=(c.y-s.y)/2,f=u*p+h*d,m=-h*p+u*d,y=f*f/(a*a)+m*m/(o*o);y>1&&(a*=Math.sqrt(y),o*=Math.sqrt(y));let g=a*a*o*o-a*a*m*m-o*o*f*f,v=a*a*m*m+o*o*f*f,b=(i===n?-1:1)*Math.sqrt(Math.max(0,g/v)),P=b*a*m/o,S=-b*o*f/a,M=u*P-h*S+(c.x+s.x)/2,F=h*P+u*S+(c.y+s.y)/2,tt=(k,_,R,L)=>Math.atan2(k*L-_*R,k*R+_*L),et=tt(1,0,(f-P)/a,(m-S)/o),B=tt((f-P)/a,(m-S)/o,(-f-P)/a,(-m-S)/o);!n&&B>0&&(B-=2*Math.PI),n&&B<0&&(B+=2*Math.PI);let rt=Math.max(4,Math.ceil(Math.abs(B)/(2*Math.PI)*64)),ft=[],dt=c;for(let k=1;k<=rt;k++){let _=et+B*k/rt,R=a*Math.cos(_),L=o*Math.sin(_),mt=k===rt?s:{x:u*R-h*L+M,y:h*R+u*L+F};ft.push({p0:dt,p1:mt}),dt=mt}return ft}function z(c){let t=[];if(!c||typeof c!="string")return t;let e=[],r=/([a-df-z])|([-+]?(?:\d*\.\d+|\d+)(?:[eE][-+]?\d+)?)/gi,i;for(;(i=r.exec(c))!==null;)i[1]?e.push(i[1]):i[2]&&e.push(parseFloat(i[2]));let n=0,s={x:0,y:0},a={x:0,y:0},o=null,l=null;for(;n<e.length;){let u=e[n++];if(typeof u!="string")continue;let h=u,p=h===h.toLowerCase(),d=h.toUpperCase(),f=()=>n<e.length&&typeof e[n]=="number"?e[n++]:0;switch(d){case"M":{let m=!0;for(;n<e.length&&typeof e[n]=="number";){let y=f(),g=f();p&&(y+=s.x,g+=s.y),m?(s={x:y,y:g},a={x:y,y:g},m=!1):(t.push({p0:s,p1:{x:y,y:g}}),s={x:y,y:g})}o=null,l=null;break}case"L":{for(;n<e.length&&typeof e[n]=="number";){let m=f(),y=f();p&&(m+=s.x,y+=s.y),t.push({p0:s,p1:{x:m,y}}),s={x:m,y}}o=null,l=null;break}case"H":{for(;n<e.length&&typeof e[n]=="number";){let m=f();p&&(m+=s.x);let y={x:m,y:s.y};t.push({p0:s,p1:y}),s=y}o=null,l=null;break}case"V":{for(;n<e.length&&typeof e[n]=="number";){let m=f();p&&(m+=s.y);let y={x:s.x,y:m};t.push({p0:s,p1:y}),s=y}o=null,l=null;break}case"C":{for(;n<e.length&&typeof e[n]=="number";){let m=f(),y=f(),g=f(),v=f(),b=f(),P=f();p&&(m+=s.x,y+=s.y,g+=s.x,v+=s.y,b+=s.x,P+=s.y);let S={x:m,y},M={x:g,y:v},F={x:b,y:P};t.push(...Ct(s,S,M,F)),s=F,o=M}l=null;break}case"S":{for(;n<e.length&&typeof e[n]=="number";){let m=f(),y=f(),g=f(),v=f();p&&(m+=s.x,y+=s.y,g+=s.x,v+=s.y);let b;o?b={x:2*s.x-o.x,y:2*s.y-o.y}:b={x:s.x,y:s.y};let P={x:m,y},S={x:g,y:v};t.push(...Ct(s,b,P,S)),s=S,o=P}l=null;break}case"Q":{for(;n<e.length&&typeof e[n]=="number";){let m=f(),y=f(),g=f(),v=f();p&&(m+=s.x,y+=s.y,g+=s.x,v+=s.y);let b={x:m,y},P={x:g,y:v};t.push(...kt(s,b,P)),s=P,l=b}o=null;break}case"T":{for(;n<e.length&&typeof e[n]=="number";){let m=f(),y=f();p&&(m+=s.x,y+=s.y);let g;l?g={x:2*s.x-l.x,y:2*s.y-l.y}:g={x:s.x,y:s.y};let v={x:m,y};t.push(...kt(s,g,v)),s=v,l=g}o=null;break}case"A":{for(;n<e.length&&typeof e[n]=="number";){let m=f(),y=f(),g=f(),v=f()!==0,b=f()!==0,P=f(),S=f();p&&(P+=s.x,S+=s.y);let M={x:P,y:S};t.push(...zt(s,m,y,g,v,b,M)),s=M}o=null,l=null;break}case"Z":{Math.hypot(s.x-a.x,s.y-a.y)>1e-5&&t.push({p0:s,p1:a}),s=a,o=null,l=null;break}default:break}}return t}function j(c,t,e,r=0){if(c.length===0)return[];let i=[],n=0;for(let u of c){let h=Math.hypot(u.p1.x-u.p0.x,u.p1.y-u.p0.y);i.push(h),n+=h}if(n<1e-6)return[];let s=Math.abs(r)>1?r%360/360:r,a=(t+s)%1,o=(e+s)%1;a<0&&(a+=1),o<0&&(o+=1);let l=(u,h)=>{if(u>=h)return[];let p=[],d=0;for(let f=0;f<c.length;f++){let m=c[f],y=i[f],g=d,v=d+y;if(d=v,v<=u||g>=h||y<1e-6)continue;let b=Math.max(0,(u-g)/y),P=Math.min(1,(h-g)/y);if(P>b){let S={x:m.p0.x+(m.p1.x-m.p0.x)*b,y:m.p0.y+(m.p1.y-m.p0.y)*b},M={x:m.p0.x+(m.p1.x-m.p0.x)*P,y:m.p0.y+(m.p1.y-m.p0.y)*P};p.push({p0:S,p1:M})}}return p};if(t===0&&e===1&&r===0)return[...c];if(Math.abs(a-o)<1e-5)return[];if(a<=o)return l(a*n,o*n);{let u=l(a*n,n),h=l(0,o*n);return[...u,...h]}}function ct(c,t,e=0){if(c.length===0||t.length===0)return c;let r=0;for(let d of t)r+=d;if(r<1e-5)return c;let i=0,n=[];for(let d of c){let f=Math.hypot(d.p1.x-d.p0.x,d.p1.y-d.p0.y);n.push(f),i+=f}let s=[],a=(e%r+r)%r,o=0,l=!0,u=a;for(;u>t[o];)u-=t[o],o=(o+1)%t.length,l=!l;let h=t[o]-u,p=0;for(;p<i;){let d=Math.min(h,i-p);if(l&&d>1e-4){let f=j(c,p/i,(p+d)/i);s.push(...f)}p+=d,o=(o+1)%t.length,l=!l,h=t[o]}return s}function Ft(c,t,e=0,r=0,i=0,n=0){let s=Math.min(c/2,t/2),a=Math.min(e,s),o=Math.min(r,s),l=Math.min(i,s),u=Math.min(n,s);return a===0&&o===0&&l===0&&u===0?`M 0 0 L ${c} 0 L ${c} ${t} L 0 ${t} Z`:[`M ${a} 0`,`L ${c-o} 0`,o>0?`Q ${c} 0 ${c} ${o}`:`L ${c} 0`,`L ${c} ${t-l}`,l>0?`Q ${c} ${t} ${c-l} ${t}`:`L ${c} ${t}`,`L ${u} ${t}`,u>0?`Q 0 ${t} 0 ${t-u}`:`L 0 ${t}`,`L 0 ${a}`,a>0?`Q 0 0 ${a} 0`:"L 0 0","Z"].join(" ")}function jt(c,t){let e=Math.min(c,t)/2,r=c/2,i=t/2,n=e*.5522847498;return[`M ${r} ${i-e}`,`C ${r+n} ${i-e} ${r+e} ${i-n} ${r+e} ${i}`,`C ${r+e} ${i+n} ${r+n} ${i+e} ${r} ${i+e}`,`C ${r-n} ${i+e} ${r-e} ${i+n} ${r-e} ${i}`,`C ${r-e} ${i-n} ${r-n} ${i-e} ${r} ${i-e}`,"Z"].join(" ")}function Ht(c,t){let e=c/2,r=t/2,i=e,n=r,s=e*.5522847498,a=r*.5522847498;return[`M ${i} ${n-r}`,`C ${i+s} ${n-r} ${i+e} ${n-a} ${i+e} ${n}`,`C ${i+e} ${n+a} ${i+s} ${n+r} ${i} ${n+r}`,`C ${i-s} ${n+r} ${i-e} ${n+a} ${i-e} ${n}`,`C ${i-e} ${n-a} ${i-s} ${n-r} ${i} ${n-r}`,"Z"].join(" ")}function Nt(c,t,e=5){let r=Math.max(3,e),i=Math.min(c,t)/2,n=c/2,s=t/2,a=[];for(let o=0;o<r;o++){let l=-Math.PI/2+o*2*Math.PI/r;a.push({x:n+i*Math.cos(l),y:s+i*Math.sin(l)})}return a.map((o,l)=>`${l===0?"M":"L"} ${o.x} ${o.y}`).join(" ")+" Z"}function qt(c,t,e=5,r=.5){let i=Math.max(3,e),n=Math.min(c,t)/2,s=n*Math.max(.01,Math.min(.99,r)),a=c/2,o=t/2,l=[];for(let u=0;u<i*2;u++){let h=-Math.PI/2+u*Math.PI/i,p=u%2===0?n:s;l.push({x:a+p*Math.cos(h),y:o+p*Math.sin(h)})}return l.map((u,h)=>`${h===0?"M":"L"} ${u.x} ${u.y}`).join(" ")+" Z"}function Qt(c,t,e=40,r=40,i=20){let n=Math.min(e,t),s=Math.min(r,c),a=Math.min(i,n),o=t/2;return[`M 0 ${o-a/2}`,`L ${c-s} ${o-a/2}`,`L ${c-s} ${o-n/2}`,`L ${c} ${o}`,`L ${c-s} ${o+n/2}`,`L ${c-s} ${o+a/2}`,`L 0 ${o+a/2}`,"Z"].join(" ")}function lt(c){let{shapeType:t,width:e,height:r}=c;switch(t){case"rect":return Ft(e,r,c.cornerRadius??0,c.cornerRadius??0,c.cornerRadius??0,c.cornerRadius??0);case"circle":return jt(e,r);case"ellipse":return Ht(e,r);case"polygon":return Nt(e,r,c.polygonSides??5);case"star":return qt(e,r,c.starPoints??5,c.starInnerRadiusRatio??.5);case"arrow":return Qt(e,r,c.arrowHeadWidth??40,c.arrowHeadLength??40,c.arrowShaftWidth??20);case"path":return c.path??"";default:return""}}function Tt(c){if(c.length<3)return[];if(c.length===3)return[c[0],c[1],c[2]];let t=[...c],e=t[t.length-1],r=t[0];if(Math.hypot(e.x-r.x,e.y-r.y)<1e-5&&t.pop(),t.length<3)return[];let i=0;for(let h=0;h<t.length;h++){let p=(h+1)%t.length;i+=t[h].x*t[p].y-t[p].x*t[h].y}i<0&&t.reverse();let n=(h,p,d,f)=>{let m=(d.x-p.x)*(h.y-p.y)-(d.y-p.y)*(h.x-p.x),y=(f.x-d.x)*(h.y-d.y)-(f.y-d.y)*(h.x-d.x),g=(p.x-f.x)*(h.y-f.y)-(p.y-f.y)*(h.x-f.x);return m>=-1e-6&&y>=-1e-6&&g>=-1e-6},s=(h,p,d,f)=>{if((p.x-h.x)*(d.y-h.y)-(p.y-h.y)*(d.x-h.x)<=1e-7)return!1;for(let y of f)if(!(y===h||y===p||y===d)&&n(y,h,p,d))return!1;return!0},a=[],o=[...t],l=0,u=o.length*o.length*2;for(;o.length>3&&l<u;){l++;let h=!1;for(let p=0;p<o.length;p++){let d=o[(p-1+o.length)%o.length],f=o[p],m=o[(p+1)%o.length];if(s(d,f,m,o)){a.push(d,f,m),o.splice(p,1),h=!0;break}}h||(a.push(o[0],o[1],o[2]),o.splice(1,1))}return o.length===3&&a.push(o[0],o[1],o[2]),a}function _t(c){let{shapeType:t,width:e,height:r}=c;if(t==="rect"){let i=c.cornerRadius??0;if(i<=0)return new Float32Array([0,0,e,0,e,r,0,0,e,r,0,r]);let n=Ft(e,r,i,i,i,i),a=z(n).map(u=>u.p0),o=Tt(a),l=new Float32Array(o.length*2);for(let u=0;u<o.length;u++)l[u*2]=o[u].x,l[u*2+1]=o[u].y;return l}if(t==="circle"||t==="ellipse"){let i=e/2,n=r/2,s=t==="circle"?Math.min(e,r)/2:e/2,a=t==="circle"?s:r/2,o=48,l=new Float32Array(o*3*2),u=0;for(let h=0;h<o;h++){let p=h*2*Math.PI/o,d=(h+1)*2*Math.PI/o;l[u++]=i,l[u++]=n,l[u++]=i+s*Math.cos(p),l[u++]=n+a*Math.sin(p),l[u++]=i+s*Math.cos(d),l[u++]=n+a*Math.sin(d)}return l}if(t==="polygon"){let i=Math.max(3,c.polygonSides??5),n=Math.min(e,r)/2,s=e/2,a=r/2,o=new Float32Array(i*3*2),l=0;for(let u=0;u<i;u++){let h=-Math.PI/2+u*2*Math.PI/i,p=-Math.PI/2+(u+1)*2*Math.PI/i;o[l++]=s,o[l++]=a,o[l++]=s+n*Math.cos(h),o[l++]=a+n*Math.sin(h),o[l++]=s+n*Math.cos(p),o[l++]=a+n*Math.sin(p)}return o}if(t==="star"){let i=Math.max(3,c.starPoints??5),n=Math.min(e,r)/2,s=n*Math.max(.01,Math.min(.99,c.starInnerRadiusRatio??.5)),a=e/2,o=r/2,l=i*2,u=new Float32Array(l*3*2),h=0;for(let p=0;p<l;p++){let d=-Math.PI/2+p*Math.PI/i,f=-Math.PI/2+(p+1)*Math.PI/i,m=p%2===0?n:s,y=(p+1)%2===0?n:s;u[h++]=a,u[h++]=o,u[h++]=a+m*Math.cos(d),u[h++]=o+m*Math.sin(d),u[h++]=a+y*Math.cos(f),u[h++]=o+y*Math.sin(f)}return u}if(t==="arrow"){let i=Math.min(c.arrowHeadWidth??40,r),n=Math.min(c.arrowHeadLength??40,e),s=Math.min(c.arrowShaftWidth??20,i),a=r/2,o=0,l=e-n,u=e,h=a-s/2,p=a+s/2,d=a-i/2,f=a+i/2;return new Float32Array([o,h,l,h,l,p,o,h,l,p,o,p,l,d,u,a,l,f])}if(t==="path"&&c.path){let i=z(c.path);if(i.length===0)return new Float32Array(0);let n=i.map(o=>o.p0),s=Tt(n),a=new Float32Array(s.length*2);for(let o=0;o<s.length;o++)a[o*2]=s[o].x,a[o*2+1]=s[o].y;return a}return new Float32Array(0)}x();x();var Rt=`
187
187
  struct Uniforms {
188
188
  transformCol0 : vec4<f32>,
189
189
  transformCol1 : vec4<f32>,
@@ -260,7 +260,7 @@ fn sdSegmentWithCap(p: vec2<f32>, a: vec2<f32>, b: vec2<f32>, radius: f32, capTy
260
260
 
261
261
  return vec4<f32>(u.color.rgb * alpha, alpha);
262
262
  }
263
- `;var H=class{device;pipeline;maxPipeline;uniformLayout;uniformPool;vertexPool;uniformBindGroupCache=new U;scratchData=new Float32Array(28);constructor(t,e){this.device=t,this.uniformPool=new G(4096,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new G(4096,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=t.createShaderModule({label:"path.wgsl",code:_t});this.uniformLayout=C(t),this.pipeline=T(t,{label:"PathPipeline",module:r,uniformLayout:this.uniformLayout,format:e,topology:"triangle-strip"}),this.maxPipeline=T(t,{label:"PathPipeline.max",module:r,uniformLayout:this.uniformLayout,format:e,topology:"triangle-strip",blend:{color:{srcFactor:"one",dstFactor:"one",operation:"max"},alpha:{srcFactor:"one",dstFactor:"one",operation:"max"}}})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}drawPath(t,e,r,i,n,s,a,o){let l=z(r);if(l.length===0||((o?.trimStart!==void 0||o?.trimEnd!==void 0||o?.trimOffset!==void 0)&&(l=j(l,o.trimStart??0,o.trimEnd??1,o.trimOffset??0)),o?.strokeDashArray&&o.strokeDashArray.length>0&&(l=ct(l,o.strokeDashArray,o.strokeDashOffset??0)),l.length===0))return;let u=D(i),h=o?.opacity??1,p=0;o?.strokeLineCap==="butt"?p=1:o?.strokeLineCap==="square"&&(p=2);for(let d of l)this.drawSegment(t,e,d.p0,d.p1,u,n,p,s,a,h,o)}drawSegments(t,e,r,i,n,s,a,o){let l=r;if((o?.trimStart!==void 0||o?.trimEnd!==void 0||o?.trimOffset!==void 0)&&(l=j(l,o.trimStart??0,o.trimEnd??1,o.trimOffset??0)),o?.strokeDashArray&&o.strokeDashArray.length>0&&(l=ct(l,o.strokeDashArray,o.strokeDashOffset??0)),l.length===0)return;let u=D(i),h=o?.opacity??1,p=0;o?.strokeLineCap==="butt"?p=1:o?.strokeLineCap==="square"&&(p=2);for(let d of l)this.drawSegment(t,e,d.p0,d.p1,u,n,p,s,a,h,o)}drawSegment(t,e,r,i,n,s,a,o,l,u,h){let p=this.scratchData;e.packIntoBuffer(p,u,o,l,h?.transform),p[15]=s,p[16]=n.r,p[17]=n.g,p[18]=n.b,p[19]=n.a,p[20]=a,p[21]=0,p[22]=0,p[23]=0,p[24]=r.x,p[25]=r.y,p[26]=i.x,p[27]=i.y;let d=this.uniformPool.getBuffer(this.device,p),f=i.x-r.x,m=i.y-r.y,y=Math.sqrt(f*f+m*m);if(y<1e-6)return;let g=s*.5+2,v=f/y*g,b=m/y*g,P=-b,S=v,M=new Float32Array([r.x-v-P,r.y-b-S,r.x-v+P,r.y-b+S,i.x+v-P,i.y+b-S,i.x+v+P,i.y+b+S]),F=this.vertexPool.getBuffer(this.device,M),et=h?.blendMode==="max"?this.maxPipeline:this.pipeline;t.setPipeline(et);let B=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,d);t.setBindGroup(0,B),t.setVertexBuffer(0,F),t.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};x();x();var Rt=`
263
+ `;var H=class{device;pipeline;maxPipeline;uniformLayout;uniformPool;vertexPool;uniformBindGroupCache=new U;scratchData=new Float32Array(28);constructor(t,e){this.device=t,this.uniformPool=new G(4096,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new G(4096,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=t.createShaderModule({label:"path.wgsl",code:Rt});this.uniformLayout=C(t),this.pipeline=T(t,{label:"PathPipeline",module:r,uniformLayout:this.uniformLayout,format:e,topology:"triangle-strip"}),this.maxPipeline=T(t,{label:"PathPipeline.max",module:r,uniformLayout:this.uniformLayout,format:e,topology:"triangle-strip",blend:{color:{srcFactor:"one",dstFactor:"one",operation:"max"},alpha:{srcFactor:"one",dstFactor:"one",operation:"max"}}})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}drawPath(t,e,r,i,n,s,a,o){let l=z(r);if(l.length===0||((o?.trimStart!==void 0||o?.trimEnd!==void 0||o?.trimOffset!==void 0)&&(l=j(l,o.trimStart??0,o.trimEnd??1,o.trimOffset??0)),o?.strokeDashArray&&o.strokeDashArray.length>0&&(l=ct(l,o.strokeDashArray,o.strokeDashOffset??0)),l.length===0))return;let u=D(i),h=o?.opacity??1,p=0;o?.strokeLineCap==="butt"?p=1:o?.strokeLineCap==="square"&&(p=2);for(let d of l)this.drawSegment(t,e,d.p0,d.p1,u,n,p,s,a,h,o)}drawSegments(t,e,r,i,n,s,a,o){let l=r;if((o?.trimStart!==void 0||o?.trimEnd!==void 0||o?.trimOffset!==void 0)&&(l=j(l,o.trimStart??0,o.trimEnd??1,o.trimOffset??0)),o?.strokeDashArray&&o.strokeDashArray.length>0&&(l=ct(l,o.strokeDashArray,o.strokeDashOffset??0)),l.length===0)return;let u=D(i),h=o?.opacity??1,p=0;o?.strokeLineCap==="butt"?p=1:o?.strokeLineCap==="square"&&(p=2);for(let d of l)this.drawSegment(t,e,d.p0,d.p1,u,n,p,s,a,h,o)}drawSegment(t,e,r,i,n,s,a,o,l,u,h){let p=this.scratchData;e.packIntoBuffer(p,u,o,l,h?.transform),p[15]=s,p[16]=n.r,p[17]=n.g,p[18]=n.b,p[19]=n.a,p[20]=a,p[21]=0,p[22]=0,p[23]=0,p[24]=r.x,p[25]=r.y,p[26]=i.x,p[27]=i.y;let d=this.uniformPool.getBuffer(this.device,p),f=i.x-r.x,m=i.y-r.y,y=Math.sqrt(f*f+m*m);if(y<1e-6)return;let g=s*.5+2,v=f/y*g,b=m/y*g,P=-b,S=v,M=new Float32Array([r.x-v-P,r.y-b-S,r.x-v+P,r.y-b+S,i.x+v-P,i.y+b-S,i.x+v+P,i.y+b+S]),F=this.vertexPool.getBuffer(this.device,M),et=h?.blendMode==="max"?this.maxPipeline:this.pipeline;t.setPipeline(et);let B=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,d);t.setBindGroup(0,B),t.setVertexBuffer(0,F),t.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};x();x();var Lt=`
264
264
  struct Uniforms {
265
265
  transformCol0 : vec4<f32>,
266
266
  transformCol1 : vec4<f32>,
@@ -314,7 +314,7 @@ struct VSOut {
314
314
  return color * opacity;
315
315
  }
316
316
  }
317
- `;var N=class{buffers=[];index=0;size;usage;constructor(t,e){this.size=t,this.usage=e}getBuffer(t,e){if(this.index>=this.buffers.length){let i=t.createBuffer({size:this.size,usage:this.usage});this.buffers.push(i)}let r=this.buffers[this.index++];return t.queue.writeBuffer(r,0,e),r}reset(){this.index=0}destroy(){for(let t of this.buffers)t.destroy();this.buffers=[]}},q=class{device;pipeline;uniformLayout;textureLayout;uniformPool;vertexPool;uniformBindGroupCache=new U;uniformData=new Float32Array(16);vertexData=new Float32Array(16);constructor(t,e){this.device=t,this.uniformPool=new N(64,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new N(64,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=t.createShaderModule({label:"quad.wgsl",code:Rt});this.uniformLayout=C(t),this.textureLayout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]});let i=t.createPipelineLayout({bindGroupLayouts:[this.uniformLayout,this.textureLayout]});this.pipeline=t.createRenderPipeline({label:"QuadPipeline",layout:i,vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:e,blend:wt}]},primitive:{topology:"triangle-strip"}})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(t,e,r,i,n,s,a,o,l,u){let h=u?.opacity??1;r.packIntoBuffer(this.uniformData,h,o,l,u?.transform);let p=this.uniformPool.getBuffer(this.device,this.uniformData),d=s.x/i.width,f=s.y/i.height,m=(s.x+s.width)/i.width,y=(s.y+s.height)/i.height;this.vertexData[0]=a.x,this.vertexData[1]=a.y,this.vertexData[2]=d,this.vertexData[3]=f,this.vertexData[4]=a.x+a.width,this.vertexData[5]=a.y,this.vertexData[6]=m,this.vertexData[7]=f,this.vertexData[8]=a.x,this.vertexData[9]=a.y+a.height,this.vertexData[10]=d,this.vertexData[11]=y,this.vertexData[12]=a.x+a.width,this.vertexData[13]=a.y+a.height,this.vertexData[14]=m,this.vertexData[15]=y;let g=this.vertexPool.getBuffer(this.device,this.vertexData),v=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,p),b=e.getBindGroup(this.device,this.textureLayout,i,n);t.setPipeline(this.pipeline),t.setBindGroup(0,v),t.setBindGroup(1,b),t.setVertexBuffer(0,g),t.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};x();x();var Q=`
317
+ `;var N=class{buffers=[];index=0;size;usage;constructor(t,e){this.size=t,this.usage=e}getBuffer(t,e){if(this.index>=this.buffers.length){let i=t.createBuffer({size:this.size,usage:this.usage});this.buffers.push(i)}let r=this.buffers[this.index++];return t.queue.writeBuffer(r,0,e),r}reset(){this.index=0}destroy(){for(let t of this.buffers)t.destroy();this.buffers=[]}},q=class{device;pipeline;uniformLayout;textureLayout;uniformPool;vertexPool;uniformBindGroupCache=new U;uniformData=new Float32Array(16);vertexData=new Float32Array(16);constructor(t,e){this.device=t,this.uniformPool=new N(64,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new N(64,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=t.createShaderModule({label:"quad.wgsl",code:Lt});this.uniformLayout=C(t),this.textureLayout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]});let i=t.createPipelineLayout({bindGroupLayouts:[this.uniformLayout,this.textureLayout]});this.pipeline=t.createRenderPipeline({label:"QuadPipeline",layout:i,vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:e,blend:Gt}]},primitive:{topology:"triangle-strip"}})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(t,e,r,i,n,s,a,o,l,u){let h=u?.opacity??1;r.packIntoBuffer(this.uniformData,h,o,l,u?.transform);let p=this.uniformPool.getBuffer(this.device,this.uniformData),d=s.x/i.width,f=s.y/i.height,m=(s.x+s.width)/i.width,y=(s.y+s.height)/i.height;this.vertexData[0]=a.x,this.vertexData[1]=a.y,this.vertexData[2]=d,this.vertexData[3]=f,this.vertexData[4]=a.x+a.width,this.vertexData[5]=a.y,this.vertexData[6]=m,this.vertexData[7]=f,this.vertexData[8]=a.x,this.vertexData[9]=a.y+a.height,this.vertexData[10]=d,this.vertexData[11]=y,this.vertexData[12]=a.x+a.width,this.vertexData[13]=a.y+a.height,this.vertexData[14]=m,this.vertexData[15]=y;let g=this.vertexPool.getBuffer(this.device,this.vertexData),v=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,p),b=e.getBindGroup(this.device,this.textureLayout,i,n);t.setPipeline(this.pipeline),t.setBindGroup(0,v),t.setBindGroup(1,b),t.setVertexBuffer(0,g),t.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};x();x();var Q=`
318
318
  struct GradientUniforms {
319
319
  info : vec4<f32>, // x = type (0 none, 1 linear, 2 radial, 3 conic), y = stop count
320
320
  geom : vec4<f32>, // linear: cx, cy, dir.x / len, dir.y / len; radial: cx, cy, rx, ry; conic: cx, cy, from (rad)
@@ -374,7 +374,7 @@ fn evalGradient(g: GradientUniforms, p: vec2<f32>) -> vec4<f32> {
374
374
  }
375
375
  return vec4<f32>(gradientOklabToSrgb(lab.xyz), lab.w);
376
376
  }
377
- `;x();var Lt=`
377
+ `;x();var Ot=`
378
378
  ${Q}
379
379
 
380
380
  struct Uniforms {
@@ -417,7 +417,7 @@ struct VSOut {
417
417
 
418
418
  return vec4<f32>(outColor.rgb * alpha, alpha);
419
419
  }
420
- `;x();var Qt={linear:1,radial:2,conic:3};function Y(c){return typeof c=="string"&&c.includes("gradient(")?yt(c):null}function X(c,t,e,r){if(e.fill(0,r,r+48),!c)return;let i=xt(c.stops),n=Math.max(t.width,.001),s=Math.max(t.height,.001),a=t.x+c.center[0]*n,o=t.y+c.center[1]*s;if(e[r]=Qt[c.type],e[r+1]=i.length,e[r+4]=c.type==="linear"?t.x+n/2:a,e[r+5]=c.type==="linear"?t.y+s/2:o,c.type==="linear"){let l=c.angle*Math.PI/180,u=Math.sin(l),h=-Math.cos(l),p=Math.abs(n*u)+Math.abs(s*h);e[r+6]=u/p,e[r+7]=h/p}else if(c.type==="radial"){let l,u;c.radius?[l,u]=c.radius:[l,u]=Yt(c,a-t.x,t.x+n-a,o-t.y,t.y+s-o),e[r+6]=l,e[r+7]=u}else e[r+6]=c.from*Math.PI/180;i.forEach((l,u)=>{e[r+8+u]=l.offset}),$(i).forEach((l,u)=>{e.set(l,r+16+u*4)})}function Yt(c,t,e,r,i){let n=c.extent??"farthest-corner",s=n.startsWith("farthest"),a=s?Math.max(t,e):Math.min(t,e),o=s?Math.max(r,i):Math.min(r,i),l=c.shape==="circle";if(n.endsWith("side")){if(!l)return[a,o];let u=s?Math.max(a,o):Math.min(a,o);return[u,u]}if(l){let u=Math.hypot(a,o);return[u,u]}return[a*Math.SQRT2,o*Math.SQRT2]}var K=class{device;pipeline;uniformLayout;uniformPool;vertexPool;uniformData=new Float32Array(68);constructor(t,e){this.device=t,this.uniformPool=new G(2048,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new G(8192,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=t.createShaderModule({label:"shape-fill.wgsl",code:Lt});this.uniformLayout=C(t),this.pipeline=T(t,{label:"ShapeFillPipeline",module:r,uniformLayout:this.uniformLayout,format:e,topology:"triangle-list"})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(t,e,r,i,n,s,a,o){if(r.length<6||i.type==="none")return;let l=o?.opacity??1;e.packIntoBuffer(this.uniformData,l,s,a,o?.transform),this.uniformData[15]=0;let u=Y(i.color);if(u)this.uniformData.fill(0,16,20),X(u,n,this.uniformData,20);else{let d=D(i.color??"#ffffff");this.uniformData[16]=d.r,this.uniformData[17]=d.g,this.uniformData[18]=d.b,this.uniformData[19]=d.a,this.packTwoColorGradient(i,n,d)}let h=this.uniformPool.getBuffer(this.device,this.uniformData),p=this.vertexPool.getBuffer(this.device,r);t.setPipeline(this.pipeline),t.setBindGroup(0,this.device.createBindGroup({layout:this.uniformLayout,entries:[{binding:0,resource:{buffer:h}}]})),t.setVertexBuffer(0,p),t.draw(r.length/2)}packTwoColorGradient(t,e,r){if(this.uniformData.fill(0,20,68),t.type!=="linear"&&t.type!=="radial")return;let n=D(t.color2??t.color??"#ffffff"),s=this.uniformData;if(t.type==="linear"){let o=t.startX??e.x,l=t.startY??e.y,u=t.endX??e.x+e.width,h=t.endY??e.y+e.height,p=u-o,d=h-l,f=Math.max(p*p+d*d,1e-6);s.set([1,2,0,0,(o+u)/2,(l+h)/2,p/f,d/f],20)}else{let o=t.radius??Math.max(e.width,e.height)/2;s.set([2,2,0,0,t.cx??e.x+e.width/2,t.cy??e.y+e.height/2,o,o],20)}s[28]=0,s[29]=1;let a=$([{offset:0,color:[r.r,r.g,r.b,r.a]},{offset:1,color:[n.r,n.g,n.b,n.a]}]);s.set(a[0],36),s.set(a[1],40)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy()}};x();x();var Ot=`
420
+ `;x();var Yt={linear:1,radial:2,conic:3};function Y(c){return typeof c=="string"&&c.includes("gradient(")?yt(c):null}function X(c,t,e,r){if(e.fill(0,r,r+48),!c)return;let i=xt(c.stops),n=Math.max(t.width,.001),s=Math.max(t.height,.001),a=t.x+c.center[0]*n,o=t.y+c.center[1]*s;if(e[r]=Yt[c.type],e[r+1]=i.length,e[r+4]=c.type==="linear"?t.x+n/2:a,e[r+5]=c.type==="linear"?t.y+s/2:o,c.type==="linear"){let l=c.angle*Math.PI/180,u=Math.sin(l),h=-Math.cos(l),p=Math.abs(n*u)+Math.abs(s*h);e[r+6]=u/p,e[r+7]=h/p}else if(c.type==="radial"){let l,u;c.radius?[l,u]=c.radius:[l,u]=Xt(c,a-t.x,t.x+n-a,o-t.y,t.y+s-o),e[r+6]=l,e[r+7]=u}else e[r+6]=c.from*Math.PI/180;i.forEach((l,u)=>{e[r+8+u]=l.offset}),$(i).forEach((l,u)=>{e.set(l,r+16+u*4)})}function Xt(c,t,e,r,i){let n=c.extent??"farthest-corner",s=n.startsWith("farthest"),a=s?Math.max(t,e):Math.min(t,e),o=s?Math.max(r,i):Math.min(r,i),l=c.shape==="circle";if(n.endsWith("side")){if(!l)return[a,o];let u=s?Math.max(a,o):Math.min(a,o);return[u,u]}if(l){let u=Math.hypot(a,o);return[u,u]}return[a*Math.SQRT2,o*Math.SQRT2]}var K=class{device;pipeline;uniformLayout;uniformPool;vertexPool;uniformData=new Float32Array(68);constructor(t,e){this.device=t,this.uniformPool=new G(2048,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new G(8192,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=t.createShaderModule({label:"shape-fill.wgsl",code:Ot});this.uniformLayout=C(t),this.pipeline=T(t,{label:"ShapeFillPipeline",module:r,uniformLayout:this.uniformLayout,format:e,topology:"triangle-list"})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(t,e,r,i,n,s,a,o){if(r.length<6||i.type==="none")return;let l=o?.opacity??1;e.packIntoBuffer(this.uniformData,l,s,a,o?.transform),this.uniformData[15]=0;let u=Y(i.color);if(u)this.uniformData.fill(0,16,20),X(u,n,this.uniformData,20);else{let d=D(i.color??"#ffffff");this.uniformData[16]=d.r,this.uniformData[17]=d.g,this.uniformData[18]=d.b,this.uniformData[19]=d.a,this.packTwoColorGradient(i,n,d)}let h=this.uniformPool.getBuffer(this.device,this.uniformData),p=this.vertexPool.getBuffer(this.device,r);t.setPipeline(this.pipeline),t.setBindGroup(0,this.device.createBindGroup({layout:this.uniformLayout,entries:[{binding:0,resource:{buffer:h}}]})),t.setVertexBuffer(0,p),t.draw(r.length/2)}packTwoColorGradient(t,e,r){if(this.uniformData.fill(0,20,68),t.type!=="linear"&&t.type!=="radial")return;let n=D(t.color2??t.color??"#ffffff"),s=this.uniformData;if(t.type==="linear"){let o=t.startX??e.x,l=t.startY??e.y,u=t.endX??e.x+e.width,h=t.endY??e.y+e.height,p=u-o,d=h-l,f=Math.max(p*p+d*d,1e-6);s.set([1,2,0,0,(o+u)/2,(l+h)/2,p/f,d/f],20)}else{let o=t.radius??Math.max(e.width,e.height)/2;s.set([2,2,0,0,t.cx??e.x+e.width/2,t.cy??e.y+e.height/2,o,o],20)}s[28]=0,s[29]=1;let a=$([{offset:0,color:[r.r,r.g,r.b,r.a]},{offset:1,color:[n.r,n.g,n.b,n.a]}]);s.set(a[0],36),s.set(a[1],40)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy()}};x();x();var $t=`
421
421
  ${Q}
422
422
 
423
423
  struct Uniforms {
@@ -477,4 +477,4 @@ fn sdRoundedRect(p: vec2<f32>, b: vec2<f32>, r: f32) -> f32 {
477
477
 
478
478
  return vec4<f32>(fill.rgb * alpha, alpha);
479
479
  }
480
- `;var Z=class{device;pipeline;uniformLayout;uniformPool;vertexPool;uniformBindGroupCache=new U;uniformData=new Float32Array(72);vertexData=new Float32Array(8);constructor(t,e){this.device=t,this.uniformPool=new G(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new G(256,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=t.createShaderModule({label:"solid.wgsl",code:Ot});this.uniformLayout=C(t),this.pipeline=T(t,{label:"SolidPipeline",module:r,uniformLayout:this.uniformLayout,format:e,topology:"triangle-strip"})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(t,e,r,i,n,s,a=0,o){let l=Y(i),u=l?{r:0,g:0,b:0,a:1}:D(i),h=o?.opacity??1;e.packIntoBuffer(this.uniformData,h,n,s,o?.transform),this.uniformData[15]=a,this.uniformData[16]=u.r,this.uniformData[17]=u.g,this.uniformData[18]=u.b,this.uniformData[19]=u.a,this.uniformData[20]=r.x,this.uniformData[21]=r.y,this.uniformData[22]=r.width,this.uniformData[23]=r.height,X(l,r,this.uniformData,24);let p=this.uniformPool.getBuffer(this.device,this.uniformData),d=0;if(a>0){let P=o?.transform?e.getCurrent().multiply(o.transform):e.getCurrent(),S=Math.min(Math.hypot(P.a,P.b),Math.hypot(P.c,P.d));d=2/Math.max(S,.001)}let f=r.x-d,m=r.y-d,y=r.x+r.width+d,g=r.y+r.height+d;this.vertexData[0]=f,this.vertexData[1]=m,this.vertexData[2]=y,this.vertexData[3]=m,this.vertexData[4]=f,this.vertexData[5]=g,this.vertexData[6]=y,this.vertexData[7]=g;let v=this.vertexPool.getBuffer(this.device,this.vertexData);t.setPipeline(this.pipeline);let b=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,p);t.setBindGroup(0,b),t.setVertexBuffer(0,v),t.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};x();var J=class{stack=[new DOMMatrix];push(t){let r=this.stack[this.stack.length-1].multiply(t);this.stack.push(r)}pop(){this.stack.length>1&&this.stack.pop()}getCurrent(){return this.stack[this.stack.length-1]}packIntoBuffer(t,e,r,i,n,s){let a=this.getCurrent();n&&(a=a.multiply(n)),t[0]=a.a,t[1]=a.b,t[2]=0,t[3]=0,t[4]=a.c,t[5]=a.d,t[6]=0,t[7]=0,t[8]=a.e,t[9]=a.f,t[10]=1,t[11]=0,t[12]=e,t[13]=r,t[14]=i,t[15]=s??0}destroy(){this.stack=[new DOMMatrix]}};function Xt(c){if(Array.isArray(c)){let r=c[3]??1;return[c[0]*r,c[1]*r,c[2]*r,r]}if("r"in c){let r=c.a??1;return{r:c.r*r,g:c.g*r,b:c.b*r,a:r}}let t=Array.from(c),e=t[3]??1;return[t[0]*e,t[1]*e,t[2]*e,e]}var $t=new WeakMap;function br(c,t){let e=$t.get(c);return(!e||e.format!==t||e.isDestroyed)&&(e=new pt(c,t),$t.set(c,e)),e.resetPools(),e}var pt=class{device;transformStack=new J;clipStack=new W;quadPipeline;solidPipeline;shapeFillPipeline;pathPipeline;effectPipeline;slugPipeline;bindGroupCache=new V;samplerCache=new Gt;format;isDestroyed=!1;rasterDrawCount=0;surfaceWidth=0;surfaceHeight=0;lastEncoder=null;constructor(t,e){this.device=t,this.format=e,this.quadPipeline=new q(t,e),this.solidPipeline=new Z(t,e),this.shapeFillPipeline=new K(t,e),this.pathPipeline=new H(t,e),this.effectPipeline=new E(t,e),this.slugPipeline=new St(t,e)}beginFrame(t,e,r={r:0,g:0,b:0,a:0},i,n,s="clear"){this.surfaceWidth=i,this.surfaceHeight=n,t!==this.lastEncoder&&(this.lastEncoder=t,this.resetPools());let a=t.beginRenderPass({colorAttachments:[{view:e,clearValue:Xt(r),loadOp:s,storeOp:"store"}]});return this.clipStack.applyScissorToPass(a,i,n),a}endFrame(t){}resetPools(){this.quadPipeline.resetPools(),this.solidPipeline.resetPools(),this.shapeFillPipeline.resetPools(),this.pathPipeline.resetPools(),this.effectPipeline&&this.effectPipeline.resetPools(),this.slugPipeline.resetPools(),ot.flushRetired(this.device),ot.prune(this.device)}drawTexture(t,e,r,i){let n=this.samplerCache.getSampler(this.device),s={x:0,y:0,width:e.width,height:e.height};this.rasterDrawCount++,this.quadPipeline.draw(t,this.bindGroupCache,this.transformStack,e,n,s,r,this.surfaceWidth,this.surfaceHeight,i)}drawTextureRegion(t,e,r,i,n){let s=this.samplerCache.getSampler(this.device);this.rasterDrawCount++,this.quadPipeline.draw(t,this.bindGroupCache,this.transformStack,e,s,r,i,this.surfaceWidth,this.surfaceHeight,n)}drawRect(t,e,r,i=0,n){let s=0,a=n;typeof i=="object"&&i!==null?(a=i,s=0):typeof i=="number"&&(s=i),this.rasterDrawCount++,this.solidPipeline.draw(t,this.transformStack,e,r,this.surfaceWidth,this.surfaceHeight,s,a)}drawPath(t,e,r,i,n){this.rasterDrawCount++,this.pathPipeline.drawPath(t,this.transformStack,e,r,i,this.surfaceWidth,this.surfaceHeight,n)}drawShapeFill(t,e,r,i,n){this.rasterDrawCount++,this.shapeFillPipeline.draw(t,this.transformStack,e,r,i,this.surfaceWidth,this.surfaceHeight,n)}drawShape(t,e,r,i,n){let s={x:0,y:0,width:e.width,height:e.height};if(r&&r.type!=="none"){let a=Ft(e);if(a.length>0&&(this.drawShapeFill(t,a,r,s,n),(!i||!i.width||i.width<=0)&&(r.type??"solid")==="solid"&&r.color)){let o=lt(e);o&&this.drawPath(t,o,r.color,1,{...n,strokeLineCap:"round"})}}if(i&&i.width&&i.width>0&&i.color){let a=lt(e);a&&this.drawPath(t,a,i.color,i.width,{...n,strokeLineCap:i.cap,trimStart:i.trimStart,trimEnd:i.trimEnd,trimOffset:i.trimOffset,strokeDashArray:i.dashArray,strokeDashOffset:i.dashOffset})}}drawRRect(t,e,r,i){this.drawRect(t,e.rect,r,e.rx,i)}getTemporaryTexture(t,e,r){return this.effectPipeline.getTexture(this.device,t,e,this.format,r)}getTemporaryBuffer(t){return this.effectPipeline.getBuffer(this.device,t)}composite(t,e,r,i,n){return this.effectPipeline.composite(t,this.bindGroupCache,this.samplerCache,e,r,i,this.format,n)}applyMotionBlur(t,e,r,i,n=180,s=16,a){return this.effectPipeline.applyMotionBlur(t,this.bindGroupCache,this.samplerCache,e,r,i,n,s,this.format,a)}getCurrentTransform(){return this.transformStack.getCurrent()}getTransformStack(){return this.transformStack}getSurfaceWidth(){return this.surfaceWidth}getSurfaceHeight(){return this.surfaceHeight}pushIdentity(){let t=this.transformStack.getCurrent();this.pushTransform(t.inverse())}pushTransform(t){this.transformStack.push(t)}popTransform(){this.transformStack.pop()}pushScissor(t){this.clipStack.pushScissor(t,this.surfaceWidth,this.surfaceHeight)}pushScissorIntersect(t){let e=this.clipStack.getCurrentScissor(this.surfaceWidth,this.surfaceHeight);if(!e){this.pushScissor(t);return}let r=Math.max(t.x,e.x),i=Math.max(t.y,e.y),n=Math.min(t.x+t.width,e.x+e.width),s=Math.min(t.y+t.height,e.y+e.height);this.pushScissor({x:r,y:i,width:Math.max(0,n-r),height:Math.max(0,s-i)})}pushScissorLocal(t){let e=this.transformStack.getCurrent(),r=[e.transformPoint(new DOMPoint(t.x,t.y)),e.transformPoint(new DOMPoint(t.x+t.width,t.y)),e.transformPoint(new DOMPoint(t.x,t.y+t.height)),e.transformPoint(new DOMPoint(t.x+t.width,t.y+t.height))],i=r.map(h=>h.x),n=r.map(h=>h.y),s=Math.min(...i),a=Math.min(...n),o=Math.max(...i)-s,l=Math.max(...n)-a,u=this.clipStack.getCurrentScissor(this.surfaceWidth,this.surfaceHeight);if(u){let h=Math.max(s,u.x),p=Math.max(a,u.y),d=Math.min(s+o,u.x+u.width),f=Math.min(a+l,u.y+u.height);s=h,a=p,o=Math.max(0,d-h),l=Math.max(0,f-p)}this.clipStack.pushScissor({x:s,y:a,width:o,height:l},this.surfaceWidth,this.surfaceHeight)}popScissor(){this.clipStack.popScissor()}suspendScissors(){let t=this.clipStack.saveScissors();return this.clipStack.clearScissors(),t}resumeScissors(t){this.clipStack.restoreScissors(t)}pushStencilClip(t){this.clipStack.pushStencilClip(t)}popStencilClip(){this.clipStack.popStencilClip()}destroy(){this.isDestroyed=!0,this.transformStack.destroy(),this.clipStack.destroy(),this.bindGroupCache.destroy(),this.samplerCache.destroy(),this.quadPipeline.destroy(),this.solidPipeline.destroy(),this.shapeFillPipeline.destroy(),this.pathPipeline.destroy(),this.effectPipeline.destroy(),this.slugPipeline.destroy(),this.lastEncoder=null}};x();async function At(c,t){if(typeof window<"u"&&typeof FontFace<"u"){let e=typeof t=="string"?t:"its registered bytes";try{let i=await new FontFace(c,typeof t=="string"?`url(${t})`:t).load();document.fonts.add(i),await document.fonts.ready}catch(r){console.warn(`[preloadFont] Failed to load font "${c}" from ${e}:`,r)}}else typeof t=="string"&&await Pt(c,t)}x();var Kt=/\p{Extended_Pictographic}/gu,It=!1;async function Fr(c,t,e=(r,i)=>console.warn(`[framefields] ${i}`,r)){let r=new Set,i=new Map;(function s(a){let o=a.operation;if(o){let l=o.op==="text"||o.kind==="text"||o.op==="caption"||o.kind==="caption"||typeof o.text=="string",u=o.fontFamily||(l?"Inter":"");if(u&&r.add(u),o.op==="text"&&typeof o.text=="string"){let h=o.fontSize??48;for(let p of o.text.match(Kt)??[])i.set(`${p}-${h}`,h)}}for(let l of a.children??[])s(l)})(c);let n=[];for(let s of r){let a=Mt(s),o=Ut(s),l=typeof a=="string"?a:"its registered bytes";n.push(At(s,a).catch(u=>e(u,`font "${s}" from ${l}`))),t&&n.push(O.preloadSlugFont(t,s,o).catch(u=>e(u,`Slug font "${s}" from ${o}`)))}if(t&&i.size>0){!O.hasEmojiFont()&&!It&&(It=!0,console.warn("[framefields] Text uses emoji but no emoji font is registered, so exports draw nothing for them. Register a color emoji font (e.g. Noto Color Emoji) with FontManager.registerEmojiFont(path)."));for(let[s,a]of i){let o=s.slice(0,s.lastIndexOf("-"));n.push(O.preloadEmoji(t,o,a).catch(l=>{O.hasEmojiFont()&&e(l,`emoji "${o}"`)}))}}await Promise.all(n)}export{ee as a,E as b,z as c,lt as d,br as e,pt as f,At as g,Fr as h};
480
+ `;var Z=class{device;pipeline;uniformLayout;uniformPool;vertexPool;uniformBindGroupCache=new U;uniformData=new Float32Array(72);vertexData=new Float32Array(8);constructor(t,e){this.device=t,this.uniformPool=new G(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new G(256,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=t.createShaderModule({label:"solid.wgsl",code:$t});this.uniformLayout=C(t),this.pipeline=T(t,{label:"SolidPipeline",module:r,uniformLayout:this.uniformLayout,format:e,topology:"triangle-strip"})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(t,e,r,i,n,s,a=0,o){let l=Y(i),u=l?{r:0,g:0,b:0,a:1}:D(i),h=o?.opacity??1;e.packIntoBuffer(this.uniformData,h,n,s,o?.transform),this.uniformData[15]=a,this.uniformData[16]=u.r,this.uniformData[17]=u.g,this.uniformData[18]=u.b,this.uniformData[19]=u.a,this.uniformData[20]=r.x,this.uniformData[21]=r.y,this.uniformData[22]=r.width,this.uniformData[23]=r.height,X(l,r,this.uniformData,24);let p=this.uniformPool.getBuffer(this.device,this.uniformData),d=0;if(a>0){let P=o?.transform?e.getCurrent().multiply(o.transform):e.getCurrent(),S=Math.min(Math.hypot(P.a,P.b),Math.hypot(P.c,P.d));d=2/Math.max(S,.001)}let f=r.x-d,m=r.y-d,y=r.x+r.width+d,g=r.y+r.height+d;this.vertexData[0]=f,this.vertexData[1]=m,this.vertexData[2]=y,this.vertexData[3]=m,this.vertexData[4]=f,this.vertexData[5]=g,this.vertexData[6]=y,this.vertexData[7]=g;let v=this.vertexPool.getBuffer(this.device,this.vertexData);t.setPipeline(this.pipeline);let b=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,p);t.setBindGroup(0,b),t.setVertexBuffer(0,v),t.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};x();var J=class{stack=[new DOMMatrix];push(t){let r=this.stack[this.stack.length-1].multiply(t);this.stack.push(r)}pop(){this.stack.length>1&&this.stack.pop()}getCurrent(){return this.stack[this.stack.length-1]}packIntoBuffer(t,e,r,i,n,s){let a=this.getCurrent();n&&(a=a.multiply(n)),t[0]=a.a,t[1]=a.b,t[2]=0,t[3]=0,t[4]=a.c,t[5]=a.d,t[6]=0,t[7]=0,t[8]=a.e,t[9]=a.f,t[10]=1,t[11]=0,t[12]=e,t[13]=r,t[14]=i,t[15]=s??0}destroy(){this.stack=[new DOMMatrix]}};function Kt(c){if(Array.isArray(c)){let r=c[3]??1;return[c[0]*r,c[1]*r,c[2]*r,r]}if("r"in c){let r=c.a??1;return{r:c.r*r,g:c.g*r,b:c.b*r,a:r}}let t=Array.from(c),e=t[3]??1;return[t[0]*e,t[1]*e,t[2]*e,e]}var At=new WeakMap;function br(c,t){let e=At.get(c);return(!e||e.format!==t||e.isDestroyed)&&(e=new pt(c,t),At.set(c,e)),e.resetPools(),e}var pt=class{device;transformStack=new J;clipStack=new W;quadPipeline;solidPipeline;shapeFillPipeline;pathPipeline;effectPipeline;slugPipeline;bindGroupCache=new V;samplerCache=new Mt;format;isDestroyed=!1;rasterDrawCount=0;surfaceWidth=0;surfaceHeight=0;lastEncoder=null;constructor(t,e){this.device=t,this.format=e,this.quadPipeline=new q(t,e),this.solidPipeline=new Z(t,e),this.shapeFillPipeline=new K(t,e),this.pathPipeline=new H(t,e),this.effectPipeline=new E(t,e),this.slugPipeline=new wt(t,e)}beginFrame(t,e,r={r:0,g:0,b:0,a:0},i,n,s="clear"){this.surfaceWidth=i,this.surfaceHeight=n,t!==this.lastEncoder&&(this.lastEncoder=t,this.resetPools());let a=t.beginRenderPass({colorAttachments:[{view:e,clearValue:Kt(r),loadOp:s,storeOp:"store"}]});return this.clipStack.applyScissorToPass(a,i,n),a}endFrame(t){}resetPools(){this.quadPipeline.resetPools(),this.solidPipeline.resetPools(),this.shapeFillPipeline.resetPools(),this.pathPipeline.resetPools(),this.effectPipeline&&this.effectPipeline.resetPools(),this.slugPipeline.resetPools(),ot.flushRetired(this.device),ot.prune(this.device)}drawTexture(t,e,r,i){let n=this.samplerCache.getSampler(this.device),s={x:0,y:0,width:e.width,height:e.height};this.rasterDrawCount++,this.quadPipeline.draw(t,this.bindGroupCache,this.transformStack,e,n,s,r,this.surfaceWidth,this.surfaceHeight,i)}drawTextureRegion(t,e,r,i,n){let s=this.samplerCache.getSampler(this.device);this.rasterDrawCount++,this.quadPipeline.draw(t,this.bindGroupCache,this.transformStack,e,s,r,i,this.surfaceWidth,this.surfaceHeight,n)}drawRect(t,e,r,i=0,n){let s=0,a=n;typeof i=="object"&&i!==null?(a=i,s=0):typeof i=="number"&&(s=i),this.rasterDrawCount++,this.solidPipeline.draw(t,this.transformStack,e,r,this.surfaceWidth,this.surfaceHeight,s,a)}drawPath(t,e,r,i,n){this.rasterDrawCount++,this.pathPipeline.drawPath(t,this.transformStack,e,r,i,this.surfaceWidth,this.surfaceHeight,n)}drawShapeFill(t,e,r,i,n){this.rasterDrawCount++,this.shapeFillPipeline.draw(t,this.transformStack,e,r,i,this.surfaceWidth,this.surfaceHeight,n)}drawShape(t,e,r,i,n){let s={x:0,y:0,width:e.width,height:e.height};if(r&&r.type!=="none"){let a=_t(e);if(a.length>0&&(this.drawShapeFill(t,a,r,s,n),(!i||!i.width||i.width<=0)&&(r.type??"solid")==="solid"&&r.color)){let o=lt(e);o&&this.drawPath(t,o,r.color,1,{...n,strokeLineCap:"round"})}}if(i&&i.width&&i.width>0&&i.color){let a=lt(e);a&&this.drawPath(t,a,i.color,i.width,{...n,strokeLineCap:i.cap,trimStart:i.trimStart,trimEnd:i.trimEnd,trimOffset:i.trimOffset,strokeDashArray:i.dashArray,strokeDashOffset:i.dashOffset})}}drawRRect(t,e,r,i){this.drawRect(t,e.rect,r,e.rx,i)}getTemporaryTexture(t,e,r){return this.effectPipeline.getTexture(this.device,t,e,this.format,r)}getTemporaryBuffer(t){return this.effectPipeline.getBuffer(this.device,t)}composite(t,e,r,i,n){return this.effectPipeline.composite(t,this.bindGroupCache,this.samplerCache,e,r,i,this.format,n)}applyMotionBlur(t,e,r,i,n=180,s=16,a){return this.effectPipeline.applyMotionBlur(t,this.bindGroupCache,this.samplerCache,e,r,i,n,s,this.format,a)}getCurrentTransform(){return this.transformStack.getCurrent()}getTransformStack(){return this.transformStack}getSurfaceWidth(){return this.surfaceWidth}getSurfaceHeight(){return this.surfaceHeight}pushIdentity(){let t=this.transformStack.getCurrent();this.pushTransform(t.inverse())}pushTransform(t){this.transformStack.push(t)}popTransform(){this.transformStack.pop()}pushScissor(t){this.clipStack.pushScissor(t,this.surfaceWidth,this.surfaceHeight)}pushScissorIntersect(t){let e=this.clipStack.getCurrentScissor(this.surfaceWidth,this.surfaceHeight);if(!e){this.pushScissor(t);return}let r=Math.max(t.x,e.x),i=Math.max(t.y,e.y),n=Math.min(t.x+t.width,e.x+e.width),s=Math.min(t.y+t.height,e.y+e.height);this.pushScissor({x:r,y:i,width:Math.max(0,n-r),height:Math.max(0,s-i)})}pushScissorLocal(t){let e=this.transformStack.getCurrent(),r=[e.transformPoint(new DOMPoint(t.x,t.y)),e.transformPoint(new DOMPoint(t.x+t.width,t.y)),e.transformPoint(new DOMPoint(t.x,t.y+t.height)),e.transformPoint(new DOMPoint(t.x+t.width,t.y+t.height))],i=r.map(h=>h.x),n=r.map(h=>h.y),s=Math.min(...i),a=Math.min(...n),o=Math.max(...i)-s,l=Math.max(...n)-a,u=this.clipStack.getCurrentScissor(this.surfaceWidth,this.surfaceHeight);if(u){let h=Math.max(s,u.x),p=Math.max(a,u.y),d=Math.min(s+o,u.x+u.width),f=Math.min(a+l,u.y+u.height);s=h,a=p,o=Math.max(0,d-h),l=Math.max(0,f-p)}this.clipStack.pushScissor({x:s,y:a,width:o,height:l},this.surfaceWidth,this.surfaceHeight)}popScissor(){this.clipStack.popScissor()}suspendScissors(){let t=this.clipStack.saveScissors();return this.clipStack.clearScissors(),t}resumeScissors(t){this.clipStack.restoreScissors(t)}pushStencilClip(t){this.clipStack.pushStencilClip(t)}popStencilClip(){this.clipStack.popStencilClip()}destroy(){this.isDestroyed=!0,this.transformStack.destroy(),this.clipStack.destroy(),this.bindGroupCache.destroy(),this.samplerCache.destroy(),this.quadPipeline.destroy(),this.solidPipeline.destroy(),this.shapeFillPipeline.destroy(),this.pathPipeline.destroy(),this.effectPipeline.destroy(),this.slugPipeline.destroy(),this.lastEncoder=null}};x();async function It(c,t){if(typeof window<"u"&&typeof FontFace<"u"){let e=typeof t=="string"?t:"its registered bytes";try{let i=await new FontFace(c,typeof t=="string"?`url(${t})`:t).load();document.fonts.add(i),await document.fonts.ready}catch(r){console.warn(`[preloadFont] Failed to load font "${c}" from ${e}:`,r)}}else typeof t=="string"&&await Pt(c,t)}x();var Et=!1;async function Fr(c,t,e=(r,i)=>console.warn(`[framefields] ${i}`,r)){let r=new Set,i=new Map;(function s(a){let o=a.operation;if(o){let l=o.op==="text"||o.kind==="text"||o.op==="caption"||o.kind==="caption"||typeof o.text=="string",u=o.fontFamily||(l?"Inter":"");if(u&&r.add(u),l&&typeof o.text=="string"){let h=o.fontSize??48;for(let p of St(o.text))i.set(`${p}-${h}`,h)}}for(let l of a.children??[])s(l)})(c);let n=[];for(let s of r){let a=Ut(s),o=Bt(s),l=typeof a=="string"?a:"its registered bytes";n.push(It(s,a).catch(u=>e(u,`font "${s}" from ${l}`))),t&&n.push(O.preloadSlugFont(t,s,o).catch(u=>e(u,`Slug font "${s}" from ${o}`)))}if(t&&i.size>0){!O.hasEmojiFont()&&!Et&&(Et=!0,console.warn("[framefields] Text uses emoji but no emoji font is registered, so exports draw nothing for them. Register a color emoji font (e.g. Noto Color Emoji) with FontManager.registerEmojiFont(path)."));for(let[s,a]of i){let o=s.slice(0,s.lastIndexOf("-"));n.push(O.preloadEmoji(t,o,a).catch(l=>{O.hasEmojiFont()&&e(l,`emoji "${o}"`)}))}}await Promise.all(n)}export{ee as a,E as b,z as c,lt as d,br as e,pt as f,It as g,Fr as h};