framefields 2.9.3 → 2.11.0

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 (480) hide show
  1. package/README.md +9 -2
  2. package/dist/audio/index.d.mts +5 -5
  3. package/dist/audio/index.mjs +13 -13
  4. package/dist/{audio-B6RmYOPe.mjs → audio-BuCVk1IQ.mjs} +32 -6
  5. package/dist/audio-BuCVk1IQ.mjs.map +1 -0
  6. package/dist/audio-CYZkDwae.d.mts +62 -0
  7. package/dist/audio-CYZkDwae.d.mts.map +1 -0
  8. package/dist/{audio-BlDbnteH.mjs → audio-KHBadECb.mjs} +1 -1
  9. package/dist/{audio-BlDbnteH.mjs.map → audio-KHBadECb.mjs.map} +1 -1
  10. package/dist/{check-result-Bj7g62ka.mjs → check-result-Culfu7Nx.mjs} +1 -1
  11. package/dist/{check-result-Bj7g62ka.mjs.map → check-result-Culfu7Nx.mjs.map} +1 -1
  12. package/dist/cli/check-worker.mjs +50 -50
  13. package/dist/cli.mjs +179 -3
  14. package/dist/cli.mjs.map +1 -1
  15. package/dist/cloud/index.d.mts +118 -0
  16. package/dist/cloud/index.d.mts.map +1 -0
  17. package/dist/cloud/index.mjs +3 -0
  18. package/dist/cloud-xcfV4J03.mjs +233 -0
  19. package/dist/cloud-xcfV4J03.mjs.map +1 -0
  20. package/dist/components/index.d.mts +14 -14
  21. package/dist/components/index.mjs +47 -47
  22. package/dist/{dist-Cn8bDsQF.mjs → dist-BIE8fvlv.mjs} +1 -1
  23. package/dist/{dist-Cn8bDsQF.mjs.map → dist-BIE8fvlv.mjs.map} +1 -1
  24. package/dist/{dist-ByxHoMQI.mjs → dist-Bf2_efYP.mjs} +1 -1
  25. package/dist/{dist-ByxHoMQI.mjs.map → dist-Bf2_efYP.mjs.map} +1 -1
  26. package/dist/{dist-BlulwErl.mjs → dist-CNGv-JTX.mjs} +1 -1
  27. package/dist/{dist-D12-a3-x.mjs → dist-CWLLnigL.mjs} +375 -15
  28. package/dist/dist-CWLLnigL.mjs.map +1 -0
  29. package/dist/{dist-DL1GwJvs.mjs → dist-CySGkG54.mjs} +2 -2
  30. package/dist/{dist-DL1GwJvs.mjs.map → dist-CySGkG54.mjs.map} +1 -1
  31. package/dist/{dist-Dq5TkNDI.mjs → dist-Dg9LMWoX.mjs} +2 -2
  32. package/dist/{dist-Dq5TkNDI.mjs.map → dist-Dg9LMWoX.mjs.map} +1 -1
  33. package/dist/{dist-DEUU6sNe.mjs → dist-EQX3TUUl.mjs} +4 -4
  34. package/dist/{dist-DEUU6sNe.mjs.map → dist-EQX3TUUl.mjs.map} +1 -1
  35. package/dist/effects/index.d.mts +6 -6
  36. package/dist/effects/index.mjs +36 -36
  37. package/dist/{effects-CViUoQSV.mjs → effects-DKLbLXF7.mjs} +3 -3
  38. package/dist/{effects-CViUoQSV.mjs.map → effects-DKLbLXF7.mjs.map} +1 -1
  39. package/dist/fonts/index.d.mts +1 -1
  40. package/dist/fonts/index.mjs +3 -3
  41. package/dist/{fonts-B0U2KO5I.mjs → fonts-gPbGbShD.mjs} +2 -2
  42. package/dist/{fonts-B0U2KO5I.mjs.map → fonts-gPbGbShD.mjs.map} +1 -1
  43. package/dist/{gpu-zFNrvhV9.mjs → gpu-CpkJJLQP.mjs} +2 -2
  44. package/dist/{gpu-zFNrvhV9.mjs.map → gpu-CpkJJLQP.mjs.map} +1 -1
  45. package/dist/{index-BuYtrhzL.d.mts → index-BW0Q1ygn.d.mts} +1 -1
  46. package/dist/{index-BuYtrhzL.d.mts.map → index-BW0Q1ygn.d.mts.map} +1 -1
  47. package/dist/{index-f4IF1vRH.d.mts → index-Bly-7YM1.d.mts} +3 -3
  48. package/dist/{index-f4IF1vRH.d.mts.map → index-Bly-7YM1.d.mts.map} +1 -1
  49. package/dist/{index-Bzo1uj8h.d.mts → index-BuiZzc6i.d.mts} +23 -3
  50. package/dist/index-BuiZzc6i.d.mts.map +1 -0
  51. package/dist/{index-DBhswLMO.d.mts → index-C8YwZ6k1.d.mts} +2 -2
  52. package/dist/{index-DBhswLMO.d.mts.map → index-C8YwZ6k1.d.mts.map} +1 -1
  53. package/dist/{index-svAgwTY_.d.mts → index-CEU_Zsb9.d.mts} +2 -2
  54. package/dist/{index-svAgwTY_.d.mts.map → index-CEU_Zsb9.d.mts.map} +1 -1
  55. package/dist/{index-9_4X2ro1.d.mts → index-COYNQ_mf.d.mts} +1 -1
  56. package/dist/{index-9_4X2ro1.d.mts.map → index-COYNQ_mf.d.mts.map} +1 -1
  57. package/dist/{index-CgGM31I9.d.mts → index-CdCrae-I.d.mts} +2 -2
  58. package/dist/{index-CgGM31I9.d.mts.map → index-CdCrae-I.d.mts.map} +1 -1
  59. package/dist/{index-B9Lm1x8i.d.mts → index-Cro-818i.d.mts} +297 -283
  60. package/dist/index-Cro-818i.d.mts.map +1 -0
  61. package/dist/{index-w28KUM9A.d.mts → index-D2i9J9Zq.d.mts} +3 -3
  62. package/dist/{index-w28KUM9A.d.mts.map → index-D2i9J9Zq.d.mts.map} +1 -1
  63. package/dist/{index-V0ZQ4JN6.d.mts → index-gOVtTm-P.d.mts} +125 -3
  64. package/dist/index-gOVtTm-P.d.mts.map +1 -0
  65. package/dist/{index-C6GcuYVA.d.mts → index-jSDEM-uE.d.mts} +5 -5
  66. package/dist/{index-C6GcuYVA.d.mts.map → index-jSDEM-uE.d.mts.map} +1 -1
  67. package/dist/index.d.mts +16 -16
  68. package/dist/index.mjs +59 -59
  69. package/dist/preview/index.d.mts +4 -4
  70. package/dist/preview/index.mjs +12 -12
  71. package/dist/{preview-ZKJ_zTmd.mjs → preview-BToKUTtZ.mjs} +3 -3
  72. package/dist/{preview-ZKJ_zTmd.mjs.map → preview-BToKUTtZ.mjs.map} +1 -1
  73. package/dist/preview-engine/audio.mjs +1 -1
  74. package/dist/preview-engine/{chunk-VN36PRVD.mjs → chunk-26XWIHW3.mjs} +1 -1
  75. package/dist/preview-engine/{chunk-BVDWS3D2.mjs → chunk-4AGQN53P.mjs} +1 -1
  76. package/dist/preview-engine/{chunk-IB6GZJOL.mjs → chunk-54Q5CKSV.mjs} +1 -1
  77. package/dist/preview-engine/{chunk-Y5K5LVOR.mjs → chunk-5KSBS3AL.mjs} +1 -1
  78. package/dist/preview-engine/{chunk-ZJ5SWTCW.mjs → chunk-65NANVQL.mjs} +1 -1
  79. package/dist/preview-engine/{chunk-34RJ7GAS.mjs → chunk-6LTINEA4.mjs} +1 -1
  80. package/dist/preview-engine/{chunk-SPJPM43P.mjs → chunk-7GMHSTRP.mjs} +1 -1
  81. package/dist/preview-engine/{chunk-BEYA25UZ.mjs → chunk-ACBBBOUM.mjs} +1 -1
  82. package/dist/preview-engine/{chunk-7U34VKNO.mjs → chunk-BRV7TQDV.mjs} +1 -1
  83. package/dist/preview-engine/{chunk-KHJZMTOS.mjs → chunk-CCORQLMR.mjs} +1 -1
  84. package/dist/preview-engine/{chunk-5AWAOMBR.mjs → chunk-CIVEZJYF.mjs} +1 -1
  85. package/dist/preview-engine/{chunk-FKG27DVO.mjs → chunk-CIVJXFWH.mjs} +1 -1
  86. package/dist/preview-engine/{chunk-JIPMF42Z.mjs → chunk-D6LM7DTJ.mjs} +2 -2
  87. package/dist/preview-engine/{chunk-GA4HNR44.mjs → chunk-DNNGWS2C.mjs} +1 -1
  88. package/dist/preview-engine/{chunk-ZY47XIRK.mjs → chunk-EAWJXW4J.mjs} +1 -1
  89. package/dist/preview-engine/{chunk-6R3UJBL5.mjs → chunk-EPRINA4V.mjs} +1 -1
  90. package/dist/preview-engine/{chunk-GRJJVSOV.mjs → chunk-EXEO245X.mjs} +1 -1
  91. package/dist/preview-engine/{chunk-DVZITDQS.mjs → chunk-FQL4IJZN.mjs} +1 -1
  92. package/dist/preview-engine/{chunk-QCSVT73T.mjs → chunk-GHTG5XV6.mjs} +1 -1
  93. package/dist/preview-engine/{chunk-VVY4PG5E.mjs → chunk-GXFYRMJZ.mjs} +25 -25
  94. package/dist/preview-engine/{chunk-AHQCDTD6.mjs → chunk-IBPYV6HF.mjs} +1 -1
  95. package/dist/preview-engine/{chunk-PM2W4VLT.mjs → chunk-IKVJ4MW5.mjs} +1 -1
  96. package/dist/preview-engine/{chunk-GZWA5QJS.mjs → chunk-JDB7PMRI.mjs} +1 -1
  97. package/dist/preview-engine/{chunk-CC4NNNIY.mjs → chunk-KVOFO273.mjs} +1 -1
  98. package/dist/preview-engine/{chunk-RJIAES3X.mjs → chunk-LFNCWMKS.mjs} +1 -1
  99. package/dist/preview-engine/{chunk-FTCEG3SF.mjs → chunk-LMXMBX4J.mjs} +1 -1
  100. package/dist/preview-engine/{chunk-MIEH74UH.mjs → chunk-M4QANUJI.mjs} +1 -1
  101. package/dist/preview-engine/{chunk-VVE2QHVG.mjs → chunk-NOKPBMIP.mjs} +1 -1
  102. package/dist/preview-engine/{chunk-P5FKRQFU.mjs → chunk-O63FLYWC.mjs} +1 -1
  103. package/dist/preview-engine/chunk-OELPPLML.mjs +107 -0
  104. package/dist/preview-engine/{chunk-GIICZZQI.mjs → chunk-OLB4TQLQ.mjs} +1 -1
  105. package/dist/preview-engine/{chunk-CN2VLYLB.mjs → chunk-PKNUTHPI.mjs} +1 -1
  106. package/dist/preview-engine/{chunk-2B722GXM.mjs → chunk-QF4JWVO3.mjs} +1 -1
  107. package/dist/preview-engine/{chunk-EJJITH6U.mjs → chunk-RDWLLITE.mjs} +1 -1
  108. package/dist/preview-engine/{chunk-K3C6GUQD.mjs → chunk-SE2C623Z.mjs} +1 -1
  109. package/dist/preview-engine/{chunk-34DL53D5.mjs → chunk-TEWRQKX3.mjs} +1 -1
  110. package/dist/preview-engine/{chunk-H7BSN7V7.mjs → chunk-UGB6JKVS.mjs} +1 -1
  111. package/dist/preview-engine/{chunk-BJV2LBII.mjs → chunk-UI3VH33L.mjs} +1 -1
  112. package/dist/preview-engine/{chunk-UXYM2G6J.mjs → chunk-UMJ3VGKN.mjs} +1 -1
  113. package/dist/preview-engine/{chunk-2DWY7UBV.mjs → chunk-VFQH5KVS.mjs} +1 -1
  114. package/dist/preview-engine/{chunk-73CNXGAK.mjs → chunk-VQA4DYZU.mjs} +1 -1
  115. package/dist/preview-engine/{chunk-LVYVXVZO.mjs → chunk-VZLIRYAL.mjs} +1 -1
  116. package/dist/preview-engine/{chunk-4WYM72ZN.mjs → chunk-WFMUDL55.mjs} +1 -1
  117. package/dist/preview-engine/{chunk-Q62GPWGD.mjs → chunk-XF6DYP6B.mjs} +11 -11
  118. package/dist/preview-engine/{chunk-35HMRW4I.mjs → chunk-YHMBGJP6.mjs} +1 -1
  119. package/dist/preview-engine/{chunk-DMSZXG56.mjs → chunk-YKM7JDQY.mjs} +1 -1
  120. package/dist/preview-engine/{chunk-SF37HXAH.mjs → chunk-YVZTRH4Y.mjs} +1 -1
  121. package/dist/preview-engine/{chunk-TNJEZKXM.mjs → chunk-Z24UEN4P.mjs} +1 -1
  122. package/dist/preview-engine/{chunk-2PYTDN2C.mjs → chunk-ZF2MEFKO.mjs} +1 -1
  123. package/dist/preview-engine/{chunk-OH5W5EL6.mjs → chunk-ZIXPWP2B.mjs} +1 -1
  124. package/dist/preview-engine/components.mjs +1 -1
  125. package/dist/preview-engine/effects.mjs +1 -1
  126. package/dist/preview-engine/framefields.mjs +1 -1
  127. package/dist/preview-engine/player.mjs +1 -1
  128. package/dist/preview-engine/renderers-2NGIILMI.mjs +1 -0
  129. package/dist/preview-engine/{renderers-5TO2SXFR.mjs → renderers-33FCFHDR.mjs} +1 -1
  130. package/dist/preview-engine/renderers-466Z77BH.mjs +1 -0
  131. package/dist/preview-engine/{renderers-PIIEUKFE.mjs → renderers-4IBFDW2S.mjs} +1 -1
  132. package/dist/preview-engine/renderers-4KRENGZA.mjs +1 -0
  133. package/dist/preview-engine/renderers-4W52BQEU.mjs +1 -0
  134. package/dist/preview-engine/{renderers-ZACSHGNZ.mjs → renderers-53EI26GL.mjs} +1 -1
  135. package/dist/preview-engine/renderers-55PRAS7G.mjs +1 -0
  136. package/dist/preview-engine/renderers-5LLYINHW.mjs +1 -0
  137. package/dist/preview-engine/{renderers-A24KZK2Q.mjs → renderers-5XLGCEOA.mjs} +1 -1
  138. package/dist/preview-engine/renderers-63N3Y2XO.mjs +1 -0
  139. package/dist/preview-engine/{renderers-V3AQO7AR.mjs → renderers-6LNDAO4B.mjs} +1 -1
  140. package/dist/preview-engine/renderers-6ROVFDIN.mjs +1 -0
  141. package/dist/preview-engine/{renderers-CUMVIVHI.mjs → renderers-6YVZUQOH.mjs} +1 -1
  142. package/dist/preview-engine/renderers-7CAHX35U.mjs +1 -0
  143. package/dist/preview-engine/renderers-A4RVLPMG.mjs +1 -0
  144. package/dist/preview-engine/renderers-A53P4J6O.mjs +1 -0
  145. package/dist/preview-engine/{renderers-WEYAHOBK.mjs → renderers-ACUJMDEK.mjs} +1 -1
  146. package/dist/preview-engine/renderers-AFJ3373L.mjs +1 -0
  147. package/dist/preview-engine/renderers-ATFWTA3U.mjs +1 -0
  148. package/dist/preview-engine/{renderers-TSBV4KPE.mjs → renderers-BOBVXYAA.mjs} +1 -1
  149. package/dist/preview-engine/renderers-BPYJXHBU.mjs +1 -0
  150. package/dist/preview-engine/{renderers-NCGH2WWJ.mjs → renderers-C7SI3NIE.mjs} +1 -1
  151. package/dist/preview-engine/{renderers-FSI5KNGZ.mjs → renderers-CCRZNGVK.mjs} +1 -1
  152. package/dist/preview-engine/{renderers-NUAI4TO5.mjs → renderers-CYJAVWHT.mjs} +1 -1
  153. package/dist/preview-engine/renderers-D3ZF7FXT.mjs +1 -0
  154. package/dist/preview-engine/renderers-D7YN6B4B.mjs +1 -0
  155. package/dist/preview-engine/renderers-DBLASKF5.mjs +1 -0
  156. package/dist/preview-engine/renderers-DC5ZYYHM.mjs +1 -0
  157. package/dist/preview-engine/{renderers-5UZ3YFBD.mjs → renderers-EN7LXJLG.mjs} +1 -1
  158. package/dist/preview-engine/{renderers-L6YDX6GS.mjs → renderers-FY2HOQCS.mjs} +1 -1
  159. package/dist/preview-engine/{renderers-6Z7DWAPH.mjs → renderers-GQM3KMV3.mjs} +1 -1
  160. package/dist/preview-engine/{renderers-QA2HKUJJ.mjs → renderers-H6PBHEYU.mjs} +1 -1
  161. package/dist/preview-engine/{renderers-MD3PRFZL.mjs → renderers-HKLCB4U6.mjs} +1 -1
  162. package/dist/preview-engine/{renderers-TGJSOKDY.mjs → renderers-HSFQIILN.mjs} +1 -1
  163. package/dist/preview-engine/{renderers-7C5RA3R5.mjs → renderers-I6QKZ7CH.mjs} +1 -1
  164. package/dist/preview-engine/renderers-J6ZEXW5L.mjs +1 -0
  165. package/dist/preview-engine/renderers-JV4MF46Q.mjs +1 -0
  166. package/dist/preview-engine/{renderers-SEIAUKJF.mjs → renderers-KCGK33Y2.mjs} +1 -1
  167. package/dist/preview-engine/renderers-KQKH4ZIX.mjs +1 -0
  168. package/dist/preview-engine/renderers-MEITHN4N.mjs +1 -0
  169. package/dist/preview-engine/renderers-MN3HSBTJ.mjs +1 -0
  170. package/dist/preview-engine/renderers-NTG3QGNH.mjs +1 -0
  171. package/dist/preview-engine/{renderers-KC6ZSKCW.mjs → renderers-OGOW3NA4.mjs} +1 -1
  172. package/dist/preview-engine/renderers-OU4SFMB2.mjs +1 -0
  173. package/dist/preview-engine/{renderers-ENMY4DKF.mjs → renderers-P2HORBZ6.mjs} +1 -1
  174. package/dist/preview-engine/renderers-P6TIBJIG.mjs +1 -0
  175. package/dist/preview-engine/renderers-POJWQ7L3.mjs +1 -0
  176. package/dist/preview-engine/renderers-RJ7S6VHD.mjs +1 -0
  177. package/dist/preview-engine/renderers-RJJAJZYN.mjs +1 -0
  178. package/dist/preview-engine/renderers-UEQ733VK.mjs +1 -0
  179. package/dist/preview-engine/{renderers-T74CQCEN.mjs → renderers-UG2C3C7T.mjs} +1 -1
  180. package/dist/preview-engine/renderers-ULO2AW2U.mjs +1 -0
  181. package/dist/preview-engine/renderers-UPVHGHCK.mjs +1 -0
  182. package/dist/preview-engine/renderers-UZHSNNIM.mjs +1 -0
  183. package/dist/preview-engine/renderers-V5KWZL2C.mjs +1 -0
  184. package/dist/preview-engine/{renderers-5KANN7XF.mjs → renderers-VIGZYJYX.mjs} +1 -1
  185. package/dist/preview-engine/{renderers-4F7WLQD5.mjs → renderers-VVP5WQOY.mjs} +1 -1
  186. package/dist/preview-engine/{renderers-7XHO6M3B.mjs → renderers-WL372W36.mjs} +1 -1
  187. package/dist/preview-engine/{renderers-U4M7ZCV4.mjs → renderers-WSABL3QO.mjs} +1 -1
  188. package/dist/preview-engine/{renderers-Y22VSOXF.mjs → renderers-X6CORAES.mjs} +1 -1
  189. package/dist/preview-engine/renderers-YMXKYOHQ.mjs +1 -0
  190. package/dist/preview-engine/renderers-YWDAZ2NZ.mjs +1 -0
  191. package/dist/preview-engine/signals.mjs +1 -1
  192. package/dist/{program-xjIwjKb6.mjs → program-Bc860ko5.mjs} +4 -4
  193. package/dist/{program-xjIwjKb6.mjs.map → program-Bc860ko5.mjs.map} +1 -1
  194. package/dist/registry/focus-zoom.json +9 -2
  195. package/dist/renderer/index.d.mts +4 -4
  196. package/dist/renderer/index.mjs +4 -4
  197. package/dist/renderer--Ymc_4XJ.mjs +5 -0
  198. package/dist/{renderer-Dee8ksIV.mjs → renderer-1uoKiILq.mjs} +3 -3
  199. package/dist/{renderer-Dee8ksIV.mjs.map → renderer-1uoKiILq.mjs.map} +1 -1
  200. package/dist/{renderer-CIB5L_C4.mjs → renderer-4ZUv3X1I.mjs} +5 -5
  201. package/dist/{renderer-CIB5L_C4.mjs.map → renderer-4ZUv3X1I.mjs.map} +1 -1
  202. package/dist/{renderer-BPYIqtNg.mjs → renderer-50JEMaVo.mjs} +5 -5
  203. package/dist/{renderer-BPYIqtNg.mjs.map → renderer-50JEMaVo.mjs.map} +1 -1
  204. package/dist/{renderer-BdbI_u9w.mjs → renderer-7ow5Acsg.mjs} +3 -3
  205. package/dist/{renderer-BdbI_u9w.mjs.map → renderer-7ow5Acsg.mjs.map} +1 -1
  206. package/dist/{renderer-B-inTgyb.d.mts → renderer-88C3QpKL.d.mts} +2 -2
  207. package/dist/{renderer-B-inTgyb.d.mts.map → renderer-88C3QpKL.d.mts.map} +1 -1
  208. package/dist/{renderer-DH7l5WFr.mjs → renderer-B-CMRUag.mjs} +4 -4
  209. package/dist/{renderer-DH7l5WFr.mjs.map → renderer-B-CMRUag.mjs.map} +1 -1
  210. package/dist/renderer-B-OdV-eq.mjs +5 -0
  211. package/dist/{renderer-NTCk1Srf.mjs → renderer-B1LD29TV.mjs} +3 -3
  212. package/dist/{renderer-NTCk1Srf.mjs.map → renderer-B1LD29TV.mjs.map} +1 -1
  213. package/dist/{renderer-ESkPj6pk.mjs → renderer-B1esRxGy.mjs} +4 -4
  214. package/dist/{renderer-ESkPj6pk.mjs.map → renderer-B1esRxGy.mjs.map} +1 -1
  215. package/dist/{renderer-g7fF2AYk.mjs → renderer-B3Dme2es.mjs} +5 -5
  216. package/dist/{renderer-g7fF2AYk.mjs.map → renderer-B3Dme2es.mjs.map} +1 -1
  217. package/dist/renderer-B65fwoA2.mjs +5 -0
  218. package/dist/{renderer-CDVb4OfJ.mjs → renderer-B6Oeahe_.mjs} +5 -5
  219. package/dist/{renderer-CDVb4OfJ.mjs.map → renderer-B6Oeahe_.mjs.map} +1 -1
  220. package/dist/renderer-B92Ahkcv.mjs +5 -0
  221. package/dist/renderer-B9z2AK31.mjs +5 -0
  222. package/dist/{renderer-BZmmekE8.mjs → renderer-BDZC3o3N.mjs} +4 -4
  223. package/dist/{renderer-BZmmekE8.mjs.map → renderer-BDZC3o3N.mjs.map} +1 -1
  224. package/dist/renderer-BIF3Dg3Z.mjs +5 -0
  225. package/dist/{renderer-C06U4c9k.mjs → renderer-BJ-7WRgO.mjs} +3 -3
  226. package/dist/{renderer-C06U4c9k.mjs.map → renderer-BJ-7WRgO.mjs.map} +1 -1
  227. package/dist/renderer-BJUVaIAT.mjs +5 -0
  228. package/dist/renderer-BKRDMbI-.mjs +5 -0
  229. package/dist/{renderer-HnSiwSW8.mjs → renderer-BNHcwxw9.mjs} +4 -4
  230. package/dist/{renderer-HnSiwSW8.mjs.map → renderer-BNHcwxw9.mjs.map} +1 -1
  231. package/dist/{renderer-B78W9uad.mjs → renderer-BNJ6Jk7-.mjs} +4 -4
  232. package/dist/{renderer-B78W9uad.mjs.map → renderer-BNJ6Jk7-.mjs.map} +1 -1
  233. package/dist/{renderer-BVql26Ay.mjs → renderer-BOrMBwQS.mjs} +2 -2
  234. package/dist/{renderer-BVql26Ay.mjs.map → renderer-BOrMBwQS.mjs.map} +1 -1
  235. package/dist/{renderer-Cl8r1LJe.mjs → renderer-BQetXCcZ.mjs} +4 -4
  236. package/dist/{renderer-Cl8r1LJe.mjs.map → renderer-BQetXCcZ.mjs.map} +1 -1
  237. package/dist/{renderer-C4yKI8MT.mjs → renderer-BSELd5vU.mjs} +3 -3
  238. package/dist/{renderer-C4yKI8MT.mjs.map → renderer-BSELd5vU.mjs.map} +1 -1
  239. package/dist/renderer-BSwhyVWa.mjs +5 -0
  240. package/dist/{renderer-CcJyD9Q5.mjs → renderer-BURhYcpA.mjs} +4 -4
  241. package/dist/{renderer-CcJyD9Q5.mjs.map → renderer-BURhYcpA.mjs.map} +1 -1
  242. package/dist/renderer-BUqSZn2X.mjs +5 -0
  243. package/dist/{renderer-DoPEPlbG.d.mts → renderer-BVKOQarx.d.mts} +3 -3
  244. package/dist/{renderer-DoPEPlbG.d.mts.map → renderer-BVKOQarx.d.mts.map} +1 -1
  245. package/dist/{renderer-CwVbHki6.mjs → renderer-BaIJIfJ6.mjs} +5 -5
  246. package/dist/{renderer-CwVbHki6.mjs.map → renderer-BaIJIfJ6.mjs.map} +1 -1
  247. package/dist/renderer-BbmvjqK9.mjs +3 -0
  248. package/dist/{renderer-Be5hfwSd.mjs → renderer-Bbxh4N8Y.mjs} +425 -115
  249. package/dist/renderer-Bbxh4N8Y.mjs.map +1 -0
  250. package/dist/{renderer-BG6bkKtY.mjs → renderer-Bf4-N7k7.mjs} +5 -5
  251. package/dist/{renderer-BG6bkKtY.mjs.map → renderer-Bf4-N7k7.mjs.map} +1 -1
  252. package/dist/{renderer-CpedZNEG.mjs → renderer-BhsrlGKp.mjs} +3 -3
  253. package/dist/{renderer-CpedZNEG.mjs.map → renderer-BhsrlGKp.mjs.map} +1 -1
  254. package/dist/{renderer-AUK_ZS3p.mjs → renderer-Bo7shNdU.mjs} +4 -4
  255. package/dist/{renderer-AUK_ZS3p.mjs.map → renderer-Bo7shNdU.mjs.map} +1 -1
  256. package/dist/renderer-Bpe4k_x6.mjs +5 -0
  257. package/dist/{renderer-BfbSvElt.mjs → renderer-BwrfKKqw.mjs} +4 -4
  258. package/dist/{renderer-BfbSvElt.mjs.map → renderer-BwrfKKqw.mjs.map} +1 -1
  259. package/dist/{renderer-CWLF6cAz.mjs → renderer-Bx14Wnxl.mjs} +3 -3
  260. package/dist/{renderer-CWLF6cAz.mjs.map → renderer-Bx14Wnxl.mjs.map} +1 -1
  261. package/dist/{renderer-CCFHnafT.mjs → renderer-Bxjb0HYU.mjs} +4 -4
  262. package/dist/{renderer-CCFHnafT.mjs.map → renderer-Bxjb0HYU.mjs.map} +1 -1
  263. package/dist/{renderer-5qJPGvVL.mjs → renderer-ByjaseAo.mjs} +5 -5
  264. package/dist/{renderer-5qJPGvVL.mjs.map → renderer-ByjaseAo.mjs.map} +1 -1
  265. package/dist/renderer-C1NjG0CJ.mjs +5 -0
  266. package/dist/renderer-C7Puyst9.mjs +5 -0
  267. package/dist/{renderer-CYX9vKZ-.mjs → renderer-C9BSXyrq.mjs} +4 -4
  268. package/dist/{renderer-CYX9vKZ-.mjs.map → renderer-C9BSXyrq.mjs.map} +1 -1
  269. package/dist/{renderer-CUBDxuxh.mjs → renderer-CAWnCsQc.mjs} +5 -5
  270. package/dist/{renderer-CUBDxuxh.mjs.map → renderer-CAWnCsQc.mjs.map} +1 -1
  271. package/dist/renderer-CGA_7320.mjs +5 -0
  272. package/dist/{renderer-CEfVvcw-.mjs → renderer-CLAvn9c6.mjs} +4 -4
  273. package/dist/{renderer-CEfVvcw-.mjs.map → renderer-CLAvn9c6.mjs.map} +1 -1
  274. package/dist/renderer-CLnFkXO7.mjs +5 -0
  275. package/dist/renderer-CMQIT1Kh.mjs +5 -0
  276. package/dist/{renderer-BYqrtBvd.mjs → renderer-COcKhouz.mjs} +5 -5
  277. package/dist/{renderer-BYqrtBvd.mjs.map → renderer-COcKhouz.mjs.map} +1 -1
  278. package/dist/renderer-CQ1rwjIh.mjs +5 -0
  279. package/dist/{renderer-US4GsamT.mjs → renderer-CR0mDPYY.mjs} +3 -3
  280. package/dist/renderer-CT8h0boY.mjs +5 -0
  281. package/dist/{renderer-VhkubIx_.mjs → renderer-CU8v-LxD.mjs} +5 -5
  282. package/dist/{renderer-VhkubIx_.mjs.map → renderer-CU8v-LxD.mjs.map} +1 -1
  283. package/dist/renderer-Cb0lszt3.mjs +5 -0
  284. package/dist/renderer-Ci7oLye9.mjs +5 -0
  285. package/dist/renderer-CjqXB3CZ.mjs +5 -0
  286. package/dist/{renderer-DIEmK57T.mjs → renderer-Co6UFbZB.mjs} +5 -5
  287. package/dist/{renderer-DIEmK57T.mjs.map → renderer-Co6UFbZB.mjs.map} +1 -1
  288. package/dist/renderer-CqTV04zQ.mjs +5 -0
  289. package/dist/{renderer-xDV2cCkX.mjs → renderer-CrR8Mpxq.mjs} +5 -5
  290. package/dist/{renderer-xDV2cCkX.mjs.map → renderer-CrR8Mpxq.mjs.map} +1 -1
  291. package/dist/renderer-CtWeRtHK.mjs +5 -0
  292. package/dist/{renderer-BRWjLiHX.mjs → renderer-CxGx1Lhi.mjs} +3 -3
  293. package/dist/{renderer-BRWjLiHX.mjs.map → renderer-CxGx1Lhi.mjs.map} +1 -1
  294. package/dist/{renderer-BQOeeXTr.mjs → renderer-Cz-n883J.mjs} +5 -5
  295. package/dist/{renderer-BQOeeXTr.mjs.map → renderer-Cz-n883J.mjs.map} +1 -1
  296. package/dist/renderer-CzolnwCo.mjs +5 -0
  297. package/dist/{renderer-sPI7aY6c.mjs → renderer-D-QVGphn.mjs} +4 -4
  298. package/dist/{renderer-sPI7aY6c.mjs.map → renderer-D-QVGphn.mjs.map} +1 -1
  299. package/dist/{renderer-C3tVrzyT.mjs → renderer-D06HxSXO.mjs} +3 -3
  300. package/dist/{renderer-CXLugAe8.mjs → renderer-D0aAZHC7.mjs} +4 -4
  301. package/dist/{renderer-CXLugAe8.mjs.map → renderer-D0aAZHC7.mjs.map} +1 -1
  302. package/dist/{renderer-mLlgfM7X.mjs → renderer-D4f8f66C.mjs} +4 -4
  303. package/dist/{renderer-mLlgfM7X.mjs.map → renderer-D4f8f66C.mjs.map} +1 -1
  304. package/dist/renderer-D6qhcx_C.mjs +5 -0
  305. package/dist/{renderer-C7MAqpIS.mjs → renderer-DAn9xiQT.mjs} +4 -4
  306. package/dist/{renderer-C7MAqpIS.mjs.map → renderer-DAn9xiQT.mjs.map} +1 -1
  307. package/dist/renderer-DDfEf0jt.mjs +5 -0
  308. package/dist/renderer-DDpa8ztp.mjs +5 -0
  309. package/dist/{renderer-DW7hbluw.mjs → renderer-DE9Jik9K.mjs} +3 -3
  310. package/dist/{renderer-DW7hbluw.mjs.map → renderer-DE9Jik9K.mjs.map} +1 -1
  311. package/dist/{renderer-C6st34I6.mjs → renderer-DFJWPqOJ.mjs} +3 -3
  312. package/dist/{renderer-C6st34I6.mjs.map → renderer-DFJWPqOJ.mjs.map} +1 -1
  313. package/dist/{renderer-D2TTDcgh.mjs → renderer-DLPhfwbR.mjs} +3 -3
  314. package/dist/{renderer-D2TTDcgh.mjs.map → renderer-DLPhfwbR.mjs.map} +1 -1
  315. package/dist/{renderer-D1VsqFf4.mjs → renderer-DOkbn1ot.mjs} +5 -5
  316. package/dist/{renderer-D1VsqFf4.mjs.map → renderer-DOkbn1ot.mjs.map} +1 -1
  317. package/dist/{renderer-BWMzjSgf.mjs → renderer-DaXQgGg3.mjs} +5 -5
  318. package/dist/{renderer-BWMzjSgf.mjs.map → renderer-DaXQgGg3.mjs.map} +1 -1
  319. package/dist/renderer-DbQBqzmx.mjs +5 -0
  320. package/dist/{renderer-DrWeb39d.mjs → renderer-DcvjSolU.mjs} +1 -1
  321. package/dist/{renderer-DrWeb39d.mjs.map → renderer-DcvjSolU.mjs.map} +1 -1
  322. package/dist/renderer-DfUcwMKa.mjs +5 -0
  323. package/dist/renderer-DgIjNANM.mjs +6 -0
  324. package/dist/{renderer-DOKHd37M.mjs → renderer-DgPn_SOC.mjs} +4 -4
  325. package/dist/{renderer-DOKHd37M.mjs.map → renderer-DgPn_SOC.mjs.map} +1 -1
  326. package/dist/{renderer-BgDLCCuq.mjs → renderer-DkqZmfm8.mjs} +5 -5
  327. package/dist/{renderer-BgDLCCuq.mjs.map → renderer-DkqZmfm8.mjs.map} +1 -1
  328. package/dist/{renderer-q4zMFfnY.mjs → renderer-Dpl6poqD.mjs} +2 -2
  329. package/dist/{renderer-q4zMFfnY.mjs.map → renderer-Dpl6poqD.mjs.map} +1 -1
  330. package/dist/renderer-Dsh6Tgu0.mjs +3 -0
  331. package/dist/renderer-DuIwR9GT.mjs +5 -0
  332. package/dist/renderer-Dv4u2c14.mjs +5 -0
  333. package/dist/{renderer-BJKzZwyn.mjs → renderer-DwK9jsER.mjs} +4 -4
  334. package/dist/{renderer-BJKzZwyn.mjs.map → renderer-DwK9jsER.mjs.map} +1 -1
  335. package/dist/{renderer-mQt-y49D.mjs → renderer-HDj9Zb-O.mjs} +5 -5
  336. package/dist/{renderer-mQt-y49D.mjs.map → renderer-HDj9Zb-O.mjs.map} +1 -1
  337. package/dist/renderer-IE1yu3lZ.mjs +5 -0
  338. package/dist/{renderer-B7kOF_Az.mjs → renderer-JHByuUNb.mjs} +3 -3
  339. package/dist/{renderer-B7kOF_Az.mjs.map → renderer-JHByuUNb.mjs.map} +1 -1
  340. package/dist/{renderer-B3IRvukr.mjs → renderer-KKk7myX1.mjs} +5 -5
  341. package/dist/{renderer-B3IRvukr.mjs.map → renderer-KKk7myX1.mjs.map} +1 -1
  342. package/dist/renderer-PY_wnEN0.mjs +5 -0
  343. package/dist/{renderer-BcO7LUla.mjs → renderer-Ros7XQg2.mjs} +3 -3
  344. package/dist/{renderer-BcO7LUla.mjs.map → renderer-Ros7XQg2.mjs.map} +1 -1
  345. package/dist/{renderer-bbaMOD4I.mjs → renderer-RvI3qRUI.mjs} +5 -5
  346. package/dist/{renderer-bbaMOD4I.mjs.map → renderer-RvI3qRUI.mjs.map} +1 -1
  347. package/dist/{renderer-CPTXJs0n.mjs → renderer-Rw87u1Cr.mjs} +6 -6
  348. package/dist/{renderer-CPTXJs0n.mjs.map → renderer-Rw87u1Cr.mjs.map} +1 -1
  349. package/dist/{renderer-Du-GnKLb.mjs → renderer-TKZCA0B9.mjs} +9 -9
  350. package/dist/{renderer-Du-GnKLb.mjs.map → renderer-TKZCA0B9.mjs.map} +1 -1
  351. package/dist/{renderer-C_2UDMEG.mjs → renderer-V4dhrf_h.mjs} +6 -6
  352. package/dist/{renderer-C_2UDMEG.mjs.map → renderer-V4dhrf_h.mjs.map} +1 -1
  353. package/dist/{renderer-eT7Gp7FS.mjs → renderer-_9gbYS-3.mjs} +5 -5
  354. package/dist/{renderer-eT7Gp7FS.mjs.map → renderer-_9gbYS-3.mjs.map} +1 -1
  355. package/dist/{renderer-IQ97z2rw.mjs → renderer-celhuAL7.mjs} +3 -3
  356. package/dist/{renderer-IQ97z2rw.mjs.map → renderer-celhuAL7.mjs.map} +1 -1
  357. package/dist/{renderer-DIqkhsLI.mjs → renderer-eMCTAa9e.mjs} +4 -4
  358. package/dist/{renderer-DIqkhsLI.mjs.map → renderer-eMCTAa9e.mjs.map} +1 -1
  359. package/dist/{renderer-B6TjJi1g.mjs → renderer-fs8f1QeE.mjs} +5 -5
  360. package/dist/{renderer-B6TjJi1g.mjs.map → renderer-fs8f1QeE.mjs.map} +1 -1
  361. package/dist/{renderer-BJQt0RiZ.mjs → renderer-fwKnV9zs.mjs} +5 -5
  362. package/dist/{renderer-BJQt0RiZ.mjs.map → renderer-fwKnV9zs.mjs.map} +1 -1
  363. package/dist/{renderer-F1D9ZJ8I.mjs → renderer-g_1t2je9.mjs} +3 -3
  364. package/dist/renderer-gv24VyzO.mjs +5 -0
  365. package/dist/{renderer-C3Iev6zu.mjs → renderer-h62QaJYz.mjs} +4 -4
  366. package/dist/{renderer-C3Iev6zu.mjs.map → renderer-h62QaJYz.mjs.map} +1 -1
  367. package/dist/{renderer-BNbMi9CI.mjs → renderer-jnAIhWn_.mjs} +5 -5
  368. package/dist/{renderer-BNbMi9CI.mjs.map → renderer-jnAIhWn_.mjs.map} +1 -1
  369. package/dist/{renderer-CyCtm0UV.mjs → renderer-lHNTgiOM.mjs} +3 -3
  370. package/dist/{renderer-CyCtm0UV.mjs.map → renderer-lHNTgiOM.mjs.map} +1 -1
  371. package/dist/renderer-nN6lPZf9.mjs +5 -0
  372. package/dist/{renderer-Dat8opUZ.mjs → renderer-o68mVeyk.mjs} +4 -4
  373. package/dist/{renderer-Dat8opUZ.mjs.map → renderer-o68mVeyk.mjs.map} +1 -1
  374. package/dist/{renderer-Dss7T71q.mjs → renderer-pNmI-A9o.mjs} +5 -5
  375. package/dist/{renderer-Dss7T71q.mjs.map → renderer-pNmI-A9o.mjs.map} +1 -1
  376. package/dist/{renderer-CbhnJi_8.mjs → renderer-q7q6k_cD.mjs} +4 -4
  377. package/dist/{renderer-CbhnJi_8.mjs.map → renderer-q7q6k_cD.mjs.map} +1 -1
  378. package/dist/{renderer-OsQRvOle.mjs → renderer-riIFosX6.mjs} +5 -5
  379. package/dist/{renderer-OsQRvOle.mjs.map → renderer-riIFosX6.mjs.map} +1 -1
  380. package/dist/{renderer-BMP_lYMk.mjs → renderer-sfqZK6L5.mjs} +4 -4
  381. package/dist/{renderer-BMP_lYMk.mjs.map → renderer-sfqZK6L5.mjs.map} +1 -1
  382. package/dist/{renderer-DEQeONTd.mjs → renderer-ynFRJh7G.mjs} +3 -3
  383. package/dist/{renderers-CP8CFWDs-BH1gUTYa.mjs → renderers-CP8CFWDs-DRoslK4F.mjs} +4 -4
  384. package/dist/{renderers-CP8CFWDs-BH1gUTYa.mjs.map → renderers-CP8CFWDs-DRoslK4F.mjs.map} +1 -1
  385. package/dist/sam/index.d.mts +3 -3
  386. package/dist/sam/index.mjs +1 -1
  387. package/dist/signals/index.d.mts +8 -8
  388. package/dist/signals/index.mjs +8 -8
  389. package/dist/{signals-gOd0Ui9B.mjs → signals-BfJ1aqpT.mjs} +4 -4
  390. package/dist/{signals-gOd0Ui9B.mjs.map → signals-BfJ1aqpT.mjs.map} +1 -1
  391. package/dist/{src-BU1VOWSk.mjs → src-BYp6r-cS.mjs} +11 -11
  392. package/dist/{src-BU1VOWSk.mjs.map → src-BYp6r-cS.mjs.map} +1 -1
  393. package/dist/{src-Bnr8DUC--DzkRGA62.mjs → src-Bnr8DUC--BRDqRF6I.mjs} +3 -3
  394. package/dist/{src-Bnr8DUC--DzkRGA62.mjs.map → src-Bnr8DUC--BRDqRF6I.mjs.map} +1 -1
  395. package/package.json +65 -59
  396. package/dist/audio-B6RmYOPe.mjs.map +0 -1
  397. package/dist/audio-D6tBMbHh.d.mts +0 -38
  398. package/dist/audio-D6tBMbHh.d.mts.map +0 -1
  399. package/dist/dist-D12-a3-x.mjs.map +0 -1
  400. package/dist/index-B9Lm1x8i.d.mts.map +0 -1
  401. package/dist/index-Bzo1uj8h.d.mts.map +0 -1
  402. package/dist/index-V0ZQ4JN6.d.mts.map +0 -1
  403. package/dist/preview-engine/chunk-S2ABWY5G.mjs +0 -1
  404. package/dist/preview-engine/renderers-3BOQOUEU.mjs +0 -1
  405. package/dist/preview-engine/renderers-3M2FESR2.mjs +0 -1
  406. package/dist/preview-engine/renderers-5XRKZHVT.mjs +0 -1
  407. package/dist/preview-engine/renderers-6LHIWKMZ.mjs +0 -1
  408. package/dist/preview-engine/renderers-A43VCJ7X.mjs +0 -1
  409. package/dist/preview-engine/renderers-AKY464RY.mjs +0 -1
  410. package/dist/preview-engine/renderers-C5UO6PL5.mjs +0 -1
  411. package/dist/preview-engine/renderers-C64QSZO4.mjs +0 -1
  412. package/dist/preview-engine/renderers-CIRCR6NG.mjs +0 -1
  413. package/dist/preview-engine/renderers-CIWOPETY.mjs +0 -1
  414. package/dist/preview-engine/renderers-CZEZCELP.mjs +0 -1
  415. package/dist/preview-engine/renderers-FSQMWHQM.mjs +0 -1
  416. package/dist/preview-engine/renderers-FZEW5C23.mjs +0 -1
  417. package/dist/preview-engine/renderers-HCET2IML.mjs +0 -1
  418. package/dist/preview-engine/renderers-IUOOC6K7.mjs +0 -1
  419. package/dist/preview-engine/renderers-KYYJLVIJ.mjs +0 -1
  420. package/dist/preview-engine/renderers-L4GE7WV3.mjs +0 -1
  421. package/dist/preview-engine/renderers-LRAFWKCO.mjs +0 -1
  422. package/dist/preview-engine/renderers-LU3XZWEB.mjs +0 -1
  423. package/dist/preview-engine/renderers-ND2WV4K3.mjs +0 -1
  424. package/dist/preview-engine/renderers-NJ5CWVVH.mjs +0 -1
  425. package/dist/preview-engine/renderers-NKXYPR3V.mjs +0 -1
  426. package/dist/preview-engine/renderers-NWR66CGK.mjs +0 -1
  427. package/dist/preview-engine/renderers-O22WTBRM.mjs +0 -1
  428. package/dist/preview-engine/renderers-PBBA7LQB.mjs +0 -1
  429. package/dist/preview-engine/renderers-Q6LJRZ7R.mjs +0 -1
  430. package/dist/preview-engine/renderers-RMEACSRL.mjs +0 -1
  431. package/dist/preview-engine/renderers-SP42LCSI.mjs +0 -1
  432. package/dist/preview-engine/renderers-T7SZA3BX.mjs +0 -1
  433. package/dist/preview-engine/renderers-VADTDAHD.mjs +0 -1
  434. package/dist/preview-engine/renderers-VNNWI5C3.mjs +0 -1
  435. package/dist/preview-engine/renderers-WZ75MLP3.mjs +0 -1
  436. package/dist/preview-engine/renderers-XB5R4UQA.mjs +0 -1
  437. package/dist/preview-engine/renderers-YBIUZDGQ.mjs +0 -1
  438. package/dist/preview-engine/renderers-YESJR4O7.mjs +0 -1
  439. package/dist/preview-engine/renderers-YKSRZRRT.mjs +0 -1
  440. package/dist/renderer-129U3pc9.mjs +0 -5
  441. package/dist/renderer-2phFTFxQ.mjs +0 -5
  442. package/dist/renderer-9muKpDeE.mjs +0 -5
  443. package/dist/renderer-B5Dhv6j9.mjs +0 -5
  444. package/dist/renderer-BBUgCS3C.mjs +0 -5
  445. package/dist/renderer-BKXM28Mx.mjs +0 -5
  446. package/dist/renderer-BKqm6xdf.mjs +0 -5
  447. package/dist/renderer-BMfMMf0R.mjs +0 -5
  448. package/dist/renderer-BPsjEnnl.mjs +0 -5
  449. package/dist/renderer-Be5hfwSd.mjs.map +0 -1
  450. package/dist/renderer-Bofr6f88.mjs +0 -6
  451. package/dist/renderer-BqoGcujR.mjs +0 -5
  452. package/dist/renderer-BvuBt2aH.mjs +0 -5
  453. package/dist/renderer-BxTgXHu1.mjs +0 -5
  454. package/dist/renderer-Bz2Rrz60.mjs +0 -5
  455. package/dist/renderer-CBjG8rjE.mjs +0 -5
  456. package/dist/renderer-CS2zyPyZ.mjs +0 -5
  457. package/dist/renderer-CXnbl_jR.mjs +0 -5
  458. package/dist/renderer-CaF9vod_.mjs +0 -5
  459. package/dist/renderer-CbSBH3lp.mjs +0 -5
  460. package/dist/renderer-CdjuGRbO.mjs +0 -5
  461. package/dist/renderer-CoLbxC13.mjs +0 -5
  462. package/dist/renderer-Cr9G0dXB.mjs +0 -5
  463. package/dist/renderer-D63l6_UC.mjs +0 -5
  464. package/dist/renderer-DCJqnzER.mjs +0 -5
  465. package/dist/renderer-DFBOR5J3.mjs +0 -5
  466. package/dist/renderer-DGAZSzw6.mjs +0 -5
  467. package/dist/renderer-DPLGk1Qk.mjs +0 -5
  468. package/dist/renderer-DTCUzByS.mjs +0 -5
  469. package/dist/renderer-DdGahYi1.mjs +0 -5
  470. package/dist/renderer-DhL4nNPk.mjs +0 -5
  471. package/dist/renderer-DkyTbiVz.mjs +0 -3
  472. package/dist/renderer-DnAZweRX.mjs +0 -5
  473. package/dist/renderer-DpisVnT2.mjs +0 -5
  474. package/dist/renderer-Ds7pAKnE.mjs +0 -3
  475. package/dist/renderer-DxZD5B54.mjs +0 -5
  476. package/dist/renderer-PMHOnbnA.mjs +0 -5
  477. package/dist/renderer-STufNpMx.mjs +0 -5
  478. package/dist/renderer-SdrgfCxH.mjs +0 -5
  479. /package/dist/{chunk-D8S17ehY.mjs → chunk-W71TSjRM.mjs} +0 -0
  480. /package/dist/{renderer-Cputd36d.mjs → renderer-B6rZUBwE.mjs} +0 -0
@@ -1,2 +1,2 @@
1
- import { a as RegisteredFont, i as RegisterFontOptions, n as MeasureTextOptions, o as TextMetrics, r as MeasuredGlyph, t as FontManager } from "../index-BuYtrhzL.mjs";
1
+ import { a as RegisteredFont, i as RegisterFontOptions, n as MeasureTextOptions, o as TextMetrics, r as MeasuredGlyph, t as FontManager } from "../index-BW0Q1ygn.mjs";
2
2
  export { FontManager, MeasureTextOptions, MeasuredGlyph, RegisterFontOptions, RegisteredFont, TextMetrics };
@@ -1,5 +1,5 @@
1
- import "../chunk-D8S17ehY.mjs";
2
- import "../dist-D12-a3-x.mjs";
3
- import { t as FontManager } from "../fonts-B0U2KO5I.mjs";
1
+ import "../chunk-W71TSjRM.mjs";
2
+ import "../dist-CWLLnigL.mjs";
3
+ import { t as FontManager } from "../fonts-gPbGbShD.mjs";
4
4
 
5
5
  export { FontManager };
@@ -1,4 +1,4 @@
1
- import { et as registerHeadlessFont, m as SlugGeometry, p as SlugFontCache, rt as setRegisteredFontSource } from "./dist-D12-a3-x.mjs";
1
+ import { et as registerHeadlessFont, m as SlugGeometry, p as SlugFontCache, rt as setRegisteredFontSource } from "./dist-CWLLnigL.mjs";
2
2
  import path from "node:path";
3
3
  import * as fontkit from "fontkit";
4
4
  import fs from "node:fs/promises";
@@ -261,4 +261,4 @@ var FontManager = class FontManager {
261
261
 
262
262
  //#endregion
263
263
  export { FontManager as t };
264
- //# sourceMappingURL=fonts-B0U2KO5I.mjs.map
264
+ //# sourceMappingURL=fonts-gPbGbShD.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"fonts-B0U2KO5I.mjs","names":[],"sources":["../src/fonts/manager.ts"],"sourcesContent":["import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport {\n\tregisterHeadlessFont,\n\tSlugFontCache,\n\tSlugGeometry,\n\tsetRegisteredFontSource,\n} from \"@framefields/webgpu-renderers\";\nimport * as fontkit from \"fontkit\";\n\nexport interface RegisterFontOptions {\n\tfamily?: string;\n\tsource: string | Uint8Array;\n\tweight?: number | string;\n\tstyle?: \"normal\" | \"italic\" | \"oblique\";\n}\n\nexport interface RegisteredFont {\n\tfamily: string;\n\tsource: string | Uint8Array;\n\tfilePath?: string;\n\tformat: \"truetype\" | \"opentype\";\n\tpostscriptName?: string;\n\tunitsPerEm?: number;\n\tweight?: number | string;\n\tstyle?: string;\n}\n\ninterface ResolvedSource {\n\tbuffer: Uint8Array;\n\tfilePath?: string;\n}\n\nconst SFNT_TRUETYPE_1 = 0x00010000;\nconst SFNT_TRUETYPE_TRUE = 0x74727565; // 'true'\nconst SFNT_TRUETYPE_TYP1 = 0x74797031; // 'typ1'\nconst SFNT_OPENTYPE_CFF = 0x4f54544f; // 'OTTO'\nconst SFNT_COLLECTION = 0x74746366; // 'ttcf'\n\nfunction validateFontBinaryHeader(\n\tbytes: Uint8Array,\n\tsourceLabel: string,\n): \"truetype\" | \"opentype\" {\n\tif (bytes.length < 12) {\n\t\tthrow new Error(\n\t\t\t`Invalid font binary for \"${sourceLabel}\": File size (${bytes.length} bytes) is too small to be a valid TrueType or OpenType font.`,\n\t\t);\n\t}\n\n\tconst tag =\n\t\t((bytes[0] ?? 0) << 24) |\n\t\t((bytes[1] ?? 0) << 16) |\n\t\t((bytes[2] ?? 0) << 8) |\n\t\t(bytes[3] ?? 0);\n\n\tif (\n\t\ttag === SFNT_TRUETYPE_1 ||\n\t\ttag === SFNT_TRUETYPE_TRUE ||\n\t\ttag === SFNT_TRUETYPE_TYP1 ||\n\t\ttag === SFNT_COLLECTION\n\t) {\n\t\treturn \"truetype\";\n\t}\n\n\tif (tag === SFNT_OPENTYPE_CFF) {\n\t\treturn \"opentype\";\n\t}\n\n\tconst hexTag = (tag >>> 0).toString(16).padStart(8, \"0\");\n\tthrow new Error(\n\t\t`Invalid font format for \"${sourceLabel}\": Expected a valid TrueType (.ttf) or OpenType (.otf) font binary. Found header tag: 0x${hexTag}.`,\n\t);\n}\n\nasync function resolveSourceBuffer(\n\tsource: string | Uint8Array,\n): Promise<ResolvedSource> {\n\tif (source instanceof Uint8Array) {\n\t\treturn { buffer: source };\n\t}\n\n\tif (typeof source !== \"string\") {\n\t\tthrow new TypeError(\n\t\t\t`Font source must be a file path string or Uint8Array, received: ${typeof source}`,\n\t\t);\n\t}\n\n\tlet cleanPath = source;\n\tif (cleanPath.startsWith(\"http://\") || cleanPath.startsWith(\"https://\")) {\n\t\tconst res = await fetch(cleanPath);\n\t\tif (!res.ok) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to download font from \"${cleanPath}\": HTTP ${res.status} ${res.statusText}`,\n\t\t\t);\n\t\t}\n\t\tconst arrayBuffer = await res.arrayBuffer();\n\t\treturn {\n\t\t\tbuffer: new Uint8Array(arrayBuffer),\n\t\t\tfilePath: cleanPath,\n\t\t};\n\t}\n\n\tif (cleanPath.startsWith(\"file://\")) {\n\t\ttry {\n\t\t\t// A URL path is percent-encoded (\"My%20Film\"); files aren't. On\n\t\t\t// Windows \"/C:/…\" loses its leading slash.\n\t\t\tcleanPath = decodeURIComponent(new URL(cleanPath).pathname).replace(\n\t\t\t\t/^\\/([A-Za-z]:)/,\n\t\t\t\t\"$1\",\n\t\t\t);\n\t\t} catch {\n\t\t\tcleanPath = cleanPath.replace(/^file:\\/\\//, \"\");\n\t\t}\n\t}\n\n\tconst candidates: string[] = [\n\t\tcleanPath,\n\t\tpath.resolve(process.cwd(), cleanPath),\n\t\tpath.resolve(process.cwd(), \"assets/fonts\", cleanPath),\n\t\tpath.resolve(process.cwd(), \"assets/fonts\", path.basename(cleanPath)),\n\t];\n\n\t// Upward traversal to locate fonts in parent monorepo roots\n\tlet currentDir = process.cwd();\n\tfor (let i = 0; i < 5; i++) {\n\t\tcandidates.push(path.resolve(currentDir, cleanPath));\n\t\tcandidates.push(\n\t\t\tpath.resolve(currentDir, \"assets/fonts\", path.basename(cleanPath)),\n\t\t);\n\t\tconst parent = path.dirname(currentDir);\n\t\tif (parent === currentDir) break;\n\t\tcurrentDir = parent;\n\t}\n\n\tlet resolvedPath: string | null = null;\n\tlet fileBuffer: Buffer | null = null;\n\n\tfor (const candidate of candidates) {\n\t\ttry {\n\t\t\tconst stat = await fs.stat(candidate);\n\t\t\tif (stat.isFile()) {\n\t\t\t\tresolvedPath = candidate;\n\t\t\t\tfileBuffer = await fs.readFile(candidate);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} catch {\n\t\t\t// Continue searching next candidate\n\t\t}\n\t}\n\n\tif (!resolvedPath || !fileBuffer) {\n\t\tthrow new Error(\n\t\t\t`Font file not found: \"${source}\". Checked candidate locations:\\n - ${candidates.join(\"\\n - \")}`,\n\t\t);\n\t}\n\n\treturn {\n\t\tbuffer: new Uint8Array(\n\t\t\tfileBuffer.buffer,\n\t\t\tfileBuffer.byteOffset,\n\t\t\tfileBuffer.byteLength,\n\t\t),\n\t\tfilePath: resolvedPath,\n\t};\n}\n\n/**\n * Central singleton manager for font registration, TTF validation, and compositor typography binding.\n */\nexport interface MeasureTextOptions {\n\tfontFamily: string;\n\tfontSize?: number;\n\tfontWeight?: string | number;\n\t/** Extra px between characters, as on `Layer.text`. */\n\tletterSpacing?: number;\n\t/** Multiplier of fontSize when < 10, else px. Default 1.2. */\n\tlineHeight?: number;\n\t/** Wrap width in px; omit for one line per `\\n`. */\n\twidth?: number;\n\talign?: \"left\" | \"center\" | \"right\";\n\t/** Paragraph base direction, as on `Layer.text`. Default \"auto\". */\n\tdirection?: \"ltr\" | \"rtl\" | \"auto\";\n}\n\nexport interface MeasuredGlyph {\n\tchar: string;\n\t/** Index into the string (code units), matching `text.slice`. */\n\tindex: number;\n\t/** Left edge of the glyph, relative to the text box. */\n\tx: number;\n\t/** Baseline-relative top of the line box. */\n\ty: number;\n\t/** Advance width in px. */\n\twidth: number;\n\tline: number;\n\t/** Part of a right-to-left run: reading continues to the left. */\n\trtl?: boolean;\n}\n\nexport interface TextMetrics {\n\twidth: number;\n\theight: number;\n\tlines: number;\n\t/** Line box height in px. */\n\tlineHeight: number;\n\tglyphs: MeasuredGlyph[];\n\t/**\n\t * X of a caret placed after `count` characters (0 = before the first),\n\t * relative to the text box. In right-to-left text the caret sits on the\n\t * left of the last character. Pair with a `.keys(\"text\", …)` reveal to make\n\t * a cursor follow typing exactly.\n\t */\n\tcaretX(count: number): number;\n\t/** Width of the first `count` characters (same as `caretX` on one line). */\n\twidthOf(count: number): number;\n}\n\nexport class FontManager {\n\tprivate static instance: FontManager | null = null;\n\tprivate readonly fonts = new Map<string, RegisteredFont>();\n\n\tprivate constructor() {}\n\n\t/**\n\t * Returns the singleton FontManager instance.\n\t */\n\tpublic static getInstance(): FontManager {\n\t\tif (!FontManager.instance) {\n\t\t\tFontManager.instance = new FontManager();\n\t\t}\n\t\treturn FontManager.instance;\n\t}\n\n\t/**\n\t * Registers a TrueType/OpenType font into the Framefields engine with validation.\n\t */\n\tpublic static async register(\n\t\toptionsOrFamilyOrSource: RegisterFontOptions | string,\n\t\tsource?: string | Uint8Array,\n\t): Promise<RegisteredFont> {\n\t\treturn FontManager.getInstance().register(optionsOrFamilyOrSource, source);\n\t}\n\n\t/**\n\t * Sets the color emoji font text draws emoji with, for the preview and the\n\t * export alike: a CBDT/CBLC bitmap font such as Noto Color Emoji, as a file\n\t * path, URL or bytes. framefields ships none; without one, exports draw\n\t * nothing for emoji.\n\t */\n\tpublic static async registerEmojiFont(\n\t\tsource: string | Uint8Array,\n\t): Promise<void> {\n\t\tconst { buffer, filePath } = await resolveSourceBuffer(source);\n\t\tconst label =\n\t\t\tfilePath ?? (typeof source === \"string\" ? source : \"Uint8Array\");\n\t\tvalidateFontBinaryHeader(buffer, label);\n\t\tSlugFontCache.setEmojiFont(buffer, filePath);\n\t}\n\n\t/** Whether a color emoji font is registered (or set to load from a path / URL). */\n\tpublic static hasEmojiFont(): boolean {\n\t\treturn SlugFontCache.hasEmojiFont();\n\t}\n\n\t/**\n\t * Measures text with the real font, exactly as `Layer.text` lays it out:\n\t * box size, line count, per-glyph positions and caret offsets. Use it to\n\t * size containers, place cursors, underline a word or center by ink\n\t * instead of guessing advances. The family must be registered first.\n\t *\n\t * ```ts\n\t * const m = FontManager.measure(\"Hello\", { fontFamily: \"Inter\", fontSize: 60 });\n\t * m.width; m.caretX(3); m.glyphs[1].x\n\t * ```\n\t */\n\tpublic static measure(\n\t\ttext: string,\n\t\toptions: MeasureTextOptions,\n\t): TextMetrics {\n\t\tconst fontSize = options.fontSize ?? 48;\n\t\tconst font = SlugFontCache.getFont(\n\t\t\toptions.fontFamily,\n\t\t\toptions.fontWeight,\n\t\t\tnull,\n\t\t\tundefined,\n\t\t\tfontSize,\n\t\t);\n\t\tif (!font) {\n\t\t\tthrow new Error(\n\t\t\t\t`FontManager.measure: font \"${options.fontFamily}\" is not registered. ` +\n\t\t\t\t\t\"Call `await FontManager.register(...)` first.\",\n\t\t\t);\n\t\t}\n\t\tconst lineHeight =\n\t\t\toptions.lineHeight !== undefined && options.lineHeight < 10\n\t\t\t\t? options.lineHeight * fontSize\n\t\t\t\t: (options.lineHeight ?? fontSize * 1.2);\n\t\tconst letterSpacing = options.letterSpacing ?? 0;\n\t\tconst { width, height, layout } = SlugGeometry.measure(\n\t\t\ttext,\n\t\t\tfont,\n\t\t\tfontSize,\n\t\t\tletterSpacing,\n\t\t\tlineHeight,\n\t\t\toptions.width,\n\t\t\tundefined,\n\t\t\toptions.direction,\n\t\t);\n\t\tconst scale = fontSize / font.unitsPerEm;\n\t\t// One entry per cluster (a letter with its marks, or a ligature), in\n\t\t// reading order; textIndex maps it back to the string.\n\t\tconst glyphs: MeasuredGlyph[] = [];\n\t\tconst seen = new Set<number>();\n\t\tlet cursor = 0;\n\t\tfor (const g of layout.glyphs) {\n\t\t\tlet index = g.textIndex;\n\t\t\tif (index === undefined) {\n\t\t\t\tconst at = text.indexOf(g.char, cursor);\n\t\t\t\tindex = at >= 0 ? at : cursor;\n\t\t\t}\n\t\t\tif (seen.has(index)) continue;\n\t\t\tseen.add(index);\n\t\t\tcursor = index + g.char.length;\n\t\t\tconst advance =\n\t\t\t\tg.clusterAdvance ?? g.cp.advanceWidth * (g.fontScale ?? scale);\n\t\t\tglyphs.push({\n\t\t\t\tchar: g.char,\n\t\t\t\tindex,\n\t\t\t\tx: g.clusterX ?? g.x,\n\t\t\t\ty: g.y,\n\t\t\t\twidth: advance + letterSpacing,\n\t\t\t\tline: g.lineIndex,\n\t\t\t\t...(g.rtl && { rtl: true }),\n\t\t\t});\n\t\t}\n\t\tconst caretX = (count: number): number => {\n\t\t\tif (count <= 0 || glyphs.length === 0) {\n\t\t\t\tconst first = glyphs[0];\n\t\t\t\tif (!first) return 0;\n\t\t\t\treturn first.rtl ? first.x + first.width - letterSpacing : first.x;\n\t\t\t}\n\t\t\tconst before = glyphs.filter((g) => g.index < count);\n\t\t\tconst last = before[before.length - 1];\n\t\t\tif (!last) return 0;\n\t\t\treturn last.rtl ? last.x : last.x + last.width - letterSpacing;\n\t\t};\n\t\treturn {\n\t\t\twidth,\n\t\t\theight,\n\t\t\tlines: layout.linesCount,\n\t\t\tlineHeight,\n\t\t\tglyphs,\n\t\t\tcaretX,\n\t\t\twidthOf: (count: number) => caretX(count) - (glyphs[0]?.x ?? 0),\n\t\t};\n\t}\n\n\t/**\n\t * Retrieves registered font metadata by family name.\n\t */\n\tpublic static get(family: string): RegisteredFont | undefined {\n\t\treturn FontManager.getInstance().get(family);\n\t}\n\n\t/**\n\t * Checks if a font family has been registered.\n\t */\n\tpublic static has(family: string): boolean {\n\t\treturn FontManager.getInstance().has(family);\n\t}\n\n\t/**\n\t * Returns all currently registered fonts.\n\t */\n\tpublic static getAll(): RegisteredFont[] {\n\t\treturn FontManager.getInstance().getAll();\n\t}\n\n\t/**\n\t * Returns relative or absolute file paths of all registered fonts for composition spec serialization.\n\t */\n\tpublic static getRegisteredFontPaths(): string[] {\n\t\treturn FontManager.getInstance().getRegisteredFontPaths();\n\t}\n\n\t/**\n\t * Clears all registered fonts from the manager.\n\t */\n\tpublic static clear(): void {\n\t\tFontManager.getInstance().clear();\n\t}\n\n\t/**\n\t * Instance registration method with format validation and Slug WebGPU cache population.\n\t */\n\tpublic async register(\n\t\toptionsOrFamilyOrSource: RegisterFontOptions | string,\n\t\tsource?: string | Uint8Array,\n\t): Promise<RegisteredFont> {\n\t\tlet family: string | undefined;\n\t\tlet rawSource: string | Uint8Array;\n\t\tlet weight: number | string | undefined;\n\t\tlet style: \"normal\" | \"italic\" | \"oblique\" | undefined;\n\n\t\tif (\n\t\t\ttypeof optionsOrFamilyOrSource === \"object\" &&\n\t\t\toptionsOrFamilyOrSource !== null\n\t\t) {\n\t\t\tfamily = optionsOrFamilyOrSource.family;\n\t\t\trawSource = optionsOrFamilyOrSource.source;\n\t\t\tweight = optionsOrFamilyOrSource.weight;\n\t\t\tstyle = optionsOrFamilyOrSource.style;\n\t\t} else if (\n\t\t\ttypeof optionsOrFamilyOrSource === \"string\" &&\n\t\t\tsource !== undefined\n\t\t) {\n\t\t\tfamily = optionsOrFamilyOrSource;\n\t\t\trawSource = source;\n\t\t} else if (typeof optionsOrFamilyOrSource === \"string\") {\n\t\t\tfamily = undefined;\n\t\t\trawSource = optionsOrFamilyOrSource;\n\t\t} else {\n\t\t\tthrow new TypeError(\"Invalid arguments passed to FontManager.register\");\n\t\t}\n\n\t\tconst { buffer, filePath } = await resolveSourceBuffer(rawSource);\n\t\tconst sourceLabel =\n\t\t\tfilePath ?? (typeof rawSource === \"string\" ? rawSource : \"Uint8Array\");\n\t\tconst format = validateFontBinaryHeader(buffer, sourceLabel);\n\n\t\tlet parsedFontkit: fontkit.Font;\n\t\ttry {\n\t\t\tconst parsed = fontkit.create(buffer as unknown as Buffer);\n\t\t\tif (\n\t\t\t\tparsed &&\n\t\t\t\t\"fonts\" in parsed &&\n\t\t\t\tArray.isArray(parsed.fonts) &&\n\t\t\t\tparsed.fonts.length > 0\n\t\t\t) {\n\t\t\t\tparsedFontkit = parsed.fonts[0] as fontkit.Font;\n\t\t\t} else {\n\t\t\t\tparsedFontkit = parsed as fontkit.Font;\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to parse TrueType/OpenType font binary for \"${sourceLabel}\": ${msg}`,\n\t\t\t);\n\t\t}\n\n\t\tconst detectedFamily =\n\t\t\tparsedFontkit.familyName ||\n\t\t\tparsedFontkit.postscriptName ||\n\t\t\tpath.parse(sourceLabel).name;\n\t\tconst resolvedFamily = family?.trim() || detectedFamily;\n\n\t\tconst registered: RegisteredFont = {\n\t\t\tfamily: resolvedFamily,\n\t\t\tsource: rawSource,\n\t\t\tfilePath,\n\t\t\tformat,\n\t\t\tpostscriptName: parsedFontkit.postscriptName,\n\t\t\tunitsPerEm: parsedFontkit.unitsPerEm,\n\t\t\tweight,\n\t\t\tstyle,\n\t\t};\n\n\t\tthis.fonts.set(resolvedFamily, registered);\n\n\t\tsetRegisteredFontSource(resolvedFamily, filePath ?? rawSource);\n\t\t// Populate headless font registries\n\t\tif (filePath) {\n\t\t\tawait registerHeadlessFont(resolvedFamily, filePath);\n\t\t}\n\t\tSlugFontCache.setParsed(resolvedFamily, parsedFontkit);\n\n\t\treturn registered;\n\t}\n\n\tpublic get(family: string): RegisteredFont | undefined {\n\t\treturn this.fonts.get(family);\n\t}\n\n\tpublic has(family: string): boolean {\n\t\treturn this.fonts.has(family);\n\t}\n\n\tpublic getAll(): RegisteredFont[] {\n\t\treturn Array.from(this.fonts.values());\n\t}\n\n\tpublic getRegisteredFontPaths(): string[] {\n\t\tconst paths: string[] = [];\n\t\tfor (const font of this.fonts.values()) {\n\t\t\tif (font.filePath) {\n\t\t\t\tpaths.push(font.filePath);\n\t\t\t} else if (typeof font.source === \"string\") {\n\t\t\t\tpaths.push(font.source);\n\t\t\t}\n\t\t}\n\t\treturn paths;\n\t}\n\n\tpublic clear(): void {\n\t\tthis.fonts.clear();\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"fonts-gPbGbShD.mjs","names":[],"sources":["../src/fonts/manager.ts"],"sourcesContent":["import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport {\n\tregisterHeadlessFont,\n\tSlugFontCache,\n\tSlugGeometry,\n\tsetRegisteredFontSource,\n} from \"@framefields/webgpu-renderers\";\nimport * as fontkit from \"fontkit\";\n\nexport interface RegisterFontOptions {\n\tfamily?: string;\n\tsource: string | Uint8Array;\n\tweight?: number | string;\n\tstyle?: \"normal\" | \"italic\" | \"oblique\";\n}\n\nexport interface RegisteredFont {\n\tfamily: string;\n\tsource: string | Uint8Array;\n\tfilePath?: string;\n\tformat: \"truetype\" | \"opentype\";\n\tpostscriptName?: string;\n\tunitsPerEm?: number;\n\tweight?: number | string;\n\tstyle?: string;\n}\n\ninterface ResolvedSource {\n\tbuffer: Uint8Array;\n\tfilePath?: string;\n}\n\nconst SFNT_TRUETYPE_1 = 0x00010000;\nconst SFNT_TRUETYPE_TRUE = 0x74727565; // 'true'\nconst SFNT_TRUETYPE_TYP1 = 0x74797031; // 'typ1'\nconst SFNT_OPENTYPE_CFF = 0x4f54544f; // 'OTTO'\nconst SFNT_COLLECTION = 0x74746366; // 'ttcf'\n\nfunction validateFontBinaryHeader(\n\tbytes: Uint8Array,\n\tsourceLabel: string,\n): \"truetype\" | \"opentype\" {\n\tif (bytes.length < 12) {\n\t\tthrow new Error(\n\t\t\t`Invalid font binary for \"${sourceLabel}\": File size (${bytes.length} bytes) is too small to be a valid TrueType or OpenType font.`,\n\t\t);\n\t}\n\n\tconst tag =\n\t\t((bytes[0] ?? 0) << 24) |\n\t\t((bytes[1] ?? 0) << 16) |\n\t\t((bytes[2] ?? 0) << 8) |\n\t\t(bytes[3] ?? 0);\n\n\tif (\n\t\ttag === SFNT_TRUETYPE_1 ||\n\t\ttag === SFNT_TRUETYPE_TRUE ||\n\t\ttag === SFNT_TRUETYPE_TYP1 ||\n\t\ttag === SFNT_COLLECTION\n\t) {\n\t\treturn \"truetype\";\n\t}\n\n\tif (tag === SFNT_OPENTYPE_CFF) {\n\t\treturn \"opentype\";\n\t}\n\n\tconst hexTag = (tag >>> 0).toString(16).padStart(8, \"0\");\n\tthrow new Error(\n\t\t`Invalid font format for \"${sourceLabel}\": Expected a valid TrueType (.ttf) or OpenType (.otf) font binary. Found header tag: 0x${hexTag}.`,\n\t);\n}\n\nasync function resolveSourceBuffer(\n\tsource: string | Uint8Array,\n): Promise<ResolvedSource> {\n\tif (source instanceof Uint8Array) {\n\t\treturn { buffer: source };\n\t}\n\n\tif (typeof source !== \"string\") {\n\t\tthrow new TypeError(\n\t\t\t`Font source must be a file path string or Uint8Array, received: ${typeof source}`,\n\t\t);\n\t}\n\n\tlet cleanPath = source;\n\tif (cleanPath.startsWith(\"http://\") || cleanPath.startsWith(\"https://\")) {\n\t\tconst res = await fetch(cleanPath);\n\t\tif (!res.ok) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to download font from \"${cleanPath}\": HTTP ${res.status} ${res.statusText}`,\n\t\t\t);\n\t\t}\n\t\tconst arrayBuffer = await res.arrayBuffer();\n\t\treturn {\n\t\t\tbuffer: new Uint8Array(arrayBuffer),\n\t\t\tfilePath: cleanPath,\n\t\t};\n\t}\n\n\tif (cleanPath.startsWith(\"file://\")) {\n\t\ttry {\n\t\t\t// A URL path is percent-encoded (\"My%20Film\"); files aren't. On\n\t\t\t// Windows \"/C:/…\" loses its leading slash.\n\t\t\tcleanPath = decodeURIComponent(new URL(cleanPath).pathname).replace(\n\t\t\t\t/^\\/([A-Za-z]:)/,\n\t\t\t\t\"$1\",\n\t\t\t);\n\t\t} catch {\n\t\t\tcleanPath = cleanPath.replace(/^file:\\/\\//, \"\");\n\t\t}\n\t}\n\n\tconst candidates: string[] = [\n\t\tcleanPath,\n\t\tpath.resolve(process.cwd(), cleanPath),\n\t\tpath.resolve(process.cwd(), \"assets/fonts\", cleanPath),\n\t\tpath.resolve(process.cwd(), \"assets/fonts\", path.basename(cleanPath)),\n\t];\n\n\t// Upward traversal to locate fonts in parent monorepo roots\n\tlet currentDir = process.cwd();\n\tfor (let i = 0; i < 5; i++) {\n\t\tcandidates.push(path.resolve(currentDir, cleanPath));\n\t\tcandidates.push(\n\t\t\tpath.resolve(currentDir, \"assets/fonts\", path.basename(cleanPath)),\n\t\t);\n\t\tconst parent = path.dirname(currentDir);\n\t\tif (parent === currentDir) break;\n\t\tcurrentDir = parent;\n\t}\n\n\tlet resolvedPath: string | null = null;\n\tlet fileBuffer: Buffer | null = null;\n\n\tfor (const candidate of candidates) {\n\t\ttry {\n\t\t\tconst stat = await fs.stat(candidate);\n\t\t\tif (stat.isFile()) {\n\t\t\t\tresolvedPath = candidate;\n\t\t\t\tfileBuffer = await fs.readFile(candidate);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} catch {\n\t\t\t// Continue searching next candidate\n\t\t}\n\t}\n\n\tif (!resolvedPath || !fileBuffer) {\n\t\tthrow new Error(\n\t\t\t`Font file not found: \"${source}\". Checked candidate locations:\\n - ${candidates.join(\"\\n - \")}`,\n\t\t);\n\t}\n\n\treturn {\n\t\tbuffer: new Uint8Array(\n\t\t\tfileBuffer.buffer,\n\t\t\tfileBuffer.byteOffset,\n\t\t\tfileBuffer.byteLength,\n\t\t),\n\t\tfilePath: resolvedPath,\n\t};\n}\n\n/**\n * Central singleton manager for font registration, TTF validation, and compositor typography binding.\n */\nexport interface MeasureTextOptions {\n\tfontFamily: string;\n\tfontSize?: number;\n\tfontWeight?: string | number;\n\t/** Extra px between characters, as on `Layer.text`. */\n\tletterSpacing?: number;\n\t/** Multiplier of fontSize when < 10, else px. Default 1.2. */\n\tlineHeight?: number;\n\t/** Wrap width in px; omit for one line per `\\n`. */\n\twidth?: number;\n\talign?: \"left\" | \"center\" | \"right\";\n\t/** Paragraph base direction, as on `Layer.text`. Default \"auto\". */\n\tdirection?: \"ltr\" | \"rtl\" | \"auto\";\n}\n\nexport interface MeasuredGlyph {\n\tchar: string;\n\t/** Index into the string (code units), matching `text.slice`. */\n\tindex: number;\n\t/** Left edge of the glyph, relative to the text box. */\n\tx: number;\n\t/** Baseline-relative top of the line box. */\n\ty: number;\n\t/** Advance width in px. */\n\twidth: number;\n\tline: number;\n\t/** Part of a right-to-left run: reading continues to the left. */\n\trtl?: boolean;\n}\n\nexport interface TextMetrics {\n\twidth: number;\n\theight: number;\n\tlines: number;\n\t/** Line box height in px. */\n\tlineHeight: number;\n\tglyphs: MeasuredGlyph[];\n\t/**\n\t * X of a caret placed after `count` characters (0 = before the first),\n\t * relative to the text box. In right-to-left text the caret sits on the\n\t * left of the last character. Pair with a `.keys(\"text\", …)` reveal to make\n\t * a cursor follow typing exactly.\n\t */\n\tcaretX(count: number): number;\n\t/** Width of the first `count` characters (same as `caretX` on one line). */\n\twidthOf(count: number): number;\n}\n\nexport class FontManager {\n\tprivate static instance: FontManager | null = null;\n\tprivate readonly fonts = new Map<string, RegisteredFont>();\n\n\tprivate constructor() {}\n\n\t/**\n\t * Returns the singleton FontManager instance.\n\t */\n\tpublic static getInstance(): FontManager {\n\t\tif (!FontManager.instance) {\n\t\t\tFontManager.instance = new FontManager();\n\t\t}\n\t\treturn FontManager.instance;\n\t}\n\n\t/**\n\t * Registers a TrueType/OpenType font into the Framefields engine with validation.\n\t */\n\tpublic static async register(\n\t\toptionsOrFamilyOrSource: RegisterFontOptions | string,\n\t\tsource?: string | Uint8Array,\n\t): Promise<RegisteredFont> {\n\t\treturn FontManager.getInstance().register(optionsOrFamilyOrSource, source);\n\t}\n\n\t/**\n\t * Sets the color emoji font text draws emoji with, for the preview and the\n\t * export alike: a CBDT/CBLC bitmap font such as Noto Color Emoji, as a file\n\t * path, URL or bytes. framefields ships none; without one, exports draw\n\t * nothing for emoji.\n\t */\n\tpublic static async registerEmojiFont(\n\t\tsource: string | Uint8Array,\n\t): Promise<void> {\n\t\tconst { buffer, filePath } = await resolveSourceBuffer(source);\n\t\tconst label =\n\t\t\tfilePath ?? (typeof source === \"string\" ? source : \"Uint8Array\");\n\t\tvalidateFontBinaryHeader(buffer, label);\n\t\tSlugFontCache.setEmojiFont(buffer, filePath);\n\t}\n\n\t/** Whether a color emoji font is registered (or set to load from a path / URL). */\n\tpublic static hasEmojiFont(): boolean {\n\t\treturn SlugFontCache.hasEmojiFont();\n\t}\n\n\t/**\n\t * Measures text with the real font, exactly as `Layer.text` lays it out:\n\t * box size, line count, per-glyph positions and caret offsets. Use it to\n\t * size containers, place cursors, underline a word or center by ink\n\t * instead of guessing advances. The family must be registered first.\n\t *\n\t * ```ts\n\t * const m = FontManager.measure(\"Hello\", { fontFamily: \"Inter\", fontSize: 60 });\n\t * m.width; m.caretX(3); m.glyphs[1].x\n\t * ```\n\t */\n\tpublic static measure(\n\t\ttext: string,\n\t\toptions: MeasureTextOptions,\n\t): TextMetrics {\n\t\tconst fontSize = options.fontSize ?? 48;\n\t\tconst font = SlugFontCache.getFont(\n\t\t\toptions.fontFamily,\n\t\t\toptions.fontWeight,\n\t\t\tnull,\n\t\t\tundefined,\n\t\t\tfontSize,\n\t\t);\n\t\tif (!font) {\n\t\t\tthrow new Error(\n\t\t\t\t`FontManager.measure: font \"${options.fontFamily}\" is not registered. ` +\n\t\t\t\t\t\"Call `await FontManager.register(...)` first.\",\n\t\t\t);\n\t\t}\n\t\tconst lineHeight =\n\t\t\toptions.lineHeight !== undefined && options.lineHeight < 10\n\t\t\t\t? options.lineHeight * fontSize\n\t\t\t\t: (options.lineHeight ?? fontSize * 1.2);\n\t\tconst letterSpacing = options.letterSpacing ?? 0;\n\t\tconst { width, height, layout } = SlugGeometry.measure(\n\t\t\ttext,\n\t\t\tfont,\n\t\t\tfontSize,\n\t\t\tletterSpacing,\n\t\t\tlineHeight,\n\t\t\toptions.width,\n\t\t\tundefined,\n\t\t\toptions.direction,\n\t\t);\n\t\tconst scale = fontSize / font.unitsPerEm;\n\t\t// One entry per cluster (a letter with its marks, or a ligature), in\n\t\t// reading order; textIndex maps it back to the string.\n\t\tconst glyphs: MeasuredGlyph[] = [];\n\t\tconst seen = new Set<number>();\n\t\tlet cursor = 0;\n\t\tfor (const g of layout.glyphs) {\n\t\t\tlet index = g.textIndex;\n\t\t\tif (index === undefined) {\n\t\t\t\tconst at = text.indexOf(g.char, cursor);\n\t\t\t\tindex = at >= 0 ? at : cursor;\n\t\t\t}\n\t\t\tif (seen.has(index)) continue;\n\t\t\tseen.add(index);\n\t\t\tcursor = index + g.char.length;\n\t\t\tconst advance =\n\t\t\t\tg.clusterAdvance ?? g.cp.advanceWidth * (g.fontScale ?? scale);\n\t\t\tglyphs.push({\n\t\t\t\tchar: g.char,\n\t\t\t\tindex,\n\t\t\t\tx: g.clusterX ?? g.x,\n\t\t\t\ty: g.y,\n\t\t\t\twidth: advance + letterSpacing,\n\t\t\t\tline: g.lineIndex,\n\t\t\t\t...(g.rtl && { rtl: true }),\n\t\t\t});\n\t\t}\n\t\tconst caretX = (count: number): number => {\n\t\t\tif (count <= 0 || glyphs.length === 0) {\n\t\t\t\tconst first = glyphs[0];\n\t\t\t\tif (!first) return 0;\n\t\t\t\treturn first.rtl ? first.x + first.width - letterSpacing : first.x;\n\t\t\t}\n\t\t\tconst before = glyphs.filter((g) => g.index < count);\n\t\t\tconst last = before[before.length - 1];\n\t\t\tif (!last) return 0;\n\t\t\treturn last.rtl ? last.x : last.x + last.width - letterSpacing;\n\t\t};\n\t\treturn {\n\t\t\twidth,\n\t\t\theight,\n\t\t\tlines: layout.linesCount,\n\t\t\tlineHeight,\n\t\t\tglyphs,\n\t\t\tcaretX,\n\t\t\twidthOf: (count: number) => caretX(count) - (glyphs[0]?.x ?? 0),\n\t\t};\n\t}\n\n\t/**\n\t * Retrieves registered font metadata by family name.\n\t */\n\tpublic static get(family: string): RegisteredFont | undefined {\n\t\treturn FontManager.getInstance().get(family);\n\t}\n\n\t/**\n\t * Checks if a font family has been registered.\n\t */\n\tpublic static has(family: string): boolean {\n\t\treturn FontManager.getInstance().has(family);\n\t}\n\n\t/**\n\t * Returns all currently registered fonts.\n\t */\n\tpublic static getAll(): RegisteredFont[] {\n\t\treturn FontManager.getInstance().getAll();\n\t}\n\n\t/**\n\t * Returns relative or absolute file paths of all registered fonts for composition spec serialization.\n\t */\n\tpublic static getRegisteredFontPaths(): string[] {\n\t\treturn FontManager.getInstance().getRegisteredFontPaths();\n\t}\n\n\t/**\n\t * Clears all registered fonts from the manager.\n\t */\n\tpublic static clear(): void {\n\t\tFontManager.getInstance().clear();\n\t}\n\n\t/**\n\t * Instance registration method with format validation and Slug WebGPU cache population.\n\t */\n\tpublic async register(\n\t\toptionsOrFamilyOrSource: RegisterFontOptions | string,\n\t\tsource?: string | Uint8Array,\n\t): Promise<RegisteredFont> {\n\t\tlet family: string | undefined;\n\t\tlet rawSource: string | Uint8Array;\n\t\tlet weight: number | string | undefined;\n\t\tlet style: \"normal\" | \"italic\" | \"oblique\" | undefined;\n\n\t\tif (\n\t\t\ttypeof optionsOrFamilyOrSource === \"object\" &&\n\t\t\toptionsOrFamilyOrSource !== null\n\t\t) {\n\t\t\tfamily = optionsOrFamilyOrSource.family;\n\t\t\trawSource = optionsOrFamilyOrSource.source;\n\t\t\tweight = optionsOrFamilyOrSource.weight;\n\t\t\tstyle = optionsOrFamilyOrSource.style;\n\t\t} else if (\n\t\t\ttypeof optionsOrFamilyOrSource === \"string\" &&\n\t\t\tsource !== undefined\n\t\t) {\n\t\t\tfamily = optionsOrFamilyOrSource;\n\t\t\trawSource = source;\n\t\t} else if (typeof optionsOrFamilyOrSource === \"string\") {\n\t\t\tfamily = undefined;\n\t\t\trawSource = optionsOrFamilyOrSource;\n\t\t} else {\n\t\t\tthrow new TypeError(\"Invalid arguments passed to FontManager.register\");\n\t\t}\n\n\t\tconst { buffer, filePath } = await resolveSourceBuffer(rawSource);\n\t\tconst sourceLabel =\n\t\t\tfilePath ?? (typeof rawSource === \"string\" ? rawSource : \"Uint8Array\");\n\t\tconst format = validateFontBinaryHeader(buffer, sourceLabel);\n\n\t\tlet parsedFontkit: fontkit.Font;\n\t\ttry {\n\t\t\tconst parsed = fontkit.create(buffer as unknown as Buffer);\n\t\t\tif (\n\t\t\t\tparsed &&\n\t\t\t\t\"fonts\" in parsed &&\n\t\t\t\tArray.isArray(parsed.fonts) &&\n\t\t\t\tparsed.fonts.length > 0\n\t\t\t) {\n\t\t\t\tparsedFontkit = parsed.fonts[0] as fontkit.Font;\n\t\t\t} else {\n\t\t\t\tparsedFontkit = parsed as fontkit.Font;\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to parse TrueType/OpenType font binary for \"${sourceLabel}\": ${msg}`,\n\t\t\t);\n\t\t}\n\n\t\tconst detectedFamily =\n\t\t\tparsedFontkit.familyName ||\n\t\t\tparsedFontkit.postscriptName ||\n\t\t\tpath.parse(sourceLabel).name;\n\t\tconst resolvedFamily = family?.trim() || detectedFamily;\n\n\t\tconst registered: RegisteredFont = {\n\t\t\tfamily: resolvedFamily,\n\t\t\tsource: rawSource,\n\t\t\tfilePath,\n\t\t\tformat,\n\t\t\tpostscriptName: parsedFontkit.postscriptName,\n\t\t\tunitsPerEm: parsedFontkit.unitsPerEm,\n\t\t\tweight,\n\t\t\tstyle,\n\t\t};\n\n\t\tthis.fonts.set(resolvedFamily, registered);\n\n\t\tsetRegisteredFontSource(resolvedFamily, filePath ?? rawSource);\n\t\t// Populate headless font registries\n\t\tif (filePath) {\n\t\t\tawait registerHeadlessFont(resolvedFamily, filePath);\n\t\t}\n\t\tSlugFontCache.setParsed(resolvedFamily, parsedFontkit);\n\n\t\treturn registered;\n\t}\n\n\tpublic get(family: string): RegisteredFont | undefined {\n\t\treturn this.fonts.get(family);\n\t}\n\n\tpublic has(family: string): boolean {\n\t\treturn this.fonts.has(family);\n\t}\n\n\tpublic getAll(): RegisteredFont[] {\n\t\treturn Array.from(this.fonts.values());\n\t}\n\n\tpublic getRegisteredFontPaths(): string[] {\n\t\tconst paths: string[] = [];\n\t\tfor (const font of this.fonts.values()) {\n\t\t\tif (font.filePath) {\n\t\t\t\tpaths.push(font.filePath);\n\t\t\t} else if (typeof font.source === \"string\") {\n\t\t\t\tpaths.push(font.source);\n\t\t\t}\n\t\t}\n\t\treturn paths;\n\t}\n\n\tpublic clear(): void {\n\t\tthis.fonts.clear();\n\t}\n}\n"],"mappings":";;;;;;AAiCA,MAAM,kBAAkB;AACxB,MAAM,qBAAqB;AAC3B,MAAM,qBAAqB;AAC3B,MAAM,oBAAoB;AAC1B,MAAM,kBAAkB;AAExB,SAAS,yBACR,OACA,aAC0B;AAC1B,KAAI,MAAM,SAAS,GAClB,OAAM,IAAI,MACT,4BAA4B,YAAY,gBAAgB,MAAM,OAAO,+DACrE;CAGF,MAAM,OACH,MAAM,MAAM,MAAM,MAClB,MAAM,MAAM,MAAM,MAClB,MAAM,MAAM,MAAM,KACnB,MAAM,MAAM;AAEd,KACC,QAAQ,mBACR,QAAQ,sBACR,QAAQ,sBACR,QAAQ,gBAER,QAAO;AAGR,KAAI,QAAQ,kBACX,QAAO;CAGR,MAAM,UAAU,QAAQ,GAAG,SAAS,GAAG,CAAC,SAAS,GAAG,IAAI;AACxD,OAAM,IAAI,MACT,4BAA4B,YAAY,0FAA0F,OAAO,GACzI;;AAGF,eAAe,oBACd,QAC0B;AAC1B,KAAI,kBAAkB,WACrB,QAAO,EAAE,QAAQ,QAAQ;AAG1B,KAAI,OAAO,WAAW,SACrB,OAAM,IAAI,UACT,mEAAmE,OAAO,SAC1E;CAGF,IAAI,YAAY;AAChB,KAAI,UAAU,WAAW,UAAU,IAAI,UAAU,WAAW,WAAW,EAAE;EACxE,MAAM,MAAM,MAAM,MAAM,UAAU;AAClC,MAAI,CAAC,IAAI,GACR,OAAM,IAAI,MACT,iCAAiC,UAAU,UAAU,IAAI,OAAO,GAAG,IAAI,aACvE;EAEF,MAAM,cAAc,MAAM,IAAI,aAAa;AAC3C,SAAO;GACN,QAAQ,IAAI,WAAW,YAAY;GACnC,UAAU;GACV;;AAGF,KAAI,UAAU,WAAW,UAAU,CAClC,KAAI;AAGH,cAAY,mBAAmB,IAAI,IAAI,UAAU,CAAC,SAAS,CAAC,QAC3D,kBACA,KACA;SACM;AACP,cAAY,UAAU,QAAQ,cAAc,GAAG;;CAIjD,MAAM,aAAuB;EAC5B;EACA,KAAK,QAAQ,QAAQ,KAAK,EAAE,UAAU;EACtC,KAAK,QAAQ,QAAQ,KAAK,EAAE,gBAAgB,UAAU;EACtD,KAAK,QAAQ,QAAQ,KAAK,EAAE,gBAAgB,KAAK,SAAS,UAAU,CAAC;EACrE;CAGD,IAAI,aAAa,QAAQ,KAAK;AAC9B,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;AAC3B,aAAW,KAAK,KAAK,QAAQ,YAAY,UAAU,CAAC;AACpD,aAAW,KACV,KAAK,QAAQ,YAAY,gBAAgB,KAAK,SAAS,UAAU,CAAC,CAClE;EACD,MAAM,SAAS,KAAK,QAAQ,WAAW;AACvC,MAAI,WAAW,WAAY;AAC3B,eAAa;;CAGd,IAAI,eAA8B;CAClC,IAAI,aAA4B;AAEhC,MAAK,MAAM,aAAa,WACvB,KAAI;AAEH,OADa,MAAM,GAAG,KAAK,UAAU,EAC5B,QAAQ,EAAE;AAClB,kBAAe;AACf,gBAAa,MAAM,GAAG,SAAS,UAAU;AACzC;;SAEM;AAKT,KAAI,CAAC,gBAAgB,CAAC,WACrB,OAAM,IAAI,MACT,yBAAyB,OAAO,uCAAuC,WAAW,KAAK,SAAS,GAChG;AAGF,QAAO;EACN,QAAQ,IAAI,WACX,WAAW,QACX,WAAW,YACX,WAAW,WACX;EACD,UAAU;EACV;;AAsDF,IAAa,cAAb,MAAa,YAAY;CACxB,OAAe,WAA+B;CAC9C,AAAiB,wBAAQ,IAAI,KAA6B;CAE1D,AAAQ,cAAc;;;;CAKtB,OAAc,cAA2B;AACxC,MAAI,CAAC,YAAY,SAChB,aAAY,WAAW,IAAI,aAAa;AAEzC,SAAO,YAAY;;;;;CAMpB,aAAoB,SACnB,yBACA,QAC0B;AAC1B,SAAO,YAAY,aAAa,CAAC,SAAS,yBAAyB,OAAO;;;;;;;;CAS3E,aAAoB,kBACnB,QACgB;EAChB,MAAM,EAAE,QAAQ,aAAa,MAAM,oBAAoB,OAAO;AAG9D,2BAAyB,QADxB,aAAa,OAAO,WAAW,WAAW,SAAS,cACb;AACvC,gBAAc,aAAa,QAAQ,SAAS;;;CAI7C,OAAc,eAAwB;AACrC,SAAO,cAAc,cAAc;;;;;;;;;;;;;CAcpC,OAAc,QACb,MACA,SACc;EACd,MAAM,WAAW,QAAQ,YAAY;EACrC,MAAM,OAAO,cAAc,QAC1B,QAAQ,YACR,QAAQ,YACR,MACA,QACA,SACA;AACD,MAAI,CAAC,KACJ,OAAM,IAAI,MACT,8BAA8B,QAAQ,WAAW,sEAEjD;EAEF,MAAM,aACL,QAAQ,eAAe,UAAa,QAAQ,aAAa,KACtD,QAAQ,aAAa,WACpB,QAAQ,cAAc,WAAW;EACtC,MAAM,gBAAgB,QAAQ,iBAAiB;EAC/C,MAAM,EAAE,OAAO,QAAQ,WAAW,aAAa,QAC9C,MACA,MACA,UACA,eACA,YACA,QAAQ,OACR,QACA,QAAQ,UACR;EACD,MAAM,QAAQ,WAAW,KAAK;EAG9B,MAAM,SAA0B,EAAE;EAClC,MAAM,uBAAO,IAAI,KAAa;EAC9B,IAAI,SAAS;AACb,OAAK,MAAM,KAAK,OAAO,QAAQ;GAC9B,IAAI,QAAQ,EAAE;AACd,OAAI,UAAU,QAAW;IACxB,MAAM,KAAK,KAAK,QAAQ,EAAE,MAAM,OAAO;AACvC,YAAQ,MAAM,IAAI,KAAK;;AAExB,OAAI,KAAK,IAAI,MAAM,CAAE;AACrB,QAAK,IAAI,MAAM;AACf,YAAS,QAAQ,EAAE,KAAK;GACxB,MAAM,UACL,EAAE,kBAAkB,EAAE,GAAG,gBAAgB,EAAE,aAAa;AACzD,UAAO,KAAK;IACX,MAAM,EAAE;IACR;IACA,GAAG,EAAE,YAAY,EAAE;IACnB,GAAG,EAAE;IACL,OAAO,UAAU;IACjB,MAAM,EAAE;IACR,GAAI,EAAE,OAAO,EAAE,KAAK,MAAM;IAC1B,CAAC;;EAEH,MAAM,UAAU,UAA0B;AACzC,OAAI,SAAS,KAAK,OAAO,WAAW,GAAG;IACtC,MAAM,QAAQ,OAAO;AACrB,QAAI,CAAC,MAAO,QAAO;AACnB,WAAO,MAAM,MAAM,MAAM,IAAI,MAAM,QAAQ,gBAAgB,MAAM;;GAElE,MAAM,SAAS,OAAO,QAAQ,MAAM,EAAE,QAAQ,MAAM;GACpD,MAAM,OAAO,OAAO,OAAO,SAAS;AACpC,OAAI,CAAC,KAAM,QAAO;AAClB,UAAO,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,QAAQ;;AAElD,SAAO;GACN;GACA;GACA,OAAO,OAAO;GACd;GACA;GACA;GACA,UAAU,UAAkB,OAAO,MAAM,IAAI,OAAO,IAAI,KAAK;GAC7D;;;;;CAMF,OAAc,IAAI,QAA4C;AAC7D,SAAO,YAAY,aAAa,CAAC,IAAI,OAAO;;;;;CAM7C,OAAc,IAAI,QAAyB;AAC1C,SAAO,YAAY,aAAa,CAAC,IAAI,OAAO;;;;;CAM7C,OAAc,SAA2B;AACxC,SAAO,YAAY,aAAa,CAAC,QAAQ;;;;;CAM1C,OAAc,yBAAmC;AAChD,SAAO,YAAY,aAAa,CAAC,wBAAwB;;;;;CAM1D,OAAc,QAAc;AAC3B,cAAY,aAAa,CAAC,OAAO;;;;;CAMlC,MAAa,SACZ,yBACA,QAC0B;EAC1B,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;AAEJ,MACC,OAAO,4BAA4B,YACnC,4BAA4B,MAC3B;AACD,YAAS,wBAAwB;AACjC,eAAY,wBAAwB;AACpC,YAAS,wBAAwB;AACjC,WAAQ,wBAAwB;aAEhC,OAAO,4BAA4B,YACnC,WAAW,QACV;AACD,YAAS;AACT,eAAY;aACF,OAAO,4BAA4B,UAAU;AACvD,YAAS;AACT,eAAY;QAEZ,OAAM,IAAI,UAAU,mDAAmD;EAGxE,MAAM,EAAE,QAAQ,aAAa,MAAM,oBAAoB,UAAU;EACjE,MAAM,cACL,aAAa,OAAO,cAAc,WAAW,YAAY;EAC1D,MAAM,SAAS,yBAAyB,QAAQ,YAAY;EAE5D,IAAI;AACJ,MAAI;GACH,MAAM,SAAS,QAAQ,OAAO,OAA4B;AAC1D,OACC,UACA,WAAW,UACX,MAAM,QAAQ,OAAO,MAAM,IAC3B,OAAO,MAAM,SAAS,EAEtB,iBAAgB,OAAO,MAAM;OAE7B,iBAAgB;WAET,KAAK;GACb,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;AAC5D,SAAM,IAAI,MACT,sDAAsD,YAAY,KAAK,MACvE;;EAGF,MAAM,iBACL,cAAc,cACd,cAAc,kBACd,KAAK,MAAM,YAAY,CAAC;EACzB,MAAM,iBAAiB,QAAQ,MAAM,IAAI;EAEzC,MAAM,aAA6B;GAClC,QAAQ;GACR,QAAQ;GACR;GACA;GACA,gBAAgB,cAAc;GAC9B,YAAY,cAAc;GAC1B;GACA;GACA;AAED,OAAK,MAAM,IAAI,gBAAgB,WAAW;AAE1C,0BAAwB,gBAAgB,YAAY,UAAU;AAE9D,MAAI,SACH,OAAM,qBAAqB,gBAAgB,SAAS;AAErD,gBAAc,UAAU,gBAAgB,cAAc;AAEtD,SAAO;;CAGR,AAAO,IAAI,QAA4C;AACtD,SAAO,KAAK,MAAM,IAAI,OAAO;;CAG9B,AAAO,IAAI,QAAyB;AACnC,SAAO,KAAK,MAAM,IAAI,OAAO;;CAG9B,AAAO,SAA2B;AACjC,SAAO,MAAM,KAAK,KAAK,MAAM,QAAQ,CAAC;;CAGvC,AAAO,yBAAmC;EACzC,MAAM,QAAkB,EAAE;AAC1B,OAAK,MAAM,QAAQ,KAAK,MAAM,QAAQ,CACrC,KAAI,KAAK,SACR,OAAM,KAAK,KAAK,SAAS;WACf,OAAO,KAAK,WAAW,SACjC,OAAM,KAAK,KAAK,OAAO;AAGzB,SAAO;;CAGR,AAAO,QAAc;AACpB,OAAK,MAAM,OAAO"}
@@ -1,4 +1,4 @@
1
- import { Rn as signalRegistry } from "./dist-D12-a3-x.mjs";
1
+ import { zn as signalRegistry } from "./dist-CWLLnigL.mjs";
2
2
 
3
3
  //#region ../node-sdk/dist/gpu.mjs
4
4
  const TRANSPARENT = {
@@ -212,4 +212,4 @@ function drawFullscreenPass(encoder, target, pipeline, bindGroups) {
212
212
 
213
213
  //#endregion
214
214
  export { createFullscreenPipeline as a, drawTextureToTarget as c, signalTextureView as d, signalTiming as f, beginTargetPass as i, fragmentBindGroupLayout as l, PREMULTIPLIED_BLEND as n, drawChildToTexture as o, texturesLayout as p, STRAIGHT_ALPHA_BLEND as r, drawFullscreenPass as s, FULLSCREEN_QUAD_WGSL as t, perDevice as u };
215
- //# sourceMappingURL=gpu-zFNrvhV9.mjs.map
215
+ //# sourceMappingURL=gpu-CpkJJLQP.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"gpu-zFNrvhV9.mjs","names":[],"sources":["../../node-sdk/dist/gpu.mjs"],"sourcesContent":["import { signalRegistry } from \"@framefields/webgpu-renderers\";\n\n//#region renderer/gpu.ts\nconst TRANSPARENT = {\n\tr: 0,\n\tg: 0,\n\tb: 0,\n\ta: 0\n};\n/**\n* Full-screen quad vertex stage: a 4-vertex triangle strip (draw(4)) that\n* hands `in.uv` (0,0 top-left → 1,1 bottom-right) to an `fs` reading `VSOut`.\n*/\nconst FULLSCREEN_QUAD_WGSL = `\nstruct VSOut {\n @builtin(position) pos : vec4<f32>,\n @location(0) uv : vec2<f32>,\n};\n\n@vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {\n var pos = array<vec2<f32>, 4>(\n vec2<f32>(-1.0, 1.0),\n vec2<f32>(1.0, 1.0),\n vec2<f32>(-1.0, -1.0),\n vec2<f32>(1.0, -1.0)\n );\n var uv = array<vec2<f32>, 4>(\n vec2<f32>(0.0, 0.0),\n vec2<f32>(1.0, 0.0),\n vec2<f32>(0.0, 1.0),\n vec2<f32>(1.0, 1.0)\n );\n return VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);\n}\n`;\n/** Premultiplied-alpha \"over\" blending. */\nconst PREMULTIPLIED_BLEND = {\n\tcolor: {\n\t\tsrcFactor: \"one\",\n\t\tdstFactor: \"one-minus-src-alpha\",\n\t\toperation: \"add\"\n\t},\n\talpha: {\n\t\tsrcFactor: \"one\",\n\t\tdstFactor: \"one-minus-src-alpha\",\n\t\toperation: \"add\"\n\t}\n};\n/** Straight-alpha color over a premultiplied-alpha accumulation. */\nconst STRAIGHT_ALPHA_BLEND = {\n\tcolor: {\n\t\tsrcFactor: \"src-alpha\",\n\t\tdstFactor: \"one-minus-src-alpha\",\n\t\toperation: \"add\"\n\t},\n\talpha: {\n\t\tsrcFactor: \"one\",\n\t\tdstFactor: \"one-minus-src-alpha\",\n\t\toperation: \"add\"\n\t}\n};\n/** A bind group layout whose entries are bound at 0, 1, 2… in order. */\nfunction fragmentBindGroupLayout(device, bindings, label) {\n\treturn device.createBindGroupLayout({\n\t\t...label && { label },\n\t\tentries: bindings.map((binding, index) => {\n\t\t\tif (binding === \"uniform\") return {\n\t\t\t\tbinding: index,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\tbuffer: { type: \"uniform\" }\n\t\t\t};\n\t\t\tif (binding === \"texture\") return {\n\t\t\t\tbinding: index,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t};\n\t\t\tif (binding === \"sampler\") return {\n\t\t\t\tbinding: index,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\tsampler: { type: \"filtering\" }\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\t...binding,\n\t\t\t\tbinding: index\n\t\t\t};\n\t\t})\n\t});\n}\n/** `count` float textures followed by one filtering sampler. */\nfunction texturesLayout(device, count) {\n\treturn fragmentBindGroupLayout(device, [...Array(count).fill(\"texture\"), \"sampler\"]);\n}\n/** Memoizes `create` per GPUDevice (resources can't cross devices). */\nfunction perDevice(create) {\n\tconst cache = /* @__PURE__ */ new WeakMap();\n\treturn (device) => {\n\t\tlet value = cache.get(device);\n\t\tif (value === void 0) {\n\t\t\tvalue = create(device);\n\t\t\tcache.set(device, value);\n\t\t}\n\t\treturn value;\n\t};\n}\n/** A triangle-strip pipeline drawing one full-screen quad (`draw(4)`). */\nfunction createFullscreenPipeline(device, options) {\n\tconst { module, format, blend } = options;\n\treturn device.createRenderPipeline({\n\t\t...options.label && { label: options.label },\n\t\tlayout: Array.isArray(options.layouts) ? device.createPipelineLayout({ bindGroupLayouts: options.layouts }) : options.layouts,\n\t\tvertex: {\n\t\t\tmodule,\n\t\t\tentryPoint: options.vertexEntryPoint ?? \"vs\"\n\t\t},\n\t\tfragment: {\n\t\t\tmodule,\n\t\t\tentryPoint: options.fragmentEntryPoint ?? \"fs\",\n\t\t\ttargets: [blend ? {\n\t\t\t\tformat,\n\t\t\t\tblend\n\t\t\t} : { format }]\n\t\t},\n\t\tprimitive: { topology: \"triangle-strip\" }\n\t});\n}\n/**\n* Renders `child` into a cleared temporary texture with an identity\n* transform and a full-size scissor, and returns that texture.\n*/\nasync function drawChildToTexture(args, child, options = {}) {\n\tconst { ctx, encoder, props } = args;\n\tconst width = options.width ?? args.targetWidth;\n\tconst height = options.height ?? args.targetHeight;\n\tconst texture = ctx.renderer.getTemporaryTexture(width, height, [\n\t\t...props.excludeTextures || [],\n\t\targs.targetTexture,\n\t\t...options.exclude ?? []\n\t]);\n\tconst view = texture.createView();\n\tctx.renderer.beginFrame(encoder, view, TRANSPARENT, width, height, \"clear\").end();\n\tctx.renderer.pushScissor({\n\t\tx: 0,\n\t\ty: 0,\n\t\twidth,\n\t\theight\n\t});\n\tctx.renderer.pushIdentity();\n\tawait args.drawChild(child, options.props ?? {\n\t\t...props,\n\t\tvirtualMedia: child\n\t}, view, texture, width, height);\n\tctx.renderer.popTransform();\n\tctx.renderer.popScissor();\n\treturn {\n\t\ttexture,\n\t\tview\n\t};\n}\n/**\n* Opens a \"load\" pass on the node's target and makes it the node's current\n* pass (the caller hands it back to the compositor).\n*/\nfunction beginTargetPass(args, width = args.targetWidth, height = args.targetHeight) {\n\tconst pass = args.ctx.renderer.beginFrame(args.encoder, args.targetView, TRANSPARENT, width, height, \"load\");\n\targs.pass = pass;\n\treturn pass;\n}\n/** Draws `texture` over the whole target at `opacity` (the node's output). */\nfunction drawTextureToTarget(args, texture, opacity = 1) {\n\tconst { targetWidth: width, targetHeight: height } = args;\n\targs.ctx.renderer.drawTexture(beginTargetPass(args), texture, {\n\t\tx: 0,\n\t\ty: 0,\n\t\twidth,\n\t\theight\n\t}, { opacity });\n}\n/** Clock a signal texture is evaluated at, in seconds. */\nfunction signalTiming(props, frame, fps, fallbackDurationSeconds = 0) {\n\tconst metadataDurationMs = props.virtualMedia?.metadata?.durationMs;\n\treturn {\n\t\telapsedSeconds: props.elapsedMs !== void 0 ? props.elapsedMs / 1e3 : frame / fps,\n\t\tdurationSeconds: metadataDurationMs ? metadataDurationMs / 1e3 : props.durationMs !== void 0 ? props.durationMs / 1e3 : fallbackDurationSeconds\n\t};\n}\n/**\n* The texture a bound parameter samples: its own GPU binding, the signal's\n* texture (cached under `sd.nodeId`, else `fallbackId`), or a 1×1 dummy.\n*/\nfunction signalTextureView(sc, param, fallbackId) {\n\tconst { args } = sc;\n\tif (param.gpuTextureView) return param.gpuTextureView;\n\tif (param.hasStaticSig && param.sd) return signalRegistry.getOrCreate2DTextureView(args.ctx.device, args.encoder, param.sd.nodeId ?? fallbackId, sc.elapsedSeconds, sc.durationSeconds, param.sd, sc.width, sc.height, args.props.renderId, sc.frame, sc.fps);\n\treturn signalRegistry.getDummy1x1TextureView(args.ctx.device);\n}\n/** Clears `target` to transparent and draws one full-screen quad into it. */\nfunction drawFullscreenPass(encoder, target, pipeline, bindGroups) {\n\tconst pass = encoder.beginRenderPass({ colorAttachments: [{\n\t\tview: target,\n\t\tloadOp: \"clear\",\n\t\tstoreOp: \"store\",\n\t\tclearValue: TRANSPARENT\n\t}] });\n\tpass.setPipeline(pipeline);\n\tbindGroups.forEach((group, index) => {\n\t\tpass.setBindGroup(index, group);\n\t});\n\tpass.draw(4);\n\tpass.end();\n}\n\n//#endregion\nexport { FULLSCREEN_QUAD_WGSL, PREMULTIPLIED_BLEND, STRAIGHT_ALPHA_BLEND, beginTargetPass, createFullscreenPipeline, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, perDevice, signalTextureView, signalTiming, texturesLayout };\n//# sourceMappingURL=gpu.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"gpu-CpkJJLQP.mjs","names":[],"sources":["../../node-sdk/dist/gpu.mjs"],"sourcesContent":["import { signalRegistry } from \"@framefields/webgpu-renderers\";\n\n//#region renderer/gpu.ts\nconst TRANSPARENT = {\n\tr: 0,\n\tg: 0,\n\tb: 0,\n\ta: 0\n};\n/**\n* Full-screen quad vertex stage: a 4-vertex triangle strip (draw(4)) that\n* hands `in.uv` (0,0 top-left → 1,1 bottom-right) to an `fs` reading `VSOut`.\n*/\nconst FULLSCREEN_QUAD_WGSL = `\nstruct VSOut {\n @builtin(position) pos : vec4<f32>,\n @location(0) uv : vec2<f32>,\n};\n\n@vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {\n var pos = array<vec2<f32>, 4>(\n vec2<f32>(-1.0, 1.0),\n vec2<f32>(1.0, 1.0),\n vec2<f32>(-1.0, -1.0),\n vec2<f32>(1.0, -1.0)\n );\n var uv = array<vec2<f32>, 4>(\n vec2<f32>(0.0, 0.0),\n vec2<f32>(1.0, 0.0),\n vec2<f32>(0.0, 1.0),\n vec2<f32>(1.0, 1.0)\n );\n return VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);\n}\n`;\n/** Premultiplied-alpha \"over\" blending. */\nconst PREMULTIPLIED_BLEND = {\n\tcolor: {\n\t\tsrcFactor: \"one\",\n\t\tdstFactor: \"one-minus-src-alpha\",\n\t\toperation: \"add\"\n\t},\n\talpha: {\n\t\tsrcFactor: \"one\",\n\t\tdstFactor: \"one-minus-src-alpha\",\n\t\toperation: \"add\"\n\t}\n};\n/** Straight-alpha color over a premultiplied-alpha accumulation. */\nconst STRAIGHT_ALPHA_BLEND = {\n\tcolor: {\n\t\tsrcFactor: \"src-alpha\",\n\t\tdstFactor: \"one-minus-src-alpha\",\n\t\toperation: \"add\"\n\t},\n\talpha: {\n\t\tsrcFactor: \"one\",\n\t\tdstFactor: \"one-minus-src-alpha\",\n\t\toperation: \"add\"\n\t}\n};\n/** A bind group layout whose entries are bound at 0, 1, 2… in order. */\nfunction fragmentBindGroupLayout(device, bindings, label) {\n\treturn device.createBindGroupLayout({\n\t\t...label && { label },\n\t\tentries: bindings.map((binding, index) => {\n\t\t\tif (binding === \"uniform\") return {\n\t\t\t\tbinding: index,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\tbuffer: { type: \"uniform\" }\n\t\t\t};\n\t\t\tif (binding === \"texture\") return {\n\t\t\t\tbinding: index,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t};\n\t\t\tif (binding === \"sampler\") return {\n\t\t\t\tbinding: index,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\tsampler: { type: \"filtering\" }\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\t...binding,\n\t\t\t\tbinding: index\n\t\t\t};\n\t\t})\n\t});\n}\n/** `count` float textures followed by one filtering sampler. */\nfunction texturesLayout(device, count) {\n\treturn fragmentBindGroupLayout(device, [...Array(count).fill(\"texture\"), \"sampler\"]);\n}\n/** Memoizes `create` per GPUDevice (resources can't cross devices). */\nfunction perDevice(create) {\n\tconst cache = /* @__PURE__ */ new WeakMap();\n\treturn (device) => {\n\t\tlet value = cache.get(device);\n\t\tif (value === void 0) {\n\t\t\tvalue = create(device);\n\t\t\tcache.set(device, value);\n\t\t}\n\t\treturn value;\n\t};\n}\n/** A triangle-strip pipeline drawing one full-screen quad (`draw(4)`). */\nfunction createFullscreenPipeline(device, options) {\n\tconst { module, format, blend } = options;\n\treturn device.createRenderPipeline({\n\t\t...options.label && { label: options.label },\n\t\tlayout: Array.isArray(options.layouts) ? device.createPipelineLayout({ bindGroupLayouts: options.layouts }) : options.layouts,\n\t\tvertex: {\n\t\t\tmodule,\n\t\t\tentryPoint: options.vertexEntryPoint ?? \"vs\"\n\t\t},\n\t\tfragment: {\n\t\t\tmodule,\n\t\t\tentryPoint: options.fragmentEntryPoint ?? \"fs\",\n\t\t\ttargets: [blend ? {\n\t\t\t\tformat,\n\t\t\t\tblend\n\t\t\t} : { format }]\n\t\t},\n\t\tprimitive: { topology: \"triangle-strip\" }\n\t});\n}\n/**\n* Renders `child` into a cleared temporary texture with an identity\n* transform and a full-size scissor, and returns that texture.\n*/\nasync function drawChildToTexture(args, child, options = {}) {\n\tconst { ctx, encoder, props } = args;\n\tconst width = options.width ?? args.targetWidth;\n\tconst height = options.height ?? args.targetHeight;\n\tconst texture = ctx.renderer.getTemporaryTexture(width, height, [\n\t\t...props.excludeTextures || [],\n\t\targs.targetTexture,\n\t\t...options.exclude ?? []\n\t]);\n\tconst view = texture.createView();\n\tctx.renderer.beginFrame(encoder, view, TRANSPARENT, width, height, \"clear\").end();\n\tctx.renderer.pushScissor({\n\t\tx: 0,\n\t\ty: 0,\n\t\twidth,\n\t\theight\n\t});\n\tctx.renderer.pushIdentity();\n\tawait args.drawChild(child, options.props ?? {\n\t\t...props,\n\t\tvirtualMedia: child\n\t}, view, texture, width, height);\n\tctx.renderer.popTransform();\n\tctx.renderer.popScissor();\n\treturn {\n\t\ttexture,\n\t\tview\n\t};\n}\n/**\n* Opens a \"load\" pass on the node's target and makes it the node's current\n* pass (the caller hands it back to the compositor).\n*/\nfunction beginTargetPass(args, width = args.targetWidth, height = args.targetHeight) {\n\tconst pass = args.ctx.renderer.beginFrame(args.encoder, args.targetView, TRANSPARENT, width, height, \"load\");\n\targs.pass = pass;\n\treturn pass;\n}\n/** Draws `texture` over the whole target at `opacity` (the node's output). */\nfunction drawTextureToTarget(args, texture, opacity = 1) {\n\tconst { targetWidth: width, targetHeight: height } = args;\n\targs.ctx.renderer.drawTexture(beginTargetPass(args), texture, {\n\t\tx: 0,\n\t\ty: 0,\n\t\twidth,\n\t\theight\n\t}, { opacity });\n}\n/** Clock a signal texture is evaluated at, in seconds. */\nfunction signalTiming(props, frame, fps, fallbackDurationSeconds = 0) {\n\tconst metadataDurationMs = props.virtualMedia?.metadata?.durationMs;\n\treturn {\n\t\telapsedSeconds: props.elapsedMs !== void 0 ? props.elapsedMs / 1e3 : frame / fps,\n\t\tdurationSeconds: metadataDurationMs ? metadataDurationMs / 1e3 : props.durationMs !== void 0 ? props.durationMs / 1e3 : fallbackDurationSeconds\n\t};\n}\n/**\n* The texture a bound parameter samples: its own GPU binding, the signal's\n* texture (cached under `sd.nodeId`, else `fallbackId`), or a 1×1 dummy.\n*/\nfunction signalTextureView(sc, param, fallbackId) {\n\tconst { args } = sc;\n\tif (param.gpuTextureView) return param.gpuTextureView;\n\tif (param.hasStaticSig && param.sd) return signalRegistry.getOrCreate2DTextureView(args.ctx.device, args.encoder, param.sd.nodeId ?? fallbackId, sc.elapsedSeconds, sc.durationSeconds, param.sd, sc.width, sc.height, args.props.renderId, sc.frame, sc.fps);\n\treturn signalRegistry.getDummy1x1TextureView(args.ctx.device);\n}\n/** Clears `target` to transparent and draws one full-screen quad into it. */\nfunction drawFullscreenPass(encoder, target, pipeline, bindGroups) {\n\tconst pass = encoder.beginRenderPass({ colorAttachments: [{\n\t\tview: target,\n\t\tloadOp: \"clear\",\n\t\tstoreOp: \"store\",\n\t\tclearValue: TRANSPARENT\n\t}] });\n\tpass.setPipeline(pipeline);\n\tbindGroups.forEach((group, index) => {\n\t\tpass.setBindGroup(index, group);\n\t});\n\tpass.draw(4);\n\tpass.end();\n}\n\n//#endregion\nexport { FULLSCREEN_QUAD_WGSL, PREMULTIPLIED_BLEND, STRAIGHT_ALPHA_BLEND, beginTargetPass, createFullscreenPipeline, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, perDevice, signalTextureView, signalTiming, texturesLayout };\n//# sourceMappingURL=gpu.mjs.map"],"mappings":"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"}
@@ -128,4 +128,4 @@ declare class FontManager {
128
128
  }
129
129
  //#endregion
130
130
  export { RegisteredFont as a, RegisterFontOptions as i, MeasureTextOptions as n, TextMetrics as o, MeasuredGlyph as r, FontManager as t };
131
- //# sourceMappingURL=index-BuYtrhzL.d.mts.map
131
+ //# sourceMappingURL=index-BW0Q1ygn.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-BuYtrhzL.d.mts","names":[],"sources":["../src/fonts/manager.ts"],"sourcesContent":[],"mappings":";UAUiB,mBAAA;EAAA,MAAA,CAAA,EAAA,MAAA;EAOA,MAAA,EAAA,MAAA,GALC,UAKa;EAwJd,MAAA,CAAA,EAAA,MAAA,GAAA,MAAkB;EAelB,KAAA,CAAA,EAAA,QAAa,GAAA,QAAA,GAAA,SAAA;AAe9B;AAkBa,UAxMI,cAAA,CAwMO;EASM,MAAA,EAAA,MAAA;EAWH,MAAA,EAAA,MAAA,GA1NT,UA0NS;EACP,QAAA,CAAA,EAAA,MAAA;EACR,MAAA,EAAA,UAAA,GAAA,UAAA;EAAR,cAAA,CAAA,EAAA,MAAA;EAWe,UAAA,CAAA,EAAA,MAAA;EACf,MAAA,CAAA,EAAA,MAAA,GAAA,MAAA;EA0BO,KAAA,CAAA,EAAA,MAAA;;;;;AAwHS,UApOH,kBAAA,CAoOG;EACR,UAAA,EAAA,MAAA;EAAR,QAAA,CAAA,EAAA,MAAA;EAiFyB,UAAA,CAAA,EAAA,MAAA,GAAA,MAAA;EAQX;EAAc,aAAA,CAAA,EAAA,MAAA;;;;;;;;;UA/Sf,aAAA;;;;;;;;;;;;;;UAeA,WAAA;;;;;;UAMR;;;;;;;;;;;cAYI,WAAA;;;;;;;wBASiB;;;;2CAWH,gDACP,aAChB,QAAQ;;;;;;;4CAWO,aACf;;;;;;;;;;;;;;wCA0BO,qBACP;;;;8BAkFgC;;;;;;;;mBAcX;;;;;;;;;;;;oCAsBE,gDACP,aAChB,QAAQ;uBAiFiB;;YAQX"}
1
+ {"version":3,"file":"index-BW0Q1ygn.d.mts","names":[],"sources":["../src/fonts/manager.ts"],"sourcesContent":[],"mappings":";UAUiB,mBAAA;EAAA,MAAA,CAAA,EAAA,MAAA;EAOA,MAAA,EAAA,MAAA,GALC,UAKa;EAwJd,MAAA,CAAA,EAAA,MAAA,GAAA,MAAkB;EAelB,KAAA,CAAA,EAAA,QAAa,GAAA,QAAA,GAAA,SAAA;AAe9B;AAkBa,UAxMI,cAAA,CAwMO;EASM,MAAA,EAAA,MAAA;EAWH,MAAA,EAAA,MAAA,GA1NT,UA0NS;EACP,QAAA,CAAA,EAAA,MAAA;EACR,MAAA,EAAA,UAAA,GAAA,UAAA;EAAR,cAAA,CAAA,EAAA,MAAA;EAWe,UAAA,CAAA,EAAA,MAAA;EACf,MAAA,CAAA,EAAA,MAAA,GAAA,MAAA;EA0BO,KAAA,CAAA,EAAA,MAAA;;;;;AAwHS,UApOH,kBAAA,CAoOG;EACR,UAAA,EAAA,MAAA;EAAR,QAAA,CAAA,EAAA,MAAA;EAiFyB,UAAA,CAAA,EAAA,MAAA,GAAA,MAAA;EAQX;EAAc,aAAA,CAAA,EAAA,MAAA;;;;;;;;;UA/Sf,aAAA;;;;;;;;;;;;;;UAeA,WAAA;;;;;;UAMR;;;;;;;;;;;cAYI,WAAA;;;;;;;wBASiB;;;;2CAWH,gDACP,aAChB,QAAQ;;;;;;;4CAWO,aACf;;;;;;;;;;;;;;wCA0BO,qBACP;;;;8BAkFgC;;;;;;;;mBAcX;;;;;;;;;;;;oCAsBE,gDACP,aAChB,QAAQ;uBAiFiB;;YAQX"}
@@ -1,5 +1,5 @@
1
- import { an as OutputItem } from "./index-9_4X2ro1.mjs";
2
- import { t as SignalResultSchema } from "./renderer-DoPEPlbG.mjs";
1
+ import { an as OutputItem } from "./index-COYNQ_mf.mjs";
2
+ import { t as SignalResultSchema } from "./renderer-BVKOQarx.mjs";
3
3
  import { z } from "zod";
4
4
 
5
5
  //#region ../../nodes/node-audio-signal-extractor/dist/index.d.mts
@@ -261,4 +261,4 @@ type SignalMathResult = z.infer<typeof SignalMathResultSchema>;
261
261
 
262
262
  //#endregion
263
263
  export { index_d_exports$3 as i, index_d_exports$1 as n, index_d_exports$2 as r, index_d_exports as t };
264
- //# sourceMappingURL=index-f4IF1vRH.d.mts.map
264
+ //# sourceMappingURL=index-Bly-7YM1.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-f4IF1vRH.d.mts","names":["z","_framefields_core0","ExtractionModeEnum","ZodEnum","ExtractionMode","infer","SignalCurveEnum","SignalCurve","AudioSignalExtractorConfigSchema","ZodDefault","ZodNumber","ZodBoolean","core","$strip","ZodObject","AudioSignalExtractorConfig","AudioSignalExtractorResultSchema","OutputItem","$ZodTypeInternals","ZodType","ZodArray","ZodString","ZodOptional","AudioSignalExtractorResult","SignalResultSchema","z","WGSL_OUTPUT_TYPES","WGSLOutputType","WGSL_PARAM_TYPES","WGSLParamType","FnParamSchema","ZodString","ZodEnum","ZodNumber","core","$strip","ZodObject","FnParam","infer","SignalNodeConfigSchema","ZodDefault","ZodBoolean","ZodArray","SignalNodeConfig","SignalNodeResult","_framefields_core0","z","GateModeSchema","ZodEnum","GateMode","infer","SignalGateConfigSchema","ZodNumber","ZodDefault","ZodBoolean","core","$strip","ZodObject","SignalGateConfig","SignalGateResultSchema","OutputItem","$ZodTypeInternals","ZodType","ZodArray","ZodString","ZodOptional","SignalGateResult","z","_framefields_core0","SignalMathOperationEnum","ZodEnum","SignalMathOperation","infer","SignalMathConfigSchema","ZodDefault","ZodNumber","ZodString","core","$strip","ZodObject","SignalMathConfig","SignalMathResultSchema","OutputItem","$ZodTypeInternals","ZodType","ZodArray","ZodOptional","SignalMathResult"],"sources":["../../../nodes/node-audio-signal-extractor/dist/index.d.mts","../../../nodes/node-signal/dist/index.d.mts","../../../nodes/node-signal-gate/dist/index.d.mts","../../../nodes/node-signal-math/dist/index.d.mts"],"sourcesContent":["import \"./renderer.mjs\";\nimport { z } from \"zod\";\nimport * as _framefields_core0 from \"@framefields/core\";\n\n//#region src/shared/config.d.ts\ndeclare const ExtractionModeEnum: z.ZodEnum<{\n rms_envelope: \"rms_envelope\";\n transient_beat: \"transient_beat\";\n sub_bass: \"sub_bass\";\n bass: \"bass\";\n mid: \"mid\";\n high: \"high\";\n spectral_flux: \"spectral_flux\";\n}>;\ntype ExtractionMode = z.infer<typeof ExtractionModeEnum>;\ndeclare const SignalCurveEnum: z.ZodEnum<{\n linear: \"linear\";\n exponential: \"exponential\";\n logarithmic: \"logarithmic\";\n square: \"square\";\n smoothstep: \"smoothstep\";\n}>;\ntype SignalCurve = z.infer<typeof SignalCurveEnum>;\ndeclare const AudioSignalExtractorConfigSchema: z.ZodObject<{\n extractionMode: z.ZodDefault<z.ZodEnum<{\n rms_envelope: \"rms_envelope\";\n transient_beat: \"transient_beat\";\n sub_bass: \"sub_bass\";\n bass: \"bass\";\n mid: \"mid\";\n high: \"high\";\n spectral_flux: \"spectral_flux\";\n }>>;\n attackMs: z.ZodDefault<z.ZodNumber>;\n releaseMs: z.ZodDefault<z.ZodNumber>;\n sensitivity: z.ZodDefault<z.ZodNumber>;\n noiseFloorDb: z.ZodDefault<z.ZodNumber>;\n dynamicRangeDb: z.ZodDefault<z.ZodNumber>;\n autoRange: z.ZodDefault<z.ZodBoolean>;\n smoothing: z.ZodDefault<z.ZodNumber>;\n curve: z.ZodDefault<z.ZodEnum<{\n linear: \"linear\";\n exponential: \"exponential\";\n logarithmic: \"logarithmic\";\n square: \"square\";\n smoothstep: \"smoothstep\";\n }>>;\n beatThreshold: z.ZodDefault<z.ZodNumber>;\n beatDecayMs: z.ZodDefault<z.ZodNumber>;\n previewMode: z.ZodDefault<z.ZodEnum<{\n waveform: \"waveform\";\n envelope: \"envelope\";\n beat_markers: \"beat_markers\";\n spectrum: \"spectrum\";\n }>>;\n}, z.core.$strip>;\ntype AudioSignalExtractorConfig = z.infer<typeof AudioSignalExtractorConfigSchema>;\ndeclare const AudioSignalExtractorResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodNumber;\n outputs: z.ZodArray<z.ZodObject<{\n items: z.ZodArray<z.ZodType<_framefields_core0.OutputItem<\"Signal\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Signal\">, unknown>>>;\n }, z.core.$strip>>;\n sourceFingerprint: z.ZodOptional<z.ZodString>;\n}, z.core.$strip>;\ntype AudioSignalExtractorResult = z.infer<typeof AudioSignalExtractorResultSchema>;\n//#endregion\nexport { AudioSignalExtractorConfig, AudioSignalExtractorConfigSchema, AudioSignalExtractorResult, AudioSignalExtractorResultSchema, ExtractionMode, ExtractionModeEnum, SignalCurve, SignalCurveEnum };\n//# sourceMappingURL=index.d.mts.map","import { SignalResultSchema } from \"@framefields/node-sdk\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.d.ts\ndeclare const WGSL_OUTPUT_TYPES: readonly [\"f32\"];\ntype WGSLOutputType = (typeof WGSL_OUTPUT_TYPES)[number];\ndeclare const WGSL_PARAM_TYPES: readonly [\"f32\", \"i32\", \"u32\", \"vec2f\", \"vec3f\", \"vec4f\"];\ntype WGSLParamType = (typeof WGSL_PARAM_TYPES)[number];\ndeclare const FnParamSchema: z.ZodObject<{\n name: z.ZodString;\n type: z.ZodEnum<{\n f32: \"f32\";\n i32: \"i32\";\n u32: \"u32\";\n vec2f: \"vec2f\";\n vec3f: \"vec3f\";\n vec4f: \"vec4f\";\n }>;\n defaultValue: z.ZodNumber;\n}, z.core.$strip>;\ntype FnParam = z.infer<typeof FnParamSchema>;\ndeclare const SignalNodeConfigSchema: z.ZodObject<{\n amplitude: z.ZodDefault<z.ZodNumber>;\n frequency: z.ZodDefault<z.ZodNumber>;\n phase: z.ZodDefault<z.ZodNumber>;\n offset: z.ZodDefault<z.ZodNumber>;\n amplitudeMin: z.ZodDefault<z.ZodNumber>;\n amplitudeMax: z.ZodDefault<z.ZodNumber>;\n spatialScale: z.ZodDefault<z.ZodNumber>;\n spatialSpeed: z.ZodDefault<z.ZodNumber>;\n fmAmplitude: z.ZodDefault<z.ZodNumber>;\n fmFrequency: z.ZodDefault<z.ZodNumber>;\n gateEnabled: z.ZodDefault<z.ZodBoolean>;\n gateStartFrame: z.ZodDefault<z.ZodNumber>;\n gateEndFrame: z.ZodDefault<z.ZodNumber>;\n gateIdleValue: z.ZodDefault<z.ZodNumber>;\n envelopeUseFrame: z.ZodDefault<z.ZodBoolean>;\n baseEnabled: z.ZodDefault<z.ZodBoolean>;\n baseType: z.ZodDefault<z.ZodEnum<{\n sine: \"sine\";\n triangle: \"triangle\";\n sawtooth: \"sawtooth\";\n square: \"square\";\n constant: \"constant\";\n noise_smooth: \"noise_smooth\";\n noise_white: \"noise_white\";\n pulse: \"pulse\";\n bounce: \"bounce\";\n staircase: \"staircase\";\n custom: \"custom\";\n }>>;\n fmEnabled: z.ZodDefault<z.ZodBoolean>;\n envelopeEnabled: z.ZodDefault<z.ZodBoolean>;\n envelopeFamily: z.ZodDefault<z.ZodEnum<{\n sine: \"sine\";\n bounce: \"bounce\";\n linear: \"linear\";\n quad: \"quad\";\n cubic: \"cubic\";\n quart: \"quart\";\n quint: \"quint\";\n expo: \"expo\";\n circ: \"circ\";\n back: \"back\";\n elastic: \"elastic\";\n smoothstep: \"smoothstep\";\n smootherstep: \"smootherstep\";\n }>>;\n envelopeMode: z.ZodDefault<z.ZodEnum<{\n in: \"in\";\n out: \"out\";\n in_out: \"in_out\";\n }>>;\n envelopePattern: z.ZodDefault<z.ZodEnum<{\n ramp_up: \"ramp_up\";\n ramp_down: \"ramp_down\";\n bell: \"bell\";\n loop: \"loop\";\n }>>;\n envelopeCycles: z.ZodDefault<z.ZodNumber>;\n fnBody: z.ZodDefault<z.ZodString>;\n fnOutputType: z.ZodDefault<z.ZodEnum<{\n f32: \"f32\";\n }>>;\n fnParams: z.ZodDefault<z.ZodArray<z.ZodObject<{\n name: z.ZodString;\n type: z.ZodEnum<{\n f32: \"f32\";\n i32: \"i32\";\n u32: \"u32\";\n vec2f: \"vec2f\";\n vec3f: \"vec3f\";\n vec4f: \"vec4f\";\n }>;\n defaultValue: z.ZodNumber;\n }, z.core.$strip>>>;\n previewMode: z.ZodDefault<z.ZodEnum<{\n pattern: \"pattern\";\n cartesian: \"cartesian\";\n \"3d\": \"3d\";\n }>>;\n}, z.core.$strip>;\ntype SignalNodeConfig = z.infer<typeof SignalNodeConfigSchema>;\ntype SignalNodeResult = z.infer<typeof SignalResultSchema>;\n//#endregion\nexport { FnParam, FnParamSchema, SignalNodeConfig, SignalNodeConfigSchema, SignalNodeResult, SignalResultSchema, WGSLOutputType, WGSLParamType, WGSL_OUTPUT_TYPES, WGSL_PARAM_TYPES };\n//# sourceMappingURL=index.d.mts.map","import \"./renderer.mjs\";\nimport * as _framefields_core0 from \"@framefields/core\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.d.ts\ndeclare const GateModeSchema: z.ZodEnum<{\n gate: \"gate\";\n trigger: \"trigger\";\n toggle: \"toggle\";\n}>;\ntype GateMode = z.infer<typeof GateModeSchema>;\ndeclare const SignalGateConfigSchema: z.ZodObject<{\n threshold: z.ZodDefault<z.ZodNumber>;\n debounceMs: z.ZodDefault<z.ZodNumber>;\n mode: z.ZodDefault<z.ZodEnum<{\n gate: \"gate\";\n trigger: \"trigger\";\n toggle: \"toggle\";\n }>>;\n holdFrames: z.ZodDefault<z.ZodNumber>;\n invert: z.ZodDefault<z.ZodBoolean>;\n}, z.core.$strip>;\ntype SignalGateConfig = z.infer<typeof SignalGateConfigSchema>;\ndeclare const SignalGateResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodNumber;\n outputs: z.ZodArray<z.ZodObject<{\n items: z.ZodArray<z.ZodType<_framefields_core0.OutputItem<\"Signal\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Signal\">, unknown>>>;\n }, z.core.$strip>>;\n sourceFingerprint: z.ZodOptional<z.ZodString>;\n}, z.core.$strip>;\ntype SignalGateResult = z.infer<typeof SignalGateResultSchema>;\n//#endregion\nexport { GateMode, GateModeSchema, SignalGateConfig, SignalGateConfigSchema, SignalGateResult, SignalGateResultSchema };\n//# sourceMappingURL=index.d.mts.map","import { z } from \"zod\";\nimport * as _framefields_core0 from \"@framefields/core\";\n\n//#region src/shared/config.d.ts\ndeclare const SignalMathOperationEnum: z.ZodEnum<{\n remap: \"remap\";\n normalize: \"normalize\";\n add: \"add\";\n subtract: \"subtract\";\n multiply: \"multiply\";\n divide: \"divide\";\n invert: \"invert\";\n clamp: \"clamp\";\n power: \"power\";\n smoothstep: \"smoothstep\";\n custom: \"custom\";\n}>;\ntype SignalMathOperation = z.infer<typeof SignalMathOperationEnum>;\ndeclare const SignalMathConfigSchema: z.ZodObject<{\n operation: z.ZodDefault<z.ZodEnum<{\n remap: \"remap\";\n normalize: \"normalize\";\n add: \"add\";\n subtract: \"subtract\";\n multiply: \"multiply\";\n divide: \"divide\";\n invert: \"invert\";\n clamp: \"clamp\";\n power: \"power\";\n smoothstep: \"smoothstep\";\n custom: \"custom\";\n }>>;\n bValue: z.ZodDefault<z.ZodNumber>;\n inMin: z.ZodDefault<z.ZodNumber>;\n inMax: z.ZodDefault<z.ZodNumber>;\n outMin: z.ZodDefault<z.ZodNumber>;\n outMax: z.ZodDefault<z.ZodNumber>;\n clampMin: z.ZodDefault<z.ZodNumber>;\n clampMax: z.ZodDefault<z.ZodNumber>;\n exponent: z.ZodDefault<z.ZodNumber>;\n edge0: z.ZodDefault<z.ZodNumber>;\n edge1: z.ZodDefault<z.ZodNumber>;\n customWGSL: z.ZodDefault<z.ZodString>;\n}, z.core.$strip>;\ntype SignalMathConfig = z.infer<typeof SignalMathConfigSchema>;\ndeclare const SignalMathResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodNumber;\n outputs: z.ZodArray<z.ZodObject<{\n items: z.ZodArray<z.ZodType<_framefields_core0.OutputItem<\"Signal\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Signal\">, unknown>>>;\n }, z.core.$strip>>;\n sourceFingerprint: z.ZodOptional<z.ZodString>;\n}, z.core.$strip>;\ntype SignalMathResult = z.infer<typeof SignalMathResultSchema>;\n//#endregion\nexport { SignalMathConfig, SignalMathConfigSchema, SignalMathOperation, SignalMathOperationEnum, SignalMathResult, SignalMathResultSchema };\n//# sourceMappingURL=index.d.mts.map"],"mappings":"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"}
1
+ {"version":3,"file":"index-Bly-7YM1.d.mts","names":["z","_framefields_core0","ExtractionModeEnum","ZodEnum","ExtractionMode","infer","SignalCurveEnum","SignalCurve","AudioSignalExtractorConfigSchema","ZodDefault","ZodNumber","ZodBoolean","core","$strip","ZodObject","AudioSignalExtractorConfig","AudioSignalExtractorResultSchema","OutputItem","$ZodTypeInternals","ZodType","ZodArray","ZodString","ZodOptional","AudioSignalExtractorResult","SignalResultSchema","z","WGSL_OUTPUT_TYPES","WGSLOutputType","WGSL_PARAM_TYPES","WGSLParamType","FnParamSchema","ZodString","ZodEnum","ZodNumber","core","$strip","ZodObject","FnParam","infer","SignalNodeConfigSchema","ZodDefault","ZodBoolean","ZodArray","SignalNodeConfig","SignalNodeResult","_framefields_core0","z","GateModeSchema","ZodEnum","GateMode","infer","SignalGateConfigSchema","ZodNumber","ZodDefault","ZodBoolean","core","$strip","ZodObject","SignalGateConfig","SignalGateResultSchema","OutputItem","$ZodTypeInternals","ZodType","ZodArray","ZodString","ZodOptional","SignalGateResult","z","_framefields_core0","SignalMathOperationEnum","ZodEnum","SignalMathOperation","infer","SignalMathConfigSchema","ZodDefault","ZodNumber","ZodString","core","$strip","ZodObject","SignalMathConfig","SignalMathResultSchema","OutputItem","$ZodTypeInternals","ZodType","ZodArray","ZodOptional","SignalMathResult"],"sources":["../../../nodes/node-audio-signal-extractor/dist/index.d.mts","../../../nodes/node-signal/dist/index.d.mts","../../../nodes/node-signal-gate/dist/index.d.mts","../../../nodes/node-signal-math/dist/index.d.mts"],"sourcesContent":["import \"./renderer.mjs\";\nimport { z } from \"zod\";\nimport * as _framefields_core0 from \"@framefields/core\";\n\n//#region src/shared/config.d.ts\ndeclare const ExtractionModeEnum: z.ZodEnum<{\n rms_envelope: \"rms_envelope\";\n transient_beat: \"transient_beat\";\n sub_bass: \"sub_bass\";\n bass: \"bass\";\n mid: \"mid\";\n high: \"high\";\n spectral_flux: \"spectral_flux\";\n}>;\ntype ExtractionMode = z.infer<typeof ExtractionModeEnum>;\ndeclare const SignalCurveEnum: z.ZodEnum<{\n linear: \"linear\";\n exponential: \"exponential\";\n logarithmic: \"logarithmic\";\n square: \"square\";\n smoothstep: \"smoothstep\";\n}>;\ntype SignalCurve = z.infer<typeof SignalCurveEnum>;\ndeclare const AudioSignalExtractorConfigSchema: z.ZodObject<{\n extractionMode: z.ZodDefault<z.ZodEnum<{\n rms_envelope: \"rms_envelope\";\n transient_beat: \"transient_beat\";\n sub_bass: \"sub_bass\";\n bass: \"bass\";\n mid: \"mid\";\n high: \"high\";\n spectral_flux: \"spectral_flux\";\n }>>;\n attackMs: z.ZodDefault<z.ZodNumber>;\n releaseMs: z.ZodDefault<z.ZodNumber>;\n sensitivity: z.ZodDefault<z.ZodNumber>;\n noiseFloorDb: z.ZodDefault<z.ZodNumber>;\n dynamicRangeDb: z.ZodDefault<z.ZodNumber>;\n autoRange: z.ZodDefault<z.ZodBoolean>;\n smoothing: z.ZodDefault<z.ZodNumber>;\n curve: z.ZodDefault<z.ZodEnum<{\n linear: \"linear\";\n exponential: \"exponential\";\n logarithmic: \"logarithmic\";\n square: \"square\";\n smoothstep: \"smoothstep\";\n }>>;\n beatThreshold: z.ZodDefault<z.ZodNumber>;\n beatDecayMs: z.ZodDefault<z.ZodNumber>;\n previewMode: z.ZodDefault<z.ZodEnum<{\n waveform: \"waveform\";\n envelope: \"envelope\";\n beat_markers: \"beat_markers\";\n spectrum: \"spectrum\";\n }>>;\n}, z.core.$strip>;\ntype AudioSignalExtractorConfig = z.infer<typeof AudioSignalExtractorConfigSchema>;\ndeclare const AudioSignalExtractorResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodNumber;\n outputs: z.ZodArray<z.ZodObject<{\n items: z.ZodArray<z.ZodType<_framefields_core0.OutputItem<\"Signal\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Signal\">, unknown>>>;\n }, z.core.$strip>>;\n sourceFingerprint: z.ZodOptional<z.ZodString>;\n}, z.core.$strip>;\ntype AudioSignalExtractorResult = z.infer<typeof AudioSignalExtractorResultSchema>;\n//#endregion\nexport { AudioSignalExtractorConfig, AudioSignalExtractorConfigSchema, AudioSignalExtractorResult, AudioSignalExtractorResultSchema, ExtractionMode, ExtractionModeEnum, SignalCurve, SignalCurveEnum };\n//# sourceMappingURL=index.d.mts.map","import { SignalResultSchema } from \"@framefields/node-sdk\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.d.ts\ndeclare const WGSL_OUTPUT_TYPES: readonly [\"f32\"];\ntype WGSLOutputType = (typeof WGSL_OUTPUT_TYPES)[number];\ndeclare const WGSL_PARAM_TYPES: readonly [\"f32\", \"i32\", \"u32\", \"vec2f\", \"vec3f\", \"vec4f\"];\ntype WGSLParamType = (typeof WGSL_PARAM_TYPES)[number];\ndeclare const FnParamSchema: z.ZodObject<{\n name: z.ZodString;\n type: z.ZodEnum<{\n f32: \"f32\";\n i32: \"i32\";\n u32: \"u32\";\n vec2f: \"vec2f\";\n vec3f: \"vec3f\";\n vec4f: \"vec4f\";\n }>;\n defaultValue: z.ZodNumber;\n}, z.core.$strip>;\ntype FnParam = z.infer<typeof FnParamSchema>;\ndeclare const SignalNodeConfigSchema: z.ZodObject<{\n amplitude: z.ZodDefault<z.ZodNumber>;\n frequency: z.ZodDefault<z.ZodNumber>;\n phase: z.ZodDefault<z.ZodNumber>;\n offset: z.ZodDefault<z.ZodNumber>;\n amplitudeMin: z.ZodDefault<z.ZodNumber>;\n amplitudeMax: z.ZodDefault<z.ZodNumber>;\n spatialScale: z.ZodDefault<z.ZodNumber>;\n spatialSpeed: z.ZodDefault<z.ZodNumber>;\n fmAmplitude: z.ZodDefault<z.ZodNumber>;\n fmFrequency: z.ZodDefault<z.ZodNumber>;\n gateEnabled: z.ZodDefault<z.ZodBoolean>;\n gateStartFrame: z.ZodDefault<z.ZodNumber>;\n gateEndFrame: z.ZodDefault<z.ZodNumber>;\n gateIdleValue: z.ZodDefault<z.ZodNumber>;\n envelopeUseFrame: z.ZodDefault<z.ZodBoolean>;\n baseEnabled: z.ZodDefault<z.ZodBoolean>;\n baseType: z.ZodDefault<z.ZodEnum<{\n sine: \"sine\";\n triangle: \"triangle\";\n sawtooth: \"sawtooth\";\n square: \"square\";\n constant: \"constant\";\n noise_smooth: \"noise_smooth\";\n noise_white: \"noise_white\";\n pulse: \"pulse\";\n bounce: \"bounce\";\n staircase: \"staircase\";\n custom: \"custom\";\n }>>;\n fmEnabled: z.ZodDefault<z.ZodBoolean>;\n envelopeEnabled: z.ZodDefault<z.ZodBoolean>;\n envelopeFamily: z.ZodDefault<z.ZodEnum<{\n sine: \"sine\";\n bounce: \"bounce\";\n linear: \"linear\";\n quad: \"quad\";\n cubic: \"cubic\";\n quart: \"quart\";\n quint: \"quint\";\n expo: \"expo\";\n circ: \"circ\";\n back: \"back\";\n elastic: \"elastic\";\n smoothstep: \"smoothstep\";\n smootherstep: \"smootherstep\";\n }>>;\n envelopeMode: z.ZodDefault<z.ZodEnum<{\n in: \"in\";\n out: \"out\";\n in_out: \"in_out\";\n }>>;\n envelopePattern: z.ZodDefault<z.ZodEnum<{\n ramp_up: \"ramp_up\";\n ramp_down: \"ramp_down\";\n bell: \"bell\";\n loop: \"loop\";\n }>>;\n envelopeCycles: z.ZodDefault<z.ZodNumber>;\n fnBody: z.ZodDefault<z.ZodString>;\n fnOutputType: z.ZodDefault<z.ZodEnum<{\n f32: \"f32\";\n }>>;\n fnParams: z.ZodDefault<z.ZodArray<z.ZodObject<{\n name: z.ZodString;\n type: z.ZodEnum<{\n f32: \"f32\";\n i32: \"i32\";\n u32: \"u32\";\n vec2f: \"vec2f\";\n vec3f: \"vec3f\";\n vec4f: \"vec4f\";\n }>;\n defaultValue: z.ZodNumber;\n }, z.core.$strip>>>;\n previewMode: z.ZodDefault<z.ZodEnum<{\n pattern: \"pattern\";\n cartesian: \"cartesian\";\n \"3d\": \"3d\";\n }>>;\n}, z.core.$strip>;\ntype SignalNodeConfig = z.infer<typeof SignalNodeConfigSchema>;\ntype SignalNodeResult = z.infer<typeof SignalResultSchema>;\n//#endregion\nexport { FnParam, FnParamSchema, SignalNodeConfig, SignalNodeConfigSchema, SignalNodeResult, SignalResultSchema, WGSLOutputType, WGSLParamType, WGSL_OUTPUT_TYPES, WGSL_PARAM_TYPES };\n//# sourceMappingURL=index.d.mts.map","import \"./renderer.mjs\";\nimport * as _framefields_core0 from \"@framefields/core\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.d.ts\ndeclare const GateModeSchema: z.ZodEnum<{\n gate: \"gate\";\n trigger: \"trigger\";\n toggle: \"toggle\";\n}>;\ntype GateMode = z.infer<typeof GateModeSchema>;\ndeclare const SignalGateConfigSchema: z.ZodObject<{\n threshold: z.ZodDefault<z.ZodNumber>;\n debounceMs: z.ZodDefault<z.ZodNumber>;\n mode: z.ZodDefault<z.ZodEnum<{\n gate: \"gate\";\n trigger: \"trigger\";\n toggle: \"toggle\";\n }>>;\n holdFrames: z.ZodDefault<z.ZodNumber>;\n invert: z.ZodDefault<z.ZodBoolean>;\n}, z.core.$strip>;\ntype SignalGateConfig = z.infer<typeof SignalGateConfigSchema>;\ndeclare const SignalGateResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodNumber;\n outputs: z.ZodArray<z.ZodObject<{\n items: z.ZodArray<z.ZodType<_framefields_core0.OutputItem<\"Signal\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Signal\">, unknown>>>;\n }, z.core.$strip>>;\n sourceFingerprint: z.ZodOptional<z.ZodString>;\n}, z.core.$strip>;\ntype SignalGateResult = z.infer<typeof SignalGateResultSchema>;\n//#endregion\nexport { GateMode, GateModeSchema, SignalGateConfig, SignalGateConfigSchema, SignalGateResult, SignalGateResultSchema };\n//# sourceMappingURL=index.d.mts.map","import { z } from \"zod\";\nimport * as _framefields_core0 from \"@framefields/core\";\n\n//#region src/shared/config.d.ts\ndeclare const SignalMathOperationEnum: z.ZodEnum<{\n remap: \"remap\";\n normalize: \"normalize\";\n add: \"add\";\n subtract: \"subtract\";\n multiply: \"multiply\";\n divide: \"divide\";\n invert: \"invert\";\n clamp: \"clamp\";\n power: \"power\";\n smoothstep: \"smoothstep\";\n custom: \"custom\";\n}>;\ntype SignalMathOperation = z.infer<typeof SignalMathOperationEnum>;\ndeclare const SignalMathConfigSchema: z.ZodObject<{\n operation: z.ZodDefault<z.ZodEnum<{\n remap: \"remap\";\n normalize: \"normalize\";\n add: \"add\";\n subtract: \"subtract\";\n multiply: \"multiply\";\n divide: \"divide\";\n invert: \"invert\";\n clamp: \"clamp\";\n power: \"power\";\n smoothstep: \"smoothstep\";\n custom: \"custom\";\n }>>;\n bValue: z.ZodDefault<z.ZodNumber>;\n inMin: z.ZodDefault<z.ZodNumber>;\n inMax: z.ZodDefault<z.ZodNumber>;\n outMin: z.ZodDefault<z.ZodNumber>;\n outMax: z.ZodDefault<z.ZodNumber>;\n clampMin: z.ZodDefault<z.ZodNumber>;\n clampMax: z.ZodDefault<z.ZodNumber>;\n exponent: z.ZodDefault<z.ZodNumber>;\n edge0: z.ZodDefault<z.ZodNumber>;\n edge1: z.ZodDefault<z.ZodNumber>;\n customWGSL: z.ZodDefault<z.ZodString>;\n}, z.core.$strip>;\ntype SignalMathConfig = z.infer<typeof SignalMathConfigSchema>;\ndeclare const SignalMathResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodNumber;\n outputs: z.ZodArray<z.ZodObject<{\n items: z.ZodArray<z.ZodType<_framefields_core0.OutputItem<\"Signal\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Signal\">, unknown>>>;\n }, z.core.$strip>>;\n sourceFingerprint: z.ZodOptional<z.ZodString>;\n}, z.core.$strip>;\ntype SignalMathResult = z.infer<typeof SignalMathResultSchema>;\n//#endregion\nexport { SignalMathConfig, SignalMathConfigSchema, SignalMathOperation, SignalMathOperationEnum, SignalMathResult, SignalMathResultSchema };\n//# sourceMappingURL=index.d.mts.map"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Pt as MeshAudioDeformConfig, ur as VirtualMediaData } from "./index-9_4X2ro1.mjs";
1
+ import { Pt as MeshAudioDeformConfig, ur as VirtualMediaData } from "./index-COYNQ_mf.mjs";
2
2
  import { z } from "zod";
3
3
  import { Input, VideoSample } from "mediabunny";
4
4
  import "fontkit";
@@ -3988,6 +3988,26 @@ declare const shaderStore: ShaderStore;
3988
3988
  * Processes 16-float (64-byte) vertex streams in parallel at 256 threads per workgroup.
3989
3989
  */
3990
3990
 
3991
+ //#endregion
3992
+ //#region src/signals/audio-pitch-compute.d.ts
3993
+ /**
3994
+ * Fundamental-frequency (f0) tracking: YIN period candidates on the GPU, then
3995
+ * a Viterbi decode on the CPU (in the spirit of pYIN) that keeps the track
3996
+ * continuous across octave errors and marks frames with no clear period as
3997
+ * unvoiced.
3998
+ */
3999
+ interface AudioPitchTrackConfig {
4000
+ /** Lowest pitch to search, in Hz. The longest period must fit in `MAX_PITCH_LAG` samples. */
4001
+ minHz?: number;
4002
+ /** Highest pitch to search, in Hz. */
4003
+ maxHz?: number;
4004
+ /** Analysis window per frame, in milliseconds. Never shorter than the longest period. */
4005
+ windowMs?: number;
4006
+ /** YIN dip depth (0..1) above which a frame is treated as unvoiced. Higher accepts noisier sources. */
4007
+ voicingThreshold?: number;
4008
+ /** Cost per octave of pitch change between neighboring frames. Higher gives a smoother track. */
4009
+ octaveJumpCost?: number;
4010
+ }
3991
4011
  //#endregion
3992
4012
  //#region src/signals/audio-signal-compute.d.ts
3993
4013
  interface AudioSignalComputeConfig {
@@ -4369,5 +4389,5 @@ declare global {
4369
4389
  var __GATEWAI_DELAYS__: Set<number>;
4370
4390
  }
4371
4391
  //#endregion
4372
- export { lutStore as $, evaluateSkewMatrix as $n, SelectorUnits as $t, RingGeometryOptions as A, TypewriterAnimatorSchema as An, LightsUniformData as Ar, ExpressionSelectorSchema as At, SphereGeometryOptions as B, VolumetricFormationModeSchema as Bn, Vector3Math as Br, LineSpacingDynamicsSchema as Bt, MotionBlurPipeline as C, TextSelector as Cn, FrustumPlanes as Cr, CubicBezierSegmentSchema as Ct, RenderContextValue as D, TextWigglySelector as Dn, Light3D as Dr, EnhancedTextNodeSchema as Dt, PolyhedronGeometryOptions as E, TextSignalSelectorSchema as En, LIGHT_UNIFORM_SIZE_BYTES as Er, EnhancedTextNode as Et, SignalRegistry as F, Vec2 as Fn, Path3DPoint as Fr, GlyphAnchorPoint as Ft, buildWGSLSignalFn as G, deterministicWigglyNoise as Gn, PathChainLUT as Gt, TubeGeometryOptions as H, computeAnchorPivotOffset as Hn, parseColorToRgb as Hr, LongShadowConfigSchema as Ht, SignalRegistryResource as I, Vec2Schema as In, Path3DSample as Ir, GlyphAnchorPointSchema as It, initHeadlessWebGPU as J, evaluateCubicBezier as Jn, SelectorBasedOnSchema as Jt, describeGpu as K, distanceToCurveParameter as Kn, PathChainLUTEntry as Kt, Skeleton3D as L, VolumetricFormationConfig as Ln, ResolvedEnvironment as Lr, KineticMarqueeConfig as Lt, SSAOPipeline as M, TypingCadenceSchema as Mn, Mat4 as Mr, ExtendedGlyphPropertiesSchema as Mt, ShadowPipeline as N, VariableFontAxes as Nn, Matrix4Math as Nr, GlyphAnchorGrouping as Nt, Renderer2D as O, TextWigglySelectorSchema as On, Light3DOptions as Or, ExpressionEvaluationContext as Ot, ShardGeometryOptions as P, VariableFontAxesSchema as Pn, Path3D as Pr, GlyphAnchorGroupingSchema as Pt, loadOBJ as Q, evaluateSelectorCombination as Qn, SelectorShapeSchema as Qt, SlugFontCache as R, VolumetricFormationConfigSchema as Rn, ShadowUniformInfo as Rr, KineticMarqueeConfigSchema as Rt, Model3DData as S, TextScrambleConfigSchema as Sn, FrustumPlane as Sr, CubicBezierSegment as St, Points3DGeometryOptions as T, TextSignalSelector as Tn, HelixOptions as Tr, DynamicStrokePropertiesSchema as Tt, TubePathSpec as U, computeLineLeadingDisplacement as Un, resolveEnvironment as Ur, ParticleDissolveConfig as Ut, TorusGeometryOptions as V, buildPathLUT as Vn, linearRgb as Vr, LongShadowConfig as Vt, WebGPUAudioProcessor as W, computeRangeSelectorWeight as Wn, ParticleDissolveConfigSchema as Wt, loadFBX as X, evaluateExpressionSelector as Xn, SelectorModeSchema as Xt, inputStore as Y, evaluateCubicBezierDerivative as Yn, SelectorMode as Yt, loadModel3D as Z, evaluateMarqueeOffset as Zn, SelectorShape as Zt, Line3DGeometryOptions as _, TextPathSource as _n, CirclePathOptions as _r, ArcLengthLUTEntry as _t, AudioMeshDeformPipeline as a, SpringPhysics as an, getScramblePool as ar, textureCache as at, Material3D as b, TextRangeSelectorSchema as bn, Environment3DFog as br, ChromaticGlitchConfig as bt, BlendMode as c, TextAnchorConfigSchema as cn, sampleAudioSpectrumScale as cr, AdvancedTextAnimator as ct, CylinderGeometryOptions as d, TextCursorConfigSchema as dn, waveToCubicBeziers as dr, AnchorGrouping as dt, SelectorUnitsSchema as en, evaluateSpringProgress as er, parseFBX as et, EffectPipeline as f, TextCursorStyle as fn, BezierSegment3D as fr, AnchorGroupingSchema as ft, LatheGeometryOptions as g, TextPathOptionsSchema as gn, CatmullRomOptions as gr, AnimatableGlyphPropsSchema as gt, GpuAdapterDescription as h, TextPathOptions as hn, CameraShakeOptions as hr, AnimatableGlyphProps as ht, AudioLatentTrackCache as i, Spatial3DPropertiesSchema as in, generatePathSegments as ir, signalRegistry as it, RoundedBoxGeometryOptions as j, TypingCadence as jn, MAX_LIGHTS as jr, ExtendedGlyphProperties as jt, Renderer3D as k, TypewriterAnimator as kn, LightKind as kr, ExpressionSelector as kt, Bone3D as l, TextAnimatorBuilder as ln, sampleCurveGeometry as lr, AdvancedTextAnimatorBuilder as lt, GlassPipeline as m, TextPathBuilder as mn, Camera3DPose as mr, AnchorPresetSchema as mt, AudioLatentData as n, SkewPropertiesSchema as nn, evaluateVolumetricFormation as nr, parseOBJ as nt, AudioSignalComputeConfig as o, SpringPhysicsSchema as on, getShuffledOrder as or, AETextAnimator as ot, ExtrudeShapeGeometryOptions as p, TextCursorStyleSchema as pn, Camera3D as pr, AnchorPreset as pt, ensureDevice as q, ellipseToCubicBeziers as qn, SelectorBasedOn as qt, AudioLatentEngine as r, Spatial3DProperties as rn, generateArcLengthLUT as rr, shaderStore as rt, AudioSignalComputePipeline as s, TextAnchorConfig as sn, parseSvgPathToCubicBeziers as sr, AETextAnimatorSchema as st, AnimationClip3D as t, SkewProperties as tn, evaluateTypewriterState as tr, parseMTL as tt, CapsuleGeometryOptions as u, TextCursorConfig as un, samplePathChainGeometry as ur, AdvancedTextAnimatorSchema as ut, LoadModelOptions as v, TextPathSourceSchema as vn, ENVIRONMENT_PRESETS as vr, AudioSpectrumTypography as vt, NodeAnimationTrack3D as w, TextSelectorSchema as wn, GPULightData as wr, DynamicStrokeProperties as wt, Mesh3DData as x, TextScrambleConfig as xn, Environment3DOptions as xr, ChromaticGlitchConfigSchema as xt, MasterAudioEntry as y, TextRangeSelector as yn, Environment3DFloor as yr, AudioSpectrumTypographySchema as yt, SlugPipeline as z, VolumetricFormationMode as zn, Vec3 as zr, LineSpacingDynamics as zt };
4373
- //# sourceMappingURL=index-Bzo1uj8h.d.mts.map
4392
+ export { loadOBJ as $, evaluateSelectorCombination as $n, SelectorShapeSchema as $t, Renderer3D as A, TypewriterAnimator as An, LightKind as Ar, ExpressionSelector as At, SlugPipeline as B, VolumetricFormationMode as Bn, Vec3 as Br, LineSpacingDynamics as Bt, Model3DData as C, TextScrambleConfigSchema as Cn, FrustumPlane as Cr, CubicBezierSegment as Ct, PolyhedronGeometryOptions as D, TextSignalSelectorSchema as Dn, LIGHT_UNIFORM_SIZE_BYTES as Dr, EnhancedTextNode as Dt, Points3DGeometryOptions as E, TextSignalSelector as En, HelixOptions as Er, DynamicStrokePropertiesSchema as Et, ShardGeometryOptions as F, VariableFontAxesSchema as Fn, Path3D as Fr, GlyphAnchorGroupingSchema as Ft, WebGPUAudioProcessor as G, computeRangeSelectorWeight as Gn, ParticleDissolveConfigSchema as Gt, TorusGeometryOptions as H, buildPathLUT as Hn, linearRgb as Hr, LongShadowConfig as Ht, SignalRegistry as I, Vec2 as In, Path3DPoint as Ir, GlyphAnchorPoint as It, ensureDevice as J, ellipseToCubicBeziers as Jn, SelectorBasedOn as Jt, buildWGSLSignalFn as K, deterministicWigglyNoise as Kn, PathChainLUT as Kt, SignalRegistryResource as L, Vec2Schema as Ln, Path3DSample as Lr, GlyphAnchorPointSchema as Lt, RoundedBoxGeometryOptions as M, TypingCadence as Mn, MAX_LIGHTS as Mr, ExtendedGlyphProperties as Mt, SSAOPipeline as N, TypingCadenceSchema as Nn, Mat4 as Nr, ExtendedGlyphPropertiesSchema as Nt, RenderContextValue as O, TextWigglySelector as On, Light3D as Or, EnhancedTextNodeSchema as Ot, ShadowPipeline as P, VariableFontAxes as Pn, Matrix4Math as Pr, GlyphAnchorGrouping as Pt, loadModel3D as Q, evaluateMarqueeOffset as Qn, SelectorShape as Qt, Skeleton3D as R, VolumetricFormationConfig as Rn, ResolvedEnvironment as Rr, KineticMarqueeConfig as Rt, Mesh3DData as S, TextScrambleConfig as Sn, Environment3DOptions as Sr, ChromaticGlitchConfigSchema as St, NodeAnimationTrack3D as T, TextSelectorSchema as Tn, GPULightData as Tr, DynamicStrokeProperties as Tt, TubeGeometryOptions as U, computeAnchorPivotOffset as Un, parseColorToRgb as Ur, LongShadowConfigSchema as Ut, SphereGeometryOptions as V, VolumetricFormationModeSchema as Vn, Vector3Math as Vr, LineSpacingDynamicsSchema as Vt, TubePathSpec as W, computeLineLeadingDisplacement as Wn, resolveEnvironment as Wr, ParticleDissolveConfig as Wt, inputStore as X, evaluateCubicBezierDerivative as Xn, SelectorMode as Xt, initHeadlessWebGPU as Y, evaluateCubicBezier as Yn, SelectorBasedOnSchema as Yt, loadFBX as Z, evaluateExpressionSelector as Zn, SelectorModeSchema as Zt, LatheGeometryOptions as _, TextPathOptionsSchema as _n, CatmullRomOptions as _r, AnimatableGlyphPropsSchema as _t, AudioMeshDeformPipeline as a, Spatial3DPropertiesSchema as an, generatePathSegments as ar, signalRegistry as at, MasterAudioEntry as b, TextRangeSelector as bn, Environment3DFloor as br, AudioSpectrumTypographySchema as bt, AudioSignalComputePipeline as c, TextAnchorConfig as cn, parseSvgPathToCubicBeziers as cr, AETextAnimatorSchema as ct, CapsuleGeometryOptions as d, TextCursorConfig as dn, samplePathChainGeometry as dr, AdvancedTextAnimatorSchema as dt, SelectorUnits as en, evaluateSkewMatrix as er, lutStore as et, CylinderGeometryOptions as f, TextCursorConfigSchema as fn, waveToCubicBeziers as fr, AnchorGrouping as ft, GpuAdapterDescription as g, TextPathOptions as gn, CameraShakeOptions as gr, AnimatableGlyphProps as gt, GlassPipeline as h, TextPathBuilder as hn, Camera3DPose as hr, AnchorPresetSchema as ht, AudioLatentTrackCache as i, Spatial3DProperties as in, generateArcLengthLUT as ir, shaderStore as it, RingGeometryOptions as j, TypewriterAnimatorSchema as jn, LightsUniformData as jr, ExpressionSelectorSchema as jt, Renderer2D as k, TextWigglySelectorSchema as kn, Light3DOptions as kr, ExpressionEvaluationContext as kt, BlendMode as l, TextAnchorConfigSchema as ln, sampleAudioSpectrumScale as lr, AdvancedTextAnimator as lt, ExtrudeShapeGeometryOptions as m, TextCursorStyleSchema as mn, Camera3D as mr, AnchorPreset as mt, AudioLatentData as n, SkewProperties as nn, evaluateTypewriterState as nr, parseMTL as nt, AudioPitchTrackConfig as o, SpringPhysics as on, getScramblePool as or, textureCache as ot, EffectPipeline as p, TextCursorStyle as pn, BezierSegment3D as pr, AnchorGroupingSchema as pt, describeGpu as q, distanceToCurveParameter as qn, PathChainLUTEntry as qt, AudioLatentEngine as r, SkewPropertiesSchema as rn, evaluateVolumetricFormation as rr, parseOBJ as rt, AudioSignalComputeConfig as s, SpringPhysicsSchema as sn, getShuffledOrder as sr, AETextAnimator as st, AnimationClip3D as t, SelectorUnitsSchema as tn, evaluateSpringProgress as tr, parseFBX as tt, Bone3D as u, TextAnimatorBuilder as un, sampleCurveGeometry as ur, AdvancedTextAnimatorBuilder as ut, Line3DGeometryOptions as v, TextPathSource as vn, CirclePathOptions as vr, ArcLengthLUTEntry as vt, MotionBlurPipeline as w, TextSelector as wn, FrustumPlanes as wr, CubicBezierSegmentSchema as wt, Material3D as x, TextRangeSelectorSchema as xn, Environment3DFog as xr, ChromaticGlitchConfig as xt, LoadModelOptions as y, TextPathSourceSchema as yn, ENVIRONMENT_PRESETS as yr, AudioSpectrumTypography as yt, SlugFontCache as z, VolumetricFormationConfigSchema as zn, ShadowUniformInfo as zr, KineticMarqueeConfigSchema as zt };
4393
+ //# sourceMappingURL=index-BuiZzc6i.d.mts.map