framefields 2.4.0 → 2.4.1

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 (424) hide show
  1. package/dist/audio/index.d.mts +4 -4
  2. package/dist/audio/index.mjs +10 -10
  3. package/dist/{audio-DXwNhi1z.mjs → audio-CPApYcWF.mjs} +4 -4
  4. package/dist/{audio-DXwNhi1z.mjs.map → audio-CPApYcWF.mjs.map} +1 -1
  5. package/dist/{audio-C6toT7F3.d.mts → audio-DHuEMOtQ.d.mts} +3 -3
  6. package/dist/{audio-C6toT7F3.d.mts.map → audio-DHuEMOtQ.d.mts.map} +1 -1
  7. package/dist/{dist-fjKpBYkc.mjs → dist-ClyC_d66.mjs} +9 -2
  8. package/dist/dist-ClyC_d66.mjs.map +1 -0
  9. package/dist/{dist-Cl0mvShy.mjs → dist-CrK3rmyN.mjs} +180 -58
  10. package/dist/dist-CrK3rmyN.mjs.map +1 -0
  11. package/dist/{dist-DRB6Vg5u.mjs → dist-CspOG4V1.mjs} +25 -8
  12. package/dist/dist-CspOG4V1.mjs.map +1 -0
  13. package/dist/{dist-BY0bIWgr.mjs → dist-SB9qfAko.mjs} +2 -2
  14. package/dist/{dist-BY0bIWgr.mjs.map → dist-SB9qfAko.mjs.map} +1 -1
  15. package/dist/effects/index.d.mts +4 -4
  16. package/dist/effects/index.mjs +35 -35
  17. package/dist/{effects-lBqG-vd1.mjs → effects-DxylPSuI.mjs} +3 -3
  18. package/dist/{effects-lBqG-vd1.mjs.map → effects-DxylPSuI.mjs.map} +1 -1
  19. package/dist/fonts/index.mjs +2 -2
  20. package/dist/{fonts-DlRJD6NS.mjs → fonts-CsMDfqv9.mjs} +2 -2
  21. package/dist/{fonts-DlRJD6NS.mjs.map → fonts-CsMDfqv9.mjs.map} +1 -1
  22. package/dist/{gpu-DOQX1W2q.mjs → gpu-DtT5I4ME.mjs} +2 -2
  23. package/dist/{gpu-DOQX1W2q.mjs.map → gpu-DtT5I4ME.mjs.map} +1 -1
  24. package/dist/{index-CaiZ5p6q.d.mts → index-B1XcyMm8.d.mts} +2 -2
  25. package/dist/{index-CaiZ5p6q.d.mts.map → index-B1XcyMm8.d.mts.map} +1 -1
  26. package/dist/{index-Cf1pVxn0.d.mts → index-B2Xesdug.d.mts} +4 -4
  27. package/dist/{index-Cf1pVxn0.d.mts.map → index-B2Xesdug.d.mts.map} +1 -1
  28. package/dist/{index-BHqdtJbN.d.mts → index-BxARm93R.d.mts} +2 -2
  29. package/dist/{index-BHqdtJbN.d.mts.map → index-BxARm93R.d.mts.map} +1 -1
  30. package/dist/{index-BONyHjZX.d.mts → index-C0o3lLyA.d.mts} +3 -3
  31. package/dist/{index-BONyHjZX.d.mts.map → index-C0o3lLyA.d.mts.map} +1 -1
  32. package/dist/{index-DN9oXO-X.d.mts → index-D-l-yCv6.d.mts} +3 -3
  33. package/dist/{index-DN9oXO-X.d.mts.map → index-D-l-yCv6.d.mts.map} +1 -1
  34. package/dist/{index-DEODKaL6.d.mts → index-DujpgUUq.d.mts} +7 -2
  35. package/dist/index-DujpgUUq.d.mts.map +1 -0
  36. package/dist/index.d.mts +10 -10
  37. package/dist/index.d.mts.map +1 -1
  38. package/dist/index.mjs +52 -52
  39. package/dist/preview/index.d.mts +2 -2
  40. package/dist/preview/index.mjs +10 -10
  41. package/dist/{preview-Ca4tF5Ro.mjs → preview-D2dMmokw.mjs} +2 -2
  42. package/dist/{preview-Ca4tF5Ro.mjs.map → preview-D2dMmokw.mjs.map} +1 -1
  43. package/dist/preview-engine/audio.mjs +1 -1
  44. package/dist/preview-engine/chunk-266DECPQ.mjs +1 -0
  45. package/dist/preview-engine/{chunk-SZW5J72T.mjs → chunk-2DDBSI75.mjs} +1 -1
  46. package/dist/preview-engine/{chunk-QXCY2ATH.mjs → chunk-2GIWWDE4.mjs} +1 -1
  47. package/dist/preview-engine/{chunk-U4JIFQRR.mjs → chunk-34ACEGNW.mjs} +1 -1
  48. package/dist/preview-engine/{chunk-AY7UX37L.mjs → chunk-3ACCCPBN.mjs} +1 -1
  49. package/dist/preview-engine/{chunk-VK2CVMWJ.mjs → chunk-5E5J4KT4.mjs} +1 -1
  50. package/dist/preview-engine/{chunk-T2FE5VOW.mjs → chunk-5RQHNB6Y.mjs} +1 -1
  51. package/dist/preview-engine/{chunk-TS3JI3BH.mjs → chunk-67SSYK7D.mjs} +1 -1
  52. package/dist/preview-engine/{chunk-PL4IH5V4.mjs → chunk-6K7US2WD.mjs} +1 -1
  53. package/dist/preview-engine/{chunk-PEWYB6WP.mjs → chunk-7LVOSEGN.mjs} +1 -1
  54. package/dist/preview-engine/{chunk-PSRQA3QW.mjs → chunk-A5OVKZ52.mjs} +1 -1
  55. package/dist/preview-engine/{chunk-PXT52LEH.mjs → chunk-C6Z7H2RZ.mjs} +1 -1
  56. package/dist/preview-engine/chunk-CPFPY35C.mjs +1 -0
  57. package/dist/preview-engine/{chunk-7EPIRODI.mjs → chunk-DOCSX45C.mjs} +1 -1
  58. package/dist/preview-engine/{chunk-GSFN4WCH.mjs → chunk-FFGBUS76.mjs} +1 -1
  59. package/dist/preview-engine/{chunk-IR5DNNWR.mjs → chunk-FFMPC7QA.mjs} +1 -1
  60. package/dist/preview-engine/{chunk-IUPDOATX.mjs → chunk-FHKBALVI.mjs} +1 -1
  61. package/dist/preview-engine/{chunk-HE4R7EZM.mjs → chunk-G4J662EL.mjs} +1 -1
  62. package/dist/preview-engine/{chunk-5W4AFQP7.mjs → chunk-GNG4YH2W.mjs} +1 -1
  63. package/dist/preview-engine/{chunk-L6BH5J4P.mjs → chunk-GQLZXCW3.mjs} +1 -1
  64. package/dist/preview-engine/{chunk-EVXWDOCL.mjs → chunk-HDGFNBYK.mjs} +1 -1
  65. package/dist/preview-engine/{chunk-JXNG2ACR.mjs → chunk-HNNIVJ2K.mjs} +1 -1
  66. package/dist/preview-engine/{chunk-FU7AIAMM.mjs → chunk-HUKAC5MJ.mjs} +1 -1
  67. package/dist/preview-engine/{chunk-44CQSOYE.mjs → chunk-JX22B2FS.mjs} +1 -1
  68. package/dist/preview-engine/{chunk-DIGIQ5MJ.mjs → chunk-KAQUNOVB.mjs} +1 -1
  69. package/dist/preview-engine/{chunk-MLY5M7Y5.mjs → chunk-KT35IPCF.mjs} +1 -1
  70. package/dist/preview-engine/{chunk-VXS5SIEC.mjs → chunk-LIQA5OOU.mjs} +1 -1
  71. package/dist/preview-engine/{chunk-SGPRLTNF.mjs → chunk-LK3T65RB.mjs} +1 -1
  72. package/dist/preview-engine/{chunk-YQZOGEPZ.mjs → chunk-LLDIDE5Q.mjs} +1 -1
  73. package/dist/preview-engine/chunk-NNQUIVTE.mjs +5 -0
  74. package/dist/preview-engine/{chunk-5AUB4Y3L.mjs → chunk-NRAZV5OA.mjs} +1 -1
  75. package/dist/preview-engine/{chunk-VGZZSPDN.mjs → chunk-NTVDL3RS.mjs} +1 -1
  76. package/dist/preview-engine/{chunk-BSOJR4JU.mjs → chunk-O6NRIXS5.mjs} +1 -1
  77. package/dist/preview-engine/{chunk-OKH2VU2U.mjs → chunk-PZF6T7DM.mjs} +1 -1
  78. package/dist/preview-engine/{chunk-OJ2PKBXE.mjs → chunk-QJZKIY4H.mjs} +1 -1
  79. package/dist/preview-engine/{chunk-WFGJXCZT.mjs → chunk-R26SY5D4.mjs} +1 -1
  80. package/dist/preview-engine/{chunk-EYWPOCZW.mjs → chunk-RDP6QROU.mjs} +1 -1
  81. package/dist/preview-engine/{chunk-J2R5R7YY.mjs → chunk-RKVB47IA.mjs} +1 -1
  82. package/dist/preview-engine/{chunk-PAQNDZQB.mjs → chunk-SWXVITCQ.mjs} +1 -1
  83. package/dist/preview-engine/{chunk-KERW7QJ4.mjs → chunk-UZBVCYRY.mjs} +1 -1
  84. package/dist/preview-engine/{chunk-Q22PJXFJ.mjs → chunk-WACWOKEP.mjs} +1 -1
  85. package/dist/preview-engine/{chunk-AXHB4J37.mjs → chunk-WCZ5DKZ4.mjs} +1 -1
  86. package/dist/preview-engine/{chunk-WH5Q2NFN.mjs → chunk-WJJIISQJ.mjs} +1 -1
  87. package/dist/preview-engine/chunk-XDMZP3E2.mjs +1 -0
  88. package/dist/preview-engine/{chunk-7G3XIOP7.mjs → chunk-Z6UKUHPU.mjs} +1 -1
  89. package/dist/preview-engine/{chunk-WUKH7BD7.mjs → chunk-ZKPQGQE3.mjs} +1 -1
  90. package/dist/preview-engine/effects.mjs +1 -1
  91. package/dist/preview-engine/framefields.mjs +4 -4
  92. package/dist/preview-engine/player.mjs +1 -1
  93. package/dist/preview-engine/{renderers-2P6KXWEZ.mjs → renderers-3CXFGRE7.mjs} +1 -1
  94. package/dist/preview-engine/{renderers-KZWGSKRF.mjs → renderers-3FC3WCJN.mjs} +1 -1
  95. package/dist/preview-engine/renderers-3S2FM33K.mjs +1 -0
  96. package/dist/preview-engine/{renderers-5FQA2DP4.mjs → renderers-4AJWVIJG.mjs} +1 -1
  97. package/dist/preview-engine/renderers-53ZTBI3C.mjs +1 -0
  98. package/dist/preview-engine/renderers-5USBVCMQ.mjs +1 -0
  99. package/dist/preview-engine/renderers-65G6BLEA.mjs +1 -0
  100. package/dist/preview-engine/{renderers-PYWXELLG.mjs → renderers-6JZ4HYIU.mjs} +1 -1
  101. package/dist/preview-engine/{renderers-3GHEWWVX.mjs → renderers-75TL7RLS.mjs} +1 -1
  102. package/dist/preview-engine/{renderers-U6KY34TP.mjs → renderers-7CPYTCNW.mjs} +1 -1
  103. package/dist/preview-engine/renderers-7XU7BXE7.mjs +1 -0
  104. package/dist/preview-engine/{renderers-2VN3AH45.mjs → renderers-AZYJFJLO.mjs} +1 -1
  105. package/dist/preview-engine/{renderers-TR2V2HZ2.mjs → renderers-BDWVXYTW.mjs} +1 -1
  106. package/dist/preview-engine/renderers-BFXM32BC.mjs +1 -0
  107. package/dist/preview-engine/renderers-CDXHCWWK.mjs +1 -0
  108. package/dist/preview-engine/{renderers-N7FR54V2.mjs → renderers-CK3ZL3GM.mjs} +1 -1
  109. package/dist/preview-engine/renderers-CLUN7WU6.mjs +1 -0
  110. package/dist/preview-engine/renderers-DTB4HEXU.mjs +1 -0
  111. package/dist/preview-engine/renderers-EFKNRLYF.mjs +1 -0
  112. package/dist/preview-engine/{renderers-UPTJJE5F.mjs → renderers-FADYGSLK.mjs} +1 -1
  113. package/dist/preview-engine/{renderers-I5E2RSV4.mjs → renderers-FKH5S64C.mjs} +1 -1
  114. package/dist/preview-engine/{renderers-BSKZXITT.mjs → renderers-FM6A5YR4.mjs} +1 -1
  115. package/dist/preview-engine/renderers-G2K7ZA5O.mjs +1 -0
  116. package/dist/preview-engine/{renderers-D6T6IPER.mjs → renderers-GAIUTII6.mjs} +1 -1
  117. package/dist/preview-engine/renderers-GTUO5LIV.mjs +1 -0
  118. package/dist/preview-engine/{renderers-A6HM64UZ.mjs → renderers-GUPEJK3O.mjs} +1 -1
  119. package/dist/preview-engine/{renderers-IWQ3V6AJ.mjs → renderers-HSJIVP57.mjs} +1 -1
  120. package/dist/preview-engine/{renderers-4GRVAW2W.mjs → renderers-HZHEGONW.mjs} +1 -1
  121. package/dist/preview-engine/{renderers-NWHS7N2L.mjs → renderers-IHACBWXI.mjs} +1 -1
  122. package/dist/preview-engine/{renderers-3YCJOINH.mjs → renderers-IHRFEZNP.mjs} +1 -1
  123. package/dist/preview-engine/{renderers-A7VH3ON5.mjs → renderers-IJDQJEE5.mjs} +1 -1
  124. package/dist/preview-engine/{renderers-OT7D3BUA.mjs → renderers-IO3BVVJ7.mjs} +1 -1
  125. package/dist/preview-engine/renderers-IR772VSN.mjs +1 -0
  126. package/dist/preview-engine/{renderers-EJWPVVQR.mjs → renderers-K7B5PQBT.mjs} +1 -1
  127. package/dist/preview-engine/renderers-L6TRJOXA.mjs +1 -0
  128. package/dist/preview-engine/{renderers-N7TS5562.mjs → renderers-LVLVJHOL.mjs} +1 -1
  129. package/dist/preview-engine/{renderers-FK72LKQC.mjs → renderers-MBSOKWKB.mjs} +1 -1
  130. package/dist/preview-engine/{renderers-NC64EQDE.mjs → renderers-N6H6RSF2.mjs} +1 -1
  131. package/dist/preview-engine/{renderers-ZHZMGMLN.mjs → renderers-NJLGPPX7.mjs} +1 -1
  132. package/dist/preview-engine/renderers-O5NFQYRQ.mjs +1 -0
  133. package/dist/preview-engine/renderers-O6V3OEKX.mjs +1 -0
  134. package/dist/preview-engine/renderers-OODA27UH.mjs +1 -0
  135. package/dist/preview-engine/{renderers-6CG7DBTB.mjs → renderers-R4WMM6IX.mjs} +1 -1
  136. package/dist/preview-engine/renderers-RIGW33ZI.mjs +1 -0
  137. package/dist/preview-engine/{renderers-RLHTNLRE.mjs → renderers-RKZGYWDG.mjs} +1 -1
  138. package/dist/preview-engine/renderers-RUZRBQ4K.mjs +1 -0
  139. package/dist/preview-engine/renderers-SKB2GGKS.mjs +1 -0
  140. package/dist/preview-engine/{renderers-6OGFUSH6.mjs → renderers-SW7FIEKO.mjs} +1 -1
  141. package/dist/preview-engine/renderers-T4D2TASM.mjs +1 -0
  142. package/dist/preview-engine/renderers-T74XV36Q.mjs +1 -0
  143. package/dist/preview-engine/{renderers-F55XFVMP.mjs → renderers-TCNPEANL.mjs} +1 -1
  144. package/dist/preview-engine/renderers-TOPW2UM3.mjs +1 -0
  145. package/dist/preview-engine/{renderers-5YEIUTVN.mjs → renderers-TY7DVI7E.mjs} +1 -1
  146. package/dist/preview-engine/{renderers-HQEKSUNR.mjs → renderers-U55KRIOV.mjs} +1 -1
  147. package/dist/preview-engine/{renderers-YMPXGYRU.mjs → renderers-UDOBX433.mjs} +1 -1
  148. package/dist/preview-engine/{renderers-CRRLV7IO.mjs → renderers-UMPOVFRA.mjs} +1 -1
  149. package/dist/preview-engine/renderers-UO5G3Y2G.mjs +1 -0
  150. package/dist/preview-engine/renderers-UOV7VOJJ.mjs +1 -0
  151. package/dist/preview-engine/{renderers-MON4QFRF.mjs → renderers-UWKSTSTA.mjs} +1 -1
  152. package/dist/preview-engine/renderers-VHPAOUTA.mjs +1 -0
  153. package/dist/preview-engine/{renderers-E76OKK66.mjs → renderers-WR6MKT5S.mjs} +1 -1
  154. package/dist/preview-engine/{renderers-MCECHPCL.mjs → renderers-XKHNBARD.mjs} +1 -1
  155. package/dist/preview-engine/renderers-YEQRQJFC.mjs +1 -0
  156. package/dist/preview-engine/{renderers-RJO6H4FC.mjs → renderers-YRZ3WODX.mjs} +1 -1
  157. package/dist/preview-engine/renderers-YUTFGVRY.mjs +1 -0
  158. package/dist/preview-engine/{renderers-3SRG77SC.mjs → renderers-YXOTRKPA.mjs} +1 -1
  159. package/dist/preview-engine/renderers-ZOU5ARVD.mjs +1 -0
  160. package/dist/preview-engine/renderers-ZW75LQTR.mjs +1 -0
  161. package/dist/preview-engine/signals.mjs +1 -1
  162. package/dist/{program-CJEg2wMa.mjs → program-C2cJayA1.mjs} +4 -4
  163. package/dist/{program-CJEg2wMa.mjs.map → program-C2cJayA1.mjs.map} +1 -1
  164. package/dist/renderer/index.d.mts +2 -2
  165. package/dist/renderer/index.mjs +2 -2
  166. package/dist/{renderer-CCu1Q8ib.mjs → renderer--ruTGlPo.mjs} +3 -3
  167. package/dist/{renderer-CCu1Q8ib.mjs.map → renderer--ruTGlPo.mjs.map} +1 -1
  168. package/dist/{renderer-D-IcBLT0.mjs → renderer-7y5Cj8rV.mjs} +3 -3
  169. package/dist/{renderer-D-IcBLT0.mjs.map → renderer-7y5Cj8rV.mjs.map} +1 -1
  170. package/dist/{renderer-Dg5yLAM9.mjs → renderer-92eLJg24.mjs} +4 -4
  171. package/dist/{renderer-Dg5yLAM9.mjs.map → renderer-92eLJg24.mjs.map} +1 -1
  172. package/dist/{renderer-CduDa1qf.mjs → renderer-B0gPTXhe.mjs} +3 -3
  173. package/dist/{renderer-CduDa1qf.mjs.map → renderer-B0gPTXhe.mjs.map} +1 -1
  174. package/dist/{renderer-CjTxu89O.mjs → renderer-B1QREs7J.mjs} +3 -3
  175. package/dist/{renderer-CjTxu89O.mjs.map → renderer-B1QREs7J.mjs.map} +1 -1
  176. package/dist/{renderer-DVaVVz-D.mjs → renderer-B3e4LSE6.mjs} +3 -3
  177. package/dist/{renderer-DVaVVz-D.mjs.map → renderer-B3e4LSE6.mjs.map} +1 -1
  178. package/dist/{renderer-CxSH3F_n.mjs → renderer-B4RpSd4A.mjs} +2 -2
  179. package/dist/{renderer-CxSH3F_n.mjs.map → renderer-B4RpSd4A.mjs.map} +1 -1
  180. package/dist/renderer-BAhZeUUn.mjs +5 -0
  181. package/dist/{renderer-BZCLdb8F.mjs → renderer-BBAbZfBl.mjs} +4 -4
  182. package/dist/{renderer-BZCLdb8F.mjs.map → renderer-BBAbZfBl.mjs.map} +1 -1
  183. package/dist/{renderer-DZndEvZN.mjs → renderer-BDCy8NgT.mjs} +3 -3
  184. package/dist/{renderer-DZndEvZN.mjs.map → renderer-BDCy8NgT.mjs.map} +1 -1
  185. package/dist/renderer-BHAE_dKq.mjs +5 -0
  186. package/dist/{renderer-i4RJ-_sx.mjs → renderer-BMKFzfSQ.mjs} +3 -3
  187. package/dist/{renderer-i4RJ-_sx.mjs.map → renderer-BMKFzfSQ.mjs.map} +1 -1
  188. package/dist/renderer-BNYZY3FE.mjs +5 -0
  189. package/dist/{renderer-BtJ6XYN7.mjs → renderer-BPixWnmY.mjs} +3 -3
  190. package/dist/{renderer-BtJ6XYN7.mjs.map → renderer-BPixWnmY.mjs.map} +1 -1
  191. package/dist/renderer-BSvubMvI.mjs +5 -0
  192. package/dist/{renderer-CoN2JgLO.mjs → renderer-BTd2sWDC.mjs} +3 -3
  193. package/dist/{renderer-CoN2JgLO.mjs.map → renderer-BTd2sWDC.mjs.map} +1 -1
  194. package/dist/{renderer-DautVsW4.mjs → renderer-BTigwMQp.mjs} +3 -3
  195. package/dist/{renderer-DautVsW4.mjs.map → renderer-BTigwMQp.mjs.map} +1 -1
  196. package/dist/renderer-B_M_yhTc.mjs +5 -0
  197. package/dist/renderer-B_xSsTuy.mjs +5 -0
  198. package/dist/renderer-BePHurAU.mjs +5 -0
  199. package/dist/renderer-BfZquJrW.mjs +5 -0
  200. package/dist/{renderer-DAFi5TC_.mjs → renderer-Bi6W4RSn.mjs} +2 -2
  201. package/dist/{renderer-DAFi5TC_.mjs.map → renderer-Bi6W4RSn.mjs.map} +1 -1
  202. package/dist/{renderer-Edn9xltT.mjs → renderer-BjCHW9Jp.mjs} +2 -2
  203. package/dist/{renderer-CJmZURPQ.mjs → renderer-BjvNEbML.mjs} +2 -2
  204. package/dist/{renderer-CJmZURPQ.mjs.map → renderer-BjvNEbML.mjs.map} +1 -1
  205. package/dist/{renderer-C2ZIAhdJ.mjs → renderer-BkWd4-YO.mjs} +2 -2
  206. package/dist/{renderer-C2ZIAhdJ.mjs.map → renderer-BkWd4-YO.mjs.map} +1 -1
  207. package/dist/{renderer-Cfto0m0-.mjs → renderer-Bkrk0M0r.mjs} +3 -3
  208. package/dist/{renderer-Cfto0m0-.mjs.map → renderer-Bkrk0M0r.mjs.map} +1 -1
  209. package/dist/{renderer-h9sJnoxw.mjs → renderer-BljMOvry.mjs} +3 -3
  210. package/dist/{renderer-h9sJnoxw.mjs.map → renderer-BljMOvry.mjs.map} +1 -1
  211. package/dist/renderer-BuY5ypB2.mjs +5 -0
  212. package/dist/renderer-BvOQgFHo.mjs +5 -0
  213. package/dist/{renderer-DqgduGiO.mjs → renderer-BwpgDLYO.mjs} +3 -3
  214. package/dist/{renderer-DqgduGiO.mjs.map → renderer-BwpgDLYO.mjs.map} +1 -1
  215. package/dist/{renderer-DaV95CAd.mjs → renderer-BwwZB2mt.mjs} +4 -4
  216. package/dist/{renderer-DaV95CAd.mjs.map → renderer-BwwZB2mt.mjs.map} +1 -1
  217. package/dist/{renderer-DA1brg35.mjs → renderer-ByCX4JYg.mjs} +3 -3
  218. package/dist/{renderer-DA1brg35.mjs.map → renderer-ByCX4JYg.mjs.map} +1 -1
  219. package/dist/{renderer-Tf1AS1aO.mjs → renderer-C1E5Rt5q.mjs} +3 -3
  220. package/dist/{renderer-Tf1AS1aO.mjs.map → renderer-C1E5Rt5q.mjs.map} +1 -1
  221. package/dist/renderer-C7NkSvUz.mjs +5 -0
  222. package/dist/{renderer-CG4TmDWH.mjs → renderer-CCGzT6bX.mjs} +2 -2
  223. package/dist/{renderer-wFyrVuuj.mjs → renderer-CDOobs18.mjs} +3 -3
  224. package/dist/{renderer-wFyrVuuj.mjs.map → renderer-CDOobs18.mjs.map} +1 -1
  225. package/dist/{renderer-BaHEN_Kv.mjs → renderer-CDUxAtsk.mjs} +4 -4
  226. package/dist/{renderer-BaHEN_Kv.mjs.map → renderer-CDUxAtsk.mjs.map} +1 -1
  227. package/dist/renderer-CIuxV2q1.mjs +5 -0
  228. package/dist/{renderer-DY8fPeH3.mjs → renderer-CJ4bxCld.mjs} +2 -2
  229. package/dist/renderer-CKp97tSQ.mjs +5 -0
  230. package/dist/{renderer-TyZu7nQ2.mjs → renderer-CNb-DG00.mjs} +71 -71
  231. package/dist/{renderer-TyZu7nQ2.mjs.map → renderer-CNb-DG00.mjs.map} +1 -1
  232. package/dist/{renderer-BTJyO6ov.mjs → renderer-CNuVJ4nG.mjs} +2 -2
  233. package/dist/{renderer-BTJyO6ov.mjs.map → renderer-CNuVJ4nG.mjs.map} +1 -1
  234. package/dist/renderer-CY89dTFR.mjs +5 -0
  235. package/dist/renderer-C_B_4Bl0.mjs +5 -0
  236. package/dist/{renderer-Dk0dnuHr.mjs → renderer-Cbsnj9vV.mjs} +3 -3
  237. package/dist/{renderer-Dk0dnuHr.mjs.map → renderer-Cbsnj9vV.mjs.map} +1 -1
  238. package/dist/{renderer-B6UqWjtH.mjs → renderer-CcoUNzlQ.mjs} +3 -3
  239. package/dist/{renderer-B6UqWjtH.mjs.map → renderer-CcoUNzlQ.mjs.map} +1 -1
  240. package/dist/renderer-Cd87JOjP.mjs +5 -0
  241. package/dist/{renderer-BZF48o1T.mjs → renderer-CeiCJCg4.mjs} +3 -3
  242. package/dist/{renderer-BZF48o1T.mjs.map → renderer-CeiCJCg4.mjs.map} +1 -1
  243. package/dist/renderer-Cev6orIK.mjs +6 -0
  244. package/dist/renderer-Cewf6UPh.mjs +5 -0
  245. package/dist/renderer-CnHsMLIv.mjs +5 -0
  246. package/dist/renderer-CoxuAr7b.mjs +5 -0
  247. package/dist/{renderer-D4E8Yf61.mjs → renderer-CqtIbe5n.mjs} +2 -2
  248. package/dist/{renderer-D4E8Yf61.mjs.map → renderer-CqtIbe5n.mjs.map} +1 -1
  249. package/dist/renderer-CrdG7trA.mjs +5 -0
  250. package/dist/{renderer-C-La-IAt.mjs → renderer-Csss5GFQ.mjs} +2 -2
  251. package/dist/{renderer-C-La-IAt.mjs.map → renderer-Csss5GFQ.mjs.map} +1 -1
  252. package/dist/renderer-Cu5MFgbk.mjs +5 -0
  253. package/dist/renderer-CuOjhtoo.mjs +5 -0
  254. package/dist/{renderer-BhZutM8K.mjs → renderer-Cv4lchUP.mjs} +3 -3
  255. package/dist/{renderer-BhZutM8K.mjs.map → renderer-Cv4lchUP.mjs.map} +1 -1
  256. package/dist/{renderer-CgZ1G37H.mjs → renderer-Cw6Sagih.mjs} +3 -3
  257. package/dist/{renderer-CgZ1G37H.mjs.map → renderer-Cw6Sagih.mjs.map} +1 -1
  258. package/dist/{renderer-Dim2ZlfK.d.mts → renderer-CxqPeATd.d.mts} +2 -2
  259. package/dist/{renderer-Dim2ZlfK.d.mts.map → renderer-CxqPeATd.d.mts.map} +1 -1
  260. package/dist/{renderer-yGARXwV0.mjs → renderer-CzRqzp8P.mjs} +3 -3
  261. package/dist/{renderer-yGARXwV0.mjs.map → renderer-CzRqzp8P.mjs.map} +1 -1
  262. package/dist/{renderer-B8v8iEkB.mjs → renderer-Czxgaygb.mjs} +6 -6
  263. package/dist/{renderer-B8v8iEkB.mjs.map → renderer-Czxgaygb.mjs.map} +1 -1
  264. package/dist/{renderer-eWBBsCv2.mjs → renderer-D0vom99O.mjs} +2 -2
  265. package/dist/{renderer-eWBBsCv2.mjs.map → renderer-D0vom99O.mjs.map} +1 -1
  266. package/dist/{renderer-C9pl21Zb.mjs → renderer-D2-V9nQq.mjs} +3 -3
  267. package/dist/{renderer-C9pl21Zb.mjs.map → renderer-D2-V9nQq.mjs.map} +1 -1
  268. package/dist/renderer-D2_0g6Oi.mjs +5 -0
  269. package/dist/renderer-D62FwolD.mjs +5 -0
  270. package/dist/{renderer-445i0uxs.mjs → renderer-D6BXR7P4.mjs} +2 -2
  271. package/dist/{renderer-445i0uxs.mjs.map → renderer-D6BXR7P4.mjs.map} +1 -1
  272. package/dist/renderer-DDNY9N7I.mjs +5 -0
  273. package/dist/{renderer-5tQ7ImPk.mjs → renderer-DFJQ6v0F.mjs} +2 -2
  274. package/dist/{renderer-5tQ7ImPk.mjs.map → renderer-DFJQ6v0F.mjs.map} +1 -1
  275. package/dist/renderer-DF_ONJ3v.mjs +5 -0
  276. package/dist/{renderer-CoO2j8AC.mjs → renderer-DILUmb-e.mjs} +3 -3
  277. package/dist/{renderer-CoO2j8AC.mjs.map → renderer-DILUmb-e.mjs.map} +1 -1
  278. package/dist/{renderer-CduL1AOK.mjs → renderer-DKfwlE4e.mjs} +3 -3
  279. package/dist/{renderer-CduL1AOK.mjs.map → renderer-DKfwlE4e.mjs.map} +1 -1
  280. package/dist/{renderer-DFX2V9Dp.mjs → renderer-DScyMHpJ.mjs} +2 -2
  281. package/dist/{renderer-DFX2V9Dp.mjs.map → renderer-DScyMHpJ.mjs.map} +1 -1
  282. package/dist/{renderer-BZvWlGsa.mjs → renderer-DTw-W0Yz.mjs} +3 -3
  283. package/dist/{renderer-BZvWlGsa.mjs.map → renderer-DTw-W0Yz.mjs.map} +1 -1
  284. package/dist/{renderer-BFWRUTov.mjs → renderer-DZJJHCtm.mjs} +3 -3
  285. package/dist/{renderer-BFWRUTov.mjs.map → renderer-DZJJHCtm.mjs.map} +1 -1
  286. package/dist/{renderer-Cz9fzS11.mjs → renderer-DaSxr9fM.mjs} +3 -3
  287. package/dist/{renderer-Cz9fzS11.mjs.map → renderer-DaSxr9fM.mjs.map} +1 -1
  288. package/dist/{renderer-CoX23zo_.mjs → renderer-DaqWTx7s.mjs} +3 -3
  289. package/dist/{renderer-CoX23zo_.mjs.map → renderer-DaqWTx7s.mjs.map} +1 -1
  290. package/dist/renderer-DbzrVHEE.mjs +5 -0
  291. package/dist/{renderer-CN3iCli4.mjs → renderer-DcBGYN3V.mjs} +3 -3
  292. package/dist/{renderer-CN3iCli4.mjs.map → renderer-DcBGYN3V.mjs.map} +1 -1
  293. package/dist/{renderer-CCCitH4J.mjs → renderer-DjBCWxYy.mjs} +3 -3
  294. package/dist/{renderer-CCCitH4J.mjs.map → renderer-DjBCWxYy.mjs.map} +1 -1
  295. package/dist/{renderer-gbBgGPNL.mjs → renderer-DjwITRvg.mjs} +2 -2
  296. package/dist/renderer-DlYchp1v.mjs +5 -0
  297. package/dist/renderer-DqcUNP8J.mjs +5 -0
  298. package/dist/renderer-DqvFhEQj.mjs +5 -0
  299. package/dist/{renderer-B4JmNa_T.mjs → renderer-DwVOxdzC.mjs} +3 -3
  300. package/dist/{renderer-B4JmNa_T.mjs.map → renderer-DwVOxdzC.mjs.map} +1 -1
  301. package/dist/{renderer-BZWiY6Jw.mjs → renderer-Dwu_zfdL.mjs} +3 -3
  302. package/dist/{renderer-BZWiY6Jw.mjs.map → renderer-Dwu_zfdL.mjs.map} +1 -1
  303. package/dist/renderer-DxBav2bE.mjs +5 -0
  304. package/dist/{renderer-DkYiOWPJ.mjs → renderer-DyyIXLQK.mjs} +3 -3
  305. package/dist/{renderer-DkYiOWPJ.mjs.map → renderer-DyyIXLQK.mjs.map} +1 -1
  306. package/dist/{renderer-D-e3vDnO.mjs → renderer-DzSMeQBC.mjs} +3 -3
  307. package/dist/{renderer-D-e3vDnO.mjs.map → renderer-DzSMeQBC.mjs.map} +1 -1
  308. package/dist/{renderer-DOZJeWM4.mjs → renderer-EZp_IIPK.mjs} +3 -3
  309. package/dist/{renderer-DOZJeWM4.mjs.map → renderer-EZp_IIPK.mjs.map} +1 -1
  310. package/dist/{renderer-DkM_wN8j.mjs → renderer-G1pMJH5C.mjs} +2 -2
  311. package/dist/{renderer-DkM_wN8j.mjs.map → renderer-G1pMJH5C.mjs.map} +1 -1
  312. package/dist/renderer-GvSRoQje.mjs +5 -0
  313. package/dist/{renderer-DQtk282o.mjs → renderer-If8JOkBi.mjs} +2 -2
  314. package/dist/{renderer-DQtk282o.mjs.map → renderer-If8JOkBi.mjs.map} +1 -1
  315. package/dist/{renderer-BL36f2IQ.mjs → renderer-JvcR1vYI.mjs} +2 -2
  316. package/dist/{renderer-BL36f2IQ.mjs.map → renderer-JvcR1vYI.mjs.map} +1 -1
  317. package/dist/renderer-KP7Ita9g.mjs +5 -0
  318. package/dist/{renderer-DOkEalxy.mjs → renderer-NizuhHsH.mjs} +3 -3
  319. package/dist/{renderer-DOkEalxy.mjs.map → renderer-NizuhHsH.mjs.map} +1 -1
  320. package/dist/renderer-Pc8dyNXt.mjs +5 -0
  321. package/dist/{renderer-fXRwAdO2.mjs → renderer-RDCax5CK.mjs} +3 -3
  322. package/dist/{renderer-fXRwAdO2.mjs.map → renderer-RDCax5CK.mjs.map} +1 -1
  323. package/dist/{renderer-BOvCstdU.mjs → renderer-UcdqCarR.mjs} +3 -3
  324. package/dist/{renderer-BOvCstdU.mjs.map → renderer-UcdqCarR.mjs.map} +1 -1
  325. package/dist/{renderer-BaBluD-r.mjs → renderer-V5uEyDFz.mjs} +3 -3
  326. package/dist/{renderer-BaBluD-r.mjs.map → renderer-V5uEyDFz.mjs.map} +1 -1
  327. package/dist/{renderer-BzgnTEvf.mjs → renderer-X0eKSD7v.mjs} +3 -3
  328. package/dist/{renderer-BzgnTEvf.mjs.map → renderer-X0eKSD7v.mjs.map} +1 -1
  329. package/dist/{renderer-Ai5nZsof.mjs → renderer-Za4D9hej.mjs} +3 -3
  330. package/dist/{renderer-Ai5nZsof.mjs.map → renderer-Za4D9hej.mjs.map} +1 -1
  331. package/dist/{renderer-q971j1BW.mjs → renderer-apeDrNXM.mjs} +3 -3
  332. package/dist/{renderer-q971j1BW.mjs.map → renderer-apeDrNXM.mjs.map} +1 -1
  333. package/dist/renderer-ezRCmU09.mjs +3 -0
  334. package/dist/{renderer-CNS8LA2_.mjs → renderer-gRMkQabv.mjs} +3 -3
  335. package/dist/{renderer-CNS8LA2_.mjs.map → renderer-gRMkQabv.mjs.map} +1 -1
  336. package/dist/renderer-h6ev1ogx.mjs +5 -0
  337. package/dist/{renderer-nMnE_T2y.mjs → renderer-rXgqgAjw.mjs} +3 -3
  338. package/dist/{renderer-nMnE_T2y.mjs.map → renderer-rXgqgAjw.mjs.map} +1 -1
  339. package/dist/{renderer-BPsi7Q7Z.mjs → renderer-ut1GqW89.mjs} +3 -3
  340. package/dist/{renderer-BPsi7Q7Z.mjs.map → renderer-ut1GqW89.mjs.map} +1 -1
  341. package/dist/{renderer-DH0wkQkR.mjs → renderer-yyUpCeWb.mjs} +2 -2
  342. package/dist/{renderer-DH0wkQkR.mjs.map → renderer-yyUpCeWb.mjs.map} +1 -1
  343. package/dist/{renderers-CP8CFWDs-DoVn7dbW.mjs → renderers-CP8CFWDs-DzGXDs5p.mjs} +3 -3
  344. package/dist/{renderers-CP8CFWDs-DoVn7dbW.mjs.map → renderers-CP8CFWDs-DzGXDs5p.mjs.map} +1 -1
  345. package/dist/signals/index.d.mts +5 -5
  346. package/dist/signals/index.mjs +6 -6
  347. package/dist/{signals-DGRs6ddH.mjs → signals-C5nOrRmn.mjs} +3 -3
  348. package/dist/{signals-DGRs6ddH.mjs.map → signals-C5nOrRmn.mjs.map} +1 -1
  349. package/package.json +57 -57
  350. package/dist/dist-Cl0mvShy.mjs.map +0 -1
  351. package/dist/dist-DRB6Vg5u.mjs.map +0 -1
  352. package/dist/dist-fjKpBYkc.mjs.map +0 -1
  353. package/dist/index-DEODKaL6.d.mts.map +0 -1
  354. package/dist/preview-engine/chunk-63SFBHEH.mjs +0 -1
  355. package/dist/preview-engine/chunk-7J2FWGVD.mjs +0 -1
  356. package/dist/preview-engine/chunk-M5HZPZHQ.mjs +0 -1
  357. package/dist/preview-engine/chunk-OG62XGCT.mjs +0 -5
  358. package/dist/preview-engine/renderers-2H7YEUTD.mjs +0 -1
  359. package/dist/preview-engine/renderers-2ILG23ED.mjs +0 -1
  360. package/dist/preview-engine/renderers-3RC5FDWX.mjs +0 -1
  361. package/dist/preview-engine/renderers-6WH7NZCC.mjs +0 -1
  362. package/dist/preview-engine/renderers-7VJN5L3Z.mjs +0 -1
  363. package/dist/preview-engine/renderers-B7DSGUMI.mjs +0 -1
  364. package/dist/preview-engine/renderers-BFNJ7VCI.mjs +0 -1
  365. package/dist/preview-engine/renderers-CGYIDAVV.mjs +0 -1
  366. package/dist/preview-engine/renderers-DXHJAMZR.mjs +0 -1
  367. package/dist/preview-engine/renderers-ECA3P4ON.mjs +0 -1
  368. package/dist/preview-engine/renderers-FWGMNPYB.mjs +0 -1
  369. package/dist/preview-engine/renderers-HUW2ZMS3.mjs +0 -1
  370. package/dist/preview-engine/renderers-HXFRTIJD.mjs +0 -1
  371. package/dist/preview-engine/renderers-JHFT27YU.mjs +0 -1
  372. package/dist/preview-engine/renderers-NQXMYNSY.mjs +0 -1
  373. package/dist/preview-engine/renderers-ORAIXUL3.mjs +0 -1
  374. package/dist/preview-engine/renderers-Q4OFCMXI.mjs +0 -1
  375. package/dist/preview-engine/renderers-QVZVEYP5.mjs +0 -1
  376. package/dist/preview-engine/renderers-RKDPX5JU.mjs +0 -1
  377. package/dist/preview-engine/renderers-SBFF7JP5.mjs +0 -1
  378. package/dist/preview-engine/renderers-TAWT3ZSS.mjs +0 -1
  379. package/dist/preview-engine/renderers-UHTO6BQA.mjs +0 -1
  380. package/dist/preview-engine/renderers-UNK6I4JJ.mjs +0 -1
  381. package/dist/preview-engine/renderers-W773SBPV.mjs +0 -1
  382. package/dist/preview-engine/renderers-XHTMRXC5.mjs +0 -1
  383. package/dist/preview-engine/renderers-YECY2YFT.mjs +0 -1
  384. package/dist/preview-engine/renderers-YMN6QXK7.mjs +0 -1
  385. package/dist/preview-engine/renderers-ZANPE3OK.mjs +0 -1
  386. package/dist/preview-engine/renderers-ZHTX73PR.mjs +0 -1
  387. package/dist/preview-engine/renderers-ZJTRANIX.mjs +0 -1
  388. package/dist/renderer--IHe-yqK.mjs +0 -5
  389. package/dist/renderer-B16iwR0_.mjs +0 -5
  390. package/dist/renderer-B3EEYpx6.mjs +0 -5
  391. package/dist/renderer-B3Si5IB4.mjs +0 -5
  392. package/dist/renderer-BARst3ZD.mjs +0 -3
  393. package/dist/renderer-BH8vZKmX.mjs +0 -5
  394. package/dist/renderer-BHZie6Pa.mjs +0 -5
  395. package/dist/renderer-BHpJ1e15.mjs +0 -5
  396. package/dist/renderer-BPJ79b47.mjs +0 -5
  397. package/dist/renderer-BPbM_6WR.mjs +0 -5
  398. package/dist/renderer-Bn-WnRh9.mjs +0 -5
  399. package/dist/renderer-BqHvDAUe.mjs +0 -5
  400. package/dist/renderer-CAtXDNsh.mjs +0 -5
  401. package/dist/renderer-C_5nfVce.mjs +0 -5
  402. package/dist/renderer-Cie7KKeQ.mjs +0 -5
  403. package/dist/renderer-CuoxvPsX.mjs +0 -5
  404. package/dist/renderer-Cvd3oIJQ.mjs +0 -5
  405. package/dist/renderer-CxAgpBrJ.mjs +0 -5
  406. package/dist/renderer-D-cWBX0r.mjs +0 -5
  407. package/dist/renderer-D0q2VyJR.mjs +0 -5
  408. package/dist/renderer-D6NXn3Ky.mjs +0 -5
  409. package/dist/renderer-D9bp2jor.mjs +0 -5
  410. package/dist/renderer-DEzIOIB7.mjs +0 -5
  411. package/dist/renderer-DSSTVulw.mjs +0 -5
  412. package/dist/renderer-DUmTURPu.mjs +0 -5
  413. package/dist/renderer-DXCAgI9m.mjs +0 -5
  414. package/dist/renderer-DZ9j3fQj.mjs +0 -5
  415. package/dist/renderer-Dd1G_VKM.mjs +0 -5
  416. package/dist/renderer-Dee8079X.mjs +0 -5
  417. package/dist/renderer-DgWh5noB.mjs +0 -5
  418. package/dist/renderer-DuD9QRix.mjs +0 -5
  419. package/dist/renderer-KtG5p44R.mjs +0 -5
  420. package/dist/renderer-fdVdNIhL.mjs +0 -5
  421. package/dist/renderer-gBKWL0_E.mjs +0 -5
  422. package/dist/renderer-hmWhsR6C.mjs +0 -5
  423. package/dist/renderer-jkL9FU2W.mjs +0 -6
  424. package/dist/renderer-yAWv-daq.mjs +0 -5
@@ -1,6 +1,6 @@
1
1
  import { n as defineRenderer } from "./renderer-BSitV56h.mjs";
2
- import { Nn as signalRegistry } from "./dist-DRB6Vg5u.mjs";
3
- import { a as createFullscreenPipeline, c as drawTextureToTarget, f as signalTiming, l as fragmentBindGroupLayout, o as drawChildToTexture, p as texturesLayout, s as drawFullscreenPass, t as FULLSCREEN_QUAD_WGSL, u as perDevice } from "./gpu-DOQX1W2q.mjs";
2
+ import { Nn as signalRegistry } from "./dist-CspOG4V1.mjs";
3
+ import { a as createFullscreenPipeline, c as drawTextureToTarget, f as signalTiming, l as fragmentBindGroupLayout, o as drawChildToTexture, p as texturesLayout, s as drawFullscreenPass, t as FULLSCREEN_QUAD_WGSL, u as perDevice } from "./gpu-DtT5I4ME.mjs";
4
4
 
5
5
  //#region ../../nodes/node-colorkey/dist/renderers-eo_mW2uK.mjs
6
6
  const COLORKEY_SHADER = `
@@ -279,4 +279,4 @@ var renderers_default = defineRenderer({ WebGPURenderer: ColorKeyWebGPURenderer
279
279
 
280
280
  //#endregion
281
281
  export { renderers_default as t };
282
- //# sourceMappingURL=renderer-BPsi7Q7Z.mjs.map
282
+ //# sourceMappingURL=renderer-ut1GqW89.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderer-BPsi7Q7Z.mjs","names":[],"sources":["../../../nodes/node-colorkey/dist/renderers-eo_mW2uK.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, createFullscreenPipeline, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, perDevice, signalTiming, texturesLayout } from \"@framefields/node-sdk/gpu\";\nimport { signalRegistry } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst COLORKEY_SHADER = `\nstruct ColorKeyUniforms {\n\tsimilarity : f32,\n\tsmoothness : f32,\n\tspillSuppression : f32,\n\tcolorSpace : f32, // 0 for YUV, 1 for RGB\n\tspillSuppressionType : f32, // 0 for Desaturate, 1 for Neutralize, 2 for None\n\tkeyR : f32,\n\tkeyG : f32,\n\tkeyB : f32,\n\thasSimilaritySig : f32,\n\thasSmoothnessSig : f32,\n\thasSpillSig : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : ColorKeyUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n\n@group(2) @binding(0) var similaritySigTex : texture_2d<f32>;\n@group(2) @binding(1) var smoothnessSigTex : texture_2d<f32>;\n@group(2) @binding(2) var spillSigTex : texture_2d<f32>;\n@group(2) @binding(3) var signalSamp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn rgb2yuv(rgb: vec3<f32>) -> vec3<f32> {\n\tlet y = 0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b;\n\tlet u = -0.169 * rgb.r - 0.331 * rgb.g + 0.500 * rgb.b;\n\tlet v = 0.500 * rgb.r - 0.419 * rgb.g - 0.081 * rgb.b;\n\treturn vec3<f32>(y, u, v);\n}\n\nfn yuv2rgb(yuv: vec3<f32>) -> vec3<f32> {\n\tlet r = yuv.x + 1.402 * yuv.z;\n\tlet g = yuv.x - 0.344 * yuv.y - 0.714 * yuv.z;\n\tlet b = yuv.x + 1.772 * yuv.y;\n\treturn vec3<f32>(r, g, b);\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet src_color = textureSampleLevel(tex, samp, in.uv, 0.0);\n\tif (src_color.a < 1e-5) {\n\t\treturn src_color;\n\t}\n\n\t// Unpremultiply alpha for keying and grading\n\tlet unpremult_rgb = src_color.rgb / src_color.a;\n\n\t// Resolve dynamic signals if connected, otherwise use static uniform values\n\tvar similarity = u.similarity;\n\tif (u.hasSimilaritySig > 0.5) {\n\t\tsimilarity = textureSampleLevel(similaritySigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\n\tvar smoothness = u.smoothness;\n\tif (u.hasSmoothnessSig > 0.5) {\n\t\tsmoothness = textureSampleLevel(smoothnessSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\n\tvar spillSuppression = u.spillSuppression;\n\tif (u.hasSpillSig > 0.5) {\n\t\tspillSuppression = textureSampleLevel(spillSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\n\tlet keyColor = vec3<f32>(u.keyR, u.keyG, u.keyB);\n\n\t// 1. Calculate similarity distance\n\tvar dist = 0.0;\n\tif (u.colorSpace < 0.5) {\n\t\t// YUV (Chroma Distance)\n\t\tlet C_yuv = rgb2yuv(unpremult_rgb);\n\t\tlet K_yuv = rgb2yuv(keyColor);\n\t\tdist = distance(C_yuv.yz, K_yuv.yz);\n\t} else {\n\t\t// RGB (Exact Distance)\n\t\tdist = distance(unpremult_rgb, keyColor);\n\t}\n\n\t// 2. Calculate transparency mask\n\tvar mask = 0.0;\n\tif (smoothness < 0.0001) {\n\t\tmask = select(0.0, 1.0, dist >= similarity);\n\t} else {\n\t\tmask = smoothstep(similarity, similarity + smoothness, dist);\n\t}\n\n\t// 3. Apply spill suppression\n\tvar final_rgb = unpremult_rgb;\n\tif (u.spillSuppressionType < 2.5) { // 0 for Desaturate, 1 for Neutralize, 2 for None\n\t\tlet C_yuv = rgb2yuv(unpremult_rgb);\n\t\tlet K_yuv = rgb2yuv(keyColor);\n\t\tlet K_chroma = K_yuv.yz;\n\t\tlet K_len_sq = dot(K_chroma, K_chroma);\n\n\t\tif (K_len_sq > 1e-6) {\n\t\t\tlet C_chroma = C_yuv.yz;\n\t\t\tlet proj = dot(C_chroma, K_chroma) / K_len_sq;\n\t\t\tif (proj > 0.0) {\n\t\t\t\tlet C_para = proj * K_chroma;\n\t\t\t\tvar C_chroma_suppressed = C_chroma;\n\n\t\t\t\tif (u.spillSuppressionType < 0.5) {\n\t\t\t\t\t// Desaturate\n\t\t\t\t\tC_chroma_suppressed = C_chroma - spillSuppression * C_para;\n\t\t\t\t} else {\n\t\t\t\t\t// Neutralize (completely shift to neutral gray chroma)\n\t\t\t\t\tC_chroma_suppressed = C_chroma - C_para;\n\t\t\t\t}\n\n\t\t\t\tfinal_rgb = yuv2rgb(vec3<f32>(C_yuv.x, C_chroma_suppressed.x, C_chroma_suppressed.y));\n\t\t\t}\n\t\t}\n\t}\n\n\tlet final_alpha = src_color.a * mask;\n\treturn vec4<f32>(clamp(final_rgb, vec3<f32>(0.0), vec3<f32>(1.0)) * final_alpha, final_alpha);\n}\n`;\nconst colorKeyData = new Float32Array(12);\nconst getDeviceLayouts = perDevice((device) => ({\n\tuniformLayout: fragmentBindGroupLayout(device, [\"uniform\"]),\n\tsingleTextureLayout: fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]),\n\tsignalTextureLayout: texturesLayout(device, 3),\n\tpipelineCache: /* @__PURE__ */ new Map()\n}));\nfunction getColorKeyResources(device, format) {\n\tconst layouts = getDeviceLayouts(device);\n\tconst cacheKey = `colorkey_${format}`;\n\tlet pipeline = layouts.pipelineCache.get(cacheKey);\n\tif (!pipeline) {\n\t\tconst colorKeyModule = device.createShaderModule({\n\t\t\tlabel: `colorkey_${format}.wgsl`,\n\t\t\tcode: COLORKEY_SHADER\n\t\t});\n\t\tpipeline = createFullscreenPipeline(device, {\n\t\t\tlabel: `ColorKeyPipeline_${format}`,\n\t\t\tmodule: colorKeyModule,\n\t\t\tlayouts: [\n\t\t\t\tlayouts.uniformLayout,\n\t\t\t\tlayouts.singleTextureLayout,\n\t\t\t\tlayouts.signalTextureLayout\n\t\t\t],\n\t\t\tformat\n\t\t});\n\t\tlayouts.pipelineCache.set(cacheKey, pipeline);\n\t}\n\treturn {\n\t\tcolorKeyPipeline: pipeline,\n\t\tuniformLayout: layouts.uniformLayout,\n\t\tsingleTextureLayout: layouts.singleTextureLayout,\n\t\tsignalTextureLayout: layouts.signalTextureLayout\n\t};\n}\nfunction hexToRgb(hex) {\n\tlet h = hex.replace(\"#\", \"\");\n\tif (h.length === 3) h = h.split(\"\").map((c) => c + c).join(\"\");\n\treturn [\n\t\tparseInt(h.substring(0, 2), 16) / 255,\n\t\tparseInt(h.substring(2, 4), 16) / 255,\n\t\tparseInt(h.substring(4, 6), 16) / 255\n\t];\n}\nconst ColorKeyWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;\n\tconst frame = props.frame ?? 0;\n\tconst fps = props.fps || 30;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"ColorKey\" || !op) return;\n\tconst childMedia = props.virtualMedia.children?.[0];\n\tif (!childMedia) return;\n\tpass.end();\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst nodeId = op.inputs ? Object.keys(op.inputs)[0] : \"colorkey_node\";\n\tconst similarityInput = op.similarityHandleId ? op.inputs?.[op.similarityHandleId] : null;\n\tconst hasSimilaritySig = !!(similarityInput?.connectionValid && (similarityInput.outputItem?.type === \"Signal\" || similarityInput.outputItem?.type === \"Numeric\"));\n\tconst similaritySd = hasSimilaritySig && similarityInput?.outputItem?.data ? similarityInput.outputItem.data : null;\n\tlet similarity = .4;\n\tlet hasStaticSimilaritySig = false;\n\tif (!hasSimilaritySig) if (similarityInput?.connectionValid && similarityInput.outputItem?.type === \"Number\") similarity = Math.max(0, Math.min(1, Number(similarityInput.outputItem.data ?? .4)));\n\telse similarity = Math.max(0, Math.min(1, Number(op.similarity ?? .4)));\n\telse if (similaritySd) {\n\t\tsimilarity = Math.max(0, Math.min(1, Number(similaritySd.offset ?? 0)));\n\t\thasStaticSimilaritySig = true;\n\t}\n\tconst smoothnessInput = op.smoothnessHandleId ? op.inputs?.[op.smoothnessHandleId] : null;\n\tconst hasSmoothnessSig = !!(smoothnessInput?.connectionValid && (smoothnessInput.outputItem?.type === \"Signal\" || smoothnessInput.outputItem?.type === \"Numeric\"));\n\tconst smoothnessSd = hasSmoothnessSig && smoothnessInput?.outputItem?.data ? smoothnessInput.outputItem.data : null;\n\tlet smoothness = .1;\n\tlet hasStaticSmoothnessSig = false;\n\tif (!hasSmoothnessSig) if (smoothnessInput?.connectionValid && smoothnessInput.outputItem?.type === \"Number\") smoothness = Math.max(0, Math.min(1, Number(smoothnessInput.outputItem.data ?? .1)));\n\telse smoothness = Math.max(0, Math.min(1, Number(op.smoothness ?? .1)));\n\telse if (smoothnessSd) {\n\t\tsmoothness = Math.max(0, Math.min(1, Number(smoothnessSd.offset ?? 0)));\n\t\thasStaticSmoothnessSig = true;\n\t}\n\tconst spillInput = op.spillSuppressionHandleId ? op.inputs?.[op.spillSuppressionHandleId] : null;\n\tconst hasSpillSig = !!(spillInput?.connectionValid && (spillInput.outputItem?.type === \"Signal\" || spillInput.outputItem?.type === \"Numeric\"));\n\tconst spillSd = hasSpillSig && spillInput?.outputItem?.data ? spillInput.outputItem.data : null;\n\tlet spillSuppression = .2;\n\tlet hasStaticSpillSig = false;\n\tif (!hasSpillSig) if (spillInput?.connectionValid && spillInput.outputItem?.type === \"Number\") spillSuppression = Math.max(0, Math.min(1, Number(spillInput.outputItem.data ?? .2)));\n\telse spillSuppression = Math.max(0, Math.min(1, Number(op.spillSuppression ?? .2)));\n\telse if (spillSd) {\n\t\tspillSuppression = Math.max(0, Math.min(1, Number(spillSd.offset ?? 0)));\n\t\thasStaticSpillSig = true;\n\t}\n\tconst { texture: tmpTex } = await drawChildToTexture(args, childMedia);\n\tconst { colorKeyPipeline: pipeline, uniformLayout: uLayout, singleTextureLayout: tLayout, signalTextureLayout: sigLayout } = getColorKeyResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst { elapsedSeconds, durationSeconds } = signalTiming(props, frame, fps);\n\tlet similarityView;\n\tif (hasStaticSimilaritySig && similaritySd) similarityView = signalRegistry.getOrCreate2DTextureView(ctx.device, encoder, similaritySd.nodeId ?? `${nodeId}_similarity_sig`, elapsedSeconds, durationSeconds, similaritySd, width, height, props.renderId, frame, fps);\n\telse similarityView = signalRegistry.getDummy1x1TextureView(ctx.device);\n\tlet smoothnessView;\n\tif (hasStaticSmoothnessSig && smoothnessSd) smoothnessView = signalRegistry.getOrCreate2DTextureView(ctx.device, encoder, smoothnessSd.nodeId ?? `${nodeId}_smoothness_sig`, elapsedSeconds, durationSeconds, smoothnessSd, width, height, props.renderId, frame, fps);\n\telse smoothnessView = signalRegistry.getDummy1x1TextureView(ctx.device);\n\tlet spillView;\n\tif (hasStaticSpillSig && spillSd) spillView = signalRegistry.getOrCreate2DTextureView(ctx.device, encoder, spillSd.nodeId ?? `${nodeId}_spill_sig`, elapsedSeconds, durationSeconds, spillSd, width, height, props.renderId, frame, fps);\n\telse spillView = signalRegistry.getDummy1x1TextureView(ctx.device);\n\tconst [keyR, keyG, keyB] = hexToRgb(op.keyColor ?? \"#00ff00\");\n\tcolorKeyData[0] = similarity;\n\tcolorKeyData[1] = smoothness;\n\tcolorKeyData[2] = spillSuppression;\n\tcolorKeyData[3] = op.colorSpace === \"RGB\" ? 1 : 0;\n\tcolorKeyData[4] = op.spillSuppressionType === \"None\" ? 2 : op.spillSuppressionType === \"Neutralize\" ? 1 : 0;\n\tcolorKeyData[5] = keyR;\n\tcolorKeyData[6] = keyG;\n\tcolorKeyData[7] = keyB;\n\tcolorKeyData[8] = hasStaticSimilaritySig ? 1 : 0;\n\tcolorKeyData[9] = hasStaticSmoothnessSig ? 1 : 0;\n\tcolorKeyData[10] = hasStaticSpillSig ? 1 : 0;\n\tcolorKeyData[11] = 0;\n\tconst outTex = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpTex,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tconst singleBuffer = ctx.renderer.getTemporaryBuffer(colorKeyData);\n\tdrawFullscreenPass(encoder, outTex.createView(), pipeline, [\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: uLayout,\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: { buffer: singleBuffer }\n\t\t\t}]\n\t\t}),\n\t\tctx.renderer.bindGroupCache.getBindGroup(ctx.device, tLayout, tmpTex, sampler),\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: sigLayout,\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: similarityView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: smoothnessView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: spillView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 3,\n\t\t\t\t\tresource: sampler\n\t\t\t\t}\n\t\t\t]\n\t\t})\n\t]);\n\tdrawTextureToTarget(args, outTex, op.opacity ?? 1);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: ColorKeyWebGPURenderer });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-eo_mW2uK.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"renderer-ut1GqW89.mjs","names":[],"sources":["../../../nodes/node-colorkey/dist/renderers-eo_mW2uK.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, createFullscreenPipeline, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, perDevice, signalTiming, texturesLayout } from \"@framefields/node-sdk/gpu\";\nimport { signalRegistry } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst COLORKEY_SHADER = `\nstruct ColorKeyUniforms {\n\tsimilarity : f32,\n\tsmoothness : f32,\n\tspillSuppression : f32,\n\tcolorSpace : f32, // 0 for YUV, 1 for RGB\n\tspillSuppressionType : f32, // 0 for Desaturate, 1 for Neutralize, 2 for None\n\tkeyR : f32,\n\tkeyG : f32,\n\tkeyB : f32,\n\thasSimilaritySig : f32,\n\thasSmoothnessSig : f32,\n\thasSpillSig : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : ColorKeyUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n\n@group(2) @binding(0) var similaritySigTex : texture_2d<f32>;\n@group(2) @binding(1) var smoothnessSigTex : texture_2d<f32>;\n@group(2) @binding(2) var spillSigTex : texture_2d<f32>;\n@group(2) @binding(3) var signalSamp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn rgb2yuv(rgb: vec3<f32>) -> vec3<f32> {\n\tlet y = 0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b;\n\tlet u = -0.169 * rgb.r - 0.331 * rgb.g + 0.500 * rgb.b;\n\tlet v = 0.500 * rgb.r - 0.419 * rgb.g - 0.081 * rgb.b;\n\treturn vec3<f32>(y, u, v);\n}\n\nfn yuv2rgb(yuv: vec3<f32>) -> vec3<f32> {\n\tlet r = yuv.x + 1.402 * yuv.z;\n\tlet g = yuv.x - 0.344 * yuv.y - 0.714 * yuv.z;\n\tlet b = yuv.x + 1.772 * yuv.y;\n\treturn vec3<f32>(r, g, b);\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet src_color = textureSampleLevel(tex, samp, in.uv, 0.0);\n\tif (src_color.a < 1e-5) {\n\t\treturn src_color;\n\t}\n\n\t// Unpremultiply alpha for keying and grading\n\tlet unpremult_rgb = src_color.rgb / src_color.a;\n\n\t// Resolve dynamic signals if connected, otherwise use static uniform values\n\tvar similarity = u.similarity;\n\tif (u.hasSimilaritySig > 0.5) {\n\t\tsimilarity = textureSampleLevel(similaritySigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\n\tvar smoothness = u.smoothness;\n\tif (u.hasSmoothnessSig > 0.5) {\n\t\tsmoothness = textureSampleLevel(smoothnessSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\n\tvar spillSuppression = u.spillSuppression;\n\tif (u.hasSpillSig > 0.5) {\n\t\tspillSuppression = textureSampleLevel(spillSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\n\tlet keyColor = vec3<f32>(u.keyR, u.keyG, u.keyB);\n\n\t// 1. Calculate similarity distance\n\tvar dist = 0.0;\n\tif (u.colorSpace < 0.5) {\n\t\t// YUV (Chroma Distance)\n\t\tlet C_yuv = rgb2yuv(unpremult_rgb);\n\t\tlet K_yuv = rgb2yuv(keyColor);\n\t\tdist = distance(C_yuv.yz, K_yuv.yz);\n\t} else {\n\t\t// RGB (Exact Distance)\n\t\tdist = distance(unpremult_rgb, keyColor);\n\t}\n\n\t// 2. Calculate transparency mask\n\tvar mask = 0.0;\n\tif (smoothness < 0.0001) {\n\t\tmask = select(0.0, 1.0, dist >= similarity);\n\t} else {\n\t\tmask = smoothstep(similarity, similarity + smoothness, dist);\n\t}\n\n\t// 3. Apply spill suppression\n\tvar final_rgb = unpremult_rgb;\n\tif (u.spillSuppressionType < 2.5) { // 0 for Desaturate, 1 for Neutralize, 2 for None\n\t\tlet C_yuv = rgb2yuv(unpremult_rgb);\n\t\tlet K_yuv = rgb2yuv(keyColor);\n\t\tlet K_chroma = K_yuv.yz;\n\t\tlet K_len_sq = dot(K_chroma, K_chroma);\n\n\t\tif (K_len_sq > 1e-6) {\n\t\t\tlet C_chroma = C_yuv.yz;\n\t\t\tlet proj = dot(C_chroma, K_chroma) / K_len_sq;\n\t\t\tif (proj > 0.0) {\n\t\t\t\tlet C_para = proj * K_chroma;\n\t\t\t\tvar C_chroma_suppressed = C_chroma;\n\n\t\t\t\tif (u.spillSuppressionType < 0.5) {\n\t\t\t\t\t// Desaturate\n\t\t\t\t\tC_chroma_suppressed = C_chroma - spillSuppression * C_para;\n\t\t\t\t} else {\n\t\t\t\t\t// Neutralize (completely shift to neutral gray chroma)\n\t\t\t\t\tC_chroma_suppressed = C_chroma - C_para;\n\t\t\t\t}\n\n\t\t\t\tfinal_rgb = yuv2rgb(vec3<f32>(C_yuv.x, C_chroma_suppressed.x, C_chroma_suppressed.y));\n\t\t\t}\n\t\t}\n\t}\n\n\tlet final_alpha = src_color.a * mask;\n\treturn vec4<f32>(clamp(final_rgb, vec3<f32>(0.0), vec3<f32>(1.0)) * final_alpha, final_alpha);\n}\n`;\nconst colorKeyData = new Float32Array(12);\nconst getDeviceLayouts = perDevice((device) => ({\n\tuniformLayout: fragmentBindGroupLayout(device, [\"uniform\"]),\n\tsingleTextureLayout: fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]),\n\tsignalTextureLayout: texturesLayout(device, 3),\n\tpipelineCache: /* @__PURE__ */ new Map()\n}));\nfunction getColorKeyResources(device, format) {\n\tconst layouts = getDeviceLayouts(device);\n\tconst cacheKey = `colorkey_${format}`;\n\tlet pipeline = layouts.pipelineCache.get(cacheKey);\n\tif (!pipeline) {\n\t\tconst colorKeyModule = device.createShaderModule({\n\t\t\tlabel: `colorkey_${format}.wgsl`,\n\t\t\tcode: COLORKEY_SHADER\n\t\t});\n\t\tpipeline = createFullscreenPipeline(device, {\n\t\t\tlabel: `ColorKeyPipeline_${format}`,\n\t\t\tmodule: colorKeyModule,\n\t\t\tlayouts: [\n\t\t\t\tlayouts.uniformLayout,\n\t\t\t\tlayouts.singleTextureLayout,\n\t\t\t\tlayouts.signalTextureLayout\n\t\t\t],\n\t\t\tformat\n\t\t});\n\t\tlayouts.pipelineCache.set(cacheKey, pipeline);\n\t}\n\treturn {\n\t\tcolorKeyPipeline: pipeline,\n\t\tuniformLayout: layouts.uniformLayout,\n\t\tsingleTextureLayout: layouts.singleTextureLayout,\n\t\tsignalTextureLayout: layouts.signalTextureLayout\n\t};\n}\nfunction hexToRgb(hex) {\n\tlet h = hex.replace(\"#\", \"\");\n\tif (h.length === 3) h = h.split(\"\").map((c) => c + c).join(\"\");\n\treturn [\n\t\tparseInt(h.substring(0, 2), 16) / 255,\n\t\tparseInt(h.substring(2, 4), 16) / 255,\n\t\tparseInt(h.substring(4, 6), 16) / 255\n\t];\n}\nconst ColorKeyWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;\n\tconst frame = props.frame ?? 0;\n\tconst fps = props.fps || 30;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"ColorKey\" || !op) return;\n\tconst childMedia = props.virtualMedia.children?.[0];\n\tif (!childMedia) return;\n\tpass.end();\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst nodeId = op.inputs ? Object.keys(op.inputs)[0] : \"colorkey_node\";\n\tconst similarityInput = op.similarityHandleId ? op.inputs?.[op.similarityHandleId] : null;\n\tconst hasSimilaritySig = !!(similarityInput?.connectionValid && (similarityInput.outputItem?.type === \"Signal\" || similarityInput.outputItem?.type === \"Numeric\"));\n\tconst similaritySd = hasSimilaritySig && similarityInput?.outputItem?.data ? similarityInput.outputItem.data : null;\n\tlet similarity = .4;\n\tlet hasStaticSimilaritySig = false;\n\tif (!hasSimilaritySig) if (similarityInput?.connectionValid && similarityInput.outputItem?.type === \"Number\") similarity = Math.max(0, Math.min(1, Number(similarityInput.outputItem.data ?? .4)));\n\telse similarity = Math.max(0, Math.min(1, Number(op.similarity ?? .4)));\n\telse if (similaritySd) {\n\t\tsimilarity = Math.max(0, Math.min(1, Number(similaritySd.offset ?? 0)));\n\t\thasStaticSimilaritySig = true;\n\t}\n\tconst smoothnessInput = op.smoothnessHandleId ? op.inputs?.[op.smoothnessHandleId] : null;\n\tconst hasSmoothnessSig = !!(smoothnessInput?.connectionValid && (smoothnessInput.outputItem?.type === \"Signal\" || smoothnessInput.outputItem?.type === \"Numeric\"));\n\tconst smoothnessSd = hasSmoothnessSig && smoothnessInput?.outputItem?.data ? smoothnessInput.outputItem.data : null;\n\tlet smoothness = .1;\n\tlet hasStaticSmoothnessSig = false;\n\tif (!hasSmoothnessSig) if (smoothnessInput?.connectionValid && smoothnessInput.outputItem?.type === \"Number\") smoothness = Math.max(0, Math.min(1, Number(smoothnessInput.outputItem.data ?? .1)));\n\telse smoothness = Math.max(0, Math.min(1, Number(op.smoothness ?? .1)));\n\telse if (smoothnessSd) {\n\t\tsmoothness = Math.max(0, Math.min(1, Number(smoothnessSd.offset ?? 0)));\n\t\thasStaticSmoothnessSig = true;\n\t}\n\tconst spillInput = op.spillSuppressionHandleId ? op.inputs?.[op.spillSuppressionHandleId] : null;\n\tconst hasSpillSig = !!(spillInput?.connectionValid && (spillInput.outputItem?.type === \"Signal\" || spillInput.outputItem?.type === \"Numeric\"));\n\tconst spillSd = hasSpillSig && spillInput?.outputItem?.data ? spillInput.outputItem.data : null;\n\tlet spillSuppression = .2;\n\tlet hasStaticSpillSig = false;\n\tif (!hasSpillSig) if (spillInput?.connectionValid && spillInput.outputItem?.type === \"Number\") spillSuppression = Math.max(0, Math.min(1, Number(spillInput.outputItem.data ?? .2)));\n\telse spillSuppression = Math.max(0, Math.min(1, Number(op.spillSuppression ?? .2)));\n\telse if (spillSd) {\n\t\tspillSuppression = Math.max(0, Math.min(1, Number(spillSd.offset ?? 0)));\n\t\thasStaticSpillSig = true;\n\t}\n\tconst { texture: tmpTex } = await drawChildToTexture(args, childMedia);\n\tconst { colorKeyPipeline: pipeline, uniformLayout: uLayout, singleTextureLayout: tLayout, signalTextureLayout: sigLayout } = getColorKeyResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst { elapsedSeconds, durationSeconds } = signalTiming(props, frame, fps);\n\tlet similarityView;\n\tif (hasStaticSimilaritySig && similaritySd) similarityView = signalRegistry.getOrCreate2DTextureView(ctx.device, encoder, similaritySd.nodeId ?? `${nodeId}_similarity_sig`, elapsedSeconds, durationSeconds, similaritySd, width, height, props.renderId, frame, fps);\n\telse similarityView = signalRegistry.getDummy1x1TextureView(ctx.device);\n\tlet smoothnessView;\n\tif (hasStaticSmoothnessSig && smoothnessSd) smoothnessView = signalRegistry.getOrCreate2DTextureView(ctx.device, encoder, smoothnessSd.nodeId ?? `${nodeId}_smoothness_sig`, elapsedSeconds, durationSeconds, smoothnessSd, width, height, props.renderId, frame, fps);\n\telse smoothnessView = signalRegistry.getDummy1x1TextureView(ctx.device);\n\tlet spillView;\n\tif (hasStaticSpillSig && spillSd) spillView = signalRegistry.getOrCreate2DTextureView(ctx.device, encoder, spillSd.nodeId ?? `${nodeId}_spill_sig`, elapsedSeconds, durationSeconds, spillSd, width, height, props.renderId, frame, fps);\n\telse spillView = signalRegistry.getDummy1x1TextureView(ctx.device);\n\tconst [keyR, keyG, keyB] = hexToRgb(op.keyColor ?? \"#00ff00\");\n\tcolorKeyData[0] = similarity;\n\tcolorKeyData[1] = smoothness;\n\tcolorKeyData[2] = spillSuppression;\n\tcolorKeyData[3] = op.colorSpace === \"RGB\" ? 1 : 0;\n\tcolorKeyData[4] = op.spillSuppressionType === \"None\" ? 2 : op.spillSuppressionType === \"Neutralize\" ? 1 : 0;\n\tcolorKeyData[5] = keyR;\n\tcolorKeyData[6] = keyG;\n\tcolorKeyData[7] = keyB;\n\tcolorKeyData[8] = hasStaticSimilaritySig ? 1 : 0;\n\tcolorKeyData[9] = hasStaticSmoothnessSig ? 1 : 0;\n\tcolorKeyData[10] = hasStaticSpillSig ? 1 : 0;\n\tcolorKeyData[11] = 0;\n\tconst outTex = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpTex,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tconst singleBuffer = ctx.renderer.getTemporaryBuffer(colorKeyData);\n\tdrawFullscreenPass(encoder, outTex.createView(), pipeline, [\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: uLayout,\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: { buffer: singleBuffer }\n\t\t\t}]\n\t\t}),\n\t\tctx.renderer.bindGroupCache.getBindGroup(ctx.device, tLayout, tmpTex, sampler),\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: sigLayout,\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: similarityView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: smoothnessView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: spillView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 3,\n\t\t\t\t\tresource: sampler\n\t\t\t\t}\n\t\t\t]\n\t\t})\n\t]);\n\tdrawTextureToTarget(args, outTex, op.opacity ?? 1);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: ColorKeyWebGPURenderer });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-eo_mW2uK.mjs.map"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { l as unwrapFrameParam, n as defineRenderer } from "./renderer-BSitV56h.mjs";
2
- import { a as createFullscreenPipeline, c as drawTextureToTarget, d as signalTextureView, f as signalTiming, l as fragmentBindGroupLayout, o as drawChildToTexture, p as texturesLayout, s as drawFullscreenPass, t as FULLSCREEN_QUAD_WGSL, u as perDevice } from "./gpu-DOQX1W2q.mjs";
2
+ import { a as createFullscreenPipeline, c as drawTextureToTarget, d as signalTextureView, f as signalTiming, l as fragmentBindGroupLayout, o as drawChildToTexture, p as texturesLayout, s as drawFullscreenPass, t as FULLSCREEN_QUAD_WGSL, u as perDevice } from "./gpu-DtT5I4ME.mjs";
3
3
 
4
4
  //#region ../../nodes/node-tile-offset/dist/renderers-DQJJPfSd.mjs
5
5
  const TILE_OFFSET_SHADER = `
@@ -206,4 +206,4 @@ var renderers_default = defineRenderer({ WebGPURenderer: TileOffsetWebGPURendere
206
206
 
207
207
  //#endregion
208
208
  export { renderers_default as t };
209
- //# sourceMappingURL=renderer-DH0wkQkR.mjs.map
209
+ //# sourceMappingURL=renderer-yyUpCeWb.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderer-DH0wkQkR.mjs","names":[],"sources":["../../../nodes/node-tile-offset/dist/renderers-DQJJPfSd.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { unwrapFrameParam } from \"@framefields/node-sdk\";\nimport { FULLSCREEN_QUAD_WGSL, createFullscreenPipeline, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, perDevice, signalTextureView, signalTiming, texturesLayout } from \"@framefields/node-sdk/gpu\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst TILE_OFFSET_SHADER = `\nstruct TileOffsetUniforms {\n offsetX : f32,\n offsetY : f32,\n hasOffsetXSig : f32,\n hasOffsetYSig : f32,\n\n layerWidth : f32,\n layerHeight : f32,\n edgeMode : f32,\n pad : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : TileOffsetUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n\n@group(2) @binding(0) var offsetXSigTex : texture_2d<f32>;\n@group(2) @binding(1) var offsetYSigTex : texture_2d<f32>;\n@group(2) @binding(2) var signalSamp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n var offX = u.offsetX;\n if (u.hasOffsetXSig > 0.5) {\n let sigX = textureSampleLevel(offsetXSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n offX = offX + sigX;\n }\n\n var offY = u.offsetY;\n if (u.hasOffsetYSig > 0.5) {\n let sigY = textureSampleLevel(offsetYSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n offY = offY + sigY;\n }\n\n let normOffset = vec2<f32>(\n offX / max(1.0, u.layerWidth),\n offY / max(1.0, u.layerHeight)\n );\n var uv = in.uv - normOffset;\n\n // Edge Modes:\n // 0.0 = wrap (seamless modulo)\n // 1.0 = clamp (edge smear)\n // 2.0 = transparent (clear bounds)\n // 3.0 = mirror (ping-pong reflection)\n if (u.edgeMode < 0.5) {\n uv = fract(uv);\n } else if (u.edgeMode < 1.5) {\n uv = clamp(uv, vec2<f32>(0.0), vec2<f32>(1.0));\n } else if (u.edgeMode < 2.5) {\n if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) {\n return vec4<f32>(0.0);\n }\n } else {\n uv = 1.0 - abs(fract(uv * 0.5) * 2.0 - 1.0);\n }\n\n let color = textureSampleLevel(tex, samp, uv, 0.0);\n return color;\n}\n`;\nconst uniformData = new Float32Array(8);\nconst getDeviceLayouts = perDevice((device) => ({\n\tuniformLayout: fragmentBindGroupLayout(device, [\"uniform\"]),\n\tsingleTextureLayout: fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]),\n\tsignalTextureLayout: texturesLayout(device, 2),\n\tpipelineCache: /* @__PURE__ */ new Map()\n}));\nfunction getTileOffsetResources(device, format) {\n\tconst layouts = getDeviceLayouts(device);\n\tconst cacheKey = `tile_offset_${format}`;\n\tlet pipeline = layouts.pipelineCache.get(cacheKey);\n\tif (!pipeline) {\n\t\tconst module = device.createShaderModule({\n\t\t\tlabel: `tile_offset_${format}.wgsl`,\n\t\t\tcode: TILE_OFFSET_SHADER\n\t\t});\n\t\tpipeline = createFullscreenPipeline(device, {\n\t\t\tlabel: `TileOffsetPipeline_${format}`,\n\t\t\tmodule,\n\t\t\tlayouts: [\n\t\t\t\tlayouts.uniformLayout,\n\t\t\t\tlayouts.singleTextureLayout,\n\t\t\t\tlayouts.signalTextureLayout\n\t\t\t],\n\t\t\tformat\n\t\t});\n\t\tlayouts.pipelineCache.set(cacheKey, pipeline);\n\t}\n\treturn {\n\t\tpipeline,\n\t\tuniformLayout: layouts.uniformLayout,\n\t\tsingleTextureLayout: layouts.singleTextureLayout,\n\t\tsignalTextureLayout: layouts.signalTextureLayout\n\t};\n}\nconst TileOffsetWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;\n\tconst frame = props.frame ?? 0;\n\tconst compositionFrame = props.compositionFrame ?? frame;\n\tconst fps = props.fps || 30;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"TileOffset\" || !op) return;\n\tconst childMedia = props.virtualMedia?.children?.[0];\n\tif (!childMedia) return;\n\tpass.end();\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst nodeId = op.inputs ? Object.keys(op.inputs)[0] : \"tile_offset_node\";\n\tconst resolveBindable = (configKey, defaultValue) => {\n\t\tconst handleId = op[`${configKey}HandleId`];\n\t\tconst input = handleId ? op.inputs?.[handleId] : null;\n\t\tconst hasSignal = !!(input?.connectionValid && (input.outputItem?.type === \"Signal\" || input.outputItem?.type === \"Numeric\"));\n\t\tconst sd = hasSignal && input?.outputItem?.data ? input.outputItem.data : null;\n\t\tlet val = defaultValue;\n\t\tlet hasStaticSig = false;\n\t\tif (!hasSignal) if (input?.connectionValid && input.outputItem?.type === \"Number\") val = Number(input.outputItem.data ?? defaultValue);\n\t\telse {\n\t\t\tconst rawVal = unwrapFrameParam(op[configKey], compositionFrame, fps).value;\n\t\t\tconst numVal = Number(rawVal ?? defaultValue);\n\t\t\tval = isNaN(numVal) ? defaultValue : numVal;\n\t\t}\n\t\telse if (sd) {\n\t\t\tval = Number(sd.offset ?? 0);\n\t\t\thasStaticSig = true;\n\t\t}\n\t\treturn {\n\t\t\tval,\n\t\t\thasStaticSig,\n\t\t\tsd\n\t\t};\n\t};\n\tconst offsetXRes = resolveBindable(\"offsetX\", 0);\n\tconst offsetYRes = resolveBindable(\"offsetY\", 0);\n\tlet edgeModeIndex = 0;\n\tconst edgeMode = op.edgeMode ?? (op.wrap !== false ? \"wrap\" : \"transparent\");\n\tif (edgeMode === \"clamp\") edgeModeIndex = 1;\n\telse if (edgeMode === \"transparent\" || op.wrap === false) edgeModeIndex = 2;\n\telse if (edgeMode === \"mirror\") edgeModeIndex = 3;\n\tconst { texture: tmpTex } = await drawChildToTexture(args, childMedia);\n\targs.pass.end();\n\tconst { pipeline, uniformLayout: uLayout, singleTextureLayout: tLayout, signalTextureLayout: sigLayout } = getTileOffsetResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst { elapsedSeconds, durationSeconds } = signalTiming(props, frame, fps);\n\tconst signalContext = {\n\t\targs,\n\t\twidth,\n\t\theight,\n\t\tframe,\n\t\tfps,\n\t\telapsedSeconds,\n\t\tdurationSeconds\n\t};\n\tconst getSignalView = (res, suffix) => signalTextureView(signalContext, res, `${nodeId}_${suffix}`);\n\tconst offsetXView = getSignalView(offsetXRes, \"offsetX_sig\");\n\tconst offsetYView = getSignalView(offsetYRes, \"offsetY_sig\");\n\tuniformData[0] = offsetXRes.val;\n\tuniformData[1] = offsetYRes.val;\n\tuniformData[2] = offsetXRes.hasStaticSig ? 1 : 0;\n\tuniformData[3] = offsetYRes.hasStaticSig ? 1 : 0;\n\tuniformData[4] = width;\n\tuniformData[5] = height;\n\tuniformData[6] = edgeModeIndex;\n\tuniformData[7] = 0;\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(uniformData);\n\tconst outTex = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpTex,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tdrawFullscreenPass(encoder, outTex.createView(), pipeline, [\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: uLayout,\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: { buffer: uniformBuffer }\n\t\t\t}]\n\t\t}),\n\t\tctx.renderer.bindGroupCache.getBindGroup(ctx.device, tLayout, tmpTex, sampler),\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: sigLayout,\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: offsetXView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: offsetYView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: sampler\n\t\t\t\t}\n\t\t\t]\n\t\t})\n\t]);\n\tdrawTextureToTarget(args, outTex, op.opacity ?? 1);\n};\nconst WebGPURenderer = TileOffsetWebGPURenderer;\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-DQJJPfSd.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"renderer-yyUpCeWb.mjs","names":[],"sources":["../../../nodes/node-tile-offset/dist/renderers-DQJJPfSd.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { unwrapFrameParam } from \"@framefields/node-sdk\";\nimport { FULLSCREEN_QUAD_WGSL, createFullscreenPipeline, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, perDevice, signalTextureView, signalTiming, texturesLayout } from \"@framefields/node-sdk/gpu\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst TILE_OFFSET_SHADER = `\nstruct TileOffsetUniforms {\n offsetX : f32,\n offsetY : f32,\n hasOffsetXSig : f32,\n hasOffsetYSig : f32,\n\n layerWidth : f32,\n layerHeight : f32,\n edgeMode : f32,\n pad : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : TileOffsetUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n\n@group(2) @binding(0) var offsetXSigTex : texture_2d<f32>;\n@group(2) @binding(1) var offsetYSigTex : texture_2d<f32>;\n@group(2) @binding(2) var signalSamp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n var offX = u.offsetX;\n if (u.hasOffsetXSig > 0.5) {\n let sigX = textureSampleLevel(offsetXSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n offX = offX + sigX;\n }\n\n var offY = u.offsetY;\n if (u.hasOffsetYSig > 0.5) {\n let sigY = textureSampleLevel(offsetYSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n offY = offY + sigY;\n }\n\n let normOffset = vec2<f32>(\n offX / max(1.0, u.layerWidth),\n offY / max(1.0, u.layerHeight)\n );\n var uv = in.uv - normOffset;\n\n // Edge Modes:\n // 0.0 = wrap (seamless modulo)\n // 1.0 = clamp (edge smear)\n // 2.0 = transparent (clear bounds)\n // 3.0 = mirror (ping-pong reflection)\n if (u.edgeMode < 0.5) {\n uv = fract(uv);\n } else if (u.edgeMode < 1.5) {\n uv = clamp(uv, vec2<f32>(0.0), vec2<f32>(1.0));\n } else if (u.edgeMode < 2.5) {\n if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) {\n return vec4<f32>(0.0);\n }\n } else {\n uv = 1.0 - abs(fract(uv * 0.5) * 2.0 - 1.0);\n }\n\n let color = textureSampleLevel(tex, samp, uv, 0.0);\n return color;\n}\n`;\nconst uniformData = new Float32Array(8);\nconst getDeviceLayouts = perDevice((device) => ({\n\tuniformLayout: fragmentBindGroupLayout(device, [\"uniform\"]),\n\tsingleTextureLayout: fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]),\n\tsignalTextureLayout: texturesLayout(device, 2),\n\tpipelineCache: /* @__PURE__ */ new Map()\n}));\nfunction getTileOffsetResources(device, format) {\n\tconst layouts = getDeviceLayouts(device);\n\tconst cacheKey = `tile_offset_${format}`;\n\tlet pipeline = layouts.pipelineCache.get(cacheKey);\n\tif (!pipeline) {\n\t\tconst module = device.createShaderModule({\n\t\t\tlabel: `tile_offset_${format}.wgsl`,\n\t\t\tcode: TILE_OFFSET_SHADER\n\t\t});\n\t\tpipeline = createFullscreenPipeline(device, {\n\t\t\tlabel: `TileOffsetPipeline_${format}`,\n\t\t\tmodule,\n\t\t\tlayouts: [\n\t\t\t\tlayouts.uniformLayout,\n\t\t\t\tlayouts.singleTextureLayout,\n\t\t\t\tlayouts.signalTextureLayout\n\t\t\t],\n\t\t\tformat\n\t\t});\n\t\tlayouts.pipelineCache.set(cacheKey, pipeline);\n\t}\n\treturn {\n\t\tpipeline,\n\t\tuniformLayout: layouts.uniformLayout,\n\t\tsingleTextureLayout: layouts.singleTextureLayout,\n\t\tsignalTextureLayout: layouts.signalTextureLayout\n\t};\n}\nconst TileOffsetWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;\n\tconst frame = props.frame ?? 0;\n\tconst compositionFrame = props.compositionFrame ?? frame;\n\tconst fps = props.fps || 30;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"TileOffset\" || !op) return;\n\tconst childMedia = props.virtualMedia?.children?.[0];\n\tif (!childMedia) return;\n\tpass.end();\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst nodeId = op.inputs ? Object.keys(op.inputs)[0] : \"tile_offset_node\";\n\tconst resolveBindable = (configKey, defaultValue) => {\n\t\tconst handleId = op[`${configKey}HandleId`];\n\t\tconst input = handleId ? op.inputs?.[handleId] : null;\n\t\tconst hasSignal = !!(input?.connectionValid && (input.outputItem?.type === \"Signal\" || input.outputItem?.type === \"Numeric\"));\n\t\tconst sd = hasSignal && input?.outputItem?.data ? input.outputItem.data : null;\n\t\tlet val = defaultValue;\n\t\tlet hasStaticSig = false;\n\t\tif (!hasSignal) if (input?.connectionValid && input.outputItem?.type === \"Number\") val = Number(input.outputItem.data ?? defaultValue);\n\t\telse {\n\t\t\tconst rawVal = unwrapFrameParam(op[configKey], compositionFrame, fps).value;\n\t\t\tconst numVal = Number(rawVal ?? defaultValue);\n\t\t\tval = isNaN(numVal) ? defaultValue : numVal;\n\t\t}\n\t\telse if (sd) {\n\t\t\tval = Number(sd.offset ?? 0);\n\t\t\thasStaticSig = true;\n\t\t}\n\t\treturn {\n\t\t\tval,\n\t\t\thasStaticSig,\n\t\t\tsd\n\t\t};\n\t};\n\tconst offsetXRes = resolveBindable(\"offsetX\", 0);\n\tconst offsetYRes = resolveBindable(\"offsetY\", 0);\n\tlet edgeModeIndex = 0;\n\tconst edgeMode = op.edgeMode ?? (op.wrap !== false ? \"wrap\" : \"transparent\");\n\tif (edgeMode === \"clamp\") edgeModeIndex = 1;\n\telse if (edgeMode === \"transparent\" || op.wrap === false) edgeModeIndex = 2;\n\telse if (edgeMode === \"mirror\") edgeModeIndex = 3;\n\tconst { texture: tmpTex } = await drawChildToTexture(args, childMedia);\n\targs.pass.end();\n\tconst { pipeline, uniformLayout: uLayout, singleTextureLayout: tLayout, signalTextureLayout: sigLayout } = getTileOffsetResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst { elapsedSeconds, durationSeconds } = signalTiming(props, frame, fps);\n\tconst signalContext = {\n\t\targs,\n\t\twidth,\n\t\theight,\n\t\tframe,\n\t\tfps,\n\t\telapsedSeconds,\n\t\tdurationSeconds\n\t};\n\tconst getSignalView = (res, suffix) => signalTextureView(signalContext, res, `${nodeId}_${suffix}`);\n\tconst offsetXView = getSignalView(offsetXRes, \"offsetX_sig\");\n\tconst offsetYView = getSignalView(offsetYRes, \"offsetY_sig\");\n\tuniformData[0] = offsetXRes.val;\n\tuniformData[1] = offsetYRes.val;\n\tuniformData[2] = offsetXRes.hasStaticSig ? 1 : 0;\n\tuniformData[3] = offsetYRes.hasStaticSig ? 1 : 0;\n\tuniformData[4] = width;\n\tuniformData[5] = height;\n\tuniformData[6] = edgeModeIndex;\n\tuniformData[7] = 0;\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(uniformData);\n\tconst outTex = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpTex,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tdrawFullscreenPass(encoder, outTex.createView(), pipeline, [\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: uLayout,\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: { buffer: uniformBuffer }\n\t\t\t}]\n\t\t}),\n\t\tctx.renderer.bindGroupCache.getBindGroup(ctx.device, tLayout, tmpTex, sampler),\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: sigLayout,\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: offsetXView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: offsetYView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: sampler\n\t\t\t\t}\n\t\t\t]\n\t\t})\n\t]);\n\tdrawTextureToTarget(args, outTex, op.opacity ?? 1);\n};\nconst WebGPURenderer = TileOffsetWebGPURenderer;\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-DQJJPfSd.mjs.map"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { Jt as resolveNumber, Xt as resolveString } from "./dist-fjKpBYkc.mjs";
1
+ import { Yt as resolveNumber, Zt as resolveString } from "./dist-ClyC_d66.mjs";
2
2
  import { n as defineRenderer } from "./renderer-BSitV56h.mjs";
3
- import { Nn as signalRegistry, St as AudioSignalComputePipeline, et as shaderStore } from "./dist-DRB6Vg5u.mjs";
3
+ import { Nn as signalRegistry, St as AudioSignalComputePipeline, et as shaderStore } from "./dist-CspOG4V1.mjs";
4
4
 
5
5
  //#region ../../nodes/node-audio-signal-extractor/dist/renderers-CP8CFWDs.mjs
6
6
  const audioSignalExtractorAudioProcessor = async (channels, sampleRate, virtualMedia, ctx) => {
@@ -49,4 +49,4 @@ var renderers_default = defineRenderer({ audioProcessor: audioSignalExtractorAud
49
49
 
50
50
  //#endregion
51
51
  export { renderers_default as t };
52
- //# sourceMappingURL=renderers-CP8CFWDs-DoVn7dbW.mjs.map
52
+ //# sourceMappingURL=renderers-CP8CFWDs-DzGXDs5p.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderers-CP8CFWDs-DoVn7dbW.mjs","names":[],"sources":["../../../nodes/node-audio-signal-extractor/dist/renderers-CP8CFWDs.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { resolveNumber, resolveString } from \"@framefields/node-sdk\";\nimport { AudioSignalComputePipeline, shaderStore, signalRegistry } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/audio-processor.ts\nconst audioSignalExtractorAudioProcessor = async (channels, sampleRate, virtualMedia, ctx) => {\n\tif (!ctx?.device) return;\n\tif (!channels || channels.length === 0 || channels[0].length === 0) return;\n\tconst op = virtualMedia.operation || {};\n\tconst nodeId = op.nodeId || op.id || \"audio-signal-extractor\";\n\tconst fps = ctx.fps ?? 24;\n\tconst mode = resolveString(op.extractionMode, \"\");\n\tconst curveStr = resolveString(op.curve, \"\");\n\tconst config = {\n\t\textractionMode: mode || void 0,\n\t\tattackMs: resolveNumber(op.attackMs, 10),\n\t\treleaseMs: resolveNumber(op.releaseMs, 120),\n\t\tsensitivity: resolveNumber(op.sensitivity, 1),\n\t\tnoiseFloorDb: resolveNumber(op.noiseFloorDb, -45),\n\t\tdynamicRangeDb: resolveNumber(op.dynamicRangeDb, 36),\n\t\tsmoothing: resolveNumber(op.smoothing, .15),\n\t\tcurve: curveStr || void 0,\n\t\tbeatThreshold: resolveNumber(op.beatThreshold, .55),\n\t\tbeatDecayMs: resolveNumber(op.beatDecayMs, 80)\n\t};\n\tconst signals = await AudioSignalComputePipeline.extractFeatures(ctx.device, channels, sampleRate, fps, config, 512);\n\tsignalRegistry.registerBuffer(ctx.device, nodeId, signals.primaryBuffer, ctx.renderId);\n\tsignalRegistry.registerBuffer(ctx.device, `${nodeId}_beat`, signals.beatBuffer, ctx.renderId);\n\tsignalRegistry.registerBuffer(ctx.device, `${nodeId}_bass`, signals.bassBuffer, ctx.renderId);\n\tsignalRegistry.registerBuffer(ctx.device, `${nodeId}_energy`, signals.energyBuffer, ctx.renderId);\n\tsignalRegistry.registerTexture(ctx.device, nodeId, signals.texture, signals.textureView, ctx.renderId);\n\tsignalRegistry.registerTexture(ctx.device, `${nodeId}_beat`, signals.texture, signals.textureView, ctx.renderId);\n\tsignalRegistry.registerTexture(ctx.device, `${nodeId}_bass`, signals.texture, signals.textureView, ctx.renderId);\n\tsignalRegistry.registerTexture(ctx.device, `${nodeId}_energy`, signals.texture, signals.textureView, ctx.renderId);\n\tconst fnName = `signal_${nodeId.replace(/[^a-zA-Z0-9]/g, \"_\")}`;\n\tconst wgsl = `\nfn ${fnName}(t: f32, x: f32, y: f32, z: f32, i: u32, n: u32, frame: u32, color: vec4f, t_elapsed: f32, duration: f32) -> f32 {\n return 0.0f;\n}\n`;\n\tshaderStore.register(nodeId, {\n\t\twgsl,\n\t\tname: fnName,\n\t\toutputType: \"f32\",\n\t\tfnParams: []\n\t}, ctx.renderId);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ audioProcessor: audioSignalExtractorAudioProcessor });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-CP8CFWDs.mjs.map"],"mappings":";;;;;AAKA,MAAM,qCAAqC,OAAO,UAAU,YAAY,cAAc,QAAQ;AAC7F,KAAI,CAAC,KAAK,OAAQ;AAClB,KAAI,CAAC,YAAY,SAAS,WAAW,KAAK,SAAS,GAAG,WAAW,EAAG;CACpE,MAAM,KAAK,aAAa,aAAa,EAAE;CACvC,MAAM,SAAS,GAAG,UAAU,GAAG,MAAM;CACrC,MAAM,MAAM,IAAI,OAAO;CACvB,MAAM,OAAO,cAAc,GAAG,gBAAgB,GAAG;CACjD,MAAM,WAAW,cAAc,GAAG,OAAO,GAAG;CAC5C,MAAM,SAAS;EACd,gBAAgB,QAAQ,KAAK;EAC7B,UAAU,cAAc,GAAG,UAAU,GAAG;EACxC,WAAW,cAAc,GAAG,WAAW,IAAI;EAC3C,aAAa,cAAc,GAAG,aAAa,EAAE;EAC7C,cAAc,cAAc,GAAG,cAAc,IAAI;EACjD,gBAAgB,cAAc,GAAG,gBAAgB,GAAG;EACpD,WAAW,cAAc,GAAG,WAAW,IAAI;EAC3C,OAAO,YAAY,KAAK;EACxB,eAAe,cAAc,GAAG,eAAe,IAAI;EACnD,aAAa,cAAc,GAAG,aAAa,GAAG;EAC9C;CACD,MAAM,UAAU,MAAM,2BAA2B,gBAAgB,IAAI,QAAQ,UAAU,YAAY,KAAK,QAAQ,IAAI;AACpH,gBAAe,eAAe,IAAI,QAAQ,QAAQ,QAAQ,eAAe,IAAI,SAAS;AACtF,gBAAe,eAAe,IAAI,QAAQ,GAAG,OAAO,QAAQ,QAAQ,YAAY,IAAI,SAAS;AAC7F,gBAAe,eAAe,IAAI,QAAQ,GAAG,OAAO,QAAQ,QAAQ,YAAY,IAAI,SAAS;AAC7F,gBAAe,eAAe,IAAI,QAAQ,GAAG,OAAO,UAAU,QAAQ,cAAc,IAAI,SAAS;AACjG,gBAAe,gBAAgB,IAAI,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,aAAa,IAAI,SAAS;AACtG,gBAAe,gBAAgB,IAAI,QAAQ,GAAG,OAAO,QAAQ,QAAQ,SAAS,QAAQ,aAAa,IAAI,SAAS;AAChH,gBAAe,gBAAgB,IAAI,QAAQ,GAAG,OAAO,QAAQ,QAAQ,SAAS,QAAQ,aAAa,IAAI,SAAS;AAChH,gBAAe,gBAAgB,IAAI,QAAQ,GAAG,OAAO,UAAU,QAAQ,SAAS,QAAQ,aAAa,IAAI,SAAS;CAClH,MAAM,SAAS,UAAU,OAAO,QAAQ,iBAAiB,IAAI;CAC7D,MAAM,OAAO;KACT,OAAO;;;;AAIX,aAAY,SAAS,QAAQ;EAC5B;EACA,MAAM;EACN,YAAY;EACZ,UAAU,EAAE;EACZ,EAAE,IAAI,SAAS;;AAKjB,IAAI,oBAAoB,eAAe,EAAE,gBAAgB,oCAAoC,CAAC"}
1
+ {"version":3,"file":"renderers-CP8CFWDs-DzGXDs5p.mjs","names":[],"sources":["../../../nodes/node-audio-signal-extractor/dist/renderers-CP8CFWDs.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { resolveNumber, resolveString } from \"@framefields/node-sdk\";\nimport { AudioSignalComputePipeline, shaderStore, signalRegistry } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/audio-processor.ts\nconst audioSignalExtractorAudioProcessor = async (channels, sampleRate, virtualMedia, ctx) => {\n\tif (!ctx?.device) return;\n\tif (!channels || channels.length === 0 || channels[0].length === 0) return;\n\tconst op = virtualMedia.operation || {};\n\tconst nodeId = op.nodeId || op.id || \"audio-signal-extractor\";\n\tconst fps = ctx.fps ?? 24;\n\tconst mode = resolveString(op.extractionMode, \"\");\n\tconst curveStr = resolveString(op.curve, \"\");\n\tconst config = {\n\t\textractionMode: mode || void 0,\n\t\tattackMs: resolveNumber(op.attackMs, 10),\n\t\treleaseMs: resolveNumber(op.releaseMs, 120),\n\t\tsensitivity: resolveNumber(op.sensitivity, 1),\n\t\tnoiseFloorDb: resolveNumber(op.noiseFloorDb, -45),\n\t\tdynamicRangeDb: resolveNumber(op.dynamicRangeDb, 36),\n\t\tsmoothing: resolveNumber(op.smoothing, .15),\n\t\tcurve: curveStr || void 0,\n\t\tbeatThreshold: resolveNumber(op.beatThreshold, .55),\n\t\tbeatDecayMs: resolveNumber(op.beatDecayMs, 80)\n\t};\n\tconst signals = await AudioSignalComputePipeline.extractFeatures(ctx.device, channels, sampleRate, fps, config, 512);\n\tsignalRegistry.registerBuffer(ctx.device, nodeId, signals.primaryBuffer, ctx.renderId);\n\tsignalRegistry.registerBuffer(ctx.device, `${nodeId}_beat`, signals.beatBuffer, ctx.renderId);\n\tsignalRegistry.registerBuffer(ctx.device, `${nodeId}_bass`, signals.bassBuffer, ctx.renderId);\n\tsignalRegistry.registerBuffer(ctx.device, `${nodeId}_energy`, signals.energyBuffer, ctx.renderId);\n\tsignalRegistry.registerTexture(ctx.device, nodeId, signals.texture, signals.textureView, ctx.renderId);\n\tsignalRegistry.registerTexture(ctx.device, `${nodeId}_beat`, signals.texture, signals.textureView, ctx.renderId);\n\tsignalRegistry.registerTexture(ctx.device, `${nodeId}_bass`, signals.texture, signals.textureView, ctx.renderId);\n\tsignalRegistry.registerTexture(ctx.device, `${nodeId}_energy`, signals.texture, signals.textureView, ctx.renderId);\n\tconst fnName = `signal_${nodeId.replace(/[^a-zA-Z0-9]/g, \"_\")}`;\n\tconst wgsl = `\nfn ${fnName}(t: f32, x: f32, y: f32, z: f32, i: u32, n: u32, frame: u32, color: vec4f, t_elapsed: f32, duration: f32) -> f32 {\n return 0.0f;\n}\n`;\n\tshaderStore.register(nodeId, {\n\t\twgsl,\n\t\tname: fnName,\n\t\toutputType: \"f32\",\n\t\tfnParams: []\n\t}, ctx.renderId);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ audioProcessor: audioSignalExtractorAudioProcessor });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-CP8CFWDs.mjs.map"],"mappings":";;;;;AAKA,MAAM,qCAAqC,OAAO,UAAU,YAAY,cAAc,QAAQ;AAC7F,KAAI,CAAC,KAAK,OAAQ;AAClB,KAAI,CAAC,YAAY,SAAS,WAAW,KAAK,SAAS,GAAG,WAAW,EAAG;CACpE,MAAM,KAAK,aAAa,aAAa,EAAE;CACvC,MAAM,SAAS,GAAG,UAAU,GAAG,MAAM;CACrC,MAAM,MAAM,IAAI,OAAO;CACvB,MAAM,OAAO,cAAc,GAAG,gBAAgB,GAAG;CACjD,MAAM,WAAW,cAAc,GAAG,OAAO,GAAG;CAC5C,MAAM,SAAS;EACd,gBAAgB,QAAQ,KAAK;EAC7B,UAAU,cAAc,GAAG,UAAU,GAAG;EACxC,WAAW,cAAc,GAAG,WAAW,IAAI;EAC3C,aAAa,cAAc,GAAG,aAAa,EAAE;EAC7C,cAAc,cAAc,GAAG,cAAc,IAAI;EACjD,gBAAgB,cAAc,GAAG,gBAAgB,GAAG;EACpD,WAAW,cAAc,GAAG,WAAW,IAAI;EAC3C,OAAO,YAAY,KAAK;EACxB,eAAe,cAAc,GAAG,eAAe,IAAI;EACnD,aAAa,cAAc,GAAG,aAAa,GAAG;EAC9C;CACD,MAAM,UAAU,MAAM,2BAA2B,gBAAgB,IAAI,QAAQ,UAAU,YAAY,KAAK,QAAQ,IAAI;AACpH,gBAAe,eAAe,IAAI,QAAQ,QAAQ,QAAQ,eAAe,IAAI,SAAS;AACtF,gBAAe,eAAe,IAAI,QAAQ,GAAG,OAAO,QAAQ,QAAQ,YAAY,IAAI,SAAS;AAC7F,gBAAe,eAAe,IAAI,QAAQ,GAAG,OAAO,QAAQ,QAAQ,YAAY,IAAI,SAAS;AAC7F,gBAAe,eAAe,IAAI,QAAQ,GAAG,OAAO,UAAU,QAAQ,cAAc,IAAI,SAAS;AACjG,gBAAe,gBAAgB,IAAI,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,aAAa,IAAI,SAAS;AACtG,gBAAe,gBAAgB,IAAI,QAAQ,GAAG,OAAO,QAAQ,QAAQ,SAAS,QAAQ,aAAa,IAAI,SAAS;AAChH,gBAAe,gBAAgB,IAAI,QAAQ,GAAG,OAAO,QAAQ,QAAQ,SAAS,QAAQ,aAAa,IAAI,SAAS;AAChH,gBAAe,gBAAgB,IAAI,QAAQ,GAAG,OAAO,UAAU,QAAQ,SAAS,QAAQ,aAAa,IAAI,SAAS;CAClH,MAAM,SAAS,UAAU,OAAO,QAAQ,iBAAiB,IAAI;CAC7D,MAAM,OAAO;KACT,OAAO;;;;AAIX,aAAY,SAAS,QAAQ;EAC5B;EACA,MAAM;EACN,YAAY;EACZ,UAAU,EAAE;EACZ,EAAE,IAAI,SAAS;;AAKjB,IAAI,oBAAoB,eAAe,EAAE,gBAAgB,oCAAoC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import "../chunk-GBe2k3y8.mjs";
2
- import { Ci as FrameSignal, D as SignalRegistry, La as SignalValue, O as SignalRegistryResource, Oa as SignalContext, P as buildWGSLSignalFn, Ra as SineSignalOptions, To as cosineSignal, fs as signal, h as MasterAudioEntry, ms as sineSignal, ps as signalBuilder, q as signalRegistry, s as AudioSignalComputePipeline, wa as Signal, wo as computed } from "../index-DEODKaL6.mjs";
3
- import "../index-CaiZ5p6q.mjs";
4
- import "../renderer-Dim2ZlfK.mjs";
5
- import { i as _default, n as AudioSignalOptions, r as ExtractedAudioSignalsBundle, t as AudioSignal } from "../audio-C6toT7F3.mjs";
6
- import { i as index_d_exports, n as index_d_exports$1, r as index_d_exports$3, t as index_d_exports$2 } from "../index-DN9oXO-X.mjs";
2
+ import { Ci as FrameSignal, D as SignalRegistry, La as SignalValue, O as SignalRegistryResource, Oa as SignalContext, P as buildWGSLSignalFn, Ra as SineSignalOptions, To as cosineSignal, h as MasterAudioEntry, hs as sineSignal, ms as signalBuilder, ps as signal, q as signalRegistry, s as AudioSignalComputePipeline, wa as Signal, wo as computed } from "../index-DujpgUUq.mjs";
3
+ import "../index-B1XcyMm8.mjs";
4
+ import "../renderer-CxqPeATd.mjs";
5
+ import { i as _default, n as AudioSignalOptions, r as ExtractedAudioSignalsBundle, t as AudioSignal } from "../audio-DHuEMOtQ.mjs";
6
+ import { i as index_d_exports, n as index_d_exports$1, r as index_d_exports$3, t as index_d_exports$2 } from "../index-D-l-yCv6.mjs";
7
7
  export { AudioSignal, AudioSignalComputePipeline, index_d_exports as AudioSignalExtractorNode, AudioSignalOptions, ExtractedAudioSignalsBundle, FrameSignal, MasterAudioEntry, Signal, SignalContext, index_d_exports$1 as SignalGateNode, index_d_exports$2 as SignalMathNode, index_d_exports$3 as SignalNode, SignalRegistry, SignalRegistryResource, SignalValue, SineSignalOptions, buildWGSLSignalFn, computed, cosineSignal, _default as modulateRenderer, signal, signalBuilder, signalRegistry, sineSignal };
@@ -1,10 +1,10 @@
1
1
  import "../chunk-GBe2k3y8.mjs";
2
- import { H as Signal, en as signal, ft as computed, nn as sineSignal, pt as cosineSignal, tn as signalBuilder } from "../dist-fjKpBYkc.mjs";
3
- import { Bt as SignalRegistry, Nn as signalRegistry, St as AudioSignalComputePipeline, ln as buildWGSLSignalFn } from "../dist-DRB6Vg5u.mjs";
4
- import "../renderers-CP8CFWDs-DoVn7dbW.mjs";
5
- import { i as dist_exports, n as dist_exports$1, r as dist_exports$3, t as dist_exports$2 } from "../signals-DGRs6ddH.mjs";
6
- import { t as renderers_default } from "../renderer-BZF48o1T.mjs";
2
+ import { H as Signal, ft as computed, nn as signalBuilder, pt as cosineSignal, rn as sineSignal, tn as signal } from "../dist-ClyC_d66.mjs";
3
+ import { Bt as SignalRegistry, Nn as signalRegistry, St as AudioSignalComputePipeline, ln as buildWGSLSignalFn } from "../dist-CspOG4V1.mjs";
4
+ import "../renderers-CP8CFWDs-DzGXDs5p.mjs";
5
+ import { i as dist_exports, n as dist_exports$1, r as dist_exports$3, t as dist_exports$2 } from "../signals-C5nOrRmn.mjs";
6
+ import { t as renderers_default } from "../renderer-CeiCJCg4.mjs";
7
7
  import "../renderer-BajIOuZH.mjs";
8
- import { t as AudioSignal } from "../audio-DXwNhi1z.mjs";
8
+ import { t as AudioSignal } from "../audio-CPApYcWF.mjs";
9
9
 
10
10
  export { AudioSignal, AudioSignalComputePipeline, dist_exports as AudioSignalExtractorNode, Signal, dist_exports$1 as SignalGateNode, dist_exports$2 as SignalMathNode, dist_exports$3 as SignalNode, SignalRegistry, buildWGSLSignalFn, computed, cosineSignal, renderers_default as modulateRenderer, signal, signalBuilder, signalRegistry, sineSignal };
@@ -1,6 +1,6 @@
1
1
  import { n as __exportAll } from "./chunk-GBe2k3y8.mjs";
2
- import { I as MultiOutputGenericSchema, W as SignalDataSchema, mt as createOutputItemSchema } from "./dist-fjKpBYkc.mjs";
3
- import { r as SignalResultSchema } from "./dist-BY0bIWgr.mjs";
2
+ import { I as MultiOutputGenericSchema, W as SignalDataSchema, mt as createOutputItemSchema } from "./dist-ClyC_d66.mjs";
3
+ import { r as SignalResultSchema } from "./dist-SB9qfAko.mjs";
4
4
  import { z } from "zod";
5
5
 
6
6
  //#region ../../nodes/node-audio-signal-extractor/dist/index.mjs
@@ -221,4 +221,4 @@ const SignalMathResultSchema = MultiOutputGenericSchema(createOutputItemSchema(z
221
221
 
222
222
  //#endregion
223
223
  export { dist_exports$3 as i, dist_exports$1 as n, dist_exports$2 as r, dist_exports as t };
224
- //# sourceMappingURL=signals-DGRs6ddH.mjs.map
224
+ //# sourceMappingURL=signals-C5nOrRmn.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"signals-DGRs6ddH.mjs","names":[],"sources":["../../../nodes/node-audio-signal-extractor/dist/index.mjs","../../../nodes/node-signal/dist/index.mjs","../../../nodes/node-signal-gate/dist/index.mjs","../../../nodes/node-signal-math/dist/index.mjs"],"sourcesContent":["import \"./renderers-CP8CFWDs.mjs\";\nimport { MultiOutputGenericSchema, createOutputItemSchema } from \"@framefields/node-sdk\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst ExtractionModeEnum = z.enum([\n\t\"rms_envelope\",\n\t\"transient_beat\",\n\t\"sub_bass\",\n\t\"bass\",\n\t\"mid\",\n\t\"high\",\n\t\"spectral_flux\"\n]);\nconst SignalCurveEnum = z.enum([\n\t\"linear\",\n\t\"exponential\",\n\t\"logarithmic\",\n\t\"square\",\n\t\"smoothstep\"\n]);\nconst AudioSignalExtractorConfigSchema = z.object({\n\textractionMode: ExtractionModeEnum.default(\"rms_envelope\"),\n\tattackMs: z.number().min(.5).max(1e3).default(10),\n\treleaseMs: z.number().min(1).max(5e3).default(120),\n\tsensitivity: z.number().min(.1).max(10).default(1),\n\tnoiseFloorDb: z.number().min(-90).max(0).default(-48),\n\tdynamicRangeDb: z.number().min(6).max(80).default(48),\n\tautoRange: z.boolean().default(true),\n\tsmoothing: z.number().min(0).max(1).default(.15),\n\tcurve: SignalCurveEnum.default(\"linear\"),\n\tbeatThreshold: z.number().min(.01).max(1).default(.08),\n\tbeatDecayMs: z.number().min(10).max(1e3).default(80),\n\tpreviewMode: z.enum([\n\t\t\"waveform\",\n\t\t\"envelope\",\n\t\t\"beat_markers\",\n\t\t\"spectrum\"\n\t]).default(\"envelope\")\n});\nconst AudioSignalExtractorResultSchema = MultiOutputGenericSchema(createOutputItemSchema(z.literal(\"Signal\"), z.any()));\n\n//#endregion\nexport { AudioSignalExtractorConfigSchema, AudioSignalExtractorResultSchema, ExtractionModeEnum, SignalCurveEnum };\n//# sourceMappingURL=index.mjs.map","import { SignalResultSchema } from \"@framefields/node-sdk\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst WGSL_OUTPUT_TYPES = [\"f32\"];\nconst WGSL_PARAM_TYPES = [\n\t\"f32\",\n\t\"i32\",\n\t\"u32\",\n\t\"vec2f\",\n\t\"vec3f\",\n\t\"vec4f\"\n];\nconst FnParamSchema = z.object({\n\tname: z.string().regex(/^[a-zA-Z_][a-zA-Z0-9_]*$/, \"Must be a valid WGSL identifier\"),\n\ttype: z.enum(WGSL_PARAM_TYPES),\n\tdefaultValue: z.number()\n});\nconst SignalNodeConfigSchema = z.object({\n\tamplitude: z.number().min(0).default(1),\n\tfrequency: z.number().min(0).default(1),\n\tphase: z.number().min(-2 * Math.PI).max(2 * Math.PI).default(0),\n\toffset: z.number().default(0),\n\tamplitudeMin: z.number().default(-1),\n\tamplitudeMax: z.number().default(1),\n\tspatialScale: z.number().min(0).default(1),\n\tspatialSpeed: z.number().default(1),\n\tfmAmplitude: z.number().min(0).default(1),\n\tfmFrequency: z.number().min(0).default(.5),\n\tgateEnabled: z.boolean().default(false),\n\tgateStartFrame: z.number().int().min(0).default(0),\n\tgateEndFrame: z.number().int().min(0).default(100),\n\tgateIdleValue: z.number().default(0),\n\tenvelopeUseFrame: z.boolean().default(true),\n\tbaseEnabled: z.boolean().default(true),\n\tbaseType: z.enum([\n\t\t\"sine\",\n\t\t\"triangle\",\n\t\t\"sawtooth\",\n\t\t\"square\",\n\t\t\"constant\",\n\t\t\"noise_smooth\",\n\t\t\"noise_white\",\n\t\t\"pulse\",\n\t\t\"bounce\",\n\t\t\"staircase\",\n\t\t\"custom\"\n\t]).default(\"sine\"),\n\tfmEnabled: z.boolean().default(false),\n\tenvelopeEnabled: z.boolean().default(false),\n\tenvelopeFamily: z.enum([\n\t\t\"linear\",\n\t\t\"sine\",\n\t\t\"quad\",\n\t\t\"cubic\",\n\t\t\"quart\",\n\t\t\"quint\",\n\t\t\"expo\",\n\t\t\"circ\",\n\t\t\"back\",\n\t\t\"elastic\",\n\t\t\"bounce\",\n\t\t\"smoothstep\",\n\t\t\"smootherstep\"\n\t]).default(\"sine\"),\n\tenvelopeMode: z.enum([\n\t\t\"in\",\n\t\t\"out\",\n\t\t\"in_out\"\n\t]).default(\"in_out\"),\n\tenvelopePattern: z.enum([\n\t\t\"ramp_up\",\n\t\t\"ramp_down\",\n\t\t\"bell\",\n\t\t\"loop\"\n\t]).default(\"ramp_up\"),\n\tenvelopeCycles: z.number().int().min(1).default(2),\n\tfnBody: z.string().default([\n\t\t\"// Bindings: t: f32 | x y z: f32 | i n frame: u32\",\n\t\t\"// Constants: PI, TAU, E\",\n\t\t\"return u.amplitude * sin(t * u.frequency * TAU + u.phase) + u.offset;\"\n\t].join(\"\\n\")),\n\tfnOutputType: z.enum(WGSL_OUTPUT_TYPES).default(\"f32\"),\n\tfnParams: z.array(FnParamSchema).default([]),\n\tpreviewMode: z.enum([\n\t\t\"pattern\",\n\t\t\"cartesian\",\n\t\t\"3d\"\n\t]).default(\"cartesian\")\n}).superRefine((data, ctx) => {\n\tif (data.amplitudeMax <= data.amplitudeMin) ctx.addIssue({\n\t\tcode: z.ZodIssueCode.custom,\n\t\tpath: [\"amplitudeMax\"],\n\t\tmessage: \"amplitudeMax must be greater than amplitudeMin\"\n\t});\n\tif (data.gateEndFrame <= data.gateStartFrame) ctx.addIssue({\n\t\tcode: z.ZodIssueCode.custom,\n\t\tpath: [\"gateEndFrame\"],\n\t\tmessage: \"gateEndFrame must be greater than gateStartFrame\"\n\t});\n});\n\n//#endregion\nexport { FnParamSchema, SignalNodeConfigSchema, SignalResultSchema, WGSL_OUTPUT_TYPES, WGSL_PARAM_TYPES };\n//# sourceMappingURL=index.mjs.map","import \"./renderer.mjs\";\nimport { SignalDataSchema } from \"@framefields/core\";\nimport { MultiOutputGenericSchema, createOutputItemSchema } from \"@framefields/node-sdk\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst GateModeSchema = z.enum([\n\t\"gate\",\n\t\"trigger\",\n\t\"toggle\"\n]);\nconst SignalGateConfigSchema = z.object({\n\tthreshold: z.number().min(0).max(1).default(.5),\n\tdebounceMs: z.number().min(0).max(5e3).default(100),\n\tmode: GateModeSchema.default(\"gate\"),\n\tholdFrames: z.number().min(1).max(120).default(4),\n\tinvert: z.boolean().default(false)\n});\nconst SignalGateResultSchema = MultiOutputGenericSchema(createOutputItemSchema(z.literal(\"Signal\"), SignalDataSchema));\n\n//#endregion\nexport { GateModeSchema, SignalGateConfigSchema, SignalGateResultSchema };\n//# sourceMappingURL=index.mjs.map","import { MultiOutputGenericSchema, createOutputItemSchema } from \"@framefields/node-sdk\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst SignalMathOperationEnum = z.enum([\n\t\"remap\",\n\t\"normalize\",\n\t\"add\",\n\t\"subtract\",\n\t\"multiply\",\n\t\"divide\",\n\t\"invert\",\n\t\"clamp\",\n\t\"power\",\n\t\"smoothstep\",\n\t\"custom\"\n]);\nconst SignalMathConfigSchema = z.object({\n\toperation: SignalMathOperationEnum.default(\"remap\"),\n\tbValue: z.number().default(1),\n\tinMin: z.number().default(0),\n\tinMax: z.number().default(1),\n\toutMin: z.number().default(0),\n\toutMax: z.number().default(1),\n\tclampMin: z.number().default(0),\n\tclampMax: z.number().default(1),\n\texponent: z.number().default(2),\n\tedge0: z.number().default(0),\n\tedge1: z.number().default(1),\n\tcustomWGSL: z.string().default([\n\t\t\"// Variables in scope:\",\n\t\t\"// a: f32 (Signal A)\",\n\t\t\"// b: f32 (Signal B or uniform bValue)\",\n\t\t\"// a_min: f32, a_max: f32 (Signal A min/max stats)\",\n\t\t\"// t: f32 (seconds), t_norm: f32 [0..1], frame: u32\",\n\t\t\"// Constants: PI, TAU, E\",\n\t\t\"return a;\"\n\t].join(\"\\n\"))\n});\nconst SignalMathResultSchema = MultiOutputGenericSchema(createOutputItemSchema(z.literal(\"Signal\"), z.record(z.string(), z.unknown())));\n\n//#endregion\nexport { SignalMathConfigSchema, SignalMathOperationEnum, SignalMathResultSchema };\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"signals-C5nOrRmn.mjs","names":[],"sources":["../../../nodes/node-audio-signal-extractor/dist/index.mjs","../../../nodes/node-signal/dist/index.mjs","../../../nodes/node-signal-gate/dist/index.mjs","../../../nodes/node-signal-math/dist/index.mjs"],"sourcesContent":["import \"./renderers-CP8CFWDs.mjs\";\nimport { MultiOutputGenericSchema, createOutputItemSchema } from \"@framefields/node-sdk\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst ExtractionModeEnum = z.enum([\n\t\"rms_envelope\",\n\t\"transient_beat\",\n\t\"sub_bass\",\n\t\"bass\",\n\t\"mid\",\n\t\"high\",\n\t\"spectral_flux\"\n]);\nconst SignalCurveEnum = z.enum([\n\t\"linear\",\n\t\"exponential\",\n\t\"logarithmic\",\n\t\"square\",\n\t\"smoothstep\"\n]);\nconst AudioSignalExtractorConfigSchema = z.object({\n\textractionMode: ExtractionModeEnum.default(\"rms_envelope\"),\n\tattackMs: z.number().min(.5).max(1e3).default(10),\n\treleaseMs: z.number().min(1).max(5e3).default(120),\n\tsensitivity: z.number().min(.1).max(10).default(1),\n\tnoiseFloorDb: z.number().min(-90).max(0).default(-48),\n\tdynamicRangeDb: z.number().min(6).max(80).default(48),\n\tautoRange: z.boolean().default(true),\n\tsmoothing: z.number().min(0).max(1).default(.15),\n\tcurve: SignalCurveEnum.default(\"linear\"),\n\tbeatThreshold: z.number().min(.01).max(1).default(.08),\n\tbeatDecayMs: z.number().min(10).max(1e3).default(80),\n\tpreviewMode: z.enum([\n\t\t\"waveform\",\n\t\t\"envelope\",\n\t\t\"beat_markers\",\n\t\t\"spectrum\"\n\t]).default(\"envelope\")\n});\nconst AudioSignalExtractorResultSchema = MultiOutputGenericSchema(createOutputItemSchema(z.literal(\"Signal\"), z.any()));\n\n//#endregion\nexport { AudioSignalExtractorConfigSchema, AudioSignalExtractorResultSchema, ExtractionModeEnum, SignalCurveEnum };\n//# sourceMappingURL=index.mjs.map","import { SignalResultSchema } from \"@framefields/node-sdk\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst WGSL_OUTPUT_TYPES = [\"f32\"];\nconst WGSL_PARAM_TYPES = [\n\t\"f32\",\n\t\"i32\",\n\t\"u32\",\n\t\"vec2f\",\n\t\"vec3f\",\n\t\"vec4f\"\n];\nconst FnParamSchema = z.object({\n\tname: z.string().regex(/^[a-zA-Z_][a-zA-Z0-9_]*$/, \"Must be a valid WGSL identifier\"),\n\ttype: z.enum(WGSL_PARAM_TYPES),\n\tdefaultValue: z.number()\n});\nconst SignalNodeConfigSchema = z.object({\n\tamplitude: z.number().min(0).default(1),\n\tfrequency: z.number().min(0).default(1),\n\tphase: z.number().min(-2 * Math.PI).max(2 * Math.PI).default(0),\n\toffset: z.number().default(0),\n\tamplitudeMin: z.number().default(-1),\n\tamplitudeMax: z.number().default(1),\n\tspatialScale: z.number().min(0).default(1),\n\tspatialSpeed: z.number().default(1),\n\tfmAmplitude: z.number().min(0).default(1),\n\tfmFrequency: z.number().min(0).default(.5),\n\tgateEnabled: z.boolean().default(false),\n\tgateStartFrame: z.number().int().min(0).default(0),\n\tgateEndFrame: z.number().int().min(0).default(100),\n\tgateIdleValue: z.number().default(0),\n\tenvelopeUseFrame: z.boolean().default(true),\n\tbaseEnabled: z.boolean().default(true),\n\tbaseType: z.enum([\n\t\t\"sine\",\n\t\t\"triangle\",\n\t\t\"sawtooth\",\n\t\t\"square\",\n\t\t\"constant\",\n\t\t\"noise_smooth\",\n\t\t\"noise_white\",\n\t\t\"pulse\",\n\t\t\"bounce\",\n\t\t\"staircase\",\n\t\t\"custom\"\n\t]).default(\"sine\"),\n\tfmEnabled: z.boolean().default(false),\n\tenvelopeEnabled: z.boolean().default(false),\n\tenvelopeFamily: z.enum([\n\t\t\"linear\",\n\t\t\"sine\",\n\t\t\"quad\",\n\t\t\"cubic\",\n\t\t\"quart\",\n\t\t\"quint\",\n\t\t\"expo\",\n\t\t\"circ\",\n\t\t\"back\",\n\t\t\"elastic\",\n\t\t\"bounce\",\n\t\t\"smoothstep\",\n\t\t\"smootherstep\"\n\t]).default(\"sine\"),\n\tenvelopeMode: z.enum([\n\t\t\"in\",\n\t\t\"out\",\n\t\t\"in_out\"\n\t]).default(\"in_out\"),\n\tenvelopePattern: z.enum([\n\t\t\"ramp_up\",\n\t\t\"ramp_down\",\n\t\t\"bell\",\n\t\t\"loop\"\n\t]).default(\"ramp_up\"),\n\tenvelopeCycles: z.number().int().min(1).default(2),\n\tfnBody: z.string().default([\n\t\t\"// Bindings: t: f32 | x y z: f32 | i n frame: u32\",\n\t\t\"// Constants: PI, TAU, E\",\n\t\t\"return u.amplitude * sin(t * u.frequency * TAU + u.phase) + u.offset;\"\n\t].join(\"\\n\")),\n\tfnOutputType: z.enum(WGSL_OUTPUT_TYPES).default(\"f32\"),\n\tfnParams: z.array(FnParamSchema).default([]),\n\tpreviewMode: z.enum([\n\t\t\"pattern\",\n\t\t\"cartesian\",\n\t\t\"3d\"\n\t]).default(\"cartesian\")\n}).superRefine((data, ctx) => {\n\tif (data.amplitudeMax <= data.amplitudeMin) ctx.addIssue({\n\t\tcode: z.ZodIssueCode.custom,\n\t\tpath: [\"amplitudeMax\"],\n\t\tmessage: \"amplitudeMax must be greater than amplitudeMin\"\n\t});\n\tif (data.gateEndFrame <= data.gateStartFrame) ctx.addIssue({\n\t\tcode: z.ZodIssueCode.custom,\n\t\tpath: [\"gateEndFrame\"],\n\t\tmessage: \"gateEndFrame must be greater than gateStartFrame\"\n\t});\n});\n\n//#endregion\nexport { FnParamSchema, SignalNodeConfigSchema, SignalResultSchema, WGSL_OUTPUT_TYPES, WGSL_PARAM_TYPES };\n//# sourceMappingURL=index.mjs.map","import \"./renderer.mjs\";\nimport { SignalDataSchema } from \"@framefields/core\";\nimport { MultiOutputGenericSchema, createOutputItemSchema } from \"@framefields/node-sdk\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst GateModeSchema = z.enum([\n\t\"gate\",\n\t\"trigger\",\n\t\"toggle\"\n]);\nconst SignalGateConfigSchema = z.object({\n\tthreshold: z.number().min(0).max(1).default(.5),\n\tdebounceMs: z.number().min(0).max(5e3).default(100),\n\tmode: GateModeSchema.default(\"gate\"),\n\tholdFrames: z.number().min(1).max(120).default(4),\n\tinvert: z.boolean().default(false)\n});\nconst SignalGateResultSchema = MultiOutputGenericSchema(createOutputItemSchema(z.literal(\"Signal\"), SignalDataSchema));\n\n//#endregion\nexport { GateModeSchema, SignalGateConfigSchema, SignalGateResultSchema };\n//# sourceMappingURL=index.mjs.map","import { MultiOutputGenericSchema, createOutputItemSchema } from \"@framefields/node-sdk\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst SignalMathOperationEnum = z.enum([\n\t\"remap\",\n\t\"normalize\",\n\t\"add\",\n\t\"subtract\",\n\t\"multiply\",\n\t\"divide\",\n\t\"invert\",\n\t\"clamp\",\n\t\"power\",\n\t\"smoothstep\",\n\t\"custom\"\n]);\nconst SignalMathConfigSchema = z.object({\n\toperation: SignalMathOperationEnum.default(\"remap\"),\n\tbValue: z.number().default(1),\n\tinMin: z.number().default(0),\n\tinMax: z.number().default(1),\n\toutMin: z.number().default(0),\n\toutMax: z.number().default(1),\n\tclampMin: z.number().default(0),\n\tclampMax: z.number().default(1),\n\texponent: z.number().default(2),\n\tedge0: z.number().default(0),\n\tedge1: z.number().default(1),\n\tcustomWGSL: z.string().default([\n\t\t\"// Variables in scope:\",\n\t\t\"// a: f32 (Signal A)\",\n\t\t\"// b: f32 (Signal B or uniform bValue)\",\n\t\t\"// a_min: f32, a_max: f32 (Signal A min/max stats)\",\n\t\t\"// t: f32 (seconds), t_norm: f32 [0..1], frame: u32\",\n\t\t\"// Constants: PI, TAU, E\",\n\t\t\"return a;\"\n\t].join(\"\\n\"))\n});\nconst SignalMathResultSchema = MultiOutputGenericSchema(createOutputItemSchema(z.literal(\"Signal\"), z.record(z.string(), z.unknown())));\n\n//#endregion\nexport { SignalMathConfigSchema, SignalMathOperationEnum, SignalMathResultSchema };\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "framefields",
3
- "version": "2.4.0",
3
+ "version": "2.4.1",
4
4
  "private": false,
5
5
  "description": "High-performance WebGPU rendering SDK for video composition, Photoshop-grade 2D VFX, audio DSP, and reactive signals. Built for AI Agents.",
6
6
  "license": "Apache-2.0",
@@ -115,62 +115,62 @@
115
115
  "tsdown": "^0.19.0",
116
116
  "typescript": "^5.8.3",
117
117
  "vitest": "4.1.5",
118
- "@framefields/compositions": "2.4.0",
119
- "@framefields/ai": "2.4.0",
120
- "@framefields/client-utils": "2.4.0",
121
- "@framefields/node-audio-compressor": "2.4.0",
122
- "@framefields/node-audio-noise-gate": "2.4.0",
123
- "@framefields/node-audio-delay": "2.4.0",
124
- "@framefields/node-audio-parametric-eq": "2.4.0",
125
- "@framefields/node-audio-reverb": "2.4.0",
126
- "@framefields/node-audio-signal-extractor": "2.4.0",
127
- "@framefields/node-colorkey": "2.4.0",
128
- "@framefields/core": "2.4.0",
129
- "@framefields/node-audio-fade": "2.4.0",
130
- "@framefields/node-blur": "2.4.0",
131
- "@framefields/node-crop": "2.4.0",
132
- "@framefields/node-curves": "2.4.0",
133
- "@framefields/node-displacement-map": "2.4.0",
134
- "@framefields/node-deflicker": "2.4.0",
135
- "@framefields/node-film-grain": "2.4.0",
136
- "@framefields/node-flip": "2.4.0",
137
- "@framefields/node-gradient-map": "2.4.0",
138
- "@framefields/node-color-balance": "2.4.0",
139
- "@framefields/node-high-pass": "2.4.0",
140
- "@framefields/node-kenburns": "2.4.0",
141
- "@framefields/node-corner-pin": "2.4.0",
142
- "@framefields/node-layer-style": "2.4.0",
143
- "@framefields/node-liquify": "2.4.0",
144
- "@framefields/node-levels": "2.4.0",
145
- "@framefields/node-lut": "2.4.0",
146
- "@framefields/node-mask-math": "2.4.0",
147
- "@framefields/node-halftone-screen": "2.4.0",
148
- "@framefields/node-paint": "2.4.0",
149
- "@framefields/node-mesh-warp": "2.4.0",
150
- "@framefields/node-modulate": "2.4.0",
151
- "@framefields/node-patch-heal": "2.4.0",
152
- "@framefields/node-refine-edge": "2.4.0",
153
- "@framefields/node-relight-3d": "2.4.0",
154
- "@framefields/node-rotate": "2.4.0",
155
- "@framefields/node-refraction-caustics": "2.4.0",
156
- "@framefields/node-particles": "2.4.0",
157
- "@framefields/node-sdk": "2.4.0",
158
- "@framefields/node-signal": "2.4.0",
159
- "@framefields/node-selective-color": "2.4.0",
160
- "@framefields/node-signal-math": "2.4.0",
161
- "@framefields/node-shadows-highlights": "2.4.0",
162
- "@framefields/node-stereo-panning": "2.4.0",
163
- "@framefields/node-unsharp-mask": "2.4.0",
164
- "@framefields/node-vision": "2.4.0",
165
- "@framefields/renderer": "2.4.0",
166
- "@framefields/node-tile-offset": "2.4.0",
167
- "@framefields/tsconfig": "2.4.0",
168
- "@framefields/tensor-webgpu": "2.4.0",
169
- "@framefields/node-signal-gate": "2.4.0",
170
- "@framefields/renderers": "2.4.0",
171
- "@framefields/vision": "2.4.0",
172
- "@framefields/webgpu-renderers": "2.4.0",
173
- "@framefields/node-vignette": "2.4.0"
118
+ "@framefields/ai": "2.4.1",
119
+ "@framefields/client-utils": "2.4.1",
120
+ "@framefields/core": "2.4.1",
121
+ "@framefields/compositions": "2.4.1",
122
+ "@framefields/node-audio-delay": "2.4.1",
123
+ "@framefields/node-audio-compressor": "2.4.1",
124
+ "@framefields/node-audio-fade": "2.4.1",
125
+ "@framefields/node-audio-noise-gate": "2.4.1",
126
+ "@framefields/node-audio-parametric-eq": "2.4.1",
127
+ "@framefields/node-audio-reverb": "2.4.1",
128
+ "@framefields/node-audio-signal-extractor": "2.4.1",
129
+ "@framefields/node-color-balance": "2.4.1",
130
+ "@framefields/node-blur": "2.4.1",
131
+ "@framefields/node-colorkey": "2.4.1",
132
+ "@framefields/node-corner-pin": "2.4.1",
133
+ "@framefields/node-curves": "2.4.1",
134
+ "@framefields/node-crop": "2.4.1",
135
+ "@framefields/node-deflicker": "2.4.1",
136
+ "@framefields/node-film-grain": "2.4.1",
137
+ "@framefields/node-gradient-map": "2.4.1",
138
+ "@framefields/node-high-pass": "2.4.1",
139
+ "@framefields/node-flip": "2.4.1",
140
+ "@framefields/node-displacement-map": "2.4.1",
141
+ "@framefields/node-halftone-screen": "2.4.1",
142
+ "@framefields/node-layer-style": "2.4.1",
143
+ "@framefields/node-kenburns": "2.4.1",
144
+ "@framefields/node-liquify": "2.4.1",
145
+ "@framefields/node-levels": "2.4.1",
146
+ "@framefields/node-mask-math": "2.4.1",
147
+ "@framefields/node-lut": "2.4.1",
148
+ "@framefields/node-modulate": "2.4.1",
149
+ "@framefields/node-mesh-warp": "2.4.1",
150
+ "@framefields/node-paint": "2.4.1",
151
+ "@framefields/node-refine-edge": "2.4.1",
152
+ "@framefields/node-patch-heal": "2.4.1",
153
+ "@framefields/node-refraction-caustics": "2.4.1",
154
+ "@framefields/node-relight-3d": "2.4.1",
155
+ "@framefields/node-particles": "2.4.1",
156
+ "@framefields/node-sdk": "2.4.1",
157
+ "@framefields/node-selective-color": "2.4.1",
158
+ "@framefields/node-rotate": "2.4.1",
159
+ "@framefields/node-shadows-highlights": "2.4.1",
160
+ "@framefields/node-signal-math": "2.4.1",
161
+ "@framefields/node-signal": "2.4.1",
162
+ "@framefields/node-signal-gate": "2.4.1",
163
+ "@framefields/node-stereo-panning": "2.4.1",
164
+ "@framefields/node-tile-offset": "2.4.1",
165
+ "@framefields/node-vignette": "2.4.1",
166
+ "@framefields/node-unsharp-mask": "2.4.1",
167
+ "@framefields/node-vision": "2.4.1",
168
+ "@framefields/tensor-webgpu": "2.4.1",
169
+ "@framefields/vision": "2.4.1",
170
+ "@framefields/renderers": "2.4.1",
171
+ "@framefields/tsconfig": "2.4.1",
172
+ "@framefields/renderer": "2.4.1",
173
+ "@framefields/webgpu-renderers": "2.4.1"
174
174
  },
175
175
  "scripts": {
176
176
  "build": "tsdown && node ../../scripts/sync-readme.mjs && node scripts/check-dts-bundle.mjs",