@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,341 @@
1
+ import {
2
+ logResourceOpen,
3
+ summarizeResourceAsset
4
+ } from "./chunk-FKCQYDLX.mjs";
5
+
6
+ // packages/viewer/src/host/page-registry.mjs
7
+ var PAGE_TYPE_FIELDS = /* @__PURE__ */ new Set([
8
+ "typeId",
9
+ "titleKey",
10
+ "title",
11
+ "order",
12
+ "closable",
13
+ "singleton",
14
+ "initial",
15
+ "openable",
16
+ "layout",
17
+ "showPanelRail",
18
+ "hideWhenInactive",
19
+ "createController",
20
+ "resourceSelector",
21
+ "priority"
22
+ ]);
23
+ function normalizePageController(createController) {
24
+ if (createController === void 0) return void 0;
25
+ if (typeof createController !== "function") {
26
+ throw new TypeError("page type createController must be a function");
27
+ }
28
+ const controller = createController();
29
+ if (controller == null) return void 0;
30
+ if (typeof controller !== "object" || Array.isArray(controller)) {
31
+ throw new TypeError("page type controller must be an object");
32
+ }
33
+ const { getTitle, subscribeTitle, dispose } = controller;
34
+ if (getTitle !== void 0 && typeof getTitle !== "function") {
35
+ throw new TypeError("page controller getTitle must be a function");
36
+ }
37
+ if (subscribeTitle !== void 0 && typeof subscribeTitle !== "function") {
38
+ throw new TypeError("page controller subscribeTitle must be a function");
39
+ }
40
+ if (dispose !== void 0 && typeof dispose !== "function") {
41
+ throw new TypeError("page controller dispose must be a function");
42
+ }
43
+ return Object.freeze({
44
+ ...getTitle === void 0 ? {} : { getTitle },
45
+ ...subscribeTitle === void 0 ? {} : { subscribeTitle },
46
+ ...dispose === void 0 ? {} : { dispose }
47
+ });
48
+ }
49
+ function resolvePageTypeTitle(pageType, translate) {
50
+ const live = pageType?.controller?.getTitle?.();
51
+ if (typeof live === "string" && live.trim() !== "") return live.trim();
52
+ if (typeof pageType?.titleKey === "string" && pageType.titleKey !== "" && typeof translate === "function") {
53
+ return translate(pageType.titleKey);
54
+ }
55
+ return pageType?.title ?? pageType?.typeId ?? "";
56
+ }
57
+ function subscribePageTypeTitles(pageTypes, listener) {
58
+ const types = Array.isArray(pageTypes) ? pageTypes : [];
59
+ const unsubs = types.map((pageType) => pageType?.controller?.subscribeTitle?.(listener)).filter((unsub) => typeof unsub === "function");
60
+ return () => {
61
+ for (const unsub of unsubs) unsub();
62
+ };
63
+ }
64
+ function readPageTypeTitleRevision(pageTypes) {
65
+ const types = Array.isArray(pageTypes) ? pageTypes : [];
66
+ return types.map((pageType) => pageType?.controller?.getTitle?.() ?? "").join("\0");
67
+ }
68
+ function normalizePageType(input) {
69
+ if (!input || typeof input !== "object" || Array.isArray(input)) {
70
+ throw new TypeError("page type must be an object");
71
+ }
72
+ for (const field of Object.keys(input)) {
73
+ if (!PAGE_TYPE_FIELDS.has(field)) throw new TypeError(`Unknown page type field: ${field}`);
74
+ }
75
+ if (typeof input.typeId !== "string" || input.typeId.trim() === "") {
76
+ throw new TypeError("page type requires typeId");
77
+ }
78
+ if ((typeof input.titleKey !== "string" || input.titleKey.trim() === "") && (typeof input.title !== "string" || input.title.trim() === "")) {
79
+ throw new TypeError("page type requires titleKey or title");
80
+ }
81
+ if (!Number.isFinite(input.order)) throw new TypeError("page type requires numeric order");
82
+ for (const field of [
83
+ "closable",
84
+ "singleton",
85
+ "initial",
86
+ "openable",
87
+ "showPanelRail",
88
+ "hideWhenInactive"
89
+ ]) {
90
+ if (typeof input[field] !== "boolean") {
91
+ throw new TypeError(`page type requires boolean ${field}`);
92
+ }
93
+ }
94
+ if (input.layout !== "dock" && input.layout !== "surface") {
95
+ throw new TypeError("page type requires layout dock or surface");
96
+ }
97
+ const controller = normalizePageController(input.createController);
98
+ const resourceSelector = normalizeResourceSelector(input.resourceSelector);
99
+ const priority = normalizePriority(input.priority);
100
+ return Object.freeze({
101
+ typeId: input.typeId,
102
+ ...input.titleKey === void 0 ? {} : { titleKey: input.titleKey },
103
+ ...input.title === void 0 ? {} : { title: input.title },
104
+ order: input.order,
105
+ closable: input.closable,
106
+ singleton: input.singleton,
107
+ initial: input.initial,
108
+ openable: input.openable,
109
+ layout: input.layout,
110
+ showPanelRail: input.showPanelRail,
111
+ hideWhenInactive: input.hideWhenInactive,
112
+ ...controller === void 0 ? {} : { controller },
113
+ ...resourceSelector === void 0 ? {} : { resourceSelector },
114
+ ...priority === void 0 ? {} : { priority }
115
+ });
116
+ }
117
+ function normalizeResourceSelector(value) {
118
+ if (value === void 0) return void 0;
119
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
120
+ throw new TypeError("page type resourceSelector must be an object");
121
+ }
122
+ for (const field of Object.keys(value)) {
123
+ if (field !== "kinds" && field !== "fallback") {
124
+ throw new TypeError(`Unknown resourceSelector field: ${field}`);
125
+ }
126
+ }
127
+ const hasKinds = Object.hasOwn(value, "kinds");
128
+ const hasFallback = Object.hasOwn(value, "fallback");
129
+ if (hasKinds === hasFallback) {
130
+ throw new TypeError("page type resourceSelector requires kinds or fallback");
131
+ }
132
+ if (hasKinds) {
133
+ if (!Array.isArray(value.kinds) || value.kinds.length === 0) {
134
+ throw new TypeError("page type resourceSelector.kinds must be a non-empty array");
135
+ }
136
+ const kinds = value.kinds.map((kind) => {
137
+ if (typeof kind !== "string" || kind.trim() === "") {
138
+ throw new TypeError("page type resourceSelector.kinds entries must be non-empty strings");
139
+ }
140
+ return kind.trim();
141
+ });
142
+ return Object.freeze({ kinds: Object.freeze(kinds) });
143
+ }
144
+ if (value.fallback !== true) {
145
+ throw new TypeError("page type resourceSelector.fallback must be true");
146
+ }
147
+ return Object.freeze({ fallback: true });
148
+ }
149
+ function normalizePriority(value) {
150
+ if (value === void 0) return void 0;
151
+ if (!Number.isFinite(value)) throw new TypeError("page type priority must be a finite number");
152
+ return value;
153
+ }
154
+ function compareResourcePageTypes(left, right) {
155
+ return (right.priority ?? 0) - (left.priority ?? 0) || left.order - right.order || left.typeId.localeCompare(right.typeId);
156
+ }
157
+ function resolveResourcePageType(pageTypes, asset) {
158
+ const types = Array.isArray(pageTypes) ? pageTypes : [];
159
+ const kind = typeof asset?.kind === "string" ? asset.kind.trim() : "";
160
+ if (kind === "") {
161
+ return Object.freeze({
162
+ ok: false,
163
+ error: Object.freeze({
164
+ code: "view-resource-page-unavailable",
165
+ expected: "an Engine asset kind",
166
+ hint: "Open an Engine asset whose snapshot includes kind.",
167
+ detail: Object.freeze({ kind: asset?.kind ?? null })
168
+ })
169
+ });
170
+ }
171
+ const kindMatches = types.filter((pageType) => pageType?.resourceSelector?.kinds?.includes(kind)).sort(compareResourcePageTypes);
172
+ if (kindMatches.length > 0) {
173
+ return Object.freeze({ ok: true, pageType: kindMatches[0], match: "kind" });
174
+ }
175
+ const fallbacks = types.filter((pageType) => pageType?.resourceSelector?.fallback === true).sort(compareResourcePageTypes);
176
+ if (fallbacks.length > 0) {
177
+ return Object.freeze({ ok: true, pageType: fallbacks[0], match: "fallback" });
178
+ }
179
+ return Object.freeze({
180
+ ok: false,
181
+ error: Object.freeze({
182
+ code: "view-resource-page-unavailable",
183
+ expected: `a PageType plugin that accepts asset kind ${kind}`,
184
+ hint: "Install a matching asset editor plugin, or a fallback asset page plugin.",
185
+ detail: Object.freeze({ kind })
186
+ })
187
+ });
188
+ }
189
+ function planResourcePageActivation(pages, pageType) {
190
+ if (!pageType || typeof pageType !== "object") {
191
+ return Object.freeze({ action: "none" });
192
+ }
193
+ const list = Array.isArray(pages) ? pages : [];
194
+ if (pageType.singleton) {
195
+ const existing = list.find((page) => page.typeId === pageType.typeId);
196
+ if (existing) {
197
+ return Object.freeze({ action: "focus", pageId: existing.id, pageType });
198
+ }
199
+ }
200
+ if (pageType.openable !== true) {
201
+ return Object.freeze({ action: "none", pageType });
202
+ }
203
+ return Object.freeze({
204
+ action: "open",
205
+ pageId: pageType.singleton ? `page-${pageType.typeId}` : void 0,
206
+ pageType
207
+ });
208
+ }
209
+ function normalizeOpenResource(input) {
210
+ if (!input || typeof input !== "object" || Array.isArray(input)) {
211
+ throw new TypeError("openResource requires an object");
212
+ }
213
+ if (typeof input.requestId !== "string" || input.requestId.trim() === "") {
214
+ throw new TypeError("openResource requires requestId");
215
+ }
216
+ const asset = input.asset;
217
+ if (!asset || typeof asset !== "object" || Array.isArray(asset)) {
218
+ throw new TypeError("openResource requires asset");
219
+ }
220
+ if (typeof asset.kind !== "string" || asset.kind.trim() === "") {
221
+ throw new TypeError("openResource requires asset.kind");
222
+ }
223
+ return Object.freeze({
224
+ requestId: input.requestId,
225
+ sequence: Number.isSafeInteger(input.sequence) ? input.sequence : 0,
226
+ asset: Object.freeze({ ...asset }),
227
+ ...input.preview === void 0 ? {} : { preview: input.preview },
228
+ ...input.inspection === void 0 ? {} : { inspection: input.inspection }
229
+ });
230
+ }
231
+ function createViewPageTypeRegistry({ onChange } = {}) {
232
+ const types = /* @__PURE__ */ new Map();
233
+ const mounts = /* @__PURE__ */ new Map();
234
+ const anchors = /* @__PURE__ */ new Map();
235
+ const listeners = /* @__PURE__ */ new Set();
236
+ let snapshot = Object.freeze([]);
237
+ const notify = () => {
238
+ snapshot = Object.freeze(
239
+ [...types.values()].sort((a, b) => a.order - b.order || a.typeId.localeCompare(b.typeId))
240
+ );
241
+ for (const listener of listeners) listener(snapshot);
242
+ onChange?.(snapshot);
243
+ };
244
+ return Object.freeze({
245
+ registerType(input) {
246
+ const pageType = normalizePageType(input);
247
+ if (types.has(pageType.typeId)) {
248
+ throw new Error(`View page type is already registered: ${pageType.typeId}`);
249
+ }
250
+ types.set(pageType.typeId, pageType);
251
+ notify();
252
+ return () => {
253
+ if (types.get(pageType.typeId) !== pageType) return;
254
+ types.delete(pageType.typeId);
255
+ pageType.controller?.dispose?.();
256
+ mounts.get(pageType.typeId)?.node.remove?.();
257
+ mounts.delete(pageType.typeId);
258
+ anchors.delete(pageType.typeId);
259
+ notify();
260
+ };
261
+ },
262
+ subscribe(listener) {
263
+ listeners.add(listener);
264
+ listener(snapshot);
265
+ return () => listeners.delete(listener);
266
+ },
267
+ getTypes: () => snapshot,
268
+ mount(typeId, node) {
269
+ if (!types.has(typeId)) throw new Error(`View page type is not registered: ${typeId}`);
270
+ if (!node || typeof node !== "object") throw new TypeError("page mount requires a node");
271
+ if (mounts.has(typeId)) throw new Error(`View page content is already mounted: ${typeId}`);
272
+ const mount = { node, anchor: void 0 };
273
+ mounts.set(typeId, mount);
274
+ const anchor = anchors.get(typeId);
275
+ if (anchor && node.parentNode !== anchor) anchor.replaceChildren(node);
276
+ return () => {
277
+ if (mounts.get(typeId) !== mount) return;
278
+ node.remove?.();
279
+ mounts.delete(typeId);
280
+ };
281
+ },
282
+ attach(typeId, anchor) {
283
+ if (!types.has(typeId)) throw new Error(`View page type is not registered: ${typeId}`);
284
+ if (!anchor?.replaceChildren) throw new TypeError("page attach requires an anchor element");
285
+ anchors.set(typeId, anchor);
286
+ const mount = mounts.get(typeId);
287
+ if (!mount) return void 0;
288
+ mount.anchor = anchor;
289
+ if (mount.node.parentNode !== anchor) anchor.replaceChildren(mount.node);
290
+ return mount.node;
291
+ }
292
+ });
293
+ }
294
+ function createViewPageHost({ registry } = {}) {
295
+ if (!registry?.registerType) throw new TypeError("createViewPageHost requires pageRegistry");
296
+ const listeners = /* @__PURE__ */ new Set();
297
+ let lastRequest;
298
+ return Object.freeze({
299
+ registry,
300
+ registerType: (pageType) => registry.registerType(pageType),
301
+ mount: (typeId, node) => registry.mount(typeId, node),
302
+ openResource(input) {
303
+ const request = normalizeOpenResource(input);
304
+ lastRequest = request;
305
+ logResourceOpen("page-host-open-resource", {
306
+ requestId: request.requestId,
307
+ sequence: request.sequence,
308
+ asset: summarizeResourceAsset(request.asset),
309
+ listenerCount: listeners.size
310
+ });
311
+ for (const listener of listeners) listener(request);
312
+ return request;
313
+ },
314
+ subscribeResourceOpen(listener) {
315
+ if (typeof listener !== "function") {
316
+ throw new TypeError("subscribeResourceOpen requires a function");
317
+ }
318
+ listeners.add(listener);
319
+ if (lastRequest) listener(lastRequest);
320
+ return () => listeners.delete(listener);
321
+ }
322
+ });
323
+ }
324
+ function listOpenablePageTypes(pageTypes, pages) {
325
+ const openTypes = new Set(pages.map((page) => page.typeId));
326
+ return pageTypes.filter(
327
+ (pageType) => pageType.openable && (!pageType.singleton || !openTypes.has(pageType.typeId))
328
+ );
329
+ }
330
+
331
+ export {
332
+ resolvePageTypeTitle,
333
+ subscribePageTypeTitles,
334
+ readPageTypeTitleRevision,
335
+ resolveResourcePageType,
336
+ planResourcePageActivation,
337
+ createViewPageTypeRegistry,
338
+ createViewPageHost,
339
+ listOpenablePageTypes
340
+ };
341
+ //# sourceMappingURL=chunk-YVQSDKAO.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/viewer/src/host/page-registry.mjs"],
4
+ "sourcesContent": ["import { logResourceOpen, summarizeResourceAsset } from '@forgeax/view-workspace-core/resource-open';\n\nconst PAGE_TYPE_FIELDS = new Set([\n 'typeId',\n 'titleKey',\n 'title',\n 'order',\n 'closable',\n 'singleton',\n 'initial',\n 'openable',\n 'layout',\n 'showPanelRail',\n 'hideWhenInactive',\n 'createController',\n 'resourceSelector',\n 'priority',\n]);\n\nfunction normalizePageController(createController) {\n if (createController === undefined) return undefined;\n if (typeof createController !== 'function') {\n throw new TypeError('page type createController must be a function');\n }\n const controller = createController();\n if (controller == null) return undefined;\n if (typeof controller !== 'object' || Array.isArray(controller)) {\n throw new TypeError('page type controller must be an object');\n }\n const { getTitle, subscribeTitle, dispose } = controller;\n if (getTitle !== undefined && typeof getTitle !== 'function') {\n throw new TypeError('page controller getTitle must be a function');\n }\n if (subscribeTitle !== undefined && typeof subscribeTitle !== 'function') {\n throw new TypeError('page controller subscribeTitle must be a function');\n }\n if (dispose !== undefined && typeof dispose !== 'function') {\n throw new TypeError('page controller dispose must be a function');\n }\n return Object.freeze({\n ...(getTitle === undefined ? {} : { getTitle }),\n ...(subscribeTitle === undefined ? {} : { subscribeTitle }),\n ...(dispose === undefined ? {} : { dispose }),\n });\n}\n\n/**\n * Resolve the visible page tab title. Live `getTitle()` wins; otherwise the\n * registered titleKey/title is the idle fallback. The shell never reads\n * workspace/scene fields here.\n */\nexport function resolvePageTypeTitle(pageType, translate) {\n const live = pageType?.controller?.getTitle?.();\n if (typeof live === 'string' && live.trim() !== '') return live.trim();\n if (typeof pageType?.titleKey === 'string' && pageType.titleKey !== '' && typeof translate === 'function') {\n return translate(pageType.titleKey);\n }\n return pageType?.title ?? pageType?.typeId ?? '';\n}\n\nexport function subscribePageTypeTitles(pageTypes, listener) {\n const types = Array.isArray(pageTypes) ? pageTypes : [];\n const unsubs = types\n .map((pageType) => pageType?.controller?.subscribeTitle?.(listener))\n .filter((unsub) => typeof unsub === 'function');\n return () => {\n for (const unsub of unsubs) unsub();\n };\n}\n\nexport function readPageTypeTitleRevision(pageTypes) {\n const types = Array.isArray(pageTypes) ? pageTypes : [];\n return types.map((pageType) => pageType?.controller?.getTitle?.() ?? '').join('\\0');\n}\n\nfunction normalizePageType(input) {\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n throw new TypeError('page type must be an object');\n }\n for (const field of Object.keys(input)) {\n if (!PAGE_TYPE_FIELDS.has(field)) throw new TypeError(`Unknown page type field: ${field}`);\n }\n if (typeof input.typeId !== 'string' || input.typeId.trim() === '') {\n throw new TypeError('page type requires typeId');\n }\n if (\n (typeof input.titleKey !== 'string' || input.titleKey.trim() === '') &&\n (typeof input.title !== 'string' || input.title.trim() === '')\n ) {\n throw new TypeError('page type requires titleKey or title');\n }\n if (!Number.isFinite(input.order)) throw new TypeError('page type requires numeric order');\n for (const field of [\n 'closable',\n 'singleton',\n 'initial',\n 'openable',\n 'showPanelRail',\n 'hideWhenInactive',\n ]) {\n if (typeof input[field] !== 'boolean') {\n throw new TypeError(`page type requires boolean ${field}`);\n }\n }\n if (input.layout !== 'dock' && input.layout !== 'surface') {\n throw new TypeError('page type requires layout dock or surface');\n }\n const controller = normalizePageController(input.createController);\n const resourceSelector = normalizeResourceSelector(input.resourceSelector);\n const priority = normalizePriority(input.priority);\n return Object.freeze({\n typeId: input.typeId,\n ...(input.titleKey === undefined ? {} : { titleKey: input.titleKey }),\n ...(input.title === undefined ? {} : { title: input.title }),\n order: input.order,\n closable: input.closable,\n singleton: input.singleton,\n initial: input.initial,\n openable: input.openable,\n layout: input.layout,\n showPanelRail: input.showPanelRail,\n hideWhenInactive: input.hideWhenInactive,\n ...(controller === undefined ? {} : { controller }),\n ...(resourceSelector === undefined ? {} : { resourceSelector }),\n ...(priority === undefined ? {} : { priority }),\n });\n}\n\nfunction normalizeResourceSelector(value) {\n if (value === undefined) return undefined;\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n throw new TypeError('page type resourceSelector must be an object');\n }\n for (const field of Object.keys(value)) {\n if (field !== 'kinds' && field !== 'fallback') {\n throw new TypeError(`Unknown resourceSelector field: ${field}`);\n }\n }\n const hasKinds = Object.hasOwn(value, 'kinds');\n const hasFallback = Object.hasOwn(value, 'fallback');\n if (hasKinds === hasFallback) {\n throw new TypeError('page type resourceSelector requires kinds or fallback');\n }\n if (hasKinds) {\n if (!Array.isArray(value.kinds) || value.kinds.length === 0) {\n throw new TypeError('page type resourceSelector.kinds must be a non-empty array');\n }\n const kinds = value.kinds.map((kind) => {\n if (typeof kind !== 'string' || kind.trim() === '') {\n throw new TypeError('page type resourceSelector.kinds entries must be non-empty strings');\n }\n return kind.trim();\n });\n return Object.freeze({ kinds: Object.freeze(kinds) });\n }\n if (value.fallback !== true) {\n throw new TypeError('page type resourceSelector.fallback must be true');\n }\n return Object.freeze({ fallback: true });\n}\n\nfunction normalizePriority(value) {\n if (value === undefined) return undefined;\n if (!Number.isFinite(value)) throw new TypeError('page type priority must be a finite number');\n return value;\n}\n\nfunction compareResourcePageTypes(left, right) {\n return (right.priority ?? 0) - (left.priority ?? 0)\n || left.order - right.order\n || left.typeId.localeCompare(right.typeId);\n}\n\nexport function resolveResourcePageType(pageTypes, asset) {\n const types = Array.isArray(pageTypes) ? pageTypes : [];\n const kind = typeof asset?.kind === 'string' ? asset.kind.trim() : '';\n if (kind === '') {\n return Object.freeze({\n ok: false,\n error: Object.freeze({\n code: 'view-resource-page-unavailable',\n expected: 'an Engine asset kind',\n hint: 'Open an Engine asset whose snapshot includes kind.',\n detail: Object.freeze({ kind: asset?.kind ?? null }),\n }),\n });\n }\n const kindMatches = types\n .filter((pageType) => pageType?.resourceSelector?.kinds?.includes(kind))\n .sort(compareResourcePageTypes);\n if (kindMatches.length > 0) {\n return Object.freeze({ ok: true, pageType: kindMatches[0], match: 'kind' });\n }\n const fallbacks = types\n .filter((pageType) => pageType?.resourceSelector?.fallback === true)\n .sort(compareResourcePageTypes);\n if (fallbacks.length > 0) {\n return Object.freeze({ ok: true, pageType: fallbacks[0], match: 'fallback' });\n }\n return Object.freeze({\n ok: false,\n error: Object.freeze({\n code: 'view-resource-page-unavailable',\n expected: `a PageType plugin that accepts asset kind ${kind}`,\n hint: 'Install a matching asset editor plugin, or a fallback asset page plugin.',\n detail: Object.freeze({ kind }),\n }),\n });\n}\n\n/**\n * Decide whether a resolved PageType should focus an already-open singleton\n * or open a new page. Non-openable types (Editor) can still be focused.\n */\nexport function planResourcePageActivation(pages, pageType) {\n if (!pageType || typeof pageType !== 'object') {\n return Object.freeze({ action: 'none' });\n }\n const list = Array.isArray(pages) ? pages : [];\n if (pageType.singleton) {\n const existing = list.find((page) => page.typeId === pageType.typeId);\n if (existing) {\n return Object.freeze({ action: 'focus', pageId: existing.id, pageType });\n }\n }\n if (pageType.openable !== true) {\n return Object.freeze({ action: 'none', pageType });\n }\n return Object.freeze({\n action: 'open',\n pageId: pageType.singleton ? `page-${pageType.typeId}` : undefined,\n pageType,\n });\n}\n\nfunction normalizeOpenResource(input) {\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n throw new TypeError('openResource requires an object');\n }\n if (typeof input.requestId !== 'string' || input.requestId.trim() === '') {\n throw new TypeError('openResource requires requestId');\n }\n const asset = input.asset;\n if (!asset || typeof asset !== 'object' || Array.isArray(asset)) {\n throw new TypeError('openResource requires asset');\n }\n if (typeof asset.kind !== 'string' || asset.kind.trim() === '') {\n throw new TypeError('openResource requires asset.kind');\n }\n return Object.freeze({\n requestId: input.requestId,\n sequence: Number.isSafeInteger(input.sequence) ? input.sequence : 0,\n asset: Object.freeze({ ...asset }),\n ...(input.preview === undefined ? {} : { preview: input.preview }),\n ...(input.inspection === undefined ? {} : { inspection: input.inspection }),\n });\n}\n\nexport function createViewPageTypeRegistry({ onChange } = {}) {\n const types = new Map();\n const mounts = new Map();\n const anchors = new Map();\n const listeners = new Set();\n let snapshot = Object.freeze([]);\n const notify = () => {\n snapshot = Object.freeze(\n [...types.values()].sort((a, b) => a.order - b.order || a.typeId.localeCompare(b.typeId)),\n );\n for (const listener of listeners) listener(snapshot);\n onChange?.(snapshot);\n };\n return Object.freeze({\n registerType(input) {\n const pageType = normalizePageType(input);\n if (types.has(pageType.typeId)) {\n throw new Error(`View page type is already registered: ${pageType.typeId}`);\n }\n types.set(pageType.typeId, pageType);\n notify();\n return () => {\n if (types.get(pageType.typeId) !== pageType) return;\n types.delete(pageType.typeId);\n pageType.controller?.dispose?.();\n mounts.get(pageType.typeId)?.node.remove?.();\n mounts.delete(pageType.typeId);\n anchors.delete(pageType.typeId);\n notify();\n };\n },\n subscribe(listener) {\n listeners.add(listener);\n listener(snapshot);\n return () => listeners.delete(listener);\n },\n getTypes: () => snapshot,\n mount(typeId, node) {\n if (!types.has(typeId)) throw new Error(`View page type is not registered: ${typeId}`);\n if (!node || typeof node !== 'object') throw new TypeError('page mount requires a node');\n if (mounts.has(typeId)) throw new Error(`View page content is already mounted: ${typeId}`);\n const mount = { node, anchor: undefined };\n mounts.set(typeId, mount);\n const anchor = anchors.get(typeId);\n if (anchor && node.parentNode !== anchor) anchor.replaceChildren(node);\n return () => {\n if (mounts.get(typeId) !== mount) return;\n node.remove?.();\n mounts.delete(typeId);\n };\n },\n attach(typeId, anchor) {\n if (!types.has(typeId)) throw new Error(`View page type is not registered: ${typeId}`);\n if (!anchor?.replaceChildren) throw new TypeError('page attach requires an anchor element');\n anchors.set(typeId, anchor);\n const mount = mounts.get(typeId);\n if (!mount) return undefined;\n mount.anchor = anchor;\n if (mount.node.parentNode !== anchor) anchor.replaceChildren(mount.node);\n return mount.node;\n },\n });\n}\n\nexport function createViewPageHost({ registry } = {}) {\n if (!registry?.registerType) throw new TypeError('createViewPageHost requires pageRegistry');\n const listeners = new Set();\n let lastRequest;\n return Object.freeze({\n registry,\n registerType: (pageType) => registry.registerType(pageType),\n mount: (typeId, node) => registry.mount(typeId, node),\n openResource(input) {\n const request = normalizeOpenResource(input);\n lastRequest = request;\n logResourceOpen('page-host-open-resource', {\n requestId: request.requestId,\n sequence: request.sequence,\n asset: summarizeResourceAsset(request.asset),\n listenerCount: listeners.size,\n });\n for (const listener of listeners) listener(request);\n return request;\n },\n subscribeResourceOpen(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('subscribeResourceOpen requires a function');\n }\n listeners.add(listener);\n if (lastRequest) listener(lastRequest);\n return () => listeners.delete(listener);\n },\n });\n}\n\nexport function listOpenablePageTypes(pageTypes, pages) {\n const openTypes = new Set(pages.map((page) => page.typeId));\n return pageTypes.filter(\n (pageType) => pageType.openable && (!pageType.singleton || !openTypes.has(pageType.typeId)),\n );\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,123 @@
1
+ import {
2
+ dedicatedPreviewPresentation
3
+ } from "./chunk-LERMYZRC.mjs";
4
+ import {
5
+ liveEnginePresentation
6
+ } from "./chunk-SSQMQJ52.mjs";
7
+ import {
8
+ logResourceOpen
9
+ } from "./chunk-FKCQYDLX.mjs";
10
+
11
+ // packages/view-workspace-core/src/resource-page.mjs
12
+ var RESOURCE_PREVIEW_LAYOUT = Object.freeze({
13
+ dock: "fill",
14
+ stack: "tabs",
15
+ order: 0
16
+ });
17
+ var RESOURCE_PROPERTIES_LAYOUT = Object.freeze({
18
+ dock: "right",
19
+ size: Object.freeze({ value: 0.36, unit: "fraction" }),
20
+ stack: "tabs",
21
+ order: 1
22
+ });
23
+ var RESOURCE_FALLBACK_LAYOUT = Object.freeze({
24
+ dock: "fill",
25
+ stack: "tabs",
26
+ order: 0
27
+ });
28
+ function createResourcePageTypeContribution(identity) {
29
+ return {
30
+ typeId: identity.PAGE_TYPE,
31
+ titleKey: identity.PAGE_TITLE_I18N_KEY,
32
+ order: identity.PAGE_ORDER,
33
+ closable: true,
34
+ singleton: true,
35
+ initial: false,
36
+ openable: true,
37
+ layout: "dock",
38
+ showPanelRail: true,
39
+ hideWhenInactive: true,
40
+ resourceSelector: identity.RESOURCE_SELECTOR,
41
+ priority: identity.PAGE_PRIORITY
42
+ };
43
+ }
44
+ function createResourcePanelClaims(identity, props = {}) {
45
+ const claims = [];
46
+ if (identity.PREVIEW_SLOT) {
47
+ const owner = Object.freeze({
48
+ panelId: identity.PREVIEW_SLOT,
49
+ pageType: identity.PAGE_TYPE
50
+ });
51
+ claims.push({
52
+ id: identity.PREVIEW_SLOT,
53
+ pageType: identity.PAGE_TYPE,
54
+ titleKey: identity.PREVIEW_TITLE_I18N_KEY,
55
+ activity: { labelKey: identity.PREVIEW_TITLE_I18N_KEY, icon: identity.PREVIEW_ICON },
56
+ layout: identity.PREVIEW_LAYOUT,
57
+ panel: identity.PREVIEW_PANEL,
58
+ props: {
59
+ client: props.client,
60
+ presentation: dedicatedPreviewPresentation(props.presentation, owner),
61
+ owner
62
+ }
63
+ });
64
+ }
65
+ claims.push({
66
+ id: identity.PROPERTIES_SLOT,
67
+ pageType: identity.PAGE_TYPE,
68
+ titleKey: identity.PROPERTIES_TITLE_I18N_KEY,
69
+ activity: { labelKey: identity.PROPERTIES_TITLE_I18N_KEY, icon: identity.PROPERTIES_ICON },
70
+ layout: identity.PROPERTIES_LAYOUT,
71
+ panel: identity.PROPERTIES_PANEL,
72
+ props: { client: props.client }
73
+ });
74
+ return Object.freeze(claims);
75
+ }
76
+ async function applyResourcePagePlugin(ctx, config, identity) {
77
+ const panelHost = config.panelHost ?? ctx.get?.("panelHost", false);
78
+ if (!panelHost) {
79
+ logResourceOpen("resource-page-skipped", {
80
+ reason: "panel-host-missing",
81
+ pageType: identity?.PAGE_TYPE ?? null
82
+ }, { level: "warn" });
83
+ return;
84
+ }
85
+ const pageHost = config.pageHost ?? ctx.get?.("pageHost", false);
86
+ if (!pageHost) {
87
+ throw new TypeError(`View ${identity.PAGE_TYPE} Frontend Plugin requires pageHost`);
88
+ }
89
+ return mountResourcePage(ctx, config, identity, pageHost, panelHost);
90
+ }
91
+ async function mountResourcePage(ctx, config, identity, pageHost, panelHost) {
92
+ const presentation = liveEnginePresentation(ctx, config);
93
+ const unregisterPageType = pageHost.registerType(createResourcePageTypeContribution(identity));
94
+ logResourceOpen("resource-page-registered", {
95
+ pageType: identity.PAGE_TYPE,
96
+ kinds: identity.RESOURCE_SELECTOR?.kinds ?? null
97
+ });
98
+ const workspaceClient = ctx.get("viewOperationClient");
99
+ const disposers = [];
100
+ ctx.effect(() => async () => {
101
+ for (const dispose of [...disposers].reverse()) await dispose?.();
102
+ unregisterPageType();
103
+ });
104
+ try {
105
+ for (const claim of createResourcePanelClaims(identity, { client: workspaceClient, presentation })) {
106
+ disposers.push(await panelHost.mountPanel(claim));
107
+ }
108
+ } catch (error) {
109
+ for (const dispose of [...disposers].reverse()) await dispose?.();
110
+ unregisterPageType();
111
+ throw error;
112
+ }
113
+ }
114
+
115
+ export {
116
+ RESOURCE_PREVIEW_LAYOUT,
117
+ RESOURCE_PROPERTIES_LAYOUT,
118
+ RESOURCE_FALLBACK_LAYOUT,
119
+ createResourcePageTypeContribution,
120
+ createResourcePanelClaims,
121
+ applyResourcePagePlugin
122
+ };
123
+ //# sourceMappingURL=chunk-YYXQDUVT.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/view-workspace-core/src/resource-page.mjs"],
4
+ "sourcesContent": ["import { liveEnginePresentation } from './engine-presentation.mjs';\nimport { dedicatedPreviewPresentation } from './preview-surface.mjs';\nimport { logResourceOpen } from './resource-open.mjs';\n\nexport const RESOURCE_PREVIEW_LAYOUT = Object.freeze({\n dock: 'fill',\n stack: 'tabs',\n order: 0,\n});\n\nexport const RESOURCE_PROPERTIES_LAYOUT = Object.freeze({\n dock: 'right',\n size: Object.freeze({ value: 0.36, unit: 'fraction' }),\n stack: 'tabs',\n order: 1,\n});\n\nexport const RESOURCE_FALLBACK_LAYOUT = Object.freeze({\n dock: 'fill',\n stack: 'tabs',\n order: 0,\n});\n\nexport function createResourcePageTypeContribution(identity) {\n return {\n typeId: identity.PAGE_TYPE,\n titleKey: identity.PAGE_TITLE_I18N_KEY,\n order: identity.PAGE_ORDER,\n closable: true,\n singleton: true,\n initial: false,\n openable: true,\n layout: 'dock',\n showPanelRail: true,\n hideWhenInactive: true,\n resourceSelector: identity.RESOURCE_SELECTOR,\n priority: identity.PAGE_PRIORITY,\n };\n}\n\nexport function createResourcePanelClaims(identity, props = {}) {\n const claims = [];\n if (identity.PREVIEW_SLOT) {\n const owner = Object.freeze({\n panelId: identity.PREVIEW_SLOT,\n pageType: identity.PAGE_TYPE,\n });\n claims.push({\n id: identity.PREVIEW_SLOT,\n pageType: identity.PAGE_TYPE,\n titleKey: identity.PREVIEW_TITLE_I18N_KEY,\n activity: { labelKey: identity.PREVIEW_TITLE_I18N_KEY, icon: identity.PREVIEW_ICON },\n layout: identity.PREVIEW_LAYOUT,\n panel: identity.PREVIEW_PANEL,\n props: {\n client: props.client,\n presentation: dedicatedPreviewPresentation(props.presentation, owner),\n owner,\n },\n });\n }\n claims.push({\n id: identity.PROPERTIES_SLOT,\n pageType: identity.PAGE_TYPE,\n titleKey: identity.PROPERTIES_TITLE_I18N_KEY,\n activity: { labelKey: identity.PROPERTIES_TITLE_I18N_KEY, icon: identity.PROPERTIES_ICON },\n layout: identity.PROPERTIES_LAYOUT,\n panel: identity.PROPERTIES_PANEL,\n props: { client: props.client },\n });\n return Object.freeze(claims);\n}\n\nexport async function applyResourcePagePlugin(ctx, config, identity) {\n const panelHost = config.panelHost ?? ctx.get?.('panelHost', false);\n if (!panelHost) {\n logResourceOpen('resource-page-skipped', {\n reason: 'panel-host-missing',\n pageType: identity?.PAGE_TYPE ?? null,\n }, { level: 'warn' });\n return;\n }\n const pageHost = config.pageHost ?? ctx.get?.('pageHost', false);\n if (!pageHost) {\n throw new TypeError(`View ${identity.PAGE_TYPE} Frontend Plugin requires pageHost`);\n }\n return mountResourcePage(ctx, config, identity, pageHost, panelHost);\n}\n\nasync function mountResourcePage(ctx, config, identity, pageHost, panelHost) {\n const presentation = liveEnginePresentation(ctx, config);\n const unregisterPageType = pageHost.registerType(createResourcePageTypeContribution(identity));\n logResourceOpen('resource-page-registered', {\n pageType: identity.PAGE_TYPE,\n kinds: identity.RESOURCE_SELECTOR?.kinds ?? null,\n });\n const workspaceClient = ctx.get('viewOperationClient');\n const disposers = [];\n ctx.effect(() => async () => {\n for (const dispose of [...disposers].reverse()) await dispose?.();\n unregisterPageType();\n });\n try {\n for (const claim of createResourcePanelClaims(identity, { client: workspaceClient, presentation })) {\n disposers.push(await panelHost.mountPanel(claim));\n }\n } catch (error) {\n for (const dispose of [...disposers].reverse()) await dispose?.();\n unregisterPageType();\n throw error;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }