@splinetool/runtime 1.12.98 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. package/README.md +195 -22
  2. package/build/boolean.js +406 -2
  3. package/build/boolean.js.br +0 -0
  4. package/build/boolean.js.gz +0 -0
  5. package/build/boolean.wasm +0 -0
  6. package/build/boolean.wasm.br +0 -0
  7. package/build/boolean.wasm.gz +0 -0
  8. package/build/gaussian-splat-compression.js.br +0 -0
  9. package/build/gaussian-splat-compression.js.gz +0 -0
  10. package/build/hana-ui.js +4299 -0
  11. package/build/hana-ui.js.br +0 -0
  12. package/build/hana-ui.js.gz +0 -0
  13. package/build/hana-ui.wasm +0 -0
  14. package/build/hana-ui.wasm.br +0 -0
  15. package/build/hana-ui.wasm.gz +0 -0
  16. package/build/howler.js.br +0 -0
  17. package/build/howler.js.gz +0 -0
  18. package/build/navmesh.js.br +0 -0
  19. package/build/navmesh.js.gz +0 -0
  20. package/build/navmesh.wasm +0 -0
  21. package/build/navmesh.wasm.br +0 -0
  22. package/build/navmesh.wasm.gz +0 -0
  23. package/build/opentype.js.br +0 -0
  24. package/build/opentype.js.gz +0 -0
  25. package/build/physics.js +1 -1
  26. package/build/physics.js.br +0 -0
  27. package/build/physics.js.gz +0 -0
  28. package/build/physics.wasm +0 -0
  29. package/build/physics.wasm.br +0 -0
  30. package/build/physics.wasm.gz +0 -0
  31. package/build/process.js +2 -2
  32. package/build/process.js.br +0 -0
  33. package/build/process.js.gz +0 -0
  34. package/build/process.wasm +0 -0
  35. package/build/process.wasm.br +0 -0
  36. package/build/process.wasm.gz +0 -0
  37. package/build/runtime-DRACOLoader-TQHJ6SJB.js +1 -0
  38. package/build/runtime-DRACOLoader-TQHJ6SJB.js.br +0 -0
  39. package/build/runtime-DRACOLoader-TQHJ6SJB.js.gz +0 -0
  40. package/build/runtime-Perfs-KMJFDYHU.js +1 -0
  41. package/build/runtime-Perfs-KMJFDYHU.js.br +0 -0
  42. package/build/runtime-Perfs-KMJFDYHU.js.gz +0 -0
  43. package/build/runtime-aiAssistant-XJVJ7TQB.js +1 -0
  44. package/build/runtime-aiAssistant-XJVJ7TQB.js.br +0 -0
  45. package/build/runtime-aiAssistant-XJVJ7TQB.js.gz +0 -0
  46. package/build/runtime-apiServices-KAO5SQJZ.js +1 -0
  47. package/build/runtime-apiServices-KAO5SQJZ.js.br +0 -0
  48. package/build/runtime-apiServices-KAO5SQJZ.js.gz +0 -0
  49. package/build/runtime-audio-Y3GYW4YQ.js +1 -0
  50. package/build/runtime-audio-Y3GYW4YQ.js.br +0 -0
  51. package/build/runtime-audio-Y3GYW4YQ.js.gz +0 -0
  52. package/build/runtime-bloom-XRHHZNNT.js +1 -0
  53. package/build/runtime-bloom-XRHHZNNT.js.br +0 -0
  54. package/build/runtime-bloom-XRHHZNNT.js.gz +0 -0
  55. package/build/runtime-brightnessContrast-RHV6X2Z4.js +1 -0
  56. package/build/runtime-brightnessContrast-RHV6X2Z4.js.br +0 -0
  57. package/build/runtime-brightnessContrast-RHV6X2Z4.js.gz +0 -0
  58. package/build/runtime-chromaticAberration-LSGAMQAK.js +1 -0
  59. package/build/runtime-chromaticAberration-LSGAMQAK.js.br +0 -0
  60. package/build/runtime-chromaticAberration-LSGAMQAK.js.gz +0 -0
  61. package/build/runtime-chunk-23QOKH2J.js +1 -0
  62. package/build/runtime-chunk-23QOKH2J.js.br +0 -0
  63. package/build/runtime-chunk-23QOKH2J.js.gz +0 -0
  64. package/build/runtime-chunk-2VFLTNIU.js +1 -0
  65. package/build/runtime-chunk-2VFLTNIU.js.br +0 -0
  66. package/build/runtime-chunk-2VFLTNIU.js.gz +0 -0
  67. package/build/runtime-chunk-44SAPZDZ.js +1 -0
  68. package/build/runtime-chunk-44SAPZDZ.js.br +0 -0
  69. package/build/runtime-chunk-44SAPZDZ.js.gz +0 -0
  70. package/build/runtime-chunk-4KZXQGUQ.js +1 -0
  71. package/build/runtime-chunk-4KZXQGUQ.js.br +0 -0
  72. package/build/runtime-chunk-4KZXQGUQ.js.gz +0 -0
  73. package/build/runtime-chunk-4YV3EXSU.js +1 -0
  74. package/build/runtime-chunk-4YV3EXSU.js.br +0 -0
  75. package/build/runtime-chunk-4YV3EXSU.js.gz +0 -0
  76. package/build/runtime-chunk-5CH7XRKY.js +1 -0
  77. package/build/runtime-chunk-5CH7XRKY.js.br +0 -0
  78. package/build/runtime-chunk-5CH7XRKY.js.gz +0 -0
  79. package/build/runtime-chunk-5VJGAC3M.js +1 -0
  80. package/build/runtime-chunk-5VJGAC3M.js.br +0 -0
  81. package/build/runtime-chunk-5VJGAC3M.js.gz +0 -0
  82. package/build/runtime-chunk-7NBWIU4W.js +1 -0
  83. package/build/runtime-chunk-7NBWIU4W.js.br +0 -0
  84. package/build/runtime-chunk-7NBWIU4W.js.gz +0 -0
  85. package/build/runtime-chunk-ARTGMJ7O.js +1 -0
  86. package/build/runtime-chunk-ARTGMJ7O.js.br +0 -0
  87. package/build/runtime-chunk-ARTGMJ7O.js.gz +0 -0
  88. package/build/runtime-chunk-BXPWRF47.js +1 -0
  89. package/build/runtime-chunk-BXPWRF47.js.br +0 -0
  90. package/build/runtime-chunk-BXPWRF47.js.gz +0 -0
  91. package/build/runtime-chunk-CRYQVRO6.js +1 -0
  92. package/build/runtime-chunk-CRYQVRO6.js.br +0 -0
  93. package/build/runtime-chunk-CRYQVRO6.js.gz +0 -0
  94. package/build/runtime-chunk-CVUJ3GMH.js +1 -0
  95. package/build/runtime-chunk-CVUJ3GMH.js.br +0 -0
  96. package/build/runtime-chunk-CVUJ3GMH.js.gz +0 -0
  97. package/build/runtime-chunk-DJJZN367.js +1 -0
  98. package/build/runtime-chunk-DJJZN367.js.br +0 -0
  99. package/build/runtime-chunk-DJJZN367.js.gz +0 -0
  100. package/build/runtime-chunk-DZNU62CT.js +1 -0
  101. package/build/runtime-chunk-DZNU62CT.js.br +0 -0
  102. package/build/runtime-chunk-DZNU62CT.js.gz +0 -0
  103. package/build/runtime-chunk-EAXCCTR5.js +1 -0
  104. package/build/runtime-chunk-EAXCCTR5.js.br +0 -0
  105. package/build/runtime-chunk-EAXCCTR5.js.gz +0 -0
  106. package/build/runtime-chunk-EOV2DL2V.js +1 -0
  107. package/build/runtime-chunk-EOV2DL2V.js.br +0 -0
  108. package/build/runtime-chunk-EOV2DL2V.js.gz +0 -0
  109. package/build/runtime-chunk-FDRTCOJ5.js +1 -0
  110. package/build/runtime-chunk-FDRTCOJ5.js.br +0 -0
  111. package/build/runtime-chunk-FDRTCOJ5.js.gz +0 -0
  112. package/build/runtime-chunk-FQNSP44B.js +1 -0
  113. package/build/runtime-chunk-FQNSP44B.js.br +0 -0
  114. package/build/runtime-chunk-FQNSP44B.js.gz +0 -0
  115. package/build/runtime-chunk-FTVQTRM7.js +1 -0
  116. package/build/runtime-chunk-FTVQTRM7.js.br +0 -0
  117. package/build/runtime-chunk-FTVQTRM7.js.gz +0 -0
  118. package/build/runtime-chunk-GFTBNL2W.js +1 -0
  119. package/build/runtime-chunk-GFTBNL2W.js.br +0 -0
  120. package/build/runtime-chunk-GFTBNL2W.js.gz +0 -0
  121. package/build/runtime-chunk-H6BPTR74.js +1 -0
  122. package/build/runtime-chunk-H6BPTR74.js.br +0 -0
  123. package/build/runtime-chunk-H6BPTR74.js.gz +0 -0
  124. package/build/runtime-chunk-H6T5LPRN.js +1 -0
  125. package/build/runtime-chunk-H6T5LPRN.js.br +0 -0
  126. package/build/runtime-chunk-H6T5LPRN.js.gz +0 -0
  127. package/build/runtime-chunk-HER7UVU3.js +1 -0
  128. package/build/runtime-chunk-HER7UVU3.js.br +0 -0
  129. package/build/runtime-chunk-HER7UVU3.js.gz +0 -0
  130. package/build/runtime-chunk-J2I4VBHR.js +1 -0
  131. package/build/runtime-chunk-J2I4VBHR.js.br +0 -0
  132. package/build/runtime-chunk-J2I4VBHR.js.gz +0 -0
  133. package/build/runtime-chunk-JFAQQYSH.js +1 -0
  134. package/build/runtime-chunk-JFAQQYSH.js.br +0 -0
  135. package/build/runtime-chunk-JFAQQYSH.js.gz +0 -0
  136. package/build/runtime-chunk-KGZNRID6.js +1 -0
  137. package/build/runtime-chunk-KGZNRID6.js.br +1 -0
  138. package/build/runtime-chunk-KGZNRID6.js.gz +0 -0
  139. package/build/runtime-chunk-LATYCOUS.js +1 -0
  140. package/build/runtime-chunk-LATYCOUS.js.br +0 -0
  141. package/build/runtime-chunk-LATYCOUS.js.gz +0 -0
  142. package/build/runtime-chunk-MBBODDV7.js +1 -0
  143. package/build/runtime-chunk-MBBODDV7.js.br +0 -0
  144. package/build/runtime-chunk-MBBODDV7.js.gz +0 -0
  145. package/build/runtime-chunk-ML3Z74BL.js +1 -0
  146. package/build/runtime-chunk-ML3Z74BL.js.br +0 -0
  147. package/build/runtime-chunk-ML3Z74BL.js.gz +0 -0
  148. package/build/runtime-chunk-MM75L5X4.js +1 -0
  149. package/build/runtime-chunk-MM75L5X4.js.br +0 -0
  150. package/build/runtime-chunk-MM75L5X4.js.gz +0 -0
  151. package/build/runtime-chunk-N2ZRGNPR.js +1 -0
  152. package/build/runtime-chunk-N2ZRGNPR.js.br +0 -0
  153. package/build/runtime-chunk-N2ZRGNPR.js.gz +0 -0
  154. package/build/runtime-chunk-NBYTQLIB.js +1 -0
  155. package/build/runtime-chunk-NBYTQLIB.js.br +0 -0
  156. package/build/runtime-chunk-NBYTQLIB.js.gz +0 -0
  157. package/build/runtime-chunk-NSD7DU3P.js +1 -0
  158. package/build/runtime-chunk-NSD7DU3P.js.br +0 -0
  159. package/build/runtime-chunk-NSD7DU3P.js.gz +0 -0
  160. package/build/runtime-chunk-NTUTXO7Q.js +1 -0
  161. package/build/runtime-chunk-NTUTXO7Q.js.br +0 -0
  162. package/build/runtime-chunk-NTUTXO7Q.js.gz +0 -0
  163. package/build/runtime-chunk-O5NBGIBR.js +1 -0
  164. package/build/runtime-chunk-O5NBGIBR.js.br +0 -0
  165. package/build/runtime-chunk-O5NBGIBR.js.gz +0 -0
  166. package/build/runtime-chunk-OFPUAZKY.js +1 -0
  167. package/build/runtime-chunk-OFPUAZKY.js.br +0 -0
  168. package/build/runtime-chunk-OFPUAZKY.js.gz +0 -0
  169. package/build/runtime-chunk-OW6T4XFV.js +1 -0
  170. package/build/runtime-chunk-OW6T4XFV.js.br +0 -0
  171. package/build/runtime-chunk-OW6T4XFV.js.gz +0 -0
  172. package/build/runtime-chunk-QZ35BPGB.js +1 -0
  173. package/build/runtime-chunk-QZ35BPGB.js.br +0 -0
  174. package/build/runtime-chunk-QZ35BPGB.js.gz +0 -0
  175. package/build/runtime-chunk-R43XZP65.js +1 -0
  176. package/build/runtime-chunk-R43XZP65.js.br +0 -0
  177. package/build/runtime-chunk-R43XZP65.js.gz +0 -0
  178. package/build/runtime-chunk-T53JMQSH.js +1 -0
  179. package/build/runtime-chunk-T53JMQSH.js.br +0 -0
  180. package/build/runtime-chunk-T53JMQSH.js.gz +0 -0
  181. package/build/runtime-chunk-T6CHRQ6N.js +1 -0
  182. package/build/runtime-chunk-T6CHRQ6N.js.br +0 -0
  183. package/build/runtime-chunk-T6CHRQ6N.js.gz +0 -0
  184. package/build/runtime-chunk-TU4KDRKR.js +1 -0
  185. package/build/runtime-chunk-TU4KDRKR.js.br +0 -0
  186. package/build/runtime-chunk-TU4KDRKR.js.gz +0 -0
  187. package/build/runtime-chunk-TZCHGFVF.js +1 -0
  188. package/build/runtime-chunk-TZCHGFVF.js.br +3 -0
  189. package/build/runtime-chunk-TZCHGFVF.js.gz +0 -0
  190. package/build/runtime-chunk-UK4GQHMO.js +1 -0
  191. package/build/runtime-chunk-UK4GQHMO.js.br +0 -0
  192. package/build/runtime-chunk-UK4GQHMO.js.gz +0 -0
  193. package/build/runtime-chunk-USXMESRF.js +1 -0
  194. package/build/runtime-chunk-USXMESRF.js.br +0 -0
  195. package/build/runtime-chunk-USXMESRF.js.gz +0 -0
  196. package/build/runtime-chunk-VAVYZ35B.js +1 -0
  197. package/build/runtime-chunk-VAVYZ35B.js.br +0 -0
  198. package/build/runtime-chunk-VAVYZ35B.js.gz +0 -0
  199. package/build/runtime-chunk-VGN7YHB7.js +1 -0
  200. package/build/runtime-chunk-VGN7YHB7.js.br +0 -0
  201. package/build/runtime-chunk-VGN7YHB7.js.gz +0 -0
  202. package/build/runtime-chunk-W7QPV37Y.js +1 -0
  203. package/build/runtime-chunk-W7QPV37Y.js.br +1 -0
  204. package/build/runtime-chunk-W7QPV37Y.js.gz +0 -0
  205. package/build/runtime-chunk-WQXDDUFV.js +1 -0
  206. package/build/runtime-chunk-WQXDDUFV.js.br +0 -0
  207. package/build/runtime-chunk-WQXDDUFV.js.gz +0 -0
  208. package/build/runtime-chunk-XLOQIQSS.js +1 -0
  209. package/build/runtime-chunk-XLOQIQSS.js.br +0 -0
  210. package/build/runtime-chunk-XLOQIQSS.js.gz +0 -0
  211. package/build/runtime-chunk-Y3BMDVJ7.js +1 -0
  212. package/build/runtime-chunk-Y3BMDVJ7.js.br +0 -0
  213. package/build/runtime-chunk-Y3BMDVJ7.js.gz +0 -0
  214. package/build/runtime-chunk-YUK55LCN.js +1 -0
  215. package/build/runtime-chunk-YUK55LCN.js.br +0 -0
  216. package/build/runtime-chunk-YUK55LCN.js.gz +0 -0
  217. package/build/runtime-chunk-YVNDW5TV.js +1 -0
  218. package/build/runtime-chunk-YVNDW5TV.js.br +0 -0
  219. package/build/runtime-chunk-YVNDW5TV.js.gz +0 -0
  220. package/build/runtime-chunk-YXATXASV.js +1 -0
  221. package/build/runtime-chunk-YXATXASV.js.br +1 -0
  222. package/build/runtime-chunk-YXATXASV.js.gz +0 -0
  223. package/build/runtime-chunk-Z5OH244S.js +1 -0
  224. package/build/runtime-chunk-Z5OH244S.js.br +0 -0
  225. package/build/runtime-chunk-Z5OH244S.js.gz +0 -0
  226. package/build/runtime-classicRuntime-F5CEZRNL.js +1 -0
  227. package/build/runtime-classicRuntime-F5CEZRNL.js.br +0 -0
  228. package/build/runtime-classicRuntime-F5CEZRNL.js.gz +0 -0
  229. package/build/runtime-cloners-BLAFVALM.js +1 -0
  230. package/build/runtime-cloners-BLAFVALM.js.br +0 -0
  231. package/build/runtime-cloners-BLAFVALM.js.gz +0 -0
  232. package/build/runtime-collisionBVH-KXZNWTEK.js +1 -0
  233. package/build/runtime-collisionBVH-KXZNWTEK.js.br +0 -0
  234. package/build/runtime-collisionBVH-KXZNWTEK.js.gz +0 -0
  235. package/build/runtime-components-DYNXEVOC.js +1 -0
  236. package/build/runtime-components-DYNXEVOC.js.br +0 -0
  237. package/build/runtime-components-DYNXEVOC.js.gz +0 -0
  238. package/build/runtime-conditional-3A423CXW.js +1 -0
  239. package/build/runtime-conditional-3A423CXW.js.br +0 -0
  240. package/build/runtime-conditional-3A423CXW.js.gz +0 -0
  241. package/build/runtime-createDestroy-FUUG7UAK.js +1 -0
  242. package/build/runtime-createDestroy-FUUG7UAK.js.br +0 -0
  243. package/build/runtime-createDestroy-FUUG7UAK.js.gz +0 -0
  244. package/build/runtime-depthOfField-BBWDHJYP.js +1 -0
  245. package/build/runtime-depthOfField-BBWDHJYP.js.br +0 -0
  246. package/build/runtime-depthOfField-BBWDHJYP.js.gz +0 -0
  247. package/build/runtime-dragDrop-GPFMU3ZB.js +1 -0
  248. package/build/runtime-dragDrop-GPFMU3ZB.js.br +0 -0
  249. package/build/runtime-dragDrop-GPFMU3ZB.js.gz +0 -0
  250. package/build/runtime-fxBloom-IGFV4KJD.js +1 -0
  251. package/build/runtime-fxBloom-IGFV4KJD.js.br +0 -0
  252. package/build/runtime-fxBloom-IGFV4KJD.js.gz +0 -0
  253. package/build/runtime-fxDepthOfField-WX7WD3K4.js +1 -0
  254. package/build/runtime-fxDepthOfField-WX7WD3K4.js.br +0 -0
  255. package/build/runtime-fxDepthOfField-WX7WD3K4.js.gz +0 -0
  256. package/build/runtime-gameControls-TGEINRCX.js +1 -0
  257. package/build/runtime-gameControls-TGEINRCX.js.br +0 -0
  258. package/build/runtime-gameControls-TGEINRCX.js.gz +0 -0
  259. package/build/runtime-hair-YOTI2EFL.js +1 -0
  260. package/build/runtime-hair-YOTI2EFL.js.br +0 -0
  261. package/build/runtime-hair-YOTI2EFL.js.gz +0 -0
  262. package/build/runtime-hueSaturation-X3HAZK2G.js +1 -0
  263. package/build/runtime-hueSaturation-X3HAZK2G.js.br +0 -0
  264. package/build/runtime-hueSaturation-X3HAZK2G.js.gz +0 -0
  265. package/build/runtime-mergeStaticGeometries-JI7YWYGH.js +1 -0
  266. package/build/runtime-mergeStaticGeometries-JI7YWYGH.js.br +3 -0
  267. package/build/runtime-mergeStaticGeometries-JI7YWYGH.js.gz +0 -0
  268. package/build/runtime-miscActions-INSZA2CP.js +1 -0
  269. package/build/runtime-miscActions-INSZA2CP.js.br +0 -0
  270. package/build/runtime-miscActions-INSZA2CP.js.gz +0 -0
  271. package/build/runtime-mouseHover-GZW7KW6H.js +1 -0
  272. package/build/runtime-mouseHover-GZW7KW6H.js.br +0 -0
  273. package/build/runtime-mouseHover-GZW7KW6H.js.gz +0 -0
  274. package/build/runtime-navmesh-UJTUAHXM.js +1 -0
  275. package/build/runtime-navmesh-UJTUAHXM.js.br +0 -0
  276. package/build/runtime-navmesh-UJTUAHXM.js.gz +0 -0
  277. package/build/runtime-noise-UF5CMIO3.js +1 -0
  278. package/build/runtime-noise-UF5CMIO3.js.br +0 -0
  279. package/build/runtime-noise-UF5CMIO3.js.gz +0 -0
  280. package/build/runtime-particles-T2CREK6M.js +1 -0
  281. package/build/runtime-particles-T2CREK6M.js.br +0 -0
  282. package/build/runtime-particles-T2CREK6M.js.gz +0 -0
  283. package/build/runtime-paths-PRHQFJ3X.js +1 -0
  284. package/build/runtime-paths-PRHQFJ3X.js.br +0 -0
  285. package/build/runtime-paths-PRHQFJ3X.js.gz +0 -0
  286. package/build/runtime-pixelation-QFSF4L6X.js +1 -0
  287. package/build/runtime-pixelation-QFSF4L6X.js.br +0 -0
  288. package/build/runtime-pixelation-QFSF4L6X.js.gz +0 -0
  289. package/build/runtime-resize-SM6PZWJY.js +1 -0
  290. package/build/runtime-resize-SM6PZWJY.js.br +0 -0
  291. package/build/runtime-resize-SM6PZWJY.js.gz +0 -0
  292. package/build/runtime-sceneTransition-JUZVB2S3.js +1 -0
  293. package/build/runtime-sceneTransition-JUZVB2S3.js.br +0 -0
  294. package/build/runtime-sceneTransition-JUZVB2S3.js.gz +0 -0
  295. package/build/runtime-scroll-Q6NRRL4F.js +1 -0
  296. package/build/runtime-scroll-Q6NRRL4F.js.br +0 -0
  297. package/build/runtime-scroll-Q6NRRL4F.js.gz +0 -0
  298. package/build/runtime-shapeBlends-CPHLT3XC.js +1 -0
  299. package/build/runtime-shapeBlends-CPHLT3XC.js.br +0 -0
  300. package/build/runtime-shapeBlends-CPHLT3XC.js.gz +0 -0
  301. package/build/runtime-text-TBHPCNPL.js +1 -0
  302. package/build/runtime-text-TBHPCNPL.js.br +0 -0
  303. package/build/runtime-text-TBHPCNPL.js.gz +0 -0
  304. package/build/runtime-textInputs-4HQER44D.js +1 -0
  305. package/build/runtime-textInputs-4HQER44D.js.br +0 -0
  306. package/build/runtime-textInputs-4HQER44D.js.gz +0 -0
  307. package/build/runtime-timeline-UKR4DEQS.js +1 -0
  308. package/build/runtime-timeline-UKR4DEQS.js.br +0 -0
  309. package/build/runtime-timeline-UKR4DEQS.js.gz +0 -0
  310. package/build/runtime-tracking-5HISHPEY.js +1 -0
  311. package/build/runtime-tracking-5HISHPEY.js.br +0 -0
  312. package/build/runtime-tracking-5HISHPEY.js.gz +0 -0
  313. package/build/runtime-transitions-FBNOSFXY.js +1 -0
  314. package/build/runtime-transitions-FBNOSFXY.js.br +0 -0
  315. package/build/runtime-transitions-FBNOSFXY.js.gz +0 -0
  316. package/build/runtime-ui2d-3AMS3CSG.js +1 -0
  317. package/build/runtime-ui2d-3AMS3CSG.js.br +0 -0
  318. package/build/runtime-ui2d-3AMS3CSG.js.gz +0 -0
  319. package/build/runtime-updater-3ELP7WMM.js +1 -0
  320. package/build/runtime-updater-3ELP7WMM.js.br +1 -0
  321. package/build/runtime-updater-3ELP7WMM.js.gz +0 -0
  322. package/build/runtime-variables-U36KPJ5V.js +1 -0
  323. package/build/runtime-variables-U36KPJ5V.js.br +0 -0
  324. package/build/runtime-variables-U36KPJ5V.js.gz +0 -0
  325. package/build/runtime-vectorShapes-GIS26ELU.js +1 -0
  326. package/build/runtime-vectorShapes-GIS26ELU.js.br +0 -0
  327. package/build/runtime-vectorShapes-GIS26ELU.js.gz +0 -0
  328. package/build/runtime-video-TZNR7MEM.js +1 -0
  329. package/build/runtime-video-TZNR7MEM.js.br +0 -0
  330. package/build/runtime-video-TZNR7MEM.js.gz +0 -0
  331. package/build/runtime-vignette-3KJD4P5D.js +1 -0
  332. package/build/runtime-vignette-3KJD4P5D.js.br +0 -0
  333. package/build/runtime-vignette-3KJD4P5D.js.gz +0 -0
  334. package/build/runtime-webgpu-LYDFJW3X.js +1 -0
  335. package/build/runtime-webgpu-LYDFJW3X.js.br +0 -0
  336. package/build/runtime-webgpu-LYDFJW3X.js.gz +0 -0
  337. package/build/runtime.cjs +6283 -4577
  338. package/build/runtime.js +1 -8186
  339. package/build/runtime.js.br +0 -0
  340. package/build/runtime.js.gz +0 -0
  341. package/build/runtime.standalone.js +1 -0
  342. package/build/runtime.standalone.js.br +0 -0
  343. package/build/runtime.standalone.js.gz +0 -0
  344. package/build/runtime.standalone.webgl.js +1 -0
  345. package/build/runtime.standalone.webgl.js.br +0 -0
  346. package/build/runtime.standalone.webgl.js.gz +0 -0
  347. package/build/runtime.standalone.webgpu.js +1 -0
  348. package/build/runtime.standalone.webgpu.js.br +0 -0
  349. package/build/runtime.standalone.webgpu.js.gz +0 -0
  350. package/build/runtime.standalone.webgpu.micro.js +1 -0
  351. package/build/runtime.standalone.webgpu.micro.js.br +0 -0
  352. package/build/runtime.standalone.webgpu.micro.js.gz +0 -0
  353. package/build/runtime.standalone.webgpu.min.js +1 -0
  354. package/build/runtime.standalone.webgpu.min.js.br +0 -0
  355. package/build/runtime.standalone.webgpu.min.js.gz +0 -0
  356. package/build/sky-alto.png +0 -0
  357. package/build/sky-cirrus.png +0 -0
  358. package/build/smaa-area.png +0 -0
  359. package/build/smaa-node-area.png +0 -0
  360. package/build/smaa-node-search.png +0 -0
  361. package/build/smaa-search.png +0 -0
  362. package/build/snippets/hana-82e9eb82a79dead4/js-imports.js +93 -0
  363. package/package.json +104 -89
  364. package/runtime.d.ts +301 -2
  365. package/build/ui.js +0 -3
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,93 @@
1
+
2
+ export async function loadImageFromBytes(bytes) {
3
+ const blob = new Blob([bytes])
4
+ const url = URL.createObjectURL(blob)
5
+ return createImageBitmap(blob).finally(() => {
6
+ URL.revokeObjectURL(url)
7
+ })
8
+ }
9
+
10
+ export async function loadImageFromUrl(url) {
11
+ return fetch(url)
12
+ .then(response => {
13
+ if (!response.ok) {
14
+ throw new Error(`Failed to fetch image: ${response.statusText}`);
15
+ }
16
+ return response.blob();
17
+ })
18
+ .then(blob => createImageBitmap(blob));
19
+ }
20
+
21
+ // Video Imports
22
+ function setupVideo(video) {
23
+ video.preload = "auto";
24
+ video.autoplay = true; //iOs hack to show the first frame
25
+ video.loop = true;
26
+ video.muted = true;
27
+ video.playsInline = true;
28
+ video.currentTime = 0.01;
29
+ video.load();
30
+
31
+ video.onloadeddata = () => {
32
+ video.muted = true;
33
+ // DOMException: The play() request was interrupted by a new load request.
34
+ // https://developers.google.com/web/updates/2017/06/play-request-was-interrupted
35
+ const playPromise = video.play();
36
+
37
+ if (playPromise !== undefined) {
38
+ playPromise
39
+ .then((_) => {
40
+ // Automatic playback started! Do nothing all good!
41
+ })
42
+ .catch(() => {
43
+ // for some reason the video could not be played (The play() request was interrupted by a new load request.)
44
+ // so let's try to play it again
45
+ video.play();
46
+ }).finally(() => {
47
+ video.pause();
48
+ });
49
+ }
50
+ };
51
+
52
+ let copyVideo = false;
53
+ video.addEventListener("playing", function() {
54
+ copyVideo = true;
55
+ }, true);
56
+
57
+ return new Promise((resolve) => {
58
+ const checkVideo = () => {
59
+ if (copyVideo) {
60
+ resolve(video);
61
+ } else {
62
+ setTimeout(checkVideo, 10);
63
+ }
64
+ };
65
+ checkVideo();
66
+ });
67
+ }
68
+
69
+
70
+ export async function loadVideoFromBytes(bytes) {
71
+ const blob = new Blob([bytes])
72
+ const video = document.createElement('video');
73
+ video.src = URL.createObjectURL(blob);
74
+ return setupVideo(video);
75
+ }
76
+
77
+
78
+ export async function loadVideoFromUrl(url) {
79
+ return fetch(url)
80
+ .then(response => {
81
+ if (!response.ok) {
82
+ throw new Error(`Failed to fetch video: ${response.statusText}`);
83
+ }
84
+ return response.blob();
85
+ })
86
+ .then(async blob => {
87
+ const video = document.createElement('video');
88
+ video.src = URL.createObjectURL(blob);
89
+ return setupVideo(video);
90
+ });
91
+ }
92
+
93
+
package/package.json CHANGED
@@ -1,91 +1,106 @@
1
1
  {
2
- "name": "@splinetool/runtime",
3
- "version": "1.12.98",
4
- "description": "Spline is a collaborative design platform for creating production-ready interactive experiences in multiple dimensions. © 2025 Spline, Inc.",
5
- "keywords": [
6
- "spline",
7
- "3D",
8
- "webgl",
9
- "shader",
10
- "interactive",
11
- "collaborative"
12
- ],
13
- "repository": {
14
- "type": "git",
15
- "url": "git+https://github.com/splinetool/spline.git",
16
- "directory": "packages/runtime"
17
- },
18
- "type": "module",
19
- "main": "./build/runtime.js",
20
- "module": "./build/runtime.js",
21
- "types": "./runtime.d.ts",
22
- "publishConfig": {
23
- "registry": "https://registry.npmjs.org",
24
- "access": "public"
25
- },
26
- "react-native": "./build/runtime.js",
27
- "exports": {
28
- ".": {
29
- "types": "./runtime.d.ts",
30
- "import": "./build/runtime.js",
31
- "require": "./build/runtime.cjs"
32
- },
33
- "./build/runtime.js": {
34
- "types": "./runtime.d.ts",
35
- "import": "./build/runtime.js",
36
- "require": "./build/runtime.cjs"
37
- }
38
- },
39
- "files": [
40
- "build",
41
- "runtime.d.ts"
42
- ],
43
- "scripts": {
44
- "build": "cross-env NODE_ENV=production node --experimental-json-modules ./esbuild.mjs",
45
- "test-server-side": "cross-env NODE_ENV=test node --experimental-json-modules ./esbuild.mjs && node ./build/runtime.cjs && echo '✅ Pass'",
46
- "lint": "eslint src/ --max-warnings=0 --cache",
47
- "format": "prettier src/ --write",
48
- "typecheck": "tsc",
49
- "prepublishOnly": "node ../../scripts/verify-publish-target.mjs",
50
- "analyze": "cross-env GENERATE_SOURCEMAP=true npm run build && cross-env NODE_OPTIONS=--no-experimental-fetch source-map-explorer 'build/runtime.js' --no-border-checks",
51
- "example": "cross-env IS_PROD=true npm run build && vite"
52
- },
53
- "dependencies": {
54
- "on-change": "4.0.0",
55
- "semver-compare": "1.0.0"
56
- },
57
- "devDependencies": {
58
- "@types/semver-compare": "1.0.1",
59
- "browserslist": "4.16.7",
60
- "browserslist-to-esbuild": "1.1.1",
61
- "cross-env": "7.0.3",
62
- "esbuild": "0.15.16",
63
- "esbuild-plugin-glslify": "1.0.1",
64
- "eslint": "8.46.0",
65
- "glslify-import": "3.1.0",
66
- "jest": "30.2.0",
67
- "lodash-es": "4.17.21",
68
- "prettier": "2.6.2",
69
- "source-map-explorer": "2.5.2",
70
- "spe": "*",
71
- "spe2d": "*",
72
- "three": "0.149.0",
73
- "typescript": "^5.2.2",
74
- "vite": "5.4.10"
75
- },
76
- "browserslist": {
77
- "development": [
78
- "last 1 chrome version",
79
- "last 1 firefox version",
80
- "last 1 safari version"
81
- ],
82
- "production": [
83
- ">0.2%",
84
- "not dead",
85
- "not op_mini all",
86
- "not IE <= 11",
87
- "Safari >= 13.0",
88
- "not Android <= 4.4"
89
- ]
90
- }
2
+ "name": "@splinetool/runtime",
3
+ "version": "2.0.1",
4
+ "description": "Spline is a collaborative design platform for creating production-ready interactive experiences in multiple dimensions. © 2025 Spline, Inc.",
5
+ "keywords": [
6
+ "spline",
7
+ "3D",
8
+ "webgl",
9
+ "shader",
10
+ "interactive",
11
+ "collaborative"
12
+ ],
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/splinetool/spline.git",
16
+ "directory": "packages/runtime"
17
+ },
18
+ "type": "module",
19
+ "main": "./build/runtime.js",
20
+ "module": "./build/runtime.js",
21
+ "types": "./runtime.d.ts",
22
+ "publishConfig": {
23
+ "registry": "https://registry.npmjs.org",
24
+ "access": "public"
25
+ },
26
+ "react-native": "./build/runtime.js",
27
+ "exports": {
28
+ ".": {
29
+ "types": "./runtime.d.ts",
30
+ "import": "./build/runtime.js",
31
+ "require": "./build/runtime.cjs"
32
+ },
33
+ "./build/runtime.js": {
34
+ "types": "./runtime.d.ts",
35
+ "import": "./build/runtime.js",
36
+ "require": "./build/runtime.cjs"
37
+ },
38
+ "./build/runtime.standalone.js": "./build/runtime.standalone.js",
39
+ "./build/runtime.standalone.webgl.js": "./build/runtime.standalone.webgl.js",
40
+ "./build/runtime.standalone.webgpu.js": "./build/runtime.standalone.webgpu.js",
41
+ "./build/runtime.standalone.webgpu.min.js": "./build/runtime.standalone.webgpu.min.js",
42
+ "./build/runtime.standalone.webgpu.micro.js": "./build/runtime.standalone.webgpu.micro.js",
43
+ "./build/physics.js": "./build/physics.js",
44
+ "./build/physics.wasm": "./build/physics.wasm"
45
+ },
46
+ "files": [
47
+ "build",
48
+ "runtime.d.ts"
49
+ ],
50
+ "scripts": {
51
+ "build": "cross-env NODE_ENV=production node --experimental-json-modules ./esbuild.mjs",
52
+ "test-server-side": "cross-env NODE_ENV=test node --experimental-json-modules ./esbuild.mjs && node ./build/runtime.cjs && echo '✅ Pass'",
53
+ "lint": "oxlint src/ --max-warnings=0",
54
+ "format": "oxfmt src/",
55
+ "format:check": "oxfmt --check src/",
56
+ "check-types": "tsc --noEmit",
57
+ "prepublishOnly": "node ../../scripts/verify-publish-target.mjs",
58
+ "analyze": "cross-env GENERATE_SOURCEMAP=true npm run build && cross-env NODE_OPTIONS=--no-experimental-fetch source-map-explorer 'build/runtime.js' --no-border-checks",
59
+ "example": "cross-env IS_PROD=true npm run build && vite",
60
+ "upload-cdn": "node scripts/upload-runtime-cdn.mjs"
61
+ },
62
+ "dependencies": {
63
+ "on-change": "4.0.0",
64
+ "semver-compare": "1.0.0"
65
+ },
66
+ "devDependencies": {
67
+ "@aws-sdk/client-s3": "3.1095.0",
68
+ "@dimforge/rapier3d": "0.19.3",
69
+ "@dimforge/rapier3d-compat": "0.19.3",
70
+ "@types/semver-compare": "1.0.1",
71
+ "@types/three": "0.185.0",
72
+ "@vercel/blob": "2.4.0",
73
+ "acorn": "8.17.0",
74
+ "acorn-walk": "8.3.5",
75
+ "browserslist": "4.16.7",
76
+ "browserslist-to-esbuild": "1.1.1",
77
+ "cross-env": "7.0.3",
78
+ "esbuild": "0.15.16",
79
+ "esbuild-plugin-glslify": "1.0.1",
80
+ "glslify-import": "3.1.0",
81
+ "jest": "30.2.0",
82
+ "source-map-explorer": "2.5.2",
83
+ "spe": "*",
84
+ "spe2d": "*",
85
+ "terser": "5.48.0",
86
+ "three": "0.185.0",
87
+ "typescript": "^5.2.2",
88
+ "vite": "6.4.3",
89
+ "vite-plugin-static-copy": "4.1.1"
90
+ },
91
+ "browserslist": {
92
+ "development": [
93
+ "last 1 chrome version",
94
+ "last 1 firefox version",
95
+ "last 1 safari version"
96
+ ],
97
+ "production": [
98
+ ">0.2%",
99
+ "not dead",
100
+ "not op_mini all",
101
+ "not IE <= 11",
102
+ "Safari >= 13.0",
103
+ "not Android <= 4.4"
104
+ ]
105
+ }
91
106
  }
package/runtime.d.ts CHANGED
@@ -66,6 +66,52 @@ declare module '@splinetool/runtime' {
66
66
  seek: (ms: number) => TransitionFactory;
67
67
  };
68
68
 
69
+ /**
70
+ * Structural stand-in for THREE.Material — pass an instance from YOUR
71
+ * three install (this package never re-exports three, and the copy it
72
+ * bundles is a different module instance from yours), or one built by
73
+ * `createCustomMaterial` against the runtime's bundled three.
74
+ */
75
+ export interface ThreeMaterialLike {
76
+ readonly isMaterial: true;
77
+ }
78
+
79
+ /**
80
+ * The curated namespace `createCustomMaterial` hands its factory: the runtime's
81
+ * BUNDLED three instance — the only one TSL node graphs can compile in.
82
+ * Members: `tsl` (the full three/tsl function object — Fn, uniform, vec3,
83
+ * texture, wgslFn, positionLocal, …), the NodeMaterial classes
84
+ * (NodeMaterial, MeshBasicNodeMaterial, MeshStandardNodeMaterial,
85
+ * MeshPhysicalNodeMaterial, MeshPhongNodeMaterial, MeshLambertNodeMaterial,
86
+ * MeshToonNodeMaterial, MeshMatcapNodeMaterial, MeshNormalNodeMaterial,
87
+ * SpriteNodeMaterial, PointsNodeMaterial, LineBasicNodeMaterial,
88
+ * LineDashedNodeMaterial), and core essentials (Color, Vector2/3/4,
89
+ * Matrix3/4, Texture, CanvasTexture, DataTexture, VideoTexture, side +
90
+ * blending + wrapping + filter + color-space constants).
91
+ *
92
+ * Typed opaquely to keep this file self-contained. With @types/three
93
+ * installed you can cast for full types — the values really do come from
94
+ * a separate module instance, matching this runtime's three minor (0.185):
95
+ * ```ts
96
+ * const t = three as unknown as typeof import('three/webgpu') & {
97
+ * tsl: typeof import('three/tsl');
98
+ * };
99
+ * ```
100
+ */
101
+ export interface SplineThreeNamespace {
102
+ readonly tsl: Record<string, any>;
103
+ readonly NodeMaterial: new (...args: any[]) => ThreeMaterialLike;
104
+ readonly MeshBasicNodeMaterial: new (...args: any[]) => ThreeMaterialLike;
105
+ readonly MeshStandardNodeMaterial: new (
106
+ ...args: any[]
107
+ ) => ThreeMaterialLike;
108
+ readonly MeshPhysicalNodeMaterial: new (
109
+ ...args: any[]
110
+ ) => ThreeMaterialLike;
111
+ readonly Color: new (...args: any[]) => any;
112
+ readonly [key: string]: any;
113
+ }
114
+
69
115
  export type SPEObject = {
70
116
  name: string;
71
117
  uuid: string;
@@ -74,7 +120,13 @@ declare module '@splinetool/runtime' {
74
120
  position: { x: number; y: number; z: number };
75
121
  rotation: { x: number; y: number; z: number };
76
122
  scale: { x: number; y: number; z: number };
77
- material?: Material;
123
+ /**
124
+ * For objects created with a three.js material instance
125
+ * (createObject's `material`), this is that instance (behind a
126
+ * transparent change-tracking proxy, so edits through it re-render
127
+ * automatically); otherwise a snapshot of the Spline layered material.
128
+ */
129
+ material?: Material | ThreeMaterialLike;
78
130
 
79
131
  /**
80
132
  * Sets the color of the object's material if it is a mesh and if it has a color layer.
@@ -115,6 +167,93 @@ declare module '@splinetool/runtime' {
115
167
  transition: (params: TransitionParams) => TransitionFactory;
116
168
  };
117
169
 
170
+ export type Vec3Like =
171
+ | [number, number, number]
172
+ | { x?: number; y?: number; z?: number };
173
+
174
+ export type CreateMaterialOptions = {
175
+ /** A css color for the material's color layer. */
176
+ color?: string;
177
+ roughness?: number;
178
+ metalness?: number;
179
+ reflectivity?: number;
180
+ /** Opacity of the color layer (0–1). */
181
+ alpha?: number;
182
+ };
183
+
184
+ export type CreateObjectOptions = {
185
+ /** Defaults to the type's friendly name, deduped with a numeric suffix. */
186
+ name?: string;
187
+ /** Name or uuid of the parent object (or its SPEObject). Defaults to the active page. */
188
+ parent?: string | SPEObject;
189
+ /** World units. Defaults to [0, 0, 0]. */
190
+ position?: Vec3Like;
191
+ /**
192
+ * Degrees (Spline convention). Note that the returned proxy's
193
+ * `.rotation` is a three.js Euler in radians.
194
+ */
195
+ rotation?: Vec3Like;
196
+ /** A number applies uniformly. Defaults to [1, 1, 1]. */
197
+ scale?: Vec3Like | number;
198
+ visible?: boolean;
199
+ castShadow?: boolean;
200
+ receiveShadow?: boolean;
201
+ /** Shorthand for material: { color } — a css color string. */
202
+ color?: string;
203
+ /**
204
+ * Either a shared material name/id from the document (the material is
205
+ * then genuinely shared — editing it restyles every object using it),
206
+ * a css color string, inline material properties, a **three.js
207
+ * material instance** from your own three install, or a
208
+ * `(three) => material` **factory** receiving the bundled namespace
209
+ * (the inline form of {@link Application.createCustomMaterial}, same
210
+ * as setMaterial accepts).
211
+ *
212
+ * Three.js material instances are supported on the `webgpu` backend
213
+ * only (the default wherever WebGPU is available; the call throws on
214
+ * the classic WebGL pipeline). Accepted: **built-in materials** from
215
+ * your own three install (MeshStandardMaterial, MeshPhysicalMaterial,
216
+ * MeshBasicMaterial, MeshNormalMaterial, … — converted by three's node
217
+ * library) and **TSL shader materials built with
218
+ * {@link Application.createCustomMaterial}**. GLSL ShaderMaterials
219
+ * throw, and so do TSL NodeMaterials built from your own three/webgpu
220
+ * import (the runtime bundles its own copy of three, and a node graph
221
+ * from a separate module instance cannot compile in it — build it via
222
+ * createCustomMaterial instead). Scene lights and shadows apply; Spline's
223
+ * environment IBL does not (set your own `envMap`). Property edits are
224
+ * live; structural changes (new maps, flag flips) need
225
+ * `material.needsUpdate = true`. The runtime never disposes your
226
+ * material — you own its lifecycle.
227
+ */
228
+ material?:
229
+ | string
230
+ | CreateMaterialOptions
231
+ | ThreeMaterialLike
232
+ | ((three: SplineThreeNamespace) => ThreeMaterialLike);
233
+ } & {
234
+ /**
235
+ * Any other key is a type-specific parameter: geometry inputs for
236
+ * shapes (width, height, depth, cornerRadius, spikes, …), text
237
+ * properties for Text (text, fontSize, font, …), light properties for
238
+ * lights (intensity, distance, …).
239
+ */
240
+ [parameter: string]: unknown;
241
+ };
242
+
243
+ export type CloneObjectOptions = {
244
+ /** Defaults to '<source name> Copy', deduped with a numeric suffix. */
245
+ name?: string;
246
+ /** Name or uuid of the new parent (or its SPEObject). Defaults to the source's parent. */
247
+ parent?: string | SPEObject;
248
+ /** World units. */
249
+ position?: Vec3Like;
250
+ /** Degrees (Spline convention). */
251
+ rotation?: Vec3Like;
252
+ /** A number applies uniformly. */
253
+ scale?: Vec3Like | number;
254
+ visible?: boolean;
255
+ };
256
+
118
257
  export class Application {
119
258
  _controls: any;
120
259
  renderOnDemand: boolean;
@@ -143,10 +282,54 @@ declare module '@splinetool/runtime' {
143
282
  * If not set the runtime will load the WASM files from the CDN.
144
283
  */
145
284
  wasmPath?: string;
285
+
286
+ /**
287
+ * Rendering backend. When not set, the runtime auto-selects:
288
+ * `webgpu` (the node-material pipeline on three's
289
+ * WebGPURenderer, loaded as a separate chunk, with the
290
+ * render-bundle scene pass on) wherever the browser grants a
291
+ * WebGPU adapter, `webgl` everywhere else — and any WebGPU init
292
+ * failure still falls back to `webgl`. Pass `webgl` to force
293
+ * the classic pipeline, or `webgpu` to force the node pipeline.
294
+ * When the option is not set, the `?renderer=webgpu|webgl2|webgl`
295
+ * URL param overrides the auto-selection (diagnostics); an
296
+ * explicit option always wins over the URL. The server-side CJS
297
+ * build compiles the WebGPU branch out and always uses `webgl`;
298
+ * the single-file standalones ship per export setting —
299
+ * `runtime.standalone.js` carries both pipelines,
300
+ * `runtime.standalone.webgpu.js` / `.webgl.js` carry one and
301
+ * show a clear notice when asked for the other. All Spline
302
+ * instances on a page must use the same backend.
303
+ */
304
+ renderer?: 'webgl' | 'webgpu';
305
+
306
+ /**
307
+ * How the scene's HTML content (authored in the editor's HTML
308
+ * frame, shipped inside the .splinecode) is presented over
309
+ * the canvas.
310
+ * - `sandbox` (default): a sandboxed iframe with an opaque
311
+ * origin — the content's scripts cannot touch the host
312
+ * page. The safe default for pages that embed scenes they
313
+ * didn't author.
314
+ * - `inline`: the content is grafted into the host document
315
+ * and its scripts run as ordinary page scripts with
316
+ * `window.spline` bound directly to this Application — no
317
+ * postMessage frame of latency. Only for pages whose
318
+ * author IS the scene author (Spline's own exports pass
319
+ * this).
320
+ * - `none`: don't present the HTML content at all.
321
+ */
322
+ htmlContentMode?: 'sandbox' | 'inline' | 'none';
146
323
  }
147
324
  );
148
325
  /**
149
326
  * Loads an exported Spline scene
327
+ *
328
+ * If the scene carries HTML content (authored in the editor's HTML
329
+ * frame), the runtime automatically layers it over the canvas in a
330
+ * sandboxed iframe wired to this Application through the injected
331
+ * `spline` bridge — the same HTML + 3D composition as the editor
332
+ * preview. It is removed on dispose().
150
333
  * @param path the url pointing toward a .splinecode file
151
334
  * @param variables a key:value object describing initial values of the variables in the file
152
335
  */
@@ -323,6 +506,95 @@ declare module '@splinetool/runtime' {
323
506
  objectNameOrId: string,
324
507
  urlOrBuffer: string | Uint8Array
325
508
  ): void {}
509
+
510
+ /**
511
+ * Creates a new object in the loaded scene and returns its SPEObject
512
+ * proxy. The object lives only in this runtime session — it is never
513
+ * persisted back to the Spline file.
514
+ *
515
+ * ```js
516
+ * const cube = await spline.createObject('Cube', {
517
+ * position: [0, 100, 0],
518
+ * width: 150,
519
+ * material: { color: '#ff3b30', roughness: 0.4 },
520
+ * });
521
+ * ```
522
+ * @param type A shape name ('Cube', 'Sphere', 'Torus', …, 'Text' — the
523
+ * 'Geometry' suffix is optional), 'CustomMesh' (raw vertex geometry —
524
+ * pass `vertices` as a flat [x,y,z, …] number[] or Float32Array, plus
525
+ * optional `indices`/`normals`/`uvs`; winding slips are safety-netted:
526
+ * inverted closed solids are flipped, open surfaces render
527
+ * double-sided), 'Group', or a light type ('PointLight', 'SpotLight',
528
+ * 'DirectionalLight').
529
+ * @param options Placement, material, and type-specific parameters.
530
+ */
531
+ createObject(
532
+ type: string,
533
+ options?: CreateObjectOptions
534
+ ): Promise<SPEObject>;
535
+
536
+ /**
537
+ * Builds a custom three.js material — including TSL shader materials —
538
+ * against the runtime's BUNDLED three instance (the only one TSL node
539
+ * graphs can compile in; materials built from your own three/webgpu
540
+ * import cannot work — see {@link SplineThreeNamespace}).
541
+ *
542
+ * ```js
543
+ * const glow = await spline.createCustomMaterial((three) => {
544
+ * const m = new three.MeshStandardNodeMaterial();
545
+ * m.colorNode = three.tsl.vec3(1, 0, 1);
546
+ * return m;
547
+ * });
548
+ * await spline.createObject('Sphere', { material: glow });
549
+ * ```
550
+ *
551
+ * The returned material is a plain reusable instance: share it across
552
+ * any number of createObject calls, tweak its properties/uniforms live,
553
+ * and dispose it yourself (the runtime never disposes it). WebGPU
554
+ * backend only — throws on the classic WebGL pipeline.
555
+ */
556
+ createCustomMaterial(
557
+ factory: (three: SplineThreeNamespace) => ThreeMaterialLike
558
+ ): Promise<ThreeMaterialLike>;
559
+
560
+ /**
561
+ * Replaces an EXISTING mesh's material with a custom three.js
562
+ * material — a built-in instance from your own three install, a
563
+ * material from {@link Application.createCustomMaterial}, or a
564
+ * factory receiving the bundled namespace. WebGPU backend only.
565
+ *
566
+ * The replacement is pinned (document-driven material updates no
567
+ * longer touch the mesh) and consumer-owned (never disposed by the
568
+ * runtime; no unset). Runtime-only, never persisted. Resolves to the
569
+ * applied material.
570
+ */
571
+ setMaterial(
572
+ target: string | SPEObject,
573
+ materialOrFactory:
574
+ | ThreeMaterialLike
575
+ | ((three: SplineThreeNamespace) => ThreeMaterialLike)
576
+ ): Promise<ThreeMaterialLike>;
577
+
578
+ /**
579
+ * Deep-clones an existing object (any type, including its subtree)
580
+ * with fresh ids and returns the clone's SPEObject proxy. This also
581
+ * covers types createObject can't build (imported models, vectors,
582
+ * booleans, …). By default the clone lands next to its source under
583
+ * the same parent, named '<source> Copy'.
584
+ * @param source The name or uuid of the object to clone, or its SPEObject.
585
+ * @param options Placement overrides and name.
586
+ */
587
+ cloneObject(
588
+ source: string | SPEObject,
589
+ options?: CloneObjectOptions
590
+ ): SPEObject;
591
+
592
+ /**
593
+ * Removes an object (and its whole subtree) from the scene.
594
+ * @param target The name or uuid of the object, or its SPEObject.
595
+ * @returns true when an object was removed, false when none matched.
596
+ */
597
+ removeObject(target: string | SPEObject): boolean;
326
598
  }
327
599
 
328
600
  /* ================== MATERIALS ================== */
@@ -335,7 +607,21 @@ declare module '@splinetool/runtime' {
335
607
  color: string;
336
608
  };
337
609
 
338
- /* ---------- FRESNEL LAYER ---------- */
610
+ /* ---------- VERTEX COLOR LAYER ---------- */
611
+ export type VertexColorLayer = {
612
+ readonly type: 'vertexColor';
613
+ alpha: number;
614
+ };
615
+
616
+ /* ---------- CAVITY LAYER ---------- */
617
+ export type CavityLayer = {
618
+ readonly type: 'cavity';
619
+ alpha: number;
620
+ ridge: number;
621
+ valley: number;
622
+ };
623
+
624
+ /* ---------- FRESNEL LAYER ---------- */
339
625
  export type FresnelLayer = {
340
626
  readonly type: 'fresnel';
341
627
  alpha: number;
@@ -345,6 +631,17 @@ declare module '@splinetool/runtime' {
345
631
  factor: number;
346
632
  };
347
633
 
634
+ /* ---------- DUST LAYER ---------- */
635
+ export type DustLayer = {
636
+ readonly type: 'dust';
637
+ alpha: number;
638
+ color: string;
639
+ coverage: number;
640
+ softness: number;
641
+ noiseStrength: number;
642
+ noiseScale: number;
643
+ };
644
+
348
645
  /* ---------- RAINBOW LAYER ---------- */
349
646
  export type RainbowLayer = {
350
647
  readonly type: 'rainbow';
@@ -684,7 +981,9 @@ declare module '@splinetool/runtime' {
684
981
 
685
982
  export type Layer =
686
983
  | ColorLayer
984
+ | VertexColorLayer
687
985
  | FresnelLayer
986
+ | DustLayer
688
987
  | RainbowLayer
689
988
  | NormalLayer
690
989
  | GradientLayer