@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,237 @@
1
+ import {
2
+ getLocale,
3
+ subscribeLocale,
4
+ t
5
+ } from "./chunk-PRZOWPDN.mjs";
6
+ import {
7
+ EmptyState,
8
+ InspectorForm,
9
+ OverlayRootProvider,
10
+ PanelHeader
11
+ } from "./chunk-NJH2OJFC.mjs";
12
+ import {
13
+ unwrapWorkspaceInspection
14
+ } from "./chunk-4N5X2PRQ.mjs";
15
+ import {
16
+ RESOURCE_KINDS
17
+ } from "./chunk-EJGBVKFE.mjs";
18
+ import {
19
+ bindWorkspacePreviewSurface
20
+ } from "./chunk-LERMYZRC.mjs";
21
+ import {
22
+ selectWorkspaceResourcePreview,
23
+ selectWorkspaceResourceSubject
24
+ } from "./chunk-FKCQYDLX.mjs";
25
+ import {
26
+ createWorkspaceStateReader
27
+ } from "./chunk-FJM6WWIY.mjs";
28
+ import {
29
+ VIEW_WORKSPACE_TAB_ID
30
+ } from "./chunk-32GD5LL6.mjs";
31
+
32
+ // packages/view-plugin-mesh/src/ui/mount.tsx
33
+ import { createRoot } from "react-dom/client";
34
+
35
+ // packages/view-plugin-mesh/src/ui/MeshPreviewPanel.tsx
36
+ import { useEffect, useMemo, useRef, useState, useSyncExternalStore as useSyncExternalStore2 } from "react";
37
+
38
+ // packages/view-plugin-mesh/src/i18n/useTranslation.ts
39
+ import { useCallback, useSyncExternalStore } from "react";
40
+ function useTranslation() {
41
+ const locale = useSyncExternalStore(subscribeLocale, getLocale, getLocale);
42
+ const t2 = useCallback(
43
+ (key, vars) => t(key, vars),
44
+ [locale]
45
+ );
46
+ return { t: t2, locale };
47
+ }
48
+
49
+ // packages/view-plugin-mesh/src/ui/mesh.css
50
+ var css = "/* packages/view-plugin-mesh/src/ui/mesh.css */\n.fx-asset-editor {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n background: var(--fx-color-surface-canvas);\n color: var(--fx-color-text-primary);\n}\n.fx-asset-preview {\n overflow: hidden;\n}\n.fx-asset-preview-surface {\n display: flex;\n flex: 1 1 auto;\n align-items: stretch;\n justify-content: stretch;\n width: 100%;\n height: 100%;\n min-height: 0;\n min-width: 0;\n position: relative;\n overflow: hidden;\n}\n";
51
+ if (typeof document !== "undefined" && !document.querySelector('style[data-forgeax-css="L2RhdGEvaG9tZS9nYWhvdWxpYW8vYWN0aW9ucy1ydW5uZXIvX3dvcmsvZm9yZ2VheC12aWV3L2ZvcmdlYXgtdmlldy9wYWNrYWdlcy92aWV3LXBsdWdpbi1tZXNoL3NyYy91aS9tZXNoLmNzcw"]')) {
52
+ const style = document.createElement("style");
53
+ style.dataset.forgeaxCss = "L2RhdGEvaG9tZS9nYWhvdWxpYW8vYWN0aW9ucy1ydW5uZXIvX3dvcmsvZm9yZ2VheC12aWV3L2ZvcmdlYXgtdmlldy9wYWNrYWdlcy92aWV3LXBsdWdpbi1tZXNoL3NyYy91aS9tZXNoLmNzcw";
54
+ style.textContent = css;
55
+ document.head.append(style);
56
+ }
57
+
58
+ // packages/view-plugin-mesh/src/ui/MeshPreviewPanel.tsx
59
+ import { jsx, jsxs } from "react/jsx-runtime";
60
+ function MeshPreviewPanel({
61
+ client,
62
+ presentation,
63
+ owner,
64
+ demo = false
65
+ }) {
66
+ const { t: t2 } = useTranslation();
67
+ if (demo || !client) {
68
+ return /* @__PURE__ */ jsx(PreviewEmpty, { title: t2("mesh.previewEmpty"), description: t2("mesh.previewUnavailable") });
69
+ }
70
+ return /* @__PURE__ */ jsx(LivePreview, { client, presentation, owner });
71
+ }
72
+ function PreviewEmpty({ title, description }) {
73
+ return /* @__PURE__ */ jsx("div", { className: "fx-asset-editor fx-asset-preview fx-ui", "data-testid": "panel-mesh-preview", children: /* @__PURE__ */ jsx(EmptyState, { title, description }) });
74
+ }
75
+ function LivePreview({
76
+ client,
77
+ presentation,
78
+ owner
79
+ }) {
80
+ const { t: t2 } = useTranslation();
81
+ const reader = useMemo(() => createWorkspaceStateReader(client), [client]);
82
+ const workspace = useSyncExternalStore2(
83
+ reader.subscribe,
84
+ () => reader.getSnapshot(),
85
+ () => reader.getSnapshot()
86
+ );
87
+ const subject = selectWorkspaceResourceSubject(workspace, RESOURCE_KINDS);
88
+ const preview = selectWorkspaceResourcePreview(workspace, subject?.guid);
89
+ const containerRef = useRef(null);
90
+ const [failure, setFailure] = useState();
91
+ useEffect(() => {
92
+ const container = containerRef.current;
93
+ if (!container || !preview?.target) return void 0;
94
+ const bound = bindWorkspacePreviewSurface({
95
+ presentation,
96
+ target: preview.target,
97
+ container,
98
+ owner,
99
+ api: client,
100
+ editorTargetId: workspace?.editorPreview?.target?.targetId
101
+ });
102
+ if (!bound.ok) {
103
+ setFailure(bound.error);
104
+ return void 0;
105
+ }
106
+ setFailure(void 0);
107
+ return () => {
108
+ void bound.dispose?.();
109
+ };
110
+ }, [
111
+ presentation,
112
+ owner,
113
+ preview?.target,
114
+ preview?.target?.targetId,
115
+ preview?.target?.generation,
116
+ preview?.target?.surfaceId,
117
+ workspace?.editorPreview?.target?.targetId,
118
+ client
119
+ ]);
120
+ if (!subject) return /* @__PURE__ */ jsx(PreviewEmpty, { title: t2("mesh.previewEmpty"), description: t2("mesh.empty") });
121
+ if (!preview?.target) {
122
+ return /* @__PURE__ */ jsx(
123
+ PreviewEmpty,
124
+ {
125
+ title: t2("mesh.previewUnavailable"),
126
+ description: t2("mesh.previewCapabilityMissing")
127
+ }
128
+ );
129
+ }
130
+ return /* @__PURE__ */ jsxs("div", { className: "fx-asset-editor fx-asset-preview fx-ui", "data-testid": "panel-mesh-preview", children: [
131
+ /* @__PURE__ */ jsx(
132
+ "div",
133
+ {
134
+ ref: containerRef,
135
+ className: "fx-asset-preview-surface",
136
+ "data-forgeax-asset-preview": preview.target.targetId,
137
+ hidden: Boolean(failure)
138
+ }
139
+ ),
140
+ failure ? /* @__PURE__ */ jsx(
141
+ EmptyState,
142
+ {
143
+ title: t2("mesh.previewUnavailable"),
144
+ description: failure.hint ?? failure.expected ?? t2("mesh.previewCapabilityMissing")
145
+ }
146
+ ) : null
147
+ ] });
148
+ }
149
+
150
+ // packages/view-plugin-mesh/src/ui/MeshPropertiesPanel.tsx
151
+ import { useEffect as useEffect2, useMemo as useMemo2, useState as useState2, useSyncExternalStore as useSyncExternalStore3 } from "react";
152
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
153
+ function MeshPropertiesPanel({
154
+ client,
155
+ demo = false
156
+ }) {
157
+ const { t: t2 } = useTranslation();
158
+ if (demo || !client) {
159
+ return /* @__PURE__ */ jsx2("div", { className: "fx-asset-editor fx-ui", "data-testid": "panel-mesh-properties", children: /* @__PURE__ */ jsx2(EmptyState, { title: t2("mesh.unavailable"), description: t2("mesh.empty") }) });
160
+ }
161
+ return /* @__PURE__ */ jsx2(LiveProperties, { client });
162
+ }
163
+ function LiveProperties({ client }) {
164
+ const { t: t2 } = useTranslation();
165
+ const reader = useMemo2(() => createWorkspaceStateReader(client), [client]);
166
+ const workspace = useSyncExternalStore3(
167
+ reader.subscribe,
168
+ () => reader.getSnapshot(),
169
+ () => reader.getSnapshot()
170
+ );
171
+ const subject = selectWorkspaceResourceSubject(workspace, RESOURCE_KINDS);
172
+ const projectId = workspace?.project?.id;
173
+ const [inspection, setInspection] = useState2(null);
174
+ const [failed, setFailed] = useState2(false);
175
+ useEffect2(() => {
176
+ if (!subject?.guid || !projectId) {
177
+ setInspection(null);
178
+ setFailed(false);
179
+ return void 0;
180
+ }
181
+ const controller = new AbortController();
182
+ void client.inspectAsset(subject.guid, {
183
+ projectId,
184
+ tabId: VIEW_WORKSPACE_TAB_ID,
185
+ signal: controller.signal
186
+ }).then((result) => {
187
+ if (controller.signal.aborted) return;
188
+ setInspection(unwrapWorkspaceInspection(result));
189
+ setFailed(false);
190
+ }).catch(() => {
191
+ if (!controller.signal.aborted) {
192
+ setInspection(null);
193
+ setFailed(true);
194
+ }
195
+ });
196
+ return () => controller.abort();
197
+ }, [client, subject?.guid, projectId]);
198
+ if (!subject) {
199
+ return /* @__PURE__ */ jsx2("div", { className: "fx-asset-editor fx-ui", "data-testid": "panel-mesh-properties", children: /* @__PURE__ */ jsx2(EmptyState, { title: t2("mesh.empty"), description: t2("mesh.unavailable") }) });
200
+ }
201
+ if (failed) {
202
+ return /* @__PURE__ */ jsx2("div", { className: "fx-asset-editor fx-ui", "data-testid": "panel-mesh-properties", children: /* @__PURE__ */ jsx2(EmptyState, { title: t2("mesh.unavailable"), description: t2("mesh.inspectFailed") }) });
203
+ }
204
+ return /* @__PURE__ */ jsxs2("div", { className: "fx-asset-editor fx-ui", "data-testid": "panel-mesh-properties", "data-view-readonly": "true", children: [
205
+ /* @__PURE__ */ jsx2(PanelHeader, { start: /* @__PURE__ */ jsx2("span", { children: /* @__PURE__ */ jsx2("strong", { children: String(subject.name ?? subject.guid) }) }) }),
206
+ /* @__PURE__ */ jsx2(InspectorForm, { inspection: inspection ?? { guid: subject.guid, asset: subject }, identityTitle: t2("mesh.facts") })
207
+ ] });
208
+ }
209
+
210
+ // packages/view-plugin-mesh/src/ui/mount.tsx
211
+ import { jsx as jsx3 } from "react/jsx-runtime";
212
+ function mountPanel(node, props) {
213
+ if (!props.mountElement) throw new TypeError("mesh panel mount requires mountElement");
214
+ const root = createRoot(props.mountElement);
215
+ root.render(
216
+ /* @__PURE__ */ jsx3(OverlayRootProvider, { root: props.overlayRoot ?? props.mountElement, children: node })
217
+ );
218
+ return async () => root.unmount();
219
+ }
220
+ async function mountMeshPreviewPanel(props) {
221
+ return mountPanel(
222
+ /* @__PURE__ */ jsx3(MeshPreviewPanel, { demo: props.demo, client: props.client, presentation: props.presentation, owner: props.owner }),
223
+ props
224
+ );
225
+ }
226
+ async function mountMeshPropertiesPanel(props) {
227
+ return mountPanel(
228
+ /* @__PURE__ */ jsx3(MeshPropertiesPanel, { demo: props.demo, client: props.client }),
229
+ props
230
+ );
231
+ }
232
+
233
+ export {
234
+ mountMeshPreviewPanel,
235
+ mountMeshPropertiesPanel
236
+ };
237
+ //# sourceMappingURL=chunk-UM23W3G7.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/view-plugin-mesh/src/ui/mount.tsx", "../../../packages/view-plugin-mesh/src/ui/MeshPreviewPanel.tsx", "../../../packages/view-plugin-mesh/src/i18n/useTranslation.ts", "../../../packages/view-plugin-mesh/src/ui/mesh.css", "../../../packages/view-plugin-mesh/src/ui/MeshPropertiesPanel.tsx"],
4
+ "sourcesContent": ["import '@forgeax/view-components/styles.css';\nimport { OverlayRootProvider } from '@forgeax/view-components';\nimport '../i18n/index.mjs';\nimport { createRoot } from 'react-dom/client';\nimport { MeshPreviewPanel } from './MeshPreviewPanel';\nimport { MeshPropertiesPanel } from './MeshPropertiesPanel';\nimport './mesh.css';\n\ntype MountProps = {\n client?: unknown;\n presentation?: unknown;\n owner?: unknown;\n demo?: boolean;\n mountElement: HTMLElement;\n overlayRoot?: HTMLElement;\n};\n\nfunction mountPanel(node: Parameters<ReturnType<typeof createRoot>['render']>[0], props: MountProps) {\n if (!props.mountElement) throw new TypeError('mesh panel mount requires mountElement');\n const root = createRoot(props.mountElement);\n root.render(\n <OverlayRootProvider root={props.overlayRoot ?? props.mountElement}>\n {node}\n </OverlayRootProvider>,\n );\n return async () => root.unmount();\n}\n\nexport async function mountMeshPreviewPanel(props: MountProps) {\n return mountPanel(\n <MeshPreviewPanel demo={props.demo} client={props.client as never} presentation={props.presentation as never} owner={props.owner as never} />,\n props,\n );\n}\n\nexport async function mountMeshPropertiesPanel(props: MountProps) {\n return mountPanel(\n <MeshPropertiesPanel demo={props.demo} client={props.client as never} />,\n props,\n );\n}\n", "import { EmptyState } from '@forgeax/view-components';\nimport { useEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react';\nimport { bindWorkspacePreviewSurface } from '@forgeax/view-workspace-core/preview-surface';\nimport {\n selectWorkspaceResourcePreview,\n selectWorkspaceResourceSubject,\n} from '@forgeax/view-workspace-core/resource-open';\nimport type { ViewWorkspaceClient } from '@forgeax/view-workspace-core/client';\nimport { createWorkspaceStateReader } from '@forgeax/view-workspace-core/workspace-state';\nimport { RESOURCE_KINDS } from '../identity.mjs';\nimport { useTranslation } from '../i18n/useTranslation';\nimport './mesh.css';\n\ntype PreviewOwner = { panelId?: string; pageType?: string };\ntype PreviewTarget = { targetId: string; generation?: number; surfaceId?: string };\ntype PreviewPresentation = {\n surfacePlacement?: string;\n owner?: PreviewOwner;\n createSurface?: (input: {\n target: PreviewTarget;\n document?: Document;\n }) => HTMLElement | null | undefined;\n attach?: (input: {\n target: PreviewTarget;\n element: HTMLElement;\n owner?: PreviewOwner;\n }) => void | (() => void) | Promise<void | (() => void)>;\n};\n\nexport function MeshPreviewPanel({\n client,\n presentation,\n owner,\n demo = false,\n}: {\n client?: ViewWorkspaceClient;\n presentation?: PreviewPresentation;\n owner?: PreviewOwner;\n demo?: boolean;\n}) {\n const { t } = useTranslation();\n if (demo || !client) {\n return <PreviewEmpty title={t('mesh.previewEmpty')} description={t('mesh.previewUnavailable')} />;\n }\n return <LivePreview client={client} presentation={presentation} owner={owner} />;\n}\n\nfunction PreviewEmpty({ title, description }: { title: string; description: string }) {\n return (\n <div className=\"fx-asset-editor fx-asset-preview fx-ui\" data-testid=\"panel-mesh-preview\">\n <EmptyState title={title} description={description} />\n </div>\n );\n}\n\nfunction LivePreview({\n client,\n presentation,\n owner,\n}: {\n client: ViewWorkspaceClient;\n presentation?: PreviewPresentation;\n owner?: PreviewOwner;\n}) {\n const { t } = useTranslation();\n const reader = useMemo(() => createWorkspaceStateReader(client), [client]);\n const workspace = useSyncExternalStore(\n reader.subscribe,\n () => reader.getSnapshot(),\n () => reader.getSnapshot(),\n );\n const subject = selectWorkspaceResourceSubject(workspace, RESOURCE_KINDS);\n const preview = selectWorkspaceResourcePreview(workspace, subject?.guid);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const [failure, setFailure] = useState<{ hint?: string; expected?: string }>();\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container || !preview?.target) return undefined;\n const bound = bindWorkspacePreviewSurface({\n presentation,\n target: preview.target,\n container,\n owner,\n api: client,\n editorTargetId: workspace?.editorPreview?.target?.targetId,\n });\n if (!bound.ok) {\n setFailure(bound.error);\n return undefined;\n }\n setFailure(undefined);\n return () => { void bound.dispose?.(); };\n }, [\n presentation,\n owner,\n preview?.target,\n preview?.target?.targetId,\n preview?.target?.generation,\n preview?.target?.surfaceId,\n workspace?.editorPreview?.target?.targetId,\n client,\n ]);\n\n if (!subject) return <PreviewEmpty title={t('mesh.previewEmpty')} description={t('mesh.empty')} />;\n if (!preview?.target) {\n return (\n <PreviewEmpty\n title={t('mesh.previewUnavailable')}\n description={t('mesh.previewCapabilityMissing')}\n />\n );\n }\n return (\n <div className=\"fx-asset-editor fx-asset-preview fx-ui\" data-testid=\"panel-mesh-preview\">\n <div\n ref={containerRef}\n className=\"fx-asset-preview-surface\"\n data-forgeax-asset-preview={preview.target.targetId}\n hidden={Boolean(failure)}\n />\n {failure ? (\n <EmptyState\n title={t('mesh.previewUnavailable')}\n description={failure.hint ?? failure.expected ?? t('mesh.previewCapabilityMissing')}\n />\n ) : null}\n </div>\n );\n}\n", "import { useCallback, useSyncExternalStore } from 'react';\n\nimport { getLocale, subscribeLocale, t as translate } from './index.mjs';\n\nexport function useTranslation() {\n const locale = useSyncExternalStore(subscribeLocale, getLocale, getLocale);\n const t = useCallback(\n (key: string, vars?: Record<string, string | number>) => translate(key, vars),\n [locale],\n );\n return { t, locale };\n}\n", "\n const css = \"/* packages/view-plugin-mesh/src/ui/mesh.css */\\n.fx-asset-editor {\\n display: flex;\\n flex-direction: column;\\n width: 100%;\\n height: 100%;\\n min-height: 0;\\n overflow: hidden;\\n background: var(--fx-color-surface-canvas);\\n color: var(--fx-color-text-primary);\\n}\\n.fx-asset-preview {\\n overflow: hidden;\\n}\\n.fx-asset-preview-surface {\\n display: flex;\\n flex: 1 1 auto;\\n align-items: stretch;\\n justify-content: stretch;\\n width: 100%;\\n height: 100%;\\n min-height: 0;\\n min-width: 0;\\n position: relative;\\n overflow: hidden;\\n}\\n\";\n if (typeof document !== 'undefined' && !document.querySelector('style[data-forgeax-css=\"L2RhdGEvaG9tZS9nYWhvdWxpYW8vYWN0aW9ucy1ydW5uZXIvX3dvcmsvZm9yZ2VheC12aWV3L2ZvcmdlYXgtdmlldy9wYWNrYWdlcy92aWV3LXBsdWdpbi1tZXNoL3NyYy91aS9tZXNoLmNzcw\"]')) {\n const style = document.createElement('style');\n style.dataset.forgeaxCss = \"L2RhdGEvaG9tZS9nYWhvdWxpYW8vYWN0aW9ucy1ydW5uZXIvX3dvcmsvZm9yZ2VheC12aWV3L2ZvcmdlYXgtdmlldy9wYWNrYWdlcy92aWV3LXBsdWdpbi1tZXNoL3NyYy91aS9tZXNoLmNzcw\";\n style.textContent = css;\n document.head.append(style);\n }\n export default css;\n ", "import { EmptyState, InspectorForm, PanelHeader } from '@forgeax/view-components';\nimport { useEffect, useMemo, useState, useSyncExternalStore } from 'react';\nimport type { ViewWorkspaceClient } from '@forgeax/view-workspace-core/client';\nimport { VIEW_WORKSPACE_TAB_ID } from '@forgeax/view-workspace-core/contract';\nimport { unwrapWorkspaceInspection } from '@forgeax/view-workspace-core/inspection-presentation';\nimport { selectWorkspaceResourceSubject } from '@forgeax/view-workspace-core/resource-open';\nimport { createWorkspaceStateReader } from '@forgeax/view-workspace-core/workspace-state';\nimport { RESOURCE_KINDS } from '../identity.mjs';\nimport { useTranslation } from '../i18n/useTranslation';\nimport './mesh.css';\n\nexport function MeshPropertiesPanel({\n client,\n demo = false,\n}: {\n client?: ViewWorkspaceClient;\n demo?: boolean;\n}) {\n const { t } = useTranslation();\n if (demo || !client) {\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-mesh-properties\">\n <EmptyState title={t('mesh.unavailable')} description={t('mesh.empty')} />\n </div>\n );\n }\n return <LiveProperties client={client} />;\n}\n\nfunction LiveProperties({ client }: { client: ViewWorkspaceClient }) {\n const { t } = useTranslation();\n const reader = useMemo(() => createWorkspaceStateReader(client), [client]);\n const workspace = useSyncExternalStore(\n reader.subscribe,\n () => reader.getSnapshot(),\n () => reader.getSnapshot(),\n );\n const subject = selectWorkspaceResourceSubject(workspace, RESOURCE_KINDS);\n const projectId = workspace?.project?.id;\n const [inspection, setInspection] = useState<Record<string, unknown> | null>(null);\n const [failed, setFailed] = useState(false);\n\n useEffect(() => {\n if (!subject?.guid || !projectId) {\n setInspection(null);\n setFailed(false);\n return undefined;\n }\n const controller = new AbortController();\n void client.inspectAsset(subject.guid, {\n projectId,\n tabId: VIEW_WORKSPACE_TAB_ID,\n signal: controller.signal,\n }).then((result: unknown) => {\n if (controller.signal.aborted) return;\n setInspection(unwrapWorkspaceInspection(result));\n setFailed(false);\n }).catch(() => {\n if (!controller.signal.aborted) {\n setInspection(null);\n setFailed(true);\n }\n });\n return () => controller.abort();\n }, [client, subject?.guid, projectId]);\n\n if (!subject) {\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-mesh-properties\">\n <EmptyState title={t('mesh.empty')} description={t('mesh.unavailable')} />\n </div>\n );\n }\n if (failed) {\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-mesh-properties\">\n <EmptyState title={t('mesh.unavailable')} description={t('mesh.inspectFailed')} />\n </div>\n );\n }\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-mesh-properties\" data-view-readonly=\"true\">\n <PanelHeader start={<span><strong>{String(subject.name ?? subject.guid)}</strong></span>} />\n <InspectorForm inspection={inspection ?? { guid: subject.guid, asset: subject }} identityTitle={t('mesh.facts')} />\n </div>\n );\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["useSyncExternalStore", "t", "t", "useSyncExternalStore", "useEffect", "useMemo", "useState", "useSyncExternalStore", "jsx", "jsxs", "t", "useMemo", "useSyncExternalStore", "useState", "useEffect", "jsx"]
7
+ }
@@ -0,0 +1,214 @@
1
+ import {
2
+ navigateProjectSession
3
+ } from "./chunk-FMCACPX5.mjs";
4
+ import {
5
+ VIEW_WORKSPACE_TAB_ID,
6
+ isOpaqueWorkspaceDiagnostic,
7
+ workspaceError
8
+ } from "./chunk-32GD5LL6.mjs";
9
+
10
+ // packages/view-workspace-core/src/workspace-recovery.mjs
11
+ var VIEW_WORKSPACE_PAGE_LOST_CODE = "view-workspace-page-lost";
12
+ var VIEW_WORKSPACE_TARGET_RECOVERY_CODES = Object.freeze([
13
+ VIEW_WORKSPACE_PAGE_LOST_CODE,
14
+ "view-workspace-session-closed",
15
+ "view-workspace-target-mismatch",
16
+ "view-workspace-bootstrap-failed"
17
+ ]);
18
+ var WORKSPACE_FAILURE_CODE_PATTERN = /(?:view|engine)-workspace-(?:page-lost|session-closed|target-mismatch|bootstrap-failed)/;
19
+ function normalizeWorkspaceFailureCode(candidate) {
20
+ if (typeof candidate !== "string" || candidate.length === 0) return void 0;
21
+ const match = candidate.match(/(?:view|engine)-workspace-[a-z0-9-]+/);
22
+ if (!match) return void 0;
23
+ return match[0].replace("engine-workspace-", "view-workspace-");
24
+ }
25
+ function collectFailureStrings(value, strings = [], depth = 0) {
26
+ if (depth > 4 || value === void 0 || value === null) return strings;
27
+ if (typeof value === "string") {
28
+ strings.push(value);
29
+ return strings;
30
+ }
31
+ if (typeof value !== "object") return strings;
32
+ if (Array.isArray(value)) {
33
+ for (const entry of value) collectFailureStrings(entry, strings, depth + 1);
34
+ return strings;
35
+ }
36
+ for (const key of ["code", "expected", "hint", "message", "remoteCode"]) {
37
+ collectFailureStrings(value[key], strings, depth + 1);
38
+ }
39
+ collectFailureStrings(value.detail, strings, depth + 1);
40
+ collectFailureStrings(value.payload, strings, depth + 1);
41
+ collectFailureStrings(value.failure, strings, depth + 1);
42
+ return strings;
43
+ }
44
+ function resolveWorkspaceFailureCode(failure) {
45
+ if (!failure || typeof failure !== "object") return "view-workspace-provider-failed";
46
+ if (failure.code === "tool-invalid-args") return "view-workspace-invalid-args";
47
+ const candidates = collectFailureStrings(failure);
48
+ for (const candidate of candidates) {
49
+ const normalized = normalizeWorkspaceFailureCode(candidate);
50
+ if (normalized !== void 0) return normalized;
51
+ }
52
+ for (const candidate of candidates) {
53
+ if (WORKSPACE_FAILURE_CODE_PATTERN.test(candidate)) {
54
+ const match = candidate.match(WORKSPACE_FAILURE_CODE_PATTERN);
55
+ if (match) return match[0].replace("engine-workspace-", "view-workspace-");
56
+ }
57
+ }
58
+ if (typeof failure.detail?.code === "string" && failure.detail.code.startsWith("pack-")) {
59
+ return failure.detail.code;
60
+ }
61
+ return "view-workspace-provider-failed";
62
+ }
63
+ function diagnosticCandidate(value) {
64
+ return typeof value === "string" && value.trim() !== "" ? value.trim() : void 0;
65
+ }
66
+ function pickWorkspaceDiagnostic(candidates, { allowOpaque = true } = {}) {
67
+ const texts = candidates.map(diagnosticCandidate).filter((value) => value !== void 0);
68
+ const real = texts.filter((value) => !isOpaqueWorkspaceDiagnostic(value));
69
+ if (real.length > 0) return real[0];
70
+ return allowOpaque ? texts[0] : void 0;
71
+ }
72
+ function resolveWorkspaceFailure(failure) {
73
+ const code = resolveWorkspaceFailureCode(failure);
74
+ if (!failure || typeof failure !== "object") {
75
+ return {
76
+ code,
77
+ expected: void 0,
78
+ hint: failure === void 0 || failure === null ? void 0 : String(failure),
79
+ detail: { failure }
80
+ };
81
+ }
82
+ const payload = failure.detail?.payload;
83
+ const nested = payload !== null && typeof payload === "object" ? payload : void 0;
84
+ const nestedDetail = nested?.detail !== null && typeof nested?.detail === "object" ? nested.detail : void 0;
85
+ const expected = pickWorkspaceDiagnostic([
86
+ nested?.expected,
87
+ nestedDetail?.expected,
88
+ failure.detail?.expected,
89
+ failure.expected
90
+ ], { allowOpaque: false });
91
+ const hint = pickWorkspaceDiagnostic([
92
+ nested?.hint,
93
+ nested?.message,
94
+ nestedDetail?.hint,
95
+ nestedDetail?.message,
96
+ failure.hint,
97
+ failure.detail?.hint,
98
+ failure.message,
99
+ expected
100
+ ]);
101
+ return {
102
+ code,
103
+ expected,
104
+ hint,
105
+ detail: {
106
+ failure,
107
+ ...nested === void 0 ? {} : { cause: nested }
108
+ }
109
+ };
110
+ }
111
+ function isWorkspaceTargetRecoveryCode(code) {
112
+ return typeof code === "string" && VIEW_WORKSPACE_TARGET_RECOVERY_CODES.includes(code);
113
+ }
114
+ function isWorkspacePageLostError(error) {
115
+ if (!error || typeof error !== "object") return false;
116
+ if (isWorkspaceTargetRecoveryCode(error.code)) return true;
117
+ if (isWorkspaceTargetRecoveryCode(error.detail?.remoteCode)) return true;
118
+ return false;
119
+ }
120
+ function shouldOfferWorkspaceRecovery(error) {
121
+ if (!error || typeof error !== "object") return false;
122
+ if (isWorkspaceTargetRecoveryCode(error.code)) return true;
123
+ if (error.detail?.remoteCode && isWorkspaceTargetRecoveryCode(error.detail.remoteCode)) return true;
124
+ if (error.code === "view-workspace-provider-failed") {
125
+ const text = collectFailureStrings(error).join(" ");
126
+ return WORKSPACE_FAILURE_CODE_PATTERN.test(text) || /browser page to remain connected/i.test(text);
127
+ }
128
+ return false;
129
+ }
130
+ function resolveWorkspaceReopenRoot(snapshot, explicitRoot) {
131
+ const candidate = typeof explicitRoot === "string" && explicitRoot.trim() !== "" ? explicitRoot.trim() : typeof snapshot?.project?.root === "string" ? snapshot.project.root.trim() : "";
132
+ if (!candidate) {
133
+ throw workspaceError(
134
+ "view-workspace-reopen-unavailable",
135
+ "a known project root to reopen",
136
+ "Open the project from the View owner process before reconnecting.",
137
+ {}
138
+ );
139
+ }
140
+ return candidate;
141
+ }
142
+ function workspaceProjectTargetUrl(snapshot) {
143
+ const url = snapshot?.projectTarget?.url;
144
+ return typeof url === "string" && url.trim() !== "" ? url : void 0;
145
+ }
146
+ var WORKSPACE_SESSION_PARAM = "forgeaxWorkspaceSession";
147
+ function workspaceSessionFromHref(href) {
148
+ if (typeof href !== "string" || href.trim() === "") return void 0;
149
+ try {
150
+ const session = new URL(href).searchParams.get(WORKSPACE_SESSION_PARAM);
151
+ return session && session.trim() !== "" ? session : void 0;
152
+ } catch {
153
+ return void 0;
154
+ }
155
+ }
156
+ function shouldAdoptRemoteWorkspaceProject(snapshot, locationLike) {
157
+ if (!snapshot || snapshot.workspaceTargetLost === true) return false;
158
+ if (typeof snapshot.project?.root !== "string" || snapshot.project.root.trim() === "") return false;
159
+ const url = workspaceProjectTargetUrl(snapshot);
160
+ if (!url) return false;
161
+ const href = typeof locationLike === "string" ? locationLike : locationLike?.href;
162
+ const currentSession = workspaceSessionFromHref(href);
163
+ if (currentSession !== void 0 && currentSession === workspaceSessionFromHref(url)) return false;
164
+ return true;
165
+ }
166
+ function adoptRemoteWorkspaceProject(snapshot, windowLike = globalThis) {
167
+ if (!shouldAdoptRemoteWorkspaceProject(snapshot, windowLike?.location)) return snapshot;
168
+ return navigateToWorkspaceProjectTarget(snapshot, windowLike);
169
+ }
170
+ function navigateToWorkspaceProjectTarget(snapshot, windowLike = globalThis) {
171
+ const url = workspaceProjectTargetUrl(snapshot);
172
+ if (!url) {
173
+ throw workspaceError(
174
+ "view-workspace-reopen-incomplete",
175
+ "the reopened project to publish a headed target URL",
176
+ "Retry reconnecting or restart the View owner process.",
177
+ {}
178
+ );
179
+ }
180
+ const location = windowLike?.location;
181
+ if (!location || typeof location.assign !== "function") return snapshot;
182
+ const nextHref = new URL(url, location.href).href;
183
+ if (nextHref !== location.href) navigateProjectSession(snapshot, windowLike);
184
+ return snapshot;
185
+ }
186
+ async function reopenWorkspaceProject(client, {
187
+ root,
188
+ tabId = VIEW_WORKSPACE_TAB_ID,
189
+ window: windowLike,
190
+ ...options
191
+ } = {}) {
192
+ if (!client || typeof client.reopenProject !== "function") {
193
+ throw new TypeError("Workspace recovery requires a View workspace client");
194
+ }
195
+ const snapshot = await client.reopenProject({ root, tabId }, options);
196
+ return navigateToWorkspaceProjectTarget(snapshot, windowLike ?? globalThis);
197
+ }
198
+
199
+ export {
200
+ VIEW_WORKSPACE_PAGE_LOST_CODE,
201
+ VIEW_WORKSPACE_TARGET_RECOVERY_CODES,
202
+ resolveWorkspaceFailureCode,
203
+ resolveWorkspaceFailure,
204
+ isWorkspaceTargetRecoveryCode,
205
+ isWorkspacePageLostError,
206
+ shouldOfferWorkspaceRecovery,
207
+ resolveWorkspaceReopenRoot,
208
+ workspaceProjectTargetUrl,
209
+ shouldAdoptRemoteWorkspaceProject,
210
+ adoptRemoteWorkspaceProject,
211
+ navigateToWorkspaceProjectTarget,
212
+ reopenWorkspaceProject
213
+ };
214
+ //# sourceMappingURL=chunk-VDZJWEAA.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/view-workspace-core/src/workspace-recovery.mjs"],
4
+ "sourcesContent": ["import { VIEW_WORKSPACE_TAB_ID, isOpaqueWorkspaceDiagnostic, workspaceError } from './contract.mjs';\nimport { navigateProjectSession } from './project-session.mjs';\n\nexport const VIEW_WORKSPACE_PAGE_LOST_CODE = 'view-workspace-page-lost';\n\nexport const VIEW_WORKSPACE_TARGET_RECOVERY_CODES = Object.freeze([\n VIEW_WORKSPACE_PAGE_LOST_CODE,\n 'view-workspace-session-closed',\n 'view-workspace-target-mismatch',\n 'view-workspace-bootstrap-failed',\n]);\n\nconst WORKSPACE_FAILURE_CODE_PATTERN =\n /(?:view|engine)-workspace-(?:page-lost|session-closed|target-mismatch|bootstrap-failed)/;\n\nfunction normalizeWorkspaceFailureCode(candidate) {\n if (typeof candidate !== 'string' || candidate.length === 0) return undefined;\n const match = candidate.match(/(?:view|engine)-workspace-[a-z0-9-]+/);\n if (!match) return undefined;\n return match[0].replace('engine-workspace-', 'view-workspace-');\n}\n\nfunction collectFailureStrings(value, strings = [], depth = 0) {\n if (depth > 4 || value === undefined || value === null) return strings;\n if (typeof value === 'string') {\n strings.push(value);\n return strings;\n }\n if (typeof value !== 'object') return strings;\n if (Array.isArray(value)) {\n for (const entry of value) collectFailureStrings(entry, strings, depth + 1);\n return strings;\n }\n for (const key of ['code', 'expected', 'hint', 'message', 'remoteCode']) {\n collectFailureStrings(value[key], strings, depth + 1);\n }\n collectFailureStrings(value.detail, strings, depth + 1);\n collectFailureStrings(value.payload, strings, depth + 1);\n collectFailureStrings(value.failure, strings, depth + 1);\n return strings;\n}\n\n/**\n * Map a Tool terminal failure to a View workspace code. Engine workspace errors\n * thrown inside executors are often wrapped as tool-domain-failed /\n * executor-threw, so we scan nested detail and message text for the real code.\n */\nexport function resolveWorkspaceFailureCode(failure) {\n if (!failure || typeof failure !== 'object') return 'view-workspace-provider-failed';\n if (failure.code === 'tool-invalid-args') return 'view-workspace-invalid-args';\n\n const candidates = collectFailureStrings(failure);\n for (const candidate of candidates) {\n const normalized = normalizeWorkspaceFailureCode(candidate);\n if (normalized !== undefined) return normalized;\n }\n for (const candidate of candidates) {\n if (WORKSPACE_FAILURE_CODE_PATTERN.test(candidate)) {\n const match = candidate.match(WORKSPACE_FAILURE_CODE_PATTERN);\n if (match) return match[0].replace('engine-workspace-', 'view-workspace-');\n }\n }\n if (typeof failure.detail?.code === 'string' && failure.detail.code.startsWith('pack-')) {\n return failure.detail.code;\n }\n return 'view-workspace-provider-failed';\n}\n\nfunction diagnosticCandidate(value) {\n return typeof value === 'string' && value.trim() !== '' ? value.trim() : undefined;\n}\n\nfunction pickWorkspaceDiagnostic(candidates, { allowOpaque = true } = {}) {\n const texts = candidates.map(diagnosticCandidate).filter((value) => value !== undefined);\n const real = texts.filter((value) => !isOpaqueWorkspaceDiagnostic(value));\n if (real.length > 0) return real[0];\n return allowOpaque ? texts[0] : undefined;\n}\n\n/**\n * Unwrap a Tool terminal failure into the View workspace error fields. Nested\n * executor-threw / browser-failure envelopes keep the original diagnostic in\n * hint, message, or payload; wrapper expected strings are not used when a real\n * diagnostic is present. The original failure is always kept on detail.\n */\nexport function resolveWorkspaceFailure(failure) {\n const code = resolveWorkspaceFailureCode(failure);\n if (!failure || typeof failure !== 'object') {\n return {\n code,\n expected: undefined,\n hint: failure === undefined || failure === null ? undefined : String(failure),\n detail: { failure },\n };\n }\n const payload = failure.detail?.payload;\n const nested = payload !== null && typeof payload === 'object' ? payload : undefined;\n const nestedDetail =\n nested?.detail !== null && typeof nested?.detail === 'object' ? nested.detail : undefined;\n const expected = pickWorkspaceDiagnostic([\n nested?.expected,\n nestedDetail?.expected,\n failure.detail?.expected,\n failure.expected,\n ], { allowOpaque: false });\n const hint = pickWorkspaceDiagnostic([\n nested?.hint,\n nested?.message,\n nestedDetail?.hint,\n nestedDetail?.message,\n failure.hint,\n failure.detail?.hint,\n failure.message,\n expected,\n ]);\n return {\n code,\n expected,\n hint,\n detail: {\n failure,\n ...(nested === undefined ? {} : { cause: nested }),\n },\n };\n}\n\nexport function isWorkspaceTargetRecoveryCode(code) {\n return typeof code === 'string' && VIEW_WORKSPACE_TARGET_RECOVERY_CODES.includes(code);\n}\n\nexport function isWorkspacePageLostError(error) {\n if (!error || typeof error !== 'object') return false;\n if (isWorkspaceTargetRecoveryCode(error.code)) return true;\n if (isWorkspaceTargetRecoveryCode(error.detail?.remoteCode)) return true;\n return false;\n}\n\nexport function shouldOfferWorkspaceRecovery(error) {\n if (!error || typeof error !== 'object') return false;\n if (isWorkspaceTargetRecoveryCode(error.code)) return true;\n if (error.detail?.remoteCode && isWorkspaceTargetRecoveryCode(error.detail.remoteCode)) return true;\n if (error.code === 'view-workspace-provider-failed') {\n const text = collectFailureStrings(error).join(' ');\n return WORKSPACE_FAILURE_CODE_PATTERN.test(text)\n || /browser page to remain connected/i.test(text);\n }\n return false;\n}\n\nexport function resolveWorkspaceReopenRoot(snapshot, explicitRoot) {\n const candidate =\n typeof explicitRoot === 'string' && explicitRoot.trim() !== ''\n ? explicitRoot.trim()\n : typeof snapshot?.project?.root === 'string'\n ? snapshot.project.root.trim()\n : '';\n if (!candidate) {\n throw workspaceError(\n 'view-workspace-reopen-unavailable',\n 'a known project root to reopen',\n 'Open the project from the View owner process before reconnecting.',\n {},\n );\n }\n return candidate;\n}\n\nexport function workspaceProjectTargetUrl(snapshot) {\n const url = snapshot?.projectTarget?.url;\n return typeof url === 'string' && url.trim() !== '' ? url : undefined;\n}\n\nconst WORKSPACE_SESSION_PARAM = 'forgeaxWorkspaceSession';\n\nfunction workspaceSessionFromHref(href) {\n if (typeof href !== 'string' || href.trim() === '') return undefined;\n try {\n const session = new URL(href).searchParams.get(WORKSPACE_SESSION_PARAM);\n return session && session.trim() !== '' ? session : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * The empty shell has no headed session. A document that already carries the\n * target's forgeaxWorkspaceSession is the project page; assigning again\n * reloads it and Engine treats that navigation as a lost workspace. Compare\n * the session parameter, not the full href: encoding or parameter order may\n * differ from the snapshot URL for the same document.\n */\nexport function shouldAdoptRemoteWorkspaceProject(snapshot, locationLike) {\n if (!snapshot || snapshot.workspaceTargetLost === true) return false;\n if (typeof snapshot.project?.root !== 'string' || snapshot.project.root.trim() === '') return false;\n const url = workspaceProjectTargetUrl(snapshot);\n if (!url) return false;\n const href = typeof locationLike === 'string' ? locationLike : locationLike?.href;\n const currentSession = workspaceSessionFromHref(href);\n if (currentSession !== undefined && currentSession === workspaceSessionFromHref(url)) return false;\n return true;\n}\n\n/** Navigate only into the target's headed document. That document itself and lost targets stay put. */\nexport function adoptRemoteWorkspaceProject(snapshot, windowLike = globalThis) {\n if (!shouldAdoptRemoteWorkspaceProject(snapshot, windowLike?.location)) return snapshot;\n return navigateToWorkspaceProjectTarget(snapshot, windowLike);\n}\n\n/**\n * After project.reopen, adopt the new headed target URL when it differs from the\n * current document. No-op when navigation is unavailable (Node callers).\n */\nexport function navigateToWorkspaceProjectTarget(snapshot, windowLike = globalThis) {\n const url = workspaceProjectTargetUrl(snapshot);\n if (!url) {\n throw workspaceError(\n 'view-workspace-reopen-incomplete',\n 'the reopened project to publish a headed target URL',\n 'Retry reconnecting or restart the View owner process.',\n {},\n );\n }\n const location = windowLike?.location;\n if (!location || typeof location.assign !== 'function') return snapshot;\n const nextHref = new URL(url, location.href).href;\n if (nextHref !== location.href) navigateProjectSession(snapshot, windowLike);\n return snapshot;\n}\n\n/** @param {unknown} client\n * @param {{ root?: string, tabId?: string, window?: unknown }} options\n */\nexport async function reopenWorkspaceProject(client, {\n root,\n tabId = VIEW_WORKSPACE_TAB_ID,\n window: windowLike,\n ...options\n} = {}) {\n if (!client || typeof client.reopenProject !== 'function') {\n throw new TypeError('Workspace recovery requires a View workspace client');\n }\n const snapshot = await client.reopenProject({ root, tabId }, options);\n return navigateToWorkspaceProjectTarget(snapshot, windowLike ?? globalThis);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,42 @@
1
+ import {
2
+ VIEW_PAGE_TYPES
3
+ } from "./chunk-32GD5LL6.mjs";
4
+ import {
5
+ __export
6
+ } from "./chunk-FLGC65SR.mjs";
7
+
8
+ // packages/view-plugin-scene-tree/src/identity.mjs
9
+ var identity_exports = {};
10
+ __export(identity_exports, {
11
+ FRONTEND_MODULE: () => FRONTEND_MODULE,
12
+ FRONTEND_PLUGIN_ID: () => FRONTEND_PLUGIN_ID,
13
+ PAGE_TYPE: () => PAGE_TYPE,
14
+ PANEL_LAYOUT: () => PANEL_LAYOUT,
15
+ PLUGIN_ID: () => PLUGIN_ID,
16
+ SLOT: () => SLOT,
17
+ TITLE_I18N_KEY: () => TITLE_I18N_KEY
18
+ });
19
+ var PLUGIN_ID = "forgeax.view.scene-tree";
20
+ var FRONTEND_PLUGIN_ID = "forgeax.view.panel.scene-hierarchy.frontend";
21
+ var FRONTEND_MODULE = "@forgeax/view/plugins/scene-tree/frontend";
22
+ var SLOT = "scene-tree";
23
+ var PAGE_TYPE = VIEW_PAGE_TYPES.editor;
24
+ var PANEL_LAYOUT = Object.freeze({
25
+ dock: "left",
26
+ size: Object.freeze({ value: 0.17, unit: "fraction" }),
27
+ stack: "tabs",
28
+ order: 0
29
+ });
30
+ var TITLE_I18N_KEY = "view.slots.sceneTree";
31
+
32
+ export {
33
+ PLUGIN_ID,
34
+ FRONTEND_PLUGIN_ID,
35
+ FRONTEND_MODULE,
36
+ SLOT,
37
+ PAGE_TYPE,
38
+ PANEL_LAYOUT,
39
+ TITLE_I18N_KEY,
40
+ identity_exports
41
+ };
42
+ //# sourceMappingURL=chunk-VIGOJWSO.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/view-plugin-scene-tree/src/identity.mjs"],
4
+ "sourcesContent": ["import { VIEW_PAGE_TYPES } from '@forgeax/view-workspace-core/contract';\n\nexport const PLUGIN_ID = 'forgeax.view.scene-tree';\nexport const FRONTEND_PLUGIN_ID = 'forgeax.view.panel.scene-hierarchy.frontend';\nexport const FRONTEND_MODULE = '@forgeax/view/plugins/scene-tree/frontend';\nexport const SLOT = 'scene-tree';\nexport const PAGE_TYPE = VIEW_PAGE_TYPES.editor;\nexport const PANEL_LAYOUT = Object.freeze({\n dock: 'left',\n size: Object.freeze({ value: 0.17, unit: 'fraction' }),\n stack: 'tabs',\n order: 0,\n});\nexport const TITLE_I18N_KEY = 'view.slots.sceneTree';\n"],
5
+ "mappings": ";;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,YAAY;AAClB,IAAM,qBAAqB;AAC3B,IAAM,kBAAkB;AACxB,IAAM,OAAO;AACb,IAAM,YAAY,gBAAgB;AAClC,IAAM,eAAe,OAAO,OAAO;AAAA,EACxC,MAAM;AAAA,EACN,MAAM,OAAO,OAAO,EAAE,OAAO,MAAM,MAAM,WAAW,CAAC;AAAA,EACrD,OAAO;AAAA,EACP,OAAO;AACT,CAAC;AACM,IAAM,iBAAiB;",
6
+ "names": []
7
+ }