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
package/README.md CHANGED
@@ -52,6 +52,8 @@ Every frame of these films is rendered by framefields from TypeScript in [`examp
52
52
  > [!NOTE]
53
53
  > **Using an AI coding agent?** Install the framefields skills in one line.
54
54
  >
55
+ > **Note:** Framefields plugin review in claude takes a bit long... Please use the alternative skills installation for now.
56
+ >
55
57
  > **Claude Code**
56
58
  > ```text
57
59
  > /plugin install framefields
@@ -69,7 +71,6 @@ Every frame of these films is rendered by framefields from TypeScript in [`examp
69
71
  ## Table of Contents
70
72
 
71
73
  - [Why Framefields](#why-framefields)
72
- - [Architectural Comparison](#architectural-comparison-framefields-vs-remotion-vs-hyperframes)
73
74
  - [Key Features & Capabilities](#key-features--capabilities)
74
75
  - [1. Slug GPU Vector Typography & After Effects Animators](#1-slug-gpu-vector-typography--after-effects-animators)
75
76
  - [2. Photoshop-Inspired WebGPU 2D VFX](#2-photoshop-inspired-webgpu-2d-vfx-50-shaders)
@@ -113,30 +114,6 @@ Modern automated video generation is usually constrained by the architectures of
113
114
 
114
115
  ---
115
116
 
116
- ## Architectural Comparison: Framefields vs. Remotion vs. Hyperframes
117
-
118
- Developers generating video programmatically commonly weigh **Remotion** (React/Chromium) or **Hyperframes** (Canvas2D/SVG web animation). The matrix below compares the fundamental engineering dimensions.
119
-
120
- ### Detailed Comparison Matrix
121
-
122
- | Capability / Dimension | **Framefields** | **Remotion** | **Hyperframes** |
123
- |---|---|---|---|
124
- | **Underlying Engine** | **Native WebGPU** (WGSL compute & render pipelines via Dawn / Metal / Vulkan) | **Chromium / Puppeteer** (React DOM, HTML/CSS layout) | **Canvas2D / WebGL / SVG** (browser or Node Skia) |
125
- | **Rendering Architecture** | Direct hardware framebuffer rendering & hardware video encoding (`@napi-rs/webcodecs`) | Spawns headless Chrome; captures frames via CDP / `page.screenshot()` | Software or hardware 2D canvas context |
126
- | **Throughput** | **60–120+ FPS** (real-time to faster-than-real-time GPU execution) | **5–20 FPS** (DOM reflow, IPC, rasterization) | **20–40 FPS** (CPU draw commands / JS) |
127
- | **Memory Footprint** | **~200–400 MB** per render (zero browser) | **1.5–4.0 GB+** per worker (Chromium + V8 DOM heap) | **~500 MB–1 GB** (Skia/Canvas bindings) |
128
- | **Typography Engine** | **Slug GPU** — analytic Bézier evaluation in WGSL, infinite zoom, After Effects selectors | Browser DOM text (CSS fonts, rasterized, blurry under 3D transforms) | Canvas2D / path text (CPU-rasterized glyphs) |
129
- | **2D VFX & Post-Processing** | **50+ WebGPU shaders** (Curves, Levels, Selective Color, 3D LUT, Film Grain, Halftone, Liquify, PBR Glass, Relight) | CSS Filters or custom WebGL canvas wrappers | Basic Canvas2D composites and 2D filters |
130
- | **3D Graphics & Depth** | **Native 3D scene graph** — LookAt/Turntable camera, multiplane, skinning (OBJ/FBX/glTF), SSAO, PCSS, DoF | None built-in (embed Three.js/Fiber inside React DOM) | Minimal 2.5D layers; no unified mesh pipeline |
131
- | **Motion Blur & Physics** | Physical 180° shutter velocity buffers in MRT + closed-form spring kinematics | CSS transitions / JS interpolation; synthetic blur hacks | Frame interpolation or manual multipass |
132
- | **Audio Engine & DSP** | Native audio DSP & procedural SFX (multi-track mixing, beat grids, reactive signals) | `<Audio>` playback; basic volume curves | Basic static audio playback |
133
- | **Charts & Data Viz** | **`Layer.chart`** — line, area, bar, scatter, candlestick, pie and donut charts built from native vector nodes, with staggered reveal animations | DOM chart libraries (Recharts, Chart.js) | Custom canvas draw operations |
134
- | **AI & Computer Vision** | **On-device ONNX vision** — COCO-80 detection + instance masks (RTMDet-Ins), COCO-17 pose (RTMO), person mattes (Selfie Segmenter); WebGPU tensor conditioning (Canny, depth-to-normals, optical flow, deflicker) | External pre-rendered assets; no native GPU tensor conditioning | External pre-rendered assets |
135
- | **Headless Verification** | **FrameGrid contact sheets**, single-frame snapshots, Skia MSE pixel-invariant assertions | Playwright/Puppeteer visual snapshots | Manual frame inspection / canvas diffing |
136
- | **Docker / Cloud Portability** | **Compact** (~500 MB slim image with native GPU/Vulkan drivers) | **Heavy** (~2–3 GB with Chromium, fonts, X11/Mesa) | Moderate container size |
137
-
138
- ---
139
-
140
117
  ## Key Features & Capabilities
141
118
 
142
119
  ### 1. Slug GPU Vector Typography & After Effects Animators
@@ -262,12 +239,13 @@ Project normalized landmarks to screen space with a configurable camera FOV, the
262
239
  - **FrameGrid contact sheets** — `comp.renderFrameGrid(...)` outputs sequential-frame contact sheets for instant review of easing, kinetic type, and transitions.
263
240
 
264
241
  ### 8. Live Preview in the Browser
265
- - **Runs your composition, not a video** — `startPreview({ entry, export })` serves a localhost WebGPU player that loads the composition's own module and renders every frame live in the browser. Nothing is streamed: the server only hands over the bundle, the project's assets, and the soundtrack mixed by the export engine.
242
+ - **Runs your composition, not a video** — `startPreview({ entry, export })` serves a localhost WebGPU player that loads the composition's own module and renders its frames live in the browser. Nothing is streamed: the server only hands over the bundle, the project's assets, and the soundtrack mixed by the export engine.
266
243
  - **Timeline, waveform & frame stepping** — play/pause, scrub, step frame by frame, and read resolution, FPS, duration, and audio status at a glance.
267
244
  - **One stable URL per project** — the port is derived from the working directory, so re-running the preview replaces the running server and any open tab reloads into the new version by itself. Close the tab and the server shuts down about five seconds later. A reload comes back at the same moment, and `#t=12.5` links to one.
268
245
  - **Notes pinned on the picture** — pause, click a spot (or drag an area) and write what should change. Each note keeps its moment, its spot and a picture of the frame with the spot marked, in `.framefields/preview-notes/`, and prints where the preview runs, so an agent can apply exactly what you meant. Tick notes off as you check them.
269
246
  - **Tells you what happened** — the page's errors (a failed build, a frame that threw, a missing font) and why the server stopped are printed where the preview runs, so whoever started it, person or agent, sees them without opening devtools. Scripts can drive the page through `window.framefieldsPreview` (`seek`, `play`, `pause`, `state`).
270
247
  - **Shown where you are** — `startPreview` serves the page and returns its URL instead of opening a browser, so an agent can show it in its own pane (Claude Code, Codex); pass `open: true` to open the system browser.
248
+ - **Plays in real time, even on a slow device** — Play draws the frame due on the soundtrack's clock and skips the ones it missed, so playback starts at once and the sound never waits. A device that can't keep up shows fewer frames, and the page shows the frame rate it reaches.
271
249
 
272
250
  ```typescript
273
251
  import { startPreview } from "framefields";
@@ -1,5 +1,5 @@
1
- import { P as WebGPUAudioProcessor } from "../index-D2jDC7O5.mjs";
2
- import { a as SfxTrigger, c as softLimit, d as _default$5, f as _default$4, g as mixAudioTracks, h as _default$2, i as SfxRenderContext, l as _default$7, m as _default$3, n as encodeStereoWav, o as mixSfxInto, p as _default, r as RenderedSfx, s as renderSfx, t as EncodeWavOptions, u as _default$6 } from "../index-D2wJqSl5.mjs";
3
- import "../index-BMVVmc4G.mjs";
4
- import { t as _default$1 } from "../renderer-DDp7_TUi.mjs";
1
+ import { P as WebGPUAudioProcessor } from "../index-WIPHLy5m.mjs";
2
+ import { a as SfxTrigger, c as softLimit, d as _default$5, f as _default$4, g as mixAudioTracks, h as _default$2, i as SfxRenderContext, l as _default$7, m as _default$3, n as encodeStereoWav, o as mixSfxInto, p as _default, r as RenderedSfx, s as renderSfx, t as EncodeWavOptions, u as _default$6 } from "../index-Bi2nRZ_g.mjs";
3
+ import "../index-CZChQhXZ.mjs";
4
+ import { t as _default$1 } from "../renderer-Bal8734U.mjs";
5
5
  export { EncodeWavOptions, RenderedSfx, SfxRenderContext, SfxTrigger, WebGPUAudioProcessor, _default as audioFadeRenderer, _default$1 as audioSignalExtractorRenderer, _default$2 as compressorRenderer, _default$3 as delayRenderer, encodeStereoWav, mixAudioTracks, mixSfxInto, _default$4 as noiseGateRenderer, _default$5 as parametricEqRenderer, renderSfx, _default$6 as reverbRenderer, softLimit, _default$7 as stereoPanningRenderer };
@@ -1,14 +1,14 @@
1
- import { C as WebGPUAudioProcessor } from "../dist-DuIv211_.mjs";
2
- import { t as renderers_default$1 } from "../renderers-BWg16W-V-FofeEqQL.mjs";
3
- import { i as mixAudioTracks } from "../dist-CGIme1vZ.mjs";
4
- import { t as renderers_default$2 } from "../renderer-Bh1pfpzz.mjs";
5
- import { t as renderers_default$3 } from "../renderer-B6YiOv7l.mjs";
6
- import { t as renderers_default } from "../renderer-DWvg6ZKK.mjs";
7
- import { t as renderers_default$4 } from "../renderer-B8ugHLDi.mjs";
8
- import { t as renderers_default$5 } from "../renderer-DQQnEcSA.mjs";
9
- import { t as renderers_default$6 } from "../renderer-CcDfRa1o.mjs";
1
+ import { C as WebGPUAudioProcessor } from "../dist-sHqWCB9M.mjs";
2
+ import { t as renderers_default$1 } from "../renderers-CP8CFWDs-CAs5DgWj.mjs";
3
+ import { i as mixAudioTracks } from "../dist-JkiL-qy7.mjs";
4
+ import { t as renderers_default$2 } from "../renderer-DRf4FLSq.mjs";
5
+ import { t as renderers_default$3 } from "../renderer-CLWAbaCS.mjs";
6
+ import { t as renderers_default } from "../renderer-CM5c8a7B.mjs";
7
+ import { t as renderers_default$4 } from "../renderer-0ty5QtXg.mjs";
8
+ import { t as renderers_default$5 } from "../renderer-DJPuwTbS.mjs";
9
+ import { t as renderers_default$6 } from "../renderer-DVj8jfmO.mjs";
10
10
  import "../renderer-C2n-EHxg.mjs";
11
- import { t as renderers_default$7 } from "../renderer-VHpQTPbr.mjs";
11
+ import { t as renderers_default$7 } from "../renderer-Cn-p1SyO.mjs";
12
12
  import { i as softLimit, n as mixSfxInto, r as renderSfx, t as encodeStereoWav } from "../audio-TAvPwzLR.mjs";
13
13
 
14
14
  export { WebGPUAudioProcessor, renderers_default as audioFadeRenderer, renderers_default$1 as audioSignalExtractorRenderer, renderers_default$2 as compressorRenderer, renderers_default$3 as delayRenderer, encodeStereoWav, mixAudioTracks, mixSfxInto, renderers_default$4 as noiseGateRenderer, renderers_default$5 as parametricEqRenderer, renderSfx, renderers_default$6 as reverbRenderer, softLimit, renderers_default$7 as stereoPanningRenderer };
@@ -1,6 +1,6 @@
1
- import { _t as frameArraySignal } from "./dist-Bx6J0VcM.mjs";
2
- import { F as ensureDevice, i as AudioSignalComputePipeline } from "./dist-DuIv211_.mjs";
3
- import { n as decodeAudioSource } from "./dist-CGIme1vZ.mjs";
1
+ import { _t as frameArraySignal } from "./dist-B9Afsv83.mjs";
2
+ import { F as ensureDevice, i as AudioSignalComputePipeline } from "./dist-sHqWCB9M.mjs";
3
+ import { n as decodeAudioSource } from "./dist-JkiL-qy7.mjs";
4
4
 
5
5
  //#region src/signals/audio.ts
6
6
  const AudioSignal = {
@@ -82,4 +82,4 @@ const AudioSignal = {
82
82
 
83
83
  //#endregion
84
84
  export { AudioSignal as t };
85
- //# sourceMappingURL=audio-DbxiKp5p.mjs.map
85
+ //# sourceMappingURL=audio-D6enPyAG.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"audio-DbxiKp5p.mjs","names":[],"sources":["../src/signals/audio.ts"],"sourcesContent":["import { decodeAudioSource } from \"@framefields/compositions\";\nimport {\n\ttype FrameSignal,\n\tframeArraySignal,\n\ttype GPUTextureBinding,\n} from \"@framefields/core\";\nimport {\n\ttype AudioSignalComputeConfig,\n\tAudioSignalComputePipeline,\n\tensureDevice,\n} from \"@framefields/webgpu-renderers\";\n\nexport interface AudioSignalOptions extends AudioSignalComputeConfig {\n\tfps?: number;\n\ttargetWidth?: number;\n\tpreviewMode?: \"waveform\" | \"envelope\" | \"beat_markers\" | \"spectrum\";\n}\n\nexport interface ExtractedAudioSignalsBundle {\n\tprimary: FrameSignal<number>;\n\tbeat: FrameSignal<number>;\n\tbass: FrameSignal<number>;\n\tenergy: FrameSignal<number>;\n\tdurationSec: number;\n\tnumFrames: number;\n\tsampleRate: number;\n\ttextureView: unknown;\n\ttexture: unknown;\n\tprimaryBuffer: unknown;\n\tbeatBuffer: unknown;\n\tbassBuffer: unknown;\n\tenergyBuffer: unknown;\n\tseekFrame(frame: number): void;\n}\n\nexport const AudioSignal = {\n\tasync extractFromChannels(\n\t\tchannels: Float32Array[],\n\t\tsampleRate: number,\n\t\toptions: AudioSignalOptions = {},\n\t): Promise<ExtractedAudioSignalsBundle> {\n\t\tconst device = await ensureDevice();\n\t\tconst fps = options.fps ?? 24;\n\t\tconst targetWidth = options.targetWidth ?? 512;\n\n\t\tconst extracted = await AudioSignalComputePipeline.extractFeatures(\n\t\t\tdevice,\n\t\t\tchannels,\n\t\t\tsampleRate,\n\t\t\tfps,\n\t\t\toptions,\n\t\t\ttargetWidth,\n\t\t);\n\n\t\tconst samples = extracted.channelSamples ?? {\n\t\t\tprimary: new Float32Array(extracted.numFrames),\n\t\t\tbeat: new Float32Array(extracted.numFrames),\n\t\t\tbass: new Float32Array(extracted.numFrames),\n\t\t\tenergy: new Float32Array(extracted.numFrames),\n\t\t};\n\n\t\tconst primaryBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_primary\",\n\t\t\tchannel: \"primary\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.primaryBuffer,\n\t\t\tstats: extracted.stats.primary,\n\t\t};\n\t\tconst beatBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_beat\",\n\t\t\tchannel: \"beat\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.beatBuffer,\n\t\t\tstats: extracted.stats.beat,\n\t\t};\n\t\tconst bassBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_bass\",\n\t\t\tchannel: \"bass\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.bassBuffer,\n\t\t\tstats: extracted.stats.bass,\n\t\t};\n\t\tconst energyBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_energy\",\n\t\t\tchannel: \"energy\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.energyBuffer,\n\t\t\tstats: extracted.stats.energy,\n\t\t};\n\n\t\tconst primary = frameArraySignal(samples.primary, fps, primaryBinding);\n\t\tconst beat = frameArraySignal(samples.beat, fps, beatBinding);\n\t\tconst bass = frameArraySignal(samples.bass, fps, bassBinding);\n\t\tconst energy = frameArraySignal(samples.energy, fps, energyBinding);\n\n\t\treturn {\n\t\t\tprimary,\n\t\t\tbeat,\n\t\t\tbass,\n\t\t\tenergy,\n\t\t\tdurationSec: extracted.durationSec,\n\t\t\tnumFrames: extracted.numFrames,\n\t\t\tsampleRate,\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tprimaryBuffer: extracted.primaryBuffer,\n\t\t\tbeatBuffer: extracted.beatBuffer,\n\t\t\tbassBuffer: extracted.bassBuffer,\n\t\t\tenergyBuffer: extracted.energyBuffer,\n\t\t\tseekFrame(frame: number) {\n\t\t\t\tprimary.seekFrame?.(frame);\n\t\t\t\tbeat.seekFrame?.(frame);\n\t\t\t\tbass.seekFrame?.(frame);\n\t\t\t\tenergy.seekFrame?.(frame);\n\t\t\t},\n\t\t};\n\t},\n\n\tasync extract(\n\t\tsource: string,\n\t\toptions: AudioSignalOptions = {},\n\t): Promise<ExtractedAudioSignalsBundle> {\n\t\tconst decoded = await decodeAudioSource(source);\n\t\tif (!decoded || decoded.channels.length === 0) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to decode audio source for feature extraction: ${source}`,\n\t\t\t);\n\t\t}\n\t\treturn AudioSignal.extractFromChannels(\n\t\t\tdecoded.channels,\n\t\t\tdecoded.sampleRate,\n\t\t\toptions,\n\t\t);\n\t},\n};\n"],"mappings":";;;;;AAmCA,MAAa,cAAc;CAC1B,MAAM,oBACL,UACA,YACA,UAA8B,EAAE,EACO;EACvC,MAAM,SAAS,MAAM,cAAc;EACnC,MAAM,MAAM,QAAQ,OAAO;EAC3B,MAAM,cAAc,QAAQ,eAAe;EAE3C,MAAM,YAAY,MAAM,2BAA2B,gBAClD,QACA,UACA,YACA,KACA,SACA,YACA;EAED,MAAM,UAAU,UAAU,kBAAkB;GAC3C,SAAS,IAAI,aAAa,UAAU,UAAU;GAC9C,MAAM,IAAI,aAAa,UAAU,UAAU;GAC3C,MAAM,IAAI,aAAa,UAAU,UAAU;GAC3C,QAAQ,IAAI,aAAa,UAAU,UAAU;GAC7C;EAED,MAAM,iBAAoC;GACzC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EACD,MAAM,cAAiC;GACtC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EACD,MAAM,cAAiC;GACtC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EACD,MAAM,gBAAmC;GACxC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EAED,MAAM,UAAU,iBAAiB,QAAQ,SAAS,KAAK,eAAe;EACtE,MAAM,OAAO,iBAAiB,QAAQ,MAAM,KAAK,YAAY;EAC7D,MAAM,OAAO,iBAAiB,QAAQ,MAAM,KAAK,YAAY;EAC7D,MAAM,SAAS,iBAAiB,QAAQ,QAAQ,KAAK,cAAc;AAEnE,SAAO;GACN;GACA;GACA;GACA;GACA,aAAa,UAAU;GACvB,WAAW,UAAU;GACrB;GACA,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,eAAe,UAAU;GACzB,YAAY,UAAU;GACtB,YAAY,UAAU;GACtB,cAAc,UAAU;GACxB,UAAU,OAAe;AACxB,YAAQ,YAAY,MAAM;AAC1B,SAAK,YAAY,MAAM;AACvB,SAAK,YAAY,MAAM;AACvB,WAAO,YAAY,MAAM;;GAE1B;;CAGF,MAAM,QACL,QACA,UAA8B,EAAE,EACO;EACvC,MAAM,UAAU,MAAM,kBAAkB,OAAO;AAC/C,MAAI,CAAC,WAAW,QAAQ,SAAS,WAAW,EAC3C,OAAM,IAAI,MACT,yDAAyD,SACzD;AAEF,SAAO,YAAY,oBAClB,QAAQ,UACR,QAAQ,YACR,QACA;;CAEF"}
1
+ {"version":3,"file":"audio-D6enPyAG.mjs","names":[],"sources":["../src/signals/audio.ts"],"sourcesContent":["import { decodeAudioSource } from \"@framefields/compositions\";\nimport {\n\ttype FrameSignal,\n\tframeArraySignal,\n\ttype GPUTextureBinding,\n} from \"@framefields/core\";\nimport {\n\ttype AudioSignalComputeConfig,\n\tAudioSignalComputePipeline,\n\tensureDevice,\n} from \"@framefields/webgpu-renderers\";\n\nexport interface AudioSignalOptions extends AudioSignalComputeConfig {\n\tfps?: number;\n\ttargetWidth?: number;\n\tpreviewMode?: \"waveform\" | \"envelope\" | \"beat_markers\" | \"spectrum\";\n}\n\nexport interface ExtractedAudioSignalsBundle {\n\tprimary: FrameSignal<number>;\n\tbeat: FrameSignal<number>;\n\tbass: FrameSignal<number>;\n\tenergy: FrameSignal<number>;\n\tdurationSec: number;\n\tnumFrames: number;\n\tsampleRate: number;\n\ttextureView: unknown;\n\ttexture: unknown;\n\tprimaryBuffer: unknown;\n\tbeatBuffer: unknown;\n\tbassBuffer: unknown;\n\tenergyBuffer: unknown;\n\tseekFrame(frame: number): void;\n}\n\nexport const AudioSignal = {\n\tasync extractFromChannels(\n\t\tchannels: Float32Array[],\n\t\tsampleRate: number,\n\t\toptions: AudioSignalOptions = {},\n\t): Promise<ExtractedAudioSignalsBundle> {\n\t\tconst device = await ensureDevice();\n\t\tconst fps = options.fps ?? 24;\n\t\tconst targetWidth = options.targetWidth ?? 512;\n\n\t\tconst extracted = await AudioSignalComputePipeline.extractFeatures(\n\t\t\tdevice,\n\t\t\tchannels,\n\t\t\tsampleRate,\n\t\t\tfps,\n\t\t\toptions,\n\t\t\ttargetWidth,\n\t\t);\n\n\t\tconst samples = extracted.channelSamples ?? {\n\t\t\tprimary: new Float32Array(extracted.numFrames),\n\t\t\tbeat: new Float32Array(extracted.numFrames),\n\t\t\tbass: new Float32Array(extracted.numFrames),\n\t\t\tenergy: new Float32Array(extracted.numFrames),\n\t\t};\n\n\t\tconst primaryBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_primary\",\n\t\t\tchannel: \"primary\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.primaryBuffer,\n\t\t\tstats: extracted.stats.primary,\n\t\t};\n\t\tconst beatBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_beat\",\n\t\t\tchannel: \"beat\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.beatBuffer,\n\t\t\tstats: extracted.stats.beat,\n\t\t};\n\t\tconst bassBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_bass\",\n\t\t\tchannel: \"bass\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.bassBuffer,\n\t\t\tstats: extracted.stats.bass,\n\t\t};\n\t\tconst energyBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_energy\",\n\t\t\tchannel: \"energy\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.energyBuffer,\n\t\t\tstats: extracted.stats.energy,\n\t\t};\n\n\t\tconst primary = frameArraySignal(samples.primary, fps, primaryBinding);\n\t\tconst beat = frameArraySignal(samples.beat, fps, beatBinding);\n\t\tconst bass = frameArraySignal(samples.bass, fps, bassBinding);\n\t\tconst energy = frameArraySignal(samples.energy, fps, energyBinding);\n\n\t\treturn {\n\t\t\tprimary,\n\t\t\tbeat,\n\t\t\tbass,\n\t\t\tenergy,\n\t\t\tdurationSec: extracted.durationSec,\n\t\t\tnumFrames: extracted.numFrames,\n\t\t\tsampleRate,\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tprimaryBuffer: extracted.primaryBuffer,\n\t\t\tbeatBuffer: extracted.beatBuffer,\n\t\t\tbassBuffer: extracted.bassBuffer,\n\t\t\tenergyBuffer: extracted.energyBuffer,\n\t\t\tseekFrame(frame: number) {\n\t\t\t\tprimary.seekFrame?.(frame);\n\t\t\t\tbeat.seekFrame?.(frame);\n\t\t\t\tbass.seekFrame?.(frame);\n\t\t\t\tenergy.seekFrame?.(frame);\n\t\t\t},\n\t\t};\n\t},\n\n\tasync extract(\n\t\tsource: string,\n\t\toptions: AudioSignalOptions = {},\n\t): Promise<ExtractedAudioSignalsBundle> {\n\t\tconst decoded = await decodeAudioSource(source);\n\t\tif (!decoded || decoded.channels.length === 0) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to decode audio source for feature extraction: ${source}`,\n\t\t\t);\n\t\t}\n\t\treturn AudioSignal.extractFromChannels(\n\t\t\tdecoded.channels,\n\t\t\tdecoded.sampleRate,\n\t\t\toptions,\n\t\t);\n\t},\n};\n"],"mappings":";;;;;AAmCA,MAAa,cAAc;CAC1B,MAAM,oBACL,UACA,YACA,UAA8B,EAAE,EACO;EACvC,MAAM,SAAS,MAAM,cAAc;EACnC,MAAM,MAAM,QAAQ,OAAO;EAC3B,MAAM,cAAc,QAAQ,eAAe;EAE3C,MAAM,YAAY,MAAM,2BAA2B,gBAClD,QACA,UACA,YACA,KACA,SACA,YACA;EAED,MAAM,UAAU,UAAU,kBAAkB;GAC3C,SAAS,IAAI,aAAa,UAAU,UAAU;GAC9C,MAAM,IAAI,aAAa,UAAU,UAAU;GAC3C,MAAM,IAAI,aAAa,UAAU,UAAU;GAC3C,QAAQ,IAAI,aAAa,UAAU,UAAU;GAC7C;EAED,MAAM,iBAAoC;GACzC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EACD,MAAM,cAAiC;GACtC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EACD,MAAM,cAAiC;GACtC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EACD,MAAM,gBAAmC;GACxC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EAED,MAAM,UAAU,iBAAiB,QAAQ,SAAS,KAAK,eAAe;EACtE,MAAM,OAAO,iBAAiB,QAAQ,MAAM,KAAK,YAAY;EAC7D,MAAM,OAAO,iBAAiB,QAAQ,MAAM,KAAK,YAAY;EAC7D,MAAM,SAAS,iBAAiB,QAAQ,QAAQ,KAAK,cAAc;AAEnE,SAAO;GACN;GACA;GACA;GACA;GACA,aAAa,UAAU;GACvB,WAAW,UAAU;GACrB;GACA,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,eAAe,UAAU;GACzB,YAAY,UAAU;GACtB,YAAY,UAAU;GACtB,cAAc,UAAU;GACxB,UAAU,OAAe;AACxB,YAAQ,YAAY,MAAM;AAC1B,SAAK,YAAY,MAAM;AACvB,SAAK,YAAY,MAAM;AACvB,WAAO,YAAY,MAAM;;GAE1B;;CAGF,MAAM,QACL,QACA,UAA8B,EAAE,EACO;EACvC,MAAM,UAAU,MAAM,kBAAkB,OAAO;AAC/C,MAAI,CAAC,WAAW,QAAQ,SAAS,WAAW,EAC3C,OAAM,IAAI,MACT,yDAAyD,SACzD;AAEF,SAAO,YAAY,oBAClB,QAAQ,UACR,QAAQ,YACR,QACA;;CAEF"}
@@ -1,5 +1,5 @@
1
- import { o as AudioSignalComputeConfig, zt as FrameSignal } from "./index-D2jDC7O5.mjs";
2
- import { n as NodeRendererPlugin } from "./index-BMVVmc4G.mjs";
1
+ import { o as AudioSignalComputeConfig, zt as FrameSignal } from "./index-WIPHLy5m.mjs";
2
+ import { n as NodeRendererPlugin } from "./index-CZChQhXZ.mjs";
3
3
 
4
4
  //#region ../../nodes/node-modulate/dist/renderer.d.mts
5
5
  //#region src/renderers/index.d.ts
@@ -34,4 +34,4 @@ declare const AudioSignal: {
34
34
  };
35
35
  //#endregion
36
36
  export { _default as i, AudioSignalOptions as n, ExtractedAudioSignalsBundle as r, AudioSignal as t };
37
- //# sourceMappingURL=audio-Dvwwz8xU.d.mts.map
37
+ //# sourceMappingURL=audio-a6pY05g2.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audio-Dvwwz8xU.d.mts","names":["_framefields_node_sdk_renderer0","_default","NodeRendererPlugin","Readonly","default"],"sources":["../../../nodes/node-modulate/dist/renderer.d.mts","../src/signals/audio.ts"],"sourcesContent":["import * as _framefields_node_sdk_renderer0 from \"@framefields/node-sdk/renderer\";\n\n//#region src/renderers/index.d.ts\ndeclare const _default: Readonly<_framefields_node_sdk_renderer0.NodeRendererPlugin>;\n//#endregion\nexport { _default as default };\n//# sourceMappingURL=renderer.d.mts.map"],"mappings":";;;;;cAGcC,UAAUE,SAASH;AAHiD;;;UCYjE,kBAAA,SAA2B;;EDT9BC,WAAsE,CAAA,EAAA,MAAA;;;UCenE,2BAAA;EANA,OAAA,EAOP,WAPO,CAAmB,MAAA,CAAA;EAMnB,IAAA,EAEV,WAFU,CAAA,MAAA,CAAA;EACP,IAAA,EAEH,WAFG,CAAA,MAAA,CAAA;EACH,MAAA,EAEE,WAFF,CAAA,MAAA,CAAA;EACA,WAAA,EAAA,MAAA;EACE,SAAA,EAAA,MAAA;EAAW,UAAA,EAAA,MAAA;EAaP,WAAA,EAAA,OAuGZ;EArGW,OAAA,EAAA,OAAA;EAED,aAAA,EAAA,OAAA;EACC,UAAA,EAAA,OAAA;EAAR,UAAA,EAAA,OAAA;EAoFO,YAAA,EAAA,OAAA;EACC,SAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,IAAA;;AAAD,cA1FE,WA0FF,EAAA;gCAxFC,8CAED,qBACP,QAAQ;oCAoFD,qBACP,QAAQ"}
1
+ {"version":3,"file":"audio-a6pY05g2.d.mts","names":["_framefields_node_sdk_renderer0","_default","NodeRendererPlugin","Readonly","default"],"sources":["../../../nodes/node-modulate/dist/renderer.d.mts","../src/signals/audio.ts"],"sourcesContent":["import * as _framefields_node_sdk_renderer0 from \"@framefields/node-sdk/renderer\";\n\n//#region src/renderers/index.d.ts\ndeclare const _default: Readonly<_framefields_node_sdk_renderer0.NodeRendererPlugin>;\n//#endregion\nexport { _default as default };\n//# sourceMappingURL=renderer.d.mts.map"],"mappings":";;;;;cAGcC,UAAUE,SAASH;AAHiD;;;UCYjE,kBAAA,SAA2B;;EDT9BC,WAAsE,CAAA,EAAA,MAAA;;;UCenE,2BAAA;EANA,OAAA,EAOP,WAPO,CAAmB,MAAA,CAAA;EAMnB,IAAA,EAEV,WAFU,CAAA,MAAA,CAAA;EACP,IAAA,EAEH,WAFG,CAAA,MAAA,CAAA;EACH,MAAA,EAEE,WAFF,CAAA,MAAA,CAAA;EACA,WAAA,EAAA,MAAA;EACE,SAAA,EAAA,MAAA;EAAW,UAAA,EAAA,MAAA;EAaP,WAAA,EAAA,OAuGZ;EArGW,OAAA,EAAA,OAAA;EAED,aAAA,EAAA,OAAA;EACC,UAAA,EAAA,OAAA;EAAR,UAAA,EAAA,OAAA;EAoFO,YAAA,EAAA,OAAA;EACC,SAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,IAAA;;AAAD,cA1FE,WA0FF,EAAA;gCAxFC,8CAED,qBACP,QAAQ;oCAoFD,qBACP,QAAQ"}
@@ -278,6 +278,51 @@ var ProgrammaticSignal = class ProgrammaticSignal$1 {
278
278
  function programmaticSignal(source, options) {
279
279
  return new ProgrammaticSignal(source, options);
280
280
  }
281
+ /**
282
+ * Unwraps a potential Signal, Signal-like object with `.peek()`,
283
+ * or object with `.value`. Returns the raw value or the original object.
284
+ */
285
+ function unwrapValue(val) {
286
+ if (val === null || typeof val !== "object") return val;
287
+ if (isSignal(val)) return val.peek();
288
+ if ("peek" in val && typeof val.peek === "function") return val.peek();
289
+ if ("value" in val) return val.value;
290
+ return val;
291
+ }
292
+ /**
293
+ * Extracts a numeric value from a primitive, Signal, or wrapper object.
294
+ * Returns the fallback if undefined, null, NaN, or non-numeric.
295
+ */
296
+ function resolveNumber(val, fallback) {
297
+ const unwrapped = unwrapValue(val);
298
+ return typeof unwrapped === "number" && !Number.isNaN(unwrapped) ? unwrapped : fallback;
299
+ }
300
+ /**
301
+ * Extracts a string value from a primitive, Signal, or wrapper object.
302
+ * Returns the fallback if undefined, null, or non-string.
303
+ */
304
+ function resolveString(val, fallback) {
305
+ const unwrapped = unwrapValue(val);
306
+ return typeof unwrapped === "string" ? unwrapped : fallback;
307
+ }
308
+ /**
309
+ * Extracts a boolean value from a primitive, Signal, or wrapper object.
310
+ * Returns the fallback if undefined, null, or non-boolean.
311
+ */
312
+ function resolveBoolean(val, fallback) {
313
+ const unwrapped = unwrapValue(val);
314
+ return typeof unwrapped === "boolean" ? unwrapped : fallback;
315
+ }
316
+ /**
317
+ * Generic parameter resolver matching the fallback value's type.
318
+ */
319
+ function resolveParam(val, fallback) {
320
+ if (typeof fallback === "number") return resolveNumber(val, fallback);
321
+ if (typeof fallback === "string") return resolveString(val, fallback);
322
+ if (typeof fallback === "boolean") return resolveBoolean(val, fallback);
323
+ const unwrapped = unwrapValue(val);
324
+ return unwrapped !== void 0 && unwrapped !== null ? unwrapped : fallback;
325
+ }
281
326
  let activeComputed = null;
282
327
  function registerSignalDependency(subscribers) {
283
328
  if (activeComputed !== null) {
@@ -1855,5 +1900,5 @@ function extractSvgDimensions(buffer) {
1855
1900
  }
1856
1901
 
1857
1902
  //#endregion
1858
- export { VideoAnimationSchema as $, MediaSourceSchema as A, programmaticSignal as At, SignalChannelMetaSchema as B, takeRenderDiagnostics as Bt, GeneratorSignalDataSchema as C, getLeafMediaType as Ct, MIME_TYPES as D, isEqual as Dt, JsonValueSchema as E, hasOnlySingleSource as Et, NodeResultSchema as F, serializeSignalData as Ft, SingleOutputGenericSchema as G, SignalGateDataSchema as H, updateClockSignals as Ht, NodeVisualConfigSchema as I, signal as It, TextOperationSchema as J, SourceOperationSchema as K, OutputItemSchema as L, signalBuilder as Lt, ModerationUnrefundableError as M, registerSignalDependency as Mt, MultiOutputGenericSchema as N, reportRenderDiagnostic as Nt, MediaMetadataSchema as O, isSignal as Ot, NodeMetadataSchema as P, resolveMediaMimeType as Pt, TransitionTypeSchema as Q, ProgrammaticSignal as R, sineSignal as Rt, FileDataSchema as S, getFingerprint as St, HandleTypeVal as T, getRenderFingerprint as Tt, SignalMathDataSchema as U, SignalDataSchema as V, timeSignal as Vt, SignalStatsSchema as W, TimelineTransformSchema as X, TimelineSegmentSchema as Y, TransitionSchema as Z, DataTypes as _, frameArraySignal as _t, BaseVideoLayerPropsSchema as a, VirtualMediaDataSchema as at, ExtendedLayerSchema as b, getActiveMediaMetadata as bt, COMPOSITOR_DEFAULTS as c, computeVideoCropRenderProps as ct, DATA_TYPE_EXTENSIONS as d, createOutputItemSchema as dt, VideoLayerTypeSchema as et, DEFAULT_DURATION_MS as f, createVirtualMedia as ft, DataTypeVal as g, findSourceAsset as gt, DataType as h, extractSvgDimensions as ht, BaseMediaOperationPropsSchema as i, VideoTimingPropsSchema as it, ModerationError as j, progressSignal as jt, MediaOperationSchema as k, isVirtualMediaData as kt, ConfigHandleSchema as l, computed as lt, DEFAULT_MEDIA_DIMENSION as m, deserializeSignalData as mt, AnyOutputUnionSchema as n, VideoStylePropsSchema as nt, CAPTION_LAYER_DEFAULTS as o, appendOperation as ot, DEFAULT_FPS as p, dataTypeColors as pt, TEXT_LAYER_DEFAULTS as q, AudioExtractorSignalDataSchema as r, VideoTextPropsSchema as rt, COMPOSITE_OPERATIONS as s, checkNodeResultCache as st, AnimationTypeSchema as t, VideoSpatialPropsSchema as tt, ConfigSchemaRegistry as u, cosineSignal as ut, Effect as v, frameSignal as vt, GlobalCompositeOperation as w, getMediaType as wt, FileAssetSchema as x, getFileDataMetadata as xt, ExportResultSchema as y, generateId as yt, Signal as z, stampResult as zt };
1859
- //# sourceMappingURL=dist-Bx6J0VcM.mjs.map
1903
+ export { VideoAnimationSchema as $, MediaSourceSchema as A, programmaticSignal as At, SignalChannelMetaSchema as B, signal as Bt, GeneratorSignalDataSchema as C, getLeafMediaType as Ct, MIME_TYPES as D, isEqual as Dt, JsonValueSchema as E, hasOnlySingleSource as Et, NodeResultSchema as F, resolveMediaMimeType as Ft, SingleOutputGenericSchema as G, timeSignal as Gt, SignalGateDataSchema as H, sineSignal as Ht, NodeVisualConfigSchema as I, resolveNumber as It, TextOperationSchema as J, SourceOperationSchema as K, updateClockSignals as Kt, OutputItemSchema as L, resolveParam as Lt, ModerationUnrefundableError as M, registerSignalDependency as Mt, MultiOutputGenericSchema as N, reportRenderDiagnostic as Nt, MediaMetadataSchema as O, isSignal as Ot, NodeMetadataSchema as P, resolveBoolean as Pt, TransitionTypeSchema as Q, ProgrammaticSignal as R, resolveString as Rt, FileDataSchema as S, getFingerprint as St, HandleTypeVal as T, getRenderFingerprint as Tt, SignalMathDataSchema as U, stampResult as Ut, SignalDataSchema as V, signalBuilder as Vt, SignalStatsSchema as W, takeRenderDiagnostics as Wt, TimelineTransformSchema as X, TimelineSegmentSchema as Y, TransitionSchema as Z, DataTypes as _, frameArraySignal as _t, BaseVideoLayerPropsSchema as a, VirtualMediaDataSchema as at, ExtendedLayerSchema as b, getActiveMediaMetadata as bt, COMPOSITOR_DEFAULTS as c, computeVideoCropRenderProps as ct, DATA_TYPE_EXTENSIONS as d, createOutputItemSchema as dt, VideoLayerTypeSchema as et, DEFAULT_DURATION_MS as f, createVirtualMedia as ft, DataTypeVal as g, findSourceAsset as gt, DataType as h, extractSvgDimensions as ht, BaseMediaOperationPropsSchema as i, VideoTimingPropsSchema as it, ModerationError as j, progressSignal as jt, MediaOperationSchema as k, isVirtualMediaData as kt, ConfigHandleSchema as l, computed as lt, DEFAULT_MEDIA_DIMENSION as m, deserializeSignalData as mt, AnyOutputUnionSchema as n, VideoStylePropsSchema as nt, CAPTION_LAYER_DEFAULTS as o, appendOperation as ot, DEFAULT_FPS as p, dataTypeColors as pt, TEXT_LAYER_DEFAULTS as q, AudioExtractorSignalDataSchema as r, VideoTextPropsSchema as rt, COMPOSITE_OPERATIONS as s, checkNodeResultCache as st, AnimationTypeSchema as t, VideoSpatialPropsSchema as tt, ConfigSchemaRegistry as u, cosineSignal as ut, Effect as v, frameSignal as vt, GlobalCompositeOperation as w, getMediaType as wt, FileAssetSchema as x, getFileDataMetadata as xt, ExportResultSchema as y, generateId as yt, Signal as z, serializeSignalData as zt };
1904
+ //# sourceMappingURL=dist-B9Afsv83.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dist-B9Afsv83.mjs","names":["ProgrammaticSignal","ConfigSchemaRegistry"],"sources":["../../core/dist/index.mjs"],"sourcesContent":["import { nanoid } from \"nanoid\";\nimport z$1, { z } from \"zod\";\n\n//#region src/signals/programmatic.ts\nvar ProgrammaticSignal = class ProgrammaticSignal {\n\tgpuBinding;\n\tlabel;\n\t_evaluator;\n\t_samples;\n\t_fps;\n\t_durationFrames;\n\t_cachedFrame = -1;\n\t_cachedValue = 0;\n\t_seekedFrame = -1;\n\t_subscribers = /* @__PURE__ */ new Set();\n\t_children = /* @__PURE__ */ new Set();\n\tget fps() {\n\t\treturn this._fps;\n\t}\n\tconstructor(source, options = {}) {\n\t\tthis._fps = options.fps ?? 24;\n\t\tthis._durationFrames = options.durationFrames;\n\t\tthis.gpuBinding = options.gpuBinding;\n\t\tthis.label = options.label;\n\t\tif (typeof source === \"number\") {\n\t\t\tconst constVal = source;\n\t\t\tthis._evaluator = () => constVal;\n\t\t\tthis._cachedValue = constVal;\n\t\t} else if (typeof source === \"function\") this._evaluator = source;\n\t\telse if (isSignal(source)) this._evaluator = (ctx) => Number(source.get(ctx)) || 0;\n\t\telse {\n\t\t\tconst arr = source;\n\t\t\tthis._samples = arr instanceof Float32Array ? arr : new Float32Array(Array.from(arr));\n\t\t\tthis._durationFrames = this._samples.length;\n\t\t\tthis._cachedValue = this._samples.length > 0 ? this._samples[0] : 0;\n\t\t\tthis._evaluator = (ctx) => {\n\t\t\t\tif (!this._samples || this._samples.length === 0) return 0;\n\t\t\t\tconst compFps = ctx.fps ?? this._fps;\n\t\t\t\tconst targetFrame = compFps !== this._fps && compFps > 0 ? ctx.frame / compFps * this._fps : ctx.frame;\n\t\t\t\tconst idx = Math.max(0, Math.min(this._samples.length - 1, Math.round(targetFrame)));\n\t\t\t\treturn this._samples[idx];\n\t\t\t};\n\t\t}\n\t}\n\tget value() {\n\t\treturn this.get();\n\t}\n\tget(ctx) {\n\t\tregisterSignalDependency(this._subscribers);\n\t\tframeSignal.get();\n\t\tconst currentFrame = ctx?.frame ?? (this._seekedFrame >= 0 ? this._seekedFrame : frameSignal.value);\n\t\tif (this._cachedFrame === currentFrame) return this._cachedValue;\n\t\tconst fps = ctx?.fps ?? this._fps;\n\t\tconst time = ctx?.time ?? (fps > 0 ? currentFrame / fps : 0);\n\t\tconst duration = ctx?.duration ?? this._durationFrames ?? 100;\n\t\tconst resolvedCtx = {\n\t\t\tframe: currentFrame,\n\t\t\tfps,\n\t\t\ttime,\n\t\t\tduration,\n\t\t\tdurationMs: ctx?.durationMs ?? duration / fps * 1e3,\n\t\t\tprogress: duration > 0 ? currentFrame / duration : 0,\n\t\t\tdeltaTime: ctx?.deltaTime ?? (fps > 0 ? 1 / fps : .0416)\n\t\t};\n\t\tthis._cachedFrame = currentFrame;\n\t\tthis._cachedValue = this._evaluator(resolvedCtx);\n\t\treturn this._cachedValue;\n\t}\n\tpeek() {\n\t\treturn this._cachedValue;\n\t}\n\tregisterChild(child) {\n\t\tthis._children.add(child);\n\t}\n\t_derive(evaluator, options, other) {\n\t\tconst child = new ProgrammaticSignal(evaluator, {\n\t\t\tfps: this._fps,\n\t\t\tdurationFrames: this._durationFrames,\n\t\t\t...options\n\t\t});\n\t\tthis._children.add(child);\n\t\tif (other instanceof ProgrammaticSignal) other.registerChild(child);\n\t\treturn child;\n\t}\n\tseekFrame(frame) {\n\t\tthis._seekedFrame = frame;\n\t\tthis._cachedFrame = -1;\n\t\tfor (const sub of this._subscribers) sub.markDirty();\n\t\tfor (const child of this._children) child.seekFrame(frame);\n\t}\n\tinvalidate() {\n\t\tthis._cachedFrame = -1;\n\t\tfor (const sub of this._subscribers) sub.markDirty();\n\t\tfor (const child of this._children) child.invalidate();\n\t}\n\tvalueOf() {\n\t\treturn this.get();\n\t}\n\t[Symbol.toPrimitive](hint) {\n\t\tif (hint === \"number\") return Number(this.get());\n\t\tif (hint === \"string\") return String(this.get());\n\t\treturn this.get();\n\t}\n\tsmooth(windowFrames) {\n\t\tconst window = Math.max(1, Math.round(windowFrames));\n\t\tif (window <= 1) return this;\n\t\treturn this._derive((ctx) => {\n\t\t\tlet sum = 0;\n\t\t\tlet count = 0;\n\t\t\tconst startF = Math.max(0, ctx.frame - window + 1);\n\t\t\tfor (let f = startF; f <= ctx.frame; f++) {\n\t\t\t\tsum += this.get({\n\t\t\t\t\t...ctx,\n\t\t\t\t\tframe: f,\n\t\t\t\t\ttime: f / ctx.fps\n\t\t\t\t});\n\t\t\t\tcount++;\n\t\t\t}\n\t\t\treturn count > 0 ? sum / count : 0;\n\t\t}, { label: `${this.label ?? \"sig\"}_smoothed(${window})` });\n\t}\n\tremap(inMin, inMax, outMin, outMax, clamp = false) {\n\t\tconst inRange = inMax - inMin;\n\t\tconst outRange = outMax - outMin;\n\t\treturn this._derive((ctx) => {\n\t\t\tconst val = this.get(ctx);\n\t\t\tconst remapped = outMin + (inRange !== 0 ? (val - inMin) / inRange : 0) * outRange;\n\t\t\tif (clamp) {\n\t\t\t\tconst lo = Math.min(outMin, outMax);\n\t\t\t\tconst hi = Math.max(outMin, outMax);\n\t\t\t\treturn Math.max(lo, Math.min(hi, remapped));\n\t\t\t}\n\t\t\treturn remapped;\n\t\t}, { label: `${this.label ?? \"sig\"}_remap` });\n\t}\n\tclamp(min, max) {\n\t\tconst lo = Math.min(min, max);\n\t\tconst hi = Math.max(min, max);\n\t\treturn this._derive((ctx) => Math.max(lo, Math.min(hi, this.get(ctx))), { label: `${this.label ?? \"sig\"}_clamped` });\n\t}\n\tgate(threshold, options = {}) {\n\t\tconst mode = options.mode ?? \"gate\";\n\t\tconst debounce = Math.max(1, options.debounceFrames ?? 2);\n\t\tconst hold = Math.max(1, options.holdFrames ?? 4);\n\t\tconst invert = Boolean(options.invert);\n\t\treturn this._derive((ctx) => {\n\t\t\tconst currentF = ctx.frame;\n\t\t\tlet out = 0;\n\t\t\tif (mode === \"gate\") out = this.get(ctx) >= threshold ? 1 : 0;\n\t\t\telse if (mode === \"trigger\") {\n\t\t\t\tlet lastTrigger = -Infinity;\n\t\t\t\tconst startF = Math.max(0, currentF - 120);\n\t\t\t\tfor (let f = startF; f <= currentF; f++) {\n\t\t\t\t\tconst v = this.get({\n\t\t\t\t\t\t...ctx,\n\t\t\t\t\t\tframe: f,\n\t\t\t\t\t\ttime: f / ctx.fps\n\t\t\t\t\t});\n\t\t\t\t\tconst prev = f > 0 ? this.get({\n\t\t\t\t\t\t...ctx,\n\t\t\t\t\t\tframe: f - 1,\n\t\t\t\t\t\ttime: (f - 1) / ctx.fps\n\t\t\t\t\t}) : 0;\n\t\t\t\t\tif (v >= threshold && prev < threshold && f - lastTrigger >= debounce) lastTrigger = f;\n\t\t\t\t}\n\t\t\t\tout = currentF >= lastTrigger && currentF < lastTrigger + hold ? 1 : 0;\n\t\t\t} else if (mode === \"toggle\") {\n\t\t\t\tlet toggleCount = 0;\n\t\t\t\tlet lastTrigger = -Infinity;\n\t\t\t\tfor (let f = 0; f <= currentF; f++) {\n\t\t\t\t\tconst v = this.get({\n\t\t\t\t\t\t...ctx,\n\t\t\t\t\t\tframe: f,\n\t\t\t\t\t\ttime: f / ctx.fps\n\t\t\t\t\t});\n\t\t\t\t\tconst prev = f > 0 ? this.get({\n\t\t\t\t\t\t...ctx,\n\t\t\t\t\t\tframe: f - 1,\n\t\t\t\t\t\ttime: (f - 1) / ctx.fps\n\t\t\t\t\t}) : 0;\n\t\t\t\t\tif (v >= threshold && prev < threshold && f - lastTrigger >= debounce) {\n\t\t\t\t\t\ttoggleCount++;\n\t\t\t\t\t\tlastTrigger = f;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tout = toggleCount % 2 === 1 ? 1 : 0;\n\t\t\t}\n\t\t\treturn invert ? 1 - out : out;\n\t\t}, { label: `${this.label ?? \"sig\"}_gate(${threshold})` });\n\t}\n\tvelocity(dt = 1) {\n\t\tconst step = Math.max(1, Math.round(dt));\n\t\treturn this._derive((ctx) => {\n\t\t\tconst curr = this.get(ctx);\n\t\t\tconst prevF = Math.max(0, ctx.frame - step);\n\t\t\tconst prev = this.get({\n\t\t\t\t...ctx,\n\t\t\t\tframe: prevF,\n\t\t\t\ttime: prevF / ctx.fps\n\t\t\t});\n\t\t\tconst deltaSec = step / ctx.fps;\n\t\t\treturn deltaSec > 0 ? (curr - prev) / deltaSec : curr - prev;\n\t\t}, { label: `${this.label ?? \"sig\"}_velocity` });\n\t}\n\tdelay(frames) {\n\t\tconst shift = Math.max(0, Math.round(frames));\n\t\treturn this._derive((ctx) => {\n\t\t\tconst delayedF = Math.max(0, ctx.frame - shift);\n\t\t\treturn this.get({\n\t\t\t\t...ctx,\n\t\t\t\tframe: delayedF,\n\t\t\t\ttime: delayedF / ctx.fps\n\t\t\t});\n\t\t}, { label: `${this.label ?? \"sig\"}_delay(${shift})` });\n\t}\n\tspring(stiffness = 150, damping = 12) {\n\t\treturn this._derive((ctx) => {\n\t\t\tconst targetFrame = ctx.frame;\n\t\t\tif (targetFrame <= 0) return this.get(ctx);\n\t\t\tlet pos = this.get({\n\t\t\t\t...ctx,\n\t\t\t\tframe: 0,\n\t\t\t\ttime: 0\n\t\t\t});\n\t\t\tlet vel = 0;\n\t\t\tconst dt = 1 / Math.max(1, ctx.fps);\n\t\t\tfor (let f = 1; f <= targetFrame; f++) {\n\t\t\t\tconst targetVal = this.get({\n\t\t\t\t\t...ctx,\n\t\t\t\t\tframe: f,\n\t\t\t\t\ttime: f / ctx.fps\n\t\t\t\t});\n\t\t\t\tconst displacement = pos - targetVal;\n\t\t\t\tconst force = -stiffness * displacement - damping * vel;\n\t\t\t\tvel += force * dt;\n\t\t\t\tpos += vel * dt;\n\t\t\t}\n\t\t\treturn pos;\n\t\t}, { label: `${this.label ?? \"sig\"}_spring` });\n\t}\n\tadd(other) {\n\t\tif (typeof other === \"number\") return this._derive((ctx) => this.get(ctx) + other);\n\t\treturn this._derive((ctx) => this.get(ctx) + (Number(other.get(ctx)) || 0), void 0, other);\n\t}\n\tsubtract(other) {\n\t\tif (typeof other === \"number\") return this._derive((ctx) => this.get(ctx) - other);\n\t\treturn this._derive((ctx) => this.get(ctx) - (Number(other.get(ctx)) || 0), void 0, other);\n\t}\n\tmultiply(factor) {\n\t\tif (typeof factor === \"number\") return this._derive((ctx) => this.get(ctx) * factor);\n\t\treturn this._derive((ctx) => this.get(ctx) * (Number(factor.get(ctx)) || 0), void 0, factor);\n\t}\n\tinvert() {\n\t\treturn this._derive((ctx) => 1 - this.get(ctx), { label: `${this.label ?? \"sig\"}_inverted` });\n\t}\n\tpow(exponent) {\n\t\treturn this._derive((ctx) => this.get(ctx) ** exponent);\n\t}\n\tmap(fn) {\n\t\treturn this._derive((ctx) => fn(this.get(ctx), ctx));\n\t}\n\ttoFrameArray(totalFrames, fps) {\n\t\tconst count = Math.max(1, totalFrames);\n\t\tconst f = fps ?? this._fps;\n\t\tconst out = new Float32Array(count);\n\t\tfor (let i = 0; i < count; i++) out[i] = this.get({\n\t\t\tframe: i,\n\t\t\tfps: f,\n\t\t\ttime: i / f,\n\t\t\tduration: count,\n\t\t\tdurationMs: count / f * 1e3,\n\t\t\tprogress: i / count,\n\t\t\tdeltaTime: 1 / f\n\t\t});\n\t\treturn out;\n\t}\n};\nfunction programmaticSignal(source, options) {\n\treturn new ProgrammaticSignal(source, options);\n}\n\n//#endregion\n//#region src/signals/resolve.ts\n/**\n* Unwraps a potential Signal, Signal-like object with `.peek()`,\n* or object with `.value`. Returns the raw value or the original object.\n*/\nfunction unwrapValue(val) {\n\tif (val === null || typeof val !== \"object\") return val;\n\tif (isSignal(val)) return val.peek();\n\tif (\"peek\" in val && typeof val.peek === \"function\") return val.peek();\n\tif (\"value\" in val) return val.value;\n\treturn val;\n}\n/**\n* Extracts a numeric value from a primitive, Signal, or wrapper object.\n* Returns the fallback if undefined, null, NaN, or non-numeric.\n*/\nfunction resolveNumber(val, fallback) {\n\tconst unwrapped = unwrapValue(val);\n\treturn typeof unwrapped === \"number\" && !Number.isNaN(unwrapped) ? unwrapped : fallback;\n}\n/**\n* Extracts a string value from a primitive, Signal, or wrapper object.\n* Returns the fallback if undefined, null, or non-string.\n*/\nfunction resolveString(val, fallback) {\n\tconst unwrapped = unwrapValue(val);\n\treturn typeof unwrapped === \"string\" ? unwrapped : fallback;\n}\n/**\n* Extracts a boolean value from a primitive, Signal, or wrapper object.\n* Returns the fallback if undefined, null, or non-boolean.\n*/\nfunction resolveBoolean(val, fallback) {\n\tconst unwrapped = unwrapValue(val);\n\treturn typeof unwrapped === \"boolean\" ? unwrapped : fallback;\n}\n/**\n* Generic parameter resolver matching the fallback value's type.\n*/\nfunction resolveParam(val, fallback) {\n\tif (typeof fallback === \"number\") return resolveNumber(val, fallback);\n\tif (typeof fallback === \"string\") return resolveString(val, fallback);\n\tif (typeof fallback === \"boolean\") return resolveBoolean(val, fallback);\n\tconst unwrapped = unwrapValue(val);\n\treturn unwrapped !== void 0 && unwrapped !== null ? unwrapped : fallback;\n}\n\n//#endregion\n//#region src/signals/index.ts\nlet activeComputed = null;\nfunction registerSignalDependency(subscribers) {\n\tif (activeComputed !== null) {\n\t\tsubscribers.add(activeComputed);\n\t\tactiveComputed.deps.add(subscribers);\n\t}\n}\nfunction isSignal(val) {\n\treturn val !== null && typeof val === \"object\" && \"get\" in val && typeof val.get === \"function\" && \"value\" in val;\n}\nvar StateSignalImpl = class {\n\t_value;\n\t_subscribers = /* @__PURE__ */ new Set();\n\tconstructor(initialValue) {\n\t\tthis._value = initialValue;\n\t}\n\tget value() {\n\t\treturn this.get();\n\t}\n\tset value(nextValue) {\n\t\tthis.set(nextValue);\n\t}\n\tget() {\n\t\tif (activeComputed !== null) {\n\t\t\tthis._subscribers.add(activeComputed);\n\t\t\tactiveComputed.deps.add(this._subscribers);\n\t\t}\n\t\treturn this._value;\n\t}\n\tpeek() {\n\t\treturn this._value;\n\t}\n\tset(nextValue) {\n\t\tif (Object.is(this._value, nextValue)) return;\n\t\tthis._value = nextValue;\n\t\tthis.notifySubscribers();\n\t}\n\tupdate(fn) {\n\t\tthis.set(fn(this._value));\n\t}\n\tnotifySubscribers() {\n\t\tif (this._subscribers.size === 0) return;\n\t\tconst toNotify = Array.from(this._subscribers);\n\t\tfor (const sub of toNotify) sub.markDirty();\n\t}\n\tvalueOf() {\n\t\treturn this.get();\n\t}\n\t[Symbol.toPrimitive](hint) {\n\t\tif (hint === \"number\") return Number(this.get());\n\t\tif (hint === \"string\") return String(this.get());\n\t\treturn this.get();\n\t}\n};\nvar ComputedImpl = class {\n\t_fn;\n\t_value;\n\t_dirty = true;\n\t_evaluating = false;\n\tdeps = /* @__PURE__ */ new Set();\n\t_subscribers = /* @__PURE__ */ new Set();\n\tconstructor(fn) {\n\t\tthis._fn = fn;\n\t}\n\tget value() {\n\t\treturn this.get();\n\t}\n\tget() {\n\t\tif (activeComputed !== null && activeComputed !== this) {\n\t\t\tthis._subscribers.add(activeComputed);\n\t\t\tactiveComputed.deps.add(this._subscribers);\n\t\t}\n\t\tif (this._dirty) this.compute();\n\t\treturn this._value;\n\t}\n\tpeek() {\n\t\tif (this._dirty) this.compute();\n\t\treturn this._value;\n\t}\n\tmarkDirty() {\n\t\tif (this._dirty) return;\n\t\tthis._dirty = true;\n\t\tconst toNotify = Array.from(this._subscribers);\n\t\tfor (const sub of toNotify) sub.markDirty();\n\t}\n\tcompute() {\n\t\tif (this._evaluating) throw new Error(\"Cyclic dependency detected in computed signal\");\n\t\tfor (const depSubSet of this.deps) depSubSet.delete(this);\n\t\tthis.deps.clear();\n\t\tconst prevActive = activeComputed;\n\t\tactiveComputed = this;\n\t\tthis._evaluating = true;\n\t\ttry {\n\t\t\tthis._value = this._fn();\n\t\t\tthis._dirty = false;\n\t\t} finally {\n\t\t\tthis._evaluating = false;\n\t\t\tactiveComputed = prevActive;\n\t\t}\n\t}\n\tvalueOf() {\n\t\treturn this.get();\n\t}\n\t[Symbol.toPrimitive](hint) {\n\t\tif (hint === \"number\") return Number(this.get());\n\t\tif (hint === \"string\") return String(this.get());\n\t\treturn this.get();\n\t}\n};\nvar FrameArraySignalImpl = class {\n\tgpuBinding;\n\tfps;\n\t_samples;\n\t_cachedFrame = -1;\n\t_cachedValue = 0;\n\t_seekedFrame = -1;\n\t_subscribers = /* @__PURE__ */ new Set();\n\tconstructor(samples, fps = 24, gpuBinding) {\n\t\tthis._samples = samples;\n\t\tthis.fps = fps;\n\t\tthis.gpuBinding = gpuBinding;\n\t\tif (samples.length > 0) this._cachedValue = samples[0];\n\t}\n\tget value() {\n\t\treturn this.get();\n\t}\n\tget(ctx) {\n\t\tif (activeComputed !== null) {\n\t\t\tthis._subscribers.add(activeComputed);\n\t\t\tactiveComputed.deps.add(this._subscribers);\n\t\t}\n\t\tframeSignal.get();\n\t\tconst currentFrame = ctx?.frame ?? (this._seekedFrame >= 0 ? this._seekedFrame : frameSignal.value);\n\t\tif (this._cachedFrame === currentFrame) return this._cachedValue;\n\t\tthis._cachedFrame = currentFrame;\n\t\tif (!this._samples || this._samples.length === 0) {\n\t\t\tthis._cachedValue = 0;\n\t\t\treturn 0;\n\t\t}\n\t\tconst compFps = ctx?.fps ?? this.fps;\n\t\tconst targetFrame = compFps !== this.fps && compFps > 0 ? currentFrame / compFps * this.fps : currentFrame;\n\t\tconst idx = Math.max(0, Math.min(this._samples.length - 1, Math.round(targetFrame)));\n\t\tthis._cachedValue = Number(this._samples[idx]) || 0;\n\t\treturn this._cachedValue;\n\t}\n\tpeek() {\n\t\treturn this._cachedValue;\n\t}\n\tseekFrame(frame) {\n\t\tthis._seekedFrame = frame;\n\t\tthis._cachedFrame = frame;\n\t\tif (!this._samples || this._samples.length === 0) this._cachedValue = 0;\n\t\telse {\n\t\t\tconst idx = Math.max(0, Math.min(this._samples.length - 1, Math.round(frame)));\n\t\t\tthis._cachedValue = Number(this._samples[idx]) || 0;\n\t\t}\n\t\tfor (const sub of this._subscribers) sub.markDirty();\n\t}\n\tvalueOf() {\n\t\treturn this.get();\n\t}\n\t[Symbol.toPrimitive](hint) {\n\t\tif (hint === \"number\") return Number(this.get());\n\t\tif (hint === \"string\") return String(this.get());\n\t\treturn this.get();\n\t}\n};\nfunction signal(initialValue) {\n\treturn new StateSignalImpl(initialValue);\n}\nfunction computed(fn) {\n\treturn new ComputedImpl(fn);\n}\nfunction frameArraySignal(samples, fps = 24, gpuBinding) {\n\treturn new FrameArraySignalImpl(samples, fps, gpuBinding);\n}\nconst frameSignal = signal(0);\nconst timeSignal = signal(0);\nconst progressSignal = signal(0);\nfunction updateClockSignals(frame, fps = 24, durationMs) {\n\tframeSignal.set(frame);\n\tconst timeSec = fps > 0 ? frame / fps : 0;\n\ttimeSignal.set(timeSec);\n\tif (durationMs && durationMs > 0) {\n\t\tconst durSec = durationMs / 1e3;\n\t\tprogressSignal.set(Math.max(0, Math.min(1, timeSec / durSec)));\n\t} else progressSignal.set(0);\n}\nvar ProceduralSignalImpl = class {\n\tgpuBinding;\n\t_config;\n\tconstructor(config) {\n\t\tthis._config = {\n\t\t\ttype: \"sine\",\n\t\t\tfrequency: 1,\n\t\t\tamplitude: 1,\n\t\t\toffset: 0,\n\t\t\tphase: 0,\n\t\t\t...config\n\t\t};\n\t\tthis.gpuBinding = config.gpuBinding;\n\t}\n\tget value() {\n\t\treturn this.get();\n\t}\n\tget(ctx) {\n\t\tframeSignal.get();\n\t\tconst frame = ctx?.frame ?? frameSignal.value;\n\t\tconst fps = ctx?.fps ?? 24;\n\t\tconst time = ctx?.time ?? (fps > 0 ? frame / fps : 0);\n\t\tif (this._config.fn) return this._config.fn(ctx ?? {\n\t\t\tframe,\n\t\t\tfps,\n\t\t\ttime,\n\t\t\tduration: 0,\n\t\t\tdurationMs: 0,\n\t\t\tprogress: 0,\n\t\t\tdeltaTime: fps > 0 ? 1 / fps : 0\n\t\t});\n\t\tconst freq = this._config.frequency ?? 1;\n\t\tconst amp = this._config.amplitude ?? 1;\n\t\tconst off = this._config.offset ?? 0;\n\t\tconst phase = this._config.phase ?? 0;\n\t\tswitch (this._config.type ?? \"sine\") {\n\t\t\tcase \"sine\": return off + amp * Math.sin(2 * Math.PI * freq * time + phase);\n\t\t\tcase \"triangle\": return off + amp * (2 * Math.abs(2 * (time * freq + phase / (2 * Math.PI) - Math.floor(time * freq + phase / (2 * Math.PI) + .5))) - 1);\n\t\t\tcase \"sawtooth\": return off + amp * (2 * (time * freq + phase / (2 * Math.PI) - Math.floor(time * freq + phase / (2 * Math.PI) + .5)));\n\t\t\tcase \"square\": return off + (Math.sin(2 * Math.PI * freq * time + phase) >= 0 ? amp : -amp);\n\t\t\tcase \"bounce\": {\n\t\t\t\tconst cycle = time * freq % 1;\n\t\t\t\treturn off + amp * Math.abs(Math.sin(Math.PI * cycle));\n\t\t\t}\n\t\t\tdefault: return off + amp * Math.sin(2 * Math.PI * freq * time + phase);\n\t\t}\n\t}\n\tpeek() {\n\t\treturn this.get();\n\t}\n\tvalueOf() {\n\t\treturn this.get();\n\t}\n\t[Symbol.toPrimitive](hint) {\n\t\tif (hint === \"number\") return Number(this.get());\n\t\tif (hint === \"string\") return String(this.get());\n\t\treturn this.get();\n\t}\n};\nfunction signalBuilder(config) {\n\treturn new ProceduralSignalImpl(config);\n}\nfunction sineSignal(options = {}) {\n\tconst min = options.min;\n\tconst max = options.max;\n\tlet amplitude = options.amplitude ?? 1;\n\tlet offset = options.offset ?? 0;\n\tif (min !== void 0 && max !== void 0) {\n\t\toffset = (min + max) / 2;\n\t\tamplitude = (max - min) / 2;\n\t} else if (min !== void 0) offset = min + amplitude;\n\telse if (max !== void 0) offset = max - amplitude;\n\tconst period = options.period;\n\tconst frequency = options.frequency;\n\tconst phase = options.phase ?? 0;\n\treturn signalBuilder({\n\t\ttype: \"custom\",\n\t\tfn: (ctx) => {\n\t\t\tlet angle;\n\t\t\tif (period !== void 0 && period > 0) angle = 2 * Math.PI * ctx.frame / period + phase;\n\t\t\telse {\n\t\t\t\tconst freq = frequency ?? 1;\n\t\t\t\tangle = 2 * Math.PI * freq * ctx.time + phase;\n\t\t\t}\n\t\t\treturn offset + amplitude * Math.sin(angle);\n\t\t}\n\t});\n}\nfunction cosineSignal(options = {}) {\n\tconst min = options.min;\n\tconst max = options.max;\n\tlet amplitude = options.amplitude ?? 1;\n\tlet offset = options.offset ?? 0;\n\tif (min !== void 0 && max !== void 0) {\n\t\toffset = (min + max) / 2;\n\t\tamplitude = (max - min) / 2;\n\t} else if (min !== void 0) offset = min + amplitude;\n\telse if (max !== void 0) offset = max - amplitude;\n\tconst period = options.period;\n\tconst frequency = options.frequency;\n\tconst phase = options.phase ?? 0;\n\treturn signalBuilder({\n\t\ttype: \"custom\",\n\t\tfn: (ctx) => {\n\t\t\tlet angle;\n\t\t\tif (period !== void 0 && period > 0) angle = 2 * Math.PI * ctx.frame / period + phase;\n\t\t\telse {\n\t\t\t\tconst freq = frequency ?? 1;\n\t\t\t\tangle = 2 * Math.PI * freq * ctx.time + phase;\n\t\t\t}\n\t\t\treturn offset + amplitude * Math.cos(angle);\n\t\t}\n\t});\n}\nconst Signal = {\n\tstate: signal,\n\tcomputed,\n\tbuilder: signalBuilder,\n\tfromArray: frameArraySignal,\n\tprogrammatic: programmaticSignal,\n\tframe: frameSignal,\n\ttime: timeSignal,\n\tprogress: progressSignal,\n\tsine: sineSignal,\n\tcosine: cosineSignal\n};\n\n//#endregion\n//#region src/effects/index.ts\nvar Effect = class {\n\tsignals;\n\tconfig;\n\t_frameHooks = [];\n\tconstructor(initialConfig) {\n\t\tthis.config = { ...initialConfig };\n\t\tthis.signals = {};\n\t\tfor (const [key, val] of Object.entries(initialConfig)) if (isSignal(val)) this.signals[key] = val;\n\t\telse this.signals[key] = signal(val);\n\t\treturn new Proxy(this, {\n\t\t\tget(target, prop, receiver) {\n\t\t\t\tif (typeof prop === \"string\" && prop in target.signals) {\n\t\t\t\t\tconst sig = target.signals[prop];\n\t\t\t\t\treturn sig ? sig.value : void 0;\n\t\t\t\t}\n\t\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t\t},\n\t\t\tset(target, prop, val, receiver) {\n\t\t\t\tif (typeof prop === \"string\" && prop in target.signals) {\n\t\t\t\t\tconst currentSig = target.signals[prop];\n\t\t\t\t\tif (isSignal(val)) {\n\t\t\t\t\t\ttarget.signals[prop] = val;\n\t\t\t\t\t\ttarget.config[prop] = val;\n\t\t\t\t\t} else if (currentSig && typeof currentSig.set === \"function\") {\n\t\t\t\t\t\tcurrentSig.set(val);\n\t\t\t\t\t\ttarget.config[prop] = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.signals[prop] = signal(val);\n\t\t\t\t\t\ttarget.config[prop] = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn Reflect.set(target, prop, val, receiver);\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Game-engine per-frame lifecycle hook.\n\t* Invoked before rendering each frame so scripts or agents can mutate properties.\n\t*/\n\tonRequestFrame(callback) {\n\t\tthis._frameHooks.push(callback);\n\t\treturn this;\n\t}\n\tnotifyFrame(ctx) {\n\t\tfor (const hook of this._frameHooks) hook(ctx);\n\t}\n\t/**\n\t* Samples concrete scalar / config values for the current frame.\n\t*/\n\tresolveUniforms(ctx) {\n\t\tconst out = {};\n\t\tfor (const [k, sig] of Object.entries(this.signals)) out[k] = sig.get(ctx);\n\t\treturn out;\n\t}\n\t/**\n\t* Returns WebGPU texture bindings attached to any property signal.\n\t*/\n\tresolveTextures() {\n\t\tconst out = {};\n\t\tfor (const [k, sig] of Object.entries(this.signals)) {\n\t\t\tconst gpu = sig.gpuBinding;\n\t\t\tif (gpu?.textureView) out[`${k}TextureView`] = gpu.textureView;\n\t\t\tif (gpu?.texture) out[`${k}Texture`] = gpu.texture;\n\t\t}\n\t\treturn out;\n\t}\n\t/**\n\t* Converts the effect into an operation node for the VirtualMediaData AST.\n\t*/\n\ttoOperation() {\n\t\tconst opPayload = {\n\t\t\top: this.op,\n\t\t\teffect: this,\n\t\t\tonRequestFrame: (ctx) => this.notifyFrame(ctx),\n\t\t\tsignals: this.signals,\n\t\t\t...this.config\n\t\t};\n\t\tfor (const [k, sig] of Object.entries(this.signals)) {\n\t\t\tconst orig = this.config[k];\n\t\t\tif (!isSignal(orig) && (typeof orig === \"string\" || typeof orig === \"boolean\")) opPayload[k] = sig.value;\n\t\t\telse opPayload[k] = sig;\n\t\t}\n\t\treturn opPayload;\n\t}\n};\n\n//#endregion\n//#region src/errors.ts\nvar ModerationError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"ModerationError\";\n\t}\n};\nvar ModerationUnrefundableError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"ModerationUnrefundableError\";\n\t}\n};\n\n//#endregion\n//#region src/id-gen.ts\n/**\n* Generates a unique ID using nanoid.\n* This function is cross-platform compatible (Node.js and Browser).\n*\n* @param size - Optional size of the ID (default is 21)\n* @returns A unique string ID\n*/\nconst generateId = (size) => {\n\treturn nanoid(size);\n};\n\n//#endregion\n//#region src/node-metadata.ts\nconst HandleDefinitionSchema = z$1.object({\n\tdataTypes: z$1.custom(),\n\tlabel: z$1.string(),\n\trequired: z$1.boolean().optional(),\n\torder: z$1.number(),\n\tdescription: z$1.string().optional()\n});\nconst ConfigHandleSchema = z$1.object({\n\tconfigKey: z$1.string(),\n\tdataTypes: z$1.custom(),\n\tlabel: z$1.string(),\n\tdescription: z$1.string().optional()\n});\n/**\n* Metadata defining the interface and identity of a node.\n* This is safe to import in any environment.\n*/\nconst NodeMetadataSchema = z$1.object({\n\ttype: z$1.string().min(1),\n\tversion: z$1.number().int().positive().optional(),\n\tbaseType: z$1.string().optional(),\n\tdisplayName: z$1.string().min(1),\n\tdescription: z$1.string().optional(),\n\tshowInQuickAccess: z$1.boolean().optional(),\n\tshowInSidebar: z$1.boolean().optional(),\n\tadvanced: z$1.boolean().optional(),\n\tcategory: z$1.string().min(1),\n\tsubcategory: z$1.string().optional(),\n\tdefaultDimensions: z$1.object({\n\t\twidth: z$1.number().positive().optional(),\n\t\theight: z$1.number().positive().optional()\n\t}).optional(),\n\thandles: z$1.object({\n\t\tinputs: z$1.array(HandleDefinitionSchema),\n\t\toutputs: z$1.array(HandleDefinitionSchema)\n\t}),\n\tvariableInputs: z$1.discriminatedUnion(\"enabled\", [z$1.object({\n\t\tenabled: z$1.literal(true),\n\t\tdataTypes: z$1.custom()\n\t}), z$1.object({\n\t\tenabled: z$1.literal(false),\n\t\tdataTypes: z$1.custom().optional()\n\t})]).optional(),\n\tvariableOutputs: z$1.discriminatedUnion(\"enabled\", [z$1.object({\n\t\tenabled: z$1.literal(true),\n\t\tdataTypes: z$1.custom()\n\t}), z$1.object({\n\t\tenabled: z$1.literal(false),\n\t\tdataTypes: z$1.custom().optional()\n\t})]).optional(),\n\tisTerminal: z$1.boolean().optional(),\n\tisTransient: z$1.boolean().optional(),\n\tconfigSchema: z$1.custom().optional(),\n\tdefaultConfig: z$1.record(z$1.string(), z$1.unknown()).optional(),\n\tvalidation: z$1.any().optional(),\n\tresultSchema: z$1.custom().optional(),\n\tconfigHandles: z$1.array(ConfigHandleSchema).optional()\n});\n\n//#endregion\n//#region src/render-diagnostics.ts\nconst STORE_KEY = Symbol.for(\"framefields.renderDiagnostics\");\nconst diagnosticsByRender = globalThis[STORE_KEY] ?? (globalThis[STORE_KEY] = /* @__PURE__ */ new Map());\nconst MAX_TRACKED_RENDERS = 256;\n/** Record a diagnostic for a render; repeats (same code, layer and message) are kept once. */\nfunction reportRenderDiagnostic(renderId, diagnostic) {\n\tlet forRender = diagnosticsByRender.get(renderId);\n\tif (!forRender) {\n\t\tif (diagnosticsByRender.size >= MAX_TRACKED_RENDERS) {\n\t\t\tconst oldest = diagnosticsByRender.keys().next().value;\n\t\t\tif (oldest !== void 0) diagnosticsByRender.delete(oldest);\n\t\t}\n\t\tforRender = /* @__PURE__ */ new Map();\n\t\tdiagnosticsByRender.set(renderId, forRender);\n\t}\n\tconst key = `${diagnostic.code}|${diagnostic.layerId ?? \"\"}|${diagnostic.message}`;\n\tif (!forRender.has(key)) forRender.set(key, diagnostic);\n}\n/**\n* Everything reported for a render, including its nested compositions (they\n* render under derived ids, `${renderId}-…`), removing it from the store.\n*/\nfunction takeRenderDiagnostics(renderId) {\n\tconst collected = /* @__PURE__ */ new Map();\n\tfor (const [id, forRender] of diagnosticsByRender) {\n\t\tif (id !== renderId && !id.startsWith(`${renderId}-`)) continue;\n\t\tfor (const [key, diagnostic] of forRender) collected.set(key, diagnostic);\n\t\tdiagnosticsByRender.delete(id);\n\t}\n\treturn [...collected.values()];\n}\n\n//#endregion\n//#region src/types/base.ts\nconst DataTypeVal = {\n\tText: \"Text\",\n\tNumber: \"Number\",\n\tBoolean: \"Boolean\",\n\tImage: \"Image\",\n\tVideo: \"Video\",\n\tAudio: \"Audio\",\n\tSVG: \"SVG\",\n\tCaption: \"Caption\",\n\tLottie: \"Lottie\",\n\tThreeD: \"ThreeD\",\n\tGIF: \"GIF\",\n\tSignal: \"Signal\",\n\tLUT: \"LUT\"\n};\nconst DataType = DataTypeVal;\nconst DataTypes = Object.values(DataTypeVal);\nconst HandleTypeVal = {\n\tInput: \"Input\",\n\tOutput: \"Output\"\n};\nconst JsonValueSchema = z$1.lazy(() => z$1.union([\n\tz$1.string(),\n\tz$1.number(),\n\tz$1.boolean(),\n\tz$1.null(),\n\tz$1.array(JsonValueSchema),\n\tz$1.record(z$1.string(), JsonValueSchema.optional())\n]));\n/**\n* Zod schema for the FileAsset model\n* Matches the Prisma schema definitions for types and nullability.\n*/\nconst FileAssetSchema = z$1.object({\n\tid: z$1.cuid2(),\n\tname: z$1.string(),\n\tcreatedAt: z$1.coerce.date(),\n\tupdatedAt: z$1.coerce.date(),\n\tuserId: z$1.cuid2().nullable(),\n\twidth: z$1.number().int().nullable(),\n\theight: z$1.number().int().nullable(),\n\tbucket: z$1.string(),\n\tsize: z$1.number().int(),\n\tmimeType: z$1.string(),\n\tkey: z$1.string(),\n\tisUploaded: z$1.boolean().default(true),\n\tduration: z$1.number().int().nullable(),\n\tsampleRate: z$1.number().int().nullable().optional(),\n\tchannels: z$1.number().int().nullable().optional(),\n\tbitDepth: z$1.number().int().nullable().optional(),\n\taudioCodec: z$1.string().nullable().optional(),\n\taudioBitrate: z$1.number().int().nullable().optional(),\n\tfps: z$1.number().int().nullable(),\n\tfingerprint: z$1.string().nullable()\n});\nconst NodeVisualConfigSchema = z$1.object({\n\tposition: z$1.object({\n\t\tx: z$1.number(),\n\t\ty: z$1.number()\n\t}).optional(),\n\twidth: z$1.number().nullish(),\n\theight: z$1.number().nullish(),\n\tlocked: z$1.boolean().optional().default(false),\n\tcollapsed: z$1.boolean().optional().default(false)\n}).passthrough();\n\n//#endregion\n//#region src/types/config/colors.ts\nconst dataTypeColors = {\n\tText: {\n\t\tbg: \"bg-blue-500\",\n\t\tstroke: \"stroke-blue-500\",\n\t\thex: \"#3b82f6\",\n\t\ttext: \"text-blue-500\",\n\t\tborder: \"border-blue-500\"\n\t},\n\tImage: {\n\t\tbg: \"bg-purple-500\",\n\t\tstroke: \"stroke-purple-500\",\n\t\thex: \"#a855f7\",\n\t\ttext: \"text-purple-500\",\n\t\tborder: \"border-purple-500\"\n\t},\n\tVideo: {\n\t\tbg: \"bg-teal-500\",\n\t\tstroke: \"stroke-teal-500\",\n\t\thex: \"oklch(60% 0.118 184.704)\",\n\t\ttext: \"text-teal-500\",\n\t\tborder: \"border-teal-500\"\n\t},\n\tAudio: {\n\t\tbg: \"bg-orange-500\",\n\t\tstroke: \"stroke-orange-500\",\n\t\thex: \"#f97316\",\n\t\ttext: \"text-orange-500\",\n\t\tborder: \"border-orange-500\"\n\t},\n\tNumber: {\n\t\tbg: \"bg-green-600\",\n\t\tstroke: \"stroke-green-600\",\n\t\thex: \"#16a34a\",\n\t\ttext: \"text-green-600\",\n\t\tborder: \"border-green-600\"\n\t},\n\tBoolean: {\n\t\tbg: \"bg-amber-600\",\n\t\tstroke: \"stroke-amber-600\",\n\t\thex: \"#d97706\",\n\t\ttext: \"text-amber-600\",\n\t\tborder: \"border-amber-600\"\n\t},\n\tSVG: {\n\t\tbg: \"bg-lime-600\",\n\t\tstroke: \"stroke-lime-600\",\n\t\thex: \"#65a30d\",\n\t\ttext: \"text-lime-600\",\n\t\tborder: \"border-lime-600\"\n\t},\n\tCaption: {\n\t\tbg: \"bg-rose-500\",\n\t\tstroke: \"stroke-rose-500\",\n\t\thex: \"#f43f5e\",\n\t\ttext: \"text-rose-500\",\n\t\tborder: \"border-rose-500\"\n\t},\n\tGIF: {\n\t\tbg: \"bg-pink-500\",\n\t\tstroke: \"stroke-pink-500\",\n\t\thex: \"#ec4899\",\n\t\ttext: \"text-pink-500\",\n\t\tborder: \"border-pink-500\"\n\t},\n\tLottie: {\n\t\tbg: \"bg-indigo-500\",\n\t\tstroke: \"stroke-indigo-500\",\n\t\thex: \"#6366f1\",\n\t\ttext: \"text-indigo-500\",\n\t\tborder: \"border-indigo-500\"\n\t},\n\tSignal: {\n\t\tbg: \"bg-fuchsia-500\",\n\t\tstroke: \"stroke-fuchsia-500\",\n\t\thex: \"#d946ef\",\n\t\ttext: \"text-fuchsia-500\",\n\t\tborder: \"border-fuchsia-500\"\n\t},\n\tLUT: {\n\t\tbg: \"bg-cyan-600\",\n\t\tstroke: \"stroke-cyan-600\",\n\t\thex: \"#0891b2\",\n\t\ttext: \"text-cyan-600\",\n\t\tborder: \"border-cyan-600\"\n\t}\n};\n\n//#endregion\n//#region src/types/config/schemas.ts\nconst DATA_TYPE_EXTENSIONS = {\n\tImage: \"png\",\n\tVideo: \"mp4\",\n\tAudio: \"mp3\",\n\tText: \"txt\",\n\tNumber: \"txt\",\n\tBoolean: \"txt\",\n\tSVG: \"svg\",\n\tCaption: \"srt\",\n\tLottie: \"json\",\n\tThreeD: \"glb\",\n\tGIF: \"gif\",\n\tSignal: \"txt\",\n\tLUT: \"cube\"\n};\nconst MIME_TYPES = {\n\tpng: \"image/png\",\n\tjpg: \"image/jpeg\",\n\tjpeg: \"image/jpeg\",\n\tgif: \"image/gif\",\n\twebp: \"image/webp\",\n\tsvg: \"image/svg+xml\",\n\tmp4: \"video/mp4\",\n\twebm: \"video/webm\",\n\tmov: \"video/quicktime\",\n\tmp3: \"audio/mpeg\",\n\twav: \"audio/wav\",\n\togg: \"audio/ogg\",\n\tpdf: \"application/pdf\",\n\tjson: \"application/json\",\n\ttxt: \"text/plain\",\n\tsrt: \"text/srt\",\n\taac: \"audio/aac\",\n\tflac: \"audio/flac\"\n};\nconst COMPOSITE_OPERATIONS = [\n\t\"source-over\",\n\t\"source-in\",\n\t\"source-out\",\n\t\"source-atop\",\n\t\"destination-over\",\n\t\"destination-in\",\n\t\"destination-out\",\n\t\"destination-atop\",\n\t\"lighter\",\n\t\"copy\",\n\t\"xor\",\n\t\"multiply\",\n\t\"screen\",\n\t\"overlay\",\n\t\"darken\",\n\t\"lighten\",\n\t\"color-dodge\",\n\t\"color-burn\",\n\t\"hard-light\",\n\t\"soft-light\",\n\t\"difference\",\n\t\"exclusion\",\n\t\"hue\",\n\t\"saturation\",\n\t\"color\",\n\t\"luminosity\"\n];\nconst GlobalCompositeOperation = z.enum(COMPOSITE_OPERATIONS);\nvar ConfigSchemaRegistry = class ConfigSchemaRegistry {\n\tstatic schemas = /* @__PURE__ */ new Map();\n\tstatic register(type, schema) {\n\t\tConfigSchemaRegistry.schemas.set(type, schema);\n\t}\n\tstatic get(type) {\n\t\treturn ConfigSchemaRegistry.schemas.get(type);\n\t}\n\tstatic clear() {\n\t\tConfigSchemaRegistry.schemas.clear();\n\t}\n};\n\n//#endregion\n//#region src/types/constants.ts\nconst COMPOSITOR_DEFAULTS = {\n\tFONT_FAMILY: \"Inter\",\n\tFONT_SIZE: 64,\n\tFILL: \"#ffffff\",\n\tLINE_HEIGHT: 1.1,\n\tALIGN: \"left\",\n\tVERTICAL_ALIGN: \"top\",\n\tLETTER_SPACING: 0,\n\tSTROKE_WIDTH: 0,\n\tSTROKE: \"#000000\",\n\tCORNER_RADIUS: 0,\n\tPADDING: 0\n};\n\n//#endregion\n//#region src/types/node-result.ts\nconst FileDataSchema = z$1.object({ entity: z$1.custom().optional() });\nconst SignalStatsSchema = z$1.object({\n\tmin: z$1.number().optional(),\n\tmax: z$1.number().optional(),\n\tmean: z$1.number().optional(),\n\trms: z$1.number().optional(),\n\tpeak: z$1.number().optional(),\n\tbeats: z$1.array(z$1.number()).optional(),\n\ttempo: z$1.number().optional()\n});\nconst SignalChannelMetaSchema = z$1.object({\n\tid: z$1.string(),\n\tname: z$1.string(),\n\tindex: z$1.number(),\n\tstats: SignalStatsSchema.optional()\n});\nconst GeneratorSignalDataSchema = z$1.object({\n\tv: z$1.literal(2).optional(),\n\ttype: z$1.literal(\"generator\"),\n\tnodeId: z$1.string().optional(),\n\tbaseType: z$1.string().optional(),\n\tfunc: z$1.enum([\n\t\t\"sine\",\n\t\t\"triangle\",\n\t\t\"sawtooth\",\n\t\t\"square\",\n\t\t\"custom\"\n\t]).or(z$1.string()).default(\"sine\"),\n\tfrequency: z$1.number().default(1),\n\tamplitude: z$1.number().default(1),\n\tphase: z$1.number().default(0),\n\toffset: z$1.number().default(0),\n\twaveform: z$1.string().optional(),\n\tbpm: z$1.number().optional(),\n\tsyncToBpm: z$1.boolean().optional(),\n\tfmFrequency: z$1.number().optional(),\n\tfmDepth: z$1.number().optional(),\n\tenvelope: z$1.string().optional(),\n\tfnBody: z$1.string().optional(),\n\tfnParams: z$1.array(z$1.record(z$1.string(), z$1.unknown())).optional(),\n\tcustomWGSL: z$1.string().optional(),\n\tsignalFnName: z$1.string().optional(),\n\toutputType: z$1.string().optional(),\n\tfps: z$1.number().optional(),\n\tdurationMs: z$1.number().optional(),\n\tstats: SignalStatsSchema.optional()\n}).passthrough();\nconst AudioExtractorSignalDataSchema = z$1.object({\n\tv: z$1.literal(2).optional(),\n\ttype: z$1.literal(\"audio_extractor\"),\n\tnodeId: z$1.string().optional(),\n\tsourceUrl: z$1.string().optional(),\n\tchannel: z$1.enum([\n\t\t\"primary\",\n\t\t\"beat\",\n\t\t\"bass\",\n\t\t\"energy\",\n\t\t\"spectral_flux\"\n\t]).or(z$1.string()).optional(),\n\tchannelIndex: z$1.number().optional(),\n\tchannels: z$1.array(SignalChannelMetaSchema).optional(),\n\textractionMode: z$1.string().optional(),\n\tattackMs: z$1.number().optional(),\n\treleaseMs: z$1.number().optional(),\n\tsensitivity: z$1.number().optional(),\n\tnoiseFloorDb: z$1.number().optional(),\n\tdynamicRangeDb: z$1.number().optional(),\n\tautoRange: z$1.boolean().optional(),\n\tsmoothing: z$1.number().optional(),\n\tcurve: z$1.string().optional(),\n\tbeatThreshold: z$1.number().optional(),\n\tbeatDecayMs: z$1.number().optional(),\n\tpreviewMode: z$1.string().optional(),\n\tsamples: z$1.union([z$1.array(z$1.number()), z$1.instanceof(Float32Array)]).optional(),\n\tfps: z$1.number().optional(),\n\tdurationMs: z$1.number().optional(),\n\tstats: SignalStatsSchema.optional(),\n\tstate: z$1.enum([\n\t\t\"pending\",\n\t\t\"ready\",\n\t\t\"failed\"\n\t]).optional(),\n\terror: z$1.string().optional(),\n\tvirtualMedia: z$1.record(z$1.string(), z$1.unknown()).optional(),\n\tsignalFnName: z$1.string().optional(),\n\tcustomWGSL: z$1.string().optional()\n}).passthrough();\nconst SignalMathDataSchema = z$1.object({\n\tv: z$1.literal(2).optional(),\n\ttype: z$1.literal(\"signal_math\"),\n\tnodeId: z$1.string().optional(),\n\top: z$1.string().optional(),\n\toperation: z$1.string().optional(),\n\tsignalA: z$1.unknown().optional(),\n\tsignalB: z$1.unknown().optional(),\n\tbValue: z$1.number().optional(),\n\tinMin: z$1.number().optional(),\n\tinMax: z$1.number().optional(),\n\toutMin: z$1.number().optional(),\n\toutMax: z$1.number().optional(),\n\tclampMin: z$1.number().optional(),\n\tclampMax: z$1.number().optional(),\n\texponent: z$1.number().optional(),\n\tedge0: z$1.number().optional(),\n\tedge1: z$1.number().optional(),\n\tcustomWGSL: z$1.string().optional(),\n\tstats: SignalStatsSchema.optional()\n}).passthrough();\nconst SignalGateDataSchema = z$1.object({\n\tv: z$1.literal(2).optional(),\n\ttype: z$1.literal(\"gate\"),\n\tnodeId: z$1.string().optional(),\n\tsourceSignal: z$1.unknown().optional(),\n\tthreshold: z$1.number().optional(),\n\tdebounceMs: z$1.number().optional(),\n\tmode: z$1.enum([\n\t\t\"gate\",\n\t\t\"trigger\",\n\t\t\"toggle\"\n\t]).optional(),\n\tholdFrames: z$1.number().optional(),\n\tinvert: z$1.boolean().optional(),\n\tstats: SignalStatsSchema.optional()\n}).passthrough();\nconst SignalDataSchema = z$1.union([\n\tGeneratorSignalDataSchema,\n\tAudioExtractorSignalDataSchema,\n\tSignalMathDataSchema,\n\tSignalGateDataSchema,\n\tz$1.object({ type: z$1.string() }).passthrough()\n]);\nfunction serializeSignalData(data) {\n\treturn JSON.stringify(data, (_key, value) => {\n\t\tif (value instanceof Float32Array) return Array.from(value);\n\t\treturn value;\n\t});\n}\nfunction deserializeSignalData(raw) {\n\tif (typeof raw === \"string\") try {\n\t\treturn SignalDataSchema.parse(JSON.parse(raw));\n\t} catch {\n\t\treturn { type: \"unknown\" };\n\t}\n\treturn SignalDataSchema.parse(raw);\n}\nconst OutputItemSchema = z$1.object({\n\ttype: z$1.custom(),\n\tdata: z$1.any(),\n\toutputHandleId: z$1.string().optional()\n});\nconst createOutputItemSchema = (type, dataSchema) => {\n\treturn z$1.object({\n\t\ttype,\n\t\tdata: dataSchema,\n\t\toutputHandleId: z$1.string().optional()\n\t});\n};\nconst SingleOutputGenericSchema = (outputItemSchema) => z$1.object({\n\tselectedOutputIndex: z$1.literal(0),\n\toutputs: z$1.tuple([z$1.object({ items: z$1.tuple([outputItemSchema]) })])\n});\nconst MultiOutputGenericSchema = (outputItemSchema) => z$1.object({\n\tselectedOutputIndex: z$1.number(),\n\toutputs: z$1.array(z$1.object({ items: z$1.array(outputItemSchema) })),\n\tsourceFingerprint: z$1.string().optional()\n});\nconst AnyOutputUnionSchema = z$1.object({\n\ttype: z$1.custom(),\n\tdata: z$1.any(),\n\toutputHandleId: z$1.string().optional()\n});\nconst NodeResultSchema = z$1.object({\n\tselectedOutputIndex: z$1.number(),\n\toutputs: z$1.array(z$1.object({ items: z$1.array(AnyOutputUnionSchema) }))\n});\nconst ExportResultSchema = MultiOutputGenericSchema(AnyOutputUnionSchema);\n\n//#endregion\n//#region src/types/video/base-layer-schema.ts\nconst AnimationTypeSchema = z.enum([\n\t\"fade-in\",\n\t\"fade-out\",\n\t\"slide-in-left\",\n\t\"slide-in-right\",\n\t\"slide-in-top\",\n\t\"slide-in-bottom\",\n\t\"zoom-in\",\n\t\"zoom-out\",\n\t\"rotate-cw\",\n\t\"rotate-ccw\",\n\t\"bounce\",\n\t\"shake\"\n]);\nconst VideoAnimationSchema = z.object({\n\tid: z.string(),\n\ttype: AnimationTypeSchema,\n\tvalue: z.number()\n});\nconst VideoSpatialPropsSchema = z.object({\n\tx: z.number().default(0),\n\ty: z.number().default(0),\n\twidth: z.number().optional(),\n\theight: z.number().optional(),\n\trotation: z.number().default(0),\n\tscale: z.number().min(0).default(1),\n\topacity: z.number().min(0).max(1).default(1),\n\tzIndex: z.number().int().optional(),\n\tblendMode: GlobalCompositeOperation.optional()\n});\nconst VideoTimingPropsSchema = z.object({\n\tstartFrame: z.number().int().min(0).default(0),\n\tdurationInMS: z.number().int().min(1).optional(),\n\ttrimStart: z.number().int().min(0).optional(),\n\ttrimEnd: z.number().int().min(0).optional(),\n\tspeed: z.number().min(.25).max(4).optional()\n});\nconst VideoTextPropsSchema = z.object({\n\ttext: z.string().optional(),\n\tfontSize: z.number().optional(),\n\tfontFamily: z.string().optional(),\n\tfontStyle: z.string().optional(),\n\tfontWeight: z.union([z.number(), z.string()]).optional(),\n\tfill: z.string().optional(),\n\talign: z.string().optional(),\n\tverticalAlign: z.string().optional(),\n\tletterSpacing: z.number().optional(),\n\tlineHeight: z.number().optional(),\n\tpadding: z.number().optional(),\n\tstroke: z.string().optional(),\n\tstrokeWidth: z.number().optional(),\n\tstrokeAlign: z.enum([\n\t\t\"inside\",\n\t\t\"center\",\n\t\t\"outside\"\n\t]).optional(),\n\ttextShadow: z.string().optional(),\n\ttextBackgroundColor: z.string().optional(),\n\tshadows: z.array(z.object({\n\t\tcolor: z.string(),\n\t\toffset: z.object({\n\t\t\tx: z.number(),\n\t\t\ty: z.number()\n\t\t}).optional(),\n\t\tblurRadius: z.number().optional()\n\t})).optional(),\n\ttextAnimation: z.any().optional(),\n\tbottomPadding: z.number().optional(),\n\tmaxWidth: z.number().optional()\n});\nconst VideoStylePropsSchema = z.object({\n\tbackgroundColor: z.string().optional(),\n\tborderColor: z.string().optional(),\n\tborderWidth: z.number().optional(),\n\tstrokeRadius: z.number().optional(),\n\tautoDimensions: z.boolean().optional()\n});\nconst VideoLayerTypeSchema = z.enum([\n\t\"Video\",\n\t\"Image\",\n\t\"Audio\",\n\t\"Text\",\n\t\"Caption\",\n\t\"SVG\",\n\t\"GIF\",\n\t\"Lottie\"\n]);\nconst BaseVideoLayerPropsSchema = VideoSpatialPropsSchema.merge(VideoTimingPropsSchema).merge(VideoTextPropsSchema).merge(VideoStylePropsSchema).extend({\n\ttype: VideoLayerTypeSchema.optional(),\n\tanimations: z.array(VideoAnimationSchema).optional()\n});\n\n//#endregion\n//#region src/types/video/transition-schema.ts\nconst TransitionTypeSchema = z.enum([\n\t\"none\",\n\t\"crossfade\",\n\t\"wipe-left\",\n\t\"wipe-right\",\n\t\"slide-up\",\n\t\"slide-down\"\n]);\nconst TransitionSchema = z.object({\n\ttype: TransitionTypeSchema,\n\tdurationFrames: z.number().min(1)\n});\n\n//#endregion\n//#region src/types/video/virtual-video.ts\nconst MediaSourceSchema = z.object({ entity: FileAssetSchema.optional() });\nconst MediaMetadataSchema = z.object({\n\twidth: z.number().optional().nullable(),\n\theight: z.number().optional().nullable(),\n\tfps: z.number().optional().nullable(),\n\tdurationMs: z.number().optional().nullable(),\n\tsampleRate: z.number().optional().nullable(),\n\tchannels: z.number().optional().nullable(),\n\tbitDepth: z.number().optional().nullable(),\n\taudioCodec: z.string().optional().nullable(),\n\taudioBitrate: z.number().optional().nullable()\n});\nconst TimelineSegmentSchema = z.object({\n\tstartSec: z.number(),\n\tendSec: z.number().optional()\n});\nconst TimelineTransformSchema = z.object({\n\tstartFrame: z.number().optional(),\n\tsegments: z.array(TimelineSegmentSchema).optional()\n});\nconst BaseMediaOperationPropsSchema = z.object({\n\tvolume: z.number().optional(),\n\topacity: z.number().optional(),\n\tstartFrame: z.number().optional(),\n\ttimeline: TimelineTransformSchema.optional()\n});\n/** Original source file (leaf node) */\nconst SourceOperationSchema = BaseMediaOperationPropsSchema.extend({\n\top: z.literal(\"source\"),\n\tsource: MediaSourceSchema,\n\tsourceMeta: MediaMetadataSchema,\n\tdataType: z.enum(Object.values(DataTypeVal))\n});\n/** Text content (leaf node) */\nconst TextOperationSchema = BaseMediaOperationPropsSchema.extend({\n\top: z.literal(\"text\"),\n\ttext: z.string(),\n\tmetadata: MediaMetadataSchema.optional(),\n\tdataType: z.enum(Object.values(DataTypeVal))\n}).passthrough();\nconst MediaOperationSchema = z.union([\n\tSourceOperationSchema,\n\tTextOperationSchema,\n\tBaseMediaOperationPropsSchema.extend({\n\t\top: z.string(),\n\t\tmetadata: MediaMetadataSchema.optional(),\n\t\tdataType: z.enum(Object.values(DataTypeVal))\n\t}).passthrough()\n]);\nconst VirtualMediaDataSchema = z.lazy(() => z.object({\n\tmetadata: MediaMetadataSchema,\n\toperation: MediaOperationSchema,\n\tchildren: z.array(VirtualMediaDataSchema).default([])\n}));\n\n//#endregion\n//#region src/types/video/layer-schema.ts\nconst ExtendedLayerSchema = BaseVideoLayerPropsSchema.extend({\n\tid: z.string(),\n\tname: z.string().optional(),\n\ttype: VideoLayerTypeSchema,\n\tvirtualMedia: VirtualMediaDataSchema.optional(),\n\ttransitionIn: TransitionSchema.optional(),\n\ttransitionOut: TransitionSchema.optional(),\n\tdurationInMS: z.number(),\n\tmaxDurationInMS: z.number().optional(),\n\tsrc: z.string().optional(),\n\tvolume: z.number().default(1),\n\tinputHandleId: z.string().optional(),\n\tisPlaceholder: z.boolean().optional(),\n\tlockAspect: z.boolean().optional(),\n\tlockRatio: z.boolean().optional(),\n\tzIndex: z.number().optional()\n}).strict();\n\n//#endregion\n//#region src/types/video/rendering-defaults.ts\nconst DEFAULT_FPS = 60;\nconst DEFAULT_DURATION_MS = 3e3;\nconst DEFAULT_MEDIA_DIMENSION = 1080;\n/** Default styling applied to new Text layers. */\nconst TEXT_LAYER_DEFAULTS = {\n\tfontSize: 60,\n\tfontFamily: \"Inter\",\n\tfill: \"#ffffff\",\n\tfontStyle: \"normal\",\n\talign: \"start\",\n\tpadding: 0\n};\n/** Default styling applied to new Caption layers. */\nconst CAPTION_LAYER_DEFAULTS = {\n\tfontSize: 48,\n\tfontFamily: \"Inter\",\n\tfill: \"#ffffff\",\n\talign: \"center\",\n\tverticalAlign: \"bottom\",\n\tpadding: 0,\n\tlineHeight: 1.1,\n\ttextAnimation: {\n\t\tin: \"none\",\n\t\tout: \"none\",\n\t\tentranceMs: 0,\n\t\texitMs: 0,\n\t\tkinetic: \"none\",\n\t\tapplyBy: \"word\",\n\t\tsmoothing: true\n\t},\n\tbottomPadding: 60\n};\n\n//#endregion\n//#region src/types/video/resolve-media.ts\n/**\n* Identify the actual leaf media type (Video, Image, etc) by walking down the tree.\n* This can differ from getMediaType() if an operation (like Ken Burns) upgrades\n* an Image to a Video.\n*/\nfunction getLeafMediaType(vv) {\n\tif (!vv) return void 0;\n\tif (vv.operation?.op === \"source\") return vv.operation.dataType;\n\tif (vv.children && vv.children.length > 0) return getLeafMediaType(vv.children[0]);\n\treturn vv.operation.dataType;\n}\n/**\n* Resolve the MIME type of the leaf source media.\n*/\nfunction resolveMediaMimeType(vv) {\n\tif (!vv) return void 0;\n\tif (vv.operation?.op === \"source\") {\n\t\tconst op = vv.operation;\n\t\tif (op.mimeType) return op.mimeType;\n\t\tif (op.sourceMeta?.mimeType) return op.sourceMeta.mimeType;\n\t\tif (op.source?.entity?.mimeType) return op.source.entity.mimeType;\n\t\tconst url = typeof op.source === \"string\" ? op.source : op.url ?? op.source?.url;\n\t\tif (typeof url === \"string\") {\n\t\t\tconst ext = url.split(\".\").pop()?.toLowerCase();\n\t\t\tif (ext === \"mp4\") return \"video/mp4\";\n\t\t\tif (ext === \"webm\") return \"video/webm\";\n\t\t\tif (ext === \"mov\") return \"video/quicktime\";\n\t\t\tif (ext === \"png\") return \"image/png\";\n\t\t\tif (ext === \"jpg\" || ext === \"jpeg\") return \"image/jpeg\";\n\t\t\tif (ext === \"webp\") return \"image/webp\";\n\t\t\tif (ext === \"svg\") return \"image/svg+xml\";\n\t\t\tif (ext === \"mp3\") return \"audio/mpeg\";\n\t\t\tif (ext === \"wav\") return \"audio/wav\";\n\t\t\tif (ext === \"aac\") return \"audio/aac\";\n\t\t}\n\t}\n\tif (vv.children && vv.children.length > 0) return resolveMediaMimeType(vv.children[0]);\n}\n/**\n* Create a VirtualMediaData from a FileData source or Text.\n* Used by Import, VideoGen, and Text nodes to wrap concrete content.\n*/\nfunction createVirtualMedia(source, type = \"Video\") {\n\tif (source && typeof source === \"object\" && \"operation\" in source && \"metadata\" in source) return source;\n\tif (typeof source === \"string\") {\n\t\tconst url = source;\n\t\tconst sourceMeta$1 = {\n\t\t\twidth: void 0,\n\t\t\theight: void 0,\n\t\t\tdurationMs: type === \"Image\" || /\\.(png|jpg|jpeg|webp|gif|svg)$/i.test(url) ? DEFAULT_DURATION_MS : void 0,\n\t\t\tfps: void 0\n\t\t};\n\t\treturn {\n\t\t\tmetadata: sourceMeta$1,\n\t\t\toperation: {\n\t\t\t\top: \"source\",\n\t\t\t\turl,\n\t\t\t\tsource: url,\n\t\t\t\tsourceMeta: sourceMeta$1,\n\t\t\t\tdataType: type\n\t\t\t},\n\t\t\tchildren: []\n\t\t};\n\t}\n\tif (typeof source === \"object\" && source !== null && (\"url\" in source || \"path\" in source)) {\n\t\tconst desc = source;\n\t\tconst url = desc.url ?? desc.path;\n\t\tconst isImage = type === \"Image\" || /\\.(png|jpg|jpeg|webp|gif|svg)$/i.test(url);\n\t\tconst durationMs = desc.durationMs ?? (isImage ? DEFAULT_DURATION_MS : void 0);\n\t\tconst sourceMeta$1 = {\n\t\t\twidth: desc.width,\n\t\t\theight: desc.height,\n\t\t\tdurationMs,\n\t\t\tfps: desc.fps,\n\t\t\tsampleRate: desc.sampleRate,\n\t\t\tchannels: desc.channels,\n\t\t\tbitDepth: desc.bitDepth,\n\t\t\taudioCodec: desc.audioCodec,\n\t\t\taudioBitrate: desc.audioBitrate\n\t\t};\n\t\treturn {\n\t\t\tmetadata: sourceMeta$1,\n\t\t\toperation: {\n\t\t\t\top: \"source\",\n\t\t\t\turl,\n\t\t\t\tsource: url,\n\t\t\t\tsourceMeta: sourceMeta$1,\n\t\t\t\tdataType: type\n\t\t\t},\n\t\t\tchildren: []\n\t\t};\n\t}\n\tconst sourceMeta = getFileDataMetadata(source) || {\n\t\twidth: void 0,\n\t\theight: void 0,\n\t\tdurationMs: void 0,\n\t\tfps: void 0\n\t};\n\treturn {\n\t\tmetadata: sourceMeta,\n\t\toperation: {\n\t\t\top: \"source\",\n\t\t\tsource: { entity: source?.entity },\n\t\t\tsourceMeta,\n\t\t\tdataType: type\n\t\t},\n\t\tchildren: []\n\t};\n}\n/**\n* Identify if a VirtualMediaData node is intended to be Video, Audio, Image, or Text.\n*/\nfunction getMediaType(vv) {\n\tif (!vv) throw new Error(\"No media data provided\");\n\treturn vv.operation.dataType;\n}\n/**\n* Append an operation to an existing VirtualMediaData (recursive).\n* This creates a new parent node wrapping the current one as a child.\n*/\nfunction appendOperation(vv, operation) {\n\treturn {\n\t\tmetadata: computeNextMetadata(getActiveMediaMetadata(vv) ?? {}, operation),\n\t\toperation,\n\t\tchildren: [vv]\n\t};\n}\n/**\n* Helper to compute the metadata of the NEXT node in the operator tree.\n*/\nfunction computeNextMetadata(baseMeta, op) {\n\tlet { width, height, durationMs, fps, sampleRate, channels, bitDepth, audioCodec, audioBitrate } = baseMeta;\n\tif (\"metadata\" in op && op.metadata) {\n\t\twidth = op.metadata.width ?? width;\n\t\theight = op.metadata.height ?? height;\n\t\tdurationMs = op.metadata.durationMs ?? durationMs;\n\t\tfps = op.metadata.fps ?? fps;\n\t\tsampleRate = op.metadata.sampleRate ?? sampleRate;\n\t\tchannels = op.metadata.channels ?? channels;\n\t\tbitDepth = op.metadata.bitDepth ?? bitDepth;\n\t\taudioCodec = op.metadata.audioCodec ?? audioCodec;\n\t\taudioBitrate = op.metadata.audioBitrate ?? audioBitrate;\n\t}\n\tif (op.dataType === \"Audio\" || op.dataType === \"Text\" || op.dataType === \"Caption\") {\n\t\twidth = void 0;\n\t\theight = void 0;\n\t\tfps = void 0;\n\t}\n\treturn {\n\t\twidth,\n\t\theight,\n\t\tdurationMs,\n\t\tfps,\n\t\tsampleRate,\n\t\tchannels,\n\t\tbitDepth,\n\t\taudioCodec,\n\t\taudioBitrate\n\t};\n}\nfunction getFileDataMetadata(filedata) {\n\tif (!filedata) return null;\n\tconst { entity } = filedata;\n\tconst width = entity?.width;\n\tconst height = entity?.height;\n\tlet durationMs = entity?.duration;\n\tconst fps = entity?.fps;\n\tconst sampleRate = entity?.sampleRate;\n\tconst channels = entity?.channels;\n\tconst bitDepth = entity?.bitDepth;\n\tconst audioCodec = entity?.audioCodec;\n\tconst audioBitrate = entity?.audioBitrate;\n\tif (durationMs === void 0 || durationMs === null) {\n\t\tconst mimeType = entity?.mimeType ?? \"\";\n\t\tif (mimeType.startsWith(\"image/\") || mimeType === \"image/svg+xml\") durationMs = DEFAULT_DURATION_MS;\n\t}\n\tif (width === void 0 && height === void 0 && durationMs === void 0 && sampleRate === void 0 && channels === void 0) return null;\n\treturn {\n\t\twidth,\n\t\theight,\n\t\tdurationMs: durationMs === 0 ? void 0 : durationMs,\n\t\tfps,\n\t\tsampleRate,\n\t\tchannels,\n\t\tbitDepth,\n\t\taudioCodec,\n\t\taudioBitrate\n\t};\n}\n/**\n* Get the active metadata from the VirtualMediaData node.\n* Simply returns the metadata property of the node.\n* Supports legacy formats (sourceMeta) and extracts from source if needed.\n*/\nfunction getActiveMediaMetadata(vv) {\n\tif (!vv) return null;\n\tlet width = vv.metadata?.width;\n\tlet height = vv.metadata?.height;\n\tlet durationMs = vv.metadata?.durationMs;\n\tlet fps = vv.metadata?.fps;\n\tlet sampleRate = vv.metadata?.sampleRate;\n\tlet channels = vv.metadata?.channels;\n\tlet bitDepth = vv.metadata?.bitDepth;\n\tlet audioCodec = vv.metadata?.audioCodec;\n\tlet audioBitrate = vv.metadata?.audioBitrate;\n\tconst op = vv.operation;\n\tif (op?.op === \"source\") {\n\t\tconst sm = op.sourceMeta || {};\n\t\tconst fdm = op.source ? getFileDataMetadata(op.source) : null;\n\t\twidth = width ?? sm.width ?? fdm?.width;\n\t\theight = height ?? sm.height ?? fdm?.height;\n\t\tdurationMs = durationMs ?? sm.durationMs ?? fdm?.durationMs;\n\t\tfps = fps ?? sm.fps ?? fdm?.fps;\n\t\tsampleRate = sampleRate ?? sm.sampleRate ?? fdm?.sampleRate;\n\t\tchannels = channels ?? sm.channels ?? fdm?.channels;\n\t\tbitDepth = bitDepth ?? sm.bitDepth ?? fdm?.bitDepth;\n\t\taudioCodec = audioCodec ?? sm.audioCodec ?? fdm?.audioCodec;\n\t\taudioBitrate = audioBitrate ?? sm.audioBitrate ?? fdm?.audioBitrate;\n\t}\n\tif (width === void 0 && height === void 0 && durationMs === void 0 && sampleRate === void 0 && channels === void 0) return null;\n\treturn {\n\t\twidth,\n\t\theight,\n\t\tdurationMs: durationMs === 0 ? void 0 : durationMs,\n\t\tfps,\n\t\tsampleRate,\n\t\tchannels,\n\t\tbitDepth,\n\t\taudioCodec,\n\t\taudioBitrate\n\t};\n}\n/**\n* Compute the dimensions and offsets for rendering a cropped video.\n* Traverses the VirtualMediaData tree to find nested crops and source dimensions.\n*/\nfunction computeVideoCropRenderProps(virtualMedia) {\n\tlet totalOffsetX = 0;\n\tlet totalOffsetY = 0;\n\tlet hasCrop = false;\n\tlet sourceMetaFound = null;\n\tlet currentNode = virtualMedia;\n\twhile (currentNode) {\n\t\tconst op = currentNode.operation;\n\t\tif (op.op === \"Crop\") {\n\t\t\thasCrop = true;\n\t\t\tconst anyOp = op;\n\t\t\tconst inputMeta = currentNode.children[0]?.metadata;\n\t\t\tconst inputW = inputMeta?.width ?? 0;\n\t\t\tconst inputH = inputMeta?.height ?? 0;\n\t\t\tif (inputW > 0 && inputH > 0) {\n\t\t\t\tconst cropLeftPx = anyOp.leftPercentage / 100 * inputW;\n\t\t\t\tconst cropTopPx = anyOp.topPercentage / 100 * inputH;\n\t\t\t\ttotalOffsetX += cropLeftPx;\n\t\t\t\ttotalOffsetY += cropTopPx;\n\t\t\t}\n\t\t}\n\t\tif (op.op === \"source\") sourceMetaFound = op.sourceMeta ?? currentNode.metadata;\n\t\tcurrentNode = currentNode.children[0];\n\t}\n\tif (!hasCrop || !sourceMetaFound) return null;\n\tconst sourceW = sourceMetaFound.width ?? 1;\n\tconst sourceH = sourceMetaFound.height ?? 1;\n\treturn {\n\t\tvideoNaturalWidth: sourceW,\n\t\tvideoNaturalHeight: sourceH,\n\t\tcropTranslatePercentageX: -(totalOffsetX / sourceW) * 100,\n\t\tcropTranslatePercentageY: -(totalOffsetY / sourceH) * 100\n\t};\n}\n\n//#endregion\n//#region src/utils/is-equal.ts\n/**\n* Performs a deep comparison between two values to determine if they are equivalent.\n* Handles primitives, objects, arrays, Dates, and NaNs.\n*/\nfunction isEqual(a, b) {\n\tif (a === b) return true;\n\tif (typeof a === \"number\" && typeof b === \"number\" && Number.isNaN(a) && Number.isNaN(b)) return true;\n\tif (a && b && typeof a === \"object\" && typeof b === \"object\") {\n\t\tif (a.constructor !== b.constructor) return false;\n\t\tif (Array.isArray(a)) {\n\t\t\tif (a.length !== b.length) return false;\n\t\t\tfor (let i = 0; i < a.length; i++) if (!isEqual(a[i], b[i])) return false;\n\t\t\treturn true;\n\t\t}\n\t\tif (a instanceof Date) return a.getTime() === b.getTime();\n\t\tif (a instanceof RegExp) return a.toString() === b.toString();\n\t\tconst keys = Object.keys(a);\n\t\tif (keys.length !== Object.keys(b).length) return false;\n\t\tfor (const key of keys) {\n\t\t\tif (!Object.hasOwn(b, key)) return false;\n\t\t\tif (!isEqual(a[key], b[key])) return false;\n\t\t}\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n//#endregion\n//#region src/utils/virtual-media.ts\n/**\n* Gets a stable object for hashing/fingerprinting by sorting keys and skipping volatile fields.\n*/\nfunction getStableData(data) {\n\tif (typeof data !== \"object\" || data === null) return data;\n\tif (Array.isArray(data)) return data.map(getStableData);\n\tconst result = {};\n\tconst keys = Object.keys(data).sort();\n\tfor (const key of keys) {\n\t\tconst val = data[key];\n\t\tif (key === \"createdAt\" || key === \"updatedAt\" || key === \"dataUrl\" || key === \"filePath\") continue;\n\t\tif (typeof val === \"string\" && val.startsWith(\"blob:\")) continue;\n\t\tif (key === \"entity\" && val && typeof val === \"object\" && val.id) {\n\t\t\tresult.entity = { id: val.id };\n\t\t\tcontinue;\n\t\t}\n\t\tresult[key] = getStableData(val);\n\t}\n\treturn result;\n}\n/**\n* Generates a fingerprint for the given data.\n*/\nfunction getFingerprint(data) {\n\tconst stableData = getStableData(data);\n\tconst str = JSON.stringify(stableData);\n\tif (str.length === 0) return \"0\";\n\tconst getHash = (seed) => {\n\t\tlet h1 = 3735928559 ^ seed;\n\t\tlet h2 = 1103547991 ^ seed;\n\t\tfor (let i = 0; i < str.length; i++) {\n\t\t\tconst ch = str.charCodeAt(i);\n\t\t\th1 = Math.imul(h1 ^ ch, 2654435761);\n\t\t\th2 = Math.imul(h2 ^ ch, 1597334677);\n\t\t}\n\t\th1 = Math.imul(h1 ^ h1 >>> 16, 2246822519);\n\t\th1 = Math.imul(h1 ^ h1 >>> 13, 3266489917);\n\t\th1 = h1 ^ h1 >>> 16;\n\t\th2 = Math.imul(h2 ^ h2 >>> 16, 2246822519);\n\t\th2 = Math.imul(h2 ^ h2 >>> 13, 3266489917);\n\t\th2 = h2 ^ h2 >>> 16;\n\t\treturn (h1 >>> 0).toString(36).padStart(7, \"0\") + (h2 >>> 0).toString(36).padStart(7, \"0\");\n\t};\n\treturn getHash(0) + getHash(1);\n}\n/**\n* Generates a version-aware fingerprint for render caching.\n* Includes app version so cached renders are invalidated on version bumps.\n*/\nfunction getRenderFingerprint(data, appVersion, extra) {\n\treturn getFingerprint({\n\t\t__v: appVersion,\n\t\tdata,\n\t\t...extra\n\t});\n}\n/**\n* Checks if data is VirtualMediaData.\n*/\nfunction isVirtualMediaData(data) {\n\treturn typeof data === \"object\" && data !== null && \"metadata\" in data && \"operation\" in data && \"children\" in data;\n}\n/**\n* Checks if the virtual media is just a raw source without any significant operations\n* that would require a rendering step (like transformations, trimming, or effects).\n*/\nfunction hasOnlySingleSource(data) {\n\tif (!isVirtualMediaData(data)) return false;\n\tif (data.operation.op === \"source\") {\n\t\tif (data.children && data.children.length > 0) return false;\n\t\tconst op = data.operation;\n\t\treturn !(op.volume !== void 0 && op.volume !== 1 || op.opacity !== void 0 && op.opacity !== 1 || op.startFrame !== void 0 && op.startFrame !== 0 || op.timeline && (op.timeline.startFrame !== void 0 && op.timeline.startFrame !== 0 || op.timeline.segments && op.timeline.segments.length > 0));\n\t}\n\tif (data.operation.op === \"compose\") return false;\n\tif (data.operation.op === \"layer\" && data.children.length === 1) {\n\t\tconst op = data.operation;\n\t\tif (!(op.x !== void 0 && op.x !== 0 || op.y !== void 0 && op.y !== 0 || op.rotation !== void 0 && op.rotation !== 0 || op.scale !== void 0 && op.scale !== 1 || op.opacity !== void 0 && op.opacity !== 1 || op.volume !== void 0 && op.volume !== 1 || op.zIndex !== void 0 || op.blendMode !== void 0 || op.filters !== void 0 || op.transitionIn !== void 0 || op.transitionOut !== void 0 || op.animations && op.animations.length > 0 || op.trimStart !== void 0 || op.trimEnd !== void 0 || op.speed !== void 0 || op.backgroundColor !== void 0 || op.borderColor !== void 0 || op.borderWidth !== void 0 || op.strokeRadius !== void 0)) return hasOnlySingleSource(data.children[0]);\n\t}\n\treturn false;\n}\n/**\n* Finds the source asset in a virtual media tree.\n*/\nfunction findSourceAsset(vm) {\n\tif (vm.operation.op === \"source\") return vm.operation.source;\n\tif (vm.children && vm.children.length > 0) return findSourceAsset(vm.children[0]);\n\treturn null;\n}\n\n//#endregion\n//#region src/utils/result-cache.ts\n/**\n* Checks if a cached node result can be reused based on source fingerprint.\n* Returns the valid cached result, or null if the cache is stale.\n*/\nfunction checkNodeResultCache(currentResult, input) {\n\tif (!currentResult?.sourceFingerprint) return null;\n\tconst inputFingerprint = getFingerprint(input);\n\tif (currentResult.sourceFingerprint !== inputFingerprint) return null;\n\treturn currentResult;\n}\n/**\n* Creates a fresh result with a source fingerprint stamp.\n*/\nfunction stampResult(result, input) {\n\treturn {\n\t\t...result,\n\t\tsourceFingerprint: getFingerprint(input)\n\t};\n}\n\n//#endregion\n//#region src/utils/svg.ts\n/**\n* Attempts to parse the width and height of an SVG from its buffer.\n* Falls back to viewBox ratios if explicitly defined sizes are missing.\n*/\nfunction extractSvgDimensions(buffer) {\n\ttry {\n\t\tconst match = buffer.toString(\"utf-8\").match(/<svg[^>]*>/i);\n\t\tif (!match) return null;\n\t\tconst svgTag = match[0];\n\t\tconst getAttr = (name) => {\n\t\t\tconst attrMatch = svgTag.match(new RegExp(`${name}=[\"']([^\"']+)[\"']`, \"i\"));\n\t\t\tif (!attrMatch) return null;\n\t\t\tconst val = parseFloat(attrMatch[1].replace(/[a-z%]/gi, \"\"));\n\t\t\treturn isNaN(val) ? null : val;\n\t\t};\n\t\tlet w = getAttr(\"width\");\n\t\tlet h = getAttr(\"height\");\n\t\tconst viewBoxMatch = svgTag.match(/viewBox=[\"']([^\"']+)[\"']/i);\n\t\tif (viewBoxMatch) {\n\t\t\tconst parts = viewBoxMatch[1].split(/[\\s,]+/).map(parseFloat);\n\t\t\tif (parts.length >= 4 && !isNaN(parts[2]) && !isNaN(parts[3])) {\n\t\t\t\tconst vbW = parts[2];\n\t\t\t\tconst vbH = parts[3];\n\t\t\t\tif (w == null && h == null) {\n\t\t\t\t\tw = vbW;\n\t\t\t\t\th = vbH;\n\t\t\t\t} else if (w != null && h == null) h = w * (vbH / vbW);\n\t\t\t\telse if (h != null && w == null) w = h * (vbW / vbH);\n\t\t\t}\n\t\t}\n\t\tif (w != null && h != null && w > 0 && h > 0) return {\n\t\t\tw,\n\t\t\th\n\t\t};\n\t\treturn null;\n\t} catch (error) {\n\t\tconsole.error(\"Error parsing SVG dimensions\", error);\n\t\treturn null;\n\t}\n}\n\n//#endregion\nexport { AnimationTypeSchema, AnyOutputUnionSchema, AudioExtractorSignalDataSchema, BaseMediaOperationPropsSchema, BaseVideoLayerPropsSchema, CAPTION_LAYER_DEFAULTS, COMPOSITE_OPERATIONS, COMPOSITOR_DEFAULTS, ConfigHandleSchema, ConfigSchemaRegistry, DATA_TYPE_EXTENSIONS, DEFAULT_DURATION_MS, DEFAULT_FPS, DEFAULT_MEDIA_DIMENSION, DataType, DataTypeVal, DataTypes, Effect, ExportResultSchema, ExtendedLayerSchema, FileAssetSchema, FileDataSchema, GeneratorSignalDataSchema, GlobalCompositeOperation, HandleTypeVal, JsonValueSchema, MIME_TYPES, MediaMetadataSchema, MediaOperationSchema, MediaSourceSchema, ModerationError, ModerationUnrefundableError, MultiOutputGenericSchema, NodeMetadataSchema, NodeResultSchema, NodeVisualConfigSchema, OutputItemSchema, ProgrammaticSignal, Signal, SignalChannelMetaSchema, SignalDataSchema, SignalGateDataSchema, SignalMathDataSchema, SignalStatsSchema, SingleOutputGenericSchema, SourceOperationSchema, TEXT_LAYER_DEFAULTS, TextOperationSchema, TimelineSegmentSchema, TimelineTransformSchema, TransitionSchema, TransitionTypeSchema, VideoAnimationSchema, VideoLayerTypeSchema, VideoSpatialPropsSchema, VideoStylePropsSchema, VideoTextPropsSchema, VideoTimingPropsSchema, VirtualMediaDataSchema, appendOperation, checkNodeResultCache, computeVideoCropRenderProps, computed, cosineSignal, createOutputItemSchema, createVirtualMedia, dataTypeColors, deserializeSignalData, extractSvgDimensions, findSourceAsset, frameArraySignal, frameSignal, generateId, getActiveMediaMetadata, getFileDataMetadata, getFingerprint, getLeafMediaType, getMediaType, getRenderFingerprint, hasOnlySingleSource, isEqual, isSignal, isVirtualMediaData, programmaticSignal, progressSignal, registerSignalDependency, reportRenderDiagnostic, resolveBoolean, resolveMediaMimeType, resolveNumber, resolveParam, resolveString, serializeSignalData, signal, signalBuilder, sineSignal, stampResult, takeRenderDiagnostics, timeSignal, updateClockSignals };\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { G as SingleOutputGenericSchema, S as FileDataSchema, at as VirtualMediaDataSchema, dt as createOutputItemSchema } from "./dist-Bx6J0VcM.mjs";
1
+ import { G as SingleOutputGenericSchema, S as FileDataSchema, at as VirtualMediaDataSchema, dt as createOutputItemSchema } from "./dist-B9Afsv83.mjs";
2
2
  import { z } from "zod";
3
3
 
4
4
  //#region ../node-sdk/dist/index.mjs
@@ -91,4 +91,4 @@ const SignalResultSchema = SingleOutputGenericSchema(createOutputItemSchema(z.li
91
91
 
92
92
  //#endregion
93
93
  export { configBuilder as a, VideoResultSchema as i, ImageResultSchema as n, SignalResultSchema as r, ColorSchema as t };
94
- //# sourceMappingURL=dist-DKm2IyEJ.mjs.map
94
+ //# sourceMappingURL=dist-DzUJmIHt.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dist-DzUJmIHt.mjs","names":["ConfigBuilder"],"sources":["../../node-sdk/dist/index.mjs"],"sourcesContent":["import { WebGPURegistry, audioRegistry, defineRenderer, isSignal, registerWebGPURenderer, resolveBoolean, resolveNumber, resolveParam, resolveString, webgpuRegistry } from \"./renderer.mjs\";\nimport { FileDataSchema, MultiOutputGenericSchema, SingleOutputGenericSchema, VirtualMediaDataSchema, createOutputItemSchema } from \"@framefields/core\";\nimport { z } from \"zod\";\n\n//#region shared/config-builder.ts\nvar ConfigBuilder = class ConfigBuilder {\n\tconstructor(shape = {}, options = { strict: true }) {\n\t\tthis.shape = shape;\n\t\tthis.options = options;\n\t}\n\tfield(key, schema, options) {\n\t\tconst withMeta = options ? schema.meta({ ...options }) : schema;\n\t\treturn new ConfigBuilder({\n\t\t\t...this.shape,\n\t\t\t[key]: withMeta\n\t\t}, this.options);\n\t}\n\tbuild() {\n\t\tconst base = z.object(this.shape);\n\t\treturn { schema: this.options.strict !== false ? base.strict() : base };\n\t}\n};\nfunction configBuilder(options = { strict: true }) {\n\treturn new ConfigBuilder({}, options);\n}\n\n//#endregion\n//#region shared/schemas.ts\nconst COMPOSITE_OPERATIONS = [\n\t\"source-over\",\n\t\"source-in\",\n\t\"source-out\",\n\t\"source-atop\",\n\t\"destination-over\",\n\t\"destination-in\",\n\t\"destination-out\",\n\t\"destination-atop\",\n\t\"lighter\",\n\t\"copy\",\n\t\"xor\",\n\t\"multiply\",\n\t\"screen\",\n\t\"overlay\",\n\t\"darken\",\n\t\"lighten\",\n\t\"color-dodge\",\n\t\"color-burn\",\n\t\"hard-light\",\n\t\"soft-light\",\n\t\"difference\",\n\t\"exclusion\",\n\t\"hue\",\n\t\"saturation\",\n\t\"color\",\n\t\"luminosity\"\n];\nconst GlobalCompositeOperation = z.enum(COMPOSITE_OPERATIONS);\nconst ColorSchema = z.string().optional();\nconst PercentageSchema = z.number().min(0).max(100);\nconst DimensionSchema = z.number().min(0).optional();\nconst AnimationSchema = z.object({ animations: z.array(z.object({\n\tid: z.string(),\n\ttype: z.enum([\n\t\t\"fade-in\",\n\t\t\"fade-out\",\n\t\t\"slide-in-left\",\n\t\t\"slide-in-right\",\n\t\t\"slide-in-top\",\n\t\t\"slide-in-bottom\",\n\t\t\"zoom-in\",\n\t\t\"zoom-out\",\n\t\t\"rotate-cw\",\n\t\t\"rotate-ccw\",\n\t\t\"bounce\",\n\t\t\"shake\"\n\t]),\n\tvalue: z.number()\n})).optional() });\nconst StrokeSchema = z.object({\n\tstroke: ColorSchema,\n\tstrokeWidth: z.number().min(0).optional(),\n\tstrokeAlign: z.enum([\n\t\t\"inside\",\n\t\t\"center\",\n\t\t\"outside\"\n\t]).optional().default(\"inside\"),\n\tstrokeRadius: z.number().min(0).optional()\n});\nconst ImageResultSchema = SingleOutputGenericSchema(createOutputItemSchema(z.literal(\"Image\"), FileDataSchema));\nconst VideoResultSchema = SingleOutputGenericSchema(createOutputItemSchema(z.literal(\"Video\"), VirtualMediaDataSchema));\nconst AudioResultSchema = SingleOutputGenericSchema(createOutputItemSchema(z.literal(\"Audio\"), VirtualMediaDataSchema));\nconst TextResultSchema = SingleOutputGenericSchema(createOutputItemSchema(z.literal(\"Text\"), z.string()));\nconst NumberResultSchema = SingleOutputGenericSchema(createOutputItemSchema(z.literal(\"Number\"), z.number()));\nconst SignalResultSchema = SingleOutputGenericSchema(createOutputItemSchema(z.literal(\"Signal\"), z.unknown()));\n\n//#endregion\nexport { AnimationSchema, AudioResultSchema, COMPOSITE_OPERATIONS, ColorSchema, ConfigBuilder, DimensionSchema, FileDataSchema, GlobalCompositeOperation, ImageResultSchema, MultiOutputGenericSchema, NumberResultSchema, PercentageSchema, SignalResultSchema, SingleOutputGenericSchema, StrokeSchema, TextResultSchema, VideoResultSchema, VirtualMediaDataSchema, WebGPURegistry, audioRegistry, configBuilder, createOutputItemSchema, defineRenderer, isSignal, registerWebGPURenderer, resolveBoolean, resolveNumber, resolveParam, resolveString, webgpuRegistry };\n//# sourceMappingURL=index.mjs.map"],"mappings":";;;;AAKA,IAAI,gBAAgB,MAAMA,gBAAc;CACvC,YAAY,QAAQ,EAAE,EAAE,UAAU,EAAE,QAAQ,MAAM,EAAE;AACnD,OAAK,QAAQ;AACb,OAAK,UAAU;;CAEhB,MAAM,KAAK,QAAQ,SAAS;EAC3B,MAAM,WAAW,UAAU,OAAO,KAAK,EAAE,GAAG,SAAS,CAAC,GAAG;AACzD,SAAO,IAAIA,gBAAc;GACxB,GAAG,KAAK;IACP,MAAM;GACP,EAAE,KAAK,QAAQ;;CAEjB,QAAQ;EACP,MAAM,OAAO,EAAE,OAAO,KAAK,MAAM;AACjC,SAAO,EAAE,QAAQ,KAAK,QAAQ,WAAW,QAAQ,KAAK,QAAQ,GAAG,MAAM;;;AAGzE,SAAS,cAAc,UAAU,EAAE,QAAQ,MAAM,EAAE;AAClD,QAAO,IAAI,cAAc,EAAE,EAAE,QAAQ;;AAKtC,MAAM,uBAAuB;CAC5B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD,MAAM,2BAA2B,EAAE,KAAK,qBAAqB;AAC7D,MAAM,cAAc,EAAE,QAAQ,CAAC,UAAU;AACzC,MAAM,mBAAmB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI;AACnD,MAAM,kBAAkB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU;AACpD,MAAM,kBAAkB,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO;CAC/D,IAAI,EAAE,QAAQ;CACd,MAAM,EAAE,KAAK;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,CAAC;CACF,OAAO,EAAE,QAAQ;CACjB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;AACjB,MAAM,eAAe,EAAE,OAAO;CAC7B,QAAQ;CACR,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU;CACzC,aAAa,EAAE,KAAK;EACnB;EACA;EACA;EACA,CAAC,CAAC,UAAU,CAAC,QAAQ,SAAS;CAC/B,cAAc,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU;CAC1C,CAAC;AACF,MAAM,oBAAoB,0BAA0B,uBAAuB,EAAE,QAAQ,QAAQ,EAAE,eAAe,CAAC;AAC/G,MAAM,oBAAoB,0BAA0B,uBAAuB,EAAE,QAAQ,QAAQ,EAAE,uBAAuB,CAAC;AACvH,MAAM,oBAAoB,0BAA0B,uBAAuB,EAAE,QAAQ,QAAQ,EAAE,uBAAuB,CAAC;AACvH,MAAM,mBAAmB,0BAA0B,uBAAuB,EAAE,QAAQ,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AACzG,MAAM,qBAAqB,0BAA0B,uBAAuB,EAAE,QAAQ,SAAS,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC7G,MAAM,qBAAqB,0BAA0B,uBAAuB,EAAE,QAAQ,SAAS,EAAE,EAAE,SAAS,CAAC,CAAC"}