framefields 2.0.2

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 (408) hide show
  1. package/LICENCE +202 -0
  2. package/README.md +740 -0
  3. package/dist/audio/index.d.mts +5 -0
  4. package/dist/audio/index.mjs +14 -0
  5. package/dist/audio-Dvwwz8xU.d.mts +37 -0
  6. package/dist/audio-Dvwwz8xU.d.mts.map +1 -0
  7. package/dist/audio-TAvPwzLR.mjs +214 -0
  8. package/dist/audio-TAvPwzLR.mjs.map +1 -0
  9. package/dist/audio-x28ZgQBP.mjs +85 -0
  10. package/dist/audio-x28ZgQBP.mjs.map +1 -0
  11. package/dist/chunk-GMkBE123.mjs +47 -0
  12. package/dist/client-C74hb7fy.mjs +66 -0
  13. package/dist/client-C74hb7fy.mjs.map +1 -0
  14. package/dist/dist-1iUYuPct.mjs +1859 -0
  15. package/dist/dist-1iUYuPct.mjs.map +1 -0
  16. package/dist/dist-Bx6J0VcM.mjs +1859 -0
  17. package/dist/dist-Bx6J0VcM.mjs.map +1 -0
  18. package/dist/dist-C_hjvkdN.mjs +2220 -0
  19. package/dist/dist-C_hjvkdN.mjs.map +1 -0
  20. package/dist/dist-DKm2IyEJ.mjs +94 -0
  21. package/dist/dist-DKm2IyEJ.mjs.map +1 -0
  22. package/dist/dist-cjs-B5EVqDFp.mjs +85 -0
  23. package/dist/dist-cjs-B5EVqDFp.mjs.map +1 -0
  24. package/dist/dist-cjs-BGJkdexX.mjs +437 -0
  25. package/dist/dist-cjs-BGJkdexX.mjs.map +1 -0
  26. package/dist/dist-cjs-BKmGCgtm.mjs +9069 -0
  27. package/dist/dist-cjs-BKmGCgtm.mjs.map +1 -0
  28. package/dist/dist-cjs-BUc0_kg-.mjs +1091 -0
  29. package/dist/dist-cjs-BUc0_kg-.mjs.map +1 -0
  30. package/dist/dist-cjs-BUwe2XhR.mjs +153 -0
  31. package/dist/dist-cjs-BUwe2XhR.mjs.map +1 -0
  32. package/dist/dist-cjs-BWgoUCXJ.mjs +137 -0
  33. package/dist/dist-cjs-BWgoUCXJ.mjs.map +1 -0
  34. package/dist/dist-cjs-CmZEMtO6.mjs +6 -0
  35. package/dist/dist-cjs-D7kEM-Mj.mjs +181 -0
  36. package/dist/dist-cjs-D7kEM-Mj.mjs.map +1 -0
  37. package/dist/dist-cjs-DFUmy89O.mjs +48 -0
  38. package/dist/dist-cjs-DFUmy89O.mjs.map +1 -0
  39. package/dist/dist-cjs-Df7144zM.mjs +209 -0
  40. package/dist/dist-cjs-Df7144zM.mjs.map +1 -0
  41. package/dist/dist-cjs-DgxjcvBN.mjs +98 -0
  42. package/dist/dist-cjs-DgxjcvBN.mjs.map +1 -0
  43. package/dist/dist-cjs-DsMdld8l.mjs +5015 -0
  44. package/dist/dist-cjs-DsMdld8l.mjs.map +1 -0
  45. package/dist/dist-cjs-Dzs5P3K0.mjs +51 -0
  46. package/dist/dist-cjs-Dzs5P3K0.mjs.map +1 -0
  47. package/dist/dist-cjs-ECMuIF57.mjs +323 -0
  48. package/dist/dist-cjs-ECMuIF57.mjs.map +1 -0
  49. package/dist/dist-cjs-lYvO8aDo.mjs +64 -0
  50. package/dist/dist-cjs-lYvO8aDo.mjs.map +1 -0
  51. package/dist/dist-cjs-qEJrwjGk.mjs +66 -0
  52. package/dist/dist-cjs-qEJrwjGk.mjs.map +1 -0
  53. package/dist/dist-cjs-x5cwlqA5.mjs +43 -0
  54. package/dist/dist-cjs-x5cwlqA5.mjs.map +1 -0
  55. package/dist/dist-gjHmorxL.mjs +27479 -0
  56. package/dist/dist-gjHmorxL.mjs.map +1 -0
  57. package/dist/effects/index.d.mts +5 -0
  58. package/dist/effects/index.mjs +35 -0
  59. package/dist/effects-CHWORCYd.mjs +811 -0
  60. package/dist/effects-CHWORCYd.mjs.map +1 -0
  61. package/dist/event-streams-D-APZ7Ke.mjs +204 -0
  62. package/dist/event-streams-D-APZ7Ke.mjs.map +1 -0
  63. package/dist/fonts/index.d.mts +2 -0
  64. package/dist/fonts/index.mjs +3 -0
  65. package/dist/fonts-DrGTBJJk.mjs +188 -0
  66. package/dist/fonts-DrGTBJJk.mjs.map +1 -0
  67. package/dist/index-B0BNPEoH.d.mts +2117 -0
  68. package/dist/index-B0BNPEoH.d.mts.map +1 -0
  69. package/dist/index-BMVVmc4G.d.mts +72 -0
  70. package/dist/index-BMVVmc4G.d.mts.map +1 -0
  71. package/dist/index-D1ZsMpke.d.mts +264 -0
  72. package/dist/index-D1ZsMpke.d.mts.map +1 -0
  73. package/dist/index-D2jDC7O5.d.mts +3643 -0
  74. package/dist/index-D2jDC7O5.d.mts.map +1 -0
  75. package/dist/index-D2wJqSl5.d.mts +114 -0
  76. package/dist/index-D2wJqSl5.d.mts.map +1 -0
  77. package/dist/index-DKFGNyMB.d.mts +309 -0
  78. package/dist/index-DKFGNyMB.d.mts.map +1 -0
  79. package/dist/index-DiSKzDGR.d.mts +65 -0
  80. package/dist/index-DiSKzDGR.d.mts.map +1 -0
  81. package/dist/index.d.mts +4425 -0
  82. package/dist/index.d.mts.map +1 -0
  83. package/dist/index.mjs +2623 -0
  84. package/dist/index.mjs.map +1 -0
  85. package/dist/package-C58KmGKw.mjs +6 -0
  86. package/dist/package-C58KmGKw.mjs.map +1 -0
  87. package/dist/preview/index.d.mts +90 -0
  88. package/dist/preview/index.d.mts.map +1 -0
  89. package/dist/preview/index.mjs +15 -0
  90. package/dist/preview-engine/audio.mjs +1 -0
  91. package/dist/preview-engine/child_process-AIL2NBWS.mjs +1 -0
  92. package/dist/preview-engine/chunk-24P6DAB3.mjs +1 -0
  93. package/dist/preview-engine/chunk-37EFVZWT.mjs +1 -0
  94. package/dist/preview-engine/chunk-3O5OKR6D.mjs +223 -0
  95. package/dist/preview-engine/chunk-47VT677S.mjs +8 -0
  96. package/dist/preview-engine/chunk-4BEJJKEU.mjs +315 -0
  97. package/dist/preview-engine/chunk-4GEWSUX5.mjs +1 -0
  98. package/dist/preview-engine/chunk-55CCFPUX.mjs +237 -0
  99. package/dist/preview-engine/chunk-5JD65JSJ.mjs +110 -0
  100. package/dist/preview-engine/chunk-5UP7FSGT.mjs +294 -0
  101. package/dist/preview-engine/chunk-5XDHHOF2.mjs +367 -0
  102. package/dist/preview-engine/chunk-6YJP57MZ.mjs +729 -0
  103. package/dist/preview-engine/chunk-6ZOXGAYA.mjs +112 -0
  104. package/dist/preview-engine/chunk-AOLAHYVV.mjs +529 -0
  105. package/dist/preview-engine/chunk-B6PLCMBM.mjs +1 -0
  106. package/dist/preview-engine/chunk-BJKH76OM.mjs +264 -0
  107. package/dist/preview-engine/chunk-BUIQ5TUH.mjs +104 -0
  108. package/dist/preview-engine/chunk-BVF64D6H.mjs +1 -0
  109. package/dist/preview-engine/chunk-CA5N7JRZ.mjs +138 -0
  110. package/dist/preview-engine/chunk-CNSHAFEA.mjs +1 -0
  111. package/dist/preview-engine/chunk-CURR5X7D.mjs +1 -0
  112. package/dist/preview-engine/chunk-CVGM2U4J.mjs +47 -0
  113. package/dist/preview-engine/chunk-CYY366IE.mjs +1 -0
  114. package/dist/preview-engine/chunk-D5PHI6ET.mjs +109 -0
  115. package/dist/preview-engine/chunk-D7MZHP2Y.mjs +275 -0
  116. package/dist/preview-engine/chunk-DPPH3NK2.mjs +182 -0
  117. package/dist/preview-engine/chunk-DPST2XLC.mjs +418 -0
  118. package/dist/preview-engine/chunk-DRLEOHN5.mjs +1 -0
  119. package/dist/preview-engine/chunk-EDIZNO3P.mjs +1 -0
  120. package/dist/preview-engine/chunk-EHIIT4ZR.mjs +52 -0
  121. package/dist/preview-engine/chunk-FKZ4XXPE.mjs +1 -0
  122. package/dist/preview-engine/chunk-G3HW4VER.mjs +60 -0
  123. package/dist/preview-engine/chunk-G76HSKOS.mjs +184 -0
  124. package/dist/preview-engine/chunk-GYG2IIBR.mjs +1 -0
  125. package/dist/preview-engine/chunk-H2F5NVQ6.mjs +63 -0
  126. package/dist/preview-engine/chunk-H5BPCY7N.mjs +188 -0
  127. package/dist/preview-engine/chunk-HAXK42HG.mjs +997 -0
  128. package/dist/preview-engine/chunk-HXMDPMLB.mjs +1 -0
  129. package/dist/preview-engine/chunk-HYBAPT6I.mjs +1 -0
  130. package/dist/preview-engine/chunk-I4FH6HYU.mjs +73 -0
  131. package/dist/preview-engine/chunk-IYVN2QEL.mjs +1 -0
  132. package/dist/preview-engine/chunk-JPXQPP6J.mjs +1 -0
  133. package/dist/preview-engine/chunk-JWNHTRED.mjs +164 -0
  134. package/dist/preview-engine/chunk-KZOLCZIV.mjs +103 -0
  135. package/dist/preview-engine/chunk-L62MRHGZ.mjs +89 -0
  136. package/dist/preview-engine/chunk-LEEZXHQO.mjs +117 -0
  137. package/dist/preview-engine/chunk-LKYN3BM2.mjs +1 -0
  138. package/dist/preview-engine/chunk-LP3EP33S.mjs +610 -0
  139. package/dist/preview-engine/chunk-M2GRYRLM.mjs +111 -0
  140. package/dist/preview-engine/chunk-MC7TZZLD.mjs +134 -0
  141. package/dist/preview-engine/chunk-MT2DZQHO.mjs +1 -0
  142. package/dist/preview-engine/chunk-MTJHQATU.mjs +1 -0
  143. package/dist/preview-engine/chunk-N4LHIPHZ.mjs +340 -0
  144. package/dist/preview-engine/chunk-N4PWLBZ7.mjs +5 -0
  145. package/dist/preview-engine/chunk-NQZKBFC6.mjs +40 -0
  146. package/dist/preview-engine/chunk-NWRSVVTF.mjs +186 -0
  147. package/dist/preview-engine/chunk-P3HBP725.mjs +1 -0
  148. package/dist/preview-engine/chunk-PIAJWALT.mjs +1 -0
  149. package/dist/preview-engine/chunk-PJ3DVG45.mjs +1 -0
  150. package/dist/preview-engine/chunk-QP2NI4XD.mjs +82 -0
  151. package/dist/preview-engine/chunk-SA3JUR6D.mjs +52 -0
  152. package/dist/preview-engine/chunk-SRT2OCQW.mjs +1 -0
  153. package/dist/preview-engine/chunk-SWD76532.mjs +98 -0
  154. package/dist/preview-engine/chunk-SXX7HX34.mjs +191 -0
  155. package/dist/preview-engine/chunk-SZ7YRPKO.mjs +3 -0
  156. package/dist/preview-engine/chunk-TMRLZV5X.mjs +1 -0
  157. package/dist/preview-engine/chunk-U446SQP3.mjs +292 -0
  158. package/dist/preview-engine/chunk-UDNCEHUI.mjs +141 -0
  159. package/dist/preview-engine/chunk-V3H7WWOT.mjs +271 -0
  160. package/dist/preview-engine/chunk-V7ZVVUQU.mjs +108 -0
  161. package/dist/preview-engine/chunk-VJGK7MLJ.mjs +3 -0
  162. package/dist/preview-engine/chunk-VSSB73UU.mjs +58 -0
  163. package/dist/preview-engine/chunk-VXUJWPIK.mjs +1 -0
  164. package/dist/preview-engine/chunk-XD4GKD6H.mjs +5 -0
  165. package/dist/preview-engine/chunk-XKO4RYKN.mjs +3 -0
  166. package/dist/preview-engine/chunk-XOEEGC4Z.mjs +1 -0
  167. package/dist/preview-engine/chunk-YAQFFQPG.mjs +1 -0
  168. package/dist/preview-engine/chunk-YKMBRUAE.mjs +1 -0
  169. package/dist/preview-engine/chunk-YSTLMWCG.mjs +1 -0
  170. package/dist/preview-engine/chunk-Z4ERCLNF.mjs +1 -0
  171. package/dist/preview-engine/chunk-ZEYUXJIV.mjs +1 -0
  172. package/dist/preview-engine/chunk-ZX6APG6E.mjs +117 -0
  173. package/dist/preview-engine/effects.mjs +1 -0
  174. package/dist/preview-engine/esbuild-GWV7CM7D.mjs +1 -0
  175. package/dist/preview-engine/fonts.mjs +1 -0
  176. package/dist/preview-engine/framefields.mjs +1959 -0
  177. package/dist/preview-engine/onnxruntime-node-56GSZEH3.mjs +1 -0
  178. package/dist/preview-engine/player.mjs +155 -0
  179. package/dist/preview-engine/renderers-2AUSIYZN.mjs +1 -0
  180. package/dist/preview-engine/renderers-2QN6KZJP.mjs +1 -0
  181. package/dist/preview-engine/renderers-32SKW7ML.mjs +1 -0
  182. package/dist/preview-engine/renderers-5QYK6766.mjs +1 -0
  183. package/dist/preview-engine/renderers-6BJA6MSU.mjs +251 -0
  184. package/dist/preview-engine/renderers-6QAF3LQ2.mjs +1 -0
  185. package/dist/preview-engine/renderers-7AO5746S.mjs +296 -0
  186. package/dist/preview-engine/renderers-AFYKNM6N.mjs +1 -0
  187. package/dist/preview-engine/renderers-AGMH5CRH.mjs +1 -0
  188. package/dist/preview-engine/renderers-AHSGP6LY.mjs +126 -0
  189. package/dist/preview-engine/renderers-ASTBICLA.mjs +1 -0
  190. package/dist/preview-engine/renderers-BHVPLYNN.mjs +1 -0
  191. package/dist/preview-engine/renderers-D7PVQFVU.mjs +1 -0
  192. package/dist/preview-engine/renderers-DB4ABTNA.mjs +1 -0
  193. package/dist/preview-engine/renderers-F2NFJI5L.mjs +1 -0
  194. package/dist/preview-engine/renderers-FI7YHNLY.mjs +1 -0
  195. package/dist/preview-engine/renderers-GBHULMPH.mjs +1 -0
  196. package/dist/preview-engine/renderers-GUKQUMGG.mjs +55 -0
  197. package/dist/preview-engine/renderers-HGT7QDY3.mjs +1 -0
  198. package/dist/preview-engine/renderers-HOYLA7ZK.mjs +1 -0
  199. package/dist/preview-engine/renderers-KKI2D3MZ.mjs +1 -0
  200. package/dist/preview-engine/renderers-KRAJNV4E.mjs +1 -0
  201. package/dist/preview-engine/renderers-KUGZKSVE.mjs +1 -0
  202. package/dist/preview-engine/renderers-L2EQQIOC.mjs +1 -0
  203. package/dist/preview-engine/renderers-LK3NRMGR.mjs +1 -0
  204. package/dist/preview-engine/renderers-LX654SZ3.mjs +1 -0
  205. package/dist/preview-engine/renderers-MCFQFYEL.mjs +1 -0
  206. package/dist/preview-engine/renderers-O6HOYIPS.mjs +1 -0
  207. package/dist/preview-engine/renderers-OEVXCGE2.mjs +1 -0
  208. package/dist/preview-engine/renderers-QVD6C4CS.mjs +1 -0
  209. package/dist/preview-engine/renderers-R3XEYD5V.mjs +248 -0
  210. package/dist/preview-engine/renderers-RBFWJWVM.mjs +1 -0
  211. package/dist/preview-engine/renderers-RX3VLVLO.mjs +1 -0
  212. package/dist/preview-engine/renderers-SM6JP64K.mjs +1 -0
  213. package/dist/preview-engine/renderers-TKMAATVS.mjs +1 -0
  214. package/dist/preview-engine/renderers-UGZUPONY.mjs +1 -0
  215. package/dist/preview-engine/renderers-UTFXZE3G.mjs +1 -0
  216. package/dist/preview-engine/renderers-UWPH7HBH.mjs +1 -0
  217. package/dist/preview-engine/renderers-UZGECFVO.mjs +1 -0
  218. package/dist/preview-engine/renderers-VGU3LNLT.mjs +1 -0
  219. package/dist/preview-engine/renderers-W3VVM5HB.mjs +1 -0
  220. package/dist/preview-engine/renderers-WJUTT5BB.mjs +1 -0
  221. package/dist/preview-engine/renderers-XA2M4YXK.mjs +1 -0
  222. package/dist/preview-engine/renderers-XIHRFEFQ.mjs +1 -0
  223. package/dist/preview-engine/renderers-XJTA5MFG.mjs +1 -0
  224. package/dist/preview-engine/renderers-XLTY5APF.mjs +1 -0
  225. package/dist/preview-engine/renderers-XZ3VXFGZ.mjs +1 -0
  226. package/dist/preview-engine/renderers-YKUQUCTO.mjs +124 -0
  227. package/dist/preview-engine/renderers-YVN3EIOP.mjs +1 -0
  228. package/dist/preview-engine/renderers-YWRP23SZ.mjs +125 -0
  229. package/dist/preview-engine/renderers-ZPWOUWZJ.mjs +120 -0
  230. package/dist/preview-engine/resvg-js-VMU4A77S.mjs +1 -0
  231. package/dist/preview-engine/server-utils-2FAIV45N.mjs +1 -0
  232. package/dist/preview-engine/sharp-V6ZTBNDW.mjs +1 -0
  233. package/dist/preview-engine/shims/fs-promises.mjs +1 -0
  234. package/dist/preview-engine/shims/fs.mjs +1 -0
  235. package/dist/preview-engine/shims/module.mjs +1 -0
  236. package/dist/preview-engine/shims/os.mjs +1 -0
  237. package/dist/preview-engine/shims/path.mjs +1 -0
  238. package/dist/preview-engine/shims/url.mjs +1 -0
  239. package/dist/preview-engine/signals.mjs +1 -0
  240. package/dist/preview-engine/webgpu-NSSANM4F.mjs +1 -0
  241. package/dist/preview-uQM210iy.mjs +2149 -0
  242. package/dist/preview-uQM210iy.mjs.map +1 -0
  243. package/dist/program-Dl510wmI.mjs +5183 -0
  244. package/dist/program-Dl510wmI.mjs.map +1 -0
  245. package/dist/renderer/index.d.mts +3 -0
  246. package/dist/renderer/index.mjs +6 -0
  247. package/dist/renderer-3BNskNuJ.mjs +3 -0
  248. package/dist/renderer-7DOcIxFG.mjs +288 -0
  249. package/dist/renderer-7DOcIxFG.mjs.map +1 -0
  250. package/dist/renderer-9dHlMQGX.mjs +3 -0
  251. package/dist/renderer-B1CvhW4p.mjs +677 -0
  252. package/dist/renderer-B1CvhW4p.mjs.map +1 -0
  253. package/dist/renderer-B2XzjK0z.mjs +3 -0
  254. package/dist/renderer-B80s47yo.mjs +166 -0
  255. package/dist/renderer-B80s47yo.mjs.map +1 -0
  256. package/dist/renderer-B9-QSJcG.mjs +479 -0
  257. package/dist/renderer-B9-QSJcG.mjs.map +1 -0
  258. package/dist/renderer-BAQmR0Zo.mjs +3 -0
  259. package/dist/renderer-BDLnExoP.mjs +127 -0
  260. package/dist/renderer-BDLnExoP.mjs.map +1 -0
  261. package/dist/renderer-BGXU6vcW.mjs +270 -0
  262. package/dist/renderer-BGXU6vcW.mjs.map +1 -0
  263. package/dist/renderer-BGvORwkQ.mjs +3 -0
  264. package/dist/renderer-BLikd6BK.mjs +3 -0
  265. package/dist/renderer-BMovYRoR.mjs +3 -0
  266. package/dist/renderer-BQHbp-Sp.mjs +243 -0
  267. package/dist/renderer-BQHbp-Sp.mjs.map +1 -0
  268. package/dist/renderer-BREIjsUU.mjs +252 -0
  269. package/dist/renderer-BREIjsUU.mjs.map +1 -0
  270. package/dist/renderer-BSbTJBWc.mjs +3 -0
  271. package/dist/renderer-BTu2EVhF.mjs +3 -0
  272. package/dist/renderer-BU1rwNRT.mjs +3 -0
  273. package/dist/renderer-BXMmISWG.mjs +499 -0
  274. package/dist/renderer-BXMmISWG.mjs.map +1 -0
  275. package/dist/renderer-BZJm3m4f.mjs +3 -0
  276. package/dist/renderer-B_NuVaIP.mjs +744 -0
  277. package/dist/renderer-B_NuVaIP.mjs.map +1 -0
  278. package/dist/renderer-BfJSUjPN.mjs +3 -0
  279. package/dist/renderer-BqyAgNt3.mjs +3 -0
  280. package/dist/renderer-BryTM2g7.mjs +3 -0
  281. package/dist/renderer-BsgIcBKH.mjs +391 -0
  282. package/dist/renderer-BsgIcBKH.mjs.map +1 -0
  283. package/dist/renderer-ByDhfrPE.mjs +422 -0
  284. package/dist/renderer-ByDhfrPE.mjs.map +1 -0
  285. package/dist/renderer-C-H680_l.mjs +3 -0
  286. package/dist/renderer-C17wL9QX.mjs +181 -0
  287. package/dist/renderer-C17wL9QX.mjs.map +1 -0
  288. package/dist/renderer-C2n-EHxg.mjs +1 -0
  289. package/dist/renderer-CB5aWAaf.mjs +343 -0
  290. package/dist/renderer-CB5aWAaf.mjs.map +1 -0
  291. package/dist/renderer-CB7lH5K8.mjs +3 -0
  292. package/dist/renderer-CDLrNgfo.mjs +3 -0
  293. package/dist/renderer-CDOUAN7X.mjs +454 -0
  294. package/dist/renderer-CDOUAN7X.mjs.map +1 -0
  295. package/dist/renderer-CH8sdfYX.mjs +387 -0
  296. package/dist/renderer-CH8sdfYX.mjs.map +1 -0
  297. package/dist/renderer-CIvaRnP_.mjs +261 -0
  298. package/dist/renderer-CIvaRnP_.mjs.map +1 -0
  299. package/dist/renderer-CMzEjdzi.mjs +369 -0
  300. package/dist/renderer-CMzEjdzi.mjs.map +1 -0
  301. package/dist/renderer-COkcU3db.mjs +3302 -0
  302. package/dist/renderer-COkcU3db.mjs.map +1 -0
  303. package/dist/renderer-CQCoggIa.mjs +3 -0
  304. package/dist/renderer-CQdVj2JS.mjs +3 -0
  305. package/dist/renderer-CQiTodg9.mjs +337 -0
  306. package/dist/renderer-CQiTodg9.mjs.map +1 -0
  307. package/dist/renderer-CV2m6k1V.mjs +3 -0
  308. package/dist/renderer-CYY-poLe.mjs +3 -0
  309. package/dist/renderer-CZgB5st8.mjs +3 -0
  310. package/dist/renderer-C_Ki91kc.mjs +3 -0
  311. package/dist/renderer-CclIvsLO.mjs +3 -0
  312. package/dist/renderer-Cj-whdVr.mjs +655 -0
  313. package/dist/renderer-Cj-whdVr.mjs.map +1 -0
  314. package/dist/renderer-CkykdR_D.mjs +3 -0
  315. package/dist/renderer-Cl1oUXMi.mjs +1143 -0
  316. package/dist/renderer-Cl1oUXMi.mjs.map +1 -0
  317. package/dist/renderer-CmApuKjS.mjs +3 -0
  318. package/dist/renderer-CpkiHRhh.mjs +269 -0
  319. package/dist/renderer-CpkiHRhh.mjs.map +1 -0
  320. package/dist/renderer-CszOjcRW.mjs +3 -0
  321. package/dist/renderer-CtVkU_GA.mjs +44 -0
  322. package/dist/renderer-CtVkU_GA.mjs.map +1 -0
  323. package/dist/renderer-Cu074POw.mjs +3 -0
  324. package/dist/renderer-CwQhzcUn.mjs +644 -0
  325. package/dist/renderer-CwQhzcUn.mjs.map +1 -0
  326. package/dist/renderer-CzPWB0Ss.mjs +273 -0
  327. package/dist/renderer-CzPWB0Ss.mjs.map +1 -0
  328. package/dist/renderer-D4qLmox-.mjs +3 -0
  329. package/dist/renderer-D6bWQtr-.mjs +3 -0
  330. package/dist/renderer-D6cJ6MSq.mjs +3 -0
  331. package/dist/renderer-D7EX8IjU.mjs +240 -0
  332. package/dist/renderer-D7EX8IjU.mjs.map +1 -0
  333. package/dist/renderer-DDp7_TUi.d.mts +10 -0
  334. package/dist/renderer-DDp7_TUi.d.mts.map +1 -0
  335. package/dist/renderer-DFKsLrUs.mjs +256 -0
  336. package/dist/renderer-DFKsLrUs.mjs.map +1 -0
  337. package/dist/renderer-DPSsf8-t.mjs +3 -0
  338. package/dist/renderer-DQLGnEFc.mjs +3 -0
  339. package/dist/renderer-DY2SVYUW.mjs +3 -0
  340. package/dist/renderer-DZGtBUCx.mjs +792 -0
  341. package/dist/renderer-DZGtBUCx.mjs.map +1 -0
  342. package/dist/renderer-DabG62XS.mjs +406 -0
  343. package/dist/renderer-DabG62XS.mjs.map +1 -0
  344. package/dist/renderer-DbaQLI4z.mjs +771 -0
  345. package/dist/renderer-DbaQLI4z.mjs.map +1 -0
  346. package/dist/renderer-DjI45OYC.mjs +71 -0
  347. package/dist/renderer-DjI45OYC.mjs.map +1 -0
  348. package/dist/renderer-Dm08-hAU.mjs +323 -0
  349. package/dist/renderer-Dm08-hAU.mjs.map +1 -0
  350. package/dist/renderer-DoAY5JbB.mjs +4 -0
  351. package/dist/renderer-Dp_FfvF-.mjs +401 -0
  352. package/dist/renderer-Dp_FfvF-.mjs.map +1 -0
  353. package/dist/renderer-Dt6fzgX5.mjs +756 -0
  354. package/dist/renderer-Dt6fzgX5.mjs.map +1 -0
  355. package/dist/renderer-DuplLRbp.mjs +3 -0
  356. package/dist/renderer-DvfUbZ31.mjs +3 -0
  357. package/dist/renderer-DxjVQV6f.mjs +311 -0
  358. package/dist/renderer-DxjVQV6f.mjs.map +1 -0
  359. package/dist/renderer-Fco4EmAu.mjs +23868 -0
  360. package/dist/renderer-Fco4EmAu.mjs.map +1 -0
  361. package/dist/renderer-HFfcJlmR.mjs +981 -0
  362. package/dist/renderer-HFfcJlmR.mjs.map +1 -0
  363. package/dist/renderer-I-Sw3JBB.mjs +145 -0
  364. package/dist/renderer-I-Sw3JBB.mjs.map +1 -0
  365. package/dist/renderer-OWQmmg4Z.mjs +697 -0
  366. package/dist/renderer-OWQmmg4Z.mjs.map +1 -0
  367. package/dist/renderer-Q_uUQipO.mjs +3 -0
  368. package/dist/renderer-Ryo2CEFD.mjs +586 -0
  369. package/dist/renderer-Ryo2CEFD.mjs.map +1 -0
  370. package/dist/renderer-Tp6OXWNZ.mjs +257 -0
  371. package/dist/renderer-Tp6OXWNZ.mjs.map +1 -0
  372. package/dist/renderer-UQFCgeNx.mjs +3 -0
  373. package/dist/renderer-WkVrkCVA.mjs +83 -0
  374. package/dist/renderer-WkVrkCVA.mjs.map +1 -0
  375. package/dist/renderer-XcmYTd6P.mjs +3818 -0
  376. package/dist/renderer-XcmYTd6P.mjs.map +1 -0
  377. package/dist/renderer-_uvdg48N.mjs +333 -0
  378. package/dist/renderer-_uvdg48N.mjs.map +1 -0
  379. package/dist/renderer-bZU_ndxf.mjs +8 -0
  380. package/dist/renderer-bZU_ndxf.mjs.map +1 -0
  381. package/dist/renderer-eMsnzJg9.mjs +3 -0
  382. package/dist/renderer-ho_jXJ0H.mjs +254 -0
  383. package/dist/renderer-ho_jXJ0H.mjs.map +1 -0
  384. package/dist/renderer-k2JL79kM.mjs +306 -0
  385. package/dist/renderer-k2JL79kM.mjs.map +1 -0
  386. package/dist/renderer-pHiz78e0.mjs +3 -0
  387. package/dist/renderer-pxXf9dvk.mjs +394 -0
  388. package/dist/renderer-pxXf9dvk.mjs.map +1 -0
  389. package/dist/renderer-vCFTm0oe.mjs +226 -0
  390. package/dist/renderer-vCFTm0oe.mjs.map +1 -0
  391. package/dist/renderer-vvpdx1vk.mjs +379 -0
  392. package/dist/renderer-vvpdx1vk.mjs.map +1 -0
  393. package/dist/renderer-x2s9LmVL.mjs +1121 -0
  394. package/dist/renderer-x2s9LmVL.mjs.map +1 -0
  395. package/dist/renderers-BWg16W-V-BXG_cjhM.mjs +49 -0
  396. package/dist/renderers-BWg16W-V-BXG_cjhM.mjs.map +1 -0
  397. package/dist/signals/index.d.mts +7 -0
  398. package/dist/signals/index.mjs +10 -0
  399. package/dist/signals-BwbdO3AN.mjs +224 -0
  400. package/dist/signals-BwbdO3AN.mjs.map +1 -0
  401. package/dist/signin-CZj4Oc5s.mjs +865 -0
  402. package/dist/signin-CZj4Oc5s.mjs.map +1 -0
  403. package/dist/sso-oidc-C0_31ThY.mjs +1051 -0
  404. package/dist/sso-oidc-C0_31ThY.mjs.map +1 -0
  405. package/dist/sts-DD4ggEXC.mjs +6 -0
  406. package/dist/sts-nXw8RDJI.mjs +1395 -0
  407. package/dist/sts-nXw8RDJI.mjs.map +1 -0
  408. package/package.json +173 -0
@@ -0,0 +1,1121 @@
1
+ import { n as defineRenderer } from "./renderer-CtVkU_GA.mjs";
2
+ import { i as VideoResultSchema, n as ImageResultSchema, t as ColorSchema } from "./dist-DKm2IyEJ.mjs";
3
+ import { z } from "zod";
4
+
5
+ //#region ../../nodes/node-layer-style/dist/renderers-Cjrbbalg.mjs
6
+ const DropShadowStyleSchema = z.object({
7
+ enabled: z.boolean().default(false),
8
+ color: ColorSchema.default("#000000"),
9
+ opacity: z.number().min(0).max(1).default(.75),
10
+ angle: z.number().min(0).max(360).default(120),
11
+ distance: z.number().min(0).max(500).default(10),
12
+ spread: z.number().min(0).max(100).default(0),
13
+ size: z.number().min(0).max(250).default(10),
14
+ blendMode: z.string().default("multiply")
15
+ });
16
+ const InnerShadowStyleSchema = z.object({
17
+ enabled: z.boolean().default(false),
18
+ color: ColorSchema.default("#000000"),
19
+ opacity: z.number().min(0).max(1).default(.75),
20
+ angle: z.number().min(0).max(360).default(120),
21
+ distance: z.number().min(0).max(500).default(5),
22
+ choke: z.number().min(0).max(100).default(0),
23
+ size: z.number().min(0).max(250).default(5),
24
+ blendMode: z.string().default("multiply")
25
+ });
26
+ const StrokeStyleSchema = z.object({
27
+ enabled: z.boolean().default(false),
28
+ size: z.number().min(0).max(100).default(2),
29
+ position: z.enum([
30
+ "inside",
31
+ "center",
32
+ "outside"
33
+ ]).default("outside"),
34
+ color: ColorSchema.default("#ffffff"),
35
+ opacity: z.number().min(0).max(1).default(1),
36
+ blendMode: z.string().default("normal")
37
+ });
38
+ const GlowStyleSchema = z.object({
39
+ enabled: z.boolean().default(false),
40
+ color: ColorSchema.default("#ffffff"),
41
+ opacity: z.number().min(0).max(1).default(.75),
42
+ size: z.number().min(0).max(250).default(15),
43
+ spread: z.number().min(0).max(100).default(0),
44
+ blendMode: z.string().default("screen")
45
+ });
46
+ const BevelEmbossStyleSchema = z.object({
47
+ enabled: z.boolean().default(false),
48
+ style: z.enum([
49
+ "InnerBevel",
50
+ "OuterBevel",
51
+ "Emboss",
52
+ "PillowEmboss"
53
+ ]).default("InnerBevel"),
54
+ technique: z.enum([
55
+ "Smooth",
56
+ "ChiselHard",
57
+ "ChiselSoft"
58
+ ]).default("Smooth"),
59
+ depth: z.number().min(1).max(1e3).default(100),
60
+ direction: z.enum(["Up", "Down"]).default("Up"),
61
+ size: z.number().min(0).max(250).default(5),
62
+ soften: z.number().min(0).max(50).default(0),
63
+ angle: z.number().min(0).max(360).default(120),
64
+ altitude: z.number().min(0).max(90).default(30),
65
+ highlightColor: ColorSchema.default("#ffffff"),
66
+ highlightOpacity: z.number().min(0).max(1).default(.75),
67
+ shadowColor: ColorSchema.default("#000000"),
68
+ shadowOpacity: z.number().min(0).max(1).default(.75)
69
+ });
70
+ const ColorOverlayStyleSchema = z.object({
71
+ enabled: z.boolean().default(false),
72
+ color: ColorSchema.default("#ff0000"),
73
+ opacity: z.number().min(0).max(1).default(1),
74
+ blendMode: z.string().default("normal")
75
+ });
76
+ const DEFAULT_DROP_SHADOW = {
77
+ enabled: false,
78
+ color: "#000000",
79
+ opacity: .75,
80
+ angle: 120,
81
+ distance: 10,
82
+ spread: 0,
83
+ size: 10,
84
+ blendMode: "multiply"
85
+ };
86
+ const DEFAULT_INNER_SHADOW = {
87
+ enabled: false,
88
+ color: "#000000",
89
+ opacity: .75,
90
+ angle: 120,
91
+ distance: 5,
92
+ choke: 0,
93
+ size: 5,
94
+ blendMode: "multiply"
95
+ };
96
+ const DEFAULT_GLOW = {
97
+ enabled: false,
98
+ color: "#ffffff",
99
+ opacity: .75,
100
+ size: 15,
101
+ spread: 0,
102
+ blendMode: "screen"
103
+ };
104
+ const DEFAULT_STROKE = {
105
+ enabled: false,
106
+ size: 2,
107
+ position: "outside",
108
+ color: "#ffffff",
109
+ opacity: 1,
110
+ blendMode: "normal"
111
+ };
112
+ const DEFAULT_BEVEL_EMBOSS = {
113
+ enabled: false,
114
+ style: "InnerBevel",
115
+ technique: "Smooth",
116
+ depth: 100,
117
+ direction: "Up",
118
+ size: 5,
119
+ soften: 0,
120
+ angle: 120,
121
+ altitude: 30,
122
+ highlightColor: "#ffffff",
123
+ highlightOpacity: .75,
124
+ shadowColor: "#000000",
125
+ shadowOpacity: .75
126
+ };
127
+ const DEFAULT_COLOR_OVERLAY = {
128
+ enabled: false,
129
+ color: "#ff0000",
130
+ opacity: 1,
131
+ blendMode: "normal"
132
+ };
133
+ const LayerStyleNodeConfigSchema = z.object({
134
+ dropShadow: DropShadowStyleSchema.default(DEFAULT_DROP_SHADOW),
135
+ innerShadow: InnerShadowStyleSchema.default(DEFAULT_INNER_SHADOW),
136
+ outerGlow: GlowStyleSchema.default(DEFAULT_GLOW),
137
+ innerGlow: GlowStyleSchema.default(DEFAULT_GLOW),
138
+ stroke: StrokeStyleSchema.default(DEFAULT_STROKE),
139
+ bevelEmboss: BevelEmbossStyleSchema.default(DEFAULT_BEVEL_EMBOSS),
140
+ colorOverlay: ColorOverlayStyleSchema.default(DEFAULT_COLOR_OVERLAY),
141
+ dropShadowAngleHandleId: z.string().nullable().optional(),
142
+ dropShadowDistanceHandleId: z.string().nullable().optional(),
143
+ dropShadowSpreadHandleId: z.string().nullable().optional(),
144
+ dropShadowSizeHandleId: z.string().nullable().optional(),
145
+ dropShadowOpacityHandleId: z.string().nullable().optional(),
146
+ innerShadowAngleHandleId: z.string().nullable().optional(),
147
+ innerShadowDistanceHandleId: z.string().nullable().optional(),
148
+ innerShadowChokeHandleId: z.string().nullable().optional(),
149
+ innerShadowSizeHandleId: z.string().nullable().optional(),
150
+ innerShadowOpacityHandleId: z.string().nullable().optional(),
151
+ outerGlowSizeHandleId: z.string().nullable().optional(),
152
+ outerGlowSpreadHandleId: z.string().nullable().optional(),
153
+ outerGlowOpacityHandleId: z.string().nullable().optional(),
154
+ innerGlowSizeHandleId: z.string().nullable().optional(),
155
+ innerGlowSpreadHandleId: z.string().nullable().optional(),
156
+ innerGlowOpacityHandleId: z.string().nullable().optional(),
157
+ strokeSizeHandleId: z.string().nullable().optional(),
158
+ strokeOpacityHandleId: z.string().nullable().optional(),
159
+ bevelEmbossDepthHandleId: z.string().nullable().optional(),
160
+ bevelEmbossSizeHandleId: z.string().nullable().optional(),
161
+ bevelEmbossSoftenHandleId: z.string().nullable().optional(),
162
+ bevelEmbossAngleHandleId: z.string().nullable().optional(),
163
+ bevelEmbossAltitudeHandleId: z.string().nullable().optional(),
164
+ bevelEmbossHighlightOpacityHandleId: z.string().nullable().optional(),
165
+ bevelEmbossShadowOpacityHandleId: z.string().nullable().optional(),
166
+ colorOverlayOpacityHandleId: z.string().nullable().optional()
167
+ });
168
+ function computeLayerStylePadding(config) {
169
+ let padX = 0;
170
+ let padY = 0;
171
+ if (config.dropShadow?.enabled) {
172
+ const angleRad = (config.dropShadow.angle ?? 120) * Math.PI / 180;
173
+ const dist = config.dropShadow.distance ?? 0;
174
+ const dx = Math.ceil(Math.abs(Math.cos(angleRad)) * dist);
175
+ const dy = Math.ceil(Math.abs(Math.sin(angleRad)) * dist);
176
+ padX = Math.max(padX, dx);
177
+ padY = Math.max(padY, dy);
178
+ }
179
+ if (config.stroke?.enabled && config.stroke.position !== "inside") {
180
+ const strokePad = config.stroke.position === "outside" ? Math.ceil(config.stroke.size ?? 2) : Math.ceil((config.stroke.size ?? 2) * .5);
181
+ padX = Math.max(padX, strokePad);
182
+ padY = Math.max(padY, strokePad);
183
+ }
184
+ return {
185
+ padX,
186
+ padY
187
+ };
188
+ }
189
+ const LayerStyleResultSchema = z.union([ImageResultSchema, VideoResultSchema]);
190
+ function hexToRgba(hex) {
191
+ if (!hex) return [
192
+ 1,
193
+ 1,
194
+ 1,
195
+ 1
196
+ ];
197
+ let cleaned = hex.trim().replace(/^#/, "");
198
+ if (cleaned.length === 3) cleaned = cleaned.split("").map((c) => c + c).join("") + "ff";
199
+ else if (cleaned.length === 6) cleaned = cleaned + "ff";
200
+ else if (cleaned.length === 8) {} else return [
201
+ 1,
202
+ 1,
203
+ 1,
204
+ 1
205
+ ];
206
+ const r = parseInt(cleaned.slice(0, 2), 16) / 255;
207
+ const g = parseInt(cleaned.slice(2, 4), 16) / 255;
208
+ const b = parseInt(cleaned.slice(4, 6), 16) / 255;
209
+ const a = parseInt(cleaned.slice(6, 8), 16) / 255;
210
+ return [
211
+ Number.isFinite(r) ? r : 1,
212
+ Number.isFinite(g) ? g : 1,
213
+ Number.isFinite(b) ? b : 1,
214
+ Number.isFinite(a) ? a : 1
215
+ ];
216
+ }
217
+ const BLEND_MODE_MAP = {
218
+ normal: 0,
219
+ "source-over": 0,
220
+ multiply: 1,
221
+ screen: 2,
222
+ overlay: 3,
223
+ darken: 4,
224
+ lighten: 5,
225
+ "color-dodge": 6,
226
+ "color-burn": 7,
227
+ "hard-light": 8,
228
+ "soft-light": 9,
229
+ difference: 10,
230
+ exclusion: 11,
231
+ hue: 12,
232
+ saturation: 13,
233
+ color: 14,
234
+ luminosity: 15,
235
+ "mask-in": 16,
236
+ "destination-in": 16,
237
+ "mask-out": 17,
238
+ "destination-out": 17,
239
+ "source-in": 18,
240
+ "source-out": 19,
241
+ "source-atop": 20,
242
+ "destination-over": 21,
243
+ "destination-atop": 22,
244
+ lighter: 23,
245
+ copy: 24,
246
+ xor: 25
247
+ };
248
+ const BEVEL_STYLE_MAP = {
249
+ InnerBevel: 0,
250
+ OuterBevel: 1,
251
+ Emboss: 2,
252
+ PillowEmboss: 3
253
+ };
254
+ const BEVEL_TECHNIQUE_MAP = {
255
+ Smooth: 0,
256
+ ChiselHard: 1,
257
+ ChiselSoft: 2
258
+ };
259
+ const STROKE_POS_MAP = {
260
+ outside: 0,
261
+ center: 1,
262
+ inside: 2
263
+ };
264
+ const WGSL_LAYER_STYLE_SHADER = `
265
+ struct LayerStyleUniforms {
266
+ // Drop Shadow (vec4 x 3)
267
+ dropShadowColor : vec4<f32>,
268
+ dropShadowParams : vec4<f32>, // x: enabled, y: opacity, z: angle(rad), w: distance
269
+ dropShadowParams2 : vec4<f32>, // x: spread, y: size, z: blendMode, w: pad
270
+
271
+ // Inner Shadow (vec4 x 3)
272
+ innerShadowColor : vec4<f32>,
273
+ innerShadowParams : vec4<f32>, // x: enabled, y: opacity, z: angle(rad), w: distance
274
+ innerShadowParams2 : vec4<f32>, // x: choke, y: size, z: blendMode, w: pad
275
+
276
+ // Outer Glow (vec4 x 3)
277
+ outerGlowColor : vec4<f32>,
278
+ outerGlowParams : vec4<f32>, // x: enabled, y: opacity, z: size, w: spread
279
+ outerGlowParams2 : vec4<f32>, // x: blendMode, yzw: pad
280
+
281
+ // Inner Glow (vec4 x 3)
282
+ innerGlowColor : vec4<f32>,
283
+ innerGlowParams : vec4<f32>, // x: enabled, y: opacity, z: size, w: spread
284
+ innerGlowParams2 : vec4<f32>, // x: blendMode, yzw: pad
285
+
286
+ // Stroke (vec4 x 3)
287
+ strokeColor : vec4<f32>,
288
+ strokeParams : vec4<f32>, // x: enabled, y: size, z: position(0:out,1:center,2:in), w: opacity
289
+ strokeParams2 : vec4<f32>, // x: blendMode, yzw: pad
290
+
291
+ // Bevel & Emboss (vec4 x 5)
292
+ bevelHighlightColor : vec4<f32>,
293
+ bevelShadowColor : vec4<f32>,
294
+ bevelParams1 : vec4<f32>, // x: enabled, y: style, z: technique, w: depth
295
+ bevelParams2 : vec4<f32>, // x: direction(1:up, -1:down), y: size, z: soften, w: angle(rad)
296
+ bevelParams3 : vec4<f32>, // x: altitude(rad), y: hlOpacity, z: shOpacity, w: pad
297
+
298
+ // Color Overlay (vec4 x 2)
299
+ colorOverlayColor : vec4<f32>,
300
+ colorOverlayParams : vec4<f32>, // x: enabled, y: opacity, z: blendMode, w: pad
301
+ };
302
+
303
+ @group(0) @binding(0) var<uniform> u : LayerStyleUniforms;
304
+ @group(1) @binding(0) var tex : texture_2d<f32>;
305
+ @group(1) @binding(1) var samp : sampler;
306
+
307
+ struct VSOut {
308
+ @builtin(position) pos : vec4<f32>,
309
+ @location(0) uv : vec2<f32>,
310
+ };
311
+
312
+ @vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {
313
+ var pos = array<vec2<f32>, 4>(
314
+ vec2<f32>(-1.0, 1.0),
315
+ vec2<f32>(1.0, 1.0),
316
+ vec2<f32>(-1.0, -1.0),
317
+ vec2<f32>(1.0, -1.0)
318
+ );
319
+ var uv = array<vec2<f32>, 4>(
320
+ vec2<f32>(0.0, 0.0),
321
+ vec2<f32>(1.0, 0.0),
322
+ vec2<f32>(0.0, 1.0),
323
+ vec2<f32>(1.0, 1.0)
324
+ );
325
+ return VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);
326
+ }
327
+
328
+ fn sampleAlpha(uv: vec2<f32>) -> f32 {
329
+ if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) {
330
+ return 0.0;
331
+ }
332
+ return textureSampleLevel(tex, samp, uv, 0.0).a;
333
+ }
334
+
335
+ fn lum(c: vec3<f32>) -> f32 {
336
+ return 0.3 * c.r + 0.59 * c.g + 0.11 * c.b;
337
+ }
338
+
339
+ fn clip_color(c: vec3<f32>) -> vec3<f32> {
340
+ let l = lum(c);
341
+ let n = min(min(c.r, c.g), c.b);
342
+ let x = max(max(c.r, c.g), c.b);
343
+ var res = c;
344
+ if (n < 0.0) {
345
+ res = l + (((res - l) * l) / max(l - n, 1e-5));
346
+ }
347
+ if (x > 1.0) {
348
+ res = l + (((res - l) * (1.0 - l)) / max(x - l, 1e-5));
349
+ }
350
+ return res;
351
+ }
352
+
353
+ fn set_lum(c: vec3<f32>, l: f32) -> vec3<f32> {
354
+ let diff = l - lum(c);
355
+ return clip_color(c + vec3<f32>(diff));
356
+ }
357
+
358
+ fn sat(c: vec3<f32>) -> f32 {
359
+ return max(max(c.r, c.g), c.b) - min(min(c.r, c.g), c.b);
360
+ }
361
+
362
+ fn set_sat(c: vec3<f32>, s: f32) -> vec3<f32> {
363
+ let c_min = min(min(c.r, c.g), c.b);
364
+ let c_max = max(max(c.r, c.g), c.b);
365
+ if (c_max <= c_min) {
366
+ return vec3<f32>(0.0);
367
+ }
368
+ return (c - vec3<f32>(c_min)) * s / max(c_max - c_min, 1e-5);
369
+ }
370
+
371
+ fn blendRgb(d_rgb: vec3<f32>, s_rgb: vec3<f32>, mode: u32) -> vec3<f32> {
372
+ switch (mode) {
373
+ case 1u: { // multiply
374
+ return d_rgb * s_rgb;
375
+ }
376
+ case 2u: { // screen
377
+ return d_rgb + s_rgb - d_rgb * s_rgb;
378
+ }
379
+ case 3u: { // overlay
380
+ return select(
381
+ 1.0 - 2.0 * (1.0 - d_rgb) * (1.0 - s_rgb),
382
+ 2.0 * d_rgb * s_rgb,
383
+ d_rgb < vec3<f32>(0.5)
384
+ );
385
+ }
386
+ case 4u: { // darken
387
+ return min(d_rgb, s_rgb);
388
+ }
389
+ case 5u: { // lighten
390
+ return max(d_rgb, s_rgb);
391
+ }
392
+ case 6u: { // color-dodge
393
+ return 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));
394
+ }
395
+ case 7u: { // color-burn
396
+ return 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));
397
+ }
398
+ case 8u: { // hard-light
399
+ return select(
400
+ 1.0 - 2.0 * (1.0 - d_rgb) * (1.0 - s_rgb),
401
+ 2.0 * d_rgb * s_rgb,
402
+ s_rgb < vec3<f32>(0.5)
403
+ );
404
+ }
405
+ case 9u: { // soft-light
406
+ return select(
407
+ d_rgb + (2.0 * s_rgb - 1.0) * (sqrt(d_rgb) - d_rgb),
408
+ d_rgb - (1.0 - 2.0 * s_rgb) * d_rgb * (1.0 - d_rgb),
409
+ s_rgb <= vec3<f32>(0.5)
410
+ );
411
+ }
412
+ case 10u: { // difference
413
+ return abs(d_rgb - s_rgb);
414
+ }
415
+ case 11u: { // exclusion
416
+ return d_rgb + s_rgb - 2.0 * d_rgb * s_rgb;
417
+ }
418
+ case 12u: { // hue
419
+ return set_lum(set_sat(s_rgb, sat(d_rgb)), lum(d_rgb));
420
+ }
421
+ case 13u: { // saturation
422
+ return set_lum(set_sat(d_rgb, sat(s_rgb)), lum(d_rgb));
423
+ }
424
+ case 14u: { // color
425
+ return set_lum(s_rgb, lum(d_rgb));
426
+ }
427
+ case 15u: { // luminosity
428
+ return set_lum(d_rgb, lum(s_rgb));
429
+ }
430
+ default: { // normal / source-over
431
+ return s_rgb;
432
+ }
433
+ }
434
+ }
435
+
436
+ fn compositeLayer(dst: vec4<f32>, src: vec4<f32>, blendMode: u32) -> vec4<f32> {
437
+ let sa = clamp(src.a, 0.0, 1.0);
438
+ if (sa <= 0.0001) {
439
+ return dst;
440
+ }
441
+ let da = clamp(dst.a, 0.0, 1.0);
442
+ if (da <= 0.0001) {
443
+ return src;
444
+ }
445
+
446
+ switch (blendMode) {
447
+ case 16u: { return dst * sa; } // mask-in / destination-in
448
+ case 17u: { return dst * (1.0 - sa); } // mask-out / destination-out
449
+ case 18u: { return src * da; } // source-in
450
+ case 19u: { return src * (1.0 - da); } // source-out
451
+ case 20u: { return src * da + dst * (1.0 - sa); } // source-atop
452
+ case 21u: { return dst + src * (1.0 - da); } // destination-over
453
+ case 22u: { return dst * sa + src * (1.0 - da); } // destination-atop
454
+ case 23u: { return src + dst; } // lighter / add
455
+ case 24u: { return src; } // copy
456
+ case 25u: { return src * (1.0 - da) + dst * (1.0 - sa); } // xor
457
+ default: {}
458
+ }
459
+
460
+ let b_rgb = blendRgb(dst.rgb, src.rgb, blendMode);
461
+ let out_a = sa + da * (1.0 - sa);
462
+ let out_rgb = select(
463
+ ((1.0 - da) * src.rgb + (1.0 - sa) * dst.rgb + sa * da * b_rgb) / max(out_a, 1e-5),
464
+ b_rgb,
465
+ out_a <= 1e-4
466
+ );
467
+
468
+ return vec4<f32>(out_rgb, out_a);
469
+ }
470
+
471
+ @fragment fn fs(in: VSOut) -> @location(0) vec4<f32> {
472
+ let dimensions = vec2<f32>(textureDimensions(tex));
473
+ let texelSize = 1.0 / max(dimensions, vec2<f32>(1.0, 1.0));
474
+ let origColor = textureSampleLevel(tex, samp, in.uv, 0.0);
475
+ let origA = origColor.a;
476
+
477
+ var result = vec4<f32>(0.0);
478
+
479
+ // =========================================================================
480
+ // 1. DROP SHADOW (Bottom Layer)
481
+ // =========================================================================
482
+ if (u.dropShadowParams.x > 0.5) {
483
+ let opacity = u.dropShadowParams.y;
484
+ let angle = u.dropShadowParams.z;
485
+ let distance = u.dropShadowParams.w;
486
+ let spread = u.dropShadowParams2.x;
487
+ let size = u.dropShadowParams2.y;
488
+ let blendMode = u32(u.dropShadowParams2.z);
489
+
490
+ let shadowOffset = vec2<f32>(-cos(angle), sin(angle)) * distance * texelSize;
491
+ let shadowCenterUv = in.uv - shadowOffset;
492
+
493
+ var shadowAccum = 0.0;
494
+ var shadowWeightSum = 0.0;
495
+
496
+ let sigma = max(0.5, size * 0.4);
497
+ let sampleRadius = min(i32(ceil(size)), 24);
498
+
499
+ if (size <= 0.5) {
500
+ shadowAccum = sampleAlpha(shadowCenterUv);
501
+ shadowWeightSum = 1.0;
502
+ } else {
503
+ let stepVal = max(1, sampleRadius / 8);
504
+ for (var y = -sampleRadius; y <= sampleRadius; y += stepVal) {
505
+ for (var x = -sampleRadius; x <= sampleRadius; x += stepVal) {
506
+ let offset = vec2<f32>(f32(x), f32(y)) * texelSize;
507
+ let distSq = f32(x * x + y * y);
508
+ let weight = exp(-0.5 * distSq / (sigma * sigma));
509
+ shadowAccum += sampleAlpha(shadowCenterUv + offset) * weight;
510
+ shadowWeightSum += weight;
511
+ }
512
+ }
513
+ }
514
+
515
+ let blurredShadow = shadowAccum / max(shadowWeightSum, 1e-4);
516
+ let spreadFactor = spread / 100.0;
517
+ let finalShadowAlpha = clamp(blurredShadow / max(1.0 - spreadFactor * 0.95, 0.01), 0.0, 1.0) * opacity;
518
+
519
+ if (finalShadowAlpha > 0.001) {
520
+ let shadowCol = vec4<f32>(u.dropShadowColor.rgb, finalShadowAlpha);
521
+ result = compositeLayer(result, shadowCol, blendMode);
522
+ }
523
+ }
524
+
525
+ // =========================================================================
526
+ // 2. OUTER GLOW
527
+ // =========================================================================
528
+ if (u.outerGlowParams.x > 0.5) {
529
+ let opacity = u.outerGlowParams.y;
530
+ let size = u.outerGlowParams.z;
531
+ let spread = u.outerGlowParams.w;
532
+ let blendMode = u32(u.outerGlowParams2.x);
533
+
534
+ var glowAccum = 0.0;
535
+ var glowWeightSum = 0.0;
536
+ let sigma = max(0.5, size * 0.4);
537
+ let sampleRadius = min(i32(ceil(size)), 24);
538
+
539
+ if (size <= 0.5) {
540
+ glowAccum = origA;
541
+ glowWeightSum = 1.0;
542
+ } else {
543
+ let stepVal = max(1, sampleRadius / 8);
544
+ for (var y = -sampleRadius; y <= sampleRadius; y += stepVal) {
545
+ for (var x = -sampleRadius; x <= sampleRadius; x += stepVal) {
546
+ let offset = vec2<f32>(f32(x), f32(y)) * texelSize;
547
+ let distSq = f32(x * x + y * y);
548
+ let weight = exp(-0.5 * distSq / (sigma * sigma));
549
+ glowAccum += sampleAlpha(in.uv + offset) * weight;
550
+ glowWeightSum += weight;
551
+ }
552
+ }
553
+ }
554
+
555
+ let blurredGlow = glowAccum / max(glowWeightSum, 1e-4);
556
+ let spreadFactor = spread / 100.0;
557
+ let spreadGlow = clamp(blurredGlow / max(1.0 - spreadFactor * 0.95, 0.01), 0.0, 1.0);
558
+ let finalGlowAlpha = max(0.0, spreadGlow - origA) * opacity;
559
+
560
+ if (finalGlowAlpha > 0.001) {
561
+ let glowCol = vec4<f32>(u.outerGlowColor.rgb, finalGlowAlpha);
562
+ result = compositeLayer(result, glowCol, blendMode);
563
+ }
564
+ }
565
+
566
+ // =========================================================================
567
+ // 3. OUTSIDE STROKE
568
+ // =========================================================================
569
+ if (u.strokeParams.x > 0.5 && u.strokeParams.z < 0.5) { // position == 0: outside
570
+ let size = u.strokeParams.y;
571
+ let opacity = u.strokeParams.w;
572
+ let blendMode = u32(u.strokeParams2.x);
573
+
574
+ var maxAlpha = 0.0;
575
+ let sampleRadius = min(i32(ceil(size)), 24);
576
+ let sizeSq = size * size;
577
+
578
+ for (var y = -sampleRadius; y <= sampleRadius; y++) {
579
+ for (var x = -sampleRadius; x <= sampleRadius; x++) {
580
+ let distSq = f32(x * x + y * y);
581
+ if (distSq <= sizeSq) {
582
+ let sAlpha = sampleAlpha(in.uv + vec2<f32>(f32(x), f32(y)) * texelSize);
583
+ maxAlpha = max(maxAlpha, sAlpha);
584
+ }
585
+ }
586
+ }
587
+
588
+ let strokeAlpha = clamp(maxAlpha - origA, 0.0, 1.0) * opacity;
589
+ if (strokeAlpha > 0.001) {
590
+ let strokeCol = vec4<f32>(u.strokeColor.rgb, strokeAlpha);
591
+ result = compositeLayer(result, strokeCol, blendMode);
592
+ }
593
+ }
594
+
595
+ // =========================================================================
596
+ // 4. BASE IMAGE LAYER (with Color Overlay, Bevel & Emboss, Inner Glow/Shadow)
597
+ // =========================================================================
598
+ if (origA > 0.001) {
599
+ var baseRgb = origColor.rgb;
600
+
601
+ // Color Overlay
602
+ if (u.colorOverlayParams.x > 0.5) {
603
+ let overlayOpacity = u.colorOverlayParams.y;
604
+ let overlayBlendMode = u32(u.colorOverlayParams.z);
605
+ let blendedOverlay = blendRgb(baseRgb, u.colorOverlayColor.rgb, overlayBlendMode);
606
+ baseRgb = mix(baseRgb, blendedOverlay, overlayOpacity);
607
+ }
608
+
609
+ // Bevel & Emboss
610
+ if (u.bevelParams1.x > 0.5) {
611
+ let style = u.bevelParams1.y;
612
+ let technique = u.bevelParams1.z;
613
+ let depth = u.bevelParams1.w / 100.0;
614
+ let direction = u.bevelParams2.x;
615
+ let bevelSize = max(0.5, u.bevelParams2.y);
616
+ let soften = u.bevelParams2.z;
617
+ let lightAngle = u.bevelParams2.w;
618
+ let lightAltitude = u.bevelParams3.x;
619
+ let hlOpacity = u.bevelParams3.y;
620
+ let shOpacity = u.bevelParams3.z;
621
+
622
+ let lightDir = normalize(vec3<f32>(
623
+ -cos(lightAngle) * cos(lightAltitude),
624
+ sin(lightAngle) * cos(lightAltitude),
625
+ sin(lightAltitude)
626
+ ));
627
+
628
+ let stepSize = max(1.0, bevelSize * 0.5 + soften) * texelSize;
629
+ let aL = sampleAlpha(in.uv - vec2<f32>(stepSize.x, 0.0));
630
+ let aR = sampleAlpha(in.uv + vec2<f32>(stepSize.x, 0.0));
631
+ let aT = sampleAlpha(in.uv - vec2<f32>(0.0, stepSize.y));
632
+ let aB = sampleAlpha(in.uv + vec2<f32>(0.0, stepSize.y));
633
+
634
+ var dx = (aR - aL) * depth * direction;
635
+ var dy = (aB - aT) * depth * direction;
636
+
637
+ if (technique > 0.5) { // ChiselHard or ChiselSoft
638
+ let rampFactor = select(2.0, 1.5, technique > 1.5);
639
+ dx = clamp(dx * rampFactor, -1.0, 1.0);
640
+ dy = clamp(dy * rampFactor, -1.0, 1.0);
641
+ }
642
+
643
+ let normal = normalize(vec3<f32>(-dx, -dy, 1.0));
644
+ let nDotL = dot(normal, lightDir);
645
+
646
+ let highlightAmount = max(0.0, nDotL) * hlOpacity;
647
+ let shadowAmount = max(0.0, -nDotL) * shOpacity;
648
+
649
+ let hlColor = mix(baseRgb, u.bevelHighlightColor.rgb + baseRgb, highlightAmount);
650
+ let shColor = mix(baseRgb, baseRgb * (1.0 - shadowAmount) + u.bevelShadowColor.rgb * shadowAmount, shadowAmount);
651
+ baseRgb = mix(shColor, hlColor, clamp(nDotL * 0.5 + 0.5, 0.0, 1.0));
652
+ }
653
+
654
+ // Inner Glow
655
+ if (u.innerGlowParams.x > 0.5) {
656
+ let igOpacity = u.innerGlowParams.y;
657
+ let igSize = u.innerGlowParams.z;
658
+ let igSpread = u.innerGlowParams.w;
659
+ let igBlendMode = u32(u.innerGlowParams2.x);
660
+
661
+ var innerAccum = 0.0;
662
+ var innerWeight = 0.0;
663
+ let sigma = max(0.5, igSize * 0.4);
664
+ let sampleRadius = min(i32(ceil(igSize)), 16);
665
+ let stepVal = max(1, sampleRadius / 6);
666
+
667
+ for (var y = -sampleRadius; y <= sampleRadius; y += stepVal) {
668
+ for (var x = -sampleRadius; x <= sampleRadius; x += stepVal) {
669
+ let offset = vec2<f32>(f32(x), f32(y)) * texelSize;
670
+ let weight = exp(-0.5 * f32(x * x + y * y) / (sigma * sigma));
671
+ innerAccum += sampleAlpha(in.uv + offset) * weight;
672
+ innerWeight += weight;
673
+ }
674
+ }
675
+
676
+ let blurredInner = innerAccum / max(innerWeight, 1e-4);
677
+ let innerGlowMask = max(0.0, origA - blurredInner);
678
+ let spreadFactor = igSpread / 100.0;
679
+ let finalInnerGlowAlpha = clamp(innerGlowMask / max(1.0 - spreadFactor * 0.95, 0.01), 0.0, 1.0) * igOpacity;
680
+
681
+ if (finalInnerGlowAlpha > 0.001) {
682
+ let igBlended = blendRgb(baseRgb, u.innerGlowColor.rgb, igBlendMode);
683
+ baseRgb = mix(baseRgb, igBlended, finalInnerGlowAlpha);
684
+ }
685
+ }
686
+
687
+ // Inner Shadow
688
+ if (u.innerShadowParams.x > 0.5) {
689
+ let isOpacity = u.innerShadowParams.y;
690
+ let isAngle = u.innerShadowParams.z;
691
+ let isDistance = u.innerShadowParams.w;
692
+ let isChoke = u.innerShadowParams2.x;
693
+ let isSize = u.innerShadowParams2.y;
694
+ let isBlendMode = u32(u.innerShadowParams2.z);
695
+
696
+ let isOffset = vec2<f32>(-cos(isAngle), sin(isAngle)) * isDistance * texelSize;
697
+ let shiftedA = sampleAlpha(in.uv + isOffset);
698
+
699
+ var isAccum = 0.0;
700
+ var isWeight = 0.0;
701
+ let sigma = max(0.5, isSize * 0.4);
702
+ let sampleRadius = min(i32(ceil(isSize)), 16);
703
+ let stepVal = max(1, sampleRadius / 6);
704
+
705
+ for (var y = -sampleRadius; y <= sampleRadius; y += stepVal) {
706
+ for (var x = -sampleRadius; x <= sampleRadius; x += stepVal) {
707
+ let offset = vec2<f32>(f32(x), f32(y)) * texelSize;
708
+ let weight = exp(-0.5 * f32(x * x + y * y) / (sigma * sigma));
709
+ let sShifted = sampleAlpha(in.uv + isOffset + offset);
710
+ let sOrig = sampleAlpha(in.uv + offset);
711
+ isAccum += max(0.0, sOrig - sShifted) * weight;
712
+ isWeight += weight;
713
+ }
714
+ }
715
+
716
+ let blurredIS = isAccum / max(isWeight, 1e-4);
717
+ let chokeFactor = isChoke / 100.0;
718
+ let finalISAlpha = clamp(blurredIS / max(1.0 - chokeFactor * 0.95, 0.01), 0.0, 1.0) * isOpacity;
719
+
720
+ if (finalISAlpha > 0.001) {
721
+ let isBlended = blendRgb(baseRgb, u.innerShadowColor.rgb, isBlendMode);
722
+ baseRgb = mix(baseRgb, isBlended, finalISAlpha);
723
+ }
724
+ }
725
+
726
+ // Inside Stroke
727
+ if (u.strokeParams.x > 0.5 && u.strokeParams.z > 1.5) { // position == 2: inside
728
+ let size = u.strokeParams.y;
729
+ let opacity = u.strokeParams.w;
730
+ let blendMode = u32(u.strokeParams2.x);
731
+
732
+ var minAlpha = 1.0;
733
+ let sampleRadius = min(i32(ceil(size)), 24);
734
+ let sizeSq = size * size;
735
+
736
+ for (var y = -sampleRadius; y <= sampleRadius; y++) {
737
+ for (var x = -sampleRadius; x <= sampleRadius; x++) {
738
+ let distSq = f32(x * x + y * y);
739
+ if (distSq <= sizeSq) {
740
+ let sAlpha = sampleAlpha(in.uv + vec2<f32>(f32(x), f32(y)) * texelSize);
741
+ minAlpha = min(minAlpha, sAlpha);
742
+ }
743
+ }
744
+ }
745
+
746
+ let insideStrokeAlpha = clamp(origA - minAlpha, 0.0, 1.0) * opacity;
747
+ if (insideStrokeAlpha > 0.001) {
748
+ let sBlended = blendRgb(baseRgb, u.strokeColor.rgb, blendMode);
749
+ baseRgb = mix(baseRgb, sBlended, insideStrokeAlpha);
750
+ }
751
+ }
752
+
753
+ let baseLayer = vec4<f32>(baseRgb, origA);
754
+ result = compositeLayer(result, baseLayer, 0u);
755
+ }
756
+
757
+ // =========================================================================
758
+ // 5. CENTER STROKE
759
+ // =========================================================================
760
+ if (u.strokeParams.x > 0.5 && u.strokeParams.z >= 0.5 && u.strokeParams.z <= 1.5) { // position == 1: center
761
+ let size = u.strokeParams.y;
762
+ let opacity = u.strokeParams.w;
763
+ let blendMode = u32(u.strokeParams2.x);
764
+
765
+ var maxAlpha = 0.0;
766
+ var minAlpha = 1.0;
767
+ let halfSize = max(0.5, size * 0.5);
768
+ let sampleRadius = min(i32(ceil(halfSize)), 24);
769
+ let halfSizeSq = halfSize * halfSize;
770
+
771
+ for (var y = -sampleRadius; y <= sampleRadius; y++) {
772
+ for (var x = -sampleRadius; x <= sampleRadius; x++) {
773
+ let distSq = f32(x * x + y * y);
774
+ if (distSq <= halfSizeSq) {
775
+ let sAlpha = sampleAlpha(in.uv + vec2<f32>(f32(x), f32(y)) * texelSize);
776
+ maxAlpha = max(maxAlpha, sAlpha);
777
+ minAlpha = min(minAlpha, sAlpha);
778
+ }
779
+ }
780
+ }
781
+
782
+ let centerStrokeAlpha = clamp(maxAlpha - minAlpha, 0.0, 1.0) * opacity;
783
+ if (centerStrokeAlpha > 0.001) {
784
+ let strokeCol = vec4<f32>(u.strokeColor.rgb, centerStrokeAlpha);
785
+ result = compositeLayer(result, strokeCol, blendMode);
786
+ }
787
+ }
788
+
789
+ // Output premultiplied alpha for QuadPipeline / WebGPU rendering
790
+ return vec4<f32>(result.rgb * result.a, result.a);
791
+ }
792
+ `;
793
+ const resourcesCache = /* @__PURE__ */ new WeakMap();
794
+ function getLayerStyleResources(device, format) {
795
+ let res = resourcesCache.get(device);
796
+ if (res) return res;
797
+ const module = device.createShaderModule({ code: WGSL_LAYER_STYLE_SHADER });
798
+ const uniformLayout = device.createBindGroupLayout({ entries: [{
799
+ binding: 0,
800
+ visibility: GPUShaderStage.FRAGMENT,
801
+ buffer: { type: "uniform" }
802
+ }] });
803
+ const textureLayout = device.createBindGroupLayout({ entries: [{
804
+ binding: 0,
805
+ visibility: GPUShaderStage.FRAGMENT,
806
+ texture: { sampleType: "float" }
807
+ }, {
808
+ binding: 1,
809
+ visibility: GPUShaderStage.FRAGMENT,
810
+ sampler: { type: "filtering" }
811
+ }] });
812
+ const pipelineLayout = device.createPipelineLayout({ bindGroupLayouts: [uniformLayout, textureLayout] });
813
+ res = {
814
+ pipeline: device.createRenderPipeline({
815
+ layout: pipelineLayout,
816
+ vertex: {
817
+ module,
818
+ entryPoint: "vs"
819
+ },
820
+ fragment: {
821
+ module,
822
+ entryPoint: "fs",
823
+ targets: [{
824
+ format,
825
+ blend: {
826
+ color: {
827
+ srcFactor: "one",
828
+ dstFactor: "one-minus-src-alpha",
829
+ operation: "add"
830
+ },
831
+ alpha: {
832
+ srcFactor: "one",
833
+ dstFactor: "one-minus-src-alpha",
834
+ operation: "add"
835
+ }
836
+ }
837
+ }]
838
+ },
839
+ primitive: { topology: "triangle-strip" }
840
+ }),
841
+ uniformLayout,
842
+ textureLayout
843
+ };
844
+ resourcesCache.set(device, res);
845
+ return res;
846
+ }
847
+ const uniformBufferData = new Float32Array(88);
848
+ const WebGPURenderer = async (args) => {
849
+ const { ctx, encoder, pass, targetView, targetTexture, targetWidth, targetHeight, props, drawChild } = args;
850
+ const op = props.virtualMedia?.operation;
851
+ if (op?.op !== "LayerStyle" || !op) return;
852
+ const childMedia = props.virtualMedia.children?.[0];
853
+ if (!childMedia) return;
854
+ pass.end();
855
+ const width = targetWidth;
856
+ const height = targetHeight;
857
+ const elapsedSeconds = props.elapsedMs !== void 0 ? props.elapsedMs / 1e3 : (props.frame ?? 0) / (props.fps || 30);
858
+ const resolveField = (handleId, fallbackVal, clampMin = 0, clampMax = 1e3) => {
859
+ if (handleId && op.inputs?.[handleId]?.connectionValid) {
860
+ const outputItem = op.inputs[handleId].outputItem;
861
+ if (!outputItem) return Math.max(clampMin, Math.min(clampMax, fallbackVal));
862
+ if (outputItem.type === "Number") {
863
+ const numVal = typeof outputItem.data === "number" ? outputItem.data : outputItem.data?.value ?? fallbackVal;
864
+ return Math.max(clampMin, Math.min(clampMax, numVal));
865
+ }
866
+ if (outputItem.type === "Signal") {
867
+ const data = outputItem.data;
868
+ if (typeof data === "number") return Math.max(clampMin, Math.min(clampMax, data));
869
+ if (data && typeof data === "object") {
870
+ if (typeof data.value === "number") return Math.max(clampMin, Math.min(clampMax, data.value));
871
+ const amp = typeof data.amplitude === "number" ? data.amplitude : 1;
872
+ const freq = typeof data.frequency === "number" ? data.frequency : 1;
873
+ const phase = typeof data.phase === "number" ? data.phase : 0;
874
+ const offset = typeof data.offset === "number" ? data.offset : fallbackVal;
875
+ const t = elapsedSeconds;
876
+ const computed = offset + amp * Math.sin(2 * Math.PI * freq * t + phase);
877
+ return Math.max(clampMin, Math.min(clampMax, computed));
878
+ }
879
+ }
880
+ }
881
+ return Math.max(clampMin, Math.min(clampMax, fallbackVal));
882
+ };
883
+ const padding = computeLayerStylePadding(op);
884
+ const padX = padding.padX;
885
+ const padY = padding.padY;
886
+ const childW = Math.max(1, width - padX * 2);
887
+ const childH = Math.max(1, height - padY * 2);
888
+ const childTex = ctx.renderer.getTemporaryTexture(childW, childH, [...props.excludeTextures || [], targetTexture]);
889
+ const childView = childTex.createView();
890
+ ctx.renderer.beginFrame(encoder, childView, {
891
+ r: 0,
892
+ g: 0,
893
+ b: 0,
894
+ a: 0
895
+ }, childW, childH, "clear").end();
896
+ await drawChild(childMedia, {
897
+ ...props,
898
+ virtualMedia: childMedia,
899
+ containerWidth: childW,
900
+ containerHeight: childH
901
+ }, childView, childTex, childW, childH);
902
+ const inputTex = ctx.renderer.getTemporaryTexture(width, height, [
903
+ childTex,
904
+ targetTexture,
905
+ ...props.excludeTextures || []
906
+ ]);
907
+ const inputView = inputTex.createView();
908
+ const inputPass = ctx.renderer.beginFrame(encoder, inputView, {
909
+ r: 0,
910
+ g: 0,
911
+ b: 0,
912
+ a: 0
913
+ }, width, height, "clear");
914
+ ctx.renderer.drawTexture(inputPass, childTex, {
915
+ x: padX,
916
+ y: padY,
917
+ width: childW,
918
+ height: childH
919
+ }, { opacity: 1 });
920
+ inputPass.end();
921
+ const { pipeline, uniformLayout, textureLayout } = getLayerStyleResources(ctx.device, ctx.renderer.format);
922
+ const sampler = ctx.renderer.samplerCache.getSampler(ctx.device);
923
+ const ds = op.dropShadow ?? {};
924
+ const is = op.innerShadow ?? {};
925
+ const og = op.outerGlow ?? {};
926
+ const ig = op.innerGlow ?? {};
927
+ const st = op.stroke ?? {};
928
+ const be = op.bevelEmboss ?? {};
929
+ const co = op.colorOverlay ?? {};
930
+ const dsCol = hexToRgba(ds.color ?? "#000000");
931
+ const dsOpacity = resolveField(op.dropShadowOpacityHandleId, ds.opacity ?? .75, 0, 1);
932
+ const dsAngle = resolveField(op.dropShadowAngleHandleId, ds.angle ?? 120, 0, 360) * Math.PI / 180;
933
+ const dsDist = resolveField(op.dropShadowDistanceHandleId, ds.distance ?? 10, 0, 500);
934
+ const dsSpread = resolveField(op.dropShadowSpreadHandleId, ds.spread ?? 0, 0, 100);
935
+ const dsSize = resolveField(op.dropShadowSizeHandleId, ds.size ?? 10, 0, 250);
936
+ const dsBlend = BLEND_MODE_MAP[ds.blendMode ?? "multiply"] ?? 1;
937
+ const isCol = hexToRgba(is.color ?? "#000000");
938
+ const isOpacity = resolveField(op.innerShadowOpacityHandleId, is.opacity ?? .75, 0, 1);
939
+ const isAngle = resolveField(op.innerShadowAngleHandleId, is.angle ?? 120, 0, 360) * Math.PI / 180;
940
+ const isDist = resolveField(op.innerShadowDistanceHandleId, is.distance ?? 5, 0, 500);
941
+ const isChoke = resolveField(op.innerShadowChokeHandleId, is.choke ?? 0, 0, 100);
942
+ const isSize = resolveField(op.innerShadowSizeHandleId, is.size ?? 5, 0, 250);
943
+ const isBlend = BLEND_MODE_MAP[is.blendMode ?? "multiply"] ?? 1;
944
+ const ogCol = hexToRgba(og.color ?? "#ffffff");
945
+ const ogOpacity = resolveField(op.outerGlowOpacityHandleId, og.opacity ?? .75, 0, 1);
946
+ const ogSize = resolveField(op.outerGlowSizeHandleId, og.size ?? 15, 0, 250);
947
+ const ogSpread = resolveField(op.outerGlowSpreadHandleId, og.spread ?? 0, 0, 100);
948
+ const ogBlend = BLEND_MODE_MAP[og.blendMode ?? "screen"] ?? 2;
949
+ const igCol = hexToRgba(ig.color ?? "#ffffff");
950
+ const igOpacity = resolveField(op.innerGlowOpacityHandleId, ig.opacity ?? .75, 0, 1);
951
+ const igSize = resolveField(op.innerGlowSizeHandleId, ig.size ?? 15, 0, 250);
952
+ const igSpread = resolveField(op.innerGlowSpreadHandleId, ig.spread ?? 0, 0, 100);
953
+ const igBlend = BLEND_MODE_MAP[ig.blendMode ?? "screen"] ?? 2;
954
+ const stCol = hexToRgba(st.color ?? "#ffffff");
955
+ const stSize = resolveField(op.strokeSizeHandleId, st.size ?? 2, 0, 100);
956
+ const stPos = STROKE_POS_MAP[st.position ?? "outside"] ?? 0;
957
+ const stOpacity = resolveField(op.strokeOpacityHandleId, st.opacity ?? 1, 0, 1);
958
+ const stBlend = BLEND_MODE_MAP[st.blendMode ?? "normal"] ?? 0;
959
+ const beHlCol = hexToRgba(be.highlightColor ?? "#ffffff");
960
+ const beShCol = hexToRgba(be.shadowColor ?? "#000000");
961
+ const beStyle = BEVEL_STYLE_MAP[be.style ?? "InnerBevel"] ?? 0;
962
+ const beTech = BEVEL_TECHNIQUE_MAP[be.technique ?? "Smooth"] ?? 0;
963
+ const beDepth = resolveField(op.bevelEmbossDepthHandleId, be.depth ?? 100, 1, 1e3);
964
+ const beDir = be.direction === "Down" ? -1 : 1;
965
+ const beSize = resolveField(op.bevelEmbossSizeHandleId, be.size ?? 5, 0, 250);
966
+ const beSoften = resolveField(op.bevelEmbossSoftenHandleId, be.soften ?? 0, 0, 50);
967
+ const beAngle = resolveField(op.bevelEmbossAngleHandleId, be.angle ?? 120, 0, 360) * Math.PI / 180;
968
+ const beAltitude = resolveField(op.bevelEmbossAltitudeHandleId, be.altitude ?? 30, 0, 90) * Math.PI / 180;
969
+ const beHlOpacity = resolveField(op.bevelEmbossHighlightOpacityHandleId, be.highlightOpacity ?? .75, 0, 1);
970
+ const beShOpacity = resolveField(op.bevelEmbossShadowOpacityHandleId, be.shadowOpacity ?? .75, 0, 1);
971
+ const coCol = hexToRgba(co.color ?? "#ff0000");
972
+ const coOpacity = resolveField(op.colorOverlayOpacityHandleId, co.opacity ?? 1, 0, 1);
973
+ const coBlend = BLEND_MODE_MAP[co.blendMode ?? "normal"] ?? 0;
974
+ uniformBufferData.fill(0);
975
+ uniformBufferData[0] = dsCol[0];
976
+ uniformBufferData[1] = dsCol[1];
977
+ uniformBufferData[2] = dsCol[2];
978
+ uniformBufferData[3] = dsCol[3];
979
+ uniformBufferData[4] = ds.enabled ? 1 : 0;
980
+ uniformBufferData[5] = dsOpacity;
981
+ uniformBufferData[6] = dsAngle;
982
+ uniformBufferData[7] = dsDist;
983
+ uniformBufferData[8] = dsSpread;
984
+ uniformBufferData[9] = dsSize;
985
+ uniformBufferData[10] = dsBlend;
986
+ uniformBufferData[11] = 0;
987
+ uniformBufferData[12] = isCol[0];
988
+ uniformBufferData[13] = isCol[1];
989
+ uniformBufferData[14] = isCol[2];
990
+ uniformBufferData[15] = isCol[3];
991
+ uniformBufferData[16] = is.enabled ? 1 : 0;
992
+ uniformBufferData[17] = isOpacity;
993
+ uniformBufferData[18] = isAngle;
994
+ uniformBufferData[19] = isDist;
995
+ uniformBufferData[20] = isChoke;
996
+ uniformBufferData[21] = isSize;
997
+ uniformBufferData[22] = isBlend;
998
+ uniformBufferData[23] = 0;
999
+ uniformBufferData[24] = ogCol[0];
1000
+ uniformBufferData[25] = ogCol[1];
1001
+ uniformBufferData[26] = ogCol[2];
1002
+ uniformBufferData[27] = ogCol[3];
1003
+ uniformBufferData[28] = og.enabled ? 1 : 0;
1004
+ uniformBufferData[29] = ogOpacity;
1005
+ uniformBufferData[30] = ogSize;
1006
+ uniformBufferData[31] = ogSpread;
1007
+ uniformBufferData[32] = ogBlend;
1008
+ uniformBufferData[33] = 0;
1009
+ uniformBufferData[34] = 0;
1010
+ uniformBufferData[35] = 0;
1011
+ uniformBufferData[36] = igCol[0];
1012
+ uniformBufferData[37] = igCol[1];
1013
+ uniformBufferData[38] = igCol[2];
1014
+ uniformBufferData[39] = igCol[3];
1015
+ uniformBufferData[40] = ig.enabled ? 1 : 0;
1016
+ uniformBufferData[41] = igOpacity;
1017
+ uniformBufferData[42] = igSize;
1018
+ uniformBufferData[43] = igSpread;
1019
+ uniformBufferData[44] = igBlend;
1020
+ uniformBufferData[45] = 0;
1021
+ uniformBufferData[46] = 0;
1022
+ uniformBufferData[47] = 0;
1023
+ uniformBufferData[48] = stCol[0];
1024
+ uniformBufferData[49] = stCol[1];
1025
+ uniformBufferData[50] = stCol[2];
1026
+ uniformBufferData[51] = stCol[3];
1027
+ uniformBufferData[52] = st.enabled ? 1 : 0;
1028
+ uniformBufferData[53] = stSize;
1029
+ uniformBufferData[54] = stPos;
1030
+ uniformBufferData[55] = stOpacity;
1031
+ uniformBufferData[56] = stBlend;
1032
+ uniformBufferData[57] = 0;
1033
+ uniformBufferData[58] = 0;
1034
+ uniformBufferData[59] = 0;
1035
+ uniformBufferData[60] = beHlCol[0];
1036
+ uniformBufferData[61] = beHlCol[1];
1037
+ uniformBufferData[62] = beHlCol[2];
1038
+ uniformBufferData[63] = beHlCol[3];
1039
+ uniformBufferData[64] = beShCol[0];
1040
+ uniformBufferData[65] = beShCol[1];
1041
+ uniformBufferData[66] = beShCol[2];
1042
+ uniformBufferData[67] = beShCol[3];
1043
+ uniformBufferData[68] = be.enabled ? 1 : 0;
1044
+ uniformBufferData[69] = beStyle;
1045
+ uniformBufferData[70] = beTech;
1046
+ uniformBufferData[71] = beDepth;
1047
+ uniformBufferData[72] = beDir;
1048
+ uniformBufferData[73] = beSize;
1049
+ uniformBufferData[74] = beSoften;
1050
+ uniformBufferData[75] = beAngle;
1051
+ uniformBufferData[76] = beAltitude;
1052
+ uniformBufferData[77] = beHlOpacity;
1053
+ uniformBufferData[78] = beShOpacity;
1054
+ uniformBufferData[79] = 0;
1055
+ uniformBufferData[80] = coCol[0];
1056
+ uniformBufferData[81] = coCol[1];
1057
+ uniformBufferData[82] = coCol[2];
1058
+ uniformBufferData[83] = coCol[3];
1059
+ uniformBufferData[84] = co.enabled ? 1 : 0;
1060
+ uniformBufferData[85] = coOpacity;
1061
+ uniformBufferData[86] = coBlend;
1062
+ uniformBufferData[87] = 0;
1063
+ const uniformBuffer = ctx.renderer.getTemporaryBuffer(uniformBufferData);
1064
+ const uBindGroup = ctx.device.createBindGroup({
1065
+ layout: uniformLayout,
1066
+ entries: [{
1067
+ binding: 0,
1068
+ resource: { buffer: uniformBuffer }
1069
+ }]
1070
+ });
1071
+ const tBindGroup = ctx.device.createBindGroup({
1072
+ layout: textureLayout,
1073
+ entries: [{
1074
+ binding: 0,
1075
+ resource: inputView
1076
+ }, {
1077
+ binding: 1,
1078
+ resource: sampler
1079
+ }]
1080
+ });
1081
+ const outTex = ctx.renderer.getTemporaryTexture(width, height, [
1082
+ inputTex,
1083
+ childTex,
1084
+ targetTexture,
1085
+ ...props.excludeTextures || []
1086
+ ]);
1087
+ const renderPass = encoder.beginRenderPass({ colorAttachments: [{
1088
+ view: outTex.createView(),
1089
+ loadOp: "clear",
1090
+ storeOp: "store",
1091
+ clearValue: {
1092
+ r: 0,
1093
+ g: 0,
1094
+ b: 0,
1095
+ a: 0
1096
+ }
1097
+ }] });
1098
+ renderPass.setPipeline(pipeline);
1099
+ renderPass.setBindGroup(0, uBindGroup);
1100
+ renderPass.setBindGroup(1, tBindGroup);
1101
+ renderPass.draw(4);
1102
+ renderPass.end();
1103
+ const finalPass = ctx.renderer.beginFrame(encoder, targetView, {
1104
+ r: 0,
1105
+ g: 0,
1106
+ b: 0,
1107
+ a: 0
1108
+ }, targetWidth, targetHeight, "load");
1109
+ ctx.renderer.drawTexture(finalPass, outTex, {
1110
+ x: 0,
1111
+ y: 0,
1112
+ width: targetWidth,
1113
+ height: targetHeight
1114
+ }, { opacity: op.opacity ?? 1 });
1115
+ args.pass = finalPass;
1116
+ };
1117
+ var renderers_default = defineRenderer({ WebGPURenderer });
1118
+
1119
+ //#endregion
1120
+ export { renderers_default as t };
1121
+ //# sourceMappingURL=renderer-x2s9LmVL.mjs.map