@forgeax/view 0.2.1-beta-20260924075842

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 (585) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +742 -0
  3. package/dist/modules/backend.mjs +54 -0
  4. package/dist/modules/backend.mjs.map +7 -0
  5. package/dist/modules/browser.mjs +180 -0
  6. package/dist/modules/browser.mjs.map +7 -0
  7. package/dist/modules/carrier-contract.mjs +38 -0
  8. package/dist/modules/carrier-contract.mjs.map +7 -0
  9. package/dist/modules/carrier.mjs +13 -0
  10. package/dist/modules/carrier.mjs.map +7 -0
  11. package/dist/modules/chunks/chunk-2ASWB6IX.mjs +225 -0
  12. package/dist/modules/chunks/chunk-2ASWB6IX.mjs.map +7 -0
  13. package/dist/modules/chunks/chunk-2IJKOG2F.mjs +801 -0
  14. package/dist/modules/chunks/chunk-2IJKOG2F.mjs.map +7 -0
  15. package/dist/modules/chunks/chunk-2K3BBJ5S.mjs +9 -0
  16. package/dist/modules/chunks/chunk-2K3BBJ5S.mjs.map +7 -0
  17. package/dist/modules/chunks/chunk-32GD5LL6.mjs +482 -0
  18. package/dist/modules/chunks/chunk-32GD5LL6.mjs.map +7 -0
  19. package/dist/modules/chunks/chunk-3B4KFAEC.mjs +10 -0
  20. package/dist/modules/chunks/chunk-3B4KFAEC.mjs.map +7 -0
  21. package/dist/modules/chunks/chunk-46O5WX43.mjs +25 -0
  22. package/dist/modules/chunks/chunk-46O5WX43.mjs.map +7 -0
  23. package/dist/modules/chunks/chunk-47J5JXAB.mjs +237 -0
  24. package/dist/modules/chunks/chunk-47J5JXAB.mjs.map +7 -0
  25. package/dist/modules/chunks/chunk-4BXQOUDQ.mjs +17 -0
  26. package/dist/modules/chunks/chunk-4BXQOUDQ.mjs.map +7 -0
  27. package/dist/modules/chunks/chunk-4GQWYU2V.mjs +126 -0
  28. package/dist/modules/chunks/chunk-4GQWYU2V.mjs.map +7 -0
  29. package/dist/modules/chunks/chunk-4N5X2PRQ.mjs +48 -0
  30. package/dist/modules/chunks/chunk-4N5X2PRQ.mjs.map +7 -0
  31. package/dist/modules/chunks/chunk-4WXD2KYX.mjs +56 -0
  32. package/dist/modules/chunks/chunk-4WXD2KYX.mjs.map +7 -0
  33. package/dist/modules/chunks/chunk-6ZWWVAZK.mjs +468 -0
  34. package/dist/modules/chunks/chunk-6ZWWVAZK.mjs.map +7 -0
  35. package/dist/modules/chunks/chunk-73UZNRHN.mjs +296 -0
  36. package/dist/modules/chunks/chunk-73UZNRHN.mjs.map +7 -0
  37. package/dist/modules/chunks/chunk-7ITLCRND.mjs +10 -0
  38. package/dist/modules/chunks/chunk-7ITLCRND.mjs.map +7 -0
  39. package/dist/modules/chunks/chunk-7TGVWKH7.mjs +59 -0
  40. package/dist/modules/chunks/chunk-7TGVWKH7.mjs.map +7 -0
  41. package/dist/modules/chunks/chunk-7URFF53W.mjs +42 -0
  42. package/dist/modules/chunks/chunk-7URFF53W.mjs.map +7 -0
  43. package/dist/modules/chunks/chunk-7YSDRIFN.mjs +14 -0
  44. package/dist/modules/chunks/chunk-7YSDRIFN.mjs.map +7 -0
  45. package/dist/modules/chunks/chunk-AAFVCQPK.mjs +52 -0
  46. package/dist/modules/chunks/chunk-AAFVCQPK.mjs.map +7 -0
  47. package/dist/modules/chunks/chunk-AEK7ZESQ.mjs +18 -0
  48. package/dist/modules/chunks/chunk-AEK7ZESQ.mjs.map +7 -0
  49. package/dist/modules/chunks/chunk-AL6ZWIEU.mjs +42 -0
  50. package/dist/modules/chunks/chunk-AL6ZWIEU.mjs.map +7 -0
  51. package/dist/modules/chunks/chunk-ALT7XVMQ.mjs +73 -0
  52. package/dist/modules/chunks/chunk-ALT7XVMQ.mjs.map +7 -0
  53. package/dist/modules/chunks/chunk-ASI2HBE6.mjs +116 -0
  54. package/dist/modules/chunks/chunk-ASI2HBE6.mjs.map +7 -0
  55. package/dist/modules/chunks/chunk-ATWGCH7I.mjs +174 -0
  56. package/dist/modules/chunks/chunk-ATWGCH7I.mjs.map +7 -0
  57. package/dist/modules/chunks/chunk-C45U6IIY.mjs +692 -0
  58. package/dist/modules/chunks/chunk-C45U6IIY.mjs.map +7 -0
  59. package/dist/modules/chunks/chunk-C7R3YRA7.mjs +98 -0
  60. package/dist/modules/chunks/chunk-C7R3YRA7.mjs.map +7 -0
  61. package/dist/modules/chunks/chunk-CRMICXKN.mjs +87 -0
  62. package/dist/modules/chunks/chunk-CRMICXKN.mjs.map +7 -0
  63. package/dist/modules/chunks/chunk-CUH2G6UF.mjs +81 -0
  64. package/dist/modules/chunks/chunk-CUH2G6UF.mjs.map +7 -0
  65. package/dist/modules/chunks/chunk-D7GWRZLL.mjs +77 -0
  66. package/dist/modules/chunks/chunk-D7GWRZLL.mjs.map +7 -0
  67. package/dist/modules/chunks/chunk-DBWUIBE3.mjs +10 -0
  68. package/dist/modules/chunks/chunk-DBWUIBE3.mjs.map +7 -0
  69. package/dist/modules/chunks/chunk-DQWVWWUU.mjs +77 -0
  70. package/dist/modules/chunks/chunk-DQWVWWUU.mjs.map +7 -0
  71. package/dist/modules/chunks/chunk-DZZ2WFEU.mjs +122 -0
  72. package/dist/modules/chunks/chunk-DZZ2WFEU.mjs.map +7 -0
  73. package/dist/modules/chunks/chunk-E4UIAN26.mjs +58 -0
  74. package/dist/modules/chunks/chunk-E4UIAN26.mjs.map +7 -0
  75. package/dist/modules/chunks/chunk-EJGBVKFE.mjs +77 -0
  76. package/dist/modules/chunks/chunk-EJGBVKFE.mjs.map +7 -0
  77. package/dist/modules/chunks/chunk-EPSTTHWV.mjs +173 -0
  78. package/dist/modules/chunks/chunk-EPSTTHWV.mjs.map +7 -0
  79. package/dist/modules/chunks/chunk-ER7T6QJ3.mjs +64 -0
  80. package/dist/modules/chunks/chunk-ER7T6QJ3.mjs.map +7 -0
  81. package/dist/modules/chunks/chunk-FD4BAJ6K.mjs +389 -0
  82. package/dist/modules/chunks/chunk-FD4BAJ6K.mjs.map +7 -0
  83. package/dist/modules/chunks/chunk-FJM6WWIY.mjs +80 -0
  84. package/dist/modules/chunks/chunk-FJM6WWIY.mjs.map +7 -0
  85. package/dist/modules/chunks/chunk-FKCQYDLX.mjs +162 -0
  86. package/dist/modules/chunks/chunk-FKCQYDLX.mjs.map +7 -0
  87. package/dist/modules/chunks/chunk-FLGC65SR.mjs +10 -0
  88. package/dist/modules/chunks/chunk-FLGC65SR.mjs.map +7 -0
  89. package/dist/modules/chunks/chunk-FMCACPX5.mjs +289 -0
  90. package/dist/modules/chunks/chunk-FMCACPX5.mjs.map +7 -0
  91. package/dist/modules/chunks/chunk-FOBRLUQV.mjs +51 -0
  92. package/dist/modules/chunks/chunk-FOBRLUQV.mjs.map +7 -0
  93. package/dist/modules/chunks/chunk-FV3DSKZB.mjs +33 -0
  94. package/dist/modules/chunks/chunk-FV3DSKZB.mjs.map +7 -0
  95. package/dist/modules/chunks/chunk-G7BAFAGO.mjs +98 -0
  96. package/dist/modules/chunks/chunk-G7BAFAGO.mjs.map +7 -0
  97. package/dist/modules/chunks/chunk-GQBZMCTK.mjs +145 -0
  98. package/dist/modules/chunks/chunk-GQBZMCTK.mjs.map +7 -0
  99. package/dist/modules/chunks/chunk-GYWIY7AL.mjs +131 -0
  100. package/dist/modules/chunks/chunk-GYWIY7AL.mjs.map +7 -0
  101. package/dist/modules/chunks/chunk-H3KNBALD.mjs +256 -0
  102. package/dist/modules/chunks/chunk-H3KNBALD.mjs.map +7 -0
  103. package/dist/modules/chunks/chunk-H3M22JDL.mjs +144 -0
  104. package/dist/modules/chunks/chunk-H3M22JDL.mjs.map +7 -0
  105. package/dist/modules/chunks/chunk-HES3DNTM.mjs +40 -0
  106. package/dist/modules/chunks/chunk-HES3DNTM.mjs.map +7 -0
  107. package/dist/modules/chunks/chunk-I5BFP7SS.mjs +2392 -0
  108. package/dist/modules/chunks/chunk-I5BFP7SS.mjs.map +7 -0
  109. package/dist/modules/chunks/chunk-IGRMZYRD.mjs +15 -0
  110. package/dist/modules/chunks/chunk-IGRMZYRD.mjs.map +7 -0
  111. package/dist/modules/chunks/chunk-IKNGC766.mjs +321 -0
  112. package/dist/modules/chunks/chunk-IKNGC766.mjs.map +7 -0
  113. package/dist/modules/chunks/chunk-IVHNYKZB.mjs +35 -0
  114. package/dist/modules/chunks/chunk-IVHNYKZB.mjs.map +7 -0
  115. package/dist/modules/chunks/chunk-JHOURMYW.mjs +101 -0
  116. package/dist/modules/chunks/chunk-JHOURMYW.mjs.map +7 -0
  117. package/dist/modules/chunks/chunk-JURXMRFA.mjs +282 -0
  118. package/dist/modules/chunks/chunk-JURXMRFA.mjs.map +7 -0
  119. package/dist/modules/chunks/chunk-JWZIREC3.mjs +18 -0
  120. package/dist/modules/chunks/chunk-JWZIREC3.mjs.map +7 -0
  121. package/dist/modules/chunks/chunk-KHRTIZ56.mjs +1400 -0
  122. package/dist/modules/chunks/chunk-KHRTIZ56.mjs.map +7 -0
  123. package/dist/modules/chunks/chunk-KLJZZ23J.mjs +102 -0
  124. package/dist/modules/chunks/chunk-KLJZZ23J.mjs.map +7 -0
  125. package/dist/modules/chunks/chunk-KNBAYU5I.mjs +49 -0
  126. package/dist/modules/chunks/chunk-KNBAYU5I.mjs.map +7 -0
  127. package/dist/modules/chunks/chunk-KSZNCFU4.mjs +125 -0
  128. package/dist/modules/chunks/chunk-KSZNCFU4.mjs.map +7 -0
  129. package/dist/modules/chunks/chunk-L45W6KM6.mjs +158 -0
  130. package/dist/modules/chunks/chunk-L45W6KM6.mjs.map +7 -0
  131. package/dist/modules/chunks/chunk-LERMYZRC.mjs +239 -0
  132. package/dist/modules/chunks/chunk-LERMYZRC.mjs.map +7 -0
  133. package/dist/modules/chunks/chunk-LKJCXYSJ.mjs +91 -0
  134. package/dist/modules/chunks/chunk-LKJCXYSJ.mjs.map +7 -0
  135. package/dist/modules/chunks/chunk-MBS3EICT.mjs +25 -0
  136. package/dist/modules/chunks/chunk-MBS3EICT.mjs.map +7 -0
  137. package/dist/modules/chunks/chunk-MUOQZPVH.mjs +609 -0
  138. package/dist/modules/chunks/chunk-MUOQZPVH.mjs.map +7 -0
  139. package/dist/modules/chunks/chunk-MVEPGFSB.mjs +1 -0
  140. package/dist/modules/chunks/chunk-MVEPGFSB.mjs.map +7 -0
  141. package/dist/modules/chunks/chunk-NBJKLWJ5.mjs +42 -0
  142. package/dist/modules/chunks/chunk-NBJKLWJ5.mjs.map +7 -0
  143. package/dist/modules/chunks/chunk-NBLGKTEM.mjs +86 -0
  144. package/dist/modules/chunks/chunk-NBLGKTEM.mjs.map +7 -0
  145. package/dist/modules/chunks/chunk-NI7CS3I2.mjs +110 -0
  146. package/dist/modules/chunks/chunk-NI7CS3I2.mjs.map +7 -0
  147. package/dist/modules/chunks/chunk-NJH2OJFC.mjs +2113 -0
  148. package/dist/modules/chunks/chunk-NJH2OJFC.mjs.map +7 -0
  149. package/dist/modules/chunks/chunk-OBK4LIJB.mjs +20 -0
  150. package/dist/modules/chunks/chunk-OBK4LIJB.mjs.map +7 -0
  151. package/dist/modules/chunks/chunk-PEUT3FW7.mjs +1 -0
  152. package/dist/modules/chunks/chunk-PEUT3FW7.mjs.map +7 -0
  153. package/dist/modules/chunks/chunk-PRZOWPDN.mjs +66 -0
  154. package/dist/modules/chunks/chunk-PRZOWPDN.mjs.map +7 -0
  155. package/dist/modules/chunks/chunk-Q4RXBGQS.mjs +55 -0
  156. package/dist/modules/chunks/chunk-Q4RXBGQS.mjs.map +7 -0
  157. package/dist/modules/chunks/chunk-QBHBKOIL.mjs +55 -0
  158. package/dist/modules/chunks/chunk-QBHBKOIL.mjs.map +7 -0
  159. package/dist/modules/chunks/chunk-QD6CCRMG.mjs +20 -0
  160. package/dist/modules/chunks/chunk-QD6CCRMG.mjs.map +7 -0
  161. package/dist/modules/chunks/chunk-QF4V23GW.mjs +39 -0
  162. package/dist/modules/chunks/chunk-QF4V23GW.mjs.map +7 -0
  163. package/dist/modules/chunks/chunk-QK6W7MJO.mjs +42 -0
  164. package/dist/modules/chunks/chunk-QK6W7MJO.mjs.map +7 -0
  165. package/dist/modules/chunks/chunk-QL7V6DK7.mjs +34 -0
  166. package/dist/modules/chunks/chunk-QL7V6DK7.mjs.map +7 -0
  167. package/dist/modules/chunks/chunk-QLBQQKRI.mjs +25 -0
  168. package/dist/modules/chunks/chunk-QLBQQKRI.mjs.map +7 -0
  169. package/dist/modules/chunks/chunk-QLZQGZDC.mjs +418 -0
  170. package/dist/modules/chunks/chunk-QLZQGZDC.mjs.map +7 -0
  171. package/dist/modules/chunks/chunk-QSKQZGK7.mjs +1625 -0
  172. package/dist/modules/chunks/chunk-QSKQZGK7.mjs.map +7 -0
  173. package/dist/modules/chunks/chunk-QURKBAG4.mjs +25 -0
  174. package/dist/modules/chunks/chunk-QURKBAG4.mjs.map +7 -0
  175. package/dist/modules/chunks/chunk-R274XBEH.mjs +53 -0
  176. package/dist/modules/chunks/chunk-R274XBEH.mjs.map +7 -0
  177. package/dist/modules/chunks/chunk-R4I4JEY5.mjs +77 -0
  178. package/dist/modules/chunks/chunk-R4I4JEY5.mjs.map +7 -0
  179. package/dist/modules/chunks/chunk-RR6L6VVR.mjs +9 -0
  180. package/dist/modules/chunks/chunk-RR6L6VVR.mjs.map +7 -0
  181. package/dist/modules/chunks/chunk-RXF7SBBZ.mjs +125 -0
  182. package/dist/modules/chunks/chunk-RXF7SBBZ.mjs.map +7 -0
  183. package/dist/modules/chunks/chunk-SR66S6EJ.mjs +138 -0
  184. package/dist/modules/chunks/chunk-SR66S6EJ.mjs.map +7 -0
  185. package/dist/modules/chunks/chunk-SSQMQJ52.mjs +27 -0
  186. package/dist/modules/chunks/chunk-SSQMQJ52.mjs.map +7 -0
  187. package/dist/modules/chunks/chunk-TP26TASL.mjs +20 -0
  188. package/dist/modules/chunks/chunk-TP26TASL.mjs.map +7 -0
  189. package/dist/modules/chunks/chunk-TSAEK5P3.mjs +50 -0
  190. package/dist/modules/chunks/chunk-TSAEK5P3.mjs.map +7 -0
  191. package/dist/modules/chunks/chunk-UAY27HT3.mjs +68 -0
  192. package/dist/modules/chunks/chunk-UAY27HT3.mjs.map +7 -0
  193. package/dist/modules/chunks/chunk-UDLIWGWS.mjs +103 -0
  194. package/dist/modules/chunks/chunk-UDLIWGWS.mjs.map +7 -0
  195. package/dist/modules/chunks/chunk-UDVQHPWV.mjs +89 -0
  196. package/dist/modules/chunks/chunk-UDVQHPWV.mjs.map +7 -0
  197. package/dist/modules/chunks/chunk-UM23W3G7.mjs +237 -0
  198. package/dist/modules/chunks/chunk-UM23W3G7.mjs.map +7 -0
  199. package/dist/modules/chunks/chunk-VDZJWEAA.mjs +214 -0
  200. package/dist/modules/chunks/chunk-VDZJWEAA.mjs.map +7 -0
  201. package/dist/modules/chunks/chunk-VIGOJWSO.mjs +42 -0
  202. package/dist/modules/chunks/chunk-VIGOJWSO.mjs.map +7 -0
  203. package/dist/modules/chunks/chunk-VY3S5BWI.mjs +284 -0
  204. package/dist/modules/chunks/chunk-VY3S5BWI.mjs.map +7 -0
  205. package/dist/modules/chunks/chunk-VZXGRZYU.mjs +47 -0
  206. package/dist/modules/chunks/chunk-VZXGRZYU.mjs.map +7 -0
  207. package/dist/modules/chunks/chunk-W5DMQZB5.mjs +42 -0
  208. package/dist/modules/chunks/chunk-W5DMQZB5.mjs.map +7 -0
  209. package/dist/modules/chunks/chunk-WOMHSTVZ.mjs +918 -0
  210. package/dist/modules/chunks/chunk-WOMHSTVZ.mjs.map +7 -0
  211. package/dist/modules/chunks/chunk-XFQT7XCG.mjs +42 -0
  212. package/dist/modules/chunks/chunk-XFQT7XCG.mjs.map +7 -0
  213. package/dist/modules/chunks/chunk-XJZEVRYX.mjs +98 -0
  214. package/dist/modules/chunks/chunk-XJZEVRYX.mjs.map +7 -0
  215. package/dist/modules/chunks/chunk-XUYFV23R.mjs +317 -0
  216. package/dist/modules/chunks/chunk-XUYFV23R.mjs.map +7 -0
  217. package/dist/modules/chunks/chunk-Y5HXCPPQ.mjs +58 -0
  218. package/dist/modules/chunks/chunk-Y5HXCPPQ.mjs.map +7 -0
  219. package/dist/modules/chunks/chunk-YTHGRKGI.mjs +147 -0
  220. package/dist/modules/chunks/chunk-YTHGRKGI.mjs.map +7 -0
  221. package/dist/modules/chunks/chunk-YVQSDKAO.mjs +341 -0
  222. package/dist/modules/chunks/chunk-YVQSDKAO.mjs.map +7 -0
  223. package/dist/modules/chunks/chunk-YYXQDUVT.mjs +123 -0
  224. package/dist/modules/chunks/chunk-YYXQDUVT.mjs.map +7 -0
  225. package/dist/modules/chunks/chunk-ZFXZ2NUI.mjs +142 -0
  226. package/dist/modules/chunks/chunk-ZFXZ2NUI.mjs.map +7 -0
  227. package/dist/modules/chunks/chunk-ZLNWF4ET.mjs +9 -0
  228. package/dist/modules/chunks/chunk-ZLNWF4ET.mjs.map +7 -0
  229. package/dist/modules/chunks/chunk-ZLU5QW2O.mjs +9 -0
  230. package/dist/modules/chunks/chunk-ZLU5QW2O.mjs.map +7 -0
  231. package/dist/modules/chunks/chunk-ZNZPYE2V.mjs +28 -0
  232. package/dist/modules/chunks/chunk-ZNZPYE2V.mjs.map +7 -0
  233. package/dist/modules/chunks/core-564N45MO.mjs +7480 -0
  234. package/dist/modules/chunks/core-564N45MO.mjs.map +7 -0
  235. package/dist/modules/chunks/css-BKH4SVJG.mjs +8 -0
  236. package/dist/modules/chunks/css-BKH4SVJG.mjs.map +7 -0
  237. package/dist/modules/chunks/engine-javascript-PDVIGNGR.mjs +3241 -0
  238. package/dist/modules/chunks/engine-javascript-PDVIGNGR.mjs.map +7 -0
  239. package/dist/modules/chunks/github-dark-default-6HVTHEWF.mjs +8 -0
  240. package/dist/modules/chunks/github-dark-default-6HVTHEWF.mjs.map +7 -0
  241. package/dist/modules/chunks/github-light-default-LAXRA6XL.mjs +8 -0
  242. package/dist/modules/chunks/github-light-default-LAXRA6XL.mjs.map +7 -0
  243. package/dist/modules/chunks/glsl-UC3YWUD2.mjs +18 -0
  244. package/dist/modules/chunks/glsl-UC3YWUD2.mjs.map +7 -0
  245. package/dist/modules/chunks/html-FRVIUV63.mjs +19 -0
  246. package/dist/modules/chunks/html-FRVIUV63.mjs.map +7 -0
  247. package/dist/modules/chunks/javascript-LN3OC7S2.mjs +8 -0
  248. package/dist/modules/chunks/javascript-LN3OC7S2.mjs.map +7 -0
  249. package/dist/modules/chunks/json-5CUGWTOP.mjs +11 -0
  250. package/dist/modules/chunks/json-5CUGWTOP.mjs.map +7 -0
  251. package/dist/modules/chunks/json5-YZQI5VNO.mjs +11 -0
  252. package/dist/modules/chunks/json5-YZQI5VNO.mjs.map +7 -0
  253. package/dist/modules/chunks/jsonc-SWID6VOZ.mjs +11 -0
  254. package/dist/modules/chunks/jsonc-SWID6VOZ.mjs.map +7 -0
  255. package/dist/modules/chunks/jsx-A7RDCLJO.mjs +11 -0
  256. package/dist/modules/chunks/jsx-A7RDCLJO.mjs.map +7 -0
  257. package/dist/modules/chunks/markdown-QTCU5KP5.mjs +11 -0
  258. package/dist/modules/chunks/markdown-QTCU5KP5.mjs.map +7 -0
  259. package/dist/modules/chunks/python-LAZONBIB.mjs +11 -0
  260. package/dist/modules/chunks/python-LAZONBIB.mjs.map +7 -0
  261. package/dist/modules/chunks/rust-XWTPJFJO.mjs +11 -0
  262. package/dist/modules/chunks/rust-XWTPJFJO.mjs.map +7 -0
  263. package/dist/modules/chunks/scss-CFXRHUUW.mjs +15 -0
  264. package/dist/modules/chunks/scss-CFXRHUUW.mjs.map +7 -0
  265. package/dist/modules/chunks/shellscript-OHO3LCVU.mjs +11 -0
  266. package/dist/modules/chunks/shellscript-OHO3LCVU.mjs.map +7 -0
  267. package/dist/modules/chunks/toml-IOHFZJ5B.mjs +11 -0
  268. package/dist/modules/chunks/toml-IOHFZJ5B.mjs.map +7 -0
  269. package/dist/modules/chunks/tsx-2E6WNX2E.mjs +11 -0
  270. package/dist/modules/chunks/tsx-2E6WNX2E.mjs.map +7 -0
  271. package/dist/modules/chunks/typescript-PBKAS54P.mjs +11 -0
  272. package/dist/modules/chunks/typescript-PBKAS54P.mjs.map +7 -0
  273. package/dist/modules/chunks/wgsl-PS6QPRLZ.mjs +11 -0
  274. package/dist/modules/chunks/wgsl-PS6QPRLZ.mjs.map +7 -0
  275. package/dist/modules/chunks/xml-JECR2ACB.mjs +18 -0
  276. package/dist/modules/chunks/xml-JECR2ACB.mjs.map +7 -0
  277. package/dist/modules/chunks/yaml-P2SV4LOE.mjs +11 -0
  278. package/dist/modules/chunks/yaml-P2SV4LOE.mjs.map +7 -0
  279. package/dist/modules/cli-contributions.mjs +32 -0
  280. package/dist/modules/cli-contributions.mjs.map +7 -0
  281. package/dist/modules/cli.mjs +14 -0
  282. package/dist/modules/cli.mjs.map +7 -0
  283. package/dist/modules/command-executor.mjs +65 -0
  284. package/dist/modules/command-executor.mjs.map +7 -0
  285. package/dist/modules/commands.mjs +10 -0
  286. package/dist/modules/commands.mjs.map +7 -0
  287. package/dist/modules/embedded.mjs +18608 -0
  288. package/dist/modules/embedded.mjs.map +7 -0
  289. package/dist/modules/extension-bridge.mjs +18 -0
  290. package/dist/modules/extension-bridge.mjs.map +7 -0
  291. package/dist/modules/frontend-root.mjs +61 -0
  292. package/dist/modules/frontend-root.mjs.map +7 -0
  293. package/dist/modules/index.mjs +784 -0
  294. package/dist/modules/index.mjs.map +7 -0
  295. package/dist/modules/page.mjs +45 -0
  296. package/dist/modules/page.mjs.map +7 -0
  297. package/dist/modules/pages/scene.mjs +18 -0
  298. package/dist/modules/pages/scene.mjs.map +7 -0
  299. package/dist/modules/plugin.mjs +56 -0
  300. package/dist/modules/plugin.mjs.map +7 -0
  301. package/dist/modules/plugins/asset/frontend.mjs +23 -0
  302. package/dist/modules/plugins/asset/frontend.mjs.map +7 -0
  303. package/dist/modules/plugins/asset/i18n.mjs +15 -0
  304. package/dist/modules/plugins/asset/i18n.mjs.map +7 -0
  305. package/dist/modules/plugins/asset/identity.mjs +42 -0
  306. package/dist/modules/plugins/asset/identity.mjs.map +7 -0
  307. package/dist/modules/plugins/asset/schema.mjs +10 -0
  308. package/dist/modules/plugins/asset/schema.mjs.map +7 -0
  309. package/dist/modules/plugins/asset/ui.mjs +16 -0
  310. package/dist/modules/plugins/asset/ui.mjs.map +7 -0
  311. package/dist/modules/plugins/content-browser/frontend.mjs +17 -0
  312. package/dist/modules/plugins/content-browser/frontend.mjs.map +7 -0
  313. package/dist/modules/plugins/content-browser/i18n.mjs +15 -0
  314. package/dist/modules/plugins/content-browser/i18n.mjs.map +7 -0
  315. package/dist/modules/plugins/content-browser/identity.mjs +22 -0
  316. package/dist/modules/plugins/content-browser/identity.mjs.map +7 -0
  317. package/dist/modules/plugins/content-browser/schema.mjs +12 -0
  318. package/dist/modules/plugins/content-browser/schema.mjs.map +7 -0
  319. package/dist/modules/plugins/content-browser/ui.mjs +15 -0
  320. package/dist/modules/plugins/content-browser/ui.mjs.map +7 -0
  321. package/dist/modules/plugins/display/api.mjs +10 -0
  322. package/dist/modules/plugins/display/api.mjs.map +7 -0
  323. package/dist/modules/plugins/display/backend.mjs +16 -0
  324. package/dist/modules/plugins/display/backend.mjs.map +7 -0
  325. package/dist/modules/plugins/display/carrier-contract.mjs +38 -0
  326. package/dist/modules/plugins/display/carrier-contract.mjs.map +7 -0
  327. package/dist/modules/plugins/display/carrier.mjs +13 -0
  328. package/dist/modules/plugins/display/carrier.mjs.map +7 -0
  329. package/dist/modules/plugins/display/effects.mjs +8 -0
  330. package/dist/modules/plugins/display/effects.mjs.map +7 -0
  331. package/dist/modules/plugins/display/frontend.mjs +14 -0
  332. package/dist/modules/plugins/display/frontend.mjs.map +7 -0
  333. package/dist/modules/plugins/display/i18n.mjs +58 -0
  334. package/dist/modules/plugins/display/i18n.mjs.map +7 -0
  335. package/dist/modules/plugins/display/identity.mjs +30 -0
  336. package/dist/modules/plugins/display/identity.mjs.map +7 -0
  337. package/dist/modules/plugins/display/page-broker.mjs +12 -0
  338. package/dist/modules/plugins/display/page-broker.mjs.map +7 -0
  339. package/dist/modules/plugins/display/schema.mjs +40 -0
  340. package/dist/modules/plugins/display/schema.mjs.map +7 -0
  341. package/dist/modules/plugins/display/ui.mjs +9 -0
  342. package/dist/modules/plugins/display/ui.mjs.map +7 -0
  343. package/dist/modules/plugins/inspector/frontend.mjs +17 -0
  344. package/dist/modules/plugins/inspector/frontend.mjs.map +7 -0
  345. package/dist/modules/plugins/inspector/i18n.mjs +15 -0
  346. package/dist/modules/plugins/inspector/i18n.mjs.map +7 -0
  347. package/dist/modules/plugins/inspector/identity.mjs +22 -0
  348. package/dist/modules/plugins/inspector/identity.mjs.map +7 -0
  349. package/dist/modules/plugins/inspector/schema.mjs +12 -0
  350. package/dist/modules/plugins/inspector/schema.mjs.map +7 -0
  351. package/dist/modules/plugins/inspector/ui.mjs +16 -0
  352. package/dist/modules/plugins/inspector/ui.mjs.map +7 -0
  353. package/dist/modules/plugins/material/frontend.mjs +25 -0
  354. package/dist/modules/plugins/material/frontend.mjs.map +7 -0
  355. package/dist/modules/plugins/material/i18n.mjs +15 -0
  356. package/dist/modules/plugins/material/i18n.mjs.map +7 -0
  357. package/dist/modules/plugins/material/identity.mjs +60 -0
  358. package/dist/modules/plugins/material/identity.mjs.map +7 -0
  359. package/dist/modules/plugins/material/schema.mjs +47 -0
  360. package/dist/modules/plugins/material/schema.mjs.map +7 -0
  361. package/dist/modules/plugins/material/ui.mjs +28 -0
  362. package/dist/modules/plugins/material/ui.mjs.map +7 -0
  363. package/dist/modules/plugins/mesh/frontend.mjs +23 -0
  364. package/dist/modules/plugins/mesh/frontend.mjs.map +7 -0
  365. package/dist/modules/plugins/mesh/i18n.mjs +15 -0
  366. package/dist/modules/plugins/mesh/i18n.mjs.map +7 -0
  367. package/dist/modules/plugins/mesh/identity.mjs +54 -0
  368. package/dist/modules/plugins/mesh/identity.mjs.map +7 -0
  369. package/dist/modules/plugins/mesh/schema.mjs +10 -0
  370. package/dist/modules/plugins/mesh/schema.mjs.map +7 -0
  371. package/dist/modules/plugins/mesh/ui.mjs +26 -0
  372. package/dist/modules/plugins/mesh/ui.mjs.map +7 -0
  373. package/dist/modules/plugins/plugins/api.mjs +11 -0
  374. package/dist/modules/plugins/plugins/api.mjs.map +7 -0
  375. package/dist/modules/plugins/plugins/backend.mjs +21 -0
  376. package/dist/modules/plugins/plugins/backend.mjs.map +7 -0
  377. package/dist/modules/plugins/plugins/cli.mjs +12 -0
  378. package/dist/modules/plugins/plugins/cli.mjs.map +7 -0
  379. package/dist/modules/plugins/plugins/frontend.mjs +17 -0
  380. package/dist/modules/plugins/plugins/frontend.mjs.map +7 -0
  381. package/dist/modules/plugins/plugins/i18n.mjs +15 -0
  382. package/dist/modules/plugins/plugins/i18n.mjs.map +7 -0
  383. package/dist/modules/plugins/plugins/identity.mjs +26 -0
  384. package/dist/modules/plugins/plugins/identity.mjs.map +7 -0
  385. package/dist/modules/plugins/plugins/runtime.mjs +50 -0
  386. package/dist/modules/plugins/plugins/runtime.mjs.map +7 -0
  387. package/dist/modules/plugins/plugins/schema.mjs +12 -0
  388. package/dist/modules/plugins/plugins/schema.mjs.map +7 -0
  389. package/dist/modules/plugins/plugins/ui/panel.mjs +14 -0
  390. package/dist/modules/plugins/plugins/ui/panel.mjs.map +7 -0
  391. package/dist/modules/plugins/plugins/ui.mjs +15 -0
  392. package/dist/modules/plugins/plugins/ui.mjs.map +7 -0
  393. package/dist/modules/plugins/scene/frontend.mjs +18 -0
  394. package/dist/modules/plugins/scene/frontend.mjs.map +7 -0
  395. package/dist/modules/plugins/scene/identity.mjs +14 -0
  396. package/dist/modules/plugins/scene/identity.mjs.map +7 -0
  397. package/dist/modules/plugins/scene-tree/frontend.mjs +17 -0
  398. package/dist/modules/plugins/scene-tree/frontend.mjs.map +7 -0
  399. package/dist/modules/plugins/scene-tree/i18n.mjs +15 -0
  400. package/dist/modules/plugins/scene-tree/i18n.mjs.map +7 -0
  401. package/dist/modules/plugins/scene-tree/identity.mjs +22 -0
  402. package/dist/modules/plugins/scene-tree/identity.mjs.map +7 -0
  403. package/dist/modules/plugins/scene-tree/schema.mjs +12 -0
  404. package/dist/modules/plugins/scene-tree/schema.mjs.map +7 -0
  405. package/dist/modules/plugins/scene-tree/ui.mjs +16 -0
  406. package/dist/modules/plugins/scene-tree/ui.mjs.map +7 -0
  407. package/dist/modules/plugins/texture/frontend.mjs +23 -0
  408. package/dist/modules/plugins/texture/frontend.mjs.map +7 -0
  409. package/dist/modules/plugins/texture/i18n.mjs +15 -0
  410. package/dist/modules/plugins/texture/i18n.mjs.map +7 -0
  411. package/dist/modules/plugins/texture/identity.mjs +54 -0
  412. package/dist/modules/plugins/texture/identity.mjs.map +7 -0
  413. package/dist/modules/plugins/texture/schema.mjs +10 -0
  414. package/dist/modules/plugins/texture/schema.mjs.map +7 -0
  415. package/dist/modules/plugins/texture/ui.mjs +26 -0
  416. package/dist/modules/plugins/texture/ui.mjs.map +7 -0
  417. package/dist/modules/plugins/viewport/frontend.mjs +27 -0
  418. package/dist/modules/plugins/viewport/frontend.mjs.map +7 -0
  419. package/dist/modules/plugins/viewport/identity.mjs +28 -0
  420. package/dist/modules/plugins/viewport/identity.mjs.map +7 -0
  421. package/dist/modules/plugins/viewport/presentation-identity.mjs +10 -0
  422. package/dist/modules/plugins/viewport/presentation-identity.mjs.map +7 -0
  423. package/dist/modules/plugins/viewport/presentation.mjs +18 -0
  424. package/dist/modules/plugins/viewport/presentation.mjs.map +7 -0
  425. package/dist/modules/plugins/viewport/schema.mjs +18 -0
  426. package/dist/modules/plugins/viewport/schema.mjs.map +7 -0
  427. package/dist/modules/plugins/viewport/workspace-shell.mjs +29 -0
  428. package/dist/modules/plugins/viewport/workspace-shell.mjs.map +7 -0
  429. package/dist/modules/shell/contract.mjs +10 -0
  430. package/dist/modules/shell/contract.mjs.map +7 -0
  431. package/dist/modules/shell/frontend.mjs +14 -0
  432. package/dist/modules/shell/frontend.mjs.map +7 -0
  433. package/dist/modules/shell/layout-zones.mjs +20 -0
  434. package/dist/modules/shell/layout-zones.mjs.map +7 -0
  435. package/dist/modules/start-cli.mjs +57 -0
  436. package/dist/modules/start-cli.mjs.map +7 -0
  437. package/dist/modules/start.mjs +18 -0
  438. package/dist/modules/start.mjs.map +7 -0
  439. package/dist/modules/viewer/catalog/backend.mjs +47 -0
  440. package/dist/modules/viewer/catalog/backend.mjs.map +7 -0
  441. package/dist/modules/viewer/catalog/frontend.mjs +55 -0
  442. package/dist/modules/viewer/catalog/frontend.mjs.map +7 -0
  443. package/dist/modules/viewer/catalog/shared.mjs +43 -0
  444. package/dist/modules/viewer/catalog/shared.mjs.map +7 -0
  445. package/dist/modules/viewer/catalog.mjs +85 -0
  446. package/dist/modules/viewer/catalog.mjs.map +7 -0
  447. package/dist/modules/viewer/cli.mjs +23 -0
  448. package/dist/modules/viewer/cli.mjs.map +7 -0
  449. package/dist/modules/viewer-host/frontend.mjs +65 -0
  450. package/dist/modules/viewer-host/frontend.mjs.map +7 -0
  451. package/dist/modules/viewer-host/page-registry.mjs +27 -0
  452. package/dist/modules/viewer-host/page-registry.mjs.map +7 -0
  453. package/dist/modules/viewer-host/slot-registry.mjs +8 -0
  454. package/dist/modules/viewer-host/slot-registry.mjs.map +7 -0
  455. package/dist/modules/viewer-host.mjs +43 -0
  456. package/dist/modules/viewer-host.mjs.map +7 -0
  457. package/dist/modules/viewer.mjs +85 -0
  458. package/dist/modules/viewer.mjs.map +7 -0
  459. package/dist/modules/workspace/adopt-surface.mjs +16 -0
  460. package/dist/modules/workspace/adopt-surface.mjs.map +7 -0
  461. package/dist/modules/workspace/api.mjs +8 -0
  462. package/dist/modules/workspace/api.mjs.map +7 -0
  463. package/dist/modules/workspace/backend.mjs +23 -0
  464. package/dist/modules/workspace/backend.mjs.map +7 -0
  465. package/dist/modules/workspace/broker.mjs +16 -0
  466. package/dist/modules/workspace/broker.mjs.map +7 -0
  467. package/dist/modules/workspace/cli.mjs +9 -0
  468. package/dist/modules/workspace/cli.mjs.map +7 -0
  469. package/dist/modules/workspace/client.mjs +15 -0
  470. package/dist/modules/workspace/client.mjs.map +7 -0
  471. package/dist/modules/workspace/command-error.mjs +16 -0
  472. package/dist/modules/workspace/command-error.mjs.map +7 -0
  473. package/dist/modules/workspace/contract.mjs +71 -0
  474. package/dist/modules/workspace/contract.mjs.map +7 -0
  475. package/dist/modules/workspace/demo-client.mjs +127 -0
  476. package/dist/modules/workspace/demo-client.mjs.map +7 -0
  477. package/dist/modules/workspace/engine-adapter.mjs +16 -0
  478. package/dist/modules/workspace/engine-adapter.mjs.map +7 -0
  479. package/dist/modules/workspace/engine-presentation.mjs +10 -0
  480. package/dist/modules/workspace/engine-presentation.mjs.map +7 -0
  481. package/dist/modules/workspace/extension-bridge.mjs +18 -0
  482. package/dist/modules/workspace/extension-bridge.mjs.map +7 -0
  483. package/dist/modules/workspace/frontend-plugin.mjs +18 -0
  484. package/dist/modules/workspace/frontend-plugin.mjs.map +7 -0
  485. package/dist/modules/workspace/frontend.mjs +29 -0
  486. package/dist/modules/workspace/frontend.mjs.map +7 -0
  487. package/dist/modules/workspace/id.mjs +8 -0
  488. package/dist/modules/workspace/id.mjs.map +7 -0
  489. package/dist/modules/workspace/inspection-presentation.mjs +12 -0
  490. package/dist/modules/workspace/inspection-presentation.mjs.map +7 -0
  491. package/dist/modules/workspace/locale-bridge.mjs +14 -0
  492. package/dist/modules/workspace/locale-bridge.mjs.map +7 -0
  493. package/dist/modules/workspace/page-title.mjs +13 -0
  494. package/dist/modules/workspace/page-title.mjs.map +7 -0
  495. package/dist/modules/workspace/presentation.mjs +18 -0
  496. package/dist/modules/workspace/presentation.mjs.map +7 -0
  497. package/dist/modules/workspace/preview-surface.mjs +17 -0
  498. package/dist/modules/workspace/preview-surface.mjs.map +7 -0
  499. package/dist/modules/workspace/project-session.mjs +18 -0
  500. package/dist/modules/workspace/project-session.mjs.map +7 -0
  501. package/dist/modules/workspace/render-resize-sync.mjs +12 -0
  502. package/dist/modules/workspace/render-resize-sync.mjs.map +7 -0
  503. package/dist/modules/workspace/resident.mjs +16 -0
  504. package/dist/modules/workspace/resident.mjs.map +7 -0
  505. package/dist/modules/workspace/resource-open.mjs +34 -0
  506. package/dist/modules/workspace/resource-open.mjs.map +7 -0
  507. package/dist/modules/workspace/resource-page.mjs +27 -0
  508. package/dist/modules/workspace/resource-page.mjs.map +7 -0
  509. package/dist/modules/workspace/tool-runtime.mjs +14 -0
  510. package/dist/modules/workspace/tool-runtime.mjs.map +7 -0
  511. package/dist/modules/workspace/view-trace.mjs +60 -0
  512. package/dist/modules/workspace/view-trace.mjs.map +7 -0
  513. package/dist/modules/workspace/workspace-client-connection.mjs +22 -0
  514. package/dist/modules/workspace/workspace-client-connection.mjs.map +7 -0
  515. package/dist/modules/workspace/workspace-recovery.mjs +35 -0
  516. package/dist/modules/workspace/workspace-recovery.mjs.map +7 -0
  517. package/dist/modules/workspace/workspace-state.mjs +12 -0
  518. package/dist/modules/workspace/workspace-state.mjs.map +7 -0
  519. package/dist/modules/workspace-frontend.mjs +17 -0
  520. package/dist/modules/workspace-frontend.mjs.map +7 -0
  521. package/dist/viewer/assets/chunk-CilyBKbf.js +1 -0
  522. package/dist/viewer/assets/core-DSQma37-.js +13 -0
  523. package/dist/viewer/assets/core-DSQma37-.js.map +1 -0
  524. package/dist/viewer/assets/css-Bq1BXecw.js +2 -0
  525. package/dist/viewer/assets/css-Bq1BXecw.js.map +1 -0
  526. package/dist/viewer/assets/css-CWQWazmX.js +1 -0
  527. package/dist/viewer/assets/embedded-D4ZDx--W.js +2 -0
  528. package/dist/viewer/assets/embedded-D4ZDx--W.js.map +1 -0
  529. package/dist/viewer/assets/engine-javascript-BvokIV9O.js +142 -0
  530. package/dist/viewer/assets/engine-javascript-BvokIV9O.js.map +1 -0
  531. package/dist/viewer/assets/github-dark-default-DaDlj-WZ.js +2 -0
  532. package/dist/viewer/assets/github-dark-default-DaDlj-WZ.js.map +1 -0
  533. package/dist/viewer/assets/github-light-default-BqhWxAZd.js +2 -0
  534. package/dist/viewer/assets/github-light-default-BqhWxAZd.js.map +1 -0
  535. package/dist/viewer/assets/glsl-BJgVnv11.js +2 -0
  536. package/dist/viewer/assets/glsl-BJgVnv11.js.map +1 -0
  537. package/dist/viewer/assets/html-AaaHGGyt.js +2 -0
  538. package/dist/viewer/assets/html-AaaHGGyt.js.map +1 -0
  539. package/dist/viewer/assets/javascript-BX9W64FE.js +1 -0
  540. package/dist/viewer/assets/javascript-DQODvD07.js +2 -0
  541. package/dist/viewer/assets/javascript-DQODvD07.js.map +1 -0
  542. package/dist/viewer/assets/json-CpcIDpT7.js +2 -0
  543. package/dist/viewer/assets/json-CpcIDpT7.js.map +1 -0
  544. package/dist/viewer/assets/json5-Czq4A7dk.js +2 -0
  545. package/dist/viewer/assets/json5-Czq4A7dk.js.map +1 -0
  546. package/dist/viewer/assets/jsonc-BXDfCMmu.js +2 -0
  547. package/dist/viewer/assets/jsonc-BXDfCMmu.js.map +1 -0
  548. package/dist/viewer/assets/jsx-DAWscEnf.js +2 -0
  549. package/dist/viewer/assets/jsx-DAWscEnf.js.map +1 -0
  550. package/dist/viewer/assets/main-C-2CHTN_.js +15 -0
  551. package/dist/viewer/assets/main-C-2CHTN_.js.map +1 -0
  552. package/dist/viewer/assets/markdown-Cx1FMNw-.js +2 -0
  553. package/dist/viewer/assets/markdown-Cx1FMNw-.js.map +1 -0
  554. package/dist/viewer/assets/panels-entry-Ddhfjgf0.js +46 -0
  555. package/dist/viewer/assets/panels-entry-Ddhfjgf0.js.map +1 -0
  556. package/dist/viewer/assets/python-CYPKjWV9.js +2 -0
  557. package/dist/viewer/assets/python-CYPKjWV9.js.map +1 -0
  558. package/dist/viewer/assets/rust-0e5cNx_V.js +2 -0
  559. package/dist/viewer/assets/rust-0e5cNx_V.js.map +1 -0
  560. package/dist/viewer/assets/scss-B-aKzLbT.js +2 -0
  561. package/dist/viewer/assets/scss-B-aKzLbT.js.map +1 -0
  562. package/dist/viewer/assets/shellscript-CpXD-pSm.js +2 -0
  563. package/dist/viewer/assets/shellscript-CpXD-pSm.js.map +1 -0
  564. package/dist/viewer/assets/style-ClttNKZk.css +2 -0
  565. package/dist/viewer/assets/styles-BXozhwiU.js +11 -0
  566. package/dist/viewer/assets/styles-BXozhwiU.js.map +1 -0
  567. package/dist/viewer/assets/toml-GmchYTXa.js +2 -0
  568. package/dist/viewer/assets/toml-GmchYTXa.js.map +1 -0
  569. package/dist/viewer/assets/tsx-Crj1Bi53.js +2 -0
  570. package/dist/viewer/assets/tsx-Crj1Bi53.js.map +1 -0
  571. package/dist/viewer/assets/typescript-xi0cSHCO.js +2 -0
  572. package/dist/viewer/assets/typescript-xi0cSHCO.js.map +1 -0
  573. package/dist/viewer/assets/wgsl-BoEPRo9U.js +2 -0
  574. package/dist/viewer/assets/wgsl-BoEPRo9U.js.map +1 -0
  575. package/dist/viewer/assets/xml-B8JqQrMD.js +2 -0
  576. package/dist/viewer/assets/xml-B8JqQrMD.js.map +1 -0
  577. package/dist/viewer/assets/yaml-DsIB85X9.js +2 -0
  578. package/dist/viewer/assets/yaml-DsIB85X9.js.map +1 -0
  579. package/dist/viewer/index.html +15 -0
  580. package/dist/viewer/panels.js +1 -0
  581. package/host.pack.json +13 -0
  582. package/package.json +174 -0
  583. package/skills/forgeax-view-cli/SKILL.md +74 -0
  584. package/skills/forgeax-view-start/SKILL.md +202 -0
  585. package/skills/forgeax-view-start/scripts/start-view.mjs +202 -0
@@ -0,0 +1,468 @@
1
+ import {
2
+ ViewWorkspaceShell,
3
+ createBrowserPagePresentation
4
+ } from "./chunk-QSKQZGK7.mjs";
5
+ import {
6
+ FRONTEND_PLUGIN_ID,
7
+ PAGE_TYPE,
8
+ PANEL_CLOSABLE,
9
+ PANEL_LAYOUT,
10
+ SLOT,
11
+ TITLE_I18N_KEY
12
+ } from "./chunk-TSAEK5P3.mjs";
13
+ import {
14
+ attachViewportRenderResizeSync
15
+ } from "./chunk-ALT7XVMQ.mjs";
16
+ import {
17
+ readEnginePresentation
18
+ } from "./chunk-SSQMQJ52.mjs";
19
+ import {
20
+ createWorkspaceStateReader
21
+ } from "./chunk-FJM6WWIY.mjs";
22
+
23
+ // packages/view-plugin-viewport/src/page-input-gate.mjs
24
+ function attachViewportPageInputGate({ element, input, pageType = PAGE_TYPE, document } = {}) {
25
+ const editor = input?.editor;
26
+ if (!element || typeof editor?.setInputAllowed !== "function") return () => {
27
+ };
28
+ const ownerDocument = document ?? element.ownerDocument ?? globalThis.document;
29
+ const sync = () => {
30
+ const page = typeof element.closest === "function" ? element.closest("[data-forgeax-view-dock-page]") : null;
31
+ const pageHidden = page?.getAttribute?.("aria-hidden") === "true";
32
+ const activePage = ownerDocument?.documentElement?.dataset?.forgeaxViewActivePage;
33
+ const active = !pageHidden && (activePage === void 0 || activePage === pageType);
34
+ editor.setInputAllowed(active);
35
+ };
36
+ const observer = typeof MutationObserver === "function" ? new MutationObserver(sync) : void 0;
37
+ const root = ownerDocument?.documentElement;
38
+ try {
39
+ observer?.observe(root, {
40
+ attributes: true,
41
+ attributeFilter: ["data-forgeax-view-active-page", "aria-hidden"],
42
+ subtree: true
43
+ });
44
+ } catch {
45
+ observer?.disconnect();
46
+ }
47
+ sync();
48
+ return () => {
49
+ observer?.disconnect();
50
+ editor.setInputAllowed(true);
51
+ };
52
+ }
53
+
54
+ // packages/view-plugin-viewport/src/play-toolbar.mjs
55
+ function mountPlayToolbar({ document, element, client }) {
56
+ const toolbar = document.createElement("div");
57
+ toolbar.setAttribute("role", "toolbar");
58
+ toolbar.setAttribute("aria-label", "Editor execution");
59
+ Object.assign(toolbar.style, { display: "flex", gap: "6px", padding: "6px", alignItems: "center", flexShrink: "0" });
60
+ const surface = document.createElement("div");
61
+ Object.assign(surface.style, { position: "relative", flex: "1", minHeight: "0" });
62
+ Object.assign(element.style, { display: "flex", flexDirection: "column", height: "100%" });
63
+ element.append(toolbar, surface);
64
+ let state;
65
+ let navigationSpeed = 4;
66
+ let errorText = "";
67
+ let disposed = false;
68
+ let playRequest;
69
+ const pending = /* @__PURE__ */ new Set();
70
+ const buttons = [];
71
+ const status = document.createElement("span");
72
+ status.title = "WASD/QE: move \xB7 Shift: boost \xB7 RMB drag: look / fly \xB7 RMB + wheel: speed \xB7 MMB: pan \xB7 Alt + drag: orbit/pan/dolly \xB7 F: focus \xB7 Esc: release";
73
+ status.setAttribute("role", "status");
74
+ status.style.color = "var(--fx-color-text-secondary)";
75
+ const navHint = document.createElement("div");
76
+ navHint.textContent = "WASD/QE move \xB7 Shift boost \xB7 RMB look/fly \xB7 wheel speed \xB7 F focus";
77
+ Object.assign(navHint.style, {
78
+ position: "absolute",
79
+ right: "8px",
80
+ bottom: "6px",
81
+ zIndex: "1",
82
+ fontSize: "11px",
83
+ lineHeight: "1.4",
84
+ pointerEvents: "none",
85
+ userSelect: "none",
86
+ color: "var(--fx-color-text-secondary)",
87
+ opacity: "0.75",
88
+ textShadow: "0 1px 2px var(--fx-color-background, rgba(0,0,0,0.5))"
89
+ });
90
+ surface.append(navHint);
91
+ const args = () => ({ targetId: state.play.target.targetId, targetGeneration: state.play.target.generation });
92
+ const control = () => state?.targetBinding === "play" ? state?.preview?.camera?.control : void 0;
93
+ const running = () => state?.play?.phase === "running" && state?.targetBinding === "play";
94
+ const add = (label, run, available) => {
95
+ const button2 = document.createElement("button");
96
+ button2.textContent = label;
97
+ button2.type = "button";
98
+ button2.className = "fx-button fx-button--compact";
99
+ button2.setAttribute("data-action", `editor.${label.toLowerCase()}`);
100
+ button2.addEventListener("click", async () => {
101
+ pending.add(label);
102
+ errorText = "";
103
+ render();
104
+ try {
105
+ await run();
106
+ if (!disposed) state = await client.getState();
107
+ } catch (error) {
108
+ if (!disposed) errorText = error.hint ?? error.message;
109
+ } finally {
110
+ pending.delete(label);
111
+ if (!disposed) render();
112
+ }
113
+ });
114
+ buttons.push({ button: button2, label, available });
115
+ toolbar.append(button2);
116
+ };
117
+ add("Play", async () => {
118
+ const controller = new AbortController();
119
+ playRequest = controller;
120
+ try {
121
+ const options = { signal: controller.signal };
122
+ const opened = await client.call("play.start", { projectId: state.project.id }, options);
123
+ controller.signal.throwIfAborted();
124
+ state = opened;
125
+ render();
126
+ const target = { targetId: opened.play.target.targetId, targetGeneration: opened.play.target.generation };
127
+ await client.call("play.ready", target, options);
128
+ await client.call("camera.get", target, options);
129
+ } catch (error) {
130
+ if (!controller.signal.aborted) throw error;
131
+ } finally {
132
+ if (playRequest === controller) playRequest = void 0;
133
+ }
134
+ }, () => !!state?.project && !state?.play);
135
+ add("Stop", async () => {
136
+ playRequest?.abort();
137
+ if (state?.play) await client.call("play.stop", args());
138
+ }, () => !!state?.play || pending.has("Play"));
139
+ add("Eject", () => client.call("target.control", { ...args(), mode: "observer" }), () => running() && control() !== "observer");
140
+ add("Possess", () => client.call("target.control", { ...args(), mode: "player" }), () => running() && control() === "observer");
141
+ add("Editor", () => client.call("target.select", { targetId: state.editorPreview.target.targetId }), () => !!state?.editorPreview && state?.targetBinding === "play");
142
+ add("Game", async () => {
143
+ await client.call("target.select", { targetId: state.play.target.targetId });
144
+ await client.call("camera.get", args());
145
+ }, () => !!state?.play && state?.targetBinding !== "play");
146
+ toolbar.append(status);
147
+ const render = () => {
148
+ for (const { button: button2, label, available } of buttons) {
149
+ const disabled = pending.has(label) || pending.size > 0 && label !== "Stop" || !available();
150
+ if (button2.disabled !== disabled) button2.disabled = disabled;
151
+ }
152
+ const target = state?.targetBinding ?? "editor";
153
+ if (surface.dataset.forgeaxToolTarget !== target) surface.dataset.forgeaxToolTarget = target;
154
+ let nextStatus = errorText || (state?.play ? `${state.targetBinding === "play" ? "Game" : "Editor"} tools \xB7 ${state.play.phase}${control() === "observer" ? " \xB7 Free camera" : ""}` : pending.has("Play") ? "Preparing Play\u2026" : "Editor tools");
155
+ if (!errorText && state?.targetBinding !== "play")
156
+ nextStatus += " \xB7 Speed " + navigationSpeed.toFixed(2);
157
+ if (status.textContent !== nextStatus) status.textContent = nextStatus;
158
+ };
159
+ const reader = createWorkspaceStateReader(client);
160
+ const unsubscribe = reader.subscribe(() => {
161
+ if (!disposed) {
162
+ state = reader.getSnapshot();
163
+ render();
164
+ }
165
+ });
166
+ render();
167
+ return {
168
+ surface,
169
+ setNavigationSpeed(speed) {
170
+ navigationSpeed = speed;
171
+ if (!disposed) render();
172
+ },
173
+ dispose() {
174
+ disposed = true;
175
+ playRequest?.abort();
176
+ unsubscribe();
177
+ toolbar.remove();
178
+ surface.remove();
179
+ }
180
+ };
181
+ }
182
+
183
+ // packages/view-plugin-viewport/src/editor-surface.mjs
184
+ function fitEditorSurface(surface) {
185
+ const previous = surface.getAttribute?.("style");
186
+ Object.assign(surface.style, {
187
+ width: "100%",
188
+ height: "100%",
189
+ maxWidth: "100%",
190
+ maxHeight: "100%",
191
+ position: "relative",
192
+ transform: "none",
193
+ overflow: "hidden"
194
+ });
195
+ return () => {
196
+ if (previous == null) surface.removeAttribute?.("style");
197
+ else surface.setAttribute?.("style", previous);
198
+ };
199
+ }
200
+
201
+ // packages/view-plugin-viewport/src/engine-fatal-banner.mjs
202
+ var ENGINE_FATAL_ID = "forgeax-fatal";
203
+ var BANNER_CLASS = "fx-engine-fatal-banner";
204
+ var MESSAGE_CLASS = "fx-engine-fatal-banner__message";
205
+ var ACTIONS_CLASS = "fx-engine-fatal-banner__actions";
206
+ function fatalElement(document) {
207
+ if (!document) return null;
208
+ return document.getElementById?.(ENGINE_FATAL_ID) ?? document.querySelector?.(`#${ENGINE_FATAL_ID}`) ?? null;
209
+ }
210
+ function resolveHost(host) {
211
+ return typeof host === "function" ? host() : host;
212
+ }
213
+ function canvasHost(document, fallback) {
214
+ const canvas = document.querySelector?.(".fx-view-viewport-surface #app") ?? document.querySelector?.("#app");
215
+ if (canvas?.parentElement) return canvas.parentElement;
216
+ return document.querySelector?.('.fx-view-viewport-surface [data-forgeax-view-workspace="targets"]') ?? resolveHost(fallback);
217
+ }
218
+ function readFatalText(notice) {
219
+ return typeof notice?.textContent === "string" ? notice.textContent.trim() : "";
220
+ }
221
+ function isEngineFatalShown(notice) {
222
+ return notice?.style?.display === "grid" && readFatalText(notice) !== "";
223
+ }
224
+ function button(document, label, ariaLabel) {
225
+ const node = document.createElement("button");
226
+ node.type = "button";
227
+ node.className = "fx-button fx-button--compact fx-button--quiet";
228
+ node.textContent = label;
229
+ node.setAttribute("aria-label", ariaLabel);
230
+ return node;
231
+ }
232
+ function createBanner(document, { onCopy, onClose }) {
233
+ const banner = document.createElement("div");
234
+ banner.className = `${BANNER_CLASS} fx-ui`;
235
+ banner.setAttribute("role", "alert");
236
+ banner.hidden = true;
237
+ const message = document.createElement("pre");
238
+ message.className = MESSAGE_CLASS;
239
+ const actions = document.createElement("div");
240
+ actions.className = ACTIONS_CLASS;
241
+ const copy = button(document, "Copy error", "Copy the error reason");
242
+ const close = button(document, "Close", "Dismiss the error banner");
243
+ copy.addEventListener("click", (event) => {
244
+ event.preventDefault();
245
+ event.stopPropagation();
246
+ onCopy(message.textContent?.trim() ?? "", copy);
247
+ });
248
+ close.addEventListener("click", (event) => {
249
+ event.preventDefault();
250
+ event.stopPropagation();
251
+ onClose();
252
+ });
253
+ actions.append(copy, close);
254
+ banner.append(message, actions);
255
+ return { banner, message, copy };
256
+ }
257
+ function placeBanner(banner, host) {
258
+ if (!host || banner.parentNode === host) return;
259
+ host.append?.(banner);
260
+ }
261
+ function attachEngineFatalBanner({
262
+ document = globalThis.document,
263
+ host
264
+ } = {}) {
265
+ if (!document?.createElement) return () => {
266
+ };
267
+ const { banner, message, copy } = createBanner(document, {
268
+ onCopy(text, button2) {
269
+ if (!text || typeof navigator?.clipboard?.writeText !== "function") return;
270
+ void navigator.clipboard.writeText(text).then(() => {
271
+ button2.textContent = "Copied";
272
+ setTimeout(() => {
273
+ if (button2.isConnected) button2.textContent = "Copy error";
274
+ }, 2e3);
275
+ }).catch(() => {
276
+ });
277
+ },
278
+ onClose() {
279
+ fatalElement(document)?.style?.removeProperty?.("display");
280
+ banner.hidden = true;
281
+ }
282
+ });
283
+ const sync = () => {
284
+ placeBanner(banner, canvasHost(document, host));
285
+ const notice = fatalElement(document);
286
+ const text = readFatalText(notice);
287
+ if (!isEngineFatalShown(notice)) {
288
+ banner.hidden = true;
289
+ return;
290
+ }
291
+ if (message.textContent !== text) message.textContent = text;
292
+ if (copy.textContent !== "Copy error") copy.textContent = "Copy error";
293
+ banner.hidden = false;
294
+ };
295
+ if (typeof MutationObserver !== "function") {
296
+ sync();
297
+ return () => banner.remove?.();
298
+ }
299
+ const noticeObserver = new MutationObserver(sync);
300
+ let observed;
301
+ const watchNotice = () => {
302
+ const notice = fatalElement(document);
303
+ if (!notice || notice === observed) {
304
+ sync();
305
+ return;
306
+ }
307
+ observed = notice;
308
+ noticeObserver.observe(notice, {
309
+ attributes: true,
310
+ attributeFilter: ["style"],
311
+ childList: true,
312
+ subtree: true,
313
+ characterData: true
314
+ });
315
+ sync();
316
+ };
317
+ watchNotice();
318
+ const root = document.documentElement ?? document.body;
319
+ const rootObserver = root ? new MutationObserver(watchNotice) : void 0;
320
+ rootObserver?.observe(root, { childList: true, subtree: true });
321
+ return () => {
322
+ noticeObserver.disconnect();
323
+ rootObserver?.disconnect();
324
+ banner.remove?.();
325
+ };
326
+ }
327
+
328
+ // packages/view-plugin-viewport/src/frontend.mjs
329
+ function claimViewportPanel(panelHost) {
330
+ return panelHost.claim({
331
+ id: SLOT,
332
+ pageType: PAGE_TYPE,
333
+ titleKey: TITLE_I18N_KEY,
334
+ activity: { labelKey: TITLE_I18N_KEY, icon: "box" },
335
+ layout: PANEL_LAYOUT,
336
+ closable: PANEL_CLOSABLE,
337
+ dockTitleHidden: true
338
+ });
339
+ }
340
+ function liveWorkspacePresentation(ctx, config, { api, document }) {
341
+ const read = () => readEnginePresentation(config, ctx);
342
+ return new Proxy({}, {
343
+ get(_, prop) {
344
+ if (prop === "surfacePlacement") return "shell";
345
+ const workspace = read();
346
+ if (prop === "attach") {
347
+ return async (input) => {
348
+ const remove = await workspace?.attach?.(input);
349
+ const surface = input.element;
350
+ if (!surface?.style || !surface.parentElement) return remove;
351
+ const onContextMenu = (event) => {
352
+ event.preventDefault();
353
+ };
354
+ surface.addEventListener?.("contextmenu", onContextMenu);
355
+ const restoreFit = fitEditorSurface(surface);
356
+ const detachResize = attachViewportRenderResizeSync({
357
+ api,
358
+ surface,
359
+ target: input.target
360
+ });
361
+ return async () => {
362
+ detachResize();
363
+ surface.removeEventListener?.("contextmenu", onContextMenu);
364
+ restoreFit();
365
+ await remove?.();
366
+ };
367
+ };
368
+ }
369
+ if (prop === "createSurface") {
370
+ if (typeof workspace?.createSurface === "function") return workspace.createSurface;
371
+ return (input) => (input?.document ?? document)?.getElementById?.("app-shell") ?? null;
372
+ }
373
+ return workspace?.[prop];
374
+ }
375
+ });
376
+ }
377
+ var viewportSurfacePlugin = {
378
+ name: FRONTEND_PLUGIN_ID,
379
+ inject: ["viewOperationClient", "viewPlayPresentation"],
380
+ provide: ["viewWorkspaceShell"],
381
+ async apply(ctx, config = {}) {
382
+ const document = config.document ?? globalThis.document;
383
+ const api = ctx.get("viewOperationClient");
384
+ const element = config.viewportSurface;
385
+ if (!element || !document?.createElement) return;
386
+ const workspace = readEnginePresentation(config, ctx);
387
+ if (workspace && !ctx.get("engineWorkspacePresentation", false)) {
388
+ ctx.provide("engineWorkspacePresentation", workspace);
389
+ }
390
+ const presentation = {
391
+ workspace: liveWorkspacePresentation(ctx, config, { api, document }),
392
+ display: createBrowserPagePresentation({ document })
393
+ };
394
+ let shell;
395
+ let play;
396
+ try {
397
+ play = mountPlayToolbar({ document, element, client: api });
398
+ const mainSurface = document.createElement("div");
399
+ Object.assign(mainSurface.style, {
400
+ flex: "1",
401
+ minWidth: "0",
402
+ minHeight: "0",
403
+ width: "100%",
404
+ height: "100%",
405
+ position: "relative"
406
+ });
407
+ Object.assign(play.surface.style, { display: "flex" });
408
+ play.surface.append(mainSurface);
409
+ ctx.effect(() => ctx.get("viewPlayPresentation").attach(mainSurface));
410
+ shell = new ViewWorkspaceShell({
411
+ document,
412
+ element: mainSurface,
413
+ mountId: element.id,
414
+ api,
415
+ presentation,
416
+ resourceBrowser: false,
417
+ inspectorPanel: false,
418
+ presentationOnly: true,
419
+ onNavigationSpeed: (speed) => play.setNavigationSpeed(speed)
420
+ });
421
+ ctx.provide("viewWorkspaceShell", shell);
422
+ ctx.effect(() => attachEngineFatalBanner({ document, host: mainSurface }));
423
+ ctx.effect(() => attachViewportPageInputGate({
424
+ element,
425
+ input: ctx.get("engineWorkspaceInput", false),
426
+ pageType: PAGE_TYPE,
427
+ document
428
+ }));
429
+ } catch (error) {
430
+ await shell?.dispose();
431
+ play?.dispose();
432
+ throw error;
433
+ }
434
+ ctx.effect(() => async () => {
435
+ await shell?.dispose();
436
+ play?.dispose();
437
+ });
438
+ }
439
+ };
440
+ var viewViewportFrontendPlugin = {
441
+ name: FRONTEND_PLUGIN_ID,
442
+ inject: ["viewOperationClient", "viewScenePage"],
443
+ async apply(ctx, config = {}) {
444
+ const panelHost = config.panelHost ?? ctx.get?.("panelHost", false);
445
+ if (!panelHost) return;
446
+ const unclaim = claimViewportPanel(panelHost);
447
+ ctx.effect(() => unclaim);
448
+ const document = config.document ?? globalThis.document;
449
+ if (!document?.createElement) return;
450
+ const element = document.createElement("div");
451
+ element.id = config.workspace?.mountId ?? "forgeax-view-workspace";
452
+ element.className = "fx-view-viewport-surface";
453
+ await panelHost.waitForSlot(SLOT);
454
+ const unmount = panelHost.mount(SLOT, element);
455
+ ctx.effect(() => () => unmount?.());
456
+ await ctx.plugin({
457
+ ...viewportSurfacePlugin,
458
+ name: `${FRONTEND_PLUGIN_ID}.surface`
459
+ }, { ...config, viewportSurface: element });
460
+ }
461
+ };
462
+ var frontend_default = viewViewportFrontendPlugin;
463
+
464
+ export {
465
+ viewViewportFrontendPlugin,
466
+ frontend_default
467
+ };
468
+ //# sourceMappingURL=chunk-6ZWWVAZK.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/view-plugin-viewport/src/page-input-gate.mjs", "../../../packages/view-plugin-viewport/src/play-toolbar.mjs", "../../../packages/view-plugin-viewport/src/editor-surface.mjs", "../../../packages/view-plugin-viewport/src/engine-fatal-banner.mjs", "../../../packages/view-plugin-viewport/src/frontend.mjs"],
4
+ "sourcesContent": ["import { PAGE_TYPE } from './identity.mjs';\n\n/**\n * Engine's browser input backend listens on window. When the Editor page is\n * not the active page tab, drop those samples so a sibling preview cannot\n * drive the viewport camera or game.\n */\nexport function attachViewportPageInputGate({ element, input, pageType = PAGE_TYPE, document } = {}) {\n const editor = input?.editor;\n if (!element || typeof editor?.setInputAllowed !== 'function') return () => {};\n const ownerDocument = document ?? element.ownerDocument ?? globalThis.document;\n const sync = () => {\n const page = typeof element.closest === 'function'\n ? element.closest('[data-forgeax-view-dock-page]')\n : null;\n const pageHidden = page?.getAttribute?.('aria-hidden') === 'true';\n const activePage = ownerDocument?.documentElement?.dataset?.forgeaxViewActivePage;\n const active = !pageHidden && (activePage === undefined || activePage === pageType);\n editor.setInputAllowed(active);\n };\n const observer = typeof MutationObserver === 'function'\n ? new MutationObserver(sync)\n : undefined;\n const root = ownerDocument?.documentElement;\n try {\n observer?.observe(root, {\n attributes: true,\n attributeFilter: ['data-forgeax-view-active-page', 'aria-hidden'],\n subtree: true,\n });\n } catch {\n observer?.disconnect();\n }\n sync();\n return () => {\n observer?.disconnect();\n editor.setInputAllowed(true);\n };\n}\n", "import { createWorkspaceStateReader } from '@forgeax/view-workspace-core/workspace-state';\n\n/** Presentation commands use the same target API as the CLI and object panels. */\nexport function mountPlayToolbar({ document, element, client }) {\n const toolbar = document.createElement('div');\n toolbar.setAttribute('role', 'toolbar');\n toolbar.setAttribute('aria-label', 'Editor execution');\n Object.assign(toolbar.style, { display: 'flex', gap: '6px', padding: '6px', alignItems: 'center', flexShrink: '0' });\n const surface = document.createElement('div');\n Object.assign(surface.style, { position: 'relative', flex: '1', minHeight: '0' });\n Object.assign(element.style, { display: 'flex', flexDirection: 'column', height: '100%' });\n element.append(toolbar, surface);\n let state;\n let navigationSpeed = 4;\n let errorText = '';\n let disposed = false;\n let playRequest;\n const pending = new Set();\n const buttons = [];\n const status = document.createElement('span');\n status.title = 'WASD/QE: move \u00B7 Shift: boost \u00B7 RMB drag: look / fly \u00B7 RMB + wheel: speed \u00B7 MMB: pan \u00B7 Alt + drag: orbit/pan/dolly \u00B7 F: focus \u00B7 Esc: release';\n status.setAttribute('role', 'status');\n status.style.color = 'var(--fx-color-text-secondary)';\n // Always-visible navigation hint in the viewport corner; pointer-events stay\n // off so it never intercepts camera input.\n const navHint = document.createElement('div');\n navHint.textContent = 'WASD/QE move \u00B7 Shift boost \u00B7 RMB look/fly \u00B7 wheel speed \u00B7 F focus';\n Object.assign(navHint.style, {\n position: 'absolute', right: '8px', bottom: '6px', zIndex: '1',\n fontSize: '11px', lineHeight: '1.4', pointerEvents: 'none', userSelect: 'none',\n color: 'var(--fx-color-text-secondary)', opacity: '0.75',\n textShadow: '0 1px 2px var(--fx-color-background, rgba(0,0,0,0.5))',\n });\n surface.append(navHint);\n const args = () => ({ targetId: state.play.target.targetId, targetGeneration: state.play.target.generation });\n const control = () => state?.targetBinding === 'play' ? state?.preview?.camera?.control : undefined;\n const running = () => state?.play?.phase === 'running' && state?.targetBinding === 'play';\n const add = (label, run, available) => {\n const button = document.createElement('button');\n button.textContent = label;\n button.type = 'button';\n button.className = 'fx-button fx-button--compact';\n button.setAttribute('data-action', `editor.${label.toLowerCase()}`);\n button.addEventListener('click', async () => {\n pending.add(label); errorText = ''; render();\n try { await run(); if (!disposed) state = await client.getState(); }\n catch (error) { if (!disposed) errorText = error.hint ?? error.message; }\n finally { pending.delete(label); if (!disposed) render(); }\n });\n buttons.push({ button, label, available }); toolbar.append(button);\n };\n add('Play', async () => {\n const controller = new AbortController();\n playRequest = controller;\n try {\n const options = { signal: controller.signal };\n const opened = await client.call('play.start', { projectId: state.project.id }, options);\n controller.signal.throwIfAborted();\n state = opened;\n render();\n const target = { targetId: opened.play.target.targetId, targetGeneration: opened.play.target.generation };\n await client.call('play.ready', target, options);\n await client.call('camera.get', target, options);\n } catch (error) {\n if (!controller.signal.aborted) throw error;\n } finally {\n if (playRequest === controller) playRequest = undefined;\n }\n }, () => !!state?.project && !state?.play);\n add('Stop', async () => {\n playRequest?.abort();\n if (state?.play) await client.call('play.stop', args());\n }, () => !!state?.play || pending.has('Play'));\n add('Eject', () => client.call('target.control', { ...args(), mode: 'observer' }), () => running() && control() !== 'observer');\n add('Possess', () => client.call('target.control', { ...args(), mode: 'player' }), () => running() && control() === 'observer');\n add('Editor', () => client.call('target.select', { targetId: state.editorPreview.target.targetId }), () => !!state?.editorPreview && state?.targetBinding === 'play');\n add('Game', async () => {\n await client.call('target.select', { targetId: state.play.target.targetId });\n await client.call('camera.get', args());\n }, () => !!state?.play && state?.targetBinding !== 'play');\n toolbar.append(status);\n const render = () => {\n for (const { button, label, available } of buttons) {\n const disabled = pending.has(label) || (pending.size > 0 && label !== 'Stop') || !available();\n if (button.disabled !== disabled) button.disabled = disabled;\n }\n const target = state?.targetBinding ?? 'editor';\n if (surface.dataset.forgeaxToolTarget !== target) surface.dataset.forgeaxToolTarget = target;\n let nextStatus = errorText || (state?.play\n ? `${state.targetBinding === 'play' ? 'Game' : 'Editor'} tools \u00B7 ${state.play.phase}${control() === 'observer' ? ' \u00B7 Free camera' : ''}`\n : pending.has('Play') ? 'Preparing Play\u2026' : 'Editor tools');\n if (!errorText && state?.targetBinding !== 'play')\n nextStatus += ' \u00B7 Speed ' + navigationSpeed.toFixed(2);\n if (status.textContent !== nextStatus) status.textContent = nextStatus;\n };\n const reader = createWorkspaceStateReader(client);\n const unsubscribe = reader.subscribe(() => { if (!disposed) { state = reader.getSnapshot(); render(); } });\n render();\n return { surface,\n setNavigationSpeed(speed) { navigationSpeed = speed; if (!disposed) render(); },\n dispose() { disposed = true; playRequest?.abort(); unsubscribe(); toolbar.remove(); surface.remove(); } };\n}\n", "/** Fit the borrowed Editor container without a transformed or cross-tree overlay. */\nexport function fitEditorSurface(surface) {\n const previous = surface.getAttribute?.('style');\n Object.assign(surface.style, {\n width: '100%', height: '100%', maxWidth: '100%', maxHeight: '100%',\n position: 'relative', transform: 'none', overflow: 'hidden',\n });\n return () => {\n if (previous == null) surface.removeAttribute?.('style');\n else surface.setAttribute?.('style', previous);\n };\n}\n", "const ENGINE_FATAL_ID = 'forgeax-fatal';\nconst BANNER_CLASS = 'fx-engine-fatal-banner';\nconst MESSAGE_CLASS = 'fx-engine-fatal-banner__message';\nconst ACTIONS_CLASS = 'fx-engine-fatal-banner__actions';\n\nfunction fatalElement(document) {\n if (!document) return null;\n return document.getElementById?.(ENGINE_FATAL_ID)\n ?? document.querySelector?.(`#${ENGINE_FATAL_ID}`)\n ?? null;\n}\n\nfunction resolveHost(host) {\n return typeof host === 'function' ? host() : host;\n}\n\n/** Canvas box: #app-shell wraps #app. Fall back to the View targets cell. */\nfunction canvasHost(document, fallback) {\n const canvas = document.querySelector?.('.fx-view-viewport-surface #app')\n ?? document.querySelector?.('#app');\n if (canvas?.parentElement) return canvas.parentElement;\n return document.querySelector?.('.fx-view-viewport-surface [data-forgeax-view-workspace=\"targets\"]')\n ?? resolveHost(fallback);\n}\n\nfunction readFatalText(notice) {\n return typeof notice?.textContent === 'string' ? notice.textContent.trim() : '';\n}\n\n/** Engine's generated overlay has no event. show() sets #forgeax-fatal text and inline display:grid. */\nfunction isEngineFatalShown(notice) {\n return notice?.style?.display === 'grid' && readFatalText(notice) !== '';\n}\n\nfunction button(document, label, ariaLabel) {\n const node = document.createElement('button');\n node.type = 'button';\n node.className = 'fx-button fx-button--compact fx-button--quiet';\n node.textContent = label;\n node.setAttribute('aria-label', ariaLabel);\n return node;\n}\n\nfunction createBanner(document, { onCopy, onClose }) {\n const banner = document.createElement('div');\n banner.className = `${BANNER_CLASS} fx-ui`;\n banner.setAttribute('role', 'alert');\n banner.hidden = true;\n const message = document.createElement('pre');\n message.className = MESSAGE_CLASS;\n const actions = document.createElement('div');\n actions.className = ACTIONS_CLASS;\n const copy = button(document, 'Copy error', 'Copy the error reason');\n const close = button(document, 'Close', 'Dismiss the error banner');\n copy.addEventListener('click', (event) => {\n event.preventDefault();\n event.stopPropagation();\n onCopy(message.textContent?.trim() ?? '', copy);\n });\n close.addEventListener('click', (event) => {\n event.preventDefault();\n event.stopPropagation();\n onClose();\n });\n actions.append(copy, close);\n banner.append(message, actions);\n return { banner, message, copy };\n}\n\nfunction placeBanner(banner, host) {\n if (!host || banner.parentNode === host) return;\n host.append?.(banner);\n}\n\n/**\n * Engine does not publish a fatal event. This watches the generated overlay\n * node: id=forgeax-fatal, inline style.display=grid, non-empty textContent.\n * The banner is View DOM, absolutely positioned on the canvas box.\n */\nexport function attachEngineFatalBanner({\n document = globalThis.document,\n host,\n} = {}) {\n if (!document?.createElement) return () => {};\n const { banner, message, copy } = createBanner(document, {\n onCopy(text, button) {\n if (!text || typeof navigator?.clipboard?.writeText !== 'function') return;\n void navigator.clipboard.writeText(text).then(() => {\n button.textContent = 'Copied';\n setTimeout(() => {\n if (button.isConnected) button.textContent = 'Copy error';\n }, 2000);\n }).catch(() => {});\n },\n onClose() {\n // Restore Engine's initial hidden overlay. Keep the node and its text;\n // show() looks it up by id and writes display:grid again.\n fatalElement(document)?.style?.removeProperty?.('display');\n banner.hidden = true;\n },\n });\n\n const sync = () => {\n placeBanner(banner, canvasHost(document, host));\n const notice = fatalElement(document);\n const text = readFatalText(notice);\n if (!isEngineFatalShown(notice)) {\n banner.hidden = true;\n return;\n }\n if (message.textContent !== text) message.textContent = text;\n if (copy.textContent !== 'Copy error') copy.textContent = 'Copy error';\n banner.hidden = false;\n };\n\n if (typeof MutationObserver !== 'function') {\n sync();\n return () => banner.remove?.();\n }\n\n const noticeObserver = new MutationObserver(sync);\n let observed;\n const watchNotice = () => {\n const notice = fatalElement(document);\n if (!notice || notice === observed) {\n sync();\n return;\n }\n observed = notice;\n noticeObserver.observe(notice, {\n attributes: true,\n attributeFilter: ['style'],\n childList: true,\n subtree: true,\n characterData: true,\n });\n sync();\n };\n\n watchNotice();\n const root = document.documentElement ?? document.body;\n const rootObserver = root ? new MutationObserver(watchNotice) : undefined;\n rootObserver?.observe(root, { childList: true, subtree: true });\n return () => {\n noticeObserver.disconnect();\n rootObserver?.disconnect();\n banner.remove?.();\n };\n}\n", "import { readEnginePresentation } from '@forgeax/view-workspace-core/engine-presentation';\nimport { createBrowserPagePresentation, ViewWorkspaceShell } from './workspace-shell.mjs';\nimport { PAGE_TYPE, PANEL_CLOSABLE, PANEL_LAYOUT, FRONTEND_PLUGIN_ID, SLOT, TITLE_I18N_KEY } from './identity.mjs';\nimport { attachViewportRenderResizeSync } from './render-resize-sync.mjs';\nimport { attachViewportPageInputGate } from './page-input-gate.mjs';\nimport { mountPlayToolbar } from './play-toolbar.mjs';\nimport { fitEditorSurface } from './editor-surface.mjs';\nimport { viewPlayPresentationPlugin } from './play-presentation.mjs';\nimport { attachEngineFatalBanner } from './engine-fatal-banner.mjs';\n\nfunction claimViewportPanel(panelHost) {\n return panelHost.claim({\n id: SLOT, pageType: PAGE_TYPE, titleKey: TITLE_I18N_KEY,\n activity: { labelKey: TITLE_I18N_KEY, icon: 'box' }, layout: PANEL_LAYOUT,\n closable: PANEL_CLOSABLE,\n dockTitleHidden: true,\n });\n}\n\nfunction liveWorkspacePresentation(ctx, config, { api, document }) {\n const read = () => readEnginePresentation(config, ctx);\n return new Proxy({}, {\n get(_, prop) {\n if (prop === 'surfacePlacement') return 'shell';\n const workspace = read();\n if (prop === 'attach') {\n return async (input) => {\n const remove = await workspace?.attach?.(input);\n const surface = input.element;\n if (!surface?.style || !surface.parentElement) return remove;\n const onContextMenu = (event) => {\n event.preventDefault();\n };\n surface.addEventListener?.('contextmenu', onContextMenu);\n const restoreFit = fitEditorSurface(surface);\n const detachResize = attachViewportRenderResizeSync({\n api,\n surface,\n target: input.target,\n });\n return async () => {\n detachResize();\n surface.removeEventListener?.('contextmenu', onContextMenu);\n restoreFit();\n await remove?.();\n };\n };\n }\n if (prop === 'createSurface') {\n if (typeof workspace?.createSurface === 'function') return workspace.createSurface;\n return (input) => (input?.document ?? document)?.getElementById?.('app-shell') ?? null;\n }\n return workspace?.[prop];\n },\n });\n}\n\nconst viewportSurfacePlugin = {\n name: FRONTEND_PLUGIN_ID,\n inject: ['viewOperationClient', 'viewPlayPresentation'],\n provide: ['viewWorkspaceShell'],\n async apply(ctx, config = {}) {\n const document = config.document ?? globalThis.document;\n const api = ctx.get('viewOperationClient');\n const element = config.viewportSurface;\n if (!element || !document?.createElement) return;\n const workspace = readEnginePresentation(config, ctx);\n if (workspace && !ctx.get('engineWorkspacePresentation', false)) {\n ctx.provide('engineWorkspacePresentation', workspace);\n }\n const presentation = {\n workspace: liveWorkspacePresentation(ctx, config, { api, document }),\n display: createBrowserPagePresentation({ document }),\n };\n let shell;\n let play;\n try {\n play = mountPlayToolbar({ document, element, client: api });\n const mainSurface = document.createElement('div');\n Object.assign(mainSurface.style, {\n flex: '1',\n minWidth: '0',\n minHeight: '0',\n width: '100%',\n height: '100%',\n position: 'relative',\n });\n Object.assign(play.surface.style, { display: 'flex' });\n play.surface.append(mainSurface);\n ctx.effect(() => ctx.get('viewPlayPresentation').attach(mainSurface));\n shell = new ViewWorkspaceShell({ document, element: mainSurface, mountId: element.id,\n api, presentation,\n resourceBrowser: false, inspectorPanel: false, presentationOnly: true,\n onNavigationSpeed: speed => play.setNavigationSpeed(speed),\n });\n ctx.provide('viewWorkspaceShell', shell);\n ctx.effect(() => attachEngineFatalBanner({ document, host: mainSurface }));\n ctx.effect(() => attachViewportPageInputGate({\n element,\n input: ctx.get('engineWorkspaceInput', false),\n pageType: PAGE_TYPE,\n document,\n }));\n } catch (error) {\n await shell?.dispose(); play?.dispose(); throw error;\n }\n ctx.effect(() => async () => { await shell?.dispose(); play?.dispose(); });\n },\n};\n\nconst viewViewportFrontendPlugin = {\n name: FRONTEND_PLUGIN_ID,\n inject: ['viewOperationClient', 'viewScenePage'],\n async apply(ctx, config = {}) {\n const panelHost = config.panelHost ?? ctx.get?.('panelHost', false);\n if (!panelHost) return;\n const unclaim = claimViewportPanel(panelHost);\n ctx.effect(() => unclaim);\n // Play/Engine providers suspend only the canvas inside this fill slot.\n // The dock is claimed with the other editor panels as soon as the page exists.\n const document = config.document ?? globalThis.document;\n if (!document?.createElement) return;\n const element = document.createElement('div');\n element.id = config.workspace?.mountId ?? 'forgeax-view-workspace';\n element.className = 'fx-view-viewport-surface';\n await panelHost.waitForSlot(SLOT);\n const unmount = panelHost.mount(SLOT, element);\n ctx.effect(() => () => unmount?.());\n await ctx.plugin({\n ...viewportSurfacePlugin,\n name: `${FRONTEND_PLUGIN_ID}.surface`,\n }, { ...config, viewportSurface: element });\n },\n};\n\nexport { viewViewportFrontendPlugin, viewPlayPresentationPlugin };\nexport default viewViewportFrontendPlugin;\n"],
5
+ "mappings": "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",
6
+ "names": ["button", "button"]
7
+ }