@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,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/view-plugin-inspector/src/ui/mount.tsx", "../../../packages/view-plugin-inspector/src/ui/InspectorPanel.tsx", "../../../packages/view-plugin-inspector/src/i18n/useTranslation.ts", "../../../packages/view-plugin-inspector/src/ui/mockInspector.ts", "../../../packages/view-plugin-inspector/src/inspection.mjs", "../../../packages/view-plugin-inspector/src/ui/inspector.css"],
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 { InspectorPanel } from './InspectorPanel';\nimport './inspector.css';\n\nexport async function mountInspectorPanel(props: {\n client?: unknown;\n demo?: boolean;\n mountElement: HTMLElement;\n overlayRoot?: HTMLElement;\n}) {\n if (!props.mountElement) throw new TypeError('mountInspectorPanel requires mountElement');\n const root = createRoot(props.mountElement);\n root.render(\n <OverlayRootProvider root={props.overlayRoot ?? props.mountElement}>\n <InspectorPanel client={props.client as never} demo={props.demo} />\n </OverlayRootProvider>,\n );\n return async () => root.unmount();\n}\n", "import {\n useOverlayRoot,\n CollapsibleSection,\n EmptyState,\n FloatingMenu,\n IconButton,\n InspectorFieldControl,\n Menu,\n PanelHeader,\n PropertyRow,\n SearchField,\n Spinner,\n Text,\n Toolbar,\n type AnchorRect,\n type MenuItem as FxMenuItem,\n useWorkspaceClientConnected,\n} from '@forgeax/view-components';\nimport {\n Box,\n Camera,\n Check,\n CircleUserRound,\n Copy,\n Crosshair,\n Focus,\n Hexagon,\n Layers,\n Lightbulb,\n Maximize2,\n Minimize2,\n MoreHorizontal,\n MousePointer2,\n Move3d,\n SlidersHorizontal,\n} from 'lucide-react';\nimport {\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n type MouseEvent,\n type ReactNode,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { useTranslation } from '../i18n/useTranslation';\nimport { INSPECTOR_ACTIONS } from '../schema.mjs';\nimport { MOCK_INSPECTOR_BY_ID, type MockInspectorEntity } from './mockInspector';\nimport type { ViewWorkspaceClient } from '@forgeax/view-workspace-core/client';\nimport { createWorkspaceObservation, createWorkspaceStateReader } from '@forgeax/view-workspace-core/workspace-state';\nimport { jsonUnchanged } from '@forgeax/view-workspace-core/contract';\nimport { inspectorEntityFromInspection, resolveObjectInspectorEntity } from '../inspection.mjs';\n\ntype InspectorComponent = MockInspectorEntity['components'][number];\ntype InspectorField = InspectorComponent['fields'][number];\n\ntype WorkspaceSnapshot = {\n revision?: number;\n preview?: { target: { targetId: string; generation?: number } } | null;\n sceneSelection?: {\n primary?: { entityId: string; label?: string } | null;\n } | null;\n};\n\ntype MenuItem =\n | { kind: 'title'; label: string }\n | { kind: 'separator' }\n | { kind: 'item'; id: string; label: string; icon?: ReactNode; disabled?: boolean; danger?: boolean; forge?: boolean; action: () => void };\ntype MenuState = { x: number; y: number; items: MenuItem[] } | null;\n\ntype InspectionRecord = {\n entityId: string;\n targetId: string;\n generation?: number;\n source: MockInspectorEntity | null;\n};\n\nfunction inspectionMatchesSelection(\n inspection: InspectionRecord | null,\n primary: { entityId: string } | null,\n target: { targetId?: string; generation?: number } | null | undefined,\n) {\n if (!inspection || !primary?.entityId || !target?.targetId) return false;\n return inspection.entityId === primary.entityId\n && inspection.targetId === target.targetId\n && inspection.generation === target.generation;\n}\n\nfunction componentIcon(component: Pick<InspectorComponent, 'name' | 'icon'>, size = 13) {\n const props = { size, strokeWidth: 1.7 };\n if (component.name === 'Transform') return <Move3d {...props} />;\n if (component.name === 'Light') return <Lightbulb {...props} />;\n if (component.name === 'Camera') return <Camera {...props} />;\n if (component.name.includes('Renderer')) return <Layers {...props} />;\n if (component.name.includes('Body') || component.name.includes('Collider')) return <Hexagon {...props} />;\n if (component.name.includes('Character')) return <CircleUserRound {...props} />;\n return <Box {...props} />;\n}\n\nfunction InspectorContextMenu({ state, close }: { state: Exclude<MenuState, null>; close: () => void }) {\n const overlayRoot = useOverlayRoot();\n const { t } = useTranslation();\n useEffect(() => {\n const dismiss = () => close();\n const escape = (event: KeyboardEvent) => event.key === 'Escape' && close();\n window.addEventListener('pointerdown', dismiss);\n window.addEventListener('keydown', escape);\n return () => {\n window.removeEventListener('pointerdown', dismiss);\n window.removeEventListener('keydown', escape);\n };\n }, [close]);\n return createPortal(\n <div\n className=\"insp-context-menu fx-ui\"\n data-action={INSPECTOR_ACTIONS.showContextMenu}\n style={{\n left: Math.max(8, Math.min(state.x, window.innerWidth - 238)),\n top: Math.max(8, Math.min(state.y, window.innerHeight - 300)),\n }}\n onPointerDown={(event) => event.stopPropagation()}\n onContextMenu={(event) => event.preventDefault()}\n >\n <Menu\n label={t('inspector.contextMenu')}\n items={state.items.map((item): FxMenuItem => {\n if (item.kind === 'separator') return { type: 'separator' };\n if (item.kind === 'title') return { type: 'title', label: item.label };\n return {\n id: item.id,\n label: item.label,\n icon: item.forge ? <span className=\"insp-menu-forge\">{item.icon}</span> : item.icon,\n disabled: item.disabled,\n danger: item.danger,\n onSelect: () => { item.action(); close(); },\n };\n })}\n />\n </div>,\n overlayRoot ?? document.body,\n );\n}\n\nfunction InspectorBody({ source, focus }: { source: MockInspectorEntity; focus?: () => void }) {\n const { t } = useTranslation();\n const name = source.name;\n const components = useMemo(() => structuredClone(source.components), [source]);\n const [collapsed, setCollapsed] = useState(new Set<string>());\n const [query, setQuery] = useState('');\n const [settingsOpen, setSettingsOpen] = useState(false);\n const [settingsMenuAnchor, setSettingsMenuAnchor] = useState<AnchorRect | null>(null);\n const settingsButtonRef = useRef<HTMLButtonElement>(null);\n const [copied, setCopied] = useState(false);\n const [contextMenu, setContextMenu] = useState<MenuState>(null);\n const sectionRefs = useRef<Record<string, HTMLDivElement | null>>({});\n\n useEffect(() => {\n if (!settingsOpen) setSettingsMenuAnchor(null);\n }, [settingsOpen]);\n\n const toggleSettingsMenu = () => {\n if (settingsOpen) {\n setSettingsOpen(false);\n return;\n }\n const rect = settingsButtonRef.current?.getBoundingClientRect();\n if (rect) setSettingsMenuAnchor(rect);\n setSettingsOpen(true);\n };\n\n const showContext = (event: MouseEvent, items: MenuItem[]) => {\n event.preventDefault();\n event.stopPropagation();\n setSettingsOpen(false);\n setContextMenu({ x: event.clientX, y: event.clientY, items });\n };\n const componentMenu = (component: InspectorComponent): MenuItem[] => [\n { kind: 'title', label: component.name },\n { kind: 'item', id: 'copy', label: t('inspector.menu.copyComponentJson'), icon: <Copy size={14} />, action: () => void navigator.clipboard?.writeText(JSON.stringify({ [component.name]: component.fields }, null, 2)) },\n ];\n const fieldMenu = (component: InspectorComponent, field: InspectorField): MenuItem[] => [\n { kind: 'title', label: `${component.name}.${field.label}` },\n { kind: 'item', id: 'copy-value', label: t('inspector.menu.copyValue'), icon: <Copy size={14} />, action: () => void navigator.clipboard?.writeText(JSON.stringify(field.value)) },\n ];\n const shownComponents = useMemo(() => {\n const text = query.trim().toLowerCase();\n return components\n .map((component) => ({\n ...component,\n fields: component.fields.filter((field) => (\n !text || component.name.toLowerCase().includes(text) || field.label.toLowerCase().includes(text) || field.key.toLowerCase().includes(text)\n )),\n }))\n .filter((component) => !text || component.name.toLowerCase().includes(text) || component.fields.length > 0);\n }, [components, query]);\n const headerIcon = source.badge === 'Light' ? <Lightbulb size={15} /> : source.badge === 'Character' ? <CircleUserRound size={15} /> : <Box size={15} />;\n\n return (\n <div className=\"fx-inspector__body\">\n <PanelHeader className=\"insp-header\" onContextMenu={(event) => showContext(event, [\n { kind: 'title', label: name },\n { kind: 'item', id: 'focus', label: t('inspector.menu.focusViewport'), icon: <Focus size={14} />, action: () => focus?.(), disabled: !focus },\n { kind: 'item', id: 'copy', label: t('inspector.menu.copyObjectJson'), icon: <Copy size={14} />, action: () => void navigator.clipboard?.writeText(JSON.stringify({ name, components }, null, 2)) },\n ])}\n start={\n <span className=\"insp-header-identity\">\n <span className=\"tico\">{headerIcon}</span>\n <span className=\"insp-header-copy\">\n <Text as=\"span\" variant=\"label\" className=\"insp-header-name\" title={name}>{name}</Text>\n </span>\n </span>\n }\n end={\n <span className=\"insp-header-end\">\n {source.badge ? <span className=\"badge\" title={source.badge}>{source.badge}</span> : null}\n <IconButton data-action={INSPECTOR_ACTIONS.focus} onClick={focus} disabled={!focus} label={t('inspector.focusObject')} icon={<Crosshair size={15} />} variant=\"quiet\" size=\"compact\" />\n <IconButton data-action={INSPECTOR_ACTIONS.copyEntity} label={t('inspector.copyJson')} icon={copied ? <Check size={15} /> : <Copy size={15} />} variant=\"quiet\" size=\"compact\" onClick={() => { void navigator.clipboard?.writeText(JSON.stringify({ name, components }, null, 2)); setCopied(true); window.setTimeout(() => setCopied(false), 1000); }} />\n </span>\n }\n />\n\n <Toolbar className=\"insp-toolbar\">\n <SearchField data-testid=\"insp-search\" data-action={INSPECTOR_ACTIONS.search} value={query} onChange={(event) => setQuery(event.target.value)} onClear={() => setQuery('')} placeholder={t('inspector.searchPlaceholder')} label={t('inspector.searchLabel')} />\n <IconButton ref={settingsButtonRef} className={settingsOpen ? 'is-active' : undefined} data-testid=\"insp-settings\" label={t('inspector.displaySettings')} icon={<SlidersHorizontal size={15} />} variant=\"secondary\" size=\"compact\" onClick={toggleSettingsMenu} />\n </Toolbar>\n\n <div className=\"insp-scroll\" data-testid=\"insp-scroll\">\n <div className=\"dp-comp\">\n <div className=\"ch\">\n <Text as=\"span\" variant=\"caption\" tone=\"muted\">{t('inspector.components')}</Text>\n </div>\n {components.map((component) => (\n <div role=\"button\" tabIndex={0} key={component.name} className=\"comp-row\" data-testid={`insp-comprow-${component.name}`} onClick={() => { setCollapsed((current) => { const next = new Set(current); next.delete(component.name); return next; }); sectionRefs.current[component.name]?.scrollIntoView({ behavior: 'smooth', block: 'start' }); }} onContextMenu={(event) => showContext(event, componentMenu(component))}>\n <span className=\"ci\">{componentIcon(component)}</span><span className=\"comp-name\">{component.name}</span>\n </div>\n ))}\n </div>\n\n <div className=\"dp-body\">\n {shownComponents.length === 0 ? <EmptyState className=\"no-match\" title={t('inspector.noMatchTitle')} description={t('inspector.noMatchDescription')} /> : shownComponents.map((component) => {\n const isCollapsed = collapsed.has(component.name) && !query;\n const category = component.category === 'all' ? 'dim-all' : component.category === 'capability' ? 'dim-cap' : 'dim-type';\n return (\n <div className={`cat ${category}`} key={component.name} ref={(element) => { sectionRefs.current[component.name] = element; }} onContextMenu={(event) => showContext(event, componentMenu(component))}>\n <CollapsibleSection\n open={!isCollapsed}\n onOpenChange={(open) => setCollapsed((current) => { const next = new Set(current); if (open) next.delete(component.name); else next.add(component.name); return next; })}\n triggerProps={{ 'data-action': INSPECTOR_ACTIONS.toggleComponent }}\n title={<span className=\"cat-title\"><span className=\"cat-icon\">{componentIcon(component)}</span><span>{component.name}</span></span>}\n trailing={<span className=\"cacts\"><IconButton className=\"cact\" data-action={INSPECTOR_ACTIONS.copyComponent} label={t('inspector.menu.copyComponentJson')} icon={<Copy size={13} />} variant=\"quiet\" size=\"compact\" onClick={(event) => { event.stopPropagation(); void navigator.clipboard?.writeText(JSON.stringify(component, null, 2)); }} /><IconButton className=\"cact more\" label={t('inspector.more')} icon={<MoreHorizontal size={14} />} variant=\"quiet\" size=\"compact\" onClick={(event) => showContext(event, componentMenu(component))} /></span>}\n >\n <div className=\"cat-fields\">\n {component.fields.length === 0 ? <EmptyState className=\"no-match\" title={t('inspector.noMatchTitle')} description={t('inspector.noMatchComponent')} /> : component.fields.map((field) => (\n <div className=\"f-row-wrap\" key={field.key} data-testid={`insp-field-${component.name}-${field.key}`} onContextMenu={(event) => { event.stopPropagation(); showContext(event, fieldMenu(component, field)); }}>\n <PropertyRow className=\"f-row\" label={<span title={field.key}>{field.label}</span>}>\n <InspectorFieldControl field={field} />\n </PropertyRow>\n </div>\n ))}\n </div>\n </CollapsibleSection>\n </div>\n );\n })}\n </div>\n </div>\n <FloatingMenu\n open={Boolean(settingsMenuAnchor && settingsOpen)}\n anchorRect={settingsMenuAnchor}\n onClose={() => setSettingsOpen(false)}\n ignorePointerWithin={[settingsButtonRef]}\n containerProps={{ onPointerDown: (event) => event.stopPropagation() }}\n >\n <div className=\"fx-insp-menu\">\n <Menu label={t('inspector.displaySettings')} items={[\n { type: 'title', label: t('inspector.displaySettings') },\n { id: 'expand', label: t('inspector.expandAll'), buttonProps: { 'data-action': INSPECTOR_ACTIONS.expandAll }, icon: <Maximize2 size={14} />, onSelect: () => { setCollapsed(new Set()); setSettingsOpen(false); } },\n { id: 'collapse', label: t('inspector.collapseAll'), buttonProps: { 'data-action': INSPECTOR_ACTIONS.collapseAll }, icon: <Minimize2 size={14} />, onSelect: () => { setCollapsed(new Set(components.map((component) => component.name))); setSettingsOpen(false); } },\n ]} />\n </div>\n </FloatingMenu>\n {contextMenu ? <InspectorContextMenu state={contextMenu} close={() => setContextMenu(null)} /> : null}\n </div>\n );\n}\n\nexport function InspectorPanel(props: { client?: ViewWorkspaceClient; demo?: boolean }) {\n const { t } = useTranslation();\n const reader = useMemo(() => createWorkspaceStateReader(props.client), [props.client]);\n const workspace = useSyncExternalStore(\n reader.subscribe,\n () => reader.getSnapshot() as WorkspaceSnapshot | null,\n () => reader.getSnapshot() as WorkspaceSnapshot | null,\n );\n const primary = workspace?.sceneSelection?.primary ?? null;\n const target = workspace?.preview?.target;\n const connected = useWorkspaceClientConnected(props.demo ? undefined : props.client);\n const [inspection, setInspection] = useState<InspectionRecord | null>(null);\n const [loading, setLoading] = useState(false);\n const [failure, setFailure] = useState<string | null>(null);\n const lastDisplaySourceRef = useRef<MockInspectorEntity | null>(null);\n const selectionKey = primary?.entityId && target?.targetId\n ? `${primary.entityId}:${target.targetId}:${target.generation ?? ''}`\n : null;\n useEffect(() => {\n if (!primary?.entityId) lastDisplaySourceRef.current = null;\n }, [primary?.entityId]);\n useEffect(() => {\n if (props.demo || !props.client || !connected || !primary?.entityId || !target?.targetId) {\n setLoading(false);\n return;\n }\n const observation = createWorkspaceObservation(reader, (current: WorkspaceSnapshot | null) =>\n current?.sceneSelection?.primary?.entityId === primary.entityId &&\n current?.preview?.target?.targetId === target.targetId &&\n current?.preview?.target?.generation === target.generation);\n const { signal } = observation;\n let timer: ReturnType<typeof setTimeout>;\n setLoading(true);\n setFailure(null);\n const refresh = async () => {\n if (signal.aborted) return;\n try {\n const result = await props.client!.call('entity.inspect', { entityId: primary.entityId, targetId: target.targetId, targetGeneration: target.generation }, { signal });\n if (signal.aborted) return;\n const source = inspectorEntityFromInspection(result);\n setInspection((current) => {\n const next = { entityId: primary.entityId, targetId: target.targetId, generation: target.generation, source };\n if (\n current &&\n current.entityId === next.entityId &&\n current.targetId === next.targetId &&\n current.generation === next.generation &&\n jsonUnchanged(current.source, next.source)\n ) return current;\n return next;\n });\n setFailure(null);\n setLoading(false);\n } catch (error) {\n if (signal.aborted) return;\n setInspection((current) => {\n if (current == null) return current;\n return null;\n });\n setFailure(String(error));\n setLoading(false);\n }\n if (!signal.aborted) timer = setTimeout(refresh, 500);\n };\n void refresh();\n return () => { observation.dispose(); clearTimeout(timer); };\n // A batched return to the same selection still needs a fresh observation.\n }, [props.client, props.demo, connected, selectionKey, reader, workspace]);\n const inSync = inspectionMatchesSelection(inspection, primary, target);\n const syncedSource = inSync ? inspection?.source ?? null : null;\n useEffect(() => {\n if (syncedSource) lastDisplaySourceRef.current = syncedSource;\n }, [syncedSource]);\n const demoSource = resolveObjectInspectorEntity(primary, { demo: true, mockById: MOCK_INSPECTOR_BY_ID });\n const hasSelection = Boolean(primary?.entityId);\n const displaySource = props.demo\n ? demoSource\n : (syncedSource ?? (hasSelection ? lastDisplaySourceRef.current : null));\n const focus = props.client && target && primary?.entityId ? () => {\n void props.client!.call('entity.focus', { entityId: primary.entityId, targetId: target.targetId, targetGeneration: target.generation }).catch((error: unknown) => setFailure(String(error)));\n } : undefined;\n const showEmpty = props.demo ? !demoSource : !hasSelection || (!displaySource && !loading);\n const showLoadingPane = !props.demo && hasSelection && !displaySource && loading;\n const showStaleOverlay = !props.demo && hasSelection && !inSync && loading && Boolean(displaySource);\n const entityIdAttr = inSync ? syncedSource?.id : (primary?.entityId ?? displaySource?.id);\n return (\n <div\n className=\"fx-inspector fx-ui\"\n data-testid=\"panel-inspector\"\n data-view-readonly=\"true\"\n data-entity-id={entityIdAttr}\n data-inspector-loading={showStaleOverlay || showLoadingPane ? 'true' : undefined}\n >\n {showEmpty ? (\n <EmptyState\n className=\"dp-empty\"\n data-testid=\"insp-empty\"\n title={t('inspector.emptyTitle')}\n description={failure ?? t('inspector.emptyDescription')}\n icon={<MousePointer2 />}\n />\n ) : showLoadingPane ? (\n <div className=\"fx-inspector__loading-pane\" data-testid=\"insp-loading\">\n <Spinner label={t('inspector.loading')} />\n </div>\n ) : displaySource ? (\n <>\n <InspectorBody key={displaySource.id} source={displaySource} focus={focus} />\n {showStaleOverlay ? (\n <div className=\"fx-inspector__loading-veil\" aria-hidden>\n <Spinner label={t('inspector.loading')} />\n </div>\n ) : null}\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", "export type MockInspectorEntity = {\n id: string;\n name: string;\n badge?: string;\n components: Array<{\n name: string;\n icon: string;\n category?: 'all' | 'type' | 'capability';\n fields: Array<{\n key: string;\n label: string;\n kind: 'vector3' | 'vector4' | 'number' | 'bool' | 'text' | 'enum' | 'color' | 'asset';\n value: string | number | boolean | { x: number; y: number; z: number } | { x: number; y: number; z: number; w: number };\n options?: string[];\n }>;\n }>;\n};\n\nexport const MOCK_INSPECTOR_BY_ID: Record<string, MockInspectorEntity> = {\n ground: {\n id: 'ground',\n name: 'Ground',\n badge: 'Mesh',\n components: [\n {\n name: 'Transform',\n icon: 'move3d',\n category: 'all',\n fields: [\n { key: 'position', label: 'Position', kind: 'vector3', value: { x: 0, y: 0, z: 0 } },\n { key: 'rotation', label: 'Rotation', kind: 'vector3', value: { x: 0, y: 0, z: 0 } },\n { key: 'scale', label: 'Scale', kind: 'vector3', value: { x: 10, y: 0.2, z: 8 } },\n ],\n },\n {\n name: 'MeshFilter',\n icon: 'box',\n category: 'type',\n fields: [{ key: 'mesh', label: 'Mesh', kind: 'asset', value: 'Plane' }],\n },\n {\n name: 'MeshRenderer',\n icon: 'layers',\n category: 'capability',\n fields: [\n { key: 'material', label: 'Material 0', kind: 'asset', value: 'Ground Material' },\n { key: 'castShadows', label: 'Cast Shadows', kind: 'bool', value: true },\n { key: 'receiveShadows', label: 'Receive Shadows', kind: 'bool', value: true },\n ],\n },\n {\n name: 'Collider',\n icon: 'hexagon',\n category: 'capability',\n fields: [\n { key: 'shape', label: 'Shape', kind: 'enum', value: 'Box', options: ['Box', 'Sphere', 'Capsule', 'Mesh'] },\n { key: 'center', label: 'Center', kind: 'vector3', value: { x: 0, y: 0, z: 0 } },\n { key: 'isTrigger', label: 'Is Trigger', kind: 'bool', value: false },\n ],\n },\n ],\n },\n 'red-box': {\n id: 'red-box',\n name: 'RedBox',\n badge: 'Mesh',\n components: [\n {\n name: 'Transform',\n icon: 'move3d',\n category: 'all',\n fields: [\n {\n key: 'position',\n label: 'Position',\n kind: 'vector3',\n value: { x: 0, y: 0.5, z: 2.4 },\n },\n {\n key: 'rotation',\n label: 'Rotation',\n kind: 'vector3',\n value: { x: 0, y: 45, z: 0 },\n },\n {\n key: 'scale',\n label: 'Scale',\n kind: 'vector3',\n value: { x: 1, y: 1, z: 1 },\n },\n ],\n },\n {\n name: 'MeshFilter',\n icon: 'box',\n category: 'type',\n fields: [{ key: 'mesh', label: 'Mesh', kind: 'asset', value: 'Cube' }],\n },\n {\n name: 'MeshRenderer',\n icon: 'layers',\n category: 'capability',\n fields: [\n { key: 'material', label: 'Material 0', kind: 'asset', value: 'Red Material' },\n { key: 'castShadows', label: 'Cast Shadows', kind: 'bool', value: true },\n ],\n },\n ],\n },\n player: {\n id: 'player',\n name: 'Player',\n badge: 'Character',\n components: [\n {\n name: 'Transform',\n icon: 'move3d',\n category: 'all',\n fields: [\n {\n key: 'position',\n label: 'Position',\n kind: 'vector3',\n value: { x: -1.2, y: 0, z: 0 },\n },\n {\n key: 'rotation',\n label: 'Rotation',\n kind: 'vector3',\n value: { x: 0, y: 0, z: 0 },\n },\n {\n key: 'scale',\n label: 'Scale',\n kind: 'vector3',\n value: { x: 1, y: 1, z: 1 },\n },\n ],\n },\n {\n name: 'CharacterController',\n icon: 'user',\n category: 'capability',\n fields: [\n { key: 'speed', label: 'Move Speed', kind: 'number', value: 6 },\n { key: 'jumpHeight', label: 'Jump Height', kind: 'number', value: 1.4 },\n { key: 'enabled', label: 'Enabled', kind: 'bool', value: true },\n ],\n },\n ],\n },\n sun: {\n id: 'sun',\n name: 'Sun',\n badge: 'Light',\n components: [\n {\n name: 'Transform',\n icon: 'move3d',\n category: 'all',\n fields: [\n { key: 'rotation', label: 'Rotation', kind: 'vector3', value: { x: 50, y: -30, z: 0 } },\n ],\n },\n {\n name: 'Light',\n icon: 'sun',\n category: 'type',\n fields: [\n { key: 'type', label: 'Type', kind: 'enum', value: 'Directional', options: ['Directional', 'Point', 'Spot'] },\n { key: 'color', label: 'Color', kind: 'color', value: '#fff4d6' },\n { key: 'intensity', label: 'Intensity', kind: 'number', value: 3.2 },\n { key: 'castShadows', label: 'Cast Shadows', kind: 'bool', value: true },\n ],\n },\n ],\n },\n};\n", "import {\n formatInspectorFieldLabel,\n normalizeInspectorFieldValue,\n resolveInspectorFieldKind,\n} from '@forgeax/view-components/inspector-form-model';\n\nexport { formatInspectorFieldLabel };\n\n/**\n * @param {{ entityId: string; label?: string } | null | undefined} primary\n * @param {{ demo?: boolean; mockById?: Record<string, import('./ui/mockInspector.ts').MockInspectorEntity> }} [options]\n */\nexport function resolveObjectInspectorEntity(primary, { demo = false, mockById = null } = {}) {\n if (!primary?.entityId) return null;\n if (demo && mockById?.[primary.entityId]) return mockById[primary.entityId];\n return null;\n}\n\nexport function inspectorEntityFromInspection(inspection) {\n if (!inspection?.entityId || !Array.isArray(inspection.components)) return null;\n return {\n id: inspection.entityId,\n name: inspection.name ?? (inspection.entity === undefined ? inspection.entityId : `Entity ${inspection.entity}`),\n badge: 'Entity',\n components: inspection.components.map((component) => ({\n name: component.name,\n icon: 'box',\n category: 'all',\n fields: Object.entries(component.fields ?? {}).map(([key, schema]) => {\n const rawValue = component.values?.[key];\n const kind = resolveInspectorFieldKind(schema, rawValue);\n return {\n key,\n label: formatInspectorFieldLabel(key),\n kind,\n value: normalizeInspectorFieldValue(rawValue, kind),\n };\n }),\n })),\n };\n}\n", "\n const css = \"/* packages/view-plugin-inspector/src/ui/inspector.css */\\n.fx-inspector {\\n --insp-bg: var(--fx-color-surface-canvas);\\n --insp-raised: var(--fx-color-surface-raised);\\n --insp-line: var(--fx-color-border-subtle);\\n --insp-muted: var(--fx-color-text-muted);\\n --insp-text: var(--fx-color-text-primary);\\n --insp-accent: var(--fx-color-brand-accent);\\n --d-type: var(--insp-accent);\\n --d-all: var(--fx-color-status-success-fg);\\n --d-cap: var(--fx-color-status-warning-fg);\\n display: flex;\\n position: relative;\\n flex: 1 1 0%;\\n flex-direction: column;\\n width: 100%;\\n height: 100%;\\n min-height: 0;\\n overflow: hidden;\\n background: var(--insp-bg);\\n color: var(--insp-text);\\n font: var(--fx-type-compact-font-weight) var(--fx-type-compact-font-size)/var(--fx-type-compact-line-height) var(--fx-type-compact-font-family);\\n}\\n.fx-inspector * {\\n box-sizing: border-box;\\n}\\n.fx-inspector button,\\n.fx-inspector input {\\n font: inherit;\\n}\\n.fx-inspector .dp-name {\\n display: flex;\\n align-items: center;\\n gap: var(--fx-space-control);\\n min-height: var(--fx-component-panel-header-height);\\n padding: 0 var(--fx-ref-space-12);\\n border-bottom: var(--fx-border-width) solid var(--insp-line);\\n}\\n.fx-inspector .tico {\\n display: grid;\\n place-items: center;\\n width: var(--fx-component-control-height-compact);\\n height: var(--fx-component-control-height-compact);\\n flex: 0 0 auto;\\n border: var(--fx-border-width) solid var(--fx-color-border-default);\\n border-radius: var(--fx-radius-control);\\n background: var(--insp-raised);\\n color: var(--fx-color-text-secondary);\\n}\\n.fx-inspector .ninput {\\n flex: 1;\\n min-width: 0;\\n height: var(--fx-component-control-height-compact);\\n padding: var(--fx-ref-space-4) var(--fx-ref-space-8);\\n border: var(--fx-border-width) solid var(--insp-line);\\n border-radius: var(--fx-radius-control);\\n outline: 0;\\n background: var(--fx-color-surface-inset);\\n color: var(--insp-text);\\n font: var(--fx-type-compact-font-weight) var(--fx-type-compact-font-size) / var(--fx-type-compact-line-height) var(--fx-type-compact-font-family);\\n font-weight: var(--fx-ref-font-weight-600);\\n}\\n.fx-inspector .badge,\\n.fx-inspector .idbadge {\\n flex: 0 0 auto;\\n color: var(--insp-muted);\\n}\\n.fx-inspector .badge {\\n padding: var(--fx-ref-space-2) var(--fx-ref-space-6);\\n border: var(--fx-border-width) solid var(--fx-color-border-default);\\n border-radius: var(--fx-radius-pill);\\n}\\n.fx-inspector .tico2 {\\n display: grid;\\n place-items: center;\\n padding: var(--fx-ref-space-4);\\n border: 0;\\n background: transparent;\\n color: var(--insp-muted);\\n cursor: pointer;\\n}\\n.fx-inspector .tico2:hover {\\n color: var(--insp-text);\\n}\\n.fx-inspector .dp-toolbar {\\n display: flex;\\n align-items: center;\\n gap: var(--fx-ref-space-6);\\n padding: var(--fx-ref-space-8) var(--fx-ref-space-12);\\n border-bottom: var(--fx-border-width) solid var(--insp-line);\\n}\\n.fx-inspector .dp-search {\\n display: flex;\\n align-items: center;\\n flex: 1;\\n min-width: 0;\\n height: var(--fx-component-control-height-compact);\\n padding: 0 var(--fx-ref-space-12);\\n gap: var(--fx-ref-space-6);\\n border: var(--fx-border-width) solid var(--insp-line);\\n border-radius: var(--fx-radius-control);\\n background: var(--fx-color-surface-inset);\\n color: var(--insp-muted);\\n}\\n.fx-inspector .dp-search:focus-within {\\n border-color: var(--fx-color-border-focus);\\n}\\n.fx-inspector .dp-search input {\\n flex: 1;\\n min-width: 0;\\n border: 0;\\n outline: 0;\\n background: transparent;\\n color: var(--insp-text);\\n}\\n.fx-inspector .t-btn {\\n display: grid;\\n place-items: center;\\n width: var(--fx-component-control-height-compact);\\n height: var(--fx-component-control-height-compact);\\n padding: 0;\\n border: var(--fx-border-width) solid var(--insp-line);\\n border-radius: var(--fx-radius-control);\\n background: var(--insp-raised);\\n color: var(--insp-muted);\\n cursor: pointer;\\n}\\n.fx-inspector .dp-comp {\\n position: relative;\\n flex: 0 0 auto;\\n padding: var(--fx-ref-space-8) var(--fx-ref-space-12);\\n border-bottom: var(--fx-border-width) solid var(--insp-line);\\n}\\n.fx-inspector .dp-comp .ch {\\n display: flex;\\n align-items: center;\\n margin-bottom: var(--fx-ref-space-6);\\n}\\n.fx-inspector .dp-comp .lbl {\\n color: var(--insp-muted);\\n font: var(--fx-type-caption-font-weight) var(--fx-type-caption-font-size) / var(--fx-type-caption-line-height) var(--fx-type-code-font-family);\\n letter-spacing: var(--fx-type-caption-letter-spacing);\\n text-transform: uppercase;\\n}\\n.fx-inspector .dp-comp .add {\\n display: inline-flex;\\n align-items: center;\\n margin-left: auto;\\n gap: var(--fx-ref-space-2);\\n padding: var(--fx-ref-space-2) var(--fx-ref-space-8);\\n border: var(--fx-border-width) solid var(--fx-color-brand-accent);\\n border-radius: var(--fx-ref-radius-4);\\n background: var(--fx-color-brand-soft);\\n color: var(--insp-accent);\\n font: var(--fx-type-caption-font-weight) var(--fx-type-caption-font-size) / var(--fx-type-caption-line-height) var(--fx-type-caption-font-family);\\n cursor: pointer;\\n}\\n.fx-inspector .comp-row {\\n display: flex;\\n align-items: center;\\n width: 100%;\\n min-height: var(--fx-component-editor-row-height);\\n padding: var(--fx-ref-space-4) var(--fx-ref-space-8);\\n gap: var(--fx-ref-space-6);\\n border: 0;\\n border-radius: var(--fx-ref-radius-4);\\n background: transparent;\\n color: var(--fx-color-text-secondary);\\n}\\n.fx-inspector .comp-row:hover {\\n background: var(--fx-color-surface-hover);\\n}\\n.fx-inspector .comp-row .ci {\\n display: grid;\\n color: var(--insp-muted);\\n}\\n.fx-inspector .comp-name {\\n flex: 1;\\n min-width: 0;\\n}\\n.fx-inspector .comp-del {\\n padding: var(--fx-border-width);\\n border: 0;\\n background: transparent;\\n color: var(--insp-muted);\\n opacity: 0;\\n}\\n.fx-inspector .comp-row:hover .comp-del {\\n opacity: 1;\\n}\\n.fx-inspector .insp-scroll {\\n display: flex;\\n flex: 1 1 0%;\\n flex-direction: column;\\n min-height: 0;\\n min-width: 0;\\n overflow: auto;\\n}\\n.fx-inspector .dp-body {\\n flex: 1 1 auto;\\n min-height: 0;\\n}\\n.fx-inspector .cat {\\n border-bottom: var(--fx-border-width) solid var(--insp-line);\\n}\\n.fx-inspector .cat-head {\\n display: flex;\\n align-items: center;\\n min-height: var(--fx-component-field-height-default);\\n padding: var(--fx-ref-space-8) var(--fx-ref-space-12);\\n gap: var(--fx-ref-space-8);\\n border-left: calc(var(--fx-border-width) * 3) solid transparent;\\n background: var(--fx-color-surface-sidebar);\\n cursor: pointer;\\n}\\n.fx-inspector .cat.dim-type .cat-head {\\n border-left-color: var(--d-type);\\n}\\n.fx-inspector .cat.dim-all .cat-head {\\n border-left-color: var(--d-all);\\n}\\n.fx-inspector .cat.dim-cap .cat-head {\\n border-left-color: var(--d-cap);\\n}\\n.fx-inspector .cat-head:hover {\\n background: var(--fx-color-surface-hover);\\n}\\n.fx-inspector .cat-head .car {\\n display: grid;\\n color: var(--insp-muted);\\n}\\n.fx-inspector .cat-head .cat-icon {\\n display: grid;\\n place-items: center;\\n color: var(--insp-muted);\\n}\\n.fx-inspector .cat-head .ct {\\n color: var(--fx-color-text-primary);\\n font-size: var(--fx-type-compact-font-size);\\n font-weight: var(--fx-ref-font-weight-600);\\n}\\n.fx-inspector .cat-head .advb {\\n margin-left: var(--fx-ref-space-2);\\n padding: 0 var(--fx-ref-space-6);\\n border: var(--fx-border-width) solid var(--fx-color-border-default);\\n border-radius: var(--fx-radius-pill);\\n color: var(--insp-muted);\\n font: var(--fx-type-caption-font-weight) var(--fx-type-caption-font-size)/var(--fx-type-caption-line-height) var(--fx-type-code-font-family);\\n}\\n.fx-inspector .cat-head .cacts {\\n display: inline-flex;\\n align-items: center;\\n gap: var(--fx-ref-space-4);\\n margin-left: auto;\\n}\\n.fx-inspector .cat-head .cact {\\n display: grid;\\n place-items: center;\\n padding: var(--fx-ref-space-2);\\n border: 0;\\n border-radius: var(--fx-ref-radius-4);\\n background: transparent;\\n color: var(--insp-muted);\\n opacity: 0;\\n cursor: pointer;\\n}\\n.fx-inspector .cat-head:hover .cact {\\n opacity: .7;\\n}\\n.fx-inspector .cat-head .cact:hover {\\n opacity: 1;\\n color: var(--insp-text);\\n background: var(--fx-color-surface-hover);\\n}\\n.fx-inspector .cat.collapsed .cat-fields {\\n display: none;\\n}\\n.fx-inspector .cat-fields {\\n padding: var(--fx-ref-space-4) 0 var(--fx-ref-space-6);\\n}\\n.fx-inspector .f-row {\\n display: flex;\\n align-items: center;\\n min-height: var(--fx-component-editor-row-height);\\n padding: var(--fx-ref-space-4) var(--fx-ref-space-12) var(--fx-ref-space-4) var(--fx-ref-space-8);\\n gap: var(--fx-ref-space-8);\\n}\\n.fx-inspector .f-row:hover {\\n background: var(--fx-color-surface-hover);\\n}\\n.fx-inspector .f-name {\\n flex: 0 1 38%;\\n min-width: 0;\\n overflow: hidden;\\n color: var(--fx-color-text-secondary);\\n font-size: var(--fx-type-caption-font-size);\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n.fx-inspector .f-val {\\n display: flex;\\n flex: 1;\\n min-width: 0;\\n}\\n.fx-inspector .box-i {\\n min-width: 0;\\n height: var(--fx-component-control-icon-hit-area-min);\\n padding: var(--fx-ref-space-2) var(--fx-ref-space-6);\\n border: var(--fx-border-width) solid var(--insp-line);\\n border-radius: var(--fx-radius-control);\\n outline: 0;\\n background: var(--fx-color-surface-inset);\\n color: var(--fx-color-text-secondary);\\n font: var(--fx-type-code-font-weight) var(--fx-type-code-font-size) / var(--fx-type-code-line-height) var(--fx-type-code-font-family);\\n}\\n.fx-inspector .box-i:focus {\\n border-color: var(--fx-color-border-focus);\\n}\\n.fx-inspector .box-i.txt {\\n flex: 1;\\n}\\n.fx-inspector .vec {\\n display: flex;\\n flex: 1;\\n min-width: 0;\\n gap: var(--fx-ref-space-4);\\n}\\n.fx-inspector .vec4 {\\n gap: var(--fx-ref-space-2);\\n}\\n.fx-inspector .vec4 .vcell {\\n min-width: 0;\\n}\\n.fx-inspector .vcell {\\n position: relative;\\n display: flex;\\n flex: 1;\\n min-width: 0;\\n}\\n.fx-inspector .axis-label {\\n position: absolute;\\n z-index: var(--fx-layer-sticky);\\n top: var(--fx-ref-space-6);\\n left: var(--fx-ref-space-6);\\n color: var(--insp-muted);\\n font: var(--fx-type-caption-font-weight) var(--fx-type-caption-font-size) / var(--fx-type-caption-line-height) var(--fx-type-code-font-family);\\n pointer-events: none;\\n}\\n.fx-inspector .vcell .numfield {\\n flex: 1;\\n min-width: 0;\\n}\\n.fx-inspector .vcell .box-i {\\n width: 100%;\\n padding-left: var(--fx-component-choice-size);\\n text-align: center;\\n}\\n.fx-inspector .vcell.x .box-i {\\n border-bottom: var(--fx-border-focus-width) solid var(--fx-color-status-error-fg);\\n}\\n.fx-inspector .vcell.y .box-i {\\n border-bottom: var(--fx-border-focus-width) solid var(--fx-color-status-success-fg);\\n}\\n.fx-inspector .vcell.z .box-i {\\n border-bottom: var(--fx-border-focus-width) solid var(--fx-color-status-info-fg);\\n}\\n.fx-inspector .numfield {\\n position: relative;\\n display: flex;\\n flex: 1;\\n min-width: 0;\\n}\\n.fx-inspector .numfield.num {\\n flex: 0 0 calc(var(--fx-ref-space-48) + var(--fx-ref-space-32) + var(--fx-ref-space-8));\\n}\\n.fx-inspector .scrubbable:not(:focus) {\\n cursor: ew-resize;\\n}\\n.fx-inspector .nspin {\\n position: absolute;\\n top: var(--fx-border-width);\\n right: var(--fx-border-width);\\n bottom: var(--fx-border-width);\\n display: none;\\n width: var(--fx-ref-space-12);\\n flex-direction: column;\\n background: var(--fx-color-surface-inset);\\n border-radius: 0 var(--fx-ref-radius-4) var(--fx-ref-radius-4) 0;\\n}\\n.fx-inspector .numfield:hover .nspin,\\n.fx-inspector .numfield:focus-within .nspin {\\n display: flex;\\n}\\n.fx-inspector .nspin button {\\n display: grid;\\n place-items: center;\\n flex: 1;\\n min-height: 0;\\n padding: 0;\\n border: 0;\\n background: transparent;\\n color: var(--insp-muted);\\n}\\n.fx-inspector .nspin button:hover {\\n color: var(--insp-text);\\n}\\n.fx-inspector .insp-checkbox,\\n.fx-inspector .menu-checkbox {\\n display: grid;\\n place-items: center;\\n width: var(--fx-component-choice-size);\\n height: var(--fx-component-choice-size);\\n flex: 0 0 var(--fx-component-choice-size);\\n padding: 0;\\n border: var(--fx-border-width) solid var(--fx-color-border-essential);\\n border-radius: var(--fx-ref-radius-4);\\n background: transparent;\\n color: var(--fx-color-brand-on-accent);\\n}\\n.fx-inspector .insp-checkbox[aria-checked=true],\\n.fx-inspector button[data-active=true] .menu-checkbox {\\n border-color: var(--insp-accent);\\n background: var(--insp-accent);\\n}\\n.fx-inspector .ddc {\\n display: flex;\\n flex: 1;\\n min-width: 0;\\n}\\n.fx-inspector .fx-insp-select {\\n flex: 1;\\n width: 100%;\\n height: var(--fx-component-control-icon-hit-area-min);\\n padding: var(--fx-ref-space-2) var(--fx-ref-space-6);\\n}\\n.fx-inspector .color-control {\\n display: flex;\\n align-items: center;\\n flex: 1;\\n min-width: 0;\\n gap: var(--fx-ref-space-6);\\n}\\n.fx-inspector .swatch {\\n width: var(--fx-component-control-height-compact);\\n height: calc(var(--fx-ref-space-16) + var(--fx-ref-space-4));\\n flex: 0 0 var(--fx-component-control-height-compact);\\n padding: 0;\\n border: var(--fx-border-width) solid var(--fx-color-border-default);\\n border-radius: var(--fx-ref-radius-4);\\n background: transparent;\\n}\\n.fx-inspector .hex-input {\\n flex: 1;\\n min-width: calc(var(--fx-ref-space-48) + var(--fx-ref-space-32));\\n}\\n.fx-inspector .asset-ref {\\n display: flex;\\n align-items: stretch;\\n flex: 1;\\n min-width: 0;\\n gap: var(--fx-ref-space-4);\\n padding: var(--fx-ref-space-2) var(--fx-ref-space-4);\\n border: var(--fx-border-width) solid var(--insp-line);\\n border-radius: var(--fx-radius-control);\\n background: var(--fx-color-surface-inset);\\n}\\n.fx-inspector .asset-ref-thumb {\\n display: grid;\\n place-items: center;\\n width: var(--fx-component-control-height-compact);\\n height: var(--fx-component-control-height-compact);\\n flex: 0 0 var(--fx-component-control-height-compact);\\n border: var(--fx-border-width) solid var(--fx-color-border-default);\\n border-radius: var(--fx-ref-radius-4);\\n background: var(--insp-raised);\\n color: var(--insp-muted);\\n}\\n.fx-inspector .asset-ref-thumb.empty {\\n border-style: dashed;\\n}\\n.fx-inspector .asset-ref-body {\\n display: flex;\\n align-items: center;\\n flex: 1;\\n min-width: 0;\\n}\\n.fx-inspector .asset-ref-combo {\\n display: flex;\\n align-items: center;\\n width: 100%;\\n min-width: 0;\\n height: var(--fx-component-control-height-compact);\\n gap: var(--fx-ref-space-4);\\n padding: 0 var(--fx-ref-space-6);\\n border: var(--fx-border-width) solid var(--insp-line);\\n border-radius: var(--fx-ref-radius-4);\\n background: var(--insp-bg);\\n color: var(--insp-text);\\n}\\n.fx-inspector .asset-ref-combo-label {\\n flex: 1;\\n min-width: 0;\\n overflow: hidden;\\n font: var(--fx-type-caption-font-weight) var(--fx-type-caption-font-size) / var(--fx-type-caption-line-height) var(--fx-type-caption-font-family);\\n text-align: left;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n.fx-inspector .asset-ref-combo-label.empty {\\n color: var(--insp-muted);\\n}\\n.fx-inspector .asset-ref-actions {\\n display: flex;\\n align-items: center;\\n}\\n.fx-inspector .asset-ref-act {\\n display: grid;\\n place-items: center;\\n width: var(--fx-component-control-height-compact);\\n height: var(--fx-component-control-height-compact);\\n padding: 0;\\n border: 0;\\n border-radius: var(--fx-ref-radius-4);\\n background: transparent;\\n color: var(--insp-muted);\\n}\\n.fx-inspector .asset-ref-act:hover:not(:disabled) {\\n background: var(--fx-color-surface-hover);\\n color: var(--insp-text);\\n}\\n.fx-inspector .asset-ref-act:disabled {\\n opacity: .3;\\n}\\n.fx-inspector .dp-empty {\\n flex: 1 1 0%;\\n min-height: 0;\\n padding: var(--fx-ref-space-24) var(--fx-ref-space-16);\\n color: var(--insp-muted);\\n text-align: center;\\n}\\n.fx-inspector__loading-pane {\\n display: flex;\\n flex: 1 1 0%;\\n align-items: center;\\n justify-content: center;\\n min-height: 0;\\n}\\n.fx-inspector__body {\\n display: flex;\\n flex: 1 1 0%;\\n flex-direction: column;\\n width: 100%;\\n height: 100%;\\n min-height: 0;\\n overflow: hidden;\\n}\\n.fx-inspector[data-inspector-loading=true] .fx-inspector__body {\\n pointer-events: none;\\n opacity: 0.55;\\n}\\n.fx-inspector__loading-veil {\\n position: absolute;\\n inset: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background: color-mix(in srgb, var(--insp-bg) 35%, transparent);\\n pointer-events: none;\\n}\\n.fx-inspector .fx-insp-menu {\\n display: flex;\\n flex-direction: column;\\n min-width: var(--fx-component-menu-min-width);\\n padding: var(--fx-ref-space-6);\\n border: var(--fx-border-width) solid var(--fx-color-border-essential);\\n border-radius: var(--fx-radius-popover);\\n background: var(--fx-color-surface-raised);\\n color: var(--fx-color-text-secondary);\\n box-shadow: var(--fx-shadow-floating);\\n}\\n.fx-inspector .fx-insp-menu strong {\\n padding: var(--fx-ref-space-4) var(--fx-ref-space-8) var(--fx-ref-space-6);\\n color: var(--fx-color-text-muted);\\n font: var(--fx-type-caption-font-weight) var(--fx-type-caption-font-size)/var(--fx-type-caption-line-height) var(--fx-type-code-font-family);\\n text-transform: uppercase;\\n}\\n.fx-inspector .fx-insp-menu button {\\n display: flex;\\n align-items: center;\\n gap: var(--fx-ref-space-8);\\n min-height: var(--fx-component-control-height-compact);\\n padding: var(--fx-ref-space-6) var(--fx-ref-space-8);\\n border: 0;\\n border-radius: var(--fx-radius-control);\\n background: transparent;\\n color: inherit;\\n text-align: left;\\n cursor: pointer;\\n}\\n.fx-inspector .fx-insp-menu button:hover:not(:disabled) {\\n background: var(--fx-color-surface-hover);\\n color: var(--fx-color-text-primary);\\n}\\n.fx-inspector .fx-insp-menu button:disabled {\\n opacity: .4;\\n}\\n.fx-inspector .fx-insp-menu button span {\\n width: var(--fx-component-control-icon-size);\\n display: grid;\\n place-items: center;\\n}\\n.fx-inspector .fx-insp-menu i {\\n height: var(--fx-border-width);\\n margin: var(--fx-ref-space-4) var(--fx-ref-space-6);\\n background: var(--fx-color-border-subtle);\\n}\\n.fx-inspector .search-clear {\\n display: grid;\\n place-items: center;\\n width: var(--fx-component-control-icon-size);\\n height: var(--fx-component-control-icon-size);\\n padding: 0;\\n border: 0;\\n background: transparent;\\n color: var(--insp-muted);\\n}\\n.fx-inspector .insp-add-menu {\\n position: absolute;\\n z-index: var(--fx-layer-popover);\\n top: var(--fx-component-control-height-compact);\\n right: var(--fx-ref-space-12);\\n display: flex;\\n flex-direction: column;\\n min-width: var(--fx-component-menu-min-width);\\n padding: var(--fx-ref-space-6);\\n border: var(--fx-border-width) solid var(--fx-color-border-essential);\\n border-radius: var(--fx-radius-popover);\\n background: var(--fx-color-surface-raised);\\n box-shadow: var(--fx-shadow-floating);\\n}\\n.fx-inspector .insp-add-menu strong {\\n padding: var(--fx-ref-space-4) var(--fx-ref-space-8) var(--fx-ref-space-6);\\n color: var(--fx-color-text-muted);\\n font: var(--fx-type-caption-font-weight) var(--fx-type-caption-font-size)/var(--fx-type-caption-line-height) var(--fx-type-code-font-family);\\n text-transform: uppercase;\\n}\\n.fx-inspector .insp-add-menu button {\\n display: flex;\\n align-items: center;\\n gap: var(--fx-ref-space-8);\\n min-height: var(--fx-component-control-height-compact);\\n padding: var(--fx-ref-space-6) var(--fx-ref-space-8);\\n border: 0;\\n border-radius: var(--fx-radius-control);\\n background: transparent;\\n color: var(--fx-color-text-secondary);\\n text-align: left;\\n}\\n.fx-inspector .insp-add-menu button:hover {\\n background: var(--fx-color-surface-hover);\\n color: var(--fx-color-text-primary);\\n}\\n.fx-inspector .insp-add-menu button span {\\n display: grid;\\n place-items: center;\\n width: var(--fx-component-control-icon-size);\\n color: var(--fx-color-text-muted);\\n}\\n.fx-inspector .no-match {\\n padding: var(--fx-ref-space-16);\\n color: var(--insp-muted);\\n font: var(--fx-type-caption-font-weight) var(--fx-type-caption-font-size) / var(--fx-type-caption-line-height) var(--fx-type-caption-font-family);\\n text-align: center;\\n}\\n.insp-context-menu {\\n position: fixed;\\n z-index: var(--fx-layer-tooltip);\\n display: flex;\\n flex-direction: column;\\n box-sizing: border-box;\\n min-width: var(--fx-component-menu-min-width);\\n padding: var(--fx-ref-space-6);\\n border: var(--fx-border-width) solid var(--fx-color-border-essential);\\n border-radius: var(--fx-radius-popover);\\n background: var(--fx-color-surface-raised);\\n color: var(--fx-color-text-secondary);\\n box-shadow: var(--fx-shadow-floating);\\n font: var(--fx-type-caption-font-weight) var(--fx-type-caption-font-size)/var(--fx-type-caption-line-height) var(--fx-type-ui-font-family);\\n}\\n.insp-context-menu > strong {\\n padding: var(--fx-ref-space-4) var(--fx-ref-space-8) var(--fx-ref-space-6);\\n color: var(--fx-color-text-muted);\\n font-family: var(--fx-type-code-font-family);\\n}\\n.insp-context-menu > i {\\n height: var(--fx-border-width);\\n margin: var(--fx-ref-space-4) var(--fx-ref-space-6);\\n background: var(--fx-color-border-subtle);\\n}\\n.insp-context-menu > button {\\n display: flex;\\n align-items: center;\\n gap: var(--fx-ref-space-8);\\n min-height: var(--fx-component-control-height-compact);\\n padding: var(--fx-ref-space-6) var(--fx-ref-space-8);\\n border: 0;\\n border-radius: var(--fx-radius-control);\\n background: transparent;\\n color: inherit;\\n font: inherit;\\n text-align: left;\\n}\\n.insp-context-menu > button:hover:not(:disabled) {\\n background: var(--fx-color-surface-hover);\\n color: var(--fx-color-text-primary);\\n}\\n.insp-context-menu > button:disabled {\\n opacity: .38;\\n}\\n.insp-context-menu > button[data-danger=true] {\\n color: var(--fx-color-status-error-fg);\\n}\\n.insp-context-menu > button[data-forge=true] > span:first-child {\\n color: var(--fx-color-brand-accent);\\n}\\n.insp-context-menu > button > span:first-child {\\n display: grid;\\n place-items: center;\\n width: var(--fx-component-control-icon-size);\\n color: var(--fx-color-text-muted);\\n}\\n.fx-inspector .insp-header {\\n flex: 0 0 auto;\\n gap: var(--fx-ref-space-8);\\n}\\n.fx-inspector .insp-header .fx-panel-header__slot:first-child {\\n flex: 1;\\n min-width: 0;\\n}\\n.fx-inspector .insp-header .fx-panel-header__slot:nth-child(2):empty {\\n display: none;\\n}\\n.fx-inspector .insp-header .fx-panel-header__slot:last-child {\\n flex: 0 0 auto;\\n}\\n.fx-inspector .insp-header-identity {\\n display: flex;\\n align-items: center;\\n gap: var(--fx-ref-space-8);\\n min-width: 0;\\n flex: 1;\\n}\\n.fx-inspector .insp-header-copy {\\n min-width: 0;\\n flex: 1;\\n}\\n.fx-inspector .insp-header-name {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n min-width: 0;\\n padding: var(--fx-ref-space-2) var(--fx-ref-space-8);\\n border: var(--fx-border-width) solid var(--insp-line);\\n border-radius: var(--fx-radius-control);\\n background: var(--fx-color-surface-inset);\\n color: var(--insp-text);\\n font-weight: var(--fx-ref-font-weight-600);\\n}\\n.fx-inspector .insp-header-end {\\n display: inline-flex;\\n align-items: center;\\n gap: var(--fx-ref-space-4);\\n flex-shrink: 0;\\n}\\n.fx-inspector .insp-header-end .badge {\\n max-width: 5rem;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n.fx-inspector .insp-toolbar {\\n position: relative;\\n flex: 0 0 auto;\\n padding: var(--fx-ref-space-8) var(--fx-ref-space-12);\\n border-bottom: var(--fx-border-width) solid var(--fx-color-border-subtle);\\n}\\n.fx-inspector .insp-toolbar .fx-search {\\n flex: 1;\\n}\\n.fx-inspector .insp-toolbar .fx-search .fx-input {\\n height: var(--fx-component-control-height-compact);\\n}\\n.fx-inspector .insp-toolbar .is-active {\\n border-color: var(--fx-color-border-essential);\\n background: var(--fx-color-surface-selected);\\n}\\n.fx-inspector .fx-insp-menu,\\n.fx-inspector .insp-add-menu {\\n padding: 0;\\n border: 0;\\n border-radius: var(--fx-radius-popover);\\n background: transparent;\\n box-shadow: none;\\n}\\n.fx-inspector .fx-insp-menu .fx-menu,\\n.fx-inspector .insp-add-menu .fx-menu {\\n min-width: var(--fx-component-menu-min-width);\\n}\\n.fx-inspector .dp-comp {\\n padding: var(--fx-ref-space-8) var(--fx-ref-space-12);\\n border-bottom: var(--fx-border-width) solid var(--fx-color-border-subtle);\\n}\\n.fx-inspector .dp-comp .ch {\\n gap: var(--fx-ref-space-8);\\n margin-bottom: var(--fx-ref-space-6);\\n}\\n.fx-inspector .dp-comp .add {\\n min-height: var(--fx-component-control-height-compact);\\n margin-left: auto;\\n padding: var(--fx-ref-space-2) var(--fx-ref-space-8);\\n}\\n.fx-inspector .comp-row {\\n min-height: var(--fx-component-editor-row-height);\\n padding: var(--fx-ref-space-4) var(--fx-ref-space-8);\\n gap: var(--fx-ref-space-8);\\n border-radius: var(--fx-radius-control);\\n color: var(--fx-color-text-secondary);\\n cursor: pointer;\\n}\\n.fx-inspector .comp-row:hover {\\n background: var(--fx-color-surface-hover);\\n}\\n.fx-inspector .comp-del {\\n width: var(--fx-component-control-height-compact);\\n min-height: var(--fx-component-control-height-compact);\\n}\\n.fx-inspector .cat {\\n border-bottom: 0;\\n}\\n.fx-inspector .cat .fx-collapsible__trigger {\\n padding-left: var(--fx-ref-space-8);\\n background: var(--fx-color-surface-sidebar);\\n border-left: calc(var(--fx-border-width) * 3) solid transparent;\\n}\\n.fx-inspector .cat.dim-type .fx-collapsible__trigger {\\n border-left-color: var(--d-type);\\n}\\n.fx-inspector .cat.dim-all .fx-collapsible__trigger {\\n border-left-color: var(--d-all);\\n}\\n.fx-inspector .cat.dim-cap .fx-collapsible__trigger {\\n border-left-color: var(--d-cap);\\n}\\n.fx-inspector .cat .fx-collapsible__content {\\n padding: var(--fx-ref-space-4) 0 var(--fx-ref-space-8);\\n}\\n.fx-inspector .cat-title {\\n display: flex;\\n align-items: center;\\n flex: 1;\\n min-width: 0;\\n gap: var(--fx-ref-space-8);\\n}\\n.fx-inspector .cat-icon {\\n display: grid;\\n color: var(--fx-color-text-muted);\\n}\\n.fx-inspector .advb {\\n margin-left: var(--fx-ref-space-2);\\n padding: 0 var(--fx-ref-space-6);\\n font-family: var(--fx-type-code-font-family);\\n font-size: var(--fx-type-caption-font-size);\\n line-height: var(--fx-type-caption-line-height);\\n}\\n.fx-inspector .cacts {\\n display: inline-flex;\\n align-items: center;\\n gap: var(--fx-ref-space-2);\\n margin-left: auto;\\n}\\n.fx-inspector .cact {\\n width: var(--fx-component-control-height-compact);\\n min-height: var(--fx-component-control-height-compact);\\n opacity: 0;\\n}\\n.fx-inspector .fx-collapsible__heading:hover .cact,\\n.fx-inspector .cact:focus-visible {\\n opacity: 1;\\n}\\n.fx-inspector .f-row-wrap {\\n display: flex;\\n align-items: center;\\n min-height: var(--fx-component-editor-row-height);\\n padding: 0 var(--fx-ref-space-8);\\n gap: var(--fx-ref-space-4);\\n}\\n.fx-inspector .f-row-wrap:hover {\\n background: var(--fx-color-surface-hover);\\n}\\n.fx-inspector .f-row {\\n flex: 1;\\n min-width: 0;\\n padding: var(--fx-ref-space-2) 0;\\n gap: var(--fx-ref-space-8);\\n}\\n.fx-inspector .f-row:hover {\\n background: transparent;\\n}\\n.fx-inspector .f-row .fx-property-row__label {\\n flex-basis: 38%;\\n overflow: hidden;\\n color: var(--fx-color-text-secondary);\\n font-size: var(--fx-type-caption-font-size);\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n.fx-inspector .f-row .fx-property-row__control {\\n display: flex;\\n min-width: 0;\\n overflow: hidden;\\n}\\n.fx-inspector .f-row .fx-property-row__control > * {\\n flex: 1;\\n min-width: 0;\\n max-width: 100%;\\n}\\n.fx-inspector .insp-input {\\n height: var(--fx-component-control-height-compact);\\n min-width: 0;\\n max-width: 100%;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n padding: var(--fx-ref-space-2) var(--fx-ref-space-6);\\n border-radius: var(--fx-radius-control);\\n background: var(--fx-color-surface-inset);\\n font-family: var(--fx-type-code-font-family);\\n font-size: var(--fx-type-caption-font-size);\\n}\\n.fx-inspector .insp-input.txt {\\n flex: 1;\\n}\\n.fx-inspector .vcell .insp-input {\\n width: 100%;\\n padding-left: var(--fx-ref-space-16);\\n text-align: center;\\n}\\n.fx-inspector .vcell.x .insp-input {\\n border-bottom-color: var(--fx-color-status-error-fg);\\n}\\n.fx-inspector .vcell.y .insp-input {\\n border-bottom-color: var(--fx-color-status-success-fg);\\n}\\n.fx-inspector .vcell.z .insp-input {\\n border-bottom-color: var(--fx-color-status-info-fg);\\n}\\n.fx-inspector .insp-checkbox {\\n display: inline-flex;\\n width: auto;\\n height: auto;\\n flex: 0 0 auto;\\n min-height: var(--fx-component-control-height-compact);\\n border: 0;\\n border-radius: 0;\\n background: transparent;\\n color: inherit;\\n}\\n.fx-inspector .insp-checkbox input {\\n border-radius: var(--fx-ref-radius-4);\\n}\\n.fx-inspector .swatch,\\n.fx-inspector .asset-ref,\\n.fx-inspector .asset-ref-thumb,\\n.fx-inspector .asset-ref-combo {\\n border-color: var(--fx-color-border-control);\\n border-radius: var(--fx-radius-control);\\n}\\n.fx-inspector .asset-ref {\\n background: var(--fx-color-surface-inset);\\n}\\n.fx-inspector .asset-ref-act {\\n width: var(--fx-component-control-height-compact);\\n height: var(--fx-component-control-height-compact);\\n}\\n.fx-inspector .no-match {\\n min-height: calc(var(--fx-ref-space-64) + var(--fx-ref-space-48));\\n padding: var(--fx-ref-space-16);\\n}\\n.insp-context-menu {\\n padding: 0;\\n border: 0;\\n border-radius: var(--fx-radius-popover);\\n background: transparent;\\n box-shadow: none;\\n}\\n.insp-context-menu .fx-menu {\\n min-width: var(--fx-component-menu-min-width);\\n}\\n.insp-menu-forge {\\n display: grid;\\n color: var(--fx-color-brand-text);\\n}\\n.visually-hidden {\\n position: absolute;\\n width: var(--fx-border-width);\\n height: var(--fx-border-width);\\n overflow: hidden;\\n clip: rect(0 0 0 0);\\n white-space: nowrap;\\n}\\n\";\n if (typeof document !== 'undefined' && !document.querySelector('style[data-forgeax-css=\"L2RhdGEvaG9tZS9nYWhvdWxpYW8vYWN0aW9ucy1ydW5uZXIvX3dvcmsvZm9yZ2VheC12aWV3L2ZvcmdlYXgtdmlldy9wYWNrYWdlcy92aWV3LXBsdWdpbi1pbnNwZWN0b3Ivc3JjL3VpL2luc3BlY3Rvci5jc3M\"]')) {\n const style = document.createElement('style');\n style.dataset.forgeaxCss = \"L2RhdGEvaG9tZS9nYWhvdWxpYW8vYWN0aW9ucy1ydW5uZXIvX3dvcmsvZm9yZ2VheC12aWV3L2ZvcmdlYXgtdmlldy9wYWNrYWdlcy92aWV3LXBsdWdpbi1pbnNwZWN0b3Ivc3JjL3VpL2luc3BlY3Rvci5jc3M\";\n style.textContent = css;\n document.head.append(style);\n }\n export default css;\n "],
5
+ "mappings": "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",
6
+ "names": ["useSyncExternalStore", "t", "t", "useSyncExternalStore", "jsx"]
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-MVEPGFSB.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,42 @@
1
+ import {
2
+ FRONTEND_MODULE,
3
+ FRONTEND_PLUGIN_ID,
4
+ PAGE_TYPE,
5
+ PANEL_LAYOUT,
6
+ SLOT,
7
+ TITLE_I18N_KEY
8
+ } from "./chunk-QK6W7MJO.mjs";
9
+
10
+ // packages/view-plugin-inspector/src/frontend.mjs
11
+ var VIEW_OBJECT_INSPECTOR_FRONTEND_PLUGIN_ID = FRONTEND_PLUGIN_ID;
12
+ var VIEW_OBJECT_INSPECTOR_FRONTEND_MODULE = FRONTEND_MODULE;
13
+ var viewObjectInspectorFrontendPlugin = {
14
+ name: VIEW_OBJECT_INSPECTOR_FRONTEND_PLUGIN_ID,
15
+ inject: ["viewOperationClient", "viewScenePage"],
16
+ async apply(ctx, config = {}) {
17
+ const panelHost = config.panelHost ?? ctx.get?.("panelHost", false);
18
+ if (!panelHost) return;
19
+ const workspaceClient = ctx.get("viewOperationClient");
20
+ const disposePanel = await panelHost.mountPanel({
21
+ id: SLOT,
22
+ pageType: PAGE_TYPE,
23
+ titleKey: TITLE_I18N_KEY,
24
+ activity: { labelKey: TITLE_I18N_KEY, icon: "detail" },
25
+ layout: PANEL_LAYOUT,
26
+ panel: "Inspector",
27
+ props: { client: workspaceClient }
28
+ });
29
+ ctx.effect(() => async () => {
30
+ await disposePanel?.();
31
+ });
32
+ }
33
+ };
34
+ var frontend_default = viewObjectInspectorFrontendPlugin;
35
+
36
+ export {
37
+ VIEW_OBJECT_INSPECTOR_FRONTEND_PLUGIN_ID,
38
+ VIEW_OBJECT_INSPECTOR_FRONTEND_MODULE,
39
+ viewObjectInspectorFrontendPlugin,
40
+ frontend_default
41
+ };
42
+ //# sourceMappingURL=chunk-NBJKLWJ5.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/view-plugin-inspector/src/frontend.mjs"],
4
+ "sourcesContent": ["import { FRONTEND_PLUGIN_ID, FRONTEND_MODULE } from './identity.mjs';\nimport { PAGE_TYPE, PANEL_LAYOUT, SLOT, TITLE_I18N_KEY } from './identity.mjs';\n\nexport const VIEW_OBJECT_INSPECTOR_FRONTEND_PLUGIN_ID = FRONTEND_PLUGIN_ID;\nexport const VIEW_OBJECT_INSPECTOR_FRONTEND_MODULE = FRONTEND_MODULE;\n\nconst viewObjectInspectorFrontendPlugin = {\n name: VIEW_OBJECT_INSPECTOR_FRONTEND_PLUGIN_ID,\n inject: ['viewOperationClient', 'viewScenePage'],\n async apply(ctx, config = {}) {\n const panelHost = config.panelHost ?? ctx.get?.('panelHost', false);\n if (!panelHost) return;\n const workspaceClient = ctx.get('viewOperationClient');\n const disposePanel = await panelHost.mountPanel({\n id: SLOT,\n pageType: PAGE_TYPE,\n titleKey: TITLE_I18N_KEY,\n activity: { labelKey: TITLE_I18N_KEY, icon: 'detail' },\n layout: PANEL_LAYOUT,\n panel: 'Inspector',\n props: { client: workspaceClient },\n });\n ctx.effect(() => async () => {\n await disposePanel?.();\n });\n },\n};\n\nexport { viewObjectInspectorFrontendPlugin };\nexport default viewObjectInspectorFrontendPlugin;\n"],
5
+ "mappings": ";;;;;;;;;;AAGO,IAAM,2CAA2C;AACjD,IAAM,wCAAwC;AAErD,IAAM,oCAAoC;AAAA,EACxC,MAAM;AAAA,EACN,QAAQ,CAAC,uBAAuB,eAAe;AAAA,EAC/C,MAAM,MAAM,KAAK,SAAS,CAAC,GAAG;AAC5B,UAAM,YAAY,OAAO,aAAa,IAAI,MAAM,aAAa,KAAK;AAClE,QAAI,CAAC,UAAW;AAChB,UAAM,kBAAkB,IAAI,IAAI,qBAAqB;AACrD,UAAM,eAAe,MAAM,UAAU,WAAW;AAAA,MAC9C,IAAI;AAAA,MACJ,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU,EAAE,UAAU,gBAAgB,MAAM,SAAS;AAAA,MACrD,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO,EAAE,QAAQ,gBAAgB;AAAA,IACnC,CAAC;AACD,QAAI,OAAO,MAAM,YAAY;AAC3B,YAAM,eAAe;AAAA,IACvB,CAAC;AAAA,EACH;AACF;AAGA,IAAO,mBAAQ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,86 @@
1
+ import {
2
+ RESOURCE_PREVIEW_LAYOUT,
3
+ RESOURCE_PROPERTIES_LAYOUT
4
+ } from "./chunk-YYXQDUVT.mjs";
5
+ import {
6
+ VIEW_PAGE_TYPES
7
+ } from "./chunk-32GD5LL6.mjs";
8
+ import {
9
+ __export
10
+ } from "./chunk-FLGC65SR.mjs";
11
+
12
+ // packages/view-plugin-material/src/identity.mjs
13
+ var identity_exports = {};
14
+ __export(identity_exports, {
15
+ FRONTEND_MODULE: () => FRONTEND_MODULE,
16
+ FRONTEND_PLUGIN_ID: () => FRONTEND_PLUGIN_ID,
17
+ PAGE_ORDER: () => PAGE_ORDER,
18
+ PAGE_PRIORITY: () => PAGE_PRIORITY,
19
+ PAGE_TITLE_I18N_KEY: () => PAGE_TITLE_I18N_KEY,
20
+ PAGE_TYPE: () => PAGE_TYPE,
21
+ PANEL_LAYOUT: () => PANEL_LAYOUT,
22
+ PLUGIN_ID: () => PLUGIN_ID,
23
+ PREVIEW_ICON: () => PREVIEW_ICON,
24
+ PREVIEW_LAYOUT: () => PREVIEW_LAYOUT,
25
+ PREVIEW_PANEL: () => PREVIEW_PANEL,
26
+ PREVIEW_SLOT: () => PREVIEW_SLOT,
27
+ PREVIEW_TITLE_I18N_KEY: () => PREVIEW_TITLE_I18N_KEY,
28
+ PROPERTIES_ICON: () => PROPERTIES_ICON,
29
+ PROPERTIES_LAYOUT: () => PROPERTIES_LAYOUT,
30
+ PROPERTIES_PANEL: () => PROPERTIES_PANEL,
31
+ PROPERTIES_SLOT: () => PROPERTIES_SLOT,
32
+ PROPERTIES_TITLE_I18N_KEY: () => PROPERTIES_TITLE_I18N_KEY,
33
+ RESOURCE_KINDS: () => RESOURCE_KINDS,
34
+ RESOURCE_SELECTOR: () => RESOURCE_SELECTOR,
35
+ SLOT: () => SLOT,
36
+ TITLE_I18N_KEY: () => TITLE_I18N_KEY
37
+ });
38
+ var PLUGIN_ID = "forgeax.view.material";
39
+ var FRONTEND_PLUGIN_ID = "forgeax.view.page.material.frontend";
40
+ var FRONTEND_MODULE = "@forgeax/view/plugins/material/frontend";
41
+ var PAGE_TYPE = VIEW_PAGE_TYPES.material;
42
+ var PAGE_TITLE_I18N_KEY = "view.pages.material";
43
+ var PAGE_ORDER = 30;
44
+ var PREVIEW_SLOT = "material-preview";
45
+ var PROPERTIES_SLOT = "material-properties";
46
+ var SLOT = PROPERTIES_SLOT;
47
+ var RESOURCE_KINDS = Object.freeze(["material"]);
48
+ var RESOURCE_SELECTOR = Object.freeze({ kinds: RESOURCE_KINDS });
49
+ var PAGE_PRIORITY = 20;
50
+ var PREVIEW_LAYOUT = RESOURCE_PREVIEW_LAYOUT;
51
+ var PROPERTIES_LAYOUT = RESOURCE_PROPERTIES_LAYOUT;
52
+ var PANEL_LAYOUT = PROPERTIES_LAYOUT;
53
+ var PREVIEW_PANEL = "MaterialPreview";
54
+ var PROPERTIES_PANEL = "MaterialProperties";
55
+ var PREVIEW_ICON = "sparkle";
56
+ var PROPERTIES_ICON = "sliders";
57
+ var PREVIEW_TITLE_I18N_KEY = "view.slots.materialPreview";
58
+ var PROPERTIES_TITLE_I18N_KEY = "view.slots.materialProperties";
59
+ var TITLE_I18N_KEY = PROPERTIES_TITLE_I18N_KEY;
60
+
61
+ export {
62
+ PLUGIN_ID,
63
+ FRONTEND_PLUGIN_ID,
64
+ FRONTEND_MODULE,
65
+ PAGE_TYPE,
66
+ PAGE_TITLE_I18N_KEY,
67
+ PAGE_ORDER,
68
+ PREVIEW_SLOT,
69
+ PROPERTIES_SLOT,
70
+ SLOT,
71
+ RESOURCE_KINDS,
72
+ RESOURCE_SELECTOR,
73
+ PAGE_PRIORITY,
74
+ PREVIEW_LAYOUT,
75
+ PROPERTIES_LAYOUT,
76
+ PANEL_LAYOUT,
77
+ PREVIEW_PANEL,
78
+ PROPERTIES_PANEL,
79
+ PREVIEW_ICON,
80
+ PROPERTIES_ICON,
81
+ PREVIEW_TITLE_I18N_KEY,
82
+ PROPERTIES_TITLE_I18N_KEY,
83
+ TITLE_I18N_KEY,
84
+ identity_exports
85
+ };
86
+ //# sourceMappingURL=chunk-NBLGKTEM.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/view-plugin-material/src/identity.mjs"],
4
+ "sourcesContent": ["import { VIEW_PAGE_TYPES } from '@forgeax/view-workspace-core/contract';\nimport {\n RESOURCE_PREVIEW_LAYOUT,\n RESOURCE_PROPERTIES_LAYOUT,\n} from '@forgeax/view-workspace-core/resource-page';\n\nexport const PLUGIN_ID = 'forgeax.view.material';\nexport const FRONTEND_PLUGIN_ID = 'forgeax.view.page.material.frontend';\nexport const FRONTEND_MODULE = '@forgeax/view/plugins/material/frontend';\nexport const PAGE_TYPE = VIEW_PAGE_TYPES.material;\nexport const PAGE_TITLE_I18N_KEY = 'view.pages.material';\nexport const PAGE_ORDER = 30;\nexport const PREVIEW_SLOT = 'material-preview';\nexport const PROPERTIES_SLOT = 'material-properties';\nexport const SLOT = PROPERTIES_SLOT;\nexport const RESOURCE_KINDS = Object.freeze(['material']);\nexport const RESOURCE_SELECTOR = Object.freeze({ kinds: RESOURCE_KINDS });\nexport const PAGE_PRIORITY = 20;\nexport const PREVIEW_LAYOUT = RESOURCE_PREVIEW_LAYOUT;\nexport const PROPERTIES_LAYOUT = RESOURCE_PROPERTIES_LAYOUT;\nexport const PANEL_LAYOUT = PROPERTIES_LAYOUT;\nexport const PREVIEW_PANEL = 'MaterialPreview';\nexport const PROPERTIES_PANEL = 'MaterialProperties';\nexport const PREVIEW_ICON = 'sparkle';\nexport const PROPERTIES_ICON = 'sliders';\nexport const PREVIEW_TITLE_I18N_KEY = 'view.slots.materialPreview';\nexport const PROPERTIES_TITLE_I18N_KEY = 'view.slots.materialProperties';\nexport const TITLE_I18N_KEY = PROPERTIES_TITLE_I18N_KEY;\n"],
5
+ "mappings": ";;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,IAAM,YAAY;AAClB,IAAM,qBAAqB;AAC3B,IAAM,kBAAkB;AACxB,IAAM,YAAY,gBAAgB;AAClC,IAAM,sBAAsB;AAC5B,IAAM,aAAa;AACnB,IAAM,eAAe;AACrB,IAAM,kBAAkB;AACxB,IAAM,OAAO;AACb,IAAM,iBAAiB,OAAO,OAAO,CAAC,UAAU,CAAC;AACjD,IAAM,oBAAoB,OAAO,OAAO,EAAE,OAAO,eAAe,CAAC;AACjE,IAAM,gBAAgB;AACtB,IAAM,iBAAiB;AACvB,IAAM,oBAAoB;AAC1B,IAAM,eAAe;AACrB,IAAM,gBAAgB;AACtB,IAAM,mBAAmB;AACzB,IAAM,eAAe;AACrB,IAAM,kBAAkB;AACxB,IAAM,yBAAyB;AAC/B,IAAM,4BAA4B;AAClC,IAAM,iBAAiB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,110 @@
1
+ import {
2
+ registerViewLocaleSink
3
+ } from "./chunk-FOBRLUQV.mjs";
4
+
5
+ // packages/view-plugin-material/src/i18n/locales/en.json
6
+ var en_default = {
7
+ material: {
8
+ title: "Material",
9
+ empty: "Open a material asset",
10
+ unavailable: "Material inspection unavailable",
11
+ inspectFailed: "Engine asset.inspect did not return material facts for this GUID.",
12
+ facts: "Material facts",
13
+ toolbar: "Material actions",
14
+ expandAll: "Expand all",
15
+ collapseAll: "Collapse all",
16
+ searchField: "Search parameters",
17
+ searchLabel: "Search material parameters",
18
+ searchPlaceholder: "Search parameters\u2026",
19
+ subtitle: "Material \xB7 Surface",
20
+ parameters: "Parameter contract",
21
+ publication: "Publication",
22
+ renderState: "Render state",
23
+ surface: "Surface",
24
+ textureSlots: "Texture references",
25
+ baseColorMap: "Base Color Map",
26
+ normalMap: "Normal Map",
27
+ unbound: "Unbound",
28
+ colorPreview: "Color preview: {{color}}",
29
+ roughnessValue: "Roughness value",
30
+ metallicValue: "Metallic value",
31
+ previewTitle: "Material preview",
32
+ previewDemo: "UI debug uses a local mock. Connect Engine to attach the real preview target.",
33
+ previewUnavailable: "Material preview unavailable",
34
+ previewConnect: "Connect to the View workspace API to attach the Engine preview target.",
35
+ previewEmpty: "No material preview",
36
+ previewEmptyDescription: "Open a material asset from the Content Browser.",
37
+ previewCapabilityMissing: "Engine did not return a preview target for this material."
38
+ }
39
+ };
40
+
41
+ // packages/view-plugin-material/src/i18n/locales/zh.json
42
+ var zh_default = {
43
+ material: {
44
+ title: "\u6750\u8D28",
45
+ empty: "\u6253\u5F00\u6750\u8D28\u8D44\u4EA7",
46
+ unavailable: "\u6750\u8D28\u68C0\u67E5\u4E0D\u53EF\u7528",
47
+ inspectFailed: "Engine asset.inspect \u6CA1\u6709\u8FD4\u56DE\u8BE5 GUID \u7684\u6750\u8D28\u4E8B\u5B9E\u3002",
48
+ facts: "\u6750\u8D28\u4E8B\u5B9E",
49
+ toolbar: "\u6750\u8D28\u64CD\u4F5C",
50
+ expandAll: "\u5168\u90E8\u5C55\u5F00",
51
+ collapseAll: "\u5168\u90E8\u6298\u53E0",
52
+ searchField: "\u641C\u7D22\u53C2\u6570",
53
+ searchLabel: "\u641C\u7D22\u6750\u8D28\u53C2\u6570",
54
+ searchPlaceholder: "\u641C\u7D22\u53C2\u6570\u2026",
55
+ subtitle: "\u6750\u8D28 \xB7 \u8868\u9762",
56
+ parameters: "\u53C2\u6570\u5951\u7EA6",
57
+ publication: "\u53D1\u5E03\u4FE1\u606F",
58
+ renderState: "\u6E32\u67D3\u72B6\u6001",
59
+ surface: "\u8868\u9762",
60
+ textureSlots: "\u7EB9\u7406\u5F15\u7528",
61
+ baseColorMap: "Base Color Map",
62
+ normalMap: "Normal Map",
63
+ unbound: "\u672A\u7ED1\u5B9A",
64
+ colorPreview: "\u989C\u8272\u9884\u89C8\uFF1A{{color}}",
65
+ roughnessValue: "Roughness \u6570\u503C",
66
+ metallicValue: "Metallic \u6570\u503C",
67
+ previewTitle: "\u6750\u8D28\u9884\u89C8",
68
+ previewDemo: "UI \u8C03\u8BD5\u4F7F\u7528\u672C\u5730 mock\u3002\u8FDE\u63A5 Engine \u540E\u624D\u4F1A\u9644\u7740\u771F\u5B9E\u9884\u89C8\u76EE\u6807\u3002",
69
+ previewUnavailable: "\u6750\u8D28\u9884\u89C8\u4E0D\u53EF\u7528",
70
+ previewConnect: "\u8FDE\u63A5\u5230 View \u5DE5\u4F5C\u533A API \u4EE5\u9644\u7740 Engine \u9884\u89C8\u76EE\u6807\u3002",
71
+ previewEmpty: "\u6CA1\u6709\u6750\u8D28\u9884\u89C8",
72
+ previewEmptyDescription: "\u8BF7\u4ECE\u5185\u5BB9\u6D4F\u89C8\u5668\u6253\u5F00\u6750\u8D28\u8D44\u4EA7\u3002",
73
+ previewCapabilityMissing: "Engine \u6CA1\u6709\u4E3A\u8BE5\u6750\u8D28\u8FD4\u56DE\u9884\u89C8\u76EE\u6807\u3002"
74
+ }
75
+ };
76
+
77
+ // packages/view-plugin-material/src/i18n/index.mjs
78
+ function createPluginI18n(catalogs) {
79
+ let current = "zh";
80
+ const listeners = /* @__PURE__ */ new Set();
81
+ const lookup = (catalog, key) => key.split(".").reduce((value, part) => value?.[part], catalog);
82
+ const t2 = (key, vars) => {
83
+ const message = lookup(catalogs[current], key) ?? lookup(catalogs.en, key) ?? key;
84
+ return vars ? message.replace(/\{\{(\w+)\}\}/g, (_, name) => String(vars[name] ?? "")) : message;
85
+ };
86
+ const subscribe = (listener) => {
87
+ listeners.add(listener);
88
+ return () => listeners.delete(listener);
89
+ };
90
+ const setLocale2 = (next) => {
91
+ if (next !== "en" && next !== "zh") return;
92
+ current = next;
93
+ for (const listener of listeners) listener();
94
+ };
95
+ return { t: t2, subscribe, getLocale: () => current, setLocale: setLocale2 };
96
+ }
97
+ var i18n = createPluginI18n({ en: en_default, zh: zh_default });
98
+ var t = i18n.t;
99
+ var subscribeLocale = i18n.subscribe;
100
+ var getLocale = i18n.getLocale;
101
+ var setLocale = i18n.setLocale;
102
+ registerViewLocaleSink(i18n.setLocale);
103
+
104
+ export {
105
+ t,
106
+ subscribeLocale,
107
+ getLocale,
108
+ setLocale
109
+ };
110
+ //# sourceMappingURL=chunk-NI7CS3I2.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/view-plugin-material/src/i18n/locales/en.json", "../../../packages/view-plugin-material/src/i18n/locales/zh.json", "../../../packages/view-plugin-material/src/i18n/index.mjs"],
4
+ "sourcesContent": ["{\n \"material\": {\n \"title\": \"Material\",\n \"empty\": \"Open a material asset\",\n \"unavailable\": \"Material inspection unavailable\",\n \"inspectFailed\": \"Engine asset.inspect did not return material facts for this GUID.\",\n \"facts\": \"Material facts\",\n \"toolbar\": \"Material actions\",\n \"expandAll\": \"Expand all\",\n \"collapseAll\": \"Collapse all\",\n \"searchField\": \"Search parameters\",\n \"searchLabel\": \"Search material parameters\",\n \"searchPlaceholder\": \"Search parameters\u2026\",\n \"subtitle\": \"Material \u00B7 Surface\",\n \"parameters\": \"Parameter contract\",\n \"publication\": \"Publication\",\n \"renderState\": \"Render state\",\n \"surface\": \"Surface\",\n \"textureSlots\": \"Texture references\",\n \"baseColorMap\": \"Base Color Map\",\n \"normalMap\": \"Normal Map\",\n \"unbound\": \"Unbound\",\n \"colorPreview\": \"Color preview: {{color}}\",\n \"roughnessValue\": \"Roughness value\",\n \"metallicValue\": \"Metallic value\",\n \"previewTitle\": \"Material preview\",\n \"previewDemo\": \"UI debug uses a local mock. Connect Engine to attach the real preview target.\",\n \"previewUnavailable\": \"Material preview unavailable\",\n \"previewConnect\": \"Connect to the View workspace API to attach the Engine preview target.\",\n \"previewEmpty\": \"No material preview\",\n \"previewEmptyDescription\": \"Open a material asset from the Content Browser.\",\n \"previewCapabilityMissing\": \"Engine did not return a preview target for this material.\"\n }\n}\n", "{\n \"material\": {\n \"title\": \"\u6750\u8D28\",\n \"empty\": \"\u6253\u5F00\u6750\u8D28\u8D44\u4EA7\",\n \"unavailable\": \"\u6750\u8D28\u68C0\u67E5\u4E0D\u53EF\u7528\",\n \"inspectFailed\": \"Engine asset.inspect \u6CA1\u6709\u8FD4\u56DE\u8BE5 GUID \u7684\u6750\u8D28\u4E8B\u5B9E\u3002\",\n \"facts\": \"\u6750\u8D28\u4E8B\u5B9E\",\n \"toolbar\": \"\u6750\u8D28\u64CD\u4F5C\",\n \"expandAll\": \"\u5168\u90E8\u5C55\u5F00\",\n \"collapseAll\": \"\u5168\u90E8\u6298\u53E0\",\n \"searchField\": \"\u641C\u7D22\u53C2\u6570\",\n \"searchLabel\": \"\u641C\u7D22\u6750\u8D28\u53C2\u6570\",\n \"searchPlaceholder\": \"\u641C\u7D22\u53C2\u6570\u2026\",\n \"subtitle\": \"\u6750\u8D28 \u00B7 \u8868\u9762\",\n \"parameters\": \"\u53C2\u6570\u5951\u7EA6\",\n \"publication\": \"\u53D1\u5E03\u4FE1\u606F\",\n \"renderState\": \"\u6E32\u67D3\u72B6\u6001\",\n \"surface\": \"\u8868\u9762\",\n \"textureSlots\": \"\u7EB9\u7406\u5F15\u7528\",\n \"baseColorMap\": \"Base Color Map\",\n \"normalMap\": \"Normal Map\",\n \"unbound\": \"\u672A\u7ED1\u5B9A\",\n \"colorPreview\": \"\u989C\u8272\u9884\u89C8\uFF1A{{color}}\",\n \"roughnessValue\": \"Roughness \u6570\u503C\",\n \"metallicValue\": \"Metallic \u6570\u503C\",\n \"previewTitle\": \"\u6750\u8D28\u9884\u89C8\",\n \"previewDemo\": \"UI \u8C03\u8BD5\u4F7F\u7528\u672C\u5730 mock\u3002\u8FDE\u63A5 Engine \u540E\u624D\u4F1A\u9644\u7740\u771F\u5B9E\u9884\u89C8\u76EE\u6807\u3002\",\n \"previewUnavailable\": \"\u6750\u8D28\u9884\u89C8\u4E0D\u53EF\u7528\",\n \"previewConnect\": \"\u8FDE\u63A5\u5230 View \u5DE5\u4F5C\u533A API \u4EE5\u9644\u7740 Engine \u9884\u89C8\u76EE\u6807\u3002\",\n \"previewEmpty\": \"\u6CA1\u6709\u6750\u8D28\u9884\u89C8\",\n \"previewEmptyDescription\": \"\u8BF7\u4ECE\u5185\u5BB9\u6D4F\u89C8\u5668\u6253\u5F00\u6750\u8D28\u8D44\u4EA7\u3002\",\n \"previewCapabilityMissing\": \"Engine \u6CA1\u6709\u4E3A\u8BE5\u6750\u8D28\u8FD4\u56DE\u9884\u89C8\u76EE\u6807\u3002\"\n }\n}\n", "import { registerViewLocaleSink } from '@forgeax/view-workspace-core/locale-bridge';\nimport en from './locales/en.json' with { type: 'json' };\nimport zh from './locales/zh.json' with { type: 'json' };\n\nfunction createPluginI18n(catalogs) {\n let current = 'zh';\n const listeners = new Set();\n const lookup = (catalog, key) =>\n key.split('.').reduce((value, part) => value?.[part], catalog);\n const t = (key, vars) => {\n const message = lookup(catalogs[current], key) ?? lookup(catalogs.en, key) ?? key;\n return vars\n ? message.replace(/\\{\\{(\\w+)\\}\\}/g, (_, name) => String(vars[name] ?? ''))\n : message;\n };\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const setLocale = (next) => {\n if (next !== 'en' && next !== 'zh') return;\n current = next;\n for (const listener of listeners) listener();\n };\n return { t, subscribe, getLocale: () => current, setLocale };\n}\n\nconst i18n = createPluginI18n({ en, zh });\n\nexport const t = i18n.t;\nexport const subscribeLocale = i18n.subscribe;\nexport const getLocale = i18n.getLocale;\nexport const setLocale = i18n.setLocale;\n\nregisterViewLocaleSink(i18n.setLocale);\n"],
5
+ "mappings": ";;;;;AAAA;AAAA,EACE,UAAY;AAAA,IACV,OAAS;AAAA,IACT,OAAS;AAAA,IACT,aAAe;AAAA,IACf,eAAiB;AAAA,IACjB,OAAS;AAAA,IACT,SAAW;AAAA,IACX,WAAa;AAAA,IACb,aAAe;AAAA,IACf,aAAe;AAAA,IACf,aAAe;AAAA,IACf,mBAAqB;AAAA,IACrB,UAAY;AAAA,IACZ,YAAc;AAAA,IACd,aAAe;AAAA,IACf,aAAe;AAAA,IACf,SAAW;AAAA,IACX,cAAgB;AAAA,IAChB,cAAgB;AAAA,IAChB,WAAa;AAAA,IACb,SAAW;AAAA,IACX,cAAgB;AAAA,IAChB,gBAAkB;AAAA,IAClB,eAAiB;AAAA,IACjB,cAAgB;AAAA,IAChB,aAAe;AAAA,IACf,oBAAsB;AAAA,IACtB,gBAAkB;AAAA,IAClB,cAAgB;AAAA,IAChB,yBAA2B;AAAA,IAC3B,0BAA4B;AAAA,EAC9B;AACF;;;ACjCA;AAAA,EACE,UAAY;AAAA,IACV,OAAS;AAAA,IACT,OAAS;AAAA,IACT,aAAe;AAAA,IACf,eAAiB;AAAA,IACjB,OAAS;AAAA,IACT,SAAW;AAAA,IACX,WAAa;AAAA,IACb,aAAe;AAAA,IACf,aAAe;AAAA,IACf,aAAe;AAAA,IACf,mBAAqB;AAAA,IACrB,UAAY;AAAA,IACZ,YAAc;AAAA,IACd,aAAe;AAAA,IACf,aAAe;AAAA,IACf,SAAW;AAAA,IACX,cAAgB;AAAA,IAChB,cAAgB;AAAA,IAChB,WAAa;AAAA,IACb,SAAW;AAAA,IACX,cAAgB;AAAA,IAChB,gBAAkB;AAAA,IAClB,eAAiB;AAAA,IACjB,cAAgB;AAAA,IAChB,aAAe;AAAA,IACf,oBAAsB;AAAA,IACtB,gBAAkB;AAAA,IAClB,cAAgB;AAAA,IAChB,yBAA2B;AAAA,IAC3B,0BAA4B;AAAA,EAC9B;AACF;;;AC7BA,SAAS,iBAAiB,UAAU;AAClC,MAAI,UAAU;AACd,QAAM,YAAY,oBAAI,IAAI;AAC1B,QAAM,SAAS,CAAC,SAAS,QACvB,IAAI,MAAM,GAAG,EAAE,OAAO,CAAC,OAAO,SAAS,QAAQ,IAAI,GAAG,OAAO;AAC/D,QAAMA,KAAI,CAAC,KAAK,SAAS;AACvB,UAAM,UAAU,OAAO,SAAS,OAAO,GAAG,GAAG,KAAK,OAAO,SAAS,IAAI,GAAG,KAAK;AAC9E,WAAO,OACH,QAAQ,QAAQ,kBAAkB,CAAC,GAAG,SAAS,OAAO,KAAK,IAAI,KAAK,EAAE,CAAC,IACvE;AAAA,EACN;AACA,QAAM,YAAY,CAAC,aAAa;AAC9B,cAAU,IAAI,QAAQ;AACtB,WAAO,MAAM,UAAU,OAAO,QAAQ;AAAA,EACxC;AACA,QAAMC,aAAY,CAAC,SAAS;AAC1B,QAAI,SAAS,QAAQ,SAAS,KAAM;AACpC,cAAU;AACV,eAAW,YAAY,UAAW,UAAS;AAAA,EAC7C;AACA,SAAO,EAAE,GAAAD,IAAG,WAAW,WAAW,MAAM,SAAS,WAAAC,WAAU;AAC7D;AAEA,IAAM,OAAO,iBAAiB,EAAE,gBAAI,eAAG,CAAC;AAEjC,IAAM,IAAI,KAAK;AACf,IAAM,kBAAkB,KAAK;AAC7B,IAAM,YAAY,KAAK;AACvB,IAAM,YAAY,KAAK;AAE9B,uBAAuB,KAAK,SAAS;",
6
+ "names": ["t", "setLocale"]
7
+ }