framefields 2.0.3 → 2.0.6

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 (360) hide show
  1. package/README.md +4 -26
  2. package/dist/audio/index.d.mts +4 -4
  3. package/dist/audio/index.mjs +10 -10
  4. package/dist/{audio-DbxiKp5p.mjs → audio-D6enPyAG.mjs} +4 -4
  5. package/dist/{audio-DbxiKp5p.mjs.map → audio-D6enPyAG.mjs.map} +1 -1
  6. package/dist/{audio-Dvwwz8xU.d.mts → audio-a6pY05g2.d.mts} +3 -3
  7. package/dist/{audio-Dvwwz8xU.d.mts.map → audio-a6pY05g2.d.mts.map} +1 -1
  8. package/dist/{dist-Bx6J0VcM.mjs → dist-B9Afsv83.mjs} +47 -2
  9. package/dist/dist-B9Afsv83.mjs.map +1 -0
  10. package/dist/{dist-DKm2IyEJ.mjs → dist-DzUJmIHt.mjs} +2 -2
  11. package/dist/dist-DzUJmIHt.mjs.map +1 -0
  12. package/dist/{dist-CGIme1vZ.mjs → dist-JkiL-qy7.mjs} +60 -17
  13. package/dist/dist-JkiL-qy7.mjs.map +1 -0
  14. package/dist/{dist-DuIv211_.mjs → dist-sHqWCB9M.mjs} +215 -127
  15. package/dist/dist-sHqWCB9M.mjs.map +1 -0
  16. package/dist/effects/index.d.mts +5 -5
  17. package/dist/effects/index.mjs +25 -25
  18. package/dist/effects-l0T61DPU.mjs +2086 -0
  19. package/dist/effects-l0T61DPU.mjs.map +1 -0
  20. package/dist/fonts/index.d.mts +1 -1
  21. package/dist/fonts/index.mjs +1 -1
  22. package/dist/{fonts-CwwIhe1o.mjs → fonts-CuG-05-_.mjs} +13 -2
  23. package/dist/fonts-CuG-05-_.mjs.map +1 -0
  24. package/dist/{index-CnAk1hTw.d.mts → index-BJUS4Nx6.d.mts} +2 -2
  25. package/dist/index-BJUS4Nx6.d.mts.map +1 -0
  26. package/dist/{index-D7llSs-m.d.mts → index-BJx_Qxc_.d.mts} +2510 -125
  27. package/dist/{index-D7llSs-m.d.mts.map → index-BJx_Qxc_.d.mts.map} +1 -1
  28. package/dist/{index-D1ZsMpke.d.mts → index-BLbUQolI.d.mts} +3 -3
  29. package/dist/{index-D1ZsMpke.d.mts.map → index-BLbUQolI.d.mts.map} +1 -1
  30. package/dist/{index-D2wJqSl5.d.mts → index-Bi2nRZ_g.d.mts} +3 -3
  31. package/dist/{index-D2wJqSl5.d.mts.map → index-Bi2nRZ_g.d.mts.map} +1 -1
  32. package/dist/{index-BMVVmc4G.d.mts → index-CZChQhXZ.d.mts} +2 -2
  33. package/dist/index-CZChQhXZ.d.mts.map +1 -0
  34. package/dist/{index-DiSKzDGR.d.mts → index-CbzEM_o6.d.mts} +8 -1
  35. package/dist/index-CbzEM_o6.d.mts.map +1 -0
  36. package/dist/{index-D2jDC7O5.d.mts → index-WIPHLy5m.d.mts} +31 -2
  37. package/dist/index-WIPHLy5m.d.mts.map +1 -0
  38. package/dist/index.d.mts +111 -69
  39. package/dist/index.d.mts.map +1 -1
  40. package/dist/index.mjs +52 -45
  41. package/dist/index.mjs.map +1 -1
  42. package/dist/preview/index.d.mts +3 -3
  43. package/dist/preview/index.mjs +10 -10
  44. package/dist/{preview-D7TqF9i_.mjs → preview-CcooLR2s.mjs} +74 -66
  45. package/dist/preview-CcooLR2s.mjs.map +1 -0
  46. package/dist/preview-engine/audio.mjs +1 -1
  47. package/dist/preview-engine/{chunk-H5BPCY7N.mjs → chunk-24DXIKXL.mjs} +2 -2
  48. package/dist/preview-engine/{chunk-QP2NI4XD.mjs → chunk-2XXICKQV.mjs} +1 -1
  49. package/dist/preview-engine/{chunk-EDIZNO3P.mjs → chunk-3ROJ7JVY.mjs} +1 -1
  50. package/dist/preview-engine/chunk-45JOFIHE.mjs +8 -0
  51. package/dist/preview-engine/{chunk-HAXK42HG.mjs → chunk-5NYKHIQN.mjs} +10 -10
  52. package/dist/preview-engine/{chunk-VSSB73UU.mjs → chunk-66NVL4BN.mjs} +2 -2
  53. package/dist/preview-engine/{chunk-AOLAHYVV.mjs → chunk-6JW37VJA.mjs} +1 -1
  54. package/dist/preview-engine/chunk-7MJVROKR.mjs +98 -0
  55. package/dist/preview-engine/{chunk-Z4ERCLNF.mjs → chunk-7NVDTELW.mjs} +1 -1
  56. package/dist/preview-engine/{chunk-SXX7HX34.mjs → chunk-AMBSW6OA.mjs} +2 -2
  57. package/dist/preview-engine/{chunk-UDNCEHUI.mjs → chunk-BE3CEVJB.mjs} +1 -1
  58. package/dist/preview-engine/{chunk-CA5N7JRZ.mjs → chunk-BQ65MU6H.mjs} +1 -1
  59. package/dist/preview-engine/{chunk-LEEZXHQO.mjs → chunk-BWDARDO6.mjs} +1 -1
  60. package/dist/preview-engine/{chunk-ZX6APG6E.mjs → chunk-CXFEQ5PM.mjs} +1 -1
  61. package/dist/preview-engine/chunk-D3TETPLI.mjs +5 -0
  62. package/dist/preview-engine/{chunk-B6PLCMBM.mjs → chunk-DMWSTYFF.mjs} +1 -1
  63. package/dist/preview-engine/{chunk-6ZOXGAYA.mjs → chunk-EJTGJVUA.mjs} +2 -2
  64. package/dist/preview-engine/{chunk-3O5OKR6D.mjs → chunk-EQ4QZRXB.mjs} +2 -2
  65. package/dist/preview-engine/{chunk-I4FH6HYU.mjs → chunk-FE6RSVKZ.mjs} +1 -1
  66. package/dist/preview-engine/{chunk-U446SQP3.mjs → chunk-GHMCGTJ2.mjs} +1 -1
  67. package/dist/preview-engine/{chunk-M2GRYRLM.mjs → chunk-HPIULG7P.mjs} +1 -1
  68. package/dist/preview-engine/{chunk-G3HW4VER.mjs → chunk-HRIKNYPF.mjs} +1 -1
  69. package/dist/preview-engine/{chunk-G76HSKOS.mjs → chunk-IGFT3XLN.mjs} +1 -1
  70. package/dist/preview-engine/{chunk-NWRSVVTF.mjs → chunk-JQ4WY6BZ.mjs} +1 -1
  71. package/dist/preview-engine/chunk-KNZU3Z2F.mjs +3 -0
  72. package/dist/preview-engine/{chunk-JWNHTRED.mjs → chunk-LIHUEYI5.mjs} +2 -2
  73. package/dist/preview-engine/{chunk-DPPH3NK2.mjs → chunk-NRHSNPZV.mjs} +1 -1
  74. package/dist/preview-engine/{chunk-BUIQ5TUH.mjs → chunk-OWOSYNMF.mjs} +1 -1
  75. package/dist/preview-engine/chunk-OZVCWK27.mjs +418 -0
  76. package/dist/preview-engine/{chunk-D5PHI6ET.mjs → chunk-PO4VAAQC.mjs} +1 -1
  77. package/dist/preview-engine/{chunk-LP3EP33S.mjs → chunk-POPVFC5P.mjs} +1 -1
  78. package/dist/preview-engine/chunk-PQD5UPHG.mjs +5 -0
  79. package/dist/preview-engine/{chunk-SA3JUR6D.mjs → chunk-QGBSLNFI.mjs} +1 -1
  80. package/dist/preview-engine/{chunk-H2F5NVQ6.mjs → chunk-QM3XFEJN.mjs} +1 -1
  81. package/dist/preview-engine/{chunk-L62MRHGZ.mjs → chunk-R3ZH7YF3.mjs} +1 -1
  82. package/dist/preview-engine/{chunk-V7ZVVUQU.mjs → chunk-R6YNSBKL.mjs} +1 -1
  83. package/dist/preview-engine/{chunk-GYG2IIBR.mjs → chunk-RJJRPL42.mjs} +1 -1
  84. package/dist/preview-engine/chunk-S3P3MJYU.mjs +1 -0
  85. package/dist/preview-engine/chunk-SUUUYXXT.mjs +1 -0
  86. package/dist/preview-engine/{chunk-55CCFPUX.mjs → chunk-TNZENER3.mjs} +1 -1
  87. package/dist/preview-engine/chunk-V6VU46ZG.mjs +52 -0
  88. package/dist/preview-engine/{chunk-5XDHHOF2.mjs → chunk-XCYFPA34.mjs} +1 -1
  89. package/dist/preview-engine/{chunk-EHIIT4ZR.mjs → chunk-XFYXT76H.mjs} +1 -1
  90. package/dist/preview-engine/{chunk-V3H7WWOT.mjs → chunk-XLFYM7KH.mjs} +2 -2
  91. package/dist/preview-engine/{chunk-D7MZHP2Y.mjs → chunk-XSMK5E2V.mjs} +1 -1
  92. package/dist/preview-engine/{chunk-5UP7FSGT.mjs → chunk-Y6FEU4TV.mjs} +1 -1
  93. package/dist/preview-engine/{chunk-HXMDPMLB.mjs → chunk-YG35X5R5.mjs} +1 -1
  94. package/dist/preview-engine/{chunk-KZOLCZIV.mjs → chunk-YITWSOG4.mjs} +1 -1
  95. package/dist/preview-engine/{chunk-4BEJJKEU.mjs → chunk-YK4XHUP4.mjs} +7 -7
  96. package/dist/preview-engine/chunk-ZNGOAGAI.mjs +1 -0
  97. package/dist/preview-engine/effects.mjs +1 -1
  98. package/dist/preview-engine/fonts.mjs +1 -1
  99. package/dist/preview-engine/framefields.mjs +95 -87
  100. package/dist/preview-engine/player.mjs +5 -5
  101. package/dist/preview-engine/renderers-3Y3EMRDJ.mjs +1 -0
  102. package/dist/preview-engine/renderers-47UITXLZ.mjs +1 -0
  103. package/dist/preview-engine/renderers-4AHH6BHF.mjs +1 -0
  104. package/dist/preview-engine/renderers-54AQK6RF.mjs +1 -0
  105. package/dist/preview-engine/renderers-6PRVCTYV.mjs +1 -0
  106. package/dist/preview-engine/{renderers-GUKQUMGG.mjs → renderers-B52QT6MT.mjs} +1 -1
  107. package/dist/preview-engine/{renderers-AGMH5CRH.mjs → renderers-BE6RVJSE.mjs} +1 -1
  108. package/dist/preview-engine/renderers-BMM2BH56.mjs +1 -0
  109. package/dist/preview-engine/{renderers-YWRP23SZ.mjs → renderers-CAUWP4XH.mjs} +2 -2
  110. package/dist/preview-engine/renderers-CHJWUJVI.mjs +1 -0
  111. package/dist/preview-engine/renderers-CHOGQHVQ.mjs +1 -0
  112. package/dist/preview-engine/renderers-DEYDSGJX.mjs +1 -0
  113. package/dist/preview-engine/renderers-DZTNRCR7.mjs +1 -0
  114. package/dist/preview-engine/{renderers-BHVPLYNN.mjs → renderers-E3JYRLSD.mjs} +1 -1
  115. package/dist/preview-engine/renderers-ELO3KWTK.mjs +1 -0
  116. package/dist/preview-engine/{renderers-YKUQUCTO.mjs → renderers-F2KJNDWA.mjs} +1 -1
  117. package/dist/preview-engine/renderers-FCV4COVB.mjs +1 -0
  118. package/dist/preview-engine/{renderers-F2NFJI5L.mjs → renderers-GC7EGB5Z.mjs} +1 -1
  119. package/dist/preview-engine/renderers-GXCRINGC.mjs +1 -0
  120. package/dist/preview-engine/renderers-GYJTBVV2.mjs +1 -0
  121. package/dist/preview-engine/renderers-JA4SLMG3.mjs +1 -0
  122. package/dist/preview-engine/renderers-JLN77CFZ.mjs +1 -0
  123. package/dist/preview-engine/{renderers-6BJA6MSU.mjs → renderers-JQHUBWLL.mjs} +1 -1
  124. package/dist/preview-engine/{renderers-LX654SZ3.mjs → renderers-KBFW7B5F.mjs} +1 -1
  125. package/dist/preview-engine/{renderers-LK3NRMGR.mjs → renderers-KCP4TFHG.mjs} +1 -1
  126. package/dist/preview-engine/renderers-KS4HPV6Q.mjs +1 -0
  127. package/dist/preview-engine/renderers-LJRJMFCR.mjs +1 -0
  128. package/dist/preview-engine/renderers-LPAPZ5QS.mjs +1 -0
  129. package/dist/preview-engine/renderers-N5UPJY73.mjs +1 -0
  130. package/dist/preview-engine/renderers-NS3AIJVG.mjs +1 -0
  131. package/dist/preview-engine/renderers-OBMTU3QY.mjs +1 -0
  132. package/dist/preview-engine/{renderers-ZPWOUWZJ.mjs → renderers-PW4OJWHF.mjs} +1 -1
  133. package/dist/preview-engine/renderers-PXGLEFZO.mjs +1 -0
  134. package/dist/preview-engine/{renderers-7AO5746S.mjs → renderers-Q2ZDD5K2.mjs} +1 -1
  135. package/dist/preview-engine/renderers-Q3MD34JN.mjs +1 -0
  136. package/dist/preview-engine/renderers-QECJP22T.mjs +1 -0
  137. package/dist/preview-engine/{renderers-R3XEYD5V.mjs → renderers-R5WSHETG.mjs} +4 -4
  138. package/dist/preview-engine/renderers-RXGNA2Q7.mjs +1 -0
  139. package/dist/preview-engine/renderers-TG62LZTF.mjs +1 -0
  140. package/dist/preview-engine/{renderers-AHSGP6LY.mjs → renderers-TUYQLKHJ.mjs} +1 -1
  141. package/dist/preview-engine/renderers-VTTGFO55.mjs +1 -0
  142. package/dist/preview-engine/{renderers-UTFXZE3G.mjs → renderers-WG7QBD4D.mjs} +1 -1
  143. package/dist/preview-engine/{renderers-VGU3LNLT.mjs → renderers-WLH4HRUE.mjs} +1 -1
  144. package/dist/preview-engine/{renderers-5QYK6766.mjs → renderers-WSMLLSWX.mjs} +1 -1
  145. package/dist/preview-engine/renderers-XFC6ZPO5.mjs +1 -0
  146. package/dist/preview-engine/{renderers-UWPH7HBH.mjs → renderers-XUHRY3XH.mjs} +1 -1
  147. package/dist/preview-engine/renderers-YAOB5XU6.mjs +1 -0
  148. package/dist/preview-engine/renderers-YTB4FOHT.mjs +1 -0
  149. package/dist/preview-engine/signals.mjs +1 -1
  150. package/dist/{program-Cjva0Nw2.mjs → program-DPFDbeL9.mjs} +12 -7
  151. package/dist/{program-Cjva0Nw2.mjs.map → program-DPFDbeL9.mjs.map} +1 -1
  152. package/dist/renderer/index.d.mts +2 -2
  153. package/dist/renderer/index.mjs +2 -2
  154. package/dist/{renderer-DG3VnR50.mjs → renderer--akPySto.mjs} +2 -2
  155. package/dist/{renderer-DG3VnR50.mjs.map → renderer--akPySto.mjs.map} +1 -1
  156. package/dist/{renderer-B8ugHLDi.mjs → renderer-0ty5QtXg.mjs} +9 -8
  157. package/dist/renderer-0ty5QtXg.mjs.map +1 -0
  158. package/dist/renderer-145WIXyW.mjs +3 -0
  159. package/dist/{renderer-DjYRCzzV.mjs → renderer-7v-ZNKEJ.mjs} +2 -2
  160. package/dist/{renderer-DjYRCzzV.mjs.map → renderer-7v-ZNKEJ.mjs.map} +1 -1
  161. package/dist/renderer-9W8q4Y8D.mjs +3 -0
  162. package/dist/{renderer-8dDNjgzG.mjs → renderer-B1IXTeF2.mjs} +2 -2
  163. package/dist/{renderer-8dDNjgzG.mjs.map → renderer-B1IXTeF2.mjs.map} +1 -1
  164. package/dist/{renderer-CBdqOoTN.mjs → renderer-B52Y2SDC.mjs} +1 -1
  165. package/dist/renderer-B5HBViEG.mjs +3 -0
  166. package/dist/renderer-B7naoaVH.mjs +3 -0
  167. package/dist/{renderer-z6Qb5Z-W.mjs → renderer-BD6Jkc8j.mjs} +2 -2
  168. package/dist/{renderer-z6Qb5Z-W.mjs.map → renderer-BD6Jkc8j.mjs.map} +1 -1
  169. package/dist/renderer-BHYmRBem.mjs +3 -0
  170. package/dist/{renderer-Daa-Af8y.mjs → renderer-BHsEOp1I.mjs} +2 -2
  171. package/dist/{renderer-Daa-Af8y.mjs.map → renderer-BHsEOp1I.mjs.map} +1 -1
  172. package/dist/renderer-BL51bhvQ.mjs +3 -0
  173. package/dist/{renderer-9ZcinEHr.mjs → renderer-BNBh4omF.mjs} +2 -2
  174. package/dist/{renderer-9ZcinEHr.mjs.map → renderer-BNBh4omF.mjs.map} +1 -1
  175. package/dist/{renderer-Bmt3fpzg.mjs → renderer-BShK_xMJ.mjs} +1 -1
  176. package/dist/{renderer-aH8p3zLE.mjs → renderer-BUJ6uaJE.mjs} +3 -3
  177. package/dist/{renderer-aH8p3zLE.mjs.map → renderer-BUJ6uaJE.mjs.map} +1 -1
  178. package/dist/{renderer-BXDrwZNT.mjs → renderer-BV_d3D_3.mjs} +3 -3
  179. package/dist/{renderer-BXDrwZNT.mjs.map → renderer-BV_d3D_3.mjs.map} +1 -1
  180. package/dist/{renderer-B5Tq5MWB.mjs → renderer-BXWu8aHU.mjs} +3 -3
  181. package/dist/{renderer-B5Tq5MWB.mjs.map → renderer-BXWu8aHU.mjs.map} +1 -1
  182. package/dist/{renderer-DDp7_TUi.d.mts → renderer-Bal8734U.d.mts} +2 -2
  183. package/dist/{renderer-DDp7_TUi.d.mts.map → renderer-Bal8734U.d.mts.map} +1 -1
  184. package/dist/{renderer-BwE5dnyL.mjs → renderer-BbwOEawB.mjs} +2 -2
  185. package/dist/{renderer-BwE5dnyL.mjs.map → renderer-BbwOEawB.mjs.map} +1 -1
  186. package/dist/renderer-BfvBHHNr.mjs +3 -0
  187. package/dist/{renderer-BcckaXum.mjs → renderer-BgrDGRNW.mjs} +2 -2
  188. package/dist/{renderer-BcckaXum.mjs.map → renderer-BgrDGRNW.mjs.map} +1 -1
  189. package/dist/{renderer-CkLD7Lp7.mjs → renderer-BhfFVqCx.mjs} +2 -2
  190. package/dist/{renderer-CkLD7Lp7.mjs.map → renderer-BhfFVqCx.mjs.map} +1 -1
  191. package/dist/{renderer-Y7-Us00q.mjs → renderer-Bl9C9lIo.mjs} +1 -1
  192. package/dist/{renderer-CuppzplW.mjs → renderer-BpTwFaja.mjs} +3 -3
  193. package/dist/{renderer-CuppzplW.mjs.map → renderer-BpTwFaja.mjs.map} +1 -1
  194. package/dist/{renderer-BBweieq9.mjs → renderer-Bpf8EGY1.mjs} +2 -2
  195. package/dist/{renderer-BBweieq9.mjs.map → renderer-Bpf8EGY1.mjs.map} +1 -1
  196. package/dist/renderer-ByxrzTRg.mjs +3 -0
  197. package/dist/{renderer-1ccLpvz3.mjs → renderer-C-F91lPu.mjs} +2 -2
  198. package/dist/{renderer-1ccLpvz3.mjs.map → renderer-C-F91lPu.mjs.map} +1 -1
  199. package/dist/{renderer-CeF66MG3.mjs → renderer-C5lJvf-h.mjs} +2 -2
  200. package/dist/{renderer-CeF66MG3.mjs.map → renderer-C5lJvf-h.mjs.map} +1 -1
  201. package/dist/renderer-CDirzReW.mjs +3 -0
  202. package/dist/renderer-CGCmbeJ2.mjs +3 -0
  203. package/dist/renderer-CL3evUmF.mjs +3 -0
  204. package/dist/{renderer-NYcVjCOi.mjs → renderer-CLUPc9do.mjs} +3 -3
  205. package/dist/{renderer-NYcVjCOi.mjs.map → renderer-CLUPc9do.mjs.map} +1 -1
  206. package/dist/{renderer-B6YiOv7l.mjs → renderer-CLWAbaCS.mjs} +9 -8
  207. package/dist/renderer-CLWAbaCS.mjs.map +1 -0
  208. package/dist/{renderer-DWvg6ZKK.mjs → renderer-CM5c8a7B.mjs} +8 -7
  209. package/dist/renderer-CM5c8a7B.mjs.map +1 -0
  210. package/dist/renderer-CO0KsnEg.mjs +3 -0
  211. package/dist/renderer-COO44HDO.mjs +3 -0
  212. package/dist/renderer-C_9SIgZX.mjs +3 -0
  213. package/dist/{renderer-B0DTz9Fr.mjs → renderer-Cgy1H0Ql.mjs} +2 -2
  214. package/dist/{renderer-B0DTz9Fr.mjs.map → renderer-Cgy1H0Ql.mjs.map} +1 -1
  215. package/dist/{renderer-D9lcIxrz.mjs → renderer-CmMNU1-P.mjs} +9 -9
  216. package/dist/renderer-CmMNU1-P.mjs.map +1 -0
  217. package/dist/{renderer-VHpQTPbr.mjs → renderer-Cn-p1SyO.mjs} +34 -18
  218. package/dist/renderer-Cn-p1SyO.mjs.map +1 -0
  219. package/dist/renderer-CntaTaNq.mjs +3 -0
  220. package/dist/{renderer-BusX07ZE.mjs → renderer-CsE9ztUa.mjs} +3 -3
  221. package/dist/{renderer-BusX07ZE.mjs.map → renderer-CsE9ztUa.mjs.map} +1 -1
  222. package/dist/renderer-CtVkU_GA.mjs.map +1 -1
  223. package/dist/renderer-Cv9JLpL6.mjs +3 -0
  224. package/dist/{renderer-x2s9LmVL.mjs → renderer-D-4Yh-RK.mjs} +2 -2
  225. package/dist/{renderer-x2s9LmVL.mjs.map → renderer-D-4Yh-RK.mjs.map} +1 -1
  226. package/dist/renderer-D0FWIsWn.mjs +3 -0
  227. package/dist/{renderer-CxE-8m71.mjs → renderer-D3FsnptO.mjs} +1 -1
  228. package/dist/renderer-D3jUYUDU.mjs +3 -0
  229. package/dist/renderer-D5Je-AeQ.mjs +3 -0
  230. package/dist/{renderer-DQQnEcSA.mjs → renderer-DJPuwTbS.mjs} +10 -8
  231. package/dist/renderer-DJPuwTbS.mjs.map +1 -0
  232. package/dist/{renderer-vnHsTpQf.mjs → renderer-DM79djHG.mjs} +58 -88
  233. package/dist/{renderer-vnHsTpQf.mjs.map → renderer-DM79djHG.mjs.map} +1 -1
  234. package/dist/renderer-DNPwpmYS.mjs +3 -0
  235. package/dist/{renderer-Bh1pfpzz.mjs → renderer-DRf4FLSq.mjs} +10 -9
  236. package/dist/renderer-DRf4FLSq.mjs.map +1 -0
  237. package/dist/{renderer-CcDfRa1o.mjs → renderer-DVj8jfmO.mjs} +9 -8
  238. package/dist/renderer-DVj8jfmO.mjs.map +1 -0
  239. package/dist/renderer-DawVsNLw.mjs +3 -0
  240. package/dist/renderer-Dl_6Kn87.mjs +3 -0
  241. package/dist/renderer-DlrJSfaw.mjs +3 -0
  242. package/dist/{renderer-Dm0r9IBd.mjs → renderer-DnXQXk-8.mjs} +2 -2
  243. package/dist/{renderer-Dm0r9IBd.mjs.map → renderer-DnXQXk-8.mjs.map} +1 -1
  244. package/dist/{renderer-s_HENMCc.mjs → renderer-Dntxca07.mjs} +2 -2
  245. package/dist/{renderer-s_HENMCc.mjs.map → renderer-Dntxca07.mjs.map} +1 -1
  246. package/dist/renderer-DpScOWGG.mjs +4 -0
  247. package/dist/{renderer-CXO4wWOT.mjs → renderer-DvHpzsUV.mjs} +2 -2
  248. package/dist/{renderer-CXO4wWOT.mjs.map → renderer-DvHpzsUV.mjs.map} +1 -1
  249. package/dist/renderer-DxYOA1MM.mjs +3 -0
  250. package/dist/{renderer-BgAzIw8w.mjs → renderer-E5D4H5dK.mjs} +3 -3
  251. package/dist/{renderer-BgAzIw8w.mjs.map → renderer-E5D4H5dK.mjs.map} +1 -1
  252. package/dist/{renderer-DFA0KBdj.mjs → renderer-L72D1mwv.mjs} +3 -3
  253. package/dist/{renderer-DFA0KBdj.mjs.map → renderer-L72D1mwv.mjs.map} +1 -1
  254. package/dist/renderer-S7jOr_jF.mjs +3 -0
  255. package/dist/{renderer-BQgAn_oc.mjs → renderer-XRGwrdg8.mjs} +5 -5
  256. package/dist/renderer-XRGwrdg8.mjs.map +1 -0
  257. package/dist/{renderer-DVSagfD4.mjs → renderer-doPt4zQZ.mjs} +2 -2
  258. package/dist/{renderer-DVSagfD4.mjs.map → renderer-doPt4zQZ.mjs.map} +1 -1
  259. package/dist/{renderer-Dm08-hAU.mjs → renderer-h-HOoLwD.mjs} +2 -2
  260. package/dist/{renderer-Dm08-hAU.mjs.map → renderer-h-HOoLwD.mjs.map} +1 -1
  261. package/dist/renderer-kN2TeWks.mjs +3 -0
  262. package/dist/{renderers-BWg16W-V-FofeEqQL.mjs → renderers-CP8CFWDs-CAs5DgWj.mjs} +16 -13
  263. package/dist/renderers-CP8CFWDs-CAs5DgWj.mjs.map +1 -0
  264. package/dist/signals/index.d.mts +5 -5
  265. package/dist/signals/index.mjs +6 -6
  266. package/dist/{signals-BwbdO3AN.mjs → signals-CsxqD2AA.mjs} +3 -3
  267. package/dist/{signals-BwbdO3AN.mjs.map → signals-CsxqD2AA.mjs.map} +1 -1
  268. package/package.json +55 -55
  269. package/dist/dist-Bx6J0VcM.mjs.map +0 -1
  270. package/dist/dist-CGIme1vZ.mjs.map +0 -1
  271. package/dist/dist-DKm2IyEJ.mjs.map +0 -1
  272. package/dist/dist-DuIv211_.mjs.map +0 -1
  273. package/dist/effects-B_APkGJJ.mjs +0 -811
  274. package/dist/effects-B_APkGJJ.mjs.map +0 -1
  275. package/dist/fonts-CwwIhe1o.mjs.map +0 -1
  276. package/dist/index-BMVVmc4G.d.mts.map +0 -1
  277. package/dist/index-CnAk1hTw.d.mts.map +0 -1
  278. package/dist/index-D2jDC7O5.d.mts.map +0 -1
  279. package/dist/index-DiSKzDGR.d.mts.map +0 -1
  280. package/dist/preview-D7TqF9i_.mjs.map +0 -1
  281. package/dist/preview-engine/chunk-47VT677S.mjs +0 -8
  282. package/dist/preview-engine/chunk-4Q7JG6WJ.mjs +0 -1
  283. package/dist/preview-engine/chunk-CVGM2U4J.mjs +0 -47
  284. package/dist/preview-engine/chunk-N4PWLBZ7.mjs +0 -5
  285. package/dist/preview-engine/chunk-P3HBP725.mjs +0 -1
  286. package/dist/preview-engine/chunk-PCB2VB5K.mjs +0 -98
  287. package/dist/preview-engine/chunk-QARN3FLA.mjs +0 -418
  288. package/dist/preview-engine/chunk-SZ7YRPKO.mjs +0 -3
  289. package/dist/preview-engine/chunk-TMRLZV5X.mjs +0 -1
  290. package/dist/preview-engine/chunk-XD4GKD6H.mjs +0 -5
  291. package/dist/preview-engine/chunk-YSTLMWCG.mjs +0 -1
  292. package/dist/preview-engine/renderers-2AUSIYZN.mjs +0 -1
  293. package/dist/preview-engine/renderers-2QN6KZJP.mjs +0 -1
  294. package/dist/preview-engine/renderers-32SKW7ML.mjs +0 -1
  295. package/dist/preview-engine/renderers-6QAF3LQ2.mjs +0 -1
  296. package/dist/preview-engine/renderers-76MPTVZK.mjs +0 -1
  297. package/dist/preview-engine/renderers-AFYKNM6N.mjs +0 -1
  298. package/dist/preview-engine/renderers-ASTBICLA.mjs +0 -1
  299. package/dist/preview-engine/renderers-D7PVQFVU.mjs +0 -1
  300. package/dist/preview-engine/renderers-DB4ABTNA.mjs +0 -1
  301. package/dist/preview-engine/renderers-FI7YHNLY.mjs +0 -1
  302. package/dist/preview-engine/renderers-GBHULMPH.mjs +0 -1
  303. package/dist/preview-engine/renderers-HGT7QDY3.mjs +0 -1
  304. package/dist/preview-engine/renderers-HOYLA7ZK.mjs +0 -1
  305. package/dist/preview-engine/renderers-KKI2D3MZ.mjs +0 -1
  306. package/dist/preview-engine/renderers-KRAJNV4E.mjs +0 -1
  307. package/dist/preview-engine/renderers-KUGZKSVE.mjs +0 -1
  308. package/dist/preview-engine/renderers-L2EQQIOC.mjs +0 -1
  309. package/dist/preview-engine/renderers-MCFQFYEL.mjs +0 -1
  310. package/dist/preview-engine/renderers-OEVXCGE2.mjs +0 -1
  311. package/dist/preview-engine/renderers-QVD6C4CS.mjs +0 -1
  312. package/dist/preview-engine/renderers-RBFWJWVM.mjs +0 -1
  313. package/dist/preview-engine/renderers-RX3VLVLO.mjs +0 -1
  314. package/dist/preview-engine/renderers-SM6JP64K.mjs +0 -1
  315. package/dist/preview-engine/renderers-TKMAATVS.mjs +0 -1
  316. package/dist/preview-engine/renderers-UZGECFVO.mjs +0 -1
  317. package/dist/preview-engine/renderers-WJUTT5BB.mjs +0 -1
  318. package/dist/preview-engine/renderers-XA2M4YXK.mjs +0 -1
  319. package/dist/preview-engine/renderers-XIHRFEFQ.mjs +0 -1
  320. package/dist/preview-engine/renderers-XJTA5MFG.mjs +0 -1
  321. package/dist/preview-engine/renderers-XLTY5APF.mjs +0 -1
  322. package/dist/preview-engine/renderers-XZ3VXFGZ.mjs +0 -1
  323. package/dist/renderer-0kXgErRZ.mjs +0 -3
  324. package/dist/renderer-B6YiOv7l.mjs.map +0 -1
  325. package/dist/renderer-B8ugHLDi.mjs.map +0 -1
  326. package/dist/renderer-B9e4XyZy.mjs +0 -3
  327. package/dist/renderer-BBhCaxS2.mjs +0 -3
  328. package/dist/renderer-BC0iMueW.mjs +0 -3
  329. package/dist/renderer-BGd1VV9J.mjs +0 -3
  330. package/dist/renderer-BJKbasW6.mjs +0 -3
  331. package/dist/renderer-BQgAn_oc.mjs.map +0 -1
  332. package/dist/renderer-BV3mlZMX.mjs +0 -3
  333. package/dist/renderer-BgO4XWZz.mjs +0 -3
  334. package/dist/renderer-Bh1pfpzz.mjs.map +0 -1
  335. package/dist/renderer-Bk842iGl.mjs +0 -4
  336. package/dist/renderer-Bn7jX6n3.mjs +0 -3
  337. package/dist/renderer-CPKOjnkT.mjs +0 -3
  338. package/dist/renderer-CSgVUPHu.mjs +0 -3
  339. package/dist/renderer-CUr66blo.mjs +0 -3
  340. package/dist/renderer-CYC-j_8W.mjs +0 -3
  341. package/dist/renderer-CcDfRa1o.mjs.map +0 -1
  342. package/dist/renderer-Cy7k7eN9.mjs +0 -3
  343. package/dist/renderer-D3poaM-T.mjs +0 -3
  344. package/dist/renderer-D69vFGNB.mjs +0 -3
  345. package/dist/renderer-D9lcIxrz.mjs.map +0 -1
  346. package/dist/renderer-DPSsf8-t.mjs +0 -3
  347. package/dist/renderer-DQQnEcSA.mjs.map +0 -1
  348. package/dist/renderer-DWvg6ZKK.mjs.map +0 -1
  349. package/dist/renderer-DiXzb5FQ.mjs +0 -3
  350. package/dist/renderer-DkKjy-Q0.mjs +0 -3
  351. package/dist/renderer-DlxCfGuA.mjs +0 -3
  352. package/dist/renderer-DnUe5mD1.mjs +0 -3
  353. package/dist/renderer-DwtLqidh.mjs +0 -3
  354. package/dist/renderer-VHpQTPbr.mjs.map +0 -1
  355. package/dist/renderer-WaLyCr37.mjs +0 -3
  356. package/dist/renderer-rrz9Fhwo.mjs +0 -3
  357. package/dist/renderer-ssnm_dWv.mjs +0 -3
  358. package/dist/renderer-xc9wkiC7.mjs +0 -3
  359. package/dist/renderers-BWg16W-V-FofeEqQL.mjs.map +0 -1
  360. /package/dist/preview-engine/{chunk-VJGK7MLJ.mjs → chunk-CBM7B7EW.mjs} +0 -0
@@ -1,3 +1,4 @@
1
+ import { Ot as isSignal } from "./dist-B9Afsv83.mjs";
1
2
  import { ALL_FORMATS, AudioBufferSink, CanvasSink, FilePathSource, Input, UrlSource, VideoSampleSink } from "mediabunny";
2
3
  import * as fontkit from "fontkit";
3
4
  import { decompressFrames, parseGIF } from "gifuct-js";
@@ -3276,6 +3277,44 @@ var WebGPUAudioProcessor = class WebGPUAudioProcessor$1 {
3276
3277
  makeupGainModulation
3277
3278
  });
3278
3279
  const hasBinding = (idx) => (/* @__PURE__ */ new RegExp(`@binding\\s*\\(\\s*${idx}\\s*\\)`)).test(fullShaderCode);
3280
+ const createdBuffers = [];
3281
+ if (isStatic && paramOrder && paramOrder.length > 0) for (const p of paramOrder) {
3282
+ if (signalBufferMap.has(p)) continue;
3283
+ const directVal = op?.[p] ?? (op?.signals)?.[p];
3284
+ if (isSignal(directVal)) {
3285
+ const signalData = new Float32Array(numSamples);
3286
+ const durationSec = durationSeconds > 0 ? durationSeconds : numSamples / _sampleRate;
3287
+ for (let s = 0; s < numSamples; s++) {
3288
+ const t = elapsedSeconds + s / _sampleRate;
3289
+ const f = t * fps;
3290
+ const progress = durationSec > 0 ? t / durationSec : 0;
3291
+ signalData[s] = Number(directVal.get({
3292
+ frame: f,
3293
+ fps,
3294
+ time: t,
3295
+ duration: durationSec * fps,
3296
+ durationMs: durationSec * 1e3,
3297
+ progress,
3298
+ deltaTime: 1 / _sampleRate
3299
+ })) || 0;
3300
+ }
3301
+ const buf = device.createBuffer({
3302
+ size: Math.max(16, Math.ceil(signalData.byteLength / 16) * 16),
3303
+ usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,
3304
+ mappedAtCreation: true,
3305
+ label: `audio_direct_signal_${nodeId}_${p}`
3306
+ });
3307
+ new Float32Array(buf.getMappedRange()).set(signalData);
3308
+ buf.unmap();
3309
+ signalBufferMap.set(p, buf);
3310
+ createdBuffers.push(buf);
3311
+ activeBindings.push({
3312
+ parameterName: p,
3313
+ signalNodeId: `direct_${p}`,
3314
+ signalFnName: "direct_sig"
3315
+ });
3316
+ }
3317
+ }
3279
3318
  if (isStatic) {
3280
3319
  if (paramOrder && paramOrder.length > 0) for (let i = 0; i < paramOrder.length; i++) {
3281
3320
  const p = paramOrder[i];
@@ -3319,122 +3358,126 @@ var WebGPUAudioProcessor = class WebGPUAudioProcessor$1 {
3319
3358
  deviceCache.set(cacheKey, cached$1);
3320
3359
  } else if (stateUpdate) device.queue.writeBuffer(cached$1.stateBuffer, 0, stateUpdate);
3321
3360
  const CHUNK_SIZE = 65536;
3322
- for (let offset = 0; offset < numSamples; offset += CHUNK_SIZE) {
3323
- const chunkSamples = Math.min(CHUNK_SIZE, numSamples - offset);
3324
- const canReuse = cached$1.inputBuffer && cached$1.outputBuffer && cached$1.uniformBuffer && cached$1.allocatedSamples && cached$1.allocatedSamples >= chunkSamples && cached$1.allocatedChannels && cached$1.allocatedChannels >= numChannels && cached$1.allocatedUniformsFloatCount && cached$1.allocatedUniformsFloatCount >= uniformsFloatCount;
3325
- let inputBuffer;
3326
- let outputBuffer;
3327
- let uniformBuffer;
3328
- if (canReuse) {
3329
- inputBuffer = cached$1.inputBuffer;
3330
- outputBuffer = cached$1.outputBuffer;
3331
- uniformBuffer = cached$1.uniformBuffer;
3332
- } else {
3333
- const allocSamples = Math.max(chunkSamples, CHUNK_SIZE);
3334
- const allocChannels = numChannels;
3335
- const allocUniforms = uniformsFloatCount;
3336
- const freshInput = device.createBuffer({
3337
- size: allocChannels * allocSamples * 4,
3338
- usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,
3339
- label: `audio_input_temp_${nodeId}_chunk_${offset}`
3340
- });
3341
- const freshOutput = device.createBuffer({
3342
- size: allocChannels * allocSamples * 4,
3343
- usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
3344
- label: `audio_output_temp_${nodeId}_chunk_${offset}`
3345
- });
3346
- const freshUniform = device.createBuffer({
3347
- size: allocUniforms * 4,
3348
- usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
3349
- label: `audio_uniforms_temp_${nodeId}_chunk_${offset}`
3350
- });
3351
- inputBuffer = freshInput;
3352
- outputBuffer = freshOutput;
3353
- uniformBuffer = freshUniform;
3354
- cached$1.inputBuffer?.destroy();
3355
- cached$1.outputBuffer?.destroy();
3356
- cached$1.uniformBuffer?.destroy();
3357
- cached$1.inputBuffer = freshInput;
3358
- cached$1.outputBuffer = freshOutput;
3359
- cached$1.uniformBuffer = freshUniform;
3360
- cached$1.allocatedSamples = allocSamples;
3361
- cached$1.allocatedChannels = allocChannels;
3362
- cached$1.allocatedUniformsFloatCount = allocUniforms;
3363
- }
3364
- const stagingBuffer = device.createBuffer({
3365
- size: numChannels * chunkSamples * 4,
3366
- usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,
3367
- label: `audio_staging_temp_${nodeId}_chunk_${offset}`
3368
- });
3369
- const entries = [
3370
- {
3371
- binding: 0,
3372
- resource: { buffer: uniformBuffer }
3373
- },
3374
- {
3375
- binding: 1,
3376
- resource: { buffer: inputBuffer }
3377
- },
3378
- {
3379
- binding: 2,
3380
- resource: { buffer: outputBuffer }
3381
- },
3382
- {
3383
- binding: 3,
3384
- resource: { buffer: cached$1.stateBuffer }
3385
- }
3386
- ];
3387
- if (isStatic) for (let i = 0; i < signalBuffers.length; i++) {
3388
- const bindingIndex = 4 + i;
3389
- if (hasBinding(bindingIndex)) {
3390
- const sigBuf = signalBuffers[i];
3391
- if (sigBuf.size >= (offset + chunkSamples) * 4) entries.push({
3392
- binding: bindingIndex,
3393
- resource: {
3394
- buffer: sigBuf,
3395
- offset: offset * 4,
3396
- size: chunkSamples * 4
3397
- }
3361
+ try {
3362
+ for (let offset = 0; offset < numSamples; offset += CHUNK_SIZE) {
3363
+ const chunkSamples = Math.min(CHUNK_SIZE, numSamples - offset);
3364
+ const canReuse = cached$1.inputBuffer && cached$1.outputBuffer && cached$1.uniformBuffer && cached$1.allocatedSamples && cached$1.allocatedSamples >= chunkSamples && cached$1.allocatedChannels && cached$1.allocatedChannels >= numChannels && cached$1.allocatedUniformsFloatCount && cached$1.allocatedUniformsFloatCount >= uniformsFloatCount;
3365
+ let inputBuffer;
3366
+ let outputBuffer;
3367
+ let uniformBuffer;
3368
+ if (canReuse) {
3369
+ inputBuffer = cached$1.inputBuffer;
3370
+ outputBuffer = cached$1.outputBuffer;
3371
+ uniformBuffer = cached$1.uniformBuffer;
3372
+ } else {
3373
+ const allocSamples = Math.max(chunkSamples, CHUNK_SIZE);
3374
+ const allocChannels = numChannels;
3375
+ const allocUniforms = uniformsFloatCount;
3376
+ const freshInput = device.createBuffer({
3377
+ size: allocChannels * allocSamples * 4,
3378
+ usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,
3379
+ label: `audio_input_temp_${nodeId}_chunk_${offset}`
3398
3380
  });
3399
- else entries.push({
3400
- binding: bindingIndex,
3401
- resource: {
3402
- buffer: sigBuf,
3403
- offset: 0,
3404
- size: sigBuf.size
3405
- }
3381
+ const freshOutput = device.createBuffer({
3382
+ size: allocChannels * allocSamples * 4,
3383
+ usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
3384
+ label: `audio_output_temp_${nodeId}_chunk_${offset}`
3385
+ });
3386
+ const freshUniform = device.createBuffer({
3387
+ size: allocUniforms * 4,
3388
+ usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
3389
+ label: `audio_uniforms_temp_${nodeId}_chunk_${offset}`
3406
3390
  });
3391
+ inputBuffer = freshInput;
3392
+ outputBuffer = freshOutput;
3393
+ uniformBuffer = freshUniform;
3394
+ cached$1.inputBuffer?.destroy();
3395
+ cached$1.outputBuffer?.destroy();
3396
+ cached$1.uniformBuffer?.destroy();
3397
+ cached$1.inputBuffer = freshInput;
3398
+ cached$1.outputBuffer = freshOutput;
3399
+ cached$1.uniformBuffer = freshUniform;
3400
+ cached$1.allocatedSamples = allocSamples;
3401
+ cached$1.allocatedChannels = allocChannels;
3402
+ cached$1.allocatedUniformsFloatCount = allocUniforms;
3407
3403
  }
3404
+ const stagingBuffer = device.createBuffer({
3405
+ size: numChannels * chunkSamples * 4,
3406
+ usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,
3407
+ label: `audio_staging_temp_${nodeId}_chunk_${offset}`
3408
+ });
3409
+ const entries = [
3410
+ {
3411
+ binding: 0,
3412
+ resource: { buffer: uniformBuffer }
3413
+ },
3414
+ {
3415
+ binding: 1,
3416
+ resource: { buffer: inputBuffer }
3417
+ },
3418
+ {
3419
+ binding: 2,
3420
+ resource: { buffer: outputBuffer }
3421
+ },
3422
+ {
3423
+ binding: 3,
3424
+ resource: { buffer: cached$1.stateBuffer }
3425
+ }
3426
+ ];
3427
+ if (isStatic) for (let i = 0; i < signalBuffers.length; i++) {
3428
+ const bindingIndex = 4 + i;
3429
+ if (hasBinding(bindingIndex)) {
3430
+ const sigBuf = signalBuffers[i];
3431
+ if (sigBuf.size >= (offset + chunkSamples) * 4) entries.push({
3432
+ binding: bindingIndex,
3433
+ resource: {
3434
+ buffer: sigBuf,
3435
+ offset: offset * 4,
3436
+ size: chunkSamples * 4
3437
+ }
3438
+ });
3439
+ else entries.push({
3440
+ binding: bindingIndex,
3441
+ resource: {
3442
+ buffer: sigBuf,
3443
+ offset: 0,
3444
+ size: sigBuf.size
3445
+ }
3446
+ });
3447
+ }
3448
+ }
3449
+ const bindGroup = device.createBindGroup({
3450
+ layout: cached$1.pipeline.getBindGroupLayout(0),
3451
+ entries
3452
+ });
3453
+ const flatInput = new Float32Array(numChannels * chunkSamples);
3454
+ for (let c = 0; c < numChannels; c++) flatInput.set(channels[c].subarray(offset, offset + chunkSamples), c * chunkSamples);
3455
+ device.queue.writeBuffer(inputBuffer, 0, flatInput);
3456
+ const uniforms = getUniforms(frame / fps + offset / _sampleRate);
3457
+ let numSamplesIndex = -1;
3458
+ for (let i = uniforms.length - 2; i >= 0; i--) if (uniforms[i] === numSamples && uniforms[i + 1] === numChannels) {
3459
+ numSamplesIndex = i;
3460
+ break;
3461
+ }
3462
+ if (numSamplesIndex === -1) numSamplesIndex = uniforms.indexOf(numSamples);
3463
+ if (numSamplesIndex !== -1) uniforms[numSamplesIndex] = chunkSamples;
3464
+ device.queue.writeBuffer(uniformBuffer, 0, new Float32Array(uniforms));
3465
+ const commandEncoder = device.createCommandEncoder({ label: `audio_encoder_${nodeId}_chunk_${offset}` });
3466
+ const passEncoder = commandEncoder.beginComputePass({ label: `audio_pass_${nodeId}_chunk_${offset}` });
3467
+ passEncoder.setPipeline(cached$1.pipeline);
3468
+ passEncoder.setBindGroup(0, bindGroup);
3469
+ passEncoder.dispatchWorkgroups(1);
3470
+ passEncoder.end();
3471
+ commandEncoder.copyBufferToBuffer(outputBuffer, 0, stagingBuffer, 0, numChannels * chunkSamples * 4);
3472
+ device.queue.submit([commandEncoder.finish()]);
3473
+ await stagingBuffer.mapAsync(GPUMapMode.READ);
3474
+ const mappedRange = new Float32Array(stagingBuffer.getMappedRange());
3475
+ for (let c = 0; c < numChannels; c++) channels[c].set(mappedRange.subarray(c * chunkSamples, (c + 1) * chunkSamples), offset);
3476
+ stagingBuffer.unmap();
3477
+ await yieldToMain();
3408
3478
  }
3409
- const bindGroup = device.createBindGroup({
3410
- layout: cached$1.pipeline.getBindGroupLayout(0),
3411
- entries
3412
- });
3413
- const flatInput = new Float32Array(numChannels * chunkSamples);
3414
- for (let c = 0; c < numChannels; c++) flatInput.set(channels[c].subarray(offset, offset + chunkSamples), c * chunkSamples);
3415
- device.queue.writeBuffer(inputBuffer, 0, flatInput);
3416
- const uniforms = getUniforms(frame / fps + offset / _sampleRate);
3417
- let numSamplesIndex = -1;
3418
- for (let i = uniforms.length - 2; i >= 0; i--) if (uniforms[i] === numSamples && uniforms[i + 1] === numChannels) {
3419
- numSamplesIndex = i;
3420
- break;
3421
- }
3422
- if (numSamplesIndex === -1) numSamplesIndex = uniforms.indexOf(numSamples);
3423
- if (numSamplesIndex !== -1) uniforms[numSamplesIndex] = chunkSamples;
3424
- device.queue.writeBuffer(uniformBuffer, 0, new Float32Array(uniforms));
3425
- const commandEncoder = device.createCommandEncoder({ label: `audio_encoder_${nodeId}_chunk_${offset}` });
3426
- const passEncoder = commandEncoder.beginComputePass({ label: `audio_pass_${nodeId}_chunk_${offset}` });
3427
- passEncoder.setPipeline(cached$1.pipeline);
3428
- passEncoder.setBindGroup(0, bindGroup);
3429
- passEncoder.dispatchWorkgroups(1);
3430
- passEncoder.end();
3431
- commandEncoder.copyBufferToBuffer(outputBuffer, 0, stagingBuffer, 0, numChannels * chunkSamples * 4);
3432
- device.queue.submit([commandEncoder.finish()]);
3433
- await stagingBuffer.mapAsync(GPUMapMode.READ);
3434
- const mappedRange = new Float32Array(stagingBuffer.getMappedRange());
3435
- for (let c = 0; c < numChannels; c++) channels[c].set(mappedRange.subarray(c * chunkSamples, (c + 1) * chunkSamples), offset);
3436
- stagingBuffer.unmap();
3437
- await yieldToMain();
3479
+ } finally {
3480
+ for (const b of createdBuffers) b.destroy();
3438
3481
  }
3439
3482
  }
3440
3483
  };
@@ -5343,11 +5386,34 @@ var SlugFontCache = class SlugFontCache$1 {
5343
5386
  static cblcOffset = 0;
5344
5387
  static cbdtOffset = 0;
5345
5388
  /**
5389
+ * Sets the color emoji font text draws emoji with: a CBDT/CBLC bitmap font
5390
+ * such as Noto Color Emoji. framefields ships none, so without one emoji
5391
+ * draw nothing in exports (the browser preview falls back to the system's).
5392
+ */
5393
+ static setEmojiFont(bytes, filePath) {
5394
+ SlugFontCache$1.parseTableDirectory(bytes);
5395
+ if (!SlugFontCache$1.cblcOffset || !SlugFontCache$1.cbdtOffset) {
5396
+ SlugFontCache$1.emojiFontBuffer = null;
5397
+ throw new Error(`Emoji font ${filePath ? `"${filePath}" ` : ""}has no CBDT/CBLC color bitmaps. Use a bitmap color emoji font such as Noto Color Emoji.`);
5398
+ }
5399
+ SlugFontCache$1.emojiFontPath = filePath ?? null;
5400
+ SlugFontCache$1.emojiFontLoadPromise = null;
5401
+ for (const tex of SlugFontCache$1.emojiTextureCache.values()) tex.destroy();
5402
+ SlugFontCache$1.emojiTextureCache.clear();
5403
+ }
5404
+ /** True once an emoji font is set or a path / URL to load one from is. */
5405
+ static hasEmojiFont() {
5406
+ return !!(SlugFontCache$1.emojiFontBuffer || SlugFontCache$1.emojiFontPath || SlugFontCache$1.emojiFontUrl);
5407
+ }
5408
+ /**
5346
5409
  * Parse the SFNT table directory from a raw font buffer and cache
5347
5410
  * the offsets for cmap, CBLC, and CBDT tables.
5348
5411
  */
5349
5412
  static parseTableDirectory(uint8) {
5350
5413
  SlugFontCache$1.emojiFontBuffer = uint8;
5414
+ SlugFontCache$1.cmapOffset = 0;
5415
+ SlugFontCache$1.cblcOffset = 0;
5416
+ SlugFontCache$1.cbdtOffset = 0;
5351
5417
  const view = new DataView(uint8.buffer, uint8.byteOffset, uint8.byteLength);
5352
5418
  const numTables = view.getUint16(4);
5353
5419
  let offset = 12;
@@ -5474,16 +5540,18 @@ var SlugFontCache = class SlugFontCache$1 {
5474
5540
  const key = `${char}-${fontSize}`;
5475
5541
  let tex = SlugFontCache$1.emojiTextureCache.get(key);
5476
5542
  if (tex) return tex;
5477
- if (!!globalThis.__IS_HEADLESS_RENDERER__ || typeof window === "undefined" || typeof globalThis.document === "undefined") {
5478
- const codePoint = char.codePointAt(0);
5479
- if (!codePoint) throw new Error("No codepoint");
5480
- const pngInfo = await SlugFontCache$1.getEmojiPngBuffer(codePoint);
5481
- if (!pngInfo) throw new Error(`Emoji glyph not found in font for ${char}`);
5543
+ const isNode = !!globalThis.__IS_HEADLESS_RENDERER__ || typeof window === "undefined" || typeof globalThis.document === "undefined";
5544
+ const codePoint = char.codePointAt(0);
5545
+ if (!codePoint) throw new Error("No codepoint");
5546
+ const resolutionScale = 4;
5547
+ const targetSize = Math.max(16, Math.ceil(fontSize * 1.5 * resolutionScale));
5548
+ const pngInfo = SlugFontCache$1.hasEmojiFont() ? await SlugFontCache$1.getEmojiPngBuffer(codePoint) : null;
5549
+ if (isNode) {
5550
+ if (!pngInfo) throw new Error(SlugFontCache$1.hasEmojiFont() ? `Emoji glyph not found in font for ${char}` : `No emoji font is set for ${char}; register one with FontManager.registerEmojiFont()`);
5482
5551
  const sharp = (await import(
5483
5552
  /* webpackIgnore: true */
5484
5553
  "sharp"
5485
5554
  )).default;
5486
- const targetSize = Math.max(16, Math.ceil(fontSize * 1.5 * 4));
5487
5555
  const { data, info } = await sharp(Buffer.from(pngInfo.buffer)).ensureAlpha().resize(targetSize, targetSize, {
5488
5556
  fit: "contain",
5489
5557
  background: {
@@ -5512,14 +5580,34 @@ var SlugFontCache = class SlugFontCache$1 {
5512
5580
  usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST
5513
5581
  });
5514
5582
  device.queue.writeTexture({ texture: tex }, pixels, { bytesPerRow: info.width * 4 }, [info.width, info.height]);
5583
+ } else if (pngInfo) {
5584
+ const bitmap = await createImageBitmap(new Blob([pngInfo.buffer], { type: "image/png" }));
5585
+ const canvas = new OffscreenCanvas(targetSize, targetSize);
5586
+ const c2d = canvas.getContext("2d");
5587
+ if (c2d) {
5588
+ const fit = Math.min(targetSize / bitmap.width, targetSize / bitmap.height);
5589
+ const w = bitmap.width * fit;
5590
+ const h = bitmap.height * fit;
5591
+ c2d.imageSmoothingQuality = "high";
5592
+ c2d.drawImage(bitmap, (targetSize - w) / 2, (targetSize - h) / 2, w, h);
5593
+ }
5594
+ bitmap.close();
5595
+ tex = device.createTexture({
5596
+ label: `Emoji-${char}`,
5597
+ size: [targetSize, targetSize],
5598
+ format: "rgba8unorm",
5599
+ usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT
5600
+ });
5601
+ device.queue.copyExternalImageToTexture({ source: canvas }, {
5602
+ texture: tex,
5603
+ premultipliedAlpha: true
5604
+ }, [targetSize, targetSize]);
5515
5605
  } else {
5516
- const resolutionScale = 4;
5517
- const emojiSize = Math.max(16, Math.ceil(fontSize * 1.5 * resolutionScale));
5518
- const size = Math.ceil(emojiSize / 4) * 4;
5606
+ const size = Math.ceil(targetSize / 4) * 4;
5519
5607
  const canvas = new OffscreenCanvas(size, size);
5520
5608
  const c2d = canvas.getContext("2d");
5521
5609
  if (c2d) {
5522
- c2d.font = `${fontSize * resolutionScale}px "NotoColorEmoji", "Emoji", "Apple Color Emoji", "Segoe UI Emoji", sans-serif`;
5610
+ c2d.font = `${fontSize * resolutionScale}px "Apple Color Emoji", "Segoe UI Emoji", sans-serif`;
5523
5611
  c2d.textBaseline = "middle";
5524
5612
  c2d.textAlign = "center";
5525
5613
  c2d.fillText(char, size / 2, size / 2);
@@ -5766,13 +5854,13 @@ var SlugFontCache = class SlugFontCache$1 {
5766
5854
  }
5767
5855
  const arrayBuffer = await response.arrayBuffer();
5768
5856
  SlugFontCache$1.parseTableDirectory(new Uint8Array(arrayBuffer));
5769
- const loadedFace = await new FontFace("NotoColorEmoji", arrayBuffer).load();
5857
+ const loadedFace = await new FontFace("FramefieldsEmoji", arrayBuffer).load();
5770
5858
  document.fonts.add(loadedFace);
5771
5859
  await document.fonts.ready;
5772
5860
  debugLog("[SlugFontCache] Emoji font preloaded and registered via Cache API.");
5773
5861
  SlugFontCache$1.listeners.forEach((l) => {
5774
5862
  try {
5775
- l("NotoColorEmoji");
5863
+ l("FramefieldsEmoji");
5776
5864
  } catch (e) {
5777
5865
  console.error("[SlugFontCache] Error in listener:", e);
5778
5866
  }
@@ -12307,7 +12395,7 @@ function getOrCreateEmojiTexture(device, char, fontSize) {
12307
12395
  const canvas = new OffscreenCanvas(size, size);
12308
12396
  const c2d = canvas.getContext("2d");
12309
12397
  if (c2d) {
12310
- c2d.font = `${fontSize * resolutionScale}px "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "NotoColorEmoji", sans-serif`;
12398
+ c2d.font = `${fontSize * resolutionScale}px "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif`;
12311
12399
  c2d.textBaseline = "middle";
12312
12400
  c2d.textAlign = "center";
12313
12401
  c2d.fillText(char, size / 2, size / 2);
@@ -27489,5 +27577,5 @@ var ScreenSpaceRelightPipeline = class {
27489
27577
  };
27490
27578
 
27491
27579
  //#endregion
27492
- export { registerHeadlessFont as $, drawLottieNode as A, inputStore as B, WebGPUAudioProcessor as C, drawCaptionNode as D, colorMatrixWgsl as E, ensureDevice as F, lutStore as G, loadFBX as H, generateExtrudedTextGeometry as I, parseColor as J, measureMaxCaptionHeight as K, getHeadlessFontPath as L, drawSignalNode as M, drawSvgNode as N, drawGifNode as O, drawVideoNode as P, poseNodes as Q, getRenderer2D as R, Vector3Math as S, clearAllVideoCache as T, loadModel3D as U, jointMatrices as V, loadOBJ as W, parseMTL as X, parseFBX as Y, parseOBJ as Z, ShadowPipeline as _, Camera3D as a, R2_CUSTOM_DOMAIN as at, SlugGeometry as b, Light3D as c, NodeSurfaceProvider as d, shaderStore as et, Path3D as f, ScreenSpaceRelightPipeline as g, SSAOPipeline as h, AudioSignalComputePipeline as i, GetFontAssetUrl as it, drawParagraphNode as j, drawImageNode as k, Matrix4Math as l, Renderer3D as m, AudioLatentTrackCache as n, srtLoader as nt, EffectPipeline as o, getEnv as ot, Renderer2D as p, mediaDecoderCache as q, AudioMeshDeformPipeline as r, textureCache as rt, GlassPipeline as s, resolveMediaSourceUrl as st, AudioLatentEngine as t, signalRegistry as tt, MotionBlurPipeline as u, SignalRegistry as v, buildWGSLSignalFn as w, SlugPipeline as x, SlugFontCache as y, initHeadlessWebGPU as z };
27493
- //# sourceMappingURL=dist-DuIv211_.mjs.map
27580
+ export { registerHeadlessFont as $, drawLottieNode as A, inputStore as B, WebGPUAudioProcessor as C, drawCaptionNode as D, colorMatrixWgsl as E, ensureDevice as F, lutStore as G, loadFBX as H, generateExtrudedTextGeometry as I, parseColor as J, measureMaxCaptionHeight as K, getHeadlessFontPath as L, drawSignalNode as M, drawSvgNode as N, drawGifNode as O, drawVideoNode as P, poseNodes as Q, getRenderer2D as R, Vector3Math as S, clearAllVideoCache as T, loadModel3D as U, jointMatrices as V, loadOBJ as W, parseMTL as X, parseFBX as Y, parseOBJ as Z, ShadowPipeline as _, Camera3D as a, getEnv as at, SlugGeometry as b, Light3D as c, NodeSurfaceProvider as d, shaderStore as et, Path3D as f, ScreenSpaceRelightPipeline as g, SSAOPipeline as h, AudioSignalComputePipeline as i, GetFontAssetUrl as it, drawParagraphNode as j, drawImageNode as k, Matrix4Math as l, Renderer3D as m, AudioLatentTrackCache as n, srtLoader as nt, EffectPipeline as o, resolveMediaSourceUrl as ot, Renderer2D as p, mediaDecoderCache as q, AudioMeshDeformPipeline as r, textureCache as rt, GlassPipeline as s, AudioLatentEngine as t, signalRegistry as tt, MotionBlurPipeline as u, SignalRegistry as v, buildWGSLSignalFn as w, SlugPipeline as x, SlugFontCache as y, initHeadlessWebGPU as z };
27581
+ //# sourceMappingURL=dist-sHqWCB9M.mjs.map