@splinetool/runtime 2.0.8 → 2.0.10

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 (279) hide show
  1. package/build/hana-ui.js +122 -42
  2. package/build/hana-ui.js.br +0 -0
  3. package/build/hana-ui.js.gz +0 -0
  4. package/build/hana-ui.wasm +0 -0
  5. package/build/hana-ui.wasm.br +0 -0
  6. package/build/hana-ui.wasm.gz +0 -0
  7. package/build/{runtime-chunk-PDASWDVC.js → runtime-chunk-4LKRNVPP.js} +1 -1
  8. package/build/{runtime-chunk-PDASWDVC.js.br → runtime-chunk-4LKRNVPP.js.br} +0 -0
  9. package/build/runtime-chunk-4LKRNVPP.js.gz +0 -0
  10. package/build/{runtime-chunk-DK66VKWP.js → runtime-chunk-7FDJ7IIR.js} +1 -1
  11. package/build/runtime-chunk-7FDJ7IIR.js.br +0 -0
  12. package/build/runtime-chunk-7FDJ7IIR.js.gz +0 -0
  13. package/build/{runtime-chunk-23QXG35G.js → runtime-chunk-BLFFIB2B.js} +1 -1
  14. package/build/runtime-chunk-BLFFIB2B.js.br +0 -0
  15. package/build/runtime-chunk-BLFFIB2B.js.gz +0 -0
  16. package/build/{runtime-chunk-DHWGP6NU.js → runtime-chunk-CDR3AZNB.js} +1 -1
  17. package/build/runtime-chunk-CDR3AZNB.js.br +0 -0
  18. package/build/runtime-chunk-CDR3AZNB.js.gz +0 -0
  19. package/build/{runtime-chunk-HZ6FL5GH.js → runtime-chunk-CDYE22J6.js} +1 -1
  20. package/build/runtime-chunk-CDYE22J6.js.br +0 -0
  21. package/build/runtime-chunk-CDYE22J6.js.gz +0 -0
  22. package/build/runtime-chunk-DZIH7EMN.js +1 -0
  23. package/build/runtime-chunk-DZIH7EMN.js.br +0 -0
  24. package/build/runtime-chunk-DZIH7EMN.js.gz +0 -0
  25. package/build/{runtime-chunk-TAY7IXEZ.js → runtime-chunk-FN2C54JM.js} +1 -1
  26. package/build/runtime-chunk-FN2C54JM.js.br +0 -0
  27. package/build/runtime-chunk-FN2C54JM.js.gz +0 -0
  28. package/build/runtime-chunk-I6B5A36U.js +1 -0
  29. package/build/runtime-chunk-I6B5A36U.js.br +0 -0
  30. package/build/runtime-chunk-I6B5A36U.js.gz +0 -0
  31. package/build/{runtime-chunk-E3IEBR27.js → runtime-chunk-JSRKKIOS.js} +1 -1
  32. package/build/runtime-chunk-JSRKKIOS.js.br +0 -0
  33. package/build/runtime-chunk-JSRKKIOS.js.gz +0 -0
  34. package/build/{runtime-chunk-BMA5KYBS.js → runtime-chunk-KKDM5MC5.js} +1 -1
  35. package/build/runtime-chunk-KKDM5MC5.js.br +0 -0
  36. package/build/runtime-chunk-KKDM5MC5.js.gz +0 -0
  37. package/build/{runtime-chunk-3GRN37GY.js → runtime-chunk-L2C7JGYG.js} +1 -1
  38. package/build/runtime-chunk-L2C7JGYG.js.br +0 -0
  39. package/build/runtime-chunk-L2C7JGYG.js.gz +0 -0
  40. package/build/{runtime-chunk-GZ7C2GJM.js → runtime-chunk-LQL2PJVX.js} +1 -1
  41. package/build/runtime-chunk-LQL2PJVX.js.br +0 -0
  42. package/build/runtime-chunk-LQL2PJVX.js.gz +0 -0
  43. package/build/{runtime-chunk-EJJZJ5MV.js → runtime-chunk-M4BPCY7K.js} +1 -1
  44. package/build/runtime-chunk-M4BPCY7K.js.br +0 -0
  45. package/build/runtime-chunk-M4BPCY7K.js.gz +0 -0
  46. package/build/{runtime-chunk-CKT62HES.js → runtime-chunk-MOZWC42D.js} +1 -1
  47. package/build/runtime-chunk-MOZWC42D.js.br +0 -0
  48. package/build/runtime-chunk-MOZWC42D.js.gz +0 -0
  49. package/build/{runtime-chunk-RLYG5YBB.js → runtime-chunk-MVJAFW5H.js} +1 -1
  50. package/build/runtime-chunk-MVJAFW5H.js.br +1 -0
  51. package/build/runtime-chunk-MVJAFW5H.js.gz +0 -0
  52. package/build/{runtime-chunk-USGQ26QU.js → runtime-chunk-QSJVWNNM.js} +1 -1
  53. package/build/runtime-chunk-QSJVWNNM.js.br +0 -0
  54. package/build/runtime-chunk-QSJVWNNM.js.gz +0 -0
  55. package/build/{runtime-chunk-F3ZACLZW.js → runtime-chunk-RTRWO43P.js} +1 -1
  56. package/build/runtime-chunk-RTRWO43P.js.br +0 -0
  57. package/build/runtime-chunk-RTRWO43P.js.gz +0 -0
  58. package/build/{runtime-chunk-HK23JJVH.js → runtime-chunk-RX3SW5K2.js} +1 -1
  59. package/build/runtime-chunk-RX3SW5K2.js.br +0 -0
  60. package/build/runtime-chunk-RX3SW5K2.js.gz +0 -0
  61. package/build/{runtime-chunk-5RXW5MNJ.js → runtime-chunk-UHCXLQHA.js} +1 -1
  62. package/build/runtime-chunk-UHCXLQHA.js.br +0 -0
  63. package/build/runtime-chunk-UHCXLQHA.js.gz +0 -0
  64. package/build/{runtime-chunk-AELTGHV2.js → runtime-chunk-VNO2DW74.js} +1 -1
  65. package/build/{runtime-chunk-AELTGHV2.js.br → runtime-chunk-VNO2DW74.js.br} +0 -0
  66. package/build/runtime-chunk-VNO2DW74.js.gz +0 -0
  67. package/build/{runtime-chunk-UIM3XKIT.js → runtime-chunk-WQ2NXI3U.js} +1 -1
  68. package/build/runtime-chunk-WQ2NXI3U.js.br +0 -0
  69. package/build/runtime-chunk-WQ2NXI3U.js.gz +0 -0
  70. package/build/{runtime-chunk-557KVSJL.js → runtime-chunk-YO3XFDZF.js} +1 -1
  71. package/build/runtime-chunk-YO3XFDZF.js.br +0 -0
  72. package/build/runtime-chunk-YO3XFDZF.js.gz +0 -0
  73. package/build/{runtime-chunk-32KZP4YN.js → runtime-chunk-YS7K3AW3.js} +1 -1
  74. package/build/runtime-chunk-YS7K3AW3.js.br +0 -0
  75. package/build/runtime-chunk-YS7K3AW3.js.gz +0 -0
  76. package/build/{runtime-chunk-YULW5JRE.js → runtime-chunk-ZASM3KKC.js} +1 -1
  77. package/build/runtime-chunk-ZASM3KKC.js.br +0 -0
  78. package/build/runtime-chunk-ZASM3KKC.js.gz +0 -0
  79. package/build/{runtime-chunk-OUXEWX5Z.js → runtime-chunk-ZLOMOV3N.js} +1 -1
  80. package/build/runtime-chunk-ZLOMOV3N.js.br +0 -0
  81. package/build/runtime-chunk-ZLOMOV3N.js.gz +0 -0
  82. package/build/{runtime-chunk-5JEZ42OM.js → runtime-chunk-ZM7N5SZG.js} +1 -1
  83. package/build/runtime-chunk-ZM7N5SZG.js.br +0 -0
  84. package/build/runtime-chunk-ZM7N5SZG.js.gz +0 -0
  85. package/build/{runtime-classicRuntime-U672GAGM.js → runtime-classicRuntime-A3DEJ3YH.js} +1 -1
  86. package/build/runtime-classicRuntime-A3DEJ3YH.js.br +0 -0
  87. package/build/runtime-classicRuntime-A3DEJ3YH.js.gz +0 -0
  88. package/build/{runtime-cloners-2AC7OZRC.js → runtime-cloners-UFF7A36S.js} +1 -1
  89. package/build/runtime-cloners-UFF7A36S.js.br +1 -0
  90. package/build/runtime-cloners-UFF7A36S.js.gz +0 -0
  91. package/build/{runtime-components-L63NUGAO.js → runtime-components-EESAIEPO.js} +1 -1
  92. package/build/runtime-components-EESAIEPO.js.br +0 -0
  93. package/build/runtime-components-EESAIEPO.js.gz +0 -0
  94. package/build/{runtime-createDestroy-QHHQ6LYS.js → runtime-createDestroy-WBIIVRMC.js} +1 -1
  95. package/build/runtime-createDestroy-WBIIVRMC.js.br +0 -0
  96. package/build/runtime-createDestroy-WBIIVRMC.js.gz +0 -0
  97. package/build/{runtime-dragDrop-YBSWK3ET.js → runtime-dragDrop-D45J5GQ5.js} +1 -1
  98. package/build/runtime-dragDrop-D45J5GQ5.js.br +0 -0
  99. package/build/runtime-dragDrop-D45J5GQ5.js.gz +0 -0
  100. package/build/{runtime-gameControls-DSJRSTW5.js → runtime-gameControls-GNLQ3FT6.js} +1 -1
  101. package/build/runtime-gameControls-GNLQ3FT6.js.br +0 -0
  102. package/build/runtime-gameControls-GNLQ3FT6.js.gz +0 -0
  103. package/build/{runtime-hair-V4RTCES2.js → runtime-hair-55OFZZFY.js} +1 -1
  104. package/build/runtime-hair-55OFZZFY.js.br +1 -0
  105. package/build/runtime-hair-55OFZZFY.js.gz +0 -0
  106. package/build/{runtime-mergeStaticGeometries-VXENKMD4.js → runtime-mergeStaticGeometries-NLUOSGZB.js} +1 -1
  107. package/build/runtime-mergeStaticGeometries-NLUOSGZB.js.br +0 -0
  108. package/build/runtime-mergeStaticGeometries-NLUOSGZB.js.gz +0 -0
  109. package/build/{runtime-miscActions-RPUPHHGJ.js → runtime-miscActions-5YY5ARQT.js} +1 -1
  110. package/build/runtime-miscActions-5YY5ARQT.js.br +0 -0
  111. package/build/runtime-miscActions-5YY5ARQT.js.gz +0 -0
  112. package/build/{runtime-mouseHover-HG6AHA2L.js → runtime-mouseHover-MTTJI6DT.js} +1 -1
  113. package/build/runtime-mouseHover-MTTJI6DT.js.br +0 -0
  114. package/build/runtime-mouseHover-MTTJI6DT.js.gz +0 -0
  115. package/build/{runtime-particles-ZHE2MC33.js → runtime-particles-VZVZJ35I.js} +1 -1
  116. package/build/runtime-particles-VZVZJ35I.js.br +0 -0
  117. package/build/runtime-particles-VZVZJ35I.js.gz +0 -0
  118. package/build/{runtime-paths-GN6E6ZYL.js → runtime-paths-4UDUBYZN.js} +1 -1
  119. package/build/runtime-paths-4UDUBYZN.js.br +0 -0
  120. package/build/runtime-paths-4UDUBYZN.js.gz +0 -0
  121. package/build/{runtime-resize-LACR4RFK.js → runtime-resize-QYCZUOPF.js} +1 -1
  122. package/build/runtime-resize-QYCZUOPF.js.br +0 -0
  123. package/build/runtime-resize-QYCZUOPF.js.gz +0 -0
  124. package/build/{runtime-sceneTransition-QLPFYHHY.js → runtime-sceneTransition-FC5TQNCH.js} +1 -1
  125. package/build/runtime-sceneTransition-FC5TQNCH.js.br +0 -0
  126. package/build/runtime-sceneTransition-FC5TQNCH.js.gz +0 -0
  127. package/build/{runtime-scroll-WZZBT2XR.js → runtime-scroll-VKMCDMAZ.js} +1 -1
  128. package/build/runtime-scroll-VKMCDMAZ.js.br +0 -0
  129. package/build/runtime-scroll-VKMCDMAZ.js.gz +0 -0
  130. package/build/runtime-shapeBlends-3QLNRN2O.js +1 -0
  131. package/build/runtime-shapeBlends-3QLNRN2O.js.br +4 -0
  132. package/build/runtime-shapeBlends-3QLNRN2O.js.gz +0 -0
  133. package/build/{runtime-text-UADJSRL4.js → runtime-text-IYCY3PFB.js} +1 -1
  134. package/build/runtime-text-IYCY3PFB.js.br +0 -0
  135. package/build/runtime-text-IYCY3PFB.js.gz +0 -0
  136. package/build/{runtime-textInputs-7U3TTJ4X.js → runtime-textInputs-LFDWIRLC.js} +1 -1
  137. package/build/runtime-textInputs-LFDWIRLC.js.br +0 -0
  138. package/build/runtime-textInputs-LFDWIRLC.js.gz +0 -0
  139. package/build/runtime-timeline-WNUPRRKW.js +1 -0
  140. package/build/runtime-timeline-WNUPRRKW.js.br +0 -0
  141. package/build/runtime-timeline-WNUPRRKW.js.gz +0 -0
  142. package/build/{runtime-tracking-MC74576T.js → runtime-tracking-HMTCBZ7J.js} +1 -1
  143. package/build/runtime-tracking-HMTCBZ7J.js.br +0 -0
  144. package/build/runtime-tracking-HMTCBZ7J.js.gz +0 -0
  145. package/build/{runtime-transitions-S22YS7E6.js → runtime-transitions-NPD3CNKU.js} +1 -1
  146. package/build/runtime-transitions-NPD3CNKU.js.br +0 -0
  147. package/build/runtime-transitions-NPD3CNKU.js.gz +0 -0
  148. package/build/{runtime-ui2d-EX3RBXPP.js → runtime-ui2d-NZTQW5UJ.js} +1 -1
  149. package/build/runtime-ui2d-NZTQW5UJ.js.br +0 -0
  150. package/build/runtime-ui2d-NZTQW5UJ.js.gz +0 -0
  151. package/build/{runtime-vectorShapes-J5Y3LMND.js → runtime-vectorShapes-26IDV3ZL.js} +1 -1
  152. package/build/runtime-vectorShapes-26IDV3ZL.js.br +0 -0
  153. package/build/runtime-vectorShapes-26IDV3ZL.js.gz +0 -0
  154. package/build/{runtime-webgpu-LDZ3N2D5.js → runtime-webgpu-CDBERG7X.js} +1 -1
  155. package/build/runtime-webgpu-CDBERG7X.js.br +0 -0
  156. package/build/runtime-webgpu-CDBERG7X.js.gz +0 -0
  157. package/build/runtime.cjs +5 -5
  158. package/build/runtime.js +1 -1
  159. package/build/runtime.js.br +0 -0
  160. package/build/runtime.js.gz +0 -0
  161. package/build/runtime.standalone.js +1 -1
  162. package/build/runtime.standalone.js.br +0 -0
  163. package/build/runtime.standalone.js.gz +0 -0
  164. package/build/runtime.standalone.webgl.js +1 -1
  165. package/build/runtime.standalone.webgl.js.br +0 -0
  166. package/build/runtime.standalone.webgl.js.gz +0 -0
  167. package/build/runtime.standalone.webgpu.js +1 -1
  168. package/build/runtime.standalone.webgpu.js.br +0 -0
  169. package/build/runtime.standalone.webgpu.js.gz +0 -0
  170. package/build/runtime.standalone.webgpu.micro.js +1 -1
  171. package/build/runtime.standalone.webgpu.micro.js.br +0 -0
  172. package/build/runtime.standalone.webgpu.micro.js.gz +0 -0
  173. package/build/runtime.standalone.webgpu.min.js +1 -1
  174. package/build/runtime.standalone.webgpu.min.js.br +0 -0
  175. package/build/runtime.standalone.webgpu.min.js.gz +0 -0
  176. package/build/snippets/hana-82e9eb82a79dead4/js-imports.js +204 -77
  177. package/package.json +1 -1
  178. package/build/runtime-chunk-23QXG35G.js.br +0 -0
  179. package/build/runtime-chunk-23QXG35G.js.gz +0 -0
  180. package/build/runtime-chunk-32KZP4YN.js.br +0 -0
  181. package/build/runtime-chunk-32KZP4YN.js.gz +0 -0
  182. package/build/runtime-chunk-3GRN37GY.js.br +0 -0
  183. package/build/runtime-chunk-3GRN37GY.js.gz +0 -0
  184. package/build/runtime-chunk-557KVSJL.js.br +0 -0
  185. package/build/runtime-chunk-557KVSJL.js.gz +0 -0
  186. package/build/runtime-chunk-5JEZ42OM.js.br +0 -0
  187. package/build/runtime-chunk-5JEZ42OM.js.gz +0 -0
  188. package/build/runtime-chunk-5RXW5MNJ.js.br +0 -0
  189. package/build/runtime-chunk-5RXW5MNJ.js.gz +0 -0
  190. package/build/runtime-chunk-AELTGHV2.js.gz +0 -0
  191. package/build/runtime-chunk-BMA5KYBS.js.br +0 -0
  192. package/build/runtime-chunk-BMA5KYBS.js.gz +0 -0
  193. package/build/runtime-chunk-CKT62HES.js.br +0 -0
  194. package/build/runtime-chunk-CKT62HES.js.gz +0 -0
  195. package/build/runtime-chunk-DHWGP6NU.js.br +0 -0
  196. package/build/runtime-chunk-DHWGP6NU.js.gz +0 -0
  197. package/build/runtime-chunk-DK66VKWP.js.br +0 -0
  198. package/build/runtime-chunk-DK66VKWP.js.gz +0 -0
  199. package/build/runtime-chunk-E3IEBR27.js.br +0 -0
  200. package/build/runtime-chunk-E3IEBR27.js.gz +0 -0
  201. package/build/runtime-chunk-EJJZJ5MV.js.br +0 -0
  202. package/build/runtime-chunk-EJJZJ5MV.js.gz +0 -0
  203. package/build/runtime-chunk-F3ZACLZW.js.br +0 -0
  204. package/build/runtime-chunk-F3ZACLZW.js.gz +0 -0
  205. package/build/runtime-chunk-GZ7C2GJM.js.br +0 -0
  206. package/build/runtime-chunk-GZ7C2GJM.js.gz +0 -0
  207. package/build/runtime-chunk-HK23JJVH.js.br +0 -0
  208. package/build/runtime-chunk-HK23JJVH.js.gz +0 -0
  209. package/build/runtime-chunk-HZ6FL5GH.js.br +0 -0
  210. package/build/runtime-chunk-HZ6FL5GH.js.gz +0 -0
  211. package/build/runtime-chunk-KE6HNYUL.js +0 -1
  212. package/build/runtime-chunk-KE6HNYUL.js.br +0 -0
  213. package/build/runtime-chunk-KE6HNYUL.js.gz +0 -0
  214. package/build/runtime-chunk-KNL33WN7.js +0 -1
  215. package/build/runtime-chunk-KNL33WN7.js.br +0 -0
  216. package/build/runtime-chunk-KNL33WN7.js.gz +0 -0
  217. package/build/runtime-chunk-OUXEWX5Z.js.br +0 -0
  218. package/build/runtime-chunk-OUXEWX5Z.js.gz +0 -0
  219. package/build/runtime-chunk-PDASWDVC.js.gz +0 -0
  220. package/build/runtime-chunk-RLYG5YBB.js.br +0 -1
  221. package/build/runtime-chunk-RLYG5YBB.js.gz +0 -0
  222. package/build/runtime-chunk-TAY7IXEZ.js.br +0 -0
  223. package/build/runtime-chunk-TAY7IXEZ.js.gz +0 -0
  224. package/build/runtime-chunk-UIM3XKIT.js.br +0 -0
  225. package/build/runtime-chunk-UIM3XKIT.js.gz +0 -0
  226. package/build/runtime-chunk-USGQ26QU.js.br +0 -0
  227. package/build/runtime-chunk-USGQ26QU.js.gz +0 -0
  228. package/build/runtime-chunk-YULW5JRE.js.br +0 -0
  229. package/build/runtime-chunk-YULW5JRE.js.gz +0 -0
  230. package/build/runtime-classicRuntime-U672GAGM.js.br +0 -0
  231. package/build/runtime-classicRuntime-U672GAGM.js.gz +0 -0
  232. package/build/runtime-cloners-2AC7OZRC.js.br +0 -0
  233. package/build/runtime-cloners-2AC7OZRC.js.gz +0 -0
  234. package/build/runtime-components-L63NUGAO.js.br +0 -0
  235. package/build/runtime-components-L63NUGAO.js.gz +0 -0
  236. package/build/runtime-createDestroy-QHHQ6LYS.js.br +0 -0
  237. package/build/runtime-createDestroy-QHHQ6LYS.js.gz +0 -0
  238. package/build/runtime-dragDrop-YBSWK3ET.js.br +0 -0
  239. package/build/runtime-dragDrop-YBSWK3ET.js.gz +0 -0
  240. package/build/runtime-gameControls-DSJRSTW5.js.br +0 -0
  241. package/build/runtime-gameControls-DSJRSTW5.js.gz +0 -0
  242. package/build/runtime-hair-V4RTCES2.js.br +0 -2
  243. package/build/runtime-hair-V4RTCES2.js.gz +0 -0
  244. package/build/runtime-mergeStaticGeometries-VXENKMD4.js.br +0 -0
  245. package/build/runtime-mergeStaticGeometries-VXENKMD4.js.gz +0 -0
  246. package/build/runtime-miscActions-RPUPHHGJ.js.br +0 -0
  247. package/build/runtime-miscActions-RPUPHHGJ.js.gz +0 -0
  248. package/build/runtime-mouseHover-HG6AHA2L.js.br +0 -0
  249. package/build/runtime-mouseHover-HG6AHA2L.js.gz +0 -0
  250. package/build/runtime-particles-ZHE2MC33.js.br +0 -0
  251. package/build/runtime-particles-ZHE2MC33.js.gz +0 -0
  252. package/build/runtime-paths-GN6E6ZYL.js.br +0 -0
  253. package/build/runtime-paths-GN6E6ZYL.js.gz +0 -0
  254. package/build/runtime-resize-LACR4RFK.js.br +0 -0
  255. package/build/runtime-resize-LACR4RFK.js.gz +0 -0
  256. package/build/runtime-sceneTransition-QLPFYHHY.js.br +0 -0
  257. package/build/runtime-sceneTransition-QLPFYHHY.js.gz +0 -0
  258. package/build/runtime-scroll-WZZBT2XR.js.br +0 -0
  259. package/build/runtime-scroll-WZZBT2XR.js.gz +0 -0
  260. package/build/runtime-shapeBlends-O6ATLCCA.js +0 -1
  261. package/build/runtime-shapeBlends-O6ATLCCA.js.br +0 -0
  262. package/build/runtime-shapeBlends-O6ATLCCA.js.gz +0 -0
  263. package/build/runtime-text-UADJSRL4.js.br +0 -0
  264. package/build/runtime-text-UADJSRL4.js.gz +0 -0
  265. package/build/runtime-textInputs-7U3TTJ4X.js.br +0 -0
  266. package/build/runtime-textInputs-7U3TTJ4X.js.gz +0 -0
  267. package/build/runtime-timeline-JXKHKUAC.js +0 -1
  268. package/build/runtime-timeline-JXKHKUAC.js.br +0 -0
  269. package/build/runtime-timeline-JXKHKUAC.js.gz +0 -0
  270. package/build/runtime-tracking-MC74576T.js.br +0 -0
  271. package/build/runtime-tracking-MC74576T.js.gz +0 -0
  272. package/build/runtime-transitions-S22YS7E6.js.br +0 -0
  273. package/build/runtime-transitions-S22YS7E6.js.gz +0 -0
  274. package/build/runtime-ui2d-EX3RBXPP.js.br +0 -0
  275. package/build/runtime-ui2d-EX3RBXPP.js.gz +0 -0
  276. package/build/runtime-vectorShapes-J5Y3LMND.js.br +0 -0
  277. package/build/runtime-vectorShapes-J5Y3LMND.js.gz +0 -0
  278. package/build/runtime-webgpu-LDZ3N2D5.js.br +0 -0
  279. package/build/runtime-webgpu-LDZ3N2D5.js.gz +0 -0
@@ -1,93 +1,220 @@
1
-
2
1
  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
- })
2
+ return createImageBitmap(new Blob([bytes]))
8
3
  }
9
4
 
10
5
  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));
6
+ return fetch(url)
7
+ .then((response) => {
8
+ if (!response.ok) {
9
+ throw new Error(`Failed to fetch image: ${response.statusText}`)
10
+ }
11
+ return response.blob()
12
+ })
13
+ .then((blob) => createImageBitmap(blob))
19
14
  }
20
15
 
21
16
  // 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
17
 
18
+ let videoFrameSeq = 0
69
19
 
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);
20
+ // Fallback tokens (see `videoFrameToken`) are the media clock offset per element
21
+ // by this stride, so two elements' ranges stay disjoint for any media under ~11.5 days.
22
+ const MEDIA_CLOCK_STRIDE = 1e6
23
+
24
+ // `HTMLMediaElement.HAVE_CURRENT_DATA` — a decoded frame the renderer can sample.
25
+ const HAVE_CURRENT_DATA = 2
26
+
27
+ // Generous, because a slow decode is not a failure — but bounded, because a source
28
+ // the browser silently declines must not wedge the load forever.
29
+ const VIDEO_READY_TIMEOUT_MS = 30000
30
+
31
+ // Maintains a token that changes exactly when the element presents a new frame,
32
+ // so the renderer can tell whether a GPU copy is needed at all.
33
+ //
34
+ // The callback chain re-arms itself and keeps `video` reachable until
35
+ // `disposeVideo` cancels it. It only fires on a presented frame, so a paused or
36
+ // stalled element costs nothing.
37
+ function trackPresentedFrames(video) {
38
+ if (typeof video.requestVideoFrameCallback !== 'function') {
39
+ // No presented-frame signal: `videoFrameToken` falls back to the media clock,
40
+ // offset per element to keep the guarantee below.
41
+ video.hanaClockBase = ++videoFrameSeq * MEDIA_CLOCK_STRIDE
42
+ return
43
+ }
44
+
45
+ // One global sequence, so no two elements ever report the same token: when an
46
+ // asset is replaced, the token the renderer still holds for the displaced
47
+ // element cannot collide with the replacement's.
48
+ video.hanaPresentedFrames = ++videoFrameSeq
49
+ const bump = () => {
50
+ // Disposal detaches the source, which fires `seeked` on the way out.
51
+ if (video.hanaDisposed) return
52
+ video.hanaPresentedFrames = ++videoFrameSeq
53
+ }
54
+
55
+ // A seek repaints a paused element without necessarily running the frame
56
+ // callback, and the video export seeks frame by frame with the element paused —
57
+ // it must never be handed the texture from the previous seek.
58
+ video.addEventListener('seeked', bump)
59
+
60
+ const onFrame = () => {
61
+ bump()
62
+ // Never re-arm a disposed element: that resurrects the cancelled chain.
63
+ if (video.hanaDisposed) return
64
+ video.hanaFrameCallback = video.requestVideoFrameCallback(onFrame)
65
+ }
66
+ video.hanaFrameCallback = video.requestVideoFrameCallback(onFrame)
75
67
  }
76
68
 
69
+ // Read by the renderer once per frame per video. Where
70
+ // `requestVideoFrameCallback` is missing, falls back to the media clock: browsers
71
+ // advance `currentTime` at frame granularity, so it answers the same question. The
72
+ // per-element base keeps the cross-element guarantee across a reload, where
73
+ // `Assets::insert_video` replaces the element under the same id.
74
+ export function videoFrameToken(video) {
75
+ const presented = video.hanaPresentedFrames
76
+ return presented === undefined ? video.hanaClockBase + video.currentTime : presented
77
+ }
77
78
 
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();
79
+ // Only for `Local(bytes)`, which has no URL to stream from. A blob: URL pins its
80
+ // Blob — the whole file — until revoked, so keep it on the element for
81
+ // `disposeVideo` to release.
82
+ function setVideoSourceFromBlob(video, blob) {
83
+ video.hanaObjectUrl = URL.createObjectURL(blob)
84
+ video.src = video.hanaObjectUrl
85
+ }
86
+
87
+ // Releases everything the element holds: the frame-callback chain, the blob: URL
88
+ // mapping, and the buffered media and decoder behind it. Runs from `OwnedVideo`'s
89
+ // `Drop` in `assets.rs`. Idempotent, and each step is independently conditional —
90
+ // an element loaded without a blob: URL still gets the rest of the teardown.
91
+ export function disposeVideo(video) {
92
+ if (video.hanaDisposed) return
93
+ // Set first: the steps below fire events that must not read as a live element.
94
+ video.hanaDisposed = true
95
+
96
+ const callback = video.hanaFrameCallback
97
+ if (callback !== undefined) {
98
+ video.hanaFrameCallback = undefined
99
+ // A throw here must not skip the rest of the teardown.
100
+ if (typeof video.cancelVideoFrameCallback === 'function') {
101
+ video.cancelVideoFrameCallback(callback)
102
+ }
103
+ }
104
+
105
+ const url = video.hanaObjectUrl
106
+ if (url !== undefined) {
107
+ video.hanaObjectUrl = undefined
108
+ URL.revokeObjectURL(url)
109
+ }
110
+
111
+ video.pause()
112
+ // Revoking only drops the URL -> Blob mapping. Detaching the source is what
113
+ // actually releases the media the element has buffered and its decoder.
114
+ video.removeAttribute('src')
115
+ video.load()
116
+ }
117
+
118
+ // Resolves once the element holds a frame the renderer can sample, rejects if it
119
+ // never will. Every branch settles: an unsettled load holds its `PendingLoadGuard`,
120
+ // and headless hosts poll `Assets::pending_loads` to know a document is ready.
121
+ //
122
+ // Readiness is `loadeddata`, not `playing`: the video export drives the element
123
+ // paused, so `playing` never fires there, and a blocked autoplay is not a failure.
124
+ function whenSampleable(video) {
125
+ const mediaError = (prefix) => {
126
+ const err = video.error
127
+ return new Error(err === null ? prefix : `${prefix} (code ${err.code}: ${err.message})`)
128
+ }
129
+ // A rejected load never becomes an `OwnedVideo`, so nothing else releases the
130
+ // element: it would pin its blob: URL for the page lifetime and, if it buffers
131
+ // after a timeout, decode invisibly on loop (`autoplay` and `loop` stay set). The
132
+ // error is built first — `disposeVideo`'s `load()` clears `video.error`.
133
+ const failure = (prefix) => {
134
+ const err = mediaError(prefix)
135
+ disposeVideo(video)
136
+ return err
137
+ }
138
+
139
+ if (video.error !== null) return Promise.reject(failure('video failed to load'))
140
+ if (video.readyState >= HAVE_CURRENT_DATA) return Promise.resolve(video)
141
+
142
+ return new Promise((resolve, reject) => {
143
+ // Armed first so `settle` can clear it; nothing below runs this tick.
144
+ const timer = setTimeout(
145
+ () => settle(reject, failure('video timed out before presenting a frame')),
146
+ VIDEO_READY_TIMEOUT_MS,
147
+ )
148
+ const settle = (finish, value) => {
149
+ clearTimeout(timer)
150
+ video.removeEventListener('loadeddata', onReady)
151
+ video.removeEventListener('canplay', onReady)
152
+ video.removeEventListener('error', onError)
153
+ finish(value)
154
+ }
155
+ const onReady = () => settle(resolve, video)
156
+ const onError = () => settle(reject, failure('video failed to load'))
157
+
158
+ video.addEventListener('loadeddata', onReady)
159
+ // A partly-loaded source can become sampleable without a fresh `loadeddata`.
160
+ video.addEventListener('canplay', onReady)
161
+ video.addEventListener('error', onError)
162
+ })
163
+ }
164
+
165
+ function setupVideo(video) {
166
+ video.preload = 'auto'
167
+ video.autoplay = true //iOs hack to show the first frame
168
+ video.loop = true
169
+ video.muted = true
170
+ video.playsInline = true
171
+ video.currentTime = 0.01
172
+ video.load()
173
+
174
+ video.onloadeddata = () => {
175
+ video.muted = true
176
+ // DOMException: The play() request was interrupted by a new load request.
177
+ // https://developers.google.com/web/updates/2017/06/play-request-was-interrupted
178
+ const playPromise = video.play()
179
+
180
+ if (playPromise !== undefined) {
181
+ playPromise
182
+ .then((_) => {
183
+ // Automatic playback started! Do nothing all good!
184
+ })
185
+ .catch(() => {
186
+ // for some reason the video could not be played (The play() request was interrupted by a new load request.)
187
+ // so let's try to play it again
188
+ video.play()
189
+ })
190
+ .finally(() => {
191
+ video.pause()
85
192
  })
86
- .then(async blob => {
87
- const video = document.createElement('video');
88
- video.src = URL.createObjectURL(blob);
89
- return setupVideo(video);
90
- });
193
+ }
194
+ }
195
+
196
+ trackPresentedFrames(video)
197
+
198
+ return whenSampleable(video)
91
199
  }
92
200
 
201
+ export async function loadVideoFromBytes(bytes) {
202
+ const video = document.createElement('video')
203
+ setVideoSourceFromBlob(video, new Blob([bytes]))
204
+ return setupVideo(video)
205
+ }
93
206
 
207
+ // Streams from `url` instead of fetching it into a Blob first, so the browser can
208
+ // range-request it, playback starts before the last byte lands, and the file never
209
+ // sits in memory whole.
210
+ //
211
+ // `crossOrigin` must be set before `src`: without it a cross-origin element is
212
+ // tainted and every texture upload throws a SecurityError. It costs no reach — the
213
+ // `fetch` this replaces was already a CORS request, so any URL that used to load
214
+ // still does.
215
+ export async function loadVideoFromUrl(url) {
216
+ const video = document.createElement('video')
217
+ video.crossOrigin = 'anonymous'
218
+ video.src = url
219
+ return setupVideo(video)
220
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@splinetool/runtime",
3
- "version": "2.0.8",
3
+ "version": "2.0.10",
4
4
  "description": "Spline is a collaborative design platform for creating production-ready interactive experiences in multiple dimensions. © 2025 Spline, Inc.",
5
5
  "keywords": [
6
6
  "spline",
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{a as t}from"./runtime-chunk-NTUTXO7Q.js";import{b as e}from"./runtime-chunk-CKT62HES.js";import{b as i,c as r,d as s,e as n}from"./runtime-chunk-U4QOT2PX.js";import{E as a,b as h,k as o,o as l}from"./runtime-chunk-VPEJ5BFD.js";import{a as d,b as u}from"./runtime-chunk-ML3Z74BL.js";var c,p,f,x=d((t,e)=>{function i(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,i)}!function(t,e){function i(){this.constructor=t}i.prototype=e.prototype,t.prototype=new i}(i,Error),i.buildMessage=function(t,e){var i,r={literal:function(t){return'"'+n(t.text)+'"'},class:function(t){var e,i="";for(e=0;e<t.parts.length;e++)i+=t.parts[e]instanceof Array?a(t.parts[e][0])+"-"+a(t.parts[e][1]):a(t.parts[e]);return"["+(t.inverted?"^":"")+i+"]"},any:function(t){return"any character"},end:function(t){return"end of input"},other:function(t){return t.description}};function s(t){return t.charCodeAt(0).toString(16).toUpperCase()}function n(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(t){return"\\x0"+s(t)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(t){return"\\x"+s(t)})}function a(t){return t.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(t){return"\\x0"+s(t)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(t){return"\\x"+s(t)})}function h(t){return r[t.type](t)}return"Expected "+function(t){var e,i,r=new Array(t.length);for(e=0;e<t.length;e++)r[e]=h(t[e]);if(r.sort(),r.length>0){for(e=1,i=1;e<r.length;e++)r[e-1]!==r[e]&&(r[i]=r[e],i++);r.length=i}switch(r.length){case 1:return r[0];case 2:return r[0]+" or "+r[1];default:return r.slice(0,-1).join(", ")+", or "+r[r.length-1]}}(t)+" but "+((i=e)?'"'+n(i)+'"':"end of input")+" found."},e.exports={SyntaxError:i,parse:function(t,e){e=void 0!==e?e:{};var r,s={},n={svg_path:xt},a=xt,h=function(t){if(!t)return[];for(var e=[],i=0;i<t.length;i++)e=e.concat.apply(e,t[i]);var r=e[0];return r&&"m"==r.code&&(delete r.relative,r.code="M"),e},o=function(t,e){return function(t,e){if(!e)return[t];for(var i=[t],r=0,s=e.length;r<s;r++)i[r+1]=e[r][1];return i}(t,e)},l=/^[Mm]/,d=ut(["M","m"],!1,!1),u=function(t,e,i){var r=jt(t,[e]);return i&&(r=r.concat(jt("M"==t?"L":"l",i[1]))),r},c=/^[Zz]/,p=ut(["Z","z"],!1,!1),f=function(){return jt("Z")},x=/^[Ll]/,g=ut(["L","l"],!1,!1),m=function(t,e){return jt(t,e)},y=/^[Hh]/,v=ut(["H","h"],!1,!1),w=function(t,e){return jt(t,e.map(function(t){return{x:t}}))},_=/^[Vv]/,S=ut(["V","v"],!1,!1),B=function(t,e){return jt(t,e.map(function(t){return{y:t}}))},b=/^[Cc]/,M=ut(["C","c"],!1,!1),C=function(t,e,i){return{x1:t.x,y1:t.y,x2:e.x,y2:e.y,x:i.x,y:i.y}},k=/^[Ss]/,A=ut(["S","s"],!1,!1),T=function(t,e){return{x2:t.x,y2:t.y,x:e.x,y:e.y}},P=/^[Qq]/,z=ut(["Q","q"],!1,!1),R=function(t,e){return{x1:t.x,y1:t.y,x:e.x,y:e.y}},E=/^[Tt]/,O=ut(["T","t"],!1,!1),H=/^[Aa]/,L=ut(["A","a"],!1,!1),F=function(t,e,i,r,s,n){return{rx:t,ry:e,xAxisRotation:i,largeArc:r,sweep:s,x:n.x,y:n.y}},U=function(t,e){return{x:t,y:e}},N=function(t){return 1*t},j=function(t){return 1*t.join("")},I=/^[01]/,D=ut(["0","1"],!1,!1),W=function(t){return"1"==t},X=function(){return""},V=",",q=dt(",",!1),Y=function(t){return t.join("")},$=".",G=dt(".",!1),Q=/^[eE]/,J=ut(["e","E"],!1,!1),Z=/^[+\-]/,K=ut(["+","-"],!1,!1),tt=/^[0-9]/,et=ut([["0","9"]],!1,!1),it=function(t){return t.join("")},rt=/^[ \t\n\r]/,st=ut([" ","\t","\n","\r"],!1,!1),nt=0,at=[{line:1,column:1}],ht=0,ot=[],lt=0;if("startRule"in e){if(!(e.startRule in n))throw new Error("Can't start parsing from rule \""+e.startRule+'".');a=n[e.startRule]}function dt(t,e){return{type:"literal",text:t,ignoreCase:e}}function ut(t,e,i){return{type:"class",parts:t,inverted:e,ignoreCase:i}}function ct(e){var i,r=at[e];if(r)return r;for(i=e-1;!at[i];)i--;for(r={line:(r=at[i]).line,column:r.column};i<e;)10===t.charCodeAt(i)?(r.line++,r.column=1):r.column++,i++;return at[e]=r,r}function pt(t,e){var i=ct(t),r=ct(e);return{start:{offset:t,line:i.line,column:i.column},end:{offset:e,line:r.line,column:r.column}}}function ft(t){nt<ht||(nt>ht&&(ht=nt,ot=[]),ot.push(t))}function xt(){var t,e,i,r,n;for(t=nt,e=[],i=Ot();i!==s;)e.push(i),i=Ot();if(e!==s)if(i=function(){var t,e,i,r,n,a;if(t=nt,(e=gt())!==s){for(i=[],r=nt,n=[],a=Ot();a!==s;)n.push(a),a=Ot();for(n!==s&&(a=gt())!==s?r=n=[n,a]:(nt=r,r=s);r!==s;){for(i.push(r),r=nt,n=[],a=Ot();a!==s;)n.push(a),a=Ot();n!==s&&(a=gt())!==s?r=n=[n,a]:(nt=r,r=s)}i!==s?t=e=o(e,i):(nt=t,t=s)}else nt=t,t=s;return t}(),i===s&&(i=null),i!==s){for(r=[],n=Ot();n!==s;)r.push(n),n=Ot();r!==s?t=e=h(i):(nt=t,t=s)}else nt=t,t=s;else nt=t,t=s;return t}function gt(){var e,i,r,n,a,h;if(e=nt,i=function(){var e,i,r,n,a,h,o;if(e=nt,l.test(t.charAt(nt))?(i=t.charAt(nt),nt++):(i=s,0===lt&&ft(d)),i!==s){for(r=[],n=Ot();n!==s;)r.push(n),n=Ot();r!==s&&(n=bt())!==s?(a=nt,(h=At())===s&&(h=null),h!==s&&(o=yt())!==s?a=h=[h,o]:(nt=a,a=s),a===s&&(a=null),a!==s?e=i=u(i,n,a):(nt=e,e=s)):(nt=e,e=s)}else nt=e,e=s;return e}(),i!==s){for(r=[],n=nt,a=[],h=Ot();h!==s;)a.push(h),h=Ot();for(a!==s&&(h=mt())!==s?n=a=[a,h]:(nt=n,n=s);n!==s;){for(r.push(n),n=nt,a=[],h=Ot();h!==s;)a.push(h),h=Ot();a!==s&&(h=mt())!==s?n=a=[a,h]:(nt=n,n=s)}r!==s?e=i=o(i,r):(nt=e,e=s)}else nt=e,e=s;return e}function mt(){var e,i;return c.test(t.charAt(nt))?(i=t.charAt(nt),nt++):(i=s,0===lt&&ft(p)),i!==s&&(i=f()),(e=i)===s&&(e=function(){var e,i,r,n;if(e=nt,x.test(t.charAt(nt))?(i=t.charAt(nt),nt++):(i=s,0===lt&&ft(g)),i!==s){for(r=[],n=Ot();n!==s;)r.push(n),n=Ot();r!==s&&(n=yt())!==s?e=i=m(i,n):(nt=e,e=s)}else nt=e,e=s;return e}())===s&&(e=function(){var e,i,r,n;if(e=nt,y.test(t.charAt(nt))?(i=t.charAt(nt),nt++):(i=s,0===lt&&ft(v)),i!==s){for(r=[],n=Ot();n!==s;)r.push(n),n=Ot();r!==s&&(n=vt())!==s?e=i=w(i,n):(nt=e,e=s)}else nt=e,e=s;return e}())===s&&(e=function(){var e,i,r,n;if(e=nt,_.test(t.charAt(nt))?(i=t.charAt(nt),nt++):(i=s,0===lt&&ft(S)),i!==s){for(r=[],n=Ot();n!==s;)r.push(n),n=Ot();r!==s&&(n=vt())!==s?e=i=B(i,n):(nt=e,e=s)}else nt=e,e=s;return e}())===s&&(e=function(){var e,i,r,n;if(e=nt,b.test(t.charAt(nt))?(i=t.charAt(nt),nt++):(i=s,0===lt&&ft(M)),i!==s){for(r=[],n=Ot();n!==s;)r.push(n),n=Ot();r!==s?(n=function(){var t,e,i,r,n,a;if(t=nt,(e=wt())!==s){for(i=[],r=nt,(n=At())===s&&(n=null),n!==s&&(a=wt())!==s?r=n=[n,a]:(nt=r,r=s);r!==s;)i.push(r),r=nt,(n=At())===s&&(n=null),n!==s&&(a=wt())!==s?r=n=[n,a]:(nt=r,r=s);i!==s?t=e=o(e,i):(nt=t,t=s)}else nt=t,t=s;return t}(),n!==s?e=i=m(i,n):(nt=e,e=s)):(nt=e,e=s)}else nt=e,e=s;return e}())===s&&(e=function(){var e,i,r,n;if(e=nt,k.test(t.charAt(nt))?(i=t.charAt(nt),nt++):(i=s,0===lt&&ft(A)),i!==s){for(r=[],n=Ot();n!==s;)r.push(n),n=Ot();r!==s?(n=function(){var t,e,i,r,n,a;if(t=nt,(e=_t())!==s){for(i=[],r=nt,(n=At())===s&&(n=null),n!==s&&(a=_t())!==s?r=n=[n,a]:(nt=r,r=s);r!==s;)i.push(r),r=nt,(n=At())===s&&(n=null),n!==s&&(a=_t())!==s?r=n=[n,a]:(nt=r,r=s);i!==s?t=e=o(e,i):(nt=t,t=s)}else nt=t,t=s;return t}(),n!==s?e=i=m(i,n):(nt=e,e=s)):(nt=e,e=s)}else nt=e,e=s;return e}())===s&&(e=function(){var e,i,r,n;if(e=nt,P.test(t.charAt(nt))?(i=t.charAt(nt),nt++):(i=s,0===lt&&ft(z)),i!==s){for(r=[],n=Ot();n!==s;)r.push(n),n=Ot();r!==s?(n=function(){var t,e,i,r,n,a;if(t=nt,(e=St())!==s){for(i=[],r=nt,(n=At())===s&&(n=null),n!==s&&(a=St())!==s?r=n=[n,a]:(nt=r,r=s);r!==s;)i.push(r),r=nt,(n=At())===s&&(n=null),n!==s&&(a=St())!==s?r=n=[n,a]:(nt=r,r=s);i!==s?t=e=o(e,i):(nt=t,t=s)}else nt=t,t=s;return t}(),n!==s?e=i=m(i,n):(nt=e,e=s)):(nt=e,e=s)}else nt=e,e=s;return e}())===s&&(e=function(){var e,i,r,n;if(e=nt,E.test(t.charAt(nt))?(i=t.charAt(nt),nt++):(i=s,0===lt&&ft(O)),i!==s){for(r=[],n=Ot();n!==s;)r.push(n),n=Ot();r!==s?(n=function(){var t,e,i,r,n,a;if(t=nt,(e=bt())!==s){for(i=[],r=nt,(n=At())===s&&(n=null),n!==s&&(a=bt())!==s?r=n=[n,a]:(nt=r,r=s);r!==s;)i.push(r),r=nt,(n=At())===s&&(n=null),n!==s&&(a=bt())!==s?r=n=[n,a]:(nt=r,r=s);i!==s?t=e=o(e,i):(nt=t,t=s)}else nt=t,t=s;return t}(),n!==s?e=i=m(i,n):(nt=e,e=s)):(nt=e,e=s)}else nt=e,e=s;return e}())===s&&(e=function(){var e,i,r,n;if(e=nt,H.test(t.charAt(nt))?(i=t.charAt(nt),nt++):(i=s,0===lt&&ft(L)),i!==s){for(r=[],n=Ot();n!==s;)r.push(n),n=Ot();r!==s?(n=function(){var t,e,i,r,n,a;if(t=nt,(e=Bt())!==s){for(i=[],r=nt,(n=At())===s&&(n=null),n!==s&&(a=Bt())!==s?r=n=[n,a]:(nt=r,r=s);r!==s;)i.push(r),r=nt,(n=At())===s&&(n=null),n!==s&&(a=Bt())!==s?r=n=[n,a]:(nt=r,r=s);i!==s?t=e=o(e,i):(nt=t,t=s)}else nt=t,t=s;return t}(),n!==s?e=i=m(i,n):(nt=e,e=s)):(nt=e,e=s)}else nt=e,e=s;return e}()),e}function yt(){var t,e,i,r,n,a;if(t=nt,(e=bt())!==s){for(i=[],r=nt,(n=At())===s&&(n=null),n!==s&&(a=bt())!==s?r=n=[n,a]:(nt=r,r=s);r!==s;)i.push(r),r=nt,(n=At())===s&&(n=null),n!==s&&(a=bt())!==s?r=n=[n,a]:(nt=r,r=s);i!==s?t=e=o(e,i):(nt=t,t=s)}else nt=t,t=s;return t}function vt(){var t,e,i,r,n,a;if(t=nt,(e=Ct())!==s){for(i=[],r=nt,(n=At())===s&&(n=null),n!==s&&(a=Ct())!==s?r=n=[n,a]:(nt=r,r=s);r!==s;)i.push(r),r=nt,(n=At())===s&&(n=null),n!==s&&(a=Ct())!==s?r=n=[n,a]:(nt=r,r=s);i!==s?t=e=o(e,i):(nt=t,t=s)}else nt=t,t=s;return t}function wt(){var t,e,i,r,n,a;return t=nt,(e=bt())!==s?((i=At())===s&&(i=null),i!==s&&(r=bt())!==s?((n=At())===s&&(n=null),n!==s&&(a=bt())!==s?t=e=C(e,r,a):(nt=t,t=s)):(nt=t,t=s)):(nt=t,t=s),t}function _t(){var t,e,i,r;return t=nt,(e=bt())!==s?((i=At())===s&&(i=null),i!==s&&(r=bt())!==s?t=e=T(e,r):(nt=t,t=s)):(nt=t,t=s),t}function St(){var t,e,i,r;return t=nt,(e=bt())!==s?((i=At())===s&&(i=null),i!==s&&(r=bt())!==s?t=e=R(e,r):(nt=t,t=s)):(nt=t,t=s),t}function Bt(){var t,e,i,r,n,a,h,o,l,d,u;return t=nt,(e=Mt())!==s?((i=At())===s&&(i=null),i!==s&&(r=Mt())!==s?((n=At())===s&&(n=null),n!==s&&(a=Ct())!==s&&At()!==s&&(h=kt())!==s?((o=At())===s&&(o=null),o!==s&&(l=kt())!==s?((d=At())===s&&(d=null),d!==s&&(u=bt())!==s?t=e=F(e,r,a,h,l,u):(nt=t,t=s)):(nt=t,t=s)):(nt=t,t=s)):(nt=t,t=s)):(nt=t,t=s),t}function bt(){var t,e,i,r;return t=nt,(e=Ct())!==s?((i=At())===s&&(i=null),i!==s&&(r=Ct())!==s?t=e=U(e,r):(nt=t,t=s)):(nt=t,t=s),t}function Mt(){var t;return(t=Pt())===s&&(t=Et()),t!==s&&(t=N(t)),t}function Ct(){var t,e,i;return t=nt,(e=Rt())===s&&(e=null),e!==s&&(i=Pt())!==s?t=e=[e,i]:(nt=t,t=s),t===s&&(t=nt,(e=Rt())===s&&(e=null),e!==s&&(i=Et())!==s?t=e=[e,i]:(nt=t,t=s)),t!==s&&(t=j(t)),t}function kt(){var e;return I.test(t.charAt(nt))?(e=t.charAt(nt),nt++):(e=s,0===lt&&ft(D)),e!==s&&(e=W(e)),e}function At(){var t,e,i,r,n;if(t=nt,e=[],(i=Ot())!==s)for(;i!==s;)e.push(i),i=Ot();else e=s;if(e!==s)if((i=Tt())===s&&(i=null),i!==s){for(r=[],n=Ot();n!==s;)r.push(n),n=Ot();r!==s?t=e=[e,i,r]:(nt=t,t=s)}else nt=t,t=s;else nt=t,t=s;if(t===s){if(t=nt,e=nt,(i=Tt())!==s){for(r=[],n=Ot();n!==s;)r.push(n),n=Ot();r!==s?e=i=[i,r]:(nt=e,e=s)}else nt=e,e=s;e!==s&&(e=X()),t=e}return t}function Tt(){var e;return 44===t.charCodeAt(nt)?(e=V,nt++):(e=s,0===lt&&ft(q)),e}function Pt(){var e,i,r;return e=nt,i=function(){var e,i,r,n;return e=nt,(i=Et())===s&&(i=null),i!==s?(46===t.charCodeAt(nt)?(r=$,nt++):(r=s,0===lt&&ft(G)),r!==s&&(n=Et())!==s?e=i=[i,r,n]:(nt=e,e=s)):(nt=e,e=s),e===s&&(e=nt,(i=Et())!==s?(46===t.charCodeAt(nt)?(r=$,nt++):(r=s,0===lt&&ft(G)),r!==s?e=i=[i,r]:(nt=e,e=s)):(nt=e,e=s)),e!==s&&(e=Y(e)),e}(),i!==s?((r=zt())===s&&(r=null),r!==s?e=i=[i,r]:(nt=e,e=s)):(nt=e,e=s),e===s&&(e=nt,(i=Et())!==s&&(r=zt())!==s?e=i=[i,r]:(nt=e,e=s)),e!==s&&(e=Y(e)),e}function zt(){var e,i,r,n;return e=nt,Q.test(t.charAt(nt))?(i=t.charAt(nt),nt++):(i=s,0===lt&&ft(J)),i!==s?((r=Rt())===s&&(r=null),r!==s&&(n=Et())!==s?e=i=[i,r,n]:(nt=e,e=s)):(nt=e,e=s),e!==s&&(e=Y(e)),e}function Rt(){var e;return Z.test(t.charAt(nt))?(e=t.charAt(nt),nt++):(e=s,0===lt&&ft(K)),e}function Et(){var e,i;if(e=[],tt.test(t.charAt(nt))?(i=t.charAt(nt),nt++):(i=s,0===lt&&ft(et)),i!==s)for(;i!==s;)e.push(i),tt.test(t.charAt(nt))?(i=t.charAt(nt),nt++):(i=s,0===lt&&ft(et));else e=s;return e!==s&&(e=it(e)),e}function Ot(){var e;return rt.test(t.charAt(nt))?(e=t.charAt(nt),nt++):(e=s,0===lt&&ft(st)),e!==s&&(e=X()),e}var Ht,Lt,Ft,Ut={m:"moveto",l:"lineto",h:"horizontal lineto",v:"vertical lineto",c:"curveto",s:"smooth curveto",q:"quadratic curveto",t:"smooth quadratic curveto",a:"elliptical arc",z:"closepath"};for(var Nt in Ut)Ut[Nt.toUpperCase()]=Ut[Nt];function jt(t,e){e||(e=[{}]);for(var i=e.length;i--;){var r={code:t,command:Ut[t]};for(var s in t==t.toLowerCase()&&(r.relative=!0),e[i])r[s]=e[i][s];e[i]=r}return e}if((r=a())!==s&&nt===t.length)return r;throw r!==s&&nt<t.length&&ft({type:"end"}),Ht=ot,Lt=ht<t.length?t.charAt(ht):null,Ft=ht<t.length?pt(ht,ht+1):pt(ht,ht),new i(i.buildMessage(Ht,Lt),Ht,Lt,Ft)}}}),g=d((t,e)=>{var i=x().parse;i.parseSVG=i,i.makeAbsolute=function(t){var e,i={x:0,y:0},r={x:"x0",y:"y0",x1:"x0",y1:"y0",x2:"x0",y2:"y0"};return t.forEach(function(t){for(var s in"moveto"===t.command&&(e=t),t.x0=i.x,t.y0=i.y,r)s in t&&(t[s]+=t.relative?t[r[s]]:0);"x"in t||(t.x=i.x),"y"in t||(t.y=i.y),t.relative=!1,t.code=t.code.toUpperCase(),"closepath"==t.command&&(t.x=e.x,t.y=e.y),i=t}),t},e.exports=i});function m(){if(!p){if(!c)return Promise.reject(new Error("HanaRenderer: no Hana UI loader registered. Call setHanaUILoader() from the host app before initializing a HanaRenderer."));(p=c()).catch(()=>{p=void 0})}return p}function y(t){f=t}function v(){return c||(c=async()=>async function(t,e){return await t.default(e?{module_or_path:e}:void 0),Object.getOwnPropertyDescriptor(t.Engine.prototype,"scene")||Object.defineProperty(t.Engine.prototype,"scene",{get:function(){let e=Object.create(t.SceneController.prototype);return e.__wbg_ptr=this.__wbg_ptr,e}}),{createEngine:e=>t.Engine.create(e,JSON.parse('{"schema":13,"scenes":[{"fi":0,"id":"32603ebf4-bd9a-54ba-c1e9-6645c3ee7a53","data":{"name":"Page","backgroundColor":[0,0,0,0],"objects":[]}}],"assets":{"images":{},"videos":{},"colors":{},"audios":{},"numbers":{},"booleans":{},"strings":{},"dynamicVariables":{"counters":{},"randoms":{},"timers":{},"times":{}},"fonts":{},"animations":{},"geometries":{},"emojiArt":{}},"publish":{"logo":true,"presentationSizing":"Contain","allowPageScroll":true,"showBackground":true},"framePublish":{},"components":{}}'),!0)}}(await import("./hana-ui.js"),f??function(){let t=typeof process<"u"?"2.0.8":void 0;return`https://cdn.spline.design/@splinetool/runtime${t?`@${t}`:""}/build/hana-ui.wasm`}())),m().then(()=>{})}var w=Math.PI/180;Math.PI;var _,S=1e-10;function B(t,e){let[[i,r],[s,n]]=t,[[a,h],[o,l]]=e,d=(i-s)*(h-l)-(r-n)*(a-o);if(0===d)return!1;let u=((i-a)*(h-l)-(r-h)*(a-o))/d,c=-((i-s)*(r-h)-(r-n)*(i-a))/d;return u>=0&&u<=1&&c>=0&&c<=1}(t=>{function e(t){return[t[0],t[3],t[1],t[4],t[2],t[5]]}t.identity=function(){return[1,0,0,0,1,0,0,0,1]},t.copy=function(e,i=t.identity()){for(let t=0,r=e.length;t<r;t++)i[t]=e[t];return i},t.create=function(e,i,r,s,n,a){return t.setAbcdef(t.identity(),e,i,r,s,n,a)},t.setAbcdef=function(t,e,i,r,s,n,a){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t[4]=s,t[5]=a,t},t.append=function(i,r){let[s,n,a,h,o,l]=e(i),[d,u,c,p,f,x]=e(r),g=d*s+u*a,m=d*n+u*h,y=c*s+p*a,v=c*n+p*h,w=f*s+x*a+o,_=f*n+x*h+l;return t.create(g,m,y,v,w,_)},t.prepend=function(i,r){let[s,n,a,h,o,l]=e(i),[d,u,c,p,f,x]=e(r),g=s,m=n,y=a,v=h;(1!==d||0!==u||0!==c||1!==p)&&(g=s*d+n*c,m=s*u+n*p,y=a*d+h*c,v=a*u+h*p);let w=o*d+l*c+f,_=o*u+l*p+x;return t.create(g,m,y,v,w,_)},t.getAbcdef=e,t.invert=function(e){let[i,r,s,n,a,h]=t.getAbcdef(e),o=i*n-r*s,l=n/o,d=-r/o,u=-s/o,c=i/o,p=(s*h-n*a)/o,f=-(i*h-r*a)/o;return t.create(l,d,u,c,p,f)},t.apply=function([e,i],r){let[s,n,a,h,o,l]=t.getAbcdef(r);return[s*e+a*i+o,n*e+h*i+l]},t.applyInverse=function(e,i){let[r,s,n,a,h,o]=t.getAbcdef(i),l=1/(r*a+n*-s),[d,u]=e;return[a*l*d+-n*l*u+(o*n-h*a)*l,r*l*u+-s*l*d+(-o*r+h*s)*l]},t.scale=function(e,i,r=i){let[s,n,a,h,o,l]=t.getAbcdef(e);return t.setAbcdef(e,s*i,n*r,a*i,h*r,o*i,l*r),e},t.rotate=function(e,i){let r=Math.cos(i),s=Math.sin(i),[n,a,h,o,l,d]=t.getAbcdef(e);return t.setAbcdef(e,n*r-a*s,n*s+a*r,h*r-o*s,h*s+o*r,l*r-d*s,l*s+d*r),e},t.rotateAround=function(e,i,r){let[s,n]=r,a=t.translate(e,-s,-n);return a=t.rotate(a,i),a=t.translate(a,s,n),a},t.translate=function(e,i,r){let[s,n,a,h,o,l]=t.getAbcdef(e);return t.setAbcdef(e,s,n,a,h,o+i,l+r),e},t.setTranslate=function(e,i,r){let[s,n,a,h]=t.getAbcdef(e);return t.setAbcdef(e,s,n,a,h,i,r),e},t.setPosition=function(e,i,r){let[s,n,a,h]=t.getAbcdef(e);return t.setAbcdef(e,s,n,a,h,i,r),e},t.getScale=function(e){let[i,r,s,n]=t.getAbcdef(e);return[Math.sqrt(i*i+r*r),Math.sqrt(s*s+n*n)]},t.getPosition=function(e){let[,,,,i,r]=t.getAbcdef(e);return[i,r]},t.getRotation=function(e,i){return t.decompose(e,i).rotation},t.decompose=function(e,i){let[r,s,n,a,h,o]=t.getAbcdef(e),{rotation:l,scale:d,shear:u}=function(t){let e=t[0][0],i=t[1][0],r=t[0][1],s=t[1][1],n=Math.sqrt(e*e+i*i),a=n>S?e/n:1,h=n>S?i/n:0,o=a*e+h*i,l=a*s-h*r,d=a*r+h*s;return{rotation:Math.atan2(h,a),scale:[o,l],shear:[Math.abs(l)>S?d/l:0,0]}}([[r,n],[s,a]]);return{position:[h+(i[0]*r+i[1]*n)-i[0],o+(i[0]*s+i[1]*a)-i[1]],scale:d,rotation:l,shear:u,pivot:i}},t.compose=function(e,i,r,s,n=[0,0]){let[a,h]=e,[o,l]=s,[d,u,c,p]=function({rotation:t,scale:e,shear:i}){let r=Math.cos(t),s=Math.sin(t),n=i[0]*e[1],a=i[1]*e[0];return[r*e[0]-s*a,s*e[0]+r*a,r*n-s*e[1],s*n+r*e[1]]}({rotation:r,scale:i,shear:n}),f=a-(o*d+l*c)+o,x=h-(o*u+l*p)+l;return t.create(d,u,c,p,f,x)}})(_||(_={}));var b,M,C,k,A,T=[[-1,1],[-1,-1],[1,-1],[1,1]],P=(t,e,i)=>{let r=t.getCenter(),s=t.getHalfSize(),n=_.append(e,t.worldMatrix);0===s[0]&&0===s[1]?i.push(_.apply(r,n)):T.forEach(t=>{let e=[t[0]*s[0]+r[0],t[1]*s[1]+r[1]];i.push(_.apply(e,n))})},z=class{constructor(){this.matrix=_.identity(),this.min=[1/0,1/0],this.max=[-1/0,-1/0],this.vertices=[],this.edges=[]}setFromObjectSize(t,e=!1){t.updateWorldMatrix(),this.makeEmpty(),_.copy(t.worldMatrix,this.matrix);let i=_.invert(t.worldMatrix);this.expandByObjectSize(t,i,e)}expandByObjectSize(t,e,i=!1){let r=[],s=!0===t.isBaseGroup?t:void 0;!0===i&&void 0!==s?s.traverse(t=>{t.visible&&P(t,e,r)}):P(t,e,r),this.setFromPoints(r)}setFromSize(t,e,i){this.makeEmpty(),_.copy(i,this.matrix),this.expandBySize(t,e,i)}expandBySize(t,e,i){[_.apply([0,0],i),_.apply([0,e],i),_.apply([t,e],i),_.apply([t,0],i)].forEach(t=>this.expandByPoint(t))}getCenter(){let[t,e]=this.min,[i,r]=this.getHalfSize();return _.apply([t+i,e+r],this.matrix)}getSize(){return[this.max[0]-this.min[0],this.max[1]-this.min[1]]}getHalfSize(){return[.5*(this.max[0]-this.min[0]),.5*(this.max[1]-this.min[1])]}makeEmpty(){this.min=[1/0,1/0],this.max=[-1/0,-1/0]}setFromPoints(t){this.makeEmpty();for(let e of t)this.expandByPoint(e)}expandByPoint(t){this.min=[Math.min(this.min[0],t[0]),Math.min(this.min[1],t[1])],this.max=[Math.max(this.max[0],t[0]),Math.max(this.max[1],t[1])]}computeVertices(){let[t,e]=this.getHalfSize(),i=this.getCenter(),[r,s,n,a]=_.getAbcdef(this.matrix),h=_.create(r,s,n,a,i[0],i[1]);this.vertices=T.map(([i,r])=>_.apply([i*t,r*e],h))}computeEdges(){this.edges=[];for(let t=0,e=this.vertices.length;t<e;++t)this.edges.push([this.vertices[t],this.vertices[(t+1)%e]])}project(t,e){let i=this.matrix;return e&&(i=_.append(e.worldMatrix,i)),_.applyInverse(t,i)}intersects(t,e,i){return this.intersectsInLocalSpace(...this.project([t,e],i))}intersectsInLocalSpace(t,e){let{min:i,max:r}=this;return t>=i[0]&&t<=r[0]&&e>=i[1]&&e<=r[1]}containsPoint(t){let[e,i]=t,[r,s]=this.min,[n,a]=this.max;return e>=r&&e<=n&&i>=s&&i<=a}intersectsBBox2D(t){for(let e=0,i=this.edges.length;e<i;e++){let i=this.edges[e];for(let e=0,r=t.edges.length;e<r;e++)if(B(i,t.edges[e]))return!0}for(let e=0,i=t.vertices.length;e<i;e++){let i=t.vertices[e];if(this.containsPoint(i))return!0}return!1}ensureMinMax(){let t=this.min,e=this.max;this.min=[Math.min(t[0],e[0]),Math.min(t[1],e[1])],this.max=[Math.max(t[0],e[0]),Math.max(t[1],e[1])]}copy(t){this.min=[...t.min],this.max=[...t.max],_.copy(t.matrix,this.matrix),this.computeVertices(),this.computeEdges()}clone(){let t=new z;return t.copy(this),t}},R=class{constructor(e,i,r){this.uuid=e,this.data=i,this.isObject2D=!0,this.localMatrix=_.identity(),this.worldMatrix=_.identity(),this.ignoreCameraZoom=!1,this.visible=!0,this._singleBBox=new z,this._recursiveBBox=new z,this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.stateSelection=null,this.prevState=null,this.currentState=null,this.reversibleToState=null,this.currentTransitionEvent=null,this.previousAction=null,this.name="",this.position=[0,0],this.scale=[1,1],this.rotation=0,this.shear=[0,0],this.emitter=t(),this.dpr=r.dpr??1,this.dataPatched=i}project(t,e){let i=this.worldMatrix;return e&&(i=_.append(e.worldMatrix,i)),_.applyInverse(t,i)}intersects(t,e,i,r=!1){return this.visible&&!this.data.raycastLock&&this.intersectsInLocalSpace(...this.project([t,e],i),r)}intersectsInLocalSpace(t,e,i=!1){let{min:r,max:s}=i?this.recursiveBBox:this.singleBBox;return t>=r[0]&&t<=s[0]&&e>=r[1]&&e<=s[1]}applyTransforms(t){t.setTransform(this.worldMatrix,this.ignoreCameraZoom)}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges()),this._recursiveBBox}updateLocalMatrix(){this.localMatrix=_.compose(this.position,this.scale,this.rotation*w,n.getPivot(this.dataPatched),this.shear)}updateWorldMatrix(t,e,i){let r=this.parent;e&&null!=r&&r.updateWorldMatrix(t,!0,!1),t&&this.updateLocalMatrix(),this.parent?this.worldMatrix=_.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=_.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return n.getPivot(this.data)}getCenter(){return[0,0]}getHalfSize(){return[0,0]}get id(){return this.uuid}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{t.resetBBoxNeedsUpdateSelf()})}updateTransformState(t){let e=!1;void 0!==t.position&&(e=!0,this.position=t.position),void 0!==t.rotation&&(e=!0,this.rotation=t.rotation),void 0!==t.scale&&(e=!0,this.scale=t.scale),void 0!==t.shear&&(e=!0,this.shear=t.shear),e&&(this.updateWorldMatrix(!0,!1,!0),this.resetBBoxNeedsUpdate())}updateByOp(t,r,s){0===t.type&&void 0!==t.props.visible&&(this.visible=t.props.visible),this.data=r,this.data=r;let n=t,a=e(t.path,["states","*"]);if(null!==a){if(0===t.type){let[e]=a;if(this?.stateSelection===e){let e={...t.props};if(delete e.name,Object.values(t.props).some(t=>void 0===t)){let i=this.data;if(void 0!==i){let r=l.zoom(i,t.path.slice(2));if(r)for(let i in t.props)void 0===t.props[i]&&i in r&&(e[i]=r[i])}}n={...t,props:e,path:t.path.slice(2)}}}}else if(0===t.type){let e=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(void 0!==e){if(void 0!==t.props.name&&e.name){let{name:t,...i}=e;e=i}let i=l.removeOverridden(t.path,t.props,e);n={...t,props:i}}}this.updateByPatchedOpBase(n,i.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),s)}changeSelectedState(t,e,r=!1){if(0!==this.data.states.length||r){for(let t of this.data.states)i.toOps(this.data,t.data).forEach(t=>{let i=o.replaceProps(t,this.data);this.dataPatched=this.data,this.updateByPatchedOp(i,this.data,e)});if(null!==t){let r=this.data.states.data(t);r&&(this.dataPatched=i.patch(this.data,r),i.toOps(this.data,r).forEach(t=>{this.updateByPatchedOp(t,this.dataPatched,e)}))}r&&this.updateTransformState(this.dataPatched),this.stateSelection=t}}updateState(t,e){void 0!==t.name&&(this.name=t.name),void 0!==t.visible&&(this.visible=t.visible),this.updateTransformState(t)}updateByPatchedOpBase(t,e,i){this.dataPatched=e,this.updateByPatchedOp(t,e,i)}updateByPatchedOp(t,e,i){0===t.path.length&&0===t.type&&this.updateState(t.props,i),this.requestRender()}traverseFrameAncestors(t){this.traverseAncestors(e=>{"frame2d"===e.data.type&&t(e)})}traverseAncestors(t){let e=this.parent;for(;e;)t(e),e=e.parent}requestRender(){this.traverseFrameAncestors(t=>{t.requestRender()})}clone(t){let e=new R(this.uuid,this.data,t);return e.parent=void 0,e}addEventListener(t,e){this.emitter.on(t,e)}removeEventListener(t,e){this.emitter.off(t,e)}dispatchEvent(t){this.emitter.emit(t.type,{...t,target:t.target??this})}traverseSortNextHelper(){let t=this.parent;if(t){let e=t.children;if(e){let i=e.indexOf(this)+1;return e[i]?e[i]:t.traverseSortNextHelper()}}}sortNext(){let t=this.children;return t&&t.length>0&&t[0]?t[0]:this.traverseSortNextHelper()}isDescendantOf(t){t instanceof R&&(t=t.uuid);let e=this;for(;e.parent;){if(e.parent.uuid===t)return!0;e=e.parent}return!1}},E=class{constructor(t,e,i){this.uuid=t,this.data=e,this.enabled=!1,this.color=a.transparent,this.blurRadius=0,this.offset=[0,0],this.spread=0,this.update(e)}update(t){void 0!==t.color&&(this.color=t.color),void 0!==t.enabled&&(this.enabled=t.enabled),void 0!==t.blurRadius&&(this.blurRadius=t.blurRadius),void 0!==t.offset&&(this.offset=t.offset),void 0!==t.spread&&(this.spread=t.spread)}},O=class{constructor(t,e,i){this.uuid=t,this.data=e,this.enabled=!1,this.radius=0,this.update(e)}update(t){void 0!==t.enabled&&(this.enabled=t.enabled),void 0!==t.radius&&(this.radius=t.radius)}},H=class{constructor(t,e,i){this.uuid=t,this.data=e,this.enabled=!1,this.color=a.transparent,this.update(e)}update(t){void 0!==t.enabled&&(this.enabled=t.enabled),void 0!==t.color&&(this.color=t.color)}},L=class{constructor(t,e,i){this.uuid=t,this.data=e,this.enabled=!1,this.color=a.transparent,this.thickness=0,this.mode="inside",this.update(e)}update(t){void 0!==t.enabled&&(this.enabled=t.enabled),void 0!==t.color&&(this.color=t.color),void 0!==t.thickness&&(this.thickness=t.thickness),void 0!==t.mode&&(this.mode=t.mode)}},F=class extends R{constructor(t,e,i){super(t,e,i),this.uuid=t,this.data=e,this.autoClose=!0,this.fill=new H(t+"-fill",e.fill,i),this.stroke=new L(t+"-stroke",e.stroke,i),this.dropShadow=new E(t+"-dropShadow",e.dropShadow,i),this.innerShadow=new E(t+"-innerShadow",e.innerShadow,i),this.backgroundBlur=new O(t+"-backgroundBlur",e.backgroundBlur,i),this.layerBlur=new O(t+"-layerBlur",e.layerBlur,i)}applyFillStroke(t){t.fillColor=this.fill.enabled?this.fill.color:a.transparent,t.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:a.transparent,t.strokeMode=this.stroke.mode,t.lineWidth=this.stroke.thickness}applyFilters(t){this.layerBlur.enabled?t.layerBlur=5*this.layerBlur.radius:t.layerBlur=0,this.backgroundBlur.enabled?t.backgroundBlur=5*this.backgroundBlur.radius:t.backgroundBlur=0,this.dropShadow.enabled?(t.dropShadowBlur=5*this.dropShadow.blurRadius,t.dropShadowColor=this.dropShadow.color,t.dropShadowOffsetX=this.dropShadow.offset[0],t.dropShadowOffsetY=this.dropShadow.offset[1]):t.dropShadowColor=a.transparent,this.innerShadow.enabled?(t.innerShadowSpread=this.innerShadow.spread,t.innerShadowBlur=5*this.innerShadow.blurRadius,t.innerShadowColor=this.innerShadow.color,t.innerShadowOffsetX=this.innerShadow.offset[0],t.innerShadowOffsetY=this.innerShadow.offset[1]):t.innerShadowColor=a.transparent}innerDraw(t){}draw(t){!this.visible||(t.save(),this.applyTransforms(t),this.applyFilters(t),this.applyFillStroke(t),t.beginPath(),this.innerDraw(t),this.autoClose&&t.closePath(),this.fill.enabled&&t.fill(),this.stroke.enabled&&t.stroke(),t.restore())}updateByPatchedOp(t,i,r){super.updateByPatchedOp(t,i,r),0===t.type&&(e(t.path,["fill"])?this.fill.update(t.props):e(t.path,["stroke"])?this.stroke.update(t.props):e(t.path,["dropShadow"])?this.dropShadow.update(t.props):e(t.path,["innerShadow"])?this.innerShadow.update(t.props):e(t.path,["layerBlur"])?this.layerBlur.update(t.props):e(t.path,["backgroundBlur"])?this.backgroundBlur.update(t.props):this.resetBBoxNeedsUpdate())}updateState(t,e){super.updateState(t,e),void 0!==t.fill&&this.fill.update(t.fill),void 0!==t.stroke&&this.stroke.update(t.stroke),void 0!==t.dropShadow&&this.dropShadow.update(t.dropShadow),void 0!==t.innerShadow&&this.innerShadow.update(t.innerShadow),void 0!==t.layerBlur&&this.layerBlur.update(t.layerBlur),void 0!==t.backgroundBlur&&this.backgroundBlur.update(t.backgroundBlur)}clone(t){let e=new F(this.uuid,this.data,t);return e.parent=void 0,e}},U=class extends F{constructor(t,e,i){super(t,e,i),this.uuid=t,this.data=e,this.width=0,this.height=0,this.updateState(e,i)}innerDraw(t){t.ellipse(.5*this.width,.5*this.height,.5*this.width,.5*this.height,0,0,2*Math.PI)}intersectsInLocalSpace(t,e){return function(t,e,i,r,s,n){let a=t-i,h=e-r;return a*a/(s*s)+h*h/(n*n)<=1}(t,e,.5*this.width,.5*this.height,.5*this.width,.5*this.height)}getCenter(){return[.5*this.width,.5*this.height]}getHalfSize(){return[.5*this.width,.5*this.height]}updateSizeState(t){let e=!1;void 0!==t.width&&(this.width="number"==typeof t.width?t.width:this.width,e=!0),void 0!==t.height&&(this.height="number"==typeof t.height?t.height:this.height,e=!0),e&&this.updateWorldMatrix(!0,!1,!0)}updateState(t,e){super.updateState(t,e),this.updateSizeState(t)}clone(t){let e=new U(this.uuid,this.data,t);return e.parent=void 0,e}},N=class extends F{constructor(t,e,i){super(t,e,i),this.uuid=t,this.data=e,this.width=0,this.height=0,this.cornerRadius=[0,0,0,0],this.updateState(e,i)}innerDraw(t){t.rect(0,0,this.width,this.height,...this.cornerRadius)}getCenter(){return[.5*this.width,.5*this.height]}getHalfSize(){return[.5*this.width,.5*this.height]}updateCornerState(t){void 0!==t.cornerRadius&&(this.cornerRadius=t.cornerRadius)}updateSizeState(t){let e=!1;void 0!==t.width&&(this.width="number"==typeof t.width?t.width:this.width,e=!0),void 0!==t.height&&(this.height="number"==typeof t.height?t.height:this.height,e=!0),e&&this.updateWorldMatrix(!0,!1,!0)}updateState(t,e){super.updateState(t,e),this.updateSizeState(t),this.updateCornerState(t)}clone(t){let e=new N(this.uuid,this.data,t);return e.parent=void 0,e}},j=class extends F{constructor(t,e,i){super(t,e,i),this.uuid=t,this.data=e,this._textHeight=0,this._textHeightDirty=!0,this.width=0,this.height=0,this.updateState(e,i)}get textHeight(){return this._textHeight}applyFillStroke(t){t.fillColor=this.fill.enabled?this.fill.color:a.transparent,t.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:a.transparent,t.strokeMode="center",t.lineWidth=this.stroke.thickness}innerDraw(t){this._fontHolder?.arrayBuffer&&this._fontHolder.arrayBuffer.byteLength>1&&this.data.font&&t.registerFont(this._fontHolder.arrayBuffer,this.data.font);let e=this.data.textTransform,i=this.data.text.textValue.toString(),r=2===e?i.toUpperCase():3===e?i.toLowerCase():i,{height:s}=t.drawText(r,{x:0,y:0,width:this.width,height:this.height,fontSize:this.data.fontSize,lineHeight:this.data.lineHeight??1,letterSpacing:this.data.letterSpacing??0,horizontalAlign:this.data.horizontalAlign,verticalAlign:this.data.verticalAlign,font:this.data.font});this._textHeight=s}getCenter(){return[.5*this.width,.5*this.height]}getHalfSize(){return[.5*this.width,.5*this.height]}updateSizeState(t){let e=!1;void 0!==t.width&&(this.width="number"==typeof t.width?t.width:this.width,e=!0),void 0!==t.height&&(this.height="number"==typeof t.height?t.height:this.height,e=!0),e&&this.updateWorldMatrix(!0,!1,!0)}updateFontState(t,{shared:e}){void 0!==t.font&&(this._fontHolder=e.getFont(t.font),this._fontHolder&&!this._fontHolder.isLoaded&&this._fontHolder.loadingPromise.then(()=>{this.requestRender()}))}updateState(t,e){super.updateState(t,e),this.updateSizeState(t),this.updateFontState(t,e)}clone(t){let e=new j(this.uuid,this.data,t);return e.parent=void 0,e}},I=class extends F{constructor(t,e,i){super(t,e,i),this.uuid=t,this.data=e,this.curves=[],this.extremasBBox={min:[0,0],max:[0,0]},this.updateState(e,i)}computeExtremas(){0===this.curves.length&&this.computeCurves();let t=this.curves.map(t=>b.extremas(t)),e=[1/0,1/0],i=[-1/0,-1/0];for(let r=0,s=t.length;r<s;r++){let s=t[r];s[0][0]<e[0]&&(e[0]=s[0][0]),s[0][1]<e[1]&&(e[1]=s[0][1]),s[1][0]>i[0]&&(i[0]=s[1][0]),s[1][1]>i[1]&&(i[1]=s[1][1])}return this.extremasBBox.min=[e[0],e[1]],this.extremasBBox.max=[i[0],i[1]],this.extremasBBox}computeCurves(){this.curves=[];for(let t=1,e=this.data.points.length;t<e;t++){let e=this.data.points[t].data,i=this.data.points[t-1].data,r={start:i.position,cp1:i.controlNext.position,cp2:e.controlPrevious.position,end:e.position};this.curves.push(r)}let t=this.data.points[0].data,e=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let i={start:e.position,cp1:e.controlNext.position,cp2:t.controlPrevious.position,end:t.position};this.curves.push(i)}}getCenter(){let[t,e]=this.extremasBBox.min,[i,r]=this.getHalfSize();return[t+i,e+r]}getHalfSize(){let{min:t,max:e}=this.extremasBBox;return[.5*(e[0]-t[0]),.5*(e[1]-t[1])]}innerDraw(t){for(let e=0,i=this.data.points.length;e<i;e++){let i=this.data.points[e].data;if(0===e){let[e,r]=i.position;t.moveTo(e,r)}else{let r=this.data.points[e-1].data,[s,n]=r.controlNext.position,[a,h]=i.controlPrevious.position,[o,l]=i.position,d={start:r.position,cp1:r.controlNext.position,cp2:i.controlPrevious.position,end:i.position};b.derive(d),t.bezierCurveTo(s,n,a,h,o,l)}}let e=this.data.points[0].data,i=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let[r,s]=i.controlNext.position,[n,a]=e.controlPrevious.position,[h,o]=e.position;t.bezierCurveTo(r,s,n,a,h,o)}}updateState(t,e){super.updateState(t,e),this.computeExtremas()}clone(t){let e=new I(this.uuid,this.data,t);return e.parent=void 0,e}};(t=>{function e(t,e,i,r=!1){let s=t-2*e+i;if(0!==s){let r=-Math.sqrt(Math.abs(e*e-t*i)),n=-t+e;return[-(r+n)/s,-(-r+n)/s]}return e!==i&&0===s?[(2*e-i)/(2*(e-i))]:[]}t.derive=function(t){let e=t.start,i=t.cp1,r=t.cp2,s=t.end,n={start:[3*(i[0]-e[0]),3*(i[1]-e[1])],cp:[3*(r[0]-i[0]),3*(r[1]-i[1])],end:[3*(s[0]-r[0]),3*(s[1]-r[1])]};return t.derivative=n,n.derivative=M.derive(n),n},t.droot=function(i){let r=i.derivative??t.derive(i),s=r.start,n=r.cp,a=r.end;return[e(s[0],n[0],a[0]),e(s[1],n[1],a[1])]},t.extremas=function(e){let[i,r]=t.droot(e),s=[e.start[0],e.end[0]],n=[e.start[1],e.end[1]];for(let r of i)s.push(t.compute(e,Math.min(1,Math.max(0,r)))[0]);for(let i of r)n.push(t.compute(e,Math.min(1,Math.max(0,i)))[1]);return s.sort((t,e)=>t-e),n.sort((t,e)=>t-e),[[s[0],n[0]],[s[s.length-1],n[n.length-1]]]},t.compute=function(t,e){if(0===e)return[...t.start];if(1===e)return[...t.end];let i=1-e,r=i*i,s=e*e,n=r*i,a=r*e*3,h=i*s*3,o=e*s;return[n*t.start[0]+a*t.cp1[0]+h*t.cp2[0]+o*t.end[0],n*t.start[1]+a*t.cp1[1]+h*t.cp2[1]+o*t.end[1]]}})(b||(b={})),(C=M||(M={})).derive=function(t){let e=t.start,i=t.cp,r=t.end,s={start:[2*(i[0]-e[0]),2*(i[1]-e[1])],end:[2*(r[0]-i[0]),2*(r[1]-i[1])]};return s.derivative=k.derive(s),t.derivative=s,s},C.droot=function(t){let e=t.derivative??C.derive(t),i=e.start,r=e.end;return[i[0]!==r[0]?i[0]/(i[0]-r[0]):0,i[1]!==r[1]?i[1]/(i[1]-r[1]):0]},C.compute=function(t,e){if(0===e)return[...t.start];if(1===e)return[...t.end];let i=1-e,r=i*i,s=i*e*2,n=e*e;return[r*t.start[0]+s*t.cp[0]+n*t.end[0],r*t.start[1]+s*t.cp[1]+n*t.end[1]]},(A=k||(k={})).derive=function(t){let e=t.start,i=t.end,r=[i[0]-e[0],i[1]-e[1]];return t.derivative=r,t.derivative},A.compute=function(t,e){if(0===e)return[...t.start];if(1===e)return[...t.end];let i=t.start,r=t.end;return[i[0]+(r[0]-i[0])*e,i[1]+(r[1]-i[1])*e]};var D=class extends R{constructor(t,e,i){super(t,e,i),this.uuid=t,this.data=e,this.context=i,this.isBaseGroup=!0,this.children=[]}add(t){t.parent&&t.parent instanceof D&&t.parent.remove(t),this.children.push(t),t.parent=this}remove(t){let e=this.children.indexOf(t);e>=0&&(this.children.splice(e,1),t.parent=void 0)}traverse(t){let e=t(this);if(!0!==e)for(let i of this.children)i instanceof D?i.traverse(t):e=t(i)}intersectsChildrenHelper(t,e,i,r,s){for(let n of this.children)if(n.intersects(t,e,i,!1)&&(s.push(n),r)||n instanceof D&&n.intersectsChildrenHelper(t,e,i,r,s))return!0;return!1}intersectsChildren(t,e,i,r=!1,s=[],n=!1){return this.intersectsChildrenHelper(t,e,i,r,s),s}intersectsChildrenHelperReverse(t,e,i,r,s){for(let n of this.children)if(n instanceof D&&n.intersectsChildrenHelperReverse(t,e,i,r,s)||n.intersects(t,e,i,!1)&&(s.push(n),r))return!0;return!1}intersectsChildrenReverse(t,e,i,r=!1,s=[],n=!1){return this.intersectsChildrenHelperReverse(t,e,i,r,s),s}updateWorldMatrix(t,e,i){if(super.updateWorldMatrix(t,e,i),i&&this.children)for(let e of this.children)e.updateWorldMatrix(t,!1,!0)}find(t){let e;return this.traverse(i=>{i.uuid===t&&(e=i)}),e}innerDrawChildren(t){for(let e=this.children.length-1;e>=0;e--)this.children[e].draw(t)}resetBBoxNeedsUpdate(){super.resetBBoxNeedsUpdate(),this.traverse(t=>{t.resetBBoxNeedsUpdateSelf()})}clone(t){let e=new D(this.uuid,this.data,t);e.parent=void 0;for(let i of this.children)e.add(i.clone(t));return e}},W=class extends D{constructor(t,e,i){super(t,e,i),this.uuid=t,this.data=e,this.updateState(e,i)}draw(t){!this.visible||(t.save(),this.applyTransforms(t),this.innerDrawChildren(t),t.restore())}clone(t){let e=new W(this.uuid,this.data,t);e.parent=void 0;for(let i of this.children)e.add(i.clone(t));return e}},X=class extends D{constructor(t,e,i){super(t,e,i),this.uuid=t,this.width=0,this.height=0,this.clipped=!0,this.background=new N(t+"-background",r.defaultData,i),this.background.parent=this,this.updateState(e,i)}get fill(){return this.background.fill}get stroke(){return this.background.stroke}get backgroundBlur(){return this.background.backgroundBlur}get layerBlur(){return this.background.layerBlur}get dropShadow(){return this.background.dropShadow}get innerShadow(){return this.background.innerShadow}get cornerRadius(){return this.background.cornerRadius}set cornerRadius(t){this.background.cornerRadius=t}updateLocalMatrix(){super.updateLocalMatrix(),this.background?.updateLocalMatrix()}updateWorldMatrix(t,e,i){super.updateWorldMatrix(t,e,i),this.background?.updateWorldMatrix(t,e,i)}draw(t){if(!this.visible)return;t.save();let e=this.width,i=this.height;this.applyTransforms(t),this.background.width=e,this.background.height=i,this.background.draw(t),this.clipped&&t.clipRect(0,0,e,i,...this.cornerRadius),this.innerDrawChildren(t),t.restore()}getCenter(){return[.5*this.width,.5*this.height]}getHalfSize(){return[.5*this.width,.5*this.height]}updateCornerState(t){void 0!==t.cornerRadius&&(this.cornerRadius=t.cornerRadius)}updateSizeState(t){let e=!1;void 0!==t.width&&(this.width="number"==typeof t.width?t.width:this.width,e=!0),void 0!==t.height&&(this.height="number"==typeof t.height?t.height:this.height,e=!0),e&&this.updateWorldMatrix(!0,!1,!0)}updateState(t,e){super.updateState(t,e),this.updateSizeState(t),this.updateCornerState(t),void 0!==t.fill&&this.fill.update(t.fill),void 0!==t.stroke&&this.stroke.update(t.stroke),void 0!==t.dropShadow&&this.dropShadow.update(t.dropShadow),void 0!==t.innerShadow&&this.innerShadow.update(t.innerShadow),void 0!==t.layerBlur&&this.layerBlur.update(t.layerBlur),void 0!==t.backgroundBlur&&this.backgroundBlur.update(t.backgroundBlur),void 0!==t.clipped&&(this.clipped=t.clipped)}requestRender(){super.requestRender(),this.dispatchEvent({type:"render"})}dispose(){this.removeEventListener("render")}updateByPatchedOp(t,i,r){super.updateByPatchedOp(t,i,r),0===t.type&&(e(t.path,["fill"])?this.fill.update(t.props):e(t.path,["stroke"])?this.stroke.update(t.props):e(t.path,["dropShadow"])?this.dropShadow.update(t.props):e(t.path,["innerShadow"])?this.innerShadow.update(t.props):e(t.path,["layerBlur"])?this.layerBlur.update(t.props):e(t.path,["backgroundBlur"])?this.backgroundBlur.update(t.props):this.resetBBoxNeedsUpdate())}clone(t){let e=new X(this.uuid,this.data,t);e.parent=void 0;for(let i of this.children)e.add(i.clone(t));return e}},V=u(g(),1),q=new Map,Y=null,$=class extends F{constructor(t,e,i){super(t,e,i),this.uuid=t,this.data=e,this._pathBBox=new DOMRect,this.path="",this.updateState(e,i),this.autoClose=!1,this.computeSVGBBox()}computeSVGBBox(){let t=this.path;G(this.path)&&(console.warn("Invalid SVG path",this.uuid),t=""),this._pathBBox=function(t){let e=q.get(t);if(void 0!==e)return e;if(null===Y||!Y.isConnected){let t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttribute("aria-hidden","true"),t.style.cssText="position:absolute;width:0;height:0;overflow:hidden;visibility:hidden;pointer-events:none",Y=document.createElementNS("http://www.w3.org/2000/svg","path"),t.appendChild(Y),document.body.appendChild(t)}Y.setAttribute("d",t);let i=Y.getBBox();return q.size>=4096&&q.clear(),q.set(t,i),i}(t)}innerDraw(t){t.path(this.path)}intersectsInLocalSpace(t,e){return t>=this._pathBBox.x&&t<=this._pathBBox.x+this._pathBBox.width&&e>=this._pathBBox.y&&e<=this._pathBBox.y+this._pathBBox.height}getCenter(){return[(this._pathBBox.x+this._pathBBox.width)/2,(this._pathBBox.y+this._pathBBox.height)/2]}getHalfSize(){return[(this._pathBBox.x+this._pathBBox.width)/2,(this._pathBBox.y+this._pathBBox.height)/2]}updateState(t,e){super.updateState(t,e),void 0!==t.path&&(this.path=t.path,this.computeSVGBBox())}clone(t){let e=new $(this.uuid,this.data,t);return e.parent=void 0,e}};function G(t){return/NaN/.test(t)}function Q(t,e=1,i=1){if(e<=0||i<=0)return t;if(G(t))return console.warn("Cannot scale invalid path",t),J([]);if(1===e&&1===i)return t;try{return J((0,V.parseSVG)(t).map(t=>{let r={...t};return"x"in r&&(r.x=r.x*e),"y"in r&&(r.y=r.y*i),"x1"in r&&(r.x1=r.x1*e),"x2"in r&&(r.x2=r.x2*e),"y1"in r&&(r.y1=r.y1*i),"y2"in r&&(r.y2=r.y2*i),"rx"in r&&(r.rx=r.rx*e),"ry"in r&&(r.ry=r.ry*i),r}))}catch(t){return console.warn("Error parsing SVG path",t),J([])}}function J(t){let e,i=["rx","ry","xAxisRotation","largeArc","sweep","x1","y1","x2","y2","x","y"];return t.map(t=>{let r=[];i.forEach(e=>{if(e in t){let i=1*t[e];r.length&&i>=0&&r.push(","),r.push(i)}});let s=(e===t.code?r[0]<0?"":",":t.code)+r.join("");return e=t.code,s}).join("")}var Z=class{constructor(t,e,i){this.uuid=t,this.data=e,this.group=new W(Z.GROUP_ID,{...s.defaultData},i),this.createChildrenObjects(e.objects,this.group,i)}createObject(t,e,i,r,s,n){let a=function(t,e,i){switch(e.type){case"ellipse2d":return new U(t,e,i);case"rectangle2d":return new N(t,e,i);case"text2d":return new j(t,e,i);case"vector2d":return new I(t,e,i);case"path2d":return new $(t,e,i);case"frame2d":return new X(t,e,i);default:return new W(t,e,i)}}(t,e,n);a&&(r.add(a),r.children.splice(s,0,r.children.pop()),a.updateWorldMatrix(),i.length>0&&(a instanceof W||a instanceof X)&&this.createChildrenObjects(i,a,n))}createChildrenObjects(t,e,i){let r=0;for(let s of t)this.createObject(s.id,s.data,s.children,e,r,i),r+=1}draw(t){this.group.draw(t)}updateEntityByOp(t,e,i,r){let s=this.find(t);if(s)try{s.updateByOp(e,i,{shared:r})}catch(t){console.error(t)}}updateTreeByOp(t,e){if(0===t.path.length&&7===t.type){let i=null===t.parent?this.group:this.find(t.parent);void 0!==i&&i instanceof D&&(this.createObject(t.id,t.data,t.children,i,t.localIndex,e),i.requestRender())}else if(0===t.path.length&&8===t.type){let e=this.find(t.id);if(void 0!==e&&void 0!==e.parent&&e.parent instanceof D){let t=e.parent;e.resetBBoxNeedsUpdate(),t?.remove(e),t?.requestRender()}}else if(0===t.path.length&&9===t.type){let e=this.find(t.id);if(void 0!==e){let i=e.parent,r=null===t.parent?this:this.find(t.parent);if(r instanceof D||r===this){r.add(e);let s=t.localIndex;r.children.splice(s,0,r.children.pop()),e.updateWorldMatrix(!0,!1,!0),i?.requestRender(),e.requestRender()}e.resetBBoxNeedsUpdate()}}}add(t){this.group.add(t)}remove(t){this.group.remove(t)}traverse(t){this.group.traverse(e=>{e!==this.group&&t(e)})}intersectsChildren(t,e,i,r=!1,s=[]){return this.group.intersectsChildren(t,e,i,r,s,!0)}intersectsChildrenReverse(t,e,i,r=!1,s=[]){return this.group.intersectsChildrenReverse(t,e,i,r,s,!0)}find(t){return this.group.find(t)}get children(){return this.group.children}project(t,e){return this.group.project(t,e)}getWithSortKey(t){let e=this.find(t);if(void 0===e)return;let i=[],r=e;for(;r!==this.group;){let t=r;r=r.parent;let e=r.children.indexOf(t);i.splice(0,0,e)}return{entity:e,sortKey:i}}getAllSorted(t){let e=[];for(let i of t){let t=this.getWithSortKey(i.id);void 0!==t&&e.push(t)}return e.sort((t,e)=>h(t.sortKey,e.sortKey)),e.map(t=>t.entity)}},K=Z;K.GROUP_ID="scene2d";var tt=u(g(),1);function et(t,e,i,r,s,n,a,h,o,l){if(e===o&&i===l)return;if(r=Math.abs(r),s=Math.abs(s),0===r||0===s)return void t.push({LineTo:{x:o,y:l}});let d=n*Math.PI/180,u=Math.cos(d),c=Math.sin(d),p=(e-o)/2,f=(i-l)/2,x=u*p+c*f,g=-c*p+u*f,m=x*x/(r*r)+g*g/(s*s);if(m>1){let t=Math.sqrt(m);r*=t,s*=t}let y=r*r,v=s*s,w=y*v-y*g*g-v*x*x,_=y*g*g+v*x*x,S=(a!==h?1:-1)*Math.sqrt(Math.max(0,w/_)),B=S*(r*g)/s,b=S*(-s*x)/r,M=u*B-c*b+(e+o)/2,C=c*B+u*b+(i+l)/2,k=Math.atan2((g-b)/s,(x-B)/r),A=Math.atan2((-g-b)/s,(-x-B)/r)-k;!h&&A>0?A-=2*Math.PI:h&&A<0&&(A+=2*Math.PI);let T=Math.max(1,Math.ceil(Math.abs(A)/(Math.PI/2))),P=A/T,z=4/3*Math.tan(P/4),R=k,E=e,O=i;for(let e=0;e<T;e++){let e=R+P,i=Math.cos(R),n=Math.sin(R),a=Math.cos(e),h=Math.sin(e),o=M+r*a*u-s*h*c,l=C+r*a*c+s*h*u,d=-r*n*u-s*i*c,p=-r*n*c+s*i*u,f=-r*h*u-s*a*c,x=-r*h*c+s*a*u;t.push({CurveTo:[{x:E+z*d,y:O+z*p},{x:o-z*f,y:l-z*x},{x:o,y:l}]}),R=e,E=o,O=l}}var it=.5522847498307936,rt=3408/2816,st=1536/2816,nt=!1;function at(){nt||(nt=!0,console.warn("[HanaRenderer] clipRect: precise clipping of rotated/complex content is not supported by the Hana UI overlay yet; drawing unclipped. (Axis-aligned rectangles are clipped geometrically.)"))}var ht=class{constructor(t,e=1){this.canvas=t,this._dpr=e,this._width=0,this._height=0,this._isSizeDirty=!1,this._crashed=!1,this._shapes=[],this._lastPushedJSON="",this._ctm=_.identity(),this._stack=[],this._clips=[],this._pathEls=[],this._simpleShape=null,this._pathPrimitives=0,this._fillColor=a.transparent,this._strokeColor=a.transparent,this._lineWidth=1,this._strokeMode="inside",this._layerBlur=0,this._backgroundBlur=0,this._dropShadowBlur=0,this._dropShadowOffsetX=0,this._dropShadowOffsetY=0,this._dropShadowColor=a.transparent,this._innerShadowBlur=0,this._innerShadowOffsetX=0,this._innerShadowOffsetY=0,this._innerShadowSpread=0,this._innerShadowColor=a.transparent,this._fonts=new Map,this._fontsFlushed=new Set,this._fontXPerEm=new Map,this._measureCache=new Map;try{let i=t.getBoundingClientRect();t.width=i.width*e,t.height=i.height*e}catch{console.log(t.width,e)}}get dpr(){return this._dpr}set dpr(t){this._dpr=t,this._isSizeDirty=!0}get width(){return this._width}get height(){return this._height}async init(){if(!this._engine&&!this._crashed){try{this._context=await m(),this._engine=await this._context.createEngine(this.canvas)}catch(t){return this._crashed=!0,void console.error("[HanaRenderer] Failed to load the Hana UI engine; UI scenes will not render.",t)}if(this._width>0&&this._height>0)this._syncViewport();else{let t=this.canvas.getBoundingClientRect();t.width>0&&t.height>0&&(this._width=t.width,this._height=t.height,this._syncViewport())}this._flushFonts(),this.uiFontReady=this._watchUiFont()}}_watchUiFont(){return new Promise(t=>{let e=this._engine;if(!e||"function"!=typeof e.scene.isUiFontLoaded)return void t();let i=()=>{let t=!1;return this._guard(()=>{t=e.scene.isUiFontLoaded()}),t};if(i())return void t();let r=Date.now(),s=setInterval(()=>{this._crashed||Date.now()-r>3e5?clearInterval(s):i()&&(clearInterval(s),t())},150)})}_syncViewport(){let t=this._engine;if(!t||this._crashed)return;let e=this._width,i=this._height;this.canvas.style.width=e+"px",this.canvas.style.height=i+"px",this.canvas.width=Math.max(1,Math.ceil(e*this._dpr)),this.canvas.height=Math.max(1,Math.ceil(i*this._dpr)),this._guard(()=>{t.resize([e,i],this._dpr),t.scene.updateCamera({position:[e/2,i/2],zoom:1})})}setSize(t,e){!this._isSizeDirty&&t===this._width&&e===this._height||(this._isSizeDirty=!1,this._width=t,this._height=e,this._engine?this._syncViewport():(this.canvas.style.width=t+"px",this.canvas.style.height=e+"px",this.canvas.width=Math.max(1,Math.ceil(t*this._dpr)),this.canvas.height=Math.max(1,Math.ceil(e*this._dpr))))}_guard(t){if(!this._crashed)try{t()}catch(t){this._crashed=!0,console.error("[HanaRenderer] Hana engine call failed; disabling this renderer instance.",t)}}async loadFont(t,e){try{let i=await fetch(t);if(!i.ok)return void console.error(`[HanaRenderer] loadFont: ${t} returned HTTP ${i.status}; skipping "${e}"`);let r=await i.arrayBuffer();if(0===r.byteLength)return void console.error(`[HanaRenderer] loadFont: ${t} was empty; skipping "${e}"`);this.registerFont(r,e)}catch(i){console.error(`[HanaRenderer] loadFont failed for "${e}" (${t}):`,i)}}registerFont(t,e){if(this._fonts.has(e))return;this._fonts.set(e,t);let i=function(t){try{let e=new DataView(t),i=e.getUint32(0);if(65536!==i&&1330926671!==i&&1953658213!==i)return;let r=e.getUint16(4),s=-1,n=-1;for(let t=0;t<r;t++){let i=12+16*t,r=e.getUint32(i);1751474532===r&&(s=e.getUint32(i+8)),1330851634===r&&(n=e.getUint32(i+8))}if(s<0||n<0)return;let a=e.getUint16(s+18),h=e.getUint16(n);if(0===a||h<2)return;let o=e.getInt16(n+86);return o>0?o/a:void 0}catch{return}}(t);void 0!==i&&this._fontXPerEm.set(e,i),this._flushFonts()}_flushFonts(){let t=this._engine;if(t)for(let[e,i]of this._fonts)this._fontsFlushed.has(e)||(this._fontsFlushed.add(e),this._guard(()=>{t.scene.addLocalFont(e,new Uint8Array(i))}))}set strokeColor(t){this._strokeColor=t}set fillColor(t){this._fillColor=t}set lineWidth(t){this._lineWidth=t}set strokeMode(t){this._strokeMode=t}set dropShadowBlur(t){this._dropShadowBlur=t}set dropShadowColor(t){this._dropShadowColor=t}set dropShadowOffsetX(t){this._dropShadowOffsetX=t}set dropShadowOffsetY(t){this._dropShadowOffsetY=t}set innerShadowBlur(t){this._innerShadowBlur=t}set innerShadowColor(t){this._innerShadowColor=t}set innerShadowOffsetX(t){this._innerShadowOffsetX=t}set innerShadowOffsetY(t){this._innerShadowOffsetY=t}set innerShadowSpread(t){this._innerShadowSpread=t}set layerBlur(t){this._layerBlur=t}set backgroundBlur(t){this._backgroundBlur=t}save(){this._stack.push({ctm:_.copy(this._ctm),clipLen:this._clips.length})}restore(){let t=this._stack.pop();!t||(this._ctm=t.ctm,this._clips.length=t.clipLen)}setTransform(t,e=!1){let i=_.identity();if(this.camera?.enabled&&(i=_.append(i,this.camera.worldMatrix),e)){let t=_.getScale(this.camera.worldMatrix);i=_.scale(i,1/t[0],1/t[1])}this._ctm=_.append(i,t)}transform(t){this._ctm=_.append(this._ctm,t)}beginPath(){this._pathEls=[],this._simpleShape=null,this._pathPrimitives=0}closePath(){0!==this._pathEls.length&&"ClosePath"!==this._pathEls[this._pathEls.length-1]&&this._pathEls.push("ClosePath")}_startFreeform(){this._simpleShape=null,this._pathPrimitives++}moveTo(t,e){this._startFreeform(),this._pathEls.push({MoveTo:{x:t,y:e}})}lineTo(t,e){this._startFreeform(),this._pathEls.push({LineTo:{x:t,y:e}})}bezierCurveTo(t,e,i,r,s,n){this._startFreeform(),this._pathEls.push({CurveTo:[{x:t,y:e},{x:i,y:r},{x:s,y:n}]})}quadraticCurveTo(t,e,i,r){this._startFreeform(),this._pathEls.push({QuadTo:[{x:t,y:e},{x:i,y:r}]})}path(t){this._startFreeform(),this._pathEls.push(...function(t){let e,i=[];try{e=(0,tt.makeAbsolute)((0,tt.parseSVG)(t))}catch(t){return console.error("[HanaRenderer] Failed to parse SVG path:",t),i}let r=0,s=0,n=0,a=0,h=null,o=null;for(let t of e){let e=null,l=null;switch(t.code){case"M":r=n=t.x,s=a=t.y,i.push({MoveTo:{x:r,y:s}});break;case"L":r=t.x,s=t.y,i.push({LineTo:{x:r,y:s}});break;case"H":r=t.x,i.push({LineTo:{x:r,y:s}});break;case"V":s=t.y,i.push({LineTo:{x:r,y:s}});break;case"C":{let n={x:t.x1,y:t.y1},a={x:t.x2,y:t.y2};r=t.x,s=t.y,i.push({CurveTo:[n,a,{x:r,y:s}]}),e=a;break}case"S":{let n=h?{x:2*r-h.x,y:2*s-h.y}:{x:r,y:s},a={x:t.x2,y:t.y2};r=t.x,s=t.y,i.push({CurveTo:[n,a,{x:r,y:s}]}),e=a;break}case"Q":{let e={x:t.x1,y:t.y1};r=t.x,s=t.y,i.push({QuadTo:[e,{x:r,y:s}]}),l=e;break}case"T":{let e=o?{x:2*r-o.x,y:2*s-o.y}:{x:r,y:s};r=t.x,s=t.y,i.push({QuadTo:[e,{x:r,y:s}]}),l=e;break}case"A":{let e=r,n=s;r=t.x,s=t.y,et(i,e,n,t.rx,t.ry,t.xAxisRotation,t.largeArc,t.sweep,r,s);break}case"Z":r=n,s=a,i.push("ClosePath")}h=e,o=l}return i}(t))}rect(t,e,i,r,s=0,n=0,a=0,h=0){if(!ct([t,e,i,r]))return;let o={x:t,y:e,w:i,h:r,radii:[s,n,a,h]};this._pathPrimitives++,this._simpleShape=1===this._pathPrimitives&&0===this._pathEls.length?{kind:"rect",rect:o,smoothing:0}:null,gt(this._pathEls,o)}ellipse(t,e,i,r,s,n,a,h){if(ct([t,e,i,r])){if(i<0||r<0)throw Error("radii cannot be negative");this._pathPrimitives++,this._simpleShape=1===this._pathPrimitives&&0===this._pathEls.length?{kind:"ellipse",cx:t,cy:e,rx:i,ry:r}:null,function(t,e,i,r,s){let n=r*it,a=s*it;t.push({MoveTo:{x:e+r,y:i}},{CurveTo:[{x:e+r,y:i+a},{x:e+n,y:i+s},{x:e,y:i+s}]},{CurveTo:[{x:e-n,y:i+s},{x:e-r,y:i+a},{x:e-r,y:i}]},{CurveTo:[{x:e-r,y:i-a},{x:e-n,y:i-s},{x:e,y:i-s}]},{CurveTo:[{x:e+n,y:i-s},{x:e+r,y:i-a},{x:e+r,y:i}]},"ClosePath")}(this._pathEls,t,e,i,r)}}clipRect(t,e,i,r,s=0,n=0,a=0,h=0){let o=_.invert(this._ctm);!o||this._clips.push({m:_.copy(this._ctm),inv:o,rect:{x:t,y:e,w:i,h:r,radii:[s,n,a,h]}})}fill(){this._emit(!0)}stroke(){this._strokeColor.a<=0||this._lineWidth<=0||this._emit(!1)}_emit(t){let e=this._effectChain(t);if(t&&this._fillColor.a<=0&&!e)return;let i=this._classifyShape();if(!i)return;let r=this._applyClips(i);if("skip"===r)return;if(!t&&r!==i){let t=ft(i);if(t)return void this._emitClippedRectStroke(t,e)}i=r;let s={shape:i,color:t?ut(this._fillColor):[0,0,0,0],transform:_.getAbcdef(this._ctm)};t||(s.stroke=this._strokeDesc()),e&&(s.effect_chain=e),this._shapes.push(s)}_emitClippedRectStroke(t,e){let i=this._lineWidth,r="outside"===this._strokeMode?i:"center"===this._strokeMode?i/2:0,s=i-r,n=Math.min(t.w,t.h)/2,a=t.radii.map(t=>Math.max(0,Math.min(t,n))),h={x:t.x-r,y:t.y-r,w:t.w+2*r,h:t.h+2*r,radii:a.map(t=>t>0?t+r:0)},o=t.w-2*s,l=t.h-2*s,d=o>0&&l>0?{x:t.x+s,y:t.y+s,w:o,h:l,radii:a.map(t=>Math.max(0,t-s))}:null,u=this._applyClips(pt(h,0));if("skip"===u)return;let c=ft(u)??h,p=null;if(d){let t=this._applyClips(pt(d,0));p="skip"===t?null:ft(t)??d}let f=[];gt(f,c),p&&function(t,e){let{x:i,y:r,w:s,h:n}=e,a=Math.min(s,n)/2,[h,o,l,d]=e.radii.map(t=>Math.max(0,Math.min(t,a)));if(0===h&&0===o&&0===l&&0===d)return void t.push({MoveTo:{x:i,y:r}},{LineTo:{x:i,y:r+n}},{LineTo:{x:i+s,y:r+n}},{LineTo:{x:i+s,y:r}},"ClosePath");let u=1-it;t.push({MoveTo:{x:i+h,y:r}}),h>0&&t.push({CurveTo:[{x:i+h*u,y:r},{x:i,y:r+h*u},{x:i,y:r+h}]}),t.push({LineTo:{x:i,y:r+n-d}}),d>0&&t.push({CurveTo:[{x:i,y:r+n-d*u},{x:i+d*u,y:r+n},{x:i+d,y:r+n}]}),t.push({LineTo:{x:i+s-l,y:r+n}}),l>0&&t.push({CurveTo:[{x:i+s-l*u,y:r+n},{x:i+s,y:r+n-l*u},{x:i+s,y:r+n-l}]}),t.push({LineTo:{x:i+s,y:r+o}}),o>0&&t.push({CurveTo:[{x:i+s,y:r+o*u},{x:i+s-o*u,y:r},{x:i+s-o,y:r}]}),t.push("ClosePath")}(f,p);let x={shape:{Custom:f},color:ut(this._strokeColor),transform:_.getAbcdef(this._ctm)};e&&(x.effect_chain=e),this._shapes.push(x)}_classifyShape(){let t=this._simpleShape;return t?"rect"===t.kind?pt(t.rect,t.smoothing):{Ellipse:{center_x:t.cx,center_y:t.cy,rx:t.rx,ry:t.ry}}:0===this._pathEls.length?null:{Custom:this._pathEls.slice()}}_strokeDesc(){return{width:this._lineWidth,line_join:"Miter",color:ut(this._strokeColor),align:ot[this._strokeMode],cap:"Butt"}}_effectChain(t){let e=this.camera?.scale??1,i=[];if(t&&this._dropShadowColor.a>0&&i.push({DropShadow:{position:[this._dropShadowOffsetX*e,this._dropShadowOffsetY*e],blur:{Uniform:{size:2*this._dropShadowBlur*e}},spread:0,color:ut(this._dropShadowColor)}}),t&&this._backgroundBlur>0){let[t,e]=_.getScale(this._ctm),r=(t+e)/2;i.push({BackgroundBlur:{blur:{Uniform:{size:2*this._backgroundBlur*r}}}})}if(this._layerBlur>0&&i.push({LayerBlur:{blur:{Uniform:{size:2*this._layerBlur*e}}}}),t&&this._innerShadowColor.a>0){let[t,r,s,n]=_.getAbcdef(this._ctm),a=this._innerShadowOffsetX,h=this._innerShadowOffsetY;i.push({InnerShadow:{position:[t*a+s*h,r*a+n*h],blur:{Uniform:{size:2*this._innerShadowBlur*e}},spread:this._innerShadowSpread*e,color:ut(this._innerShadowColor)}})}return i.length>0?i:void 0}_applyClips(t){if(0===this._clips.length)return t;let e=t;for(let t of this._clips){let i=_.append(t.inv,this._ctm),[r,s,n,a,h,o]=_.getAbcdef(i),l=Math.abs(s)<=1e-6*(Math.abs(r)+Math.abs(a))&&Math.abs(n)<=1e-6*(Math.abs(r)+Math.abs(a)),d=xt(e);if(!d)return e;if(!l){at();continue}let u=r*d.minX+h,c=r*d.maxX+h,p=a*d.minY+o,f=a*d.maxY+o,x=Math.min(u,c),g=Math.max(u,c),m=Math.min(p,f),y=Math.max(p,f),v=t.rect,w=Math.max(x,v.x),S=Math.max(m,v.y),B=Math.min(g,v.x+v.w),b=Math.min(y,v.y+v.h);if(w>=B||S>=b)return"skip";if(w===x&&S===m&&B===g&&b===y)continue;let M=ft(e);if(!M||0===r||0===a){at();continue}let C=(w-h)/r,k=(B-h)/r,A=(S-o)/a,T=(b-o)/a,P=Math.min(C,k),z=Math.min(A,T),R=Math.abs(k-C),E=Math.abs(T-A),[O,H,L,F]=M.radii,U=P!==M.x,N=z!==M.y,j=P+R!==M.x+M.w,I=z+E!==M.y+M.h,D=Math.min(R,E)/2;e=pt({x:P,y:z,w:R,h:E,radii:[U||N?0:Math.min(O,D),j||N?0:Math.min(H,D),j||I?0:Math.min(L,D),U||I?0:Math.min(F,D)]},0)}return e}drawText(t,e){let i=this._fontXPerEm.get(e.font),r=i?i/st:1,s={TextSimple:{text:t,font_size:e.fontSize*rt*r,size:[e.width,e.height],horizontal_align:lt[e.horizontalAlign]??"Left",vertical_align:dt[e.verticalAlign]??"Top"}},n=this._effectChain(!0),a=this._fillColor.a>0,h=this._strokeColor.a>0&&this._lineWidth>0;if(a||h||n){let t={shape:s,color:a?ut(this._fillColor):[0,0,0,0],transform:_.getAbcdef(_.append(this._ctm,_.translate(_.identity(),e.x,e.y)))};h&&(t.stroke=this._strokeDesc()),n&&(t.effect_chain=n),this._shapes.push(t)}return{height:this._measureTextHeight(t,e)}}_measureTextHeight(t,e){let i=`${e.font}|${e.fontSize}|${e.lineHeight}|${e.letterSpacing}|${e.width}|${t}`,r=this._measureCache.get(i);if(void 0!==r)return r;let s=0,n=this._engine;if(n&&!this._crashed&&this._fontsFlushed.has(e.font))try{let[,i]=n.scene.measureTextNaturalSize({size:[e.width,e.height],text:t,fontSize:e.fontSize,horizontalAlign:lt[e.horizontalAlign]??"Left",verticalAlign:dt[e.verticalAlign]??"Top",lineHeight:e.lineHeight,letterSpacing:e.letterSpacing,textTransform:"None",font:e.font,version:0,autoSize:"None",truncate:"None"});s=i}catch{}if(!(s>0)){let i=.55*e.fontSize+Math.max(0,e.letterSpacing),r=Math.max(1,Math.floor(e.width/i)),n=0;for(let e of t.split("\n"))n+=Math.max(1,Math.ceil(e.length/r));s=n*e.fontSize*e.lineHeight}return this._measureCache.size>512&&this._measureCache.clear(),this._measureCache.set(i,s),s}clear(){this._shapes=[],this._ctm=_.identity(),this._stack.length=0,this._clips.length=0}render(){let t=this._engine;if(!t||this._crashed)return;let e=JSON.stringify(this._shapes);e!==this._lastPushedJSON&&(this._guard(()=>t.scene.updateUiShapes(this._shapes)),this._lastPushedJSON=e),this._guard(()=>t.onFrame())}},ot={inside:"Inside",outside:"Outside",center:"Center"},lt={1:"Left",2:"Right",3:"Center",4:"Justify"},dt={1:"Top",2:"Center",3:"Bottom"};function ut({r:t,g:e,b:i,a:r}){return[t,e,i,r]}function ct(t){for(let e=0;e<t.length;e++)if(void 0!==t[e]&&!Number.isFinite(t[e]))return!1;return!0}function pt(t,e){let[i,r,s,n]=t.radii;return 0===i&&0===r&&0===s&&0===n?{Rectangle:{x:t.x,y:t.y,width:t.w,height:t.h}}:{RoundedRectangle:{x:t.x,y:t.y,width:t.w,height:t.h,radius:[i,r,s,n],corner_smoothing:e}}}function ft(t){if("Rectangle"in t){let e=t.Rectangle;return{x:e.x,y:e.y,w:e.width,h:e.height,radii:[0,0,0,0]}}if("RoundedRectangle"in t){let e=t.RoundedRectangle;return{x:e.x,y:e.y,w:e.width,h:e.height,radii:[e.radius[0],e.radius[1],e.radius[2],e.radius[3]]}}return null}function xt(t){let e=ft(t);if(e)return{minX:e.x,minY:e.y,maxX:e.x+e.w,maxY:e.y+e.h};if("Ellipse"in t){let e=t.Ellipse;return{minX:e.center_x-e.rx,minY:e.center_y-e.ry,maxX:e.center_x+e.rx,maxY:e.center_y+e.ry}}if("TextSimple"in t){let e=t.TextSimple;return{minX:0,minY:0,maxX:e.size[0],maxY:e.size[1]}}if("Custom"in t){let e=1/0,i=1/0,r=-1/0,s=-1/0,n=t=>{t.x<e&&(e=t.x),t.y<i&&(i=t.y),t.x>r&&(r=t.x),t.y>s&&(s=t.y)};for(let e of t.Custom)"ClosePath"!==e&&("MoveTo"in e?n(e.MoveTo):"LineTo"in e?n(e.LineTo):"QuadTo"in e?e.QuadTo.forEach(n):"CurveTo"in e&&e.CurveTo.forEach(n));return e===1/0?null:{minX:e,minY:i,maxX:r,maxY:s}}return null}function gt(t,e){let{x:i,y:r,w:s,h:n}=e,a=Math.min(s,n)/2,[h,o,l,d]=e.radii.map(t=>Math.max(0,Math.min(t,a)));if(0===h&&0===o&&0===l&&0===d)return void t.push({MoveTo:{x:i,y:r}},{LineTo:{x:i+s,y:r}},{LineTo:{x:i+s,y:r+n}},{LineTo:{x:i,y:r+n}},"ClosePath");let u=1-it;t.push({MoveTo:{x:i+h,y:r}}),t.push({LineTo:{x:i+s-o,y:r}}),o>0&&t.push({CurveTo:[{x:i+s-o*u,y:r},{x:i+s,y:r+o*u},{x:i+s,y:r+o}]}),t.push({LineTo:{x:i+s,y:r+n-l}}),l>0&&t.push({CurveTo:[{x:i+s,y:r+n-l*u},{x:i+s-l*u,y:r+n},{x:i+s-l,y:r+n}]}),t.push({LineTo:{x:i+d,y:r+n}}),d>0&&t.push({CurveTo:[{x:i+d*u,y:r+n},{x:i,y:r+n-d*u},{x:i,y:r+n-d}]}),t.push({LineTo:{x:i,y:r+h}}),h>0&&t.push({CurveTo:[{x:i,y:r+h*u},{x:i+h*u,y:r},{x:i+h,y:r}]}),t.push("ClosePath")}function mt({constraints:t,newParentWidth:e,newParentHeight:i,initialParentWidth:r,initialParentHeight:s,objectInitialWidth:n,objectInitialHeight:a,objectInitialPosition:h}){let{horizontalConstraint:o,verticalConstraint:l}=t,d=e-r,u=i-s,c=n,p=a,f=h[0],x=h[1];if(0!==o)if(1===o)f+=d;else if(3===o)f+=d/2;else if(2===o)c=Math.max(1,c+d);else if(4===o){let t=e/r;c*=t,f*=t}if(0!==l)if(1===l)x+=u;else if(3===l)x+=u/2;else if(2===l)p=Math.max(1,p+u);else if(4===l){let t=i/s;p*=t,x*=t}return{width:c,height:p,position:[f,x]}}u(g(),1);export{_ as a,y as b,v as c,ht as d,F as e,U as f,N as g,j as h,W as i,X as j,$ as k,Q as l,K as m,mt as n};
Binary file
Binary file