framefields 2.5.2 → 2.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/dist/audio/index.d.mts +4 -4
  2. package/dist/audio/index.mjs +10 -10
  3. package/dist/{audio-pIgFoKQ2.d.mts → audio-B5mdR8vv.d.mts} +3 -3
  4. package/dist/{audio-pIgFoKQ2.d.mts.map → audio-B5mdR8vv.d.mts.map} +1 -1
  5. package/dist/{audio-CZwVENqB.mjs → audio-C9euVW4K.mjs} +4 -4
  6. package/dist/{audio-CZwVENqB.mjs.map → audio-C9euVW4K.mjs.map} +1 -1
  7. package/dist/components/index.d.mts +10 -10
  8. package/dist/components/index.mjs +45 -45
  9. package/dist/{dist-CQZ5_60A.mjs → dist-BPOi5xb_.mjs} +2 -2
  10. package/dist/dist-BPOi5xb_.mjs.map +1 -0
  11. package/dist/{dist-DBWkkSvJ.mjs → dist-BuirkW-f.mjs} +76 -30
  12. package/dist/dist-BuirkW-f.mjs.map +1 -0
  13. package/dist/{dist-DFeF-ygz.mjs → dist-D021IFfp.mjs} +3 -1
  14. package/dist/{dist-DFeF-ygz.mjs.map → dist-D021IFfp.mjs.map} +1 -1
  15. package/dist/{dist-DHQVWaV2.mjs → dist-DBdxM6xv.mjs} +6 -7
  16. package/dist/dist-DBdxM6xv.mjs.map +1 -0
  17. package/dist/effects/index.d.mts +4 -4
  18. package/dist/effects/index.mjs +35 -35
  19. package/dist/{effects-DZvq-nWT.mjs → effects-B263lgUi.mjs} +3 -3
  20. package/dist/{effects-DZvq-nWT.mjs.map → effects-B263lgUi.mjs.map} +1 -1
  21. package/dist/fonts/index.mjs +2 -2
  22. package/dist/{fonts-DcsxFpyU.mjs → fonts-DNx6ps2p.mjs} +2 -2
  23. package/dist/{fonts-DcsxFpyU.mjs.map → fonts-DNx6ps2p.mjs.map} +1 -1
  24. package/dist/{gpu-Dq_uI_00.mjs → gpu-BRBIoxMC.mjs} +2 -2
  25. package/dist/{gpu-Dq_uI_00.mjs.map → gpu-BRBIoxMC.mjs.map} +1 -1
  26. package/dist/{index-Dbwf24s4.d.mts → index-3Vdef2KE.d.mts} +3 -3
  27. package/dist/{index-Dbwf24s4.d.mts.map → index-3Vdef2KE.d.mts.map} +1 -1
  28. package/dist/{index-BE1KdTQ7.d.mts → index-B4o6F1JC.d.mts} +2 -2
  29. package/dist/{index-BE1KdTQ7.d.mts.map → index-B4o6F1JC.d.mts.map} +1 -1
  30. package/dist/{index-DPP5g-Si.d.mts → index-BhzlG_1Q.d.mts} +2 -2
  31. package/dist/{index-DPP5g-Si.d.mts.map → index-BhzlG_1Q.d.mts.map} +1 -1
  32. package/dist/{index-CEsl2BcF.d.mts → index-D-Gnyffj.d.mts} +4 -4
  33. package/dist/{index-CEsl2BcF.d.mts.map → index-D-Gnyffj.d.mts.map} +1 -1
  34. package/dist/{index-BlPLU_a1.d.mts → index-N1tMc5Z9.d.mts} +183 -185
  35. package/dist/index-N1tMc5Z9.d.mts.map +1 -0
  36. package/dist/{index-BAXaZC6T.d.mts → index-o8LxWdwz.d.mts} +3 -3
  37. package/dist/{index-BAXaZC6T.d.mts.map → index-o8LxWdwz.d.mts.map} +1 -1
  38. package/dist/{index-C6awQk4-.d.mts → index-ocZc12ZS.d.mts} +22 -19
  39. package/dist/index-ocZc12ZS.d.mts.map +1 -0
  40. package/dist/index.d.mts +11 -11
  41. package/dist/index.mjs +53 -53
  42. package/dist/preview/index.d.mts +3 -3
  43. package/dist/preview/index.mjs +10 -10
  44. package/dist/{preview-CYI4i4m3.mjs → preview-ChR8Z8Fm.mjs} +2 -2
  45. package/dist/{preview-CYI4i4m3.mjs.map → preview-ChR8Z8Fm.mjs.map} +1 -1
  46. package/dist/preview-engine/audio.mjs +1 -1
  47. package/dist/preview-engine/{chunk-CT2WFPYG.mjs → chunk-2LQCQ3OT.mjs} +10 -10
  48. package/dist/preview-engine/{chunk-AB5VITYM.mjs → chunk-2TCJSHFA.mjs} +1 -1
  49. package/dist/preview-engine/{chunk-JMOJKT5W.mjs → chunk-2YGR5YCN.mjs} +1 -1
  50. package/dist/preview-engine/{chunk-LNJYHSYX.mjs → chunk-3KHD67Q3.mjs} +1 -1
  51. package/dist/preview-engine/chunk-3SR6BI4B.mjs +1 -0
  52. package/dist/preview-engine/{chunk-NXKXOSE6.mjs → chunk-4INGTMZ5.mjs} +1 -1
  53. package/dist/preview-engine/{chunk-T4VP45AP.mjs → chunk-4JX5LBE2.mjs} +1 -1
  54. package/dist/preview-engine/{chunk-7JYMNGNK.mjs → chunk-5NT7WWJR.mjs} +1 -1
  55. package/dist/preview-engine/{chunk-NB55FW7D.mjs → chunk-6PMATELR.mjs} +1 -1
  56. package/dist/preview-engine/{chunk-PDM3TJ45.mjs → chunk-AKT4YQWL.mjs} +1 -1
  57. package/dist/preview-engine/{chunk-RNFYEZLL.mjs → chunk-ALSOO22Q.mjs} +1 -1
  58. package/dist/preview-engine/{chunk-3AYICEZ5.mjs → chunk-B7J72YSP.mjs} +1 -1
  59. package/dist/preview-engine/{chunk-W4HIVUUA.mjs → chunk-BBHRXV75.mjs} +1 -1
  60. package/dist/preview-engine/{chunk-NHQR76WL.mjs → chunk-DDFWN7DI.mjs} +1 -1
  61. package/dist/preview-engine/{chunk-ZVUTFXDR.mjs → chunk-DOCFOSA6.mjs} +1 -1
  62. package/dist/preview-engine/{chunk-YJ24W73B.mjs → chunk-FZLKPBKS.mjs} +1 -1
  63. package/dist/preview-engine/{chunk-EU7CFSB5.mjs → chunk-GQIRV466.mjs} +1 -1
  64. package/dist/preview-engine/{chunk-DWHQSNSJ.mjs → chunk-IIOHF7MH.mjs} +1 -1
  65. package/dist/preview-engine/{chunk-WUMVCQYI.mjs → chunk-J24VHZS6.mjs} +1 -1
  66. package/dist/preview-engine/{chunk-3I6B3YPF.mjs → chunk-JD4TBC6Z.mjs} +8 -8
  67. package/dist/preview-engine/{chunk-X6BJLPW6.mjs → chunk-JTT3YX7W.mjs} +1 -1
  68. package/dist/preview-engine/{chunk-XJ4CQIZZ.mjs → chunk-KWTTANYN.mjs} +1 -1
  69. package/dist/preview-engine/{chunk-QCUGWPYP.mjs → chunk-LN3YAWUD.mjs} +1 -1
  70. package/dist/preview-engine/{chunk-M6ZKK6ZU.mjs → chunk-LYSU6S4O.mjs} +1 -1
  71. package/dist/preview-engine/{chunk-TE2QAKKF.mjs → chunk-MJCK5FLZ.mjs} +1 -1
  72. package/dist/preview-engine/{chunk-24H3QVYB.mjs → chunk-MMVFX42U.mjs} +1 -1
  73. package/dist/preview-engine/{chunk-25T3M6MI.mjs → chunk-MUOJMF7M.mjs} +1 -1
  74. package/dist/preview-engine/{chunk-Z4TKEI3I.mjs → chunk-NQZRPPUU.mjs} +1 -1
  75. package/dist/preview-engine/{chunk-VTE3IISK.mjs → chunk-OXXRKNHW.mjs} +1 -1
  76. package/dist/preview-engine/{chunk-DUEY7AXY.mjs → chunk-PJMX2GFY.mjs} +1 -1
  77. package/dist/preview-engine/{chunk-MA4YVA2E.mjs → chunk-Q7JN4EHX.mjs} +1 -1
  78. package/dist/preview-engine/{chunk-SNASF7OM.mjs → chunk-Q7XC3FI7.mjs} +1 -1
  79. package/dist/preview-engine/{chunk-UXCTWFKK.mjs → chunk-QPBTLJ5W.mjs} +1 -1
  80. package/dist/preview-engine/{chunk-LQVACZDE.mjs → chunk-QRYCB6E3.mjs} +1 -1
  81. package/dist/preview-engine/{chunk-2QQQTZHS.mjs → chunk-RDEQ4LQU.mjs} +1 -1
  82. package/dist/preview-engine/{chunk-KKBJ7X3T.mjs → chunk-RF62TV3G.mjs} +1 -1
  83. package/dist/preview-engine/{chunk-CE6CG5BH.mjs → chunk-RHXZXWJ4.mjs} +1 -1
  84. package/dist/preview-engine/{chunk-BNO5JAEZ.mjs → chunk-RKNV5N7D.mjs} +1 -1
  85. package/dist/preview-engine/{chunk-PXWCGXTF.mjs → chunk-SP22JWN2.mjs} +1 -1
  86. package/dist/preview-engine/{chunk-NYEDWUFS.mjs → chunk-SQ52PBF3.mjs} +1 -1
  87. package/dist/preview-engine/{chunk-QYIKOOFI.mjs → chunk-SVE3XWO7.mjs} +1 -1
  88. package/dist/preview-engine/{chunk-QJYAIQYU.mjs → chunk-SXNCNG4L.mjs} +1 -1
  89. package/dist/preview-engine/chunk-SYP4AJMF.mjs +1 -0
  90. package/dist/preview-engine/{chunk-VH5V54RA.mjs → chunk-TPFDAOW7.mjs} +1 -1
  91. package/dist/preview-engine/{chunk-ENS4KUJV.mjs → chunk-UEQIO6AH.mjs} +1 -1
  92. package/dist/preview-engine/{chunk-XYRBFLFF.mjs → chunk-ULPLHKM2.mjs} +1 -1
  93. package/dist/preview-engine/{chunk-MCR7XMNQ.mjs → chunk-ULVX4VYT.mjs} +1 -1
  94. package/dist/preview-engine/{chunk-ZAIVXGSS.mjs → chunk-UQD2UE6I.mjs} +1 -1
  95. package/dist/preview-engine/{chunk-NAISBHLR.mjs → chunk-VY6ST4QX.mjs} +1 -1
  96. package/dist/preview-engine/{chunk-7BUKVFWB.mjs → chunk-W2EZFV4Q.mjs} +1 -1
  97. package/dist/preview-engine/{chunk-P734GD7D.mjs → chunk-WDWHOXSA.mjs} +1 -1
  98. package/dist/preview-engine/{chunk-2RZ6S4SW.mjs → chunk-YEPYVASB.mjs} +1 -1
  99. package/dist/preview-engine/chunk-ZJLNXN7W.mjs +480 -0
  100. package/dist/preview-engine/{chunk-6GMEF2QB.mjs → chunk-ZZAZF6VC.mjs} +1 -1
  101. package/dist/preview-engine/components.mjs +1 -1
  102. package/dist/preview-engine/effects.mjs +1 -1
  103. package/dist/preview-engine/fonts.mjs +1 -1
  104. package/dist/preview-engine/framefields.mjs +1 -1
  105. package/dist/preview-engine/player.mjs +1 -1
  106. package/dist/preview-engine/renderers-4CRXZJ5G.mjs +1 -0
  107. package/dist/preview-engine/{renderers-WPBTAU2E.mjs → renderers-4RVSLTCX.mjs} +1 -1
  108. package/dist/preview-engine/{renderers-W5CTR4B5.mjs → renderers-56TGEFDK.mjs} +1 -1
  109. package/dist/preview-engine/renderers-5QF4OLFQ.mjs +1 -0
  110. package/dist/preview-engine/renderers-5SOW6OVE.mjs +1 -0
  111. package/dist/preview-engine/renderers-6M2HPY2J.mjs +1 -0
  112. package/dist/preview-engine/{renderers-DZZFIYYA.mjs → renderers-7GMW52G3.mjs} +1 -1
  113. package/dist/preview-engine/renderers-7HT5NW7W.mjs +1 -0
  114. package/dist/preview-engine/{renderers-KV3TTCO6.mjs → renderers-7SW2AHM2.mjs} +1 -1
  115. package/dist/preview-engine/{renderers-BNXTSIXJ.mjs → renderers-ART3EGSZ.mjs} +1 -1
  116. package/dist/preview-engine/{renderers-6NFRKHNO.mjs → renderers-ATTGUTYY.mjs} +1 -1
  117. package/dist/preview-engine/renderers-AYWCRBQC.mjs +1 -0
  118. package/dist/preview-engine/renderers-BA6ZCPI5.mjs +1 -0
  119. package/dist/preview-engine/{renderers-AKZAAGR7.mjs → renderers-BAS7RXTC.mjs} +1 -1
  120. package/dist/preview-engine/{renderers-CLLR5MOQ.mjs → renderers-BWRNCXR6.mjs} +1 -1
  121. package/dist/preview-engine/{renderers-N7T34SCI.mjs → renderers-C3YXNKNM.mjs} +1 -1
  122. package/dist/preview-engine/renderers-CZTCW4FC.mjs +1 -0
  123. package/dist/preview-engine/{renderers-C7SJ3M6S.mjs → renderers-D2XEQ2YY.mjs} +1 -1
  124. package/dist/preview-engine/renderers-DFIJYBW2.mjs +1 -0
  125. package/dist/preview-engine/{renderers-DHKB5LI6.mjs → renderers-EJGF3PYQ.mjs} +1 -1
  126. package/dist/preview-engine/renderers-EJN6M6DO.mjs +1 -0
  127. package/dist/preview-engine/{renderers-MKEXNBCW.mjs → renderers-EK3HQUUF.mjs} +1 -1
  128. package/dist/preview-engine/{renderers-O56IOD7J.mjs → renderers-EQDINUMT.mjs} +1 -1
  129. package/dist/preview-engine/{renderers-VYK2BJID.mjs → renderers-FC7G7KU7.mjs} +1 -1
  130. package/dist/preview-engine/{renderers-BQLYS4TM.mjs → renderers-FD3ZT73R.mjs} +1 -1
  131. package/dist/preview-engine/{renderers-TASYN62K.mjs → renderers-FYI6QNUH.mjs} +1 -1
  132. package/dist/preview-engine/renderers-G34C5J27.mjs +1 -0
  133. package/dist/preview-engine/{renderers-ROSSJ7Y2.mjs → renderers-GHP7SL5M.mjs} +1 -1
  134. package/dist/preview-engine/renderers-GKVTNDVH.mjs +1 -0
  135. package/dist/preview-engine/{renderers-MPCYLXXU.mjs → renderers-GY4R467B.mjs} +1 -1
  136. package/dist/preview-engine/{renderers-TAMDNTEQ.mjs → renderers-H2UI7YEO.mjs} +1 -1
  137. package/dist/preview-engine/{renderers-6PVGRTXV.mjs → renderers-HBIBRZD7.mjs} +1 -1
  138. package/dist/preview-engine/{renderers-GF77N2KM.mjs → renderers-HMNCIEU3.mjs} +1 -1
  139. package/dist/preview-engine/{renderers-SIBP54WK.mjs → renderers-HZBYQKIQ.mjs} +1 -1
  140. package/dist/preview-engine/renderers-IK7ZJJKJ.mjs +1 -0
  141. package/dist/preview-engine/renderers-ISASPH6T.mjs +1 -0
  142. package/dist/preview-engine/renderers-IW5MWDBI.mjs +1 -0
  143. package/dist/preview-engine/renderers-K2PI4WJS.mjs +1 -0
  144. package/dist/preview-engine/renderers-KESHVFL2.mjs +1 -0
  145. package/dist/preview-engine/renderers-KTZZVAB2.mjs +1 -0
  146. package/dist/preview-engine/renderers-KY5CJEOV.mjs +1 -0
  147. package/dist/preview-engine/{renderers-MS4HG3M4.mjs → renderers-LTV5RFDJ.mjs} +1 -1
  148. package/dist/preview-engine/{renderers-CEJP6Q7F.mjs → renderers-LV6LLULR.mjs} +1 -1
  149. package/dist/preview-engine/renderers-M5W6SUQD.mjs +1 -0
  150. package/dist/preview-engine/{renderers-H3ZM2TOA.mjs → renderers-MEM3REMI.mjs} +1 -1
  151. package/dist/preview-engine/{renderers-HJ6NO5ZD.mjs → renderers-N36R42RL.mjs} +1 -1
  152. package/dist/preview-engine/{renderers-UVABXXQF.mjs → renderers-NTKSN32T.mjs} +1 -1
  153. package/dist/preview-engine/renderers-O5XMWFPY.mjs +1 -0
  154. package/dist/preview-engine/{renderers-QO2RHF7F.mjs → renderers-P2FTCDZ7.mjs} +1 -1
  155. package/dist/preview-engine/{renderers-L7EITUCD.mjs → renderers-PYDOSDEY.mjs} +1 -1
  156. package/dist/preview-engine/renderers-QJA35PKC.mjs +1 -0
  157. package/dist/preview-engine/{renderers-TWZHTKW7.mjs → renderers-RDHHVXRE.mjs} +1 -1
  158. package/dist/preview-engine/{renderers-RRJ2DX2W.mjs → renderers-SY435YU3.mjs} +1 -1
  159. package/dist/preview-engine/renderers-TJIFTQHV.mjs +1 -0
  160. package/dist/preview-engine/renderers-TN4XN436.mjs +1 -0
  161. package/dist/preview-engine/renderers-UDYLCYCB.mjs +1 -0
  162. package/dist/preview-engine/renderers-WZ7SFIBZ.mjs +1 -0
  163. package/dist/preview-engine/renderers-WZEV464O.mjs +228 -0
  164. package/dist/preview-engine/renderers-X6QNDC6R.mjs +1 -0
  165. package/dist/preview-engine/renderers-X6RNTJOV.mjs +1 -0
  166. package/dist/preview-engine/{renderers-QPFZBLDI.mjs → renderers-Y3N7236P.mjs} +1 -1
  167. package/dist/preview-engine/{renderers-XSPU2BIQ.mjs → renderers-YBTWN76S.mjs} +1 -1
  168. package/dist/preview-engine/{renderers-T62TXGVO.mjs → renderers-YK74777T.mjs} +1 -1
  169. package/dist/preview-engine/renderers-YP3ASXIJ.mjs +1 -0
  170. package/dist/preview-engine/renderers-YVJAG3PD.mjs +1 -0
  171. package/dist/preview-engine/{renderers-4RFB2LG2.mjs → renderers-ZAMSS7QN.mjs} +1 -1
  172. package/dist/preview-engine/{renderers-FOHW7RWH.mjs → renderers-ZDMDDWLN.mjs} +1 -1
  173. package/dist/preview-engine/renderers-ZPPZNMKJ.mjs +1 -0
  174. package/dist/preview-engine/signals.mjs +1 -1
  175. package/dist/{program-BdPDtfVv.mjs → program-O2bWX0cs.mjs} +4 -4
  176. package/dist/{program-BdPDtfVv.mjs.map → program-O2bWX0cs.mjs.map} +1 -1
  177. package/dist/registry/captions.json +1 -1
  178. package/dist/registry/card-stack.json +3 -2
  179. package/dist/registry/chat-thread.json +4 -3
  180. package/dist/registry/index.json +3 -2
  181. package/dist/registry/lower-third.json +1 -1
  182. package/dist/registry/meter.json +1 -1
  183. package/dist/renderer/index.d.mts +2 -2
  184. package/dist/renderer/index.mjs +2 -2
  185. package/dist/renderer-0441BN0U.mjs +5 -0
  186. package/dist/{renderer-B31zMDE8.mjs → renderer-1NoJLLDa.mjs} +5 -5
  187. package/dist/{renderer-B31zMDE8.mjs.map → renderer-1NoJLLDa.mjs.map} +1 -1
  188. package/dist/renderer-3qDgFc-W.mjs +5 -0
  189. package/dist/renderer-6AIqTN5Z.mjs +5 -0
  190. package/dist/{renderer-DP41Fokp.mjs → renderer-8_d6YNnE.mjs} +4 -4
  191. package/dist/{renderer-DP41Fokp.mjs.map → renderer-8_d6YNnE.mjs.map} +1 -1
  192. package/dist/{renderer-PLoGrFGz.mjs → renderer-B0IJirDs.mjs} +4 -4
  193. package/dist/{renderer-PLoGrFGz.mjs.map → renderer-B0IJirDs.mjs.map} +1 -1
  194. package/dist/{renderer-CdUf7ZDJ.mjs → renderer-B2no_9zi.mjs} +4 -4
  195. package/dist/{renderer-CdUf7ZDJ.mjs.map → renderer-B2no_9zi.mjs.map} +1 -1
  196. package/dist/{renderer-D6p8b6ql.mjs → renderer-B5ZdkcMi.mjs} +4 -4
  197. package/dist/{renderer-D6p8b6ql.mjs.map → renderer-B5ZdkcMi.mjs.map} +1 -1
  198. package/dist/renderer-B7MZ5R7u.mjs +5 -0
  199. package/dist/{renderer-BBTkfhL8.mjs → renderer-B7vXnBUo.mjs} +4 -4
  200. package/dist/{renderer-BBTkfhL8.mjs.map → renderer-B7vXnBUo.mjs.map} +1 -1
  201. package/dist/renderer-BE2rIA4B.mjs +5 -0
  202. package/dist/renderer-BIQ81ln4.mjs +5 -0
  203. package/dist/{renderer-l_U6kA8K.mjs → renderer-BKJ8cywK.mjs} +3 -3
  204. package/dist/{renderer-l_U6kA8K.mjs.map → renderer-BKJ8cywK.mjs.map} +1 -1
  205. package/dist/renderer-BKm3_Ob3.mjs +5 -0
  206. package/dist/{renderer-COtZ315B.mjs → renderer-BMiZIGkZ.mjs} +2 -2
  207. package/dist/renderer-BNdT1Wwf.mjs +5 -0
  208. package/dist/{renderer-Z39F9QK5.mjs → renderer-BNs31kME.mjs} +4 -4
  209. package/dist/{renderer-Z39F9QK5.mjs.map → renderer-BNs31kME.mjs.map} +1 -1
  210. package/dist/renderer-BQycs1q_.mjs +5 -0
  211. package/dist/{renderer-ZjSP5jw6.mjs → renderer-BStETpqC.mjs} +3 -3
  212. package/dist/{renderer-ZjSP5jw6.mjs.map → renderer-BStETpqC.mjs.map} +1 -1
  213. package/dist/{renderer-BmoQJUJO.mjs → renderer-BWNQQZ12.mjs} +4 -4
  214. package/dist/{renderer-BmoQJUJO.mjs.map → renderer-BWNQQZ12.mjs.map} +1 -1
  215. package/dist/{renderer-G3px5ODP.mjs → renderer-BZ5uOfoX.mjs} +4 -4
  216. package/dist/{renderer-G3px5ODP.mjs.map → renderer-BZ5uOfoX.mjs.map} +1 -1
  217. package/dist/{renderer-D0X7Eh-T.mjs → renderer-Bag1LFos.mjs} +4 -4
  218. package/dist/{renderer-D0X7Eh-T.mjs.map → renderer-Bag1LFos.mjs.map} +1 -1
  219. package/dist/{renderer-D5u3GVtD.mjs → renderer-BfQdc3RM.mjs} +74 -74
  220. package/dist/{renderer-D5u3GVtD.mjs.map → renderer-BfQdc3RM.mjs.map} +1 -1
  221. package/dist/{renderer-C9r0-KY4.mjs → renderer-BgmO1Dzw.mjs} +11 -2
  222. package/dist/{renderer-C9r0-KY4.mjs.map → renderer-BgmO1Dzw.mjs.map} +1 -1
  223. package/dist/renderer-Bj7MxXfk.mjs +5 -0
  224. package/dist/renderer-BjRAGYYC.mjs +5 -0
  225. package/dist/{renderer-DQuKNgIx.mjs → renderer-BlU3Sh_0.mjs} +5 -5
  226. package/dist/{renderer-DQuKNgIx.mjs.map → renderer-BlU3Sh_0.mjs.map} +1 -1
  227. package/dist/renderer-BqE2BQ_X.mjs +5 -0
  228. package/dist/{renderer-DkPDYtD3.mjs → renderer-BrKgtYq4.mjs} +4 -4
  229. package/dist/{renderer-DkPDYtD3.mjs.map → renderer-BrKgtYq4.mjs.map} +1 -1
  230. package/dist/{renderer-FCqOfN6n.mjs → renderer-Bs6BaMLf.mjs} +4 -4
  231. package/dist/{renderer-FCqOfN6n.mjs.map → renderer-Bs6BaMLf.mjs.map} +1 -1
  232. package/dist/renderer-BsewLDHZ.mjs +3 -0
  233. package/dist/{renderer-Bmj7AyJP.mjs → renderer-BvA4sQz5.mjs} +3 -3
  234. package/dist/{renderer-Bmj7AyJP.mjs.map → renderer-BvA4sQz5.mjs.map} +1 -1
  235. package/dist/{renderer-Bw5YP2Db.mjs → renderer-Bvizxddu.mjs} +4 -4
  236. package/dist/{renderer-Bw5YP2Db.mjs.map → renderer-Bvizxddu.mjs.map} +1 -1
  237. package/dist/{renderer-WVrUeiLZ.mjs → renderer-Bwxm-kWL.mjs} +2 -2
  238. package/dist/renderer-Bz5BMkOE.mjs +5 -0
  239. package/dist/{renderer-vTsc6CpO.d.mts → renderer-C-dcd14F.d.mts} +2 -2
  240. package/dist/{renderer-vTsc6CpO.d.mts.map → renderer-C-dcd14F.d.mts.map} +1 -1
  241. package/dist/{renderer-DK34NH92.mjs → renderer-C2MaJKfY.mjs} +4 -4
  242. package/dist/{renderer-DK34NH92.mjs.map → renderer-C2MaJKfY.mjs.map} +1 -1
  243. package/dist/{renderer-DyMEAZIm.mjs → renderer-C3tdjg8B.mjs} +5 -5
  244. package/dist/{renderer-DyMEAZIm.mjs.map → renderer-C3tdjg8B.mjs.map} +1 -1
  245. package/dist/{renderer-BGNdwdCR.mjs → renderer-C5QYI1Wu.mjs} +4 -4
  246. package/dist/{renderer-BGNdwdCR.mjs.map → renderer-C5QYI1Wu.mjs.map} +1 -1
  247. package/dist/{renderer-Cjs1OeBu.mjs → renderer-C6n8y6Pw.mjs} +4 -4
  248. package/dist/{renderer-Cjs1OeBu.mjs.map → renderer-C6n8y6Pw.mjs.map} +1 -1
  249. package/dist/{renderer-D2ru2Afi.mjs → renderer-C8pJFxcL.mjs} +4 -4
  250. package/dist/{renderer-D2ru2Afi.mjs.map → renderer-C8pJFxcL.mjs.map} +1 -1
  251. package/dist/{renderer-BfrzKmRh.mjs → renderer-CA_CwisV.mjs} +3 -3
  252. package/dist/{renderer-BfrzKmRh.mjs.map → renderer-CA_CwisV.mjs.map} +1 -1
  253. package/dist/renderer-CDOSfB9H.mjs +5 -0
  254. package/dist/{renderer-CWSM0IGG.mjs → renderer-CEAmByVW.mjs} +3 -3
  255. package/dist/{renderer-CWSM0IGG.mjs.map → renderer-CEAmByVW.mjs.map} +1 -1
  256. package/dist/{renderer-BN_n6O6P.mjs → renderer-CFCR_7bq.mjs} +4 -4
  257. package/dist/{renderer-BN_n6O6P.mjs.map → renderer-CFCR_7bq.mjs.map} +1 -1
  258. package/dist/{renderer-1VKN5j2C.mjs → renderer-CFRTJ7cT.mjs} +4 -4
  259. package/dist/{renderer-1VKN5j2C.mjs.map → renderer-CFRTJ7cT.mjs.map} +1 -1
  260. package/dist/{renderer-gjT5v76-.mjs → renderer-CPSg6eEQ.mjs} +3 -3
  261. package/dist/{renderer-gjT5v76-.mjs.map → renderer-CPSg6eEQ.mjs.map} +1 -1
  262. package/dist/renderer-CT26yQT-.mjs +5 -0
  263. package/dist/{renderer-IMg0dK6K.mjs → renderer-CTy0bSsl.mjs} +4 -4
  264. package/dist/{renderer-IMg0dK6K.mjs.map → renderer-CTy0bSsl.mjs.map} +1 -1
  265. package/dist/{renderer-BJwOM1Dq.mjs → renderer-CVbNiH03.mjs} +4 -4
  266. package/dist/{renderer-BJwOM1Dq.mjs.map → renderer-CVbNiH03.mjs.map} +1 -1
  267. package/dist/renderer-CZeAbz48.mjs +5 -0
  268. package/dist/{renderer-ChjkppUz.mjs → renderer-CbxfSmYE.mjs} +4 -4
  269. package/dist/{renderer-ChjkppUz.mjs.map → renderer-CbxfSmYE.mjs.map} +1 -1
  270. package/dist/{renderer-nLPfvY3-.mjs → renderer-CdxNwGeb.mjs} +2 -2
  271. package/dist/{renderer-nLPfvY3-.mjs.map → renderer-CdxNwGeb.mjs.map} +1 -1
  272. package/dist/{renderer-CMEqUhrW.mjs → renderer-Cg2xS8h8.mjs} +4 -4
  273. package/dist/{renderer-CMEqUhrW.mjs.map → renderer-Cg2xS8h8.mjs.map} +1 -1
  274. package/dist/{renderer-2bipMLqz.mjs → renderer-CnclEQdA.mjs} +3 -3
  275. package/dist/{renderer-2bipMLqz.mjs.map → renderer-CnclEQdA.mjs.map} +1 -1
  276. package/dist/{renderer-kP5Y282J.mjs → renderer-CpDaUeCN.mjs} +5 -5
  277. package/dist/{renderer-kP5Y282J.mjs.map → renderer-CpDaUeCN.mjs.map} +1 -1
  278. package/dist/{renderer-vwoyR8pW.mjs → renderer-CqJou_2L.mjs} +3 -3
  279. package/dist/{renderer-vwoyR8pW.mjs.map → renderer-CqJou_2L.mjs.map} +1 -1
  280. package/dist/{renderer-VxVi_0c7.mjs → renderer-CrKYlipx.mjs} +3 -3
  281. package/dist/{renderer-VxVi_0c7.mjs.map → renderer-CrKYlipx.mjs.map} +1 -1
  282. package/dist/{renderer-Cj1giMd0.mjs → renderer-D3FJcRA3.mjs} +3 -3
  283. package/dist/{renderer-Cj1giMd0.mjs.map → renderer-D3FJcRA3.mjs.map} +1 -1
  284. package/dist/renderer-D50b7kip.mjs +5 -0
  285. package/dist/renderer-D5LmrO96.mjs +5 -0
  286. package/dist/{renderer-Bo_d7h86.mjs → renderer-D8m3fuRp.mjs} +4 -4
  287. package/dist/{renderer-Bo_d7h86.mjs.map → renderer-D8m3fuRp.mjs.map} +1 -1
  288. package/dist/{renderer-Bo1PY0zW.mjs → renderer-DADTT3ym.mjs} +2 -2
  289. package/dist/renderer-DCvqZ5o_.mjs +5 -0
  290. package/dist/{renderer-DuQMzR3v.mjs → renderer-DGOY-LBR.mjs} +39 -423
  291. package/dist/renderer-DGOY-LBR.mjs.map +1 -0
  292. package/dist/{renderer-BYJS2lhn.mjs → renderer-DHdFVpdH.mjs} +4 -4
  293. package/dist/{renderer-BYJS2lhn.mjs.map → renderer-DHdFVpdH.mjs.map} +1 -1
  294. package/dist/renderer-DJGJeGEn.mjs +5 -0
  295. package/dist/{renderer-CDX2f82b.mjs → renderer-DO1TeUqV.mjs} +4 -4
  296. package/dist/{renderer-CDX2f82b.mjs.map → renderer-DO1TeUqV.mjs.map} +1 -1
  297. package/dist/renderer-DONvNNXi.mjs +5 -0
  298. package/dist/renderer-DPaSo--Y.mjs +6 -0
  299. package/dist/{renderer-BWnFh7NO.mjs → renderer-DTPmvL1i.mjs} +4 -4
  300. package/dist/{renderer-BWnFh7NO.mjs.map → renderer-DTPmvL1i.mjs.map} +1 -1
  301. package/dist/{renderer-DWaqF7-6.mjs → renderer-DVGVcDvB.mjs} +4 -4
  302. package/dist/{renderer-DWaqF7-6.mjs.map → renderer-DVGVcDvB.mjs.map} +1 -1
  303. package/dist/{renderer-CXbXF7Dh.mjs → renderer-DW21AyEv.mjs} +4 -4
  304. package/dist/{renderer-CXbXF7Dh.mjs.map → renderer-DW21AyEv.mjs.map} +1 -1
  305. package/dist/{renderer-7DyjqxEj.mjs → renderer-DWG6EXGj.mjs} +4 -4
  306. package/dist/{renderer-7DyjqxEj.mjs.map → renderer-DWG6EXGj.mjs.map} +1 -1
  307. package/dist/{renderer-CmKdr2nA.mjs → renderer-Daqvhwjp.mjs} +4 -4
  308. package/dist/{renderer-CmKdr2nA.mjs.map → renderer-Daqvhwjp.mjs.map} +1 -1
  309. package/dist/{renderer-B4blg067.mjs → renderer-DcApNxER.mjs} +4 -4
  310. package/dist/{renderer-B4blg067.mjs.map → renderer-DcApNxER.mjs.map} +1 -1
  311. package/dist/{renderer-CLO8QHWE.mjs → renderer-DdkPY4hO.mjs} +4 -4
  312. package/dist/{renderer-CLO8QHWE.mjs.map → renderer-DdkPY4hO.mjs.map} +1 -1
  313. package/dist/renderer-DfYYokhr.mjs +5 -0
  314. package/dist/{renderer-BWa3CLK7.mjs → renderer-Dk0okoS3.mjs} +3 -3
  315. package/dist/{renderer-BWa3CLK7.mjs.map → renderer-Dk0okoS3.mjs.map} +1 -1
  316. package/dist/{renderer-ChCUad83.mjs → renderer-DkM6Ikdf.mjs} +4 -4
  317. package/dist/{renderer-ChCUad83.mjs.map → renderer-DkM6Ikdf.mjs.map} +1 -1
  318. package/dist/{renderer-Fsdod0yZ.mjs → renderer-DkOxEQsg.mjs} +4 -4
  319. package/dist/{renderer-Fsdod0yZ.mjs.map → renderer-DkOxEQsg.mjs.map} +1 -1
  320. package/dist/renderer-DlIJhdEM.mjs +5 -0
  321. package/dist/{renderer-Ch7qwjH9.mjs → renderer-DmTxEeMh.mjs} +4 -4
  322. package/dist/{renderer-Ch7qwjH9.mjs.map → renderer-DmTxEeMh.mjs.map} +1 -1
  323. package/dist/renderer-DqD3nMtv.mjs +5 -0
  324. package/dist/renderer-DrIl-uGt.mjs +5 -0
  325. package/dist/{renderer-kkDfQ56G.mjs → renderer-DsnV8tpW.mjs} +4 -4
  326. package/dist/{renderer-kkDfQ56G.mjs.map → renderer-DsnV8tpW.mjs.map} +1 -1
  327. package/dist/{renderer-0cHsK6xR.mjs → renderer-DtqiWq1m.mjs} +4 -4
  328. package/dist/{renderer-0cHsK6xR.mjs.map → renderer-DtqiWq1m.mjs.map} +1 -1
  329. package/dist/{renderer-CNs1vBUy.mjs → renderer-Duorbrb8.mjs} +3 -3
  330. package/dist/{renderer-CNs1vBUy.mjs.map → renderer-Duorbrb8.mjs.map} +1 -1
  331. package/dist/{renderer-B5YYBBDq.mjs → renderer-Dw3K8KT9.mjs} +3 -3
  332. package/dist/{renderer-B5YYBBDq.mjs.map → renderer-Dw3K8KT9.mjs.map} +1 -1
  333. package/dist/{renderer-VdTs-dqH.mjs → renderer-Dwh0jaor.mjs} +4 -4
  334. package/dist/{renderer-VdTs-dqH.mjs.map → renderer-Dwh0jaor.mjs.map} +1 -1
  335. package/dist/renderer-DyCB3Q1d.mjs +5 -0
  336. package/dist/renderer-DyJ-iSv6.mjs +5 -0
  337. package/dist/{renderer-DqO9gBAi.mjs → renderer-Dz4muMyE.mjs} +4 -4
  338. package/dist/{renderer-DqO9gBAi.mjs.map → renderer-Dz4muMyE.mjs.map} +1 -1
  339. package/dist/renderer-Dzs0jV0G.mjs +5 -0
  340. package/dist/{renderer-BAkPq8qo.mjs → renderer-H4-8sBjl.mjs} +3 -3
  341. package/dist/{renderer-BAkPq8qo.mjs.map → renderer-H4-8sBjl.mjs.map} +1 -1
  342. package/dist/renderer-HIKXw5-Y.mjs +5 -0
  343. package/dist/renderer-Jgt2g8Wp.mjs +5 -0
  344. package/dist/renderer-KnZWmT-M.mjs +5 -0
  345. package/dist/renderer-OMSXddG9.mjs +5 -0
  346. package/dist/renderer-P78xh6OV.mjs +5 -0
  347. package/dist/{renderer-fH9SCJC2.mjs → renderer-PhjHSS97.mjs} +3 -3
  348. package/dist/{renderer-fH9SCJC2.mjs.map → renderer-PhjHSS97.mjs.map} +1 -1
  349. package/dist/{renderer-o_JK4YfO.mjs → renderer-QQDU1b0Z.mjs} +4 -4
  350. package/dist/{renderer-o_JK4YfO.mjs.map → renderer-QQDU1b0Z.mjs.map} +1 -1
  351. package/dist/{renderer-DBjV6C2u.mjs → renderer-R5Lg65F8.mjs} +2 -2
  352. package/dist/{renderer-DHqicGgT.mjs → renderer-RbMM6Njv.mjs} +4 -4
  353. package/dist/{renderer-DHqicGgT.mjs.map → renderer-RbMM6Njv.mjs.map} +1 -1
  354. package/dist/{renderer-sg-ffvVd.d.mts → renderer-WTvo3wo9.d.mts} +18 -4
  355. package/dist/renderer-WTvo3wo9.d.mts.map +1 -0
  356. package/dist/renderer-WyaqnVMz.mjs +3 -0
  357. package/dist/{renderer-Db_wphHH.mjs → renderer-YBwN9uyj.mjs} +230 -23
  358. package/dist/renderer-YBwN9uyj.mjs.map +1 -0
  359. package/dist/{renderer-BBTdHKH7.mjs → renderer-YFHESw3v.mjs} +4 -4
  360. package/dist/{renderer-BBTdHKH7.mjs.map → renderer-YFHESw3v.mjs.map} +1 -1
  361. package/dist/renderer-gaFP1Kak.mjs +5 -0
  362. package/dist/{renderer-PNIgmWft.mjs → renderer-kFtcuY9J.mjs} +2 -2
  363. package/dist/{renderer-PNIgmWft.mjs.map → renderer-kFtcuY9J.mjs.map} +1 -1
  364. package/dist/renderer-lQ8gH7Zd.mjs +5 -0
  365. package/dist/{renderer-B8LXXvHi.mjs → renderer-oR1LvHeO.mjs} +4 -4
  366. package/dist/{renderer-B8LXXvHi.mjs.map → renderer-oR1LvHeO.mjs.map} +1 -1
  367. package/dist/{renderer-CJoa4H2G.mjs → renderer-tcS585Iy.mjs} +3 -3
  368. package/dist/{renderer-CJoa4H2G.mjs.map → renderer-tcS585Iy.mjs.map} +1 -1
  369. package/dist/{renderer-BhhweLr_.mjs → renderer-x1xlZaH_.mjs} +4 -4
  370. package/dist/{renderer-BhhweLr_.mjs.map → renderer-x1xlZaH_.mjs.map} +1 -1
  371. package/dist/{renderers-CP8CFWDs-DiX2Y4Qp.mjs → renderers-CP8CFWDs-EZZPEbhW.mjs} +4 -4
  372. package/dist/{renderers-CP8CFWDs-DiX2Y4Qp.mjs.map → renderers-CP8CFWDs-EZZPEbhW.mjs.map} +1 -1
  373. package/dist/signals/index.d.mts +5 -5
  374. package/dist/signals/index.mjs +7 -7
  375. package/dist/{signals-Cf9mfNGE.mjs → signals-BrNF9l9s.mjs} +3 -3
  376. package/dist/{signals-Cf9mfNGE.mjs.map → signals-BrNF9l9s.mjs.map} +1 -1
  377. package/dist/{src-Ds9IAk5S.mjs → src-r7Suenhp.mjs} +9 -9
  378. package/dist/{src-Ds9IAk5S.mjs.map → src-r7Suenhp.mjs.map} +1 -1
  379. package/package.json +58 -58
  380. package/dist/dist-CQZ5_60A.mjs.map +0 -1
  381. package/dist/dist-DBWkkSvJ.mjs.map +0 -1
  382. package/dist/dist-DHQVWaV2.mjs.map +0 -1
  383. package/dist/index-BlPLU_a1.d.mts.map +0 -1
  384. package/dist/index-C6awQk4-.d.mts.map +0 -1
  385. package/dist/preview-engine/chunk-I6E3AKLS.mjs +0 -1
  386. package/dist/preview-engine/chunk-X6HUH6K4.mjs +0 -1
  387. package/dist/preview-engine/chunk-XUPZBI3Y.mjs +0 -474
  388. package/dist/preview-engine/renderers-2S5ZWL2J.mjs +0 -1
  389. package/dist/preview-engine/renderers-37CN7O4S.mjs +0 -1
  390. package/dist/preview-engine/renderers-3UGG2IMP.mjs +0 -1
  391. package/dist/preview-engine/renderers-7MPBAHYA.mjs +0 -1
  392. package/dist/preview-engine/renderers-AFTYMS3H.mjs +0 -1
  393. package/dist/preview-engine/renderers-AYEWAW7F.mjs +0 -1
  394. package/dist/preview-engine/renderers-DUF2CTX6.mjs +0 -1
  395. package/dist/preview-engine/renderers-EIJFIY6L.mjs +0 -1
  396. package/dist/preview-engine/renderers-EOMMSENQ.mjs +0 -1
  397. package/dist/preview-engine/renderers-JXBZPQKP.mjs +0 -1
  398. package/dist/preview-engine/renderers-KSQM7EM5.mjs +0 -1
  399. package/dist/preview-engine/renderers-LD3COS4X.mjs +0 -1
  400. package/dist/preview-engine/renderers-MCTBJEL7.mjs +0 -1
  401. package/dist/preview-engine/renderers-OZGEXW2X.mjs +0 -1
  402. package/dist/preview-engine/renderers-PSEDMUBV.mjs +0 -1
  403. package/dist/preview-engine/renderers-PVUROEGR.mjs +0 -1
  404. package/dist/preview-engine/renderers-QBVVTQV6.mjs +0 -1
  405. package/dist/preview-engine/renderers-R4U2TK6P.mjs +0 -1
  406. package/dist/preview-engine/renderers-RBLNDAO4.mjs +0 -1
  407. package/dist/preview-engine/renderers-RM25AXWZ.mjs +0 -1
  408. package/dist/preview-engine/renderers-RYRFCEYT.mjs +0 -1
  409. package/dist/preview-engine/renderers-SRU6QXLN.mjs +0 -1
  410. package/dist/preview-engine/renderers-TBP2EKJ4.mjs +0 -1
  411. package/dist/preview-engine/renderers-UQHKFGDX.mjs +0 -1
  412. package/dist/preview-engine/renderers-WDV7ENJA.mjs +0 -1
  413. package/dist/preview-engine/renderers-WNBDSSJ3.mjs +0 -1
  414. package/dist/preview-engine/renderers-WTC2RNGU.mjs +0 -1
  415. package/dist/preview-engine/renderers-XLBHSQZJ.mjs +0 -228
  416. package/dist/preview-engine/renderers-XVUOO7B6.mjs +0 -1
  417. package/dist/preview-engine/renderers-YHOQUEHD.mjs +0 -1
  418. package/dist/preview-engine/renderers-YPFM5UJO.mjs +0 -1
  419. package/dist/preview-engine/renderers-YW3LBALW.mjs +0 -1
  420. package/dist/renderer-B-D_VZg3.mjs +0 -5
  421. package/dist/renderer-B64dhpDX.mjs +0 -5
  422. package/dist/renderer-BA2Ko4H1.mjs +0 -3
  423. package/dist/renderer-BDL4jyrb.mjs +0 -5
  424. package/dist/renderer-BKCZGKkl.mjs +0 -5
  425. package/dist/renderer-BKs3jI7-.mjs +0 -5
  426. package/dist/renderer-BW74Zf-u.mjs +0 -5
  427. package/dist/renderer-BXuQN61O.mjs +0 -5
  428. package/dist/renderer-BY1pPvzx.mjs +0 -6
  429. package/dist/renderer-Bahthqvq.mjs +0 -5
  430. package/dist/renderer-BbaiQG8h.mjs +0 -5
  431. package/dist/renderer-BhHF-08y.mjs +0 -5
  432. package/dist/renderer-BnrMcw6C.mjs +0 -5
  433. package/dist/renderer-BsS61z5l.mjs +0 -5
  434. package/dist/renderer-Btuq2Eq8.mjs +0 -5
  435. package/dist/renderer-BvcqncI2.mjs +0 -3
  436. package/dist/renderer-BxmsEl2x.mjs +0 -5
  437. package/dist/renderer-CGOyHdKs.mjs +0 -5
  438. package/dist/renderer-CJjmpmpu.mjs +0 -5
  439. package/dist/renderer-CQvDDAIu.mjs +0 -5
  440. package/dist/renderer-CYxigw7S.mjs +0 -5
  441. package/dist/renderer-CgDofO5z.mjs +0 -5
  442. package/dist/renderer-CgmQchab.mjs +0 -5
  443. package/dist/renderer-CjzrLwW_.mjs +0 -5
  444. package/dist/renderer-ClnYWADT.mjs +0 -5
  445. package/dist/renderer-CwAd71C6.mjs +0 -5
  446. package/dist/renderer-D3Z9t-xT.mjs +0 -5
  447. package/dist/renderer-DKH1oSlW.mjs +0 -5
  448. package/dist/renderer-DTkf_hwG.mjs +0 -5
  449. package/dist/renderer-DU0bmOS7.mjs +0 -5
  450. package/dist/renderer-D_vJHQt5.mjs +0 -5
  451. package/dist/renderer-Db_wphHH.mjs.map +0 -1
  452. package/dist/renderer-Dc5n0M6P.mjs +0 -5
  453. package/dist/renderer-Ddfn0Dha.mjs +0 -5
  454. package/dist/renderer-DeSoNQeG.mjs +0 -5
  455. package/dist/renderer-DuQMzR3v.mjs.map +0 -1
  456. package/dist/renderer-Dzca9Qba.mjs +0 -5
  457. package/dist/renderer-HRVvtc9c.mjs +0 -5
  458. package/dist/renderer-M3Qs4f1K.mjs +0 -5
  459. package/dist/renderer-NDHJt_Ae.mjs +0 -5
  460. package/dist/renderer-sg-ffvVd.d.mts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderer-DuQMzR3v.mjs","names":[],"sources":["../../../nodes/node-layer-style/dist/renderers-Ch81UvXn.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, PREMULTIPLIED_BLEND, createFullscreenPipeline, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout } from \"@framefields/node-sdk/gpu\";\nimport { ColorSchema, ImageResultSchema, VideoResultSchema } from \"@framefields/node-sdk\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst LAYER_STYLE_BLEND_MODES = [\n\t{\n\t\tvalue: \"normal\",\n\t\tlabel: \"Normal\"\n\t},\n\t{\n\t\tvalue: \"multiply\",\n\t\tlabel: \"Multiply\"\n\t},\n\t{\n\t\tvalue: \"screen\",\n\t\tlabel: \"Screen\"\n\t},\n\t{\n\t\tvalue: \"overlay\",\n\t\tlabel: \"Overlay\"\n\t},\n\t{\n\t\tvalue: \"darken\",\n\t\tlabel: \"Darken\"\n\t},\n\t{\n\t\tvalue: \"lighten\",\n\t\tlabel: \"Lighten\"\n\t},\n\t{\n\t\tvalue: \"color-dodge\",\n\t\tlabel: \"Color Dodge\"\n\t},\n\t{\n\t\tvalue: \"color-burn\",\n\t\tlabel: \"Color Burn\"\n\t},\n\t{\n\t\tvalue: \"hard-light\",\n\t\tlabel: \"Hard Light\"\n\t},\n\t{\n\t\tvalue: \"soft-light\",\n\t\tlabel: \"Soft Light\"\n\t},\n\t{\n\t\tvalue: \"difference\",\n\t\tlabel: \"Difference\"\n\t},\n\t{\n\t\tvalue: \"exclusion\",\n\t\tlabel: \"Exclusion\"\n\t},\n\t{\n\t\tvalue: \"hue\",\n\t\tlabel: \"Hue\"\n\t},\n\t{\n\t\tvalue: \"saturation\",\n\t\tlabel: \"Saturation\"\n\t},\n\t{\n\t\tvalue: \"color\",\n\t\tlabel: \"Color\"\n\t},\n\t{\n\t\tvalue: \"luminosity\",\n\t\tlabel: \"Luminosity\"\n\t},\n\t{\n\t\tvalue: \"lighter\",\n\t\tlabel: \"Lighter (Add)\"\n\t},\n\t{\n\t\tvalue: \"copy\",\n\t\tlabel: \"Copy\"\n\t},\n\t{\n\t\tvalue: \"xor\",\n\t\tlabel: \"XOR\"\n\t},\n\t{\n\t\tvalue: \"source-over\",\n\t\tlabel: \"Source Over\"\n\t},\n\t{\n\t\tvalue: \"source-in\",\n\t\tlabel: \"Source In\"\n\t},\n\t{\n\t\tvalue: \"source-out\",\n\t\tlabel: \"Source Out\"\n\t},\n\t{\n\t\tvalue: \"source-atop\",\n\t\tlabel: \"Source Atop\"\n\t},\n\t{\n\t\tvalue: \"destination-over\",\n\t\tlabel: \"Destination Over\"\n\t},\n\t{\n\t\tvalue: \"destination-in\",\n\t\tlabel: \"Destination In\"\n\t},\n\t{\n\t\tvalue: \"destination-out\",\n\t\tlabel: \"Destination Out\"\n\t},\n\t{\n\t\tvalue: \"destination-atop\",\n\t\tlabel: \"Destination Atop\"\n\t}\n];\nconst DropShadowStyleSchema = z.object({\n\tenabled: z.boolean().default(false),\n\tcolor: ColorSchema.default(\"#000000\"),\n\topacity: z.number().min(0).max(1).default(.75),\n\tangle: z.number().min(0).max(360).default(120),\n\tdistance: z.number().min(0).max(500).default(10),\n\tspread: z.number().min(0).max(100).default(0),\n\tsize: z.number().min(0).max(250).default(10),\n\tblendMode: z.string().default(\"multiply\")\n});\nconst InnerShadowStyleSchema = z.object({\n\tenabled: z.boolean().default(false),\n\tcolor: ColorSchema.default(\"#000000\"),\n\topacity: z.number().min(0).max(1).default(.75),\n\tangle: z.number().min(0).max(360).default(120),\n\tdistance: z.number().min(0).max(500).default(5),\n\tchoke: z.number().min(0).max(100).default(0),\n\tsize: z.number().min(0).max(250).default(5),\n\tblendMode: z.string().default(\"multiply\")\n});\nconst StrokeStyleSchema = z.object({\n\tenabled: z.boolean().default(false),\n\tsize: z.number().min(0).max(100).default(2),\n\tposition: z.enum([\n\t\t\"inside\",\n\t\t\"center\",\n\t\t\"outside\"\n\t]).default(\"outside\"),\n\tcolor: ColorSchema.default(\"#ffffff\"),\n\topacity: z.number().min(0).max(1).default(1),\n\tblendMode: z.string().default(\"normal\")\n});\nconst GlowStyleSchema = z.object({\n\tenabled: z.boolean().default(false),\n\tcolor: ColorSchema.default(\"#ffffff\"),\n\topacity: z.number().min(0).max(1).default(.75),\n\tsize: z.number().min(0).max(250).default(15),\n\tspread: z.number().min(0).max(100).default(0),\n\tblendMode: z.string().default(\"screen\")\n});\nconst BevelEmbossStyleSchema = z.object({\n\tenabled: z.boolean().default(false),\n\tstyle: z.enum([\n\t\t\"InnerBevel\",\n\t\t\"OuterBevel\",\n\t\t\"Emboss\",\n\t\t\"PillowEmboss\"\n\t]).default(\"InnerBevel\"),\n\ttechnique: z.enum([\n\t\t\"Smooth\",\n\t\t\"ChiselHard\",\n\t\t\"ChiselSoft\"\n\t]).default(\"Smooth\"),\n\tdepth: z.number().min(1).max(1e3).default(100),\n\tdirection: z.enum([\"Up\", \"Down\"]).default(\"Up\"),\n\tsize: z.number().min(0).max(250).default(5),\n\tsoften: z.number().min(0).max(50).default(0),\n\tangle: z.number().min(0).max(360).default(120),\n\taltitude: z.number().min(0).max(90).default(30),\n\thighlightColor: ColorSchema.default(\"#ffffff\"),\n\thighlightOpacity: z.number().min(0).max(1).default(.75),\n\tshadowColor: ColorSchema.default(\"#000000\"),\n\tshadowOpacity: z.number().min(0).max(1).default(.75)\n});\nconst ColorOverlayStyleSchema = z.object({\n\tenabled: z.boolean().default(false),\n\tcolor: ColorSchema.default(\"#ff0000\"),\n\topacity: z.number().min(0).max(1).default(1),\n\tblendMode: z.string().default(\"normal\")\n});\nconst DEFAULT_DROP_SHADOW = {\n\tenabled: false,\n\tcolor: \"#000000\",\n\topacity: .75,\n\tangle: 120,\n\tdistance: 10,\n\tspread: 0,\n\tsize: 10,\n\tblendMode: \"multiply\"\n};\nconst DEFAULT_INNER_SHADOW = {\n\tenabled: false,\n\tcolor: \"#000000\",\n\topacity: .75,\n\tangle: 120,\n\tdistance: 5,\n\tchoke: 0,\n\tsize: 5,\n\tblendMode: \"multiply\"\n};\nconst DEFAULT_GLOW = {\n\tenabled: false,\n\tcolor: \"#ffffff\",\n\topacity: .75,\n\tsize: 15,\n\tspread: 0,\n\tblendMode: \"screen\"\n};\nconst DEFAULT_STROKE = {\n\tenabled: false,\n\tsize: 2,\n\tposition: \"outside\",\n\tcolor: \"#ffffff\",\n\topacity: 1,\n\tblendMode: \"normal\"\n};\nconst DEFAULT_BEVEL_EMBOSS = {\n\tenabled: false,\n\tstyle: \"InnerBevel\",\n\ttechnique: \"Smooth\",\n\tdepth: 100,\n\tdirection: \"Up\",\n\tsize: 5,\n\tsoften: 0,\n\tangle: 120,\n\taltitude: 30,\n\thighlightColor: \"#ffffff\",\n\thighlightOpacity: .75,\n\tshadowColor: \"#000000\",\n\tshadowOpacity: .75\n};\nconst DEFAULT_COLOR_OVERLAY = {\n\tenabled: false,\n\tcolor: \"#ff0000\",\n\topacity: 1,\n\tblendMode: \"normal\"\n};\nconst LayerStyleNodeConfigSchema = z.object({\n\tdropShadow: DropShadowStyleSchema.default(DEFAULT_DROP_SHADOW),\n\tinnerShadow: InnerShadowStyleSchema.default(DEFAULT_INNER_SHADOW),\n\touterGlow: GlowStyleSchema.default(DEFAULT_GLOW),\n\tinnerGlow: GlowStyleSchema.default(DEFAULT_GLOW),\n\tstroke: StrokeStyleSchema.default(DEFAULT_STROKE),\n\tbevelEmboss: BevelEmbossStyleSchema.default(DEFAULT_BEVEL_EMBOSS),\n\tcolorOverlay: ColorOverlayStyleSchema.default(DEFAULT_COLOR_OVERLAY),\n\tdropShadowAngleHandleId: z.string().nullable().optional(),\n\tdropShadowDistanceHandleId: z.string().nullable().optional(),\n\tdropShadowSpreadHandleId: z.string().nullable().optional(),\n\tdropShadowSizeHandleId: z.string().nullable().optional(),\n\tdropShadowOpacityHandleId: z.string().nullable().optional(),\n\tinnerShadowAngleHandleId: z.string().nullable().optional(),\n\tinnerShadowDistanceHandleId: z.string().nullable().optional(),\n\tinnerShadowChokeHandleId: z.string().nullable().optional(),\n\tinnerShadowSizeHandleId: z.string().nullable().optional(),\n\tinnerShadowOpacityHandleId: z.string().nullable().optional(),\n\touterGlowSizeHandleId: z.string().nullable().optional(),\n\touterGlowSpreadHandleId: z.string().nullable().optional(),\n\touterGlowOpacityHandleId: z.string().nullable().optional(),\n\tinnerGlowSizeHandleId: z.string().nullable().optional(),\n\tinnerGlowSpreadHandleId: z.string().nullable().optional(),\n\tinnerGlowOpacityHandleId: z.string().nullable().optional(),\n\tstrokeSizeHandleId: z.string().nullable().optional(),\n\tstrokeOpacityHandleId: z.string().nullable().optional(),\n\tbevelEmbossDepthHandleId: z.string().nullable().optional(),\n\tbevelEmbossSizeHandleId: z.string().nullable().optional(),\n\tbevelEmbossSoftenHandleId: z.string().nullable().optional(),\n\tbevelEmbossAngleHandleId: z.string().nullable().optional(),\n\tbevelEmbossAltitudeHandleId: z.string().nullable().optional(),\n\tbevelEmbossHighlightOpacityHandleId: z.string().nullable().optional(),\n\tbevelEmbossShadowOpacityHandleId: z.string().nullable().optional(),\n\tcolorOverlayOpacityHandleId: z.string().nullable().optional()\n});\nfunction computeLayerStylePadding(config) {\n\tlet padX = 0;\n\tlet padY = 0;\n\tif (config.dropShadow?.enabled) {\n\t\tconst angleRad = (config.dropShadow.angle ?? 120) * Math.PI / 180;\n\t\tconst dist = config.dropShadow.distance ?? 0;\n\t\tconst dx = Math.ceil(Math.abs(Math.cos(angleRad)) * dist);\n\t\tconst dy = Math.ceil(Math.abs(Math.sin(angleRad)) * dist);\n\t\tpadX = Math.max(padX, dx);\n\t\tpadY = Math.max(padY, dy);\n\t}\n\tif (config.stroke?.enabled && config.stroke.position !== \"inside\") {\n\t\tconst strokePad = config.stroke.position === \"outside\" ? Math.ceil(config.stroke.size ?? 2) : Math.ceil((config.stroke.size ?? 2) * .5);\n\t\tpadX = Math.max(padX, strokePad);\n\t\tpadY = Math.max(padY, strokePad);\n\t}\n\treturn {\n\t\tpadX,\n\t\tpadY\n\t};\n}\nconst LAYER_STYLE_CONFIG_HANDLES = [\n\t{\n\t\tconfigKey: \"dropShadowAngle\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Drop Shadow Angle Signal\",\n\t\tdescription: \"Light angle for drop shadow in degrees (0–360°).\"\n\t},\n\t{\n\t\tconfigKey: \"dropShadowDistance\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Drop Shadow Distance Signal\",\n\t\tdescription: \"Offset distance for drop shadow in pixels.\"\n\t},\n\t{\n\t\tconfigKey: \"dropShadowSize\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Drop Shadow Blur Signal\",\n\t\tdescription: \"Blur radius for drop shadow in pixels.\"\n\t},\n\t{\n\t\tconfigKey: \"dropShadowSpread\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Drop Shadow Spread Signal\",\n\t\tdescription: \"Edge expansion/sharpness percentage for drop shadow (0–100%).\"\n\t},\n\t{\n\t\tconfigKey: \"dropShadowOpacity\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Drop Shadow Opacity Signal\",\n\t\tdescription: \"Opacity multiplier for drop shadow (0–1).\"\n\t},\n\t{\n\t\tconfigKey: \"innerShadowAngle\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Inner Shadow Angle Signal\",\n\t\tdescription: \"Light angle for inner shadow in degrees (0–360°).\"\n\t},\n\t{\n\t\tconfigKey: \"innerShadowDistance\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Inner Shadow Distance Signal\",\n\t\tdescription: \"Offset distance for inner shadow in pixels.\"\n\t},\n\t{\n\t\tconfigKey: \"innerShadowSize\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Inner Shadow Blur Signal\",\n\t\tdescription: \"Blur radius for inner shadow in pixels.\"\n\t},\n\t{\n\t\tconfigKey: \"innerShadowChoke\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Inner Shadow Choke Signal\",\n\t\tdescription: \"Choke sharpness percentage for inner shadow (0–100%).\"\n\t},\n\t{\n\t\tconfigKey: \"innerShadowOpacity\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Inner Shadow Opacity Signal\",\n\t\tdescription: \"Opacity multiplier for inner shadow (0–1).\"\n\t},\n\t{\n\t\tconfigKey: \"outerGlowSize\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Outer Glow Size Signal\",\n\t\tdescription: \"Glow radius for outer glow in pixels.\"\n\t},\n\t{\n\t\tconfigKey: \"outerGlowSpread\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Outer Glow Spread Signal\",\n\t\tdescription: \"Spread percentage for outer glow (0–100%).\"\n\t},\n\t{\n\t\tconfigKey: \"outerGlowOpacity\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Outer Glow Opacity Signal\",\n\t\tdescription: \"Opacity multiplier for outer glow (0–1).\"\n\t},\n\t{\n\t\tconfigKey: \"innerGlowSize\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Inner Glow Size Signal\",\n\t\tdescription: \"Glow radius for inner glow in pixels.\"\n\t},\n\t{\n\t\tconfigKey: \"innerGlowSpread\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Inner Glow Spread Signal\",\n\t\tdescription: \"Spread percentage for inner glow (0–100%).\"\n\t},\n\t{\n\t\tconfigKey: \"innerGlowOpacity\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Inner Glow Opacity Signal\",\n\t\tdescription: \"Opacity multiplier for inner glow (0–1).\"\n\t},\n\t{\n\t\tconfigKey: \"strokeSize\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Stroke Width Signal\",\n\t\tdescription: \"Stroke line width in pixels.\"\n\t},\n\t{\n\t\tconfigKey: \"strokeOpacity\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Stroke Opacity Signal\",\n\t\tdescription: \"Opacity multiplier for stroke (0–1).\"\n\t},\n\t{\n\t\tconfigKey: \"bevelEmbossDepth\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Bevel Depth Signal\",\n\t\tdescription: \"Bevel depth / extrusion percentage (1–1000%).\"\n\t},\n\t{\n\t\tconfigKey: \"bevelEmbossSize\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Bevel Size Signal\",\n\t\tdescription: \"Bevel beveling size in pixels.\"\n\t},\n\t{\n\t\tconfigKey: \"bevelEmbossSoften\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Bevel Soften Signal\",\n\t\tdescription: \"Edge softening blur radius in pixels.\"\n\t},\n\t{\n\t\tconfigKey: \"bevelEmbossAngle\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Bevel Light Angle Signal\",\n\t\tdescription: \"Azimuth light direction in degrees (0–360°).\"\n\t},\n\t{\n\t\tconfigKey: \"bevelEmbossAltitude\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Bevel Light Altitude Signal\",\n\t\tdescription: \"Elevation light altitude in degrees (0–90°).\"\n\t},\n\t{\n\t\tconfigKey: \"bevelEmbossHighlightOpacity\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Bevel Highlight Opacity Signal\",\n\t\tdescription: \"Highlight specular intensity (0–1).\"\n\t},\n\t{\n\t\tconfigKey: \"bevelEmbossShadowOpacity\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Bevel Shadow Opacity Signal\",\n\t\tdescription: \"Shadow diffuse intensity (0–1).\"\n\t},\n\t{\n\t\tconfigKey: \"colorOverlayOpacity\",\n\t\tdataTypes: [\"Number\", \"Signal\"],\n\t\tlabel: \"Color Overlay Opacity Signal\",\n\t\tdescription: \"Color overlay blend opacity (0–1).\"\n\t}\n];\nconst LayerStyleResultSchema = z.union([ImageResultSchema, VideoResultSchema]);\nconst LAYER_STYLE_OUTPUT_TYPE_MAP = {\n\tVideo: \"Video\",\n\tLottie: \"Video\",\n\tGIF: \"GIF\",\n\tImage: \"Image\",\n\tSVG: \"Image\"\n};\nconst LAYER_STYLE_PRESETS = [\n\t{\n\t\tid: \"subtle-drop-shadow\",\n\t\tname: \"Subtle Drop Shadow\",\n\t\tdescription: \"Clean modern floating shadow for UI and graphics\",\n\t\tconfig: {\n\t\t\tdropShadow: {\n\t\t\t\t...DEFAULT_DROP_SHADOW,\n\t\t\t\tenabled: true,\n\t\t\t\topacity: .35,\n\t\t\t\tdistance: 8,\n\t\t\t\tsize: 16\n\t\t\t},\n\t\t\tinnerShadow: { ...DEFAULT_INNER_SHADOW },\n\t\t\touterGlow: { ...DEFAULT_GLOW },\n\t\t\tinnerGlow: { ...DEFAULT_GLOW },\n\t\t\tstroke: { ...DEFAULT_STROKE },\n\t\t\tbevelEmboss: { ...DEFAULT_BEVEL_EMBOSS },\n\t\t\tcolorOverlay: { ...DEFAULT_COLOR_OVERLAY }\n\t\t}\n\t},\n\t{\n\t\tid: \"sticker-outline-shadow\",\n\t\tname: \"Sticker Border & Shadow\",\n\t\tdescription: \"Crisp white die-cut sticker border with contact shadow\",\n\t\tconfig: {\n\t\t\tdropShadow: {\n\t\t\t\t...DEFAULT_DROP_SHADOW,\n\t\t\t\tenabled: true,\n\t\t\t\topacity: .4,\n\t\t\t\tdistance: 6\n\t\t\t},\n\t\t\tstroke: {\n\t\t\t\t...DEFAULT_STROKE,\n\t\t\t\tenabled: true,\n\t\t\t\tsize: 6\n\t\t\t},\n\t\t\tinnerShadow: { ...DEFAULT_INNER_SHADOW },\n\t\t\touterGlow: { ...DEFAULT_GLOW },\n\t\t\tinnerGlow: { ...DEFAULT_GLOW },\n\t\t\tbevelEmboss: { ...DEFAULT_BEVEL_EMBOSS },\n\t\t\tcolorOverlay: { ...DEFAULT_COLOR_OVERLAY }\n\t\t}\n\t},\n\t{\n\t\tid: \"neon-cyber-glow\",\n\t\tname: \"Neon Glow\",\n\t\tdescription: \"Vibrant outer and inner luminescence with soft cyan radiation\",\n\t\tconfig: {\n\t\t\tdropShadow: { ...DEFAULT_DROP_SHADOW },\n\t\t\tinnerShadow: { ...DEFAULT_INNER_SHADOW },\n\t\t\touterGlow: {\n\t\t\t\t...DEFAULT_GLOW,\n\t\t\t\tenabled: true,\n\t\t\t\tcolor: \"#00f0ff\",\n\t\t\t\topacity: .9,\n\t\t\t\tsize: 28,\n\t\t\t\tspread: 12\n\t\t\t},\n\t\t\tinnerGlow: {\n\t\t\t\t...DEFAULT_GLOW,\n\t\t\t\tenabled: true,\n\t\t\t\topacity: .8,\n\t\t\t\tsize: 10,\n\t\t\t\tspread: 5\n\t\t\t},\n\t\t\tstroke: {\n\t\t\t\t...DEFAULT_STROKE,\n\t\t\t\tenabled: true,\n\t\t\t\tposition: \"center\",\n\t\t\t\tcolor: \"#00f0ff\",\n\t\t\t\topacity: .9,\n\t\t\t\tblendMode: \"screen\"\n\t\t\t},\n\t\t\tbevelEmboss: { ...DEFAULT_BEVEL_EMBOSS },\n\t\t\tcolorOverlay: { ...DEFAULT_COLOR_OVERLAY }\n\t\t}\n\t},\n\t{\n\t\tid: \"glass-emboss\",\n\t\tname: \"Glass & Emboss\",\n\t\tdescription: \"Pristine glass beveling with specular highlights and depth\",\n\t\tconfig: {\n\t\t\tdropShadow: {\n\t\t\t\t...DEFAULT_DROP_SHADOW,\n\t\t\t\tenabled: true,\n\t\t\t\topacity: .25,\n\t\t\t\tdistance: 6,\n\t\t\t\tsize: 12\n\t\t\t},\n\t\t\tinnerShadow: {\n\t\t\t\t...DEFAULT_INNER_SHADOW,\n\t\t\t\tenabled: true,\n\t\t\t\topacity: .3,\n\t\t\t\tdistance: 4,\n\t\t\t\tsize: 6\n\t\t\t},\n\t\t\touterGlow: { ...DEFAULT_GLOW },\n\t\t\tinnerGlow: {\n\t\t\t\t...DEFAULT_GLOW,\n\t\t\t\tenabled: true,\n\t\t\t\topacity: .6,\n\t\t\t\tsize: 8\n\t\t\t},\n\t\t\tstroke: { ...DEFAULT_STROKE },\n\t\t\tbevelEmboss: {\n\t\t\t\t...DEFAULT_BEVEL_EMBOSS,\n\t\t\t\tenabled: true,\n\t\t\t\tdepth: 180,\n\t\t\t\tsize: 8,\n\t\t\t\tsoften: 2,\n\t\t\t\taltitude: 35,\n\t\t\t\thighlightOpacity: .9,\n\t\t\t\tshadowOpacity: .5\n\t\t\t},\n\t\t\tcolorOverlay: { ...DEFAULT_COLOR_OVERLAY }\n\t\t}\n\t},\n\t{\n\t\tid: \"letterpress-carved\",\n\t\tname: \"Letterpress / Carved\",\n\t\tdescription: \"Debossed letterpress engraving into paper surface\",\n\t\tconfig: {\n\t\t\tdropShadow: {\n\t\t\t\t...DEFAULT_DROP_SHADOW,\n\t\t\t\tenabled: true,\n\t\t\t\tcolor: \"#ffffff\",\n\t\t\t\topacity: .85,\n\t\t\t\tangle: 300,\n\t\t\t\tdistance: 2,\n\t\t\t\tsize: 1,\n\t\t\t\tblendMode: \"screen\"\n\t\t\t},\n\t\t\tinnerShadow: {\n\t\t\t\t...DEFAULT_INNER_SHADOW,\n\t\t\t\tenabled: true,\n\t\t\t\topacity: .7,\n\t\t\t\tdistance: 3,\n\t\t\t\tchoke: 10,\n\t\t\t\tsize: 4\n\t\t\t},\n\t\t\touterGlow: { ...DEFAULT_GLOW },\n\t\t\tinnerGlow: { ...DEFAULT_GLOW },\n\t\t\tstroke: { ...DEFAULT_STROKE },\n\t\t\tbevelEmboss: {\n\t\t\t\t...DEFAULT_BEVEL_EMBOSS,\n\t\t\t\tenabled: true,\n\t\t\t\ttechnique: \"ChiselHard\",\n\t\t\t\tdepth: 150,\n\t\t\t\tdirection: \"Down\",\n\t\t\t\tsize: 3,\n\t\t\t\thighlightOpacity: .6,\n\t\t\t\tshadowOpacity: .8\n\t\t\t},\n\t\t\tcolorOverlay: { ...DEFAULT_COLOR_OVERLAY }\n\t\t}\n\t},\n\t{\n\t\tid: \"gold-bevel\",\n\t\tname: \"Metallic Gold Bevel\",\n\t\tdescription: \"High-specular chisel gold badge with deep relief\",\n\t\tconfig: {\n\t\t\tdropShadow: {\n\t\t\t\t...DEFAULT_DROP_SHADOW,\n\t\t\t\tenabled: true,\n\t\t\t\topacity: .6,\n\t\t\t\tdistance: 8,\n\t\t\t\tspread: 5,\n\t\t\t\tsize: 12\n\t\t\t},\n\t\t\tinnerShadow: {\n\t\t\t\t...DEFAULT_INNER_SHADOW,\n\t\t\t\tenabled: true,\n\t\t\t\tcolor: \"#573a08\",\n\t\t\t\topacity: .5,\n\t\t\t\tdistance: 3\n\t\t\t},\n\t\t\touterGlow: {\n\t\t\t\t...DEFAULT_GLOW,\n\t\t\t\tenabled: true,\n\t\t\t\tcolor: \"#ffc83b\",\n\t\t\t\topacity: .4,\n\t\t\t\tsize: 20,\n\t\t\t\tspread: 5\n\t\t\t},\n\t\t\tinnerGlow: {\n\t\t\t\t...DEFAULT_GLOW,\n\t\t\t\tenabled: true,\n\t\t\t\tcolor: \"#fff7d1\",\n\t\t\t\topacity: .5,\n\t\t\t\tsize: 6\n\t\t\t},\n\t\t\tstroke: {\n\t\t\t\t...DEFAULT_STROKE,\n\t\t\t\tenabled: true,\n\t\t\t\tcolor: \"#b38728\"\n\t\t\t},\n\t\t\tbevelEmboss: {\n\t\t\t\t...DEFAULT_BEVEL_EMBOSS,\n\t\t\t\tenabled: true,\n\t\t\t\ttechnique: \"ChiselHard\",\n\t\t\t\tdepth: 350,\n\t\t\t\tsize: 10,\n\t\t\t\tsoften: 1,\n\t\t\t\taltitude: 40,\n\t\t\t\thighlightColor: \"#fff4cc\",\n\t\t\t\thighlightOpacity: .95,\n\t\t\t\tshadowColor: \"#422b00\",\n\t\t\t\tshadowOpacity: .85\n\t\t\t},\n\t\t\tcolorOverlay: {\n\t\t\t\t...DEFAULT_COLOR_OVERLAY,\n\t\t\t\tenabled: true,\n\t\t\t\tcolor: \"#f5b324\",\n\t\t\t\topacity: .35,\n\t\t\t\tblendMode: \"overlay\"\n\t\t\t}\n\t\t}\n\t}\n];\n\n//#endregion\n//#region src/renderers/webgpu-renderer.ts\nfunction hexToRgba(hex) {\n\tif (!hex) return [\n\t\t1,\n\t\t1,\n\t\t1,\n\t\t1\n\t];\n\tlet cleaned = hex.trim().replace(/^#/, \"\");\n\tif (cleaned.length === 3) cleaned = cleaned.split(\"\").map((c) => c + c).join(\"\") + \"ff\";\n\telse if (cleaned.length === 6) cleaned = cleaned + \"ff\";\n\telse if (cleaned.length === 8) {} else return [\n\t\t1,\n\t\t1,\n\t\t1,\n\t\t1\n\t];\n\tconst r = parseInt(cleaned.slice(0, 2), 16) / 255;\n\tconst g = parseInt(cleaned.slice(2, 4), 16) / 255;\n\tconst b = parseInt(cleaned.slice(4, 6), 16) / 255;\n\tconst a = parseInt(cleaned.slice(6, 8), 16) / 255;\n\treturn [\n\t\tNumber.isFinite(r) ? r : 1,\n\t\tNumber.isFinite(g) ? g : 1,\n\t\tNumber.isFinite(b) ? b : 1,\n\t\tNumber.isFinite(a) ? a : 1\n\t];\n}\nconst BLEND_MODE_MAP = {\n\tnormal: 0,\n\t\"source-over\": 0,\n\tmultiply: 1,\n\tscreen: 2,\n\toverlay: 3,\n\tdarken: 4,\n\tlighten: 5,\n\t\"color-dodge\": 6,\n\t\"color-burn\": 7,\n\t\"hard-light\": 8,\n\t\"soft-light\": 9,\n\tdifference: 10,\n\texclusion: 11,\n\thue: 12,\n\tsaturation: 13,\n\tcolor: 14,\n\tluminosity: 15,\n\t\"mask-in\": 16,\n\t\"destination-in\": 16,\n\t\"mask-out\": 17,\n\t\"destination-out\": 17,\n\t\"source-in\": 18,\n\t\"source-out\": 19,\n\t\"source-atop\": 20,\n\t\"destination-over\": 21,\n\t\"destination-atop\": 22,\n\tlighter: 23,\n\tcopy: 24,\n\txor: 25\n};\nconst BEVEL_STYLE_MAP = {\n\tInnerBevel: 0,\n\tOuterBevel: 1,\n\tEmboss: 2,\n\tPillowEmboss: 3\n};\nconst BEVEL_TECHNIQUE_MAP = {\n\tSmooth: 0,\n\tChiselHard: 1,\n\tChiselSoft: 2\n};\nconst STROKE_POS_MAP = {\n\toutside: 0,\n\tcenter: 1,\n\tinside: 2\n};\nconst WGSL_LAYER_STYLE_SHADER = `\nstruct LayerStyleUniforms {\n\t// Drop Shadow (vec4 x 3)\n\tdropShadowColor : vec4<f32>,\n\tdropShadowParams : vec4<f32>, // x: enabled, y: opacity, z: angle(rad), w: distance\n\tdropShadowParams2 : vec4<f32>, // x: spread, y: size, z: blendMode, w: pad\n\n\t// Inner Shadow (vec4 x 3)\n\tinnerShadowColor : vec4<f32>,\n\tinnerShadowParams : vec4<f32>, // x: enabled, y: opacity, z: angle(rad), w: distance\n\tinnerShadowParams2 : vec4<f32>, // x: choke, y: size, z: blendMode, w: pad\n\n\t// Outer Glow (vec4 x 3)\n\touterGlowColor : vec4<f32>,\n\touterGlowParams : vec4<f32>, // x: enabled, y: opacity, z: size, w: spread\n\touterGlowParams2 : vec4<f32>, // x: blendMode, yzw: pad\n\n\t// Inner Glow (vec4 x 3)\n\tinnerGlowColor : vec4<f32>,\n\tinnerGlowParams : vec4<f32>, // x: enabled, y: opacity, z: size, w: spread\n\tinnerGlowParams2 : vec4<f32>, // x: blendMode, yzw: pad\n\n\t// Stroke (vec4 x 3)\n\tstrokeColor : vec4<f32>,\n\tstrokeParams : vec4<f32>, // x: enabled, y: size, z: position(0:out,1:center,2:in), w: opacity\n\tstrokeParams2 : vec4<f32>, // x: blendMode, yzw: pad\n\n\t// Bevel & Emboss (vec4 x 5)\n\tbevelHighlightColor : vec4<f32>,\n\tbevelShadowColor : vec4<f32>,\n\tbevelParams1 : vec4<f32>, // x: enabled, y: style, z: technique, w: depth\n\tbevelParams2 : vec4<f32>, // x: direction(1:up, -1:down), y: size, z: soften, w: angle(rad)\n\tbevelParams3 : vec4<f32>, // x: altitude(rad), y: hlOpacity, z: shOpacity, w: pad\n\n\t// Color Overlay (vec4 x 2)\n\tcolorOverlayColor : vec4<f32>,\n\tcolorOverlayParams : vec4<f32>, // x: enabled, y: opacity, z: blendMode, w: pad\n};\n\n@group(0) @binding(0) var<uniform> u : LayerStyleUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn sampleAlpha(uv: vec2<f32>) -> f32 {\n\tif (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) {\n\t\treturn 0.0;\n\t}\n\treturn textureSampleLevel(tex, samp, uv, 0.0).a;\n}\n\nfn lum(c: vec3<f32>) -> f32 {\n\treturn 0.3 * c.r + 0.59 * c.g + 0.11 * c.b;\n}\n\nfn clip_color(c: vec3<f32>) -> vec3<f32> {\n\tlet l = lum(c);\n\tlet n = min(min(c.r, c.g), c.b);\n\tlet x = max(max(c.r, c.g), c.b);\n\tvar res = c;\n\tif (n < 0.0) {\n\t\tres = l + (((res - l) * l) / max(l - n, 1e-5));\n\t}\n\tif (x > 1.0) {\n\t\tres = l + (((res - l) * (1.0 - l)) / max(x - l, 1e-5));\n\t}\n\treturn res;\n}\n\nfn set_lum(c: vec3<f32>, l: f32) -> vec3<f32> {\n\tlet diff = l - lum(c);\n\treturn clip_color(c + vec3<f32>(diff));\n}\n\nfn sat(c: vec3<f32>) -> f32 {\n\treturn max(max(c.r, c.g), c.b) - min(min(c.r, c.g), c.b);\n}\n\nfn set_sat(c: vec3<f32>, s: f32) -> vec3<f32> {\n\tlet c_min = min(min(c.r, c.g), c.b);\n\tlet c_max = max(max(c.r, c.g), c.b);\n\tif (c_max <= c_min) {\n\t\treturn vec3<f32>(0.0);\n\t}\n\treturn (c - vec3<f32>(c_min)) * s / max(c_max - c_min, 1e-5);\n}\n\nfn blendRgb(d_rgb: vec3<f32>, s_rgb: vec3<f32>, mode: u32) -> vec3<f32> {\n\tswitch (mode) {\n\t\tcase 1u: { // multiply\n\t\t\treturn d_rgb * s_rgb;\n\t\t}\n\t\tcase 2u: { // screen\n\t\t\treturn d_rgb + s_rgb - d_rgb * s_rgb;\n\t\t}\n\t\tcase 3u: { // overlay\n\t\t\treturn select(\n\t\t\t\t1.0 - 2.0 * (1.0 - d_rgb) * (1.0 - s_rgb),\n\t\t\t\t2.0 * d_rgb * s_rgb,\n\t\t\t\td_rgb < vec3<f32>(0.5)\n\t\t\t);\n\t\t}\n\t\tcase 4u: { // darken\n\t\t\treturn min(d_rgb, s_rgb);\n\t\t}\n\t\tcase 5u: { // lighten\n\t\t\treturn max(d_rgb, s_rgb);\n\t\t}\n\t\tcase 6u: { // color-dodge\n\t\t\treturn select(min(d_rgb / max(1.0 - s_rgb, vec3<f32>(1e-4)), vec3<f32>(1.0)), vec3<f32>(1.0), s_rgb >= vec3<f32>(0.999));\n\t\t}\n\t\tcase 7u: { // color-burn\n\t\t\treturn select(1.0 - min((1.0 - d_rgb) / max(s_rgb, vec3<f32>(1e-4)), vec3<f32>(1.0)), vec3<f32>(0.0), s_rgb <= vec3<f32>(0.001));\n\t\t}\n\t\tcase 8u: { // hard-light\n\t\t\treturn select(\n\t\t\t\t1.0 - 2.0 * (1.0 - d_rgb) * (1.0 - s_rgb),\n\t\t\t\t2.0 * d_rgb * s_rgb,\n\t\t\t\ts_rgb < vec3<f32>(0.5)\n\t\t\t);\n\t\t}\n\t\tcase 9u: { // soft-light\n\t\t\treturn select(\n\t\t\t\td_rgb + (2.0 * s_rgb - 1.0) * (sqrt(d_rgb) - d_rgb),\n\t\t\t\td_rgb - (1.0 - 2.0 * s_rgb) * d_rgb * (1.0 - d_rgb),\n\t\t\t\ts_rgb <= vec3<f32>(0.5)\n\t\t\t);\n\t\t}\n\t\tcase 10u: { // difference\n\t\t\treturn abs(d_rgb - s_rgb);\n\t\t}\n\t\tcase 11u: { // exclusion\n\t\t\treturn d_rgb + s_rgb - 2.0 * d_rgb * s_rgb;\n\t\t}\n\t\tcase 12u: { // hue\n\t\t\treturn set_lum(set_sat(s_rgb, sat(d_rgb)), lum(d_rgb));\n\t\t}\n\t\tcase 13u: { // saturation\n\t\t\treturn set_lum(set_sat(d_rgb, sat(s_rgb)), lum(d_rgb));\n\t\t}\n\t\tcase 14u: { // color\n\t\t\treturn set_lum(s_rgb, lum(d_rgb));\n\t\t}\n\t\tcase 15u: { // luminosity\n\t\t\treturn set_lum(d_rgb, lum(s_rgb));\n\t\t}\n\t\tdefault: { // normal / source-over\n\t\t\treturn s_rgb;\n\t\t}\n\t}\n}\n\nfn compositeLayer(dst: vec4<f32>, src: vec4<f32>, blendMode: u32) -> vec4<f32> {\n\tlet sa = clamp(src.a, 0.0, 1.0);\n\tif (sa <= 0.0001) {\n\t\treturn dst;\n\t}\n\tlet da = clamp(dst.a, 0.0, 1.0);\n\tif (da <= 0.0001) {\n\t\treturn src;\n\t}\n\n\tswitch (blendMode) {\n\t\tcase 16u: { return dst * sa; } // mask-in / destination-in\n\t\tcase 17u: { return dst * (1.0 - sa); } // mask-out / destination-out\n\t\tcase 18u: { return src * da; } // source-in\n\t\tcase 19u: { return src * (1.0 - da); } // source-out\n\t\tcase 20u: { return src * da + dst * (1.0 - sa); } // source-atop\n\t\tcase 21u: { return dst + src * (1.0 - da); } // destination-over\n\t\tcase 22u: { return dst * sa + src * (1.0 - da); } // destination-atop\n\t\tcase 23u: { return src + dst; } // lighter / add\n\t\tcase 24u: { return src; } // copy\n\t\tcase 25u: { return src * (1.0 - da) + dst * (1.0 - sa); } // xor\n\t\tdefault: {}\n\t}\n\n\tlet b_rgb = blendRgb(dst.rgb, src.rgb, blendMode);\n\tlet out_a = sa + da * (1.0 - sa);\n\tlet out_rgb = select(\n\t\t((1.0 - da) * src.rgb + (1.0 - sa) * dst.rgb + sa * da * b_rgb) / max(out_a, 1e-5),\n\t\tb_rgb,\n\t\tout_a <= 1e-4\n\t);\n\n\treturn vec4<f32>(out_rgb, out_a);\n}\n\n@fragment fn fs(in: VSOut) -> @location(0) vec4<f32> {\n\tlet dimensions = vec2<f32>(textureDimensions(tex));\n\tlet texelSize = 1.0 / max(dimensions, vec2<f32>(1.0, 1.0));\n\tlet origColor = textureSampleLevel(tex, samp, in.uv, 0.0);\n\tlet origA = origColor.a;\n\n\tvar result = vec4<f32>(0.0);\n\n\t// =========================================================================\n\t// 1. DROP SHADOW (Bottom Layer)\n\t// =========================================================================\n\tif (u.dropShadowParams.x > 0.5) {\n\t\tlet opacity = u.dropShadowParams.y;\n\t\tlet angle = u.dropShadowParams.z;\n\t\tlet distance = u.dropShadowParams.w;\n\t\tlet spread = u.dropShadowParams2.x;\n\t\tlet size = u.dropShadowParams2.y;\n\t\tlet blendMode = u32(u.dropShadowParams2.z);\n\n\t\tlet shadowOffset = vec2<f32>(-cos(angle), sin(angle)) * distance * texelSize;\n\t\tlet shadowCenterUv = in.uv - shadowOffset;\n\n\t\tvar shadowAccum = 0.0;\n\t\tvar shadowWeightSum = 0.0;\n\n\t\tlet sigma = max(0.5, size * 0.4);\n\t\tlet sampleRadius = min(i32(ceil(size)), 24);\n\n\t\tif (size <= 0.5) {\n\t\t\tshadowAccum = sampleAlpha(shadowCenterUv);\n\t\t\tshadowWeightSum = 1.0;\n\t\t} else {\n\t\t\tlet stepVal = max(1, sampleRadius / 8);\n\t\t\tfor (var y = -sampleRadius; y <= sampleRadius; y += stepVal) {\n\t\t\t\tfor (var x = -sampleRadius; x <= sampleRadius; x += stepVal) {\n\t\t\t\t\tlet offset = vec2<f32>(f32(x), f32(y)) * texelSize;\n\t\t\t\t\tlet distSq = f32(x * x + y * y);\n\t\t\t\t\tlet weight = exp(-0.5 * distSq / (sigma * sigma));\n\t\t\t\t\tshadowAccum += sampleAlpha(shadowCenterUv + offset) * weight;\n\t\t\t\t\tshadowWeightSum += weight;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet blurredShadow = shadowAccum / max(shadowWeightSum, 1e-4);\n\t\tlet spreadFactor = spread / 100.0;\n\t\tlet finalShadowAlpha = clamp(blurredShadow / max(1.0 - spreadFactor * 0.95, 0.01), 0.0, 1.0) * opacity;\n\n\t\tif (finalShadowAlpha > 0.001) {\n\t\t\tlet shadowCol = vec4<f32>(u.dropShadowColor.rgb, finalShadowAlpha);\n\t\t\tresult = compositeLayer(result, shadowCol, blendMode);\n\t\t}\n\t}\n\n\t// =========================================================================\n\t// 2. OUTER GLOW\n\t// =========================================================================\n\tif (u.outerGlowParams.x > 0.5) {\n\t\tlet opacity = u.outerGlowParams.y;\n\t\tlet size = u.outerGlowParams.z;\n\t\tlet spread = u.outerGlowParams.w;\n\t\tlet blendMode = u32(u.outerGlowParams2.x);\n\n\t\tvar glowAccum = 0.0;\n\t\tvar glowWeightSum = 0.0;\n\t\tlet sigma = max(0.5, size * 0.4);\n\t\tlet sampleRadius = min(i32(ceil(size)), 24);\n\n\t\tif (size <= 0.5) {\n\t\t\tglowAccum = origA;\n\t\t\tglowWeightSum = 1.0;\n\t\t} else {\n\t\t\tlet stepVal = max(1, sampleRadius / 8);\n\t\t\tfor (var y = -sampleRadius; y <= sampleRadius; y += stepVal) {\n\t\t\t\tfor (var x = -sampleRadius; x <= sampleRadius; x += stepVal) {\n\t\t\t\t\tlet offset = vec2<f32>(f32(x), f32(y)) * texelSize;\n\t\t\t\t\tlet distSq = f32(x * x + y * y);\n\t\t\t\t\tlet weight = exp(-0.5 * distSq / (sigma * sigma));\n\t\t\t\t\tglowAccum += sampleAlpha(in.uv + offset) * weight;\n\t\t\t\t\tglowWeightSum += weight;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet blurredGlow = glowAccum / max(glowWeightSum, 1e-4);\n\t\tlet spreadFactor = spread / 100.0;\n\t\tlet spreadGlow = clamp(blurredGlow / max(1.0 - spreadFactor * 0.95, 0.01), 0.0, 1.0);\n\t\tlet finalGlowAlpha = max(0.0, spreadGlow - origA) * opacity;\n\n\t\tif (finalGlowAlpha > 0.001) {\n\t\t\tlet glowCol = vec4<f32>(u.outerGlowColor.rgb, finalGlowAlpha);\n\t\t\tresult = compositeLayer(result, glowCol, blendMode);\n\t\t}\n\t}\n\n\t// =========================================================================\n\t// 3. OUTSIDE STROKE\n\t// =========================================================================\n\tif (u.strokeParams.x > 0.5 && u.strokeParams.z < 0.5) { // position == 0: outside\n\t\tlet size = u.strokeParams.y;\n\t\tlet opacity = u.strokeParams.w;\n\t\tlet blendMode = u32(u.strokeParams2.x);\n\n\t\tvar maxAlpha = 0.0;\n\t\tlet sampleRadius = min(i32(ceil(size)), 24);\n\t\tlet sizeSq = size * size;\n\n\t\tfor (var y = -sampleRadius; y <= sampleRadius; y++) {\n\t\t\tfor (var x = -sampleRadius; x <= sampleRadius; x++) {\n\t\t\t\tlet distSq = f32(x * x + y * y);\n\t\t\t\tif (distSq <= sizeSq) {\n\t\t\t\t\tlet sAlpha = sampleAlpha(in.uv + vec2<f32>(f32(x), f32(y)) * texelSize);\n\t\t\t\t\tmaxAlpha = max(maxAlpha, sAlpha);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet strokeAlpha = clamp(maxAlpha - origA, 0.0, 1.0) * opacity;\n\t\tif (strokeAlpha > 0.001) {\n\t\t\tlet strokeCol = vec4<f32>(u.strokeColor.rgb, strokeAlpha);\n\t\t\tresult = compositeLayer(result, strokeCol, blendMode);\n\t\t}\n\t}\n\n\t// =========================================================================\n\t// 4. BASE IMAGE LAYER (with Color Overlay, Bevel & Emboss, Inner Glow/Shadow)\n\t// =========================================================================\n\tif (origA > 0.001) {\n\t\tvar baseRgb = origColor.rgb;\n\n\t\t// Color Overlay\n\t\tif (u.colorOverlayParams.x > 0.5) {\n\t\t\tlet overlayOpacity = u.colorOverlayParams.y;\n\t\t\tlet overlayBlendMode = u32(u.colorOverlayParams.z);\n\t\t\tlet blendedOverlay = blendRgb(baseRgb, u.colorOverlayColor.rgb, overlayBlendMode);\n\t\t\tbaseRgb = mix(baseRgb, blendedOverlay, overlayOpacity);\n\t\t}\n\n\t\t// Bevel & Emboss\n\t\tif (u.bevelParams1.x > 0.5) {\n\t\t\tlet style = u.bevelParams1.y;\n\t\t\tlet technique = u.bevelParams1.z;\n\t\t\tlet depth = u.bevelParams1.w / 100.0;\n\t\t\tlet direction = u.bevelParams2.x;\n\t\t\tlet bevelSize = max(0.5, u.bevelParams2.y);\n\t\t\tlet soften = u.bevelParams2.z;\n\t\t\tlet lightAngle = u.bevelParams2.w;\n\t\t\tlet lightAltitude = u.bevelParams3.x;\n\t\t\tlet hlOpacity = u.bevelParams3.y;\n\t\t\tlet shOpacity = u.bevelParams3.z;\n\n\t\t\tlet lightDir = normalize(vec3<f32>(\n\t\t\t\t-cos(lightAngle) * cos(lightAltitude),\n\t\t\t\tsin(lightAngle) * cos(lightAltitude),\n\t\t\t\tsin(lightAltitude)\n\t\t\t));\n\n\t\t\tlet stepSize = max(1.0, bevelSize * 0.5 + soften) * texelSize;\n\t\t\tlet aL = sampleAlpha(in.uv - vec2<f32>(stepSize.x, 0.0));\n\t\t\tlet aR = sampleAlpha(in.uv + vec2<f32>(stepSize.x, 0.0));\n\t\t\tlet aT = sampleAlpha(in.uv - vec2<f32>(0.0, stepSize.y));\n\t\t\tlet aB = sampleAlpha(in.uv + vec2<f32>(0.0, stepSize.y));\n\n\t\t\tvar dx = (aR - aL) * depth * direction;\n\t\t\tvar dy = (aB - aT) * depth * direction;\n\n\t\t\tif (technique > 0.5) { // ChiselHard or ChiselSoft\n\t\t\t\tlet rampFactor = select(2.0, 1.5, technique > 1.5);\n\t\t\t\tdx = clamp(dx * rampFactor, -1.0, 1.0);\n\t\t\t\tdy = clamp(dy * rampFactor, -1.0, 1.0);\n\t\t\t}\n\n\t\t\tlet normal = normalize(vec3<f32>(-dx, -dy, 1.0));\n\t\t\tlet nDotL = dot(normal, lightDir);\n\n\t\t\tlet highlightAmount = max(0.0, nDotL) * hlOpacity;\n\t\t\tlet shadowAmount = max(0.0, -nDotL) * shOpacity;\n\n\t\t\tlet hlColor = mix(baseRgb, u.bevelHighlightColor.rgb + baseRgb, highlightAmount);\n\t\t\tlet shColor = mix(baseRgb, baseRgb * (1.0 - shadowAmount) + u.bevelShadowColor.rgb * shadowAmount, shadowAmount);\n\t\t\tbaseRgb = mix(shColor, hlColor, clamp(nDotL * 0.5 + 0.5, 0.0, 1.0));\n\t\t}\n\n\t\t// Inner Glow\n\t\tif (u.innerGlowParams.x > 0.5) {\n\t\t\tlet igOpacity = u.innerGlowParams.y;\n\t\t\tlet igSize = u.innerGlowParams.z;\n\t\t\tlet igSpread = u.innerGlowParams.w;\n\t\t\tlet igBlendMode = u32(u.innerGlowParams2.x);\n\n\t\t\tvar innerAccum = 0.0;\n\t\t\tvar innerWeight = 0.0;\n\t\t\tlet sigma = max(0.5, igSize * 0.4);\n\t\t\tlet sampleRadius = min(i32(ceil(igSize)), 16);\n\t\t\tlet stepVal = max(1, sampleRadius / 6);\n\n\t\t\tfor (var y = -sampleRadius; y <= sampleRadius; y += stepVal) {\n\t\t\t\tfor (var x = -sampleRadius; x <= sampleRadius; x += stepVal) {\n\t\t\t\t\tlet offset = vec2<f32>(f32(x), f32(y)) * texelSize;\n\t\t\t\t\tlet weight = exp(-0.5 * f32(x * x + y * y) / (sigma * sigma));\n\t\t\t\t\tinnerAccum += sampleAlpha(in.uv + offset) * weight;\n\t\t\t\t\tinnerWeight += weight;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet blurredInner = innerAccum / max(innerWeight, 1e-4);\n\t\t\tlet innerGlowMask = max(0.0, origA - blurredInner);\n\t\t\tlet spreadFactor = igSpread / 100.0;\n\t\t\tlet finalInnerGlowAlpha = clamp(innerGlowMask / max(1.0 - spreadFactor * 0.95, 0.01), 0.0, 1.0) * igOpacity;\n\n\t\t\tif (finalInnerGlowAlpha > 0.001) {\n\t\t\t\tlet igBlended = blendRgb(baseRgb, u.innerGlowColor.rgb, igBlendMode);\n\t\t\t\tbaseRgb = mix(baseRgb, igBlended, finalInnerGlowAlpha);\n\t\t\t}\n\t\t}\n\n\t\t// Inner Shadow\n\t\tif (u.innerShadowParams.x > 0.5) {\n\t\t\tlet isOpacity = u.innerShadowParams.y;\n\t\t\tlet isAngle = u.innerShadowParams.z;\n\t\t\tlet isDistance = u.innerShadowParams.w;\n\t\t\tlet isChoke = u.innerShadowParams2.x;\n\t\t\tlet isSize = u.innerShadowParams2.y;\n\t\t\tlet isBlendMode = u32(u.innerShadowParams2.z);\n\n\t\t\tlet isOffset = vec2<f32>(-cos(isAngle), sin(isAngle)) * isDistance * texelSize;\n\t\t\tlet shiftedA = sampleAlpha(in.uv + isOffset);\n\n\t\t\tvar isAccum = 0.0;\n\t\t\tvar isWeight = 0.0;\n\t\t\tlet sigma = max(0.5, isSize * 0.4);\n\t\t\tlet sampleRadius = min(i32(ceil(isSize)), 16);\n\t\t\tlet stepVal = max(1, sampleRadius / 6);\n\n\t\t\tfor (var y = -sampleRadius; y <= sampleRadius; y += stepVal) {\n\t\t\t\tfor (var x = -sampleRadius; x <= sampleRadius; x += stepVal) {\n\t\t\t\t\tlet offset = vec2<f32>(f32(x), f32(y)) * texelSize;\n\t\t\t\t\tlet weight = exp(-0.5 * f32(x * x + y * y) / (sigma * sigma));\n\t\t\t\t\tlet sShifted = sampleAlpha(in.uv + isOffset + offset);\n\t\t\t\t\tlet sOrig = sampleAlpha(in.uv + offset);\n\t\t\t\t\tisAccum += max(0.0, sOrig - sShifted) * weight;\n\t\t\t\t\tisWeight += weight;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet blurredIS = isAccum / max(isWeight, 1e-4);\n\t\t\tlet chokeFactor = isChoke / 100.0;\n\t\t\tlet finalISAlpha = clamp(blurredIS / max(1.0 - chokeFactor * 0.95, 0.01), 0.0, 1.0) * isOpacity;\n\n\t\t\tif (finalISAlpha > 0.001) {\n\t\t\t\tlet isBlended = blendRgb(baseRgb, u.innerShadowColor.rgb, isBlendMode);\n\t\t\t\tbaseRgb = mix(baseRgb, isBlended, finalISAlpha);\n\t\t\t}\n\t\t}\n\n\t\t// Inside Stroke\n\t\tif (u.strokeParams.x > 0.5 && u.strokeParams.z > 1.5) { // position == 2: inside\n\t\t\tlet size = u.strokeParams.y;\n\t\t\tlet opacity = u.strokeParams.w;\n\t\t\tlet blendMode = u32(u.strokeParams2.x);\n\n\t\t\tvar minAlpha = 1.0;\n\t\t\tlet sampleRadius = min(i32(ceil(size)), 24);\n\t\t\tlet sizeSq = size * size;\n\n\t\t\tfor (var y = -sampleRadius; y <= sampleRadius; y++) {\n\t\t\t\tfor (var x = -sampleRadius; x <= sampleRadius; x++) {\n\t\t\t\t\tlet distSq = f32(x * x + y * y);\n\t\t\t\t\tif (distSq <= sizeSq) {\n\t\t\t\t\t\tlet sAlpha = sampleAlpha(in.uv + vec2<f32>(f32(x), f32(y)) * texelSize);\n\t\t\t\t\t\tminAlpha = min(minAlpha, sAlpha);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet insideStrokeAlpha = clamp(origA - minAlpha, 0.0, 1.0) * opacity;\n\t\t\tif (insideStrokeAlpha > 0.001) {\n\t\t\t\tlet sBlended = blendRgb(baseRgb, u.strokeColor.rgb, blendMode);\n\t\t\t\tbaseRgb = mix(baseRgb, sBlended, insideStrokeAlpha);\n\t\t\t}\n\t\t}\n\n\t\tlet baseLayer = vec4<f32>(baseRgb, origA);\n\t\tresult = compositeLayer(result, baseLayer, 0u);\n\t}\n\n\t// =========================================================================\n\t// 5. CENTER STROKE\n\t// =========================================================================\n\tif (u.strokeParams.x > 0.5 && u.strokeParams.z >= 0.5 && u.strokeParams.z <= 1.5) { // position == 1: center\n\t\tlet size = u.strokeParams.y;\n\t\tlet opacity = u.strokeParams.w;\n\t\tlet blendMode = u32(u.strokeParams2.x);\n\n\t\tvar maxAlpha = 0.0;\n\t\tvar minAlpha = 1.0;\n\t\tlet halfSize = max(0.5, size * 0.5);\n\t\tlet sampleRadius = min(i32(ceil(halfSize)), 24);\n\t\tlet halfSizeSq = halfSize * halfSize;\n\n\t\tfor (var y = -sampleRadius; y <= sampleRadius; y++) {\n\t\t\tfor (var x = -sampleRadius; x <= sampleRadius; x++) {\n\t\t\t\tlet distSq = f32(x * x + y * y);\n\t\t\t\tif (distSq <= halfSizeSq) {\n\t\t\t\t\tlet sAlpha = sampleAlpha(in.uv + vec2<f32>(f32(x), f32(y)) * texelSize);\n\t\t\t\t\tmaxAlpha = max(maxAlpha, sAlpha);\n\t\t\t\t\tminAlpha = min(minAlpha, sAlpha);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet centerStrokeAlpha = clamp(maxAlpha - minAlpha, 0.0, 1.0) * opacity;\n\t\tif (centerStrokeAlpha > 0.001) {\n\t\t\tlet strokeCol = vec4<f32>(u.strokeColor.rgb, centerStrokeAlpha);\n\t\t\tresult = compositeLayer(result, strokeCol, blendMode);\n\t\t}\n\t}\n\n\t// Output premultiplied alpha for QuadPipeline / WebGPU rendering\n\treturn vec4<f32>(result.rgb * result.a, result.a);\n}\n`;\nconst resourcesCache = /* @__PURE__ */ new WeakMap();\nfunction getLayerStyleResources(device, format) {\n\tlet res = resourcesCache.get(device);\n\tif (res) return res;\n\tconst module = device.createShaderModule({ code: WGSL_LAYER_STYLE_SHADER });\n\tconst uniformLayout = fragmentBindGroupLayout(device, [\"uniform\"]);\n\tconst textureLayout = fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]);\n\tres = {\n\t\tpipeline: createFullscreenPipeline(device, {\n\t\t\tmodule,\n\t\t\tlayouts: device.createPipelineLayout({ bindGroupLayouts: [uniformLayout, textureLayout] }),\n\t\t\tformat,\n\t\t\tblend: PREMULTIPLIED_BLEND\n\t\t}),\n\t\tuniformLayout,\n\t\ttextureLayout\n\t};\n\tresourcesCache.set(device, res);\n\treturn res;\n}\nconst uniformBufferData = new Float32Array(88);\nconst WebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props, drawChild } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"LayerStyle\" || !op) return;\n\tconst childMedia = props.virtualMedia.children?.[0];\n\tif (!childMedia) return;\n\tpass.end();\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst elapsedSeconds = props.elapsedMs !== void 0 ? props.elapsedMs / 1e3 : (props.frame ?? 0) / (props.fps || 30);\n\tconst resolveField = (handleId, fallbackVal, clampMin = 0, clampMax = 1e3) => {\n\t\tif (handleId && op.inputs?.[handleId]?.connectionValid) {\n\t\t\tconst outputItem = op.inputs[handleId].outputItem;\n\t\t\tif (!outputItem) return Math.max(clampMin, Math.min(clampMax, fallbackVal));\n\t\t\tif (outputItem.type === \"Number\") {\n\t\t\t\tconst numVal = typeof outputItem.data === \"number\" ? outputItem.data : outputItem.data?.value ?? fallbackVal;\n\t\t\t\treturn Math.max(clampMin, Math.min(clampMax, numVal));\n\t\t\t}\n\t\t\tif (outputItem.type === \"Signal\") {\n\t\t\t\tconst data = outputItem.data;\n\t\t\t\tif (typeof data === \"number\") return Math.max(clampMin, Math.min(clampMax, data));\n\t\t\t\tif (data && typeof data === \"object\") {\n\t\t\t\t\tif (typeof data.value === \"number\") return Math.max(clampMin, Math.min(clampMax, data.value));\n\t\t\t\t\tconst amp = typeof data.amplitude === \"number\" ? data.amplitude : 1;\n\t\t\t\t\tconst freq = typeof data.frequency === \"number\" ? data.frequency : 1;\n\t\t\t\t\tconst phase = typeof data.phase === \"number\" ? data.phase : 0;\n\t\t\t\t\tconst offset = typeof data.offset === \"number\" ? data.offset : fallbackVal;\n\t\t\t\t\tconst t = elapsedSeconds;\n\t\t\t\t\tconst computed = offset + amp * Math.sin(2 * Math.PI * freq * t + phase);\n\t\t\t\t\treturn Math.max(clampMin, Math.min(clampMax, computed));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn Math.max(clampMin, Math.min(clampMax, fallbackVal));\n\t};\n\tconst padding = computeLayerStylePadding(op);\n\tconst padX = padding.padX;\n\tconst padY = padding.padY;\n\tconst childW = Math.max(1, width - padX * 2);\n\tconst childH = Math.max(1, height - padY * 2);\n\tconst childTex = ctx.renderer.getTemporaryTexture(childW, childH, [...props.excludeTextures || [], targetTexture]);\n\tconst childView = childTex.createView();\n\tctx.renderer.beginFrame(encoder, childView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, childW, childH, \"clear\").end();\n\tawait drawChild(childMedia, {\n\t\t...props,\n\t\tvirtualMedia: childMedia,\n\t\tcontainerWidth: childW,\n\t\tcontainerHeight: childH\n\t}, childView, childTex, childW, childH);\n\tconst inputTex = ctx.renderer.getTemporaryTexture(width, height, [\n\t\tchildTex,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tconst inputView = inputTex.createView();\n\tconst inputPass = ctx.renderer.beginFrame(encoder, inputView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, width, height, \"clear\");\n\tctx.renderer.drawTexture(inputPass, childTex, {\n\t\tx: padX,\n\t\ty: padY,\n\t\twidth: childW,\n\t\theight: childH\n\t}, { opacity: 1 });\n\tinputPass.end();\n\tconst { pipeline, uniformLayout, textureLayout } = getLayerStyleResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst ds = op.dropShadow ?? {};\n\tconst is = op.innerShadow ?? {};\n\tconst og = op.outerGlow ?? {};\n\tconst ig = op.innerGlow ?? {};\n\tconst st = op.stroke ?? {};\n\tconst be = op.bevelEmboss ?? {};\n\tconst co = op.colorOverlay ?? {};\n\tconst dsCol = hexToRgba(ds.color ?? \"#000000\");\n\tconst dsOpacity = resolveField(op.dropShadowOpacityHandleId, ds.opacity ?? .75, 0, 1);\n\tconst dsAngle = resolveField(op.dropShadowAngleHandleId, ds.angle ?? 120, 0, 360) * Math.PI / 180;\n\tconst dsDist = resolveField(op.dropShadowDistanceHandleId, ds.distance ?? 10, 0, 500);\n\tconst dsSpread = resolveField(op.dropShadowSpreadHandleId, ds.spread ?? 0, 0, 100);\n\tconst dsSize = resolveField(op.dropShadowSizeHandleId, ds.size ?? 10, 0, 250);\n\tconst dsBlend = BLEND_MODE_MAP[ds.blendMode ?? \"multiply\"] ?? 1;\n\tconst isCol = hexToRgba(is.color ?? \"#000000\");\n\tconst isOpacity = resolveField(op.innerShadowOpacityHandleId, is.opacity ?? .75, 0, 1);\n\tconst isAngle = resolveField(op.innerShadowAngleHandleId, is.angle ?? 120, 0, 360) * Math.PI / 180;\n\tconst isDist = resolveField(op.innerShadowDistanceHandleId, is.distance ?? 5, 0, 500);\n\tconst isChoke = resolveField(op.innerShadowChokeHandleId, is.choke ?? 0, 0, 100);\n\tconst isSize = resolveField(op.innerShadowSizeHandleId, is.size ?? 5, 0, 250);\n\tconst isBlend = BLEND_MODE_MAP[is.blendMode ?? \"multiply\"] ?? 1;\n\tconst ogCol = hexToRgba(og.color ?? \"#ffffff\");\n\tconst ogOpacity = resolveField(op.outerGlowOpacityHandleId, og.opacity ?? .75, 0, 1);\n\tconst ogSize = resolveField(op.outerGlowSizeHandleId, og.size ?? 15, 0, 250);\n\tconst ogSpread = resolveField(op.outerGlowSpreadHandleId, og.spread ?? 0, 0, 100);\n\tconst ogBlend = BLEND_MODE_MAP[og.blendMode ?? \"screen\"] ?? 2;\n\tconst igCol = hexToRgba(ig.color ?? \"#ffffff\");\n\tconst igOpacity = resolveField(op.innerGlowOpacityHandleId, ig.opacity ?? .75, 0, 1);\n\tconst igSize = resolveField(op.innerGlowSizeHandleId, ig.size ?? 15, 0, 250);\n\tconst igSpread = resolveField(op.innerGlowSpreadHandleId, ig.spread ?? 0, 0, 100);\n\tconst igBlend = BLEND_MODE_MAP[ig.blendMode ?? \"screen\"] ?? 2;\n\tconst stCol = hexToRgba(st.color ?? \"#ffffff\");\n\tconst stSize = resolveField(op.strokeSizeHandleId, st.size ?? 2, 0, 100);\n\tconst stPos = STROKE_POS_MAP[st.position ?? \"outside\"] ?? 0;\n\tconst stOpacity = resolveField(op.strokeOpacityHandleId, st.opacity ?? 1, 0, 1);\n\tconst stBlend = BLEND_MODE_MAP[st.blendMode ?? \"normal\"] ?? 0;\n\tconst beHlCol = hexToRgba(be.highlightColor ?? \"#ffffff\");\n\tconst beShCol = hexToRgba(be.shadowColor ?? \"#000000\");\n\tconst beStyle = BEVEL_STYLE_MAP[be.style ?? \"InnerBevel\"] ?? 0;\n\tconst beTech = BEVEL_TECHNIQUE_MAP[be.technique ?? \"Smooth\"] ?? 0;\n\tconst beDepth = resolveField(op.bevelEmbossDepthHandleId, be.depth ?? 100, 1, 1e3);\n\tconst beDir = be.direction === \"Down\" ? -1 : 1;\n\tconst beSize = resolveField(op.bevelEmbossSizeHandleId, be.size ?? 5, 0, 250);\n\tconst beSoften = resolveField(op.bevelEmbossSoftenHandleId, be.soften ?? 0, 0, 50);\n\tconst beAngle = resolveField(op.bevelEmbossAngleHandleId, be.angle ?? 120, 0, 360) * Math.PI / 180;\n\tconst beAltitude = resolveField(op.bevelEmbossAltitudeHandleId, be.altitude ?? 30, 0, 90) * Math.PI / 180;\n\tconst beHlOpacity = resolveField(op.bevelEmbossHighlightOpacityHandleId, be.highlightOpacity ?? .75, 0, 1);\n\tconst beShOpacity = resolveField(op.bevelEmbossShadowOpacityHandleId, be.shadowOpacity ?? .75, 0, 1);\n\tconst coCol = hexToRgba(co.color ?? \"#ff0000\");\n\tconst coOpacity = resolveField(op.colorOverlayOpacityHandleId, co.opacity ?? 1, 0, 1);\n\tconst coBlend = BLEND_MODE_MAP[co.blendMode ?? \"normal\"] ?? 0;\n\tuniformBufferData.fill(0);\n\tuniformBufferData[0] = dsCol[0];\n\tuniformBufferData[1] = dsCol[1];\n\tuniformBufferData[2] = dsCol[2];\n\tuniformBufferData[3] = dsCol[3];\n\tuniformBufferData[4] = ds.enabled ? 1 : 0;\n\tuniformBufferData[5] = dsOpacity;\n\tuniformBufferData[6] = dsAngle;\n\tuniformBufferData[7] = dsDist;\n\tuniformBufferData[8] = dsSpread;\n\tuniformBufferData[9] = dsSize;\n\tuniformBufferData[10] = dsBlend;\n\tuniformBufferData[11] = 0;\n\tuniformBufferData[12] = isCol[0];\n\tuniformBufferData[13] = isCol[1];\n\tuniformBufferData[14] = isCol[2];\n\tuniformBufferData[15] = isCol[3];\n\tuniformBufferData[16] = is.enabled ? 1 : 0;\n\tuniformBufferData[17] = isOpacity;\n\tuniformBufferData[18] = isAngle;\n\tuniformBufferData[19] = isDist;\n\tuniformBufferData[20] = isChoke;\n\tuniformBufferData[21] = isSize;\n\tuniformBufferData[22] = isBlend;\n\tuniformBufferData[23] = 0;\n\tuniformBufferData[24] = ogCol[0];\n\tuniformBufferData[25] = ogCol[1];\n\tuniformBufferData[26] = ogCol[2];\n\tuniformBufferData[27] = ogCol[3];\n\tuniformBufferData[28] = og.enabled ? 1 : 0;\n\tuniformBufferData[29] = ogOpacity;\n\tuniformBufferData[30] = ogSize;\n\tuniformBufferData[31] = ogSpread;\n\tuniformBufferData[32] = ogBlend;\n\tuniformBufferData[33] = 0;\n\tuniformBufferData[34] = 0;\n\tuniformBufferData[35] = 0;\n\tuniformBufferData[36] = igCol[0];\n\tuniformBufferData[37] = igCol[1];\n\tuniformBufferData[38] = igCol[2];\n\tuniformBufferData[39] = igCol[3];\n\tuniformBufferData[40] = ig.enabled ? 1 : 0;\n\tuniformBufferData[41] = igOpacity;\n\tuniformBufferData[42] = igSize;\n\tuniformBufferData[43] = igSpread;\n\tuniformBufferData[44] = igBlend;\n\tuniformBufferData[45] = 0;\n\tuniformBufferData[46] = 0;\n\tuniformBufferData[47] = 0;\n\tuniformBufferData[48] = stCol[0];\n\tuniformBufferData[49] = stCol[1];\n\tuniformBufferData[50] = stCol[2];\n\tuniformBufferData[51] = stCol[3];\n\tuniformBufferData[52] = st.enabled ? 1 : 0;\n\tuniformBufferData[53] = stSize;\n\tuniformBufferData[54] = stPos;\n\tuniformBufferData[55] = stOpacity;\n\tuniformBufferData[56] = stBlend;\n\tuniformBufferData[57] = 0;\n\tuniformBufferData[58] = 0;\n\tuniformBufferData[59] = 0;\n\tuniformBufferData[60] = beHlCol[0];\n\tuniformBufferData[61] = beHlCol[1];\n\tuniformBufferData[62] = beHlCol[2];\n\tuniformBufferData[63] = beHlCol[3];\n\tuniformBufferData[64] = beShCol[0];\n\tuniformBufferData[65] = beShCol[1];\n\tuniformBufferData[66] = beShCol[2];\n\tuniformBufferData[67] = beShCol[3];\n\tuniformBufferData[68] = be.enabled ? 1 : 0;\n\tuniformBufferData[69] = beStyle;\n\tuniformBufferData[70] = beTech;\n\tuniformBufferData[71] = beDepth;\n\tuniformBufferData[72] = beDir;\n\tuniformBufferData[73] = beSize;\n\tuniformBufferData[74] = beSoften;\n\tuniformBufferData[75] = beAngle;\n\tuniformBufferData[76] = beAltitude;\n\tuniformBufferData[77] = beHlOpacity;\n\tuniformBufferData[78] = beShOpacity;\n\tuniformBufferData[79] = 0;\n\tuniformBufferData[80] = coCol[0];\n\tuniformBufferData[81] = coCol[1];\n\tuniformBufferData[82] = coCol[2];\n\tuniformBufferData[83] = coCol[3];\n\tuniformBufferData[84] = co.enabled ? 1 : 0;\n\tuniformBufferData[85] = coOpacity;\n\tuniformBufferData[86] = coBlend;\n\tuniformBufferData[87] = 0;\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(uniformBufferData);\n\tconst uBindGroup = ctx.device.createBindGroup({\n\t\tlayout: uniformLayout,\n\t\tentries: [{\n\t\t\tbinding: 0,\n\t\t\tresource: { buffer: uniformBuffer }\n\t\t}]\n\t});\n\tconst tBindGroup = ctx.device.createBindGroup({\n\t\tlayout: textureLayout,\n\t\tentries: [{\n\t\t\tbinding: 0,\n\t\t\tresource: inputView\n\t\t}, {\n\t\t\tbinding: 1,\n\t\t\tresource: sampler\n\t\t}]\n\t});\n\tconst outTex = ctx.renderer.getTemporaryTexture(width, height, [\n\t\tinputTex,\n\t\tchildTex,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tdrawFullscreenPass(encoder, outTex.createView(), pipeline, [uBindGroup, tBindGroup]);\n\tdrawTextureToTarget(args, outTex, op.opacity ?? 1);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer });\n\n//#endregion\nexport { LayerStyleNodeConfigSchema as _, DEFAULT_COLOR_OVERLAY as a, computeLayerStylePadding as b, DEFAULT_INNER_SHADOW as c, GlowStyleSchema as d, InnerShadowStyleSchema as f, LAYER_STYLE_PRESETS as g, LAYER_STYLE_OUTPUT_TYPE_MAP as h, DEFAULT_BEVEL_EMBOSS as i, DEFAULT_STROKE as l, LAYER_STYLE_CONFIG_HANDLES as m, BevelEmbossStyleSchema as n, DEFAULT_DROP_SHADOW as o, LAYER_STYLE_BLEND_MODES as p, ColorOverlayStyleSchema as r, DEFAULT_GLOW as s, renderers_default as t, DropShadowStyleSchema as u, LayerStyleResultSchema as v, StrokeStyleSchema as y };\n//# sourceMappingURL=renderers-Ch81UvXn.mjs.map"],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import "./chunk-D7gtBK74.mjs";
2
- import "./dist-DBWkkSvJ.mjs";
3
- import { t as renderers_default } from "./renderer-DWaqF7-6.mjs";
4
-
5
- export { renderers_default as default };
@@ -1,5 +0,0 @@
1
- import "./chunk-D7gtBK74.mjs";
2
- import "./dist-DBWkkSvJ.mjs";
3
- import { n as renderers_default, t as WebGPURenderer } from "./renderer-D6p8b6ql.mjs";
4
-
5
- export { WebGPURenderer, renderers_default as default };
@@ -1,5 +0,0 @@
1
- import "./chunk-D7gtBK74.mjs";
2
- import "./dist-DBWkkSvJ.mjs";
3
- import { t as renderers_default } from "./renderer-BfrzKmRh.mjs";
4
-
5
- export { renderers_default as default };
@@ -1,5 +0,0 @@
1
- import "./chunk-D7gtBK74.mjs";
2
- import "./dist-DBWkkSvJ.mjs";
3
- import { t as renderers_default } from "./renderer-fH9SCJC2.mjs";
4
-
5
- export { renderers_default as default };
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderer-sg-ffvVd.d.mts","names":["MediaOperation","NodeInputConnection","NodeOperation","SignalData","VirtualMediaData","isSignal","resolveBoolean","resolveNumber","resolveParam","resolveString","RenderContextValue","WebGPUNodeRendererArgs","WebGPUNodeRenderer","Parameters","FULLSCREEN_QUAD_WGSL","PREMULTIPLIED_BLEND","GPUBlendState","STRAIGHT_ALPHA_BLEND","FragmentBinding","GPUBindGroupLayoutEntry","Omit","fragmentBindGroupLayout","GPUDevice","GPUBindGroupLayout","texturesLayout","perDevice","T","FullscreenPipelineOptions","GPUShaderModule","GPUPipelineLayout","GPUTextureFormat","createFullscreenPipeline","GPURenderPipeline","DrawChildToTextureOptions","NodeRenderProps","Partial","GPUTexture","drawChildToTexture","GPUTextureView","Promise","beginTargetPass","GPURenderPassEncoder","drawTextureToTarget","signalTiming","NodeSignalData","SignalTextureContext","signalTextureView","drawFullscreenPass","GPUCommandEncoder","GPUBindGroup","Point2D","solveHomography","GPUCommandEncoder$1","globalThis","GPURenderPassEncoder$1","GPUTextureView$1","GPUTexture$1","TOperation","Record","AudioProcessorContext","AudioProcessor","Float32Array","resolveFrameNumber","unwrapFrameParam","NodeOperationInputs","HandleParam","SD","resolveHandleParam","resolveSignalField","isHandleConnected","NodeRendererPlugin","defineRenderer","Readonly","WebGPURegistry","webgpuRegistry","registerWebGPURenderer","TextureSourceOp","AudioProcessorRegistry","audioRegistry","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","R","S","U","V","W","X","Y","Z","_","a","b","c","d","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","webgpuRegistry","C","resolveFrameNumber","D","resolveSignalField","E","resolveParam","M","solveHomography","O","resolveString","S","resolveBoolean","T","resolveNumber","V","WebGPUNodeRendererArgs","_","audioRegistry","a","GPUTexture","b","isSignal","c","MediaOperation","d","NodeOperationInputs","f","NodeRenderProps","g","WebGPURegistry","h","WebGPUNodeRenderer","i","GPURenderPassEncoder","j","Point2D","k","unwrapFrameParam","l","NodeInputConnection","m","TextureSourceOp","n","AudioProcessorContext","o","GPUTextureView","p","NodeRendererPlugin","r","GPUCommandEncoder","s","HandleParam","t","AudioProcessor","u","NodeOperation","v","defineRenderer","w","resolveHandleParam","x","registerWebGPURenderer","y","isHandleConnected","_framefields_core0","FileDataSchema","MultiOutputGenericSchema","SingleOutputGenericSchema","VirtualMediaDataSchema","createOutputItemSchema","z","FieldMeta","FieldOptions","ConfigBuilder","TKey","TType","TShape","ZodRawShape","Record","ZodTypeAny","P","core","$strip","ZodObject","configBuilder","COMPOSITE_OPERATIONS","GlobalCompositeOperation","ZodEnum","ColorSchema","ZodString","ZodOptional","PercentageSchema","ZodNumber","DimensionSchema","AnimationSchema","ZodArray","StrokeSchema","ZodDefault","ImageResultSchema","ZodLiteral","OutputItem","$ZodTypeInternals","ZodType","ZodTuple","ImageResult","infer","VideoResultSchema","VideoResult","AudioResultSchema","AudioResult","TextResultSchema","TextResult","NumberResultSchema","NumberResult","SignalResultSchema","SignalResult","OperationInputsSchema","ZodBoolean","ZodUnknown","ZodNullable","ZodRecord"],"sources":["../../node-sdk/dist/index-Dgzr2Wnb.d.mts","../../node-sdk/dist/index.d.mts"],"sourcesContent":["import { MediaOperation, NodeInputConnection, NodeOperation, SignalData, VirtualMediaData, isSignal, resolveBoolean, resolveNumber, resolveParam, resolveString } from \"@framefields/core\";\nimport { RenderContextValue } from \"@framefields/webgpu-renderers\";\n\n//#region renderer/gpu.d.ts\n/** The argument object every WebGPU node renderer receives. */\ntype WebGPUNodeRendererArgs = Parameters<WebGPUNodeRenderer>[0];\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 */\ndeclare const 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. */\ndeclare const PREMULTIPLIED_BLEND: GPUBlendState;\n/** Straight-alpha color over a premultiplied-alpha accumulation. */\ndeclare const STRAIGHT_ALPHA_BLEND: GPUBlendState;\n/**\n * One bind-group entry, visible to the fragment stage unless it says\n * otherwise: `\"uniform\"` buffer, `\"texture\"` (filterable float 2D) or\n * `\"sampler\"` (filtering), or any other entry minus its binding index.\n */\ntype FragmentBinding = \"uniform\" | \"texture\" | \"sampler\" | Omit<GPUBindGroupLayoutEntry, \"binding\" | \"visibility\"> | Omit<GPUBindGroupLayoutEntry, \"binding\">;\n/** A bind group layout whose entries are bound at 0, 1, 2… in order. */\ndeclare function fragmentBindGroupLayout(device: GPUDevice, bindings: FragmentBinding[], label?: string): GPUBindGroupLayout;\n/** `count` float textures followed by one filtering sampler. */\ndeclare function texturesLayout(device: GPUDevice, count: number): GPUBindGroupLayout;\n/** Memoizes `create` per GPUDevice (resources can't cross devices). */\ndeclare function perDevice<T>(create: (device: GPUDevice) => T): (device: GPUDevice) => T;\ninterface FullscreenPipelineOptions {\n label?: string;\n module: GPUShaderModule;\n layouts: GPUBindGroupLayout[] | GPUPipelineLayout;\n format: GPUTextureFormat;\n blend?: GPUBlendState;\n /** Defaults to \"vs\". */\n vertexEntryPoint?: string;\n /** Defaults to \"fs\". */\n fragmentEntryPoint?: string;\n}\n/** A triangle-strip pipeline drawing one full-screen quad (`draw(4)`). */\ndeclare function createFullscreenPipeline(device: GPUDevice, options: FullscreenPipelineOptions): GPURenderPipeline;\ninterface DrawChildToTextureOptions {\n /** Defaults to the target's size. */\n width?: number;\n height?: number;\n /** Props for the child; defaults to the node's props with the child as media. */\n props?: Partial<NodeRenderProps>;\n /** Textures still in use that the temporary texture must not alias. */\n exclude?: GPUTexture[];\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 */\ndeclare function drawChildToTexture(args: WebGPUNodeRendererArgs, child: VirtualMediaData, options?: DrawChildToTextureOptions): Promise<{\n texture: GPUTexture;\n view: GPUTextureView;\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 */\ndeclare function beginTargetPass(args: WebGPUNodeRendererArgs, width?: number, height?: number): GPURenderPassEncoder;\n/** Draws `texture` over the whole target at `opacity` (the node's output). */\ndeclare function drawTextureToTarget(args: WebGPUNodeRendererArgs, texture: GPUTexture, opacity?: number): void;\n/** Clock a signal texture is evaluated at, in seconds. */\ndeclare function signalTiming(props: NodeRenderProps, frame: number, fps: number, fallbackDurationSeconds?: number): {\n elapsedSeconds: number;\n durationSeconds: number;\n};\ntype NodeSignalData = SignalData & {\n nodeId?: string;\n};\ninterface SignalTextureContext {\n args: WebGPUNodeRendererArgs;\n width: number;\n height: number;\n frame: number;\n fps: number;\n elapsedSeconds: number;\n durationSeconds: number;\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 */\ndeclare function signalTextureView(sc: SignalTextureContext, param: {\n hasStaticSig: boolean;\n sd: NodeSignalData | null;\n gpuTextureView?: GPUTextureView;\n}, fallbackId: string): GPUTextureView;\n/** Clears `target` to transparent and draws one full-screen quad into it. */\ndeclare function drawFullscreenPass(encoder: GPUCommandEncoder, target: GPUTextureView, pipeline: GPURenderPipeline, bindGroups: GPUBindGroup[]): void;\n//#endregion\n//#region renderer/homography.d.ts\ninterface Point2D {\n x: number;\n y: number;\n}\n/**\n * Computes an 8-parameter 3x3 homography matrix mapping destination coordinates (quad)\n * to normalized source coordinates (unit square [0, 1]^2).\n *\n * The homography H maps destination (x, y) to source (u, v):\n * u = (h00*x + h01*y + h02) / (h20*x + h21*y + h22)\n * v = (h10*x + h11*y + h12) / (h20*x + h21*y + h22)\n *\n * Resulting array: [h00, h01, h02, h10, h11, h12, h20, h21, 1.0]\n */\ndeclare function solveHomography(dstPoints: Point2D[], srcPoints?: Point2D[]): number[];\n//#endregion\n//#region renderer/index.d.ts\ntype GPUCommandEncoder$1 = globalThis.GPUCommandEncoder;\ntype GPURenderPassEncoder$1 = globalThis.GPURenderPassEncoder;\ntype GPUTextureView$1 = globalThis.GPUTextureView;\ntype GPUTexture$1 = globalThis.GPUTexture;\ninterface NodeRenderProps<TOperation extends MediaOperation = MediaOperation> {\n renderId: string;\n virtualMedia: VirtualMediaData<TOperation>;\n volume?: number;\n playbackRateOverride?: number;\n trimStartOverride?: number;\n trimEndOverride?: number;\n containerWidth: number;\n containerHeight: number;\n opacity?: number;\n frame?: number;\n compositionFrame?: number;\n fps?: number;\n elapsedMs?: number;\n durationMs?: number;\n timestampSec?: number;\n renderingContext?: \"visual\" | \"audio\";\n inheritedSeekOffset?: number;\n inheritedClockOffset?: number;\n isHeadless?: boolean;\n forceWait?: boolean;\n isVideoMode?: boolean;\n isPlaying?: boolean;\n excludeTextures?: GPUTexture$1[];\n /** Signal values that override the node's own (text animators read them). */\n signals?: Record<string, unknown>;\n renderChild?: (child: VirtualMediaData, overrides?: Partial<NodeRenderProps>) => unknown;\n}\ntype WebGPUNodeRenderer<TOperation extends MediaOperation = MediaOperation> = (args: {\n ctx: RenderContextValue;\n encoder: GPUCommandEncoder$1;\n pass: GPURenderPassEncoder$1;\n targetView: GPUTextureView$1;\n targetTexture: GPUTexture$1;\n targetWidth: number;\n targetHeight: number;\n props: NodeRenderProps<TOperation>;\n drawChild: (child: VirtualMediaData, overrides?: Partial<NodeRenderProps>, targetViewOverride?: GPUTextureView$1, targetTextureOverride?: GPUTexture$1, targetWidthOverride?: number, targetHeightOverride?: number) => Promise<void>;\n}) => Promise<void> | void;\ninterface AudioProcessorContext {\n device?: GPUDevice;\n frame?: number;\n compositionFrame?: number;\n fps?: number;\n elapsedMs?: number;\n durationMs?: number;\n renderId?: string;\n}\ntype AudioProcessor<TOperation extends MediaOperation = MediaOperation> = (channels: Float32Array[], sampleRate: number, virtualMedia: VirtualMediaData<TOperation>, ctx?: AudioProcessorContext) => void | Promise<void>;\n/**\n * A numeric node parameter at `frame`: a number, a signal-like `get(ctx)` or\n * `{ value }`, a `(ctx) => number` function, or anything `Number()` accepts;\n * `fallback` when none of those yields a finite number.\n */\ndeclare function resolveFrameNumber(val: unknown, fallback: number, frame: number, fps: number): number;\n/**\n * A static node parameter at `frame`: calls `get(ctx)` / `(frame, fps)`\n * functions and reads `{ value }` wrappers, keeping a signal's GPU texture\n * binding when it has one. Anything else is returned as-is.\n */\ndeclare function unwrapFrameParam(raw: unknown, frame: number, fps: number): {\n value: unknown;\n gpuTextureView?: GPUTextureView$1;\n};\n/** The `inputs` map node operations carry: one entry per connected handle. */\ntype NodeOperationInputs = Record<string, {\n connectionValid: boolean;\n outputItem: {\n type: string;\n data: unknown;\n } | null;\n}>;\ninterface HandleParam<SD> {\n val: number;\n /** The value comes from a signal (`sd`) sampled on the GPU. */\n hasStaticSig: boolean;\n sd: SD | null;\n handleId: string | null | undefined;\n}\n/**\n * A numeric parameter fed through `handleId`: a connected Number (clamped), a\n * connected Signal (sampled on the GPU, `val` stays `fallbackVal`), or else\n * `fallbackVal` clamped to [clampMin, clampMax].\n */\ndeclare function resolveHandleParam<SD>(inputs: NodeOperationInputs | undefined, handleId: string | null | undefined, fallbackVal: number, clampMin: number, clampMax: number): HandleParam<SD>;\n/**\n * A numeric field `fieldName` of a node operation, fed through its\n * `${fieldName}HandleId` input: a connected Signal/Numeric (`sd`, sampled on\n * the GPU; `value` is its offset), a connected Number, or the operation's own\n * value — each clamped to [minVal, maxVal].\n */\ndeclare function resolveSignalField<SD>(op: {\n inputs?: NodeOperationInputs;\n}, fieldName: string, defaultValue: number, minVal?: number, maxVal?: number): {\n hasSignal: boolean;\n sd: SD | null;\n value: number;\n};\n/**\n * Whether the handle whose id is stored at `op[handleIdKey]` has a valid\n * Signal or Number connection.\n */\ndeclare function isHandleConnected(op: Record<string, unknown>, handleIdKey: string): boolean;\ninterface NodeRendererPlugin {\n WebGPURenderer?: WebGPUNodeRenderer;\n audioProcessor?: AudioProcessor;\n}\ndeclare function defineRenderer(plugin: NodeRendererPlugin): Readonly<NodeRendererPlugin>;\ndeclare class WebGPURegistry {\n private renderers;\n register(op: string, renderer: WebGPUNodeRenderer): void;\n get(op: string): WebGPUNodeRenderer | undefined;\n has(op: string): boolean;\n}\ndeclare const webgpuRegistry: WebGPURegistry;\ndeclare function registerWebGPURenderer(op: string, renderer: WebGPUNodeRenderer): void;\ninterface TextureSourceOp {\n op: \"TextureSource\";\n sourceTexture: GPUTexture$1;\n opacity?: number;\n dataType?: \"Image\";\n}\ndeclare class AudioProcessorRegistry {\n private processors;\n register(opType: string, processor: AudioProcessor): void;\n get(opType: string): AudioProcessor | null;\n}\ndeclare const audioRegistry: AudioProcessorRegistry;\n//#endregion\nexport { webgpuRegistry as A, SignalTextureContext as B, resolveFrameNumber as C, resolveSignalField as D, resolveParam as E, FragmentBinding as F, drawFullscreenPass as G, beginTargetPass as H, FullscreenPipelineOptions as I, perDevice as J, drawTextureToTarget as K, NodeSignalData as L, solveHomography as M, DrawChildToTextureOptions as N, resolveString as O, FULLSCREEN_QUAD_WGSL as P, PREMULTIPLIED_BLEND as R, resolveBoolean as S, resolveNumber as T, createFullscreenPipeline as U, WebGPUNodeRendererArgs as V, drawChildToTexture as W, signalTiming as X, signalTextureView as Y, texturesLayout as Z, audioRegistry as _, GPUTexture$1 as a, isSignal as b, MediaOperation as c, NodeOperationInputs as d, NodeRenderProps as f, WebGPURegistry as g, WebGPUNodeRenderer as h, GPURenderPassEncoder$1 as i, Point2D as j, unwrapFrameParam as k, NodeInputConnection as l, TextureSourceOp as m, AudioProcessorContext as n, GPUTextureView$1 as o, NodeRendererPlugin as p, fragmentBindGroupLayout as q, GPUCommandEncoder$1 as r, HandleParam as s, AudioProcessor as t, NodeOperation as u, defineRenderer as v, resolveHandleParam as w, registerWebGPURenderer as x, isHandleConnected as y, STRAIGHT_ALPHA_BLEND as z };\n//# sourceMappingURL=index-Dgzr2Wnb.d.mts.map","import { A as webgpuRegistry, C as resolveFrameNumber, D as resolveSignalField, E as resolveParam, M as solveHomography, O as resolveString, S as resolveBoolean, T as resolveNumber, V as WebGPUNodeRendererArgs, _ as audioRegistry, a as GPUTexture, b as isSignal, c as MediaOperation, d as NodeOperationInputs, f as NodeRenderProps, g as WebGPURegistry, h as WebGPUNodeRenderer, i as GPURenderPassEncoder, j as Point2D, k as unwrapFrameParam, l as NodeInputConnection, m as TextureSourceOp, n as AudioProcessorContext, o as GPUTextureView, p as NodeRendererPlugin, r as GPUCommandEncoder, s as HandleParam, t as AudioProcessor, u as NodeOperation, v as defineRenderer, w as resolveHandleParam, x as registerWebGPURenderer, y as isHandleConnected } from \"./index-Dgzr2Wnb.mjs\";\nimport * as _framefields_core0 from \"@framefields/core\";\nimport { FileDataSchema, MultiOutputGenericSchema, SingleOutputGenericSchema, VirtualMediaDataSchema, createOutputItemSchema } from \"@framefields/core\";\nimport { z } from \"zod\";\n\n//#region shared/config-builder.d.ts\n\n/**\n * Per-field metadata, attached to the field's zod schema with `.meta()`.\n *\n * It is readable from the schema itself (`z.globalRegistry.get(schema)`) and\n * from `z.toJSONSchema(schema)`, which is what `scripts/generate-effects.mts`\n * uses to emit the authoring classes. Raw `z.object` configs can call\n * `.meta({...})` with these keys directly; `configBuilder().field()` is sugar\n * for the same thing. See `spec/sync-node.md` §5.2.\n */\ninterface FieldMeta {\n label?: string;\n description?: string;\n dataTypes?: string[];\n /** Editor: the node shows an input handle for this field. */\n bindable?: boolean;\n /**\n * Authoring: the prop is typed `EffectProp<T>` (value, signal or frame\n * function). Defaults to `bindable`. Set it explicitly where the two differ.\n */\n signal?: boolean;\n /** Editor wiring only. Excluded from the generated authoring surface. */\n editorOnly?: boolean;\n /** Escape hatch for a value zod cannot type, e.g. a GPU texture handle. */\n tsType?: {\n name: string;\n from: string;\n };\n}\n/** @deprecated Use {@link FieldMeta}. */\ntype FieldOptions = FieldMeta;\ndeclare class ConfigBuilder<TShape extends z.ZodRawShape = Record<string, never>> {\n private shape;\n private options;\n constructor(shape?: TShape, options?: {\n strict?: boolean;\n });\n field<TKey extends string, TType extends z.ZodTypeAny>(key: TKey, schema: TType, options?: FieldMeta): ConfigBuilder<TShape & { [K in TKey]: TType }>;\n build(): {\n schema: z.ZodObject<{ -readonly [P in keyof TShape]: TShape[P] }, z.core.$strip>;\n };\n}\ndeclare function configBuilder(options?: {\n strict?: boolean;\n}): ConfigBuilder<{}>;\n//#endregion\n//#region shared/schemas.d.ts\ndeclare const COMPOSITE_OPERATIONS: readonly [\"source-over\", \"source-in\", \"source-out\", \"source-atop\", \"destination-over\", \"destination-in\", \"destination-out\", \"destination-atop\", \"lighter\", \"copy\", \"xor\", \"multiply\", \"screen\", \"overlay\", \"darken\", \"lighten\", \"color-dodge\", \"color-burn\", \"hard-light\", \"soft-light\", \"difference\", \"exclusion\", \"hue\", \"saturation\", \"color\", \"luminosity\"];\ndeclare const GlobalCompositeOperation: z.ZodEnum<{\n \"source-over\": \"source-over\";\n \"source-in\": \"source-in\";\n \"source-out\": \"source-out\";\n \"source-atop\": \"source-atop\";\n \"destination-over\": \"destination-over\";\n \"destination-in\": \"destination-in\";\n \"destination-out\": \"destination-out\";\n \"destination-atop\": \"destination-atop\";\n lighter: \"lighter\";\n copy: \"copy\";\n xor: \"xor\";\n multiply: \"multiply\";\n screen: \"screen\";\n overlay: \"overlay\";\n darken: \"darken\";\n lighten: \"lighten\";\n \"color-dodge\": \"color-dodge\";\n \"color-burn\": \"color-burn\";\n \"hard-light\": \"hard-light\";\n \"soft-light\": \"soft-light\";\n difference: \"difference\";\n exclusion: \"exclusion\";\n hue: \"hue\";\n saturation: \"saturation\";\n color: \"color\";\n luminosity: \"luminosity\";\n}>;\ndeclare const ColorSchema: z.ZodOptional<z.ZodString>;\ndeclare const PercentageSchema: z.ZodNumber;\ndeclare const DimensionSchema: z.ZodOptional<z.ZodNumber>;\ndeclare const AnimationSchema: z.ZodObject<{\n animations: z.ZodOptional<z.ZodArray<z.ZodObject<{\n id: z.ZodString;\n type: z.ZodEnum<{\n \"fade-in\": \"fade-in\";\n \"fade-out\": \"fade-out\";\n \"slide-in-left\": \"slide-in-left\";\n \"slide-in-right\": \"slide-in-right\";\n \"slide-in-top\": \"slide-in-top\";\n \"slide-in-bottom\": \"slide-in-bottom\";\n \"zoom-in\": \"zoom-in\";\n \"zoom-out\": \"zoom-out\";\n \"rotate-cw\": \"rotate-cw\";\n \"rotate-ccw\": \"rotate-ccw\";\n bounce: \"bounce\";\n shake: \"shake\";\n }>;\n value: z.ZodNumber;\n }, z.core.$strip>>>;\n}, z.core.$strip>;\ndeclare const StrokeSchema: z.ZodObject<{\n stroke: z.ZodOptional<z.ZodString>;\n strokeWidth: z.ZodOptional<z.ZodNumber>;\n strokeAlign: z.ZodDefault<z.ZodOptional<z.ZodEnum<{\n inside: \"inside\";\n center: \"center\";\n outside: \"outside\";\n }>>>;\n strokeRadius: z.ZodOptional<z.ZodNumber>;\n}, z.core.$strip>;\ndeclare const ImageResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodLiteral<0>;\n outputs: z.ZodTuple<[z.ZodObject<{\n items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<\"Image\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Image\">, unknown>>], null>;\n }, z.core.$strip>], null>;\n}, z.core.$strip>;\ntype ImageResult = z.infer<typeof ImageResultSchema>;\ndeclare const VideoResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodLiteral<0>;\n outputs: z.ZodTuple<[z.ZodObject<{\n items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<\"Video\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Video\">, unknown>>], null>;\n }, z.core.$strip>], null>;\n}, z.core.$strip>;\ntype VideoResult = z.infer<typeof VideoResultSchema>;\ndeclare const AudioResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodLiteral<0>;\n outputs: z.ZodTuple<[z.ZodObject<{\n items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<\"Audio\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Audio\">, unknown>>], null>;\n }, z.core.$strip>], null>;\n}, z.core.$strip>;\ntype AudioResult = z.infer<typeof AudioResultSchema>;\ndeclare const TextResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodLiteral<0>;\n outputs: z.ZodTuple<[z.ZodObject<{\n items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<\"Text\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Text\">, unknown>>], null>;\n }, z.core.$strip>], null>;\n}, z.core.$strip>;\ntype TextResult = z.infer<typeof TextResultSchema>;\ndeclare const NumberResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodLiteral<0>;\n outputs: z.ZodTuple<[z.ZodObject<{\n items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<\"Number\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Number\">, unknown>>], null>;\n }, z.core.$strip>], null>;\n}, z.core.$strip>;\ntype NumberResult = z.infer<typeof NumberResultSchema>;\ndeclare const SignalResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodLiteral<0>;\n outputs: z.ZodTuple<[z.ZodObject<{\n items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<\"Signal\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Signal\">, unknown>>], null>;\n }, z.core.$strip>], null>;\n}, z.core.$strip>;\ntype SignalResult = z.infer<typeof SignalResultSchema>;\n/** The `inputs` map an operation carries: one entry per connected handle. */\ndeclare const OperationInputsSchema: z.ZodRecord<z.ZodString, z.ZodObject<{\n connectionValid: z.ZodBoolean;\n outputItem: z.ZodOptional<z.ZodNullable<z.ZodObject<{\n type: z.ZodString;\n data: z.ZodUnknown;\n }, z.core.$strip>>>;\n}, z.core.$strip>>;\n//#endregion\nexport { AnimationSchema, AudioProcessor, AudioProcessorContext, AudioResult, AudioResultSchema, COMPOSITE_OPERATIONS, ColorSchema, ConfigBuilder, DimensionSchema, FieldMeta, FieldOptions, FileDataSchema, GPUCommandEncoder, GPURenderPassEncoder, GPUTexture, GPUTextureView, GlobalCompositeOperation, HandleParam, ImageResult, ImageResultSchema, MediaOperation, MultiOutputGenericSchema, NodeInputConnection, NodeOperation, NodeOperationInputs, NodeRenderProps, NodeRendererPlugin, NumberResult, NumberResultSchema, OperationInputsSchema, PercentageSchema, Point2D, SignalResult, SignalResultSchema, SingleOutputGenericSchema, StrokeSchema, TextResult, TextResultSchema, TextureSourceOp, VideoResult, VideoResultSchema, VirtualMediaDataSchema, WebGPUNodeRenderer, WebGPUNodeRendererArgs, WebGPURegistry, audioRegistry, configBuilder, createOutputItemSchema, defineRenderer, isHandleConnected, isSignal, registerWebGPURenderer, resolveBoolean, resolveFrameNumber, resolveHandleParam, resolveNumber, resolveParam, resolveSignalField, resolveString, solveHomography, unwrapFrameParam, webgpuRegistry };\n//# sourceMappingURL=index.d.mts.map"],"mappings":";;;;;;;KA+GKoD,mBAAAA,GAAsBC,UAAAA,CAAWL;KACjCM,sBAAAA,GAAyBD,UAAAA,CAAWZ;KACpCc,gBAAAA,GAAmBF,UAAAA,CAAWf;KAC9BkB,YAAAA,GAAeH,UAAAA,CAAWjB;UACrBF,mCAAmClC,iBAAiBA;;gBAE9CI,iBAAiBqD;;;;;;;;;;;;;;;;;;;;;oBAqBbD;;YAERE;wBACYtD,8BAA8B+B,QAAQD;;KAEzDtB,sCAAsCZ,iBAAiBA;OACrDU;WACI0C;QACHE;cACMC;iBACGC;;;SAGRtB,gBAAgBuB;qBACJrD,8BAA8B+B,QAAQD,uCAAuCqB,0CAA0CC,8EAA8EjB;MACpNA;UACIoB,qBAAAA;WACCrC;;;;;;;;KAQNsC,kCAAkC5D,iBAAiBA,6BAA6B6D,kDAAkDzD,iBAAiBqD,mBAAmBE,iCAAiCpB;;;;;;;UAuDlM+B,kBAAAA;mBACS1D;mBACAgD;;;;;cCtELyL,oBAAoB5C,CAAAA,CAAEa;uBACbb,CAAAA,CAAE6B;WACd7B,CAAAA,CAAEiC,UAAUjC,CAAAA,CAAEa;WACdb,CAAAA,CAAEiC,UAAUjC,CAAAA,CAAEgC,QAAQtC,+BAAkDM,CAAAA,CAAEW,IAAAA,CAAKoB,kBAAkBrC;KACvGM,CAAAA,CAAEW,IAAAA,CAAKC;GACTZ,CAAAA,CAAEW,IAAAA,CAAKC"}