@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.
- package/CHANGELOG.md +11 -0
- package/README.md +742 -0
- package/dist/modules/backend.mjs +54 -0
- package/dist/modules/backend.mjs.map +7 -0
- package/dist/modules/browser.mjs +180 -0
- package/dist/modules/browser.mjs.map +7 -0
- package/dist/modules/carrier-contract.mjs +38 -0
- package/dist/modules/carrier-contract.mjs.map +7 -0
- package/dist/modules/carrier.mjs +13 -0
- package/dist/modules/carrier.mjs.map +7 -0
- package/dist/modules/chunks/chunk-2ASWB6IX.mjs +225 -0
- package/dist/modules/chunks/chunk-2ASWB6IX.mjs.map +7 -0
- package/dist/modules/chunks/chunk-2IJKOG2F.mjs +801 -0
- package/dist/modules/chunks/chunk-2IJKOG2F.mjs.map +7 -0
- package/dist/modules/chunks/chunk-2K3BBJ5S.mjs +9 -0
- package/dist/modules/chunks/chunk-2K3BBJ5S.mjs.map +7 -0
- package/dist/modules/chunks/chunk-32GD5LL6.mjs +482 -0
- package/dist/modules/chunks/chunk-32GD5LL6.mjs.map +7 -0
- package/dist/modules/chunks/chunk-3B4KFAEC.mjs +10 -0
- package/dist/modules/chunks/chunk-3B4KFAEC.mjs.map +7 -0
- package/dist/modules/chunks/chunk-46O5WX43.mjs +25 -0
- package/dist/modules/chunks/chunk-46O5WX43.mjs.map +7 -0
- package/dist/modules/chunks/chunk-47J5JXAB.mjs +237 -0
- package/dist/modules/chunks/chunk-47J5JXAB.mjs.map +7 -0
- package/dist/modules/chunks/chunk-4BXQOUDQ.mjs +17 -0
- package/dist/modules/chunks/chunk-4BXQOUDQ.mjs.map +7 -0
- package/dist/modules/chunks/chunk-4GQWYU2V.mjs +126 -0
- package/dist/modules/chunks/chunk-4GQWYU2V.mjs.map +7 -0
- package/dist/modules/chunks/chunk-4N5X2PRQ.mjs +48 -0
- package/dist/modules/chunks/chunk-4N5X2PRQ.mjs.map +7 -0
- package/dist/modules/chunks/chunk-4WXD2KYX.mjs +56 -0
- package/dist/modules/chunks/chunk-4WXD2KYX.mjs.map +7 -0
- package/dist/modules/chunks/chunk-6ZWWVAZK.mjs +468 -0
- package/dist/modules/chunks/chunk-6ZWWVAZK.mjs.map +7 -0
- package/dist/modules/chunks/chunk-73UZNRHN.mjs +296 -0
- package/dist/modules/chunks/chunk-73UZNRHN.mjs.map +7 -0
- package/dist/modules/chunks/chunk-7ITLCRND.mjs +10 -0
- package/dist/modules/chunks/chunk-7ITLCRND.mjs.map +7 -0
- package/dist/modules/chunks/chunk-7TGVWKH7.mjs +59 -0
- package/dist/modules/chunks/chunk-7TGVWKH7.mjs.map +7 -0
- package/dist/modules/chunks/chunk-7URFF53W.mjs +42 -0
- package/dist/modules/chunks/chunk-7URFF53W.mjs.map +7 -0
- package/dist/modules/chunks/chunk-7YSDRIFN.mjs +14 -0
- package/dist/modules/chunks/chunk-7YSDRIFN.mjs.map +7 -0
- package/dist/modules/chunks/chunk-AAFVCQPK.mjs +52 -0
- package/dist/modules/chunks/chunk-AAFVCQPK.mjs.map +7 -0
- package/dist/modules/chunks/chunk-AEK7ZESQ.mjs +18 -0
- package/dist/modules/chunks/chunk-AEK7ZESQ.mjs.map +7 -0
- package/dist/modules/chunks/chunk-AL6ZWIEU.mjs +42 -0
- package/dist/modules/chunks/chunk-AL6ZWIEU.mjs.map +7 -0
- package/dist/modules/chunks/chunk-ALT7XVMQ.mjs +73 -0
- package/dist/modules/chunks/chunk-ALT7XVMQ.mjs.map +7 -0
- package/dist/modules/chunks/chunk-ASI2HBE6.mjs +116 -0
- package/dist/modules/chunks/chunk-ASI2HBE6.mjs.map +7 -0
- package/dist/modules/chunks/chunk-ATWGCH7I.mjs +174 -0
- package/dist/modules/chunks/chunk-ATWGCH7I.mjs.map +7 -0
- package/dist/modules/chunks/chunk-C45U6IIY.mjs +692 -0
- package/dist/modules/chunks/chunk-C45U6IIY.mjs.map +7 -0
- package/dist/modules/chunks/chunk-C7R3YRA7.mjs +98 -0
- package/dist/modules/chunks/chunk-C7R3YRA7.mjs.map +7 -0
- package/dist/modules/chunks/chunk-CRMICXKN.mjs +87 -0
- package/dist/modules/chunks/chunk-CRMICXKN.mjs.map +7 -0
- package/dist/modules/chunks/chunk-CUH2G6UF.mjs +81 -0
- package/dist/modules/chunks/chunk-CUH2G6UF.mjs.map +7 -0
- package/dist/modules/chunks/chunk-D7GWRZLL.mjs +77 -0
- package/dist/modules/chunks/chunk-D7GWRZLL.mjs.map +7 -0
- package/dist/modules/chunks/chunk-DBWUIBE3.mjs +10 -0
- package/dist/modules/chunks/chunk-DBWUIBE3.mjs.map +7 -0
- package/dist/modules/chunks/chunk-DQWVWWUU.mjs +77 -0
- package/dist/modules/chunks/chunk-DQWVWWUU.mjs.map +7 -0
- package/dist/modules/chunks/chunk-DZZ2WFEU.mjs +122 -0
- package/dist/modules/chunks/chunk-DZZ2WFEU.mjs.map +7 -0
- package/dist/modules/chunks/chunk-E4UIAN26.mjs +58 -0
- package/dist/modules/chunks/chunk-E4UIAN26.mjs.map +7 -0
- package/dist/modules/chunks/chunk-EJGBVKFE.mjs +77 -0
- package/dist/modules/chunks/chunk-EJGBVKFE.mjs.map +7 -0
- package/dist/modules/chunks/chunk-EPSTTHWV.mjs +173 -0
- package/dist/modules/chunks/chunk-EPSTTHWV.mjs.map +7 -0
- package/dist/modules/chunks/chunk-ER7T6QJ3.mjs +64 -0
- package/dist/modules/chunks/chunk-ER7T6QJ3.mjs.map +7 -0
- package/dist/modules/chunks/chunk-FD4BAJ6K.mjs +389 -0
- package/dist/modules/chunks/chunk-FD4BAJ6K.mjs.map +7 -0
- package/dist/modules/chunks/chunk-FJM6WWIY.mjs +80 -0
- package/dist/modules/chunks/chunk-FJM6WWIY.mjs.map +7 -0
- package/dist/modules/chunks/chunk-FKCQYDLX.mjs +162 -0
- package/dist/modules/chunks/chunk-FKCQYDLX.mjs.map +7 -0
- package/dist/modules/chunks/chunk-FLGC65SR.mjs +10 -0
- package/dist/modules/chunks/chunk-FLGC65SR.mjs.map +7 -0
- package/dist/modules/chunks/chunk-FMCACPX5.mjs +289 -0
- package/dist/modules/chunks/chunk-FMCACPX5.mjs.map +7 -0
- package/dist/modules/chunks/chunk-FOBRLUQV.mjs +51 -0
- package/dist/modules/chunks/chunk-FOBRLUQV.mjs.map +7 -0
- package/dist/modules/chunks/chunk-FV3DSKZB.mjs +33 -0
- package/dist/modules/chunks/chunk-FV3DSKZB.mjs.map +7 -0
- package/dist/modules/chunks/chunk-G7BAFAGO.mjs +98 -0
- package/dist/modules/chunks/chunk-G7BAFAGO.mjs.map +7 -0
- package/dist/modules/chunks/chunk-GQBZMCTK.mjs +145 -0
- package/dist/modules/chunks/chunk-GQBZMCTK.mjs.map +7 -0
- package/dist/modules/chunks/chunk-GYWIY7AL.mjs +131 -0
- package/dist/modules/chunks/chunk-GYWIY7AL.mjs.map +7 -0
- package/dist/modules/chunks/chunk-H3KNBALD.mjs +256 -0
- package/dist/modules/chunks/chunk-H3KNBALD.mjs.map +7 -0
- package/dist/modules/chunks/chunk-H3M22JDL.mjs +144 -0
- package/dist/modules/chunks/chunk-H3M22JDL.mjs.map +7 -0
- package/dist/modules/chunks/chunk-HES3DNTM.mjs +40 -0
- package/dist/modules/chunks/chunk-HES3DNTM.mjs.map +7 -0
- package/dist/modules/chunks/chunk-I5BFP7SS.mjs +2392 -0
- package/dist/modules/chunks/chunk-I5BFP7SS.mjs.map +7 -0
- package/dist/modules/chunks/chunk-IGRMZYRD.mjs +15 -0
- package/dist/modules/chunks/chunk-IGRMZYRD.mjs.map +7 -0
- package/dist/modules/chunks/chunk-IKNGC766.mjs +321 -0
- package/dist/modules/chunks/chunk-IKNGC766.mjs.map +7 -0
- package/dist/modules/chunks/chunk-IVHNYKZB.mjs +35 -0
- package/dist/modules/chunks/chunk-IVHNYKZB.mjs.map +7 -0
- package/dist/modules/chunks/chunk-JHOURMYW.mjs +101 -0
- package/dist/modules/chunks/chunk-JHOURMYW.mjs.map +7 -0
- package/dist/modules/chunks/chunk-JURXMRFA.mjs +282 -0
- package/dist/modules/chunks/chunk-JURXMRFA.mjs.map +7 -0
- package/dist/modules/chunks/chunk-JWZIREC3.mjs +18 -0
- package/dist/modules/chunks/chunk-JWZIREC3.mjs.map +7 -0
- package/dist/modules/chunks/chunk-KHRTIZ56.mjs +1400 -0
- package/dist/modules/chunks/chunk-KHRTIZ56.mjs.map +7 -0
- package/dist/modules/chunks/chunk-KLJZZ23J.mjs +102 -0
- package/dist/modules/chunks/chunk-KLJZZ23J.mjs.map +7 -0
- package/dist/modules/chunks/chunk-KNBAYU5I.mjs +49 -0
- package/dist/modules/chunks/chunk-KNBAYU5I.mjs.map +7 -0
- package/dist/modules/chunks/chunk-KSZNCFU4.mjs +125 -0
- package/dist/modules/chunks/chunk-KSZNCFU4.mjs.map +7 -0
- package/dist/modules/chunks/chunk-L45W6KM6.mjs +158 -0
- package/dist/modules/chunks/chunk-L45W6KM6.mjs.map +7 -0
- package/dist/modules/chunks/chunk-LERMYZRC.mjs +239 -0
- package/dist/modules/chunks/chunk-LERMYZRC.mjs.map +7 -0
- package/dist/modules/chunks/chunk-LKJCXYSJ.mjs +91 -0
- package/dist/modules/chunks/chunk-LKJCXYSJ.mjs.map +7 -0
- package/dist/modules/chunks/chunk-MBS3EICT.mjs +25 -0
- package/dist/modules/chunks/chunk-MBS3EICT.mjs.map +7 -0
- package/dist/modules/chunks/chunk-MUOQZPVH.mjs +609 -0
- package/dist/modules/chunks/chunk-MUOQZPVH.mjs.map +7 -0
- package/dist/modules/chunks/chunk-MVEPGFSB.mjs +1 -0
- package/dist/modules/chunks/chunk-MVEPGFSB.mjs.map +7 -0
- package/dist/modules/chunks/chunk-NBJKLWJ5.mjs +42 -0
- package/dist/modules/chunks/chunk-NBJKLWJ5.mjs.map +7 -0
- package/dist/modules/chunks/chunk-NBLGKTEM.mjs +86 -0
- package/dist/modules/chunks/chunk-NBLGKTEM.mjs.map +7 -0
- package/dist/modules/chunks/chunk-NI7CS3I2.mjs +110 -0
- package/dist/modules/chunks/chunk-NI7CS3I2.mjs.map +7 -0
- package/dist/modules/chunks/chunk-NJH2OJFC.mjs +2113 -0
- package/dist/modules/chunks/chunk-NJH2OJFC.mjs.map +7 -0
- package/dist/modules/chunks/chunk-OBK4LIJB.mjs +20 -0
- package/dist/modules/chunks/chunk-OBK4LIJB.mjs.map +7 -0
- package/dist/modules/chunks/chunk-PEUT3FW7.mjs +1 -0
- package/dist/modules/chunks/chunk-PEUT3FW7.mjs.map +7 -0
- package/dist/modules/chunks/chunk-PRZOWPDN.mjs +66 -0
- package/dist/modules/chunks/chunk-PRZOWPDN.mjs.map +7 -0
- package/dist/modules/chunks/chunk-Q4RXBGQS.mjs +55 -0
- package/dist/modules/chunks/chunk-Q4RXBGQS.mjs.map +7 -0
- package/dist/modules/chunks/chunk-QBHBKOIL.mjs +55 -0
- package/dist/modules/chunks/chunk-QBHBKOIL.mjs.map +7 -0
- package/dist/modules/chunks/chunk-QD6CCRMG.mjs +20 -0
- package/dist/modules/chunks/chunk-QD6CCRMG.mjs.map +7 -0
- package/dist/modules/chunks/chunk-QF4V23GW.mjs +39 -0
- package/dist/modules/chunks/chunk-QF4V23GW.mjs.map +7 -0
- package/dist/modules/chunks/chunk-QK6W7MJO.mjs +42 -0
- package/dist/modules/chunks/chunk-QK6W7MJO.mjs.map +7 -0
- package/dist/modules/chunks/chunk-QL7V6DK7.mjs +34 -0
- package/dist/modules/chunks/chunk-QL7V6DK7.mjs.map +7 -0
- package/dist/modules/chunks/chunk-QLBQQKRI.mjs +25 -0
- package/dist/modules/chunks/chunk-QLBQQKRI.mjs.map +7 -0
- package/dist/modules/chunks/chunk-QLZQGZDC.mjs +418 -0
- package/dist/modules/chunks/chunk-QLZQGZDC.mjs.map +7 -0
- package/dist/modules/chunks/chunk-QSKQZGK7.mjs +1625 -0
- package/dist/modules/chunks/chunk-QSKQZGK7.mjs.map +7 -0
- package/dist/modules/chunks/chunk-QURKBAG4.mjs +25 -0
- package/dist/modules/chunks/chunk-QURKBAG4.mjs.map +7 -0
- package/dist/modules/chunks/chunk-R274XBEH.mjs +53 -0
- package/dist/modules/chunks/chunk-R274XBEH.mjs.map +7 -0
- package/dist/modules/chunks/chunk-R4I4JEY5.mjs +77 -0
- package/dist/modules/chunks/chunk-R4I4JEY5.mjs.map +7 -0
- package/dist/modules/chunks/chunk-RR6L6VVR.mjs +9 -0
- package/dist/modules/chunks/chunk-RR6L6VVR.mjs.map +7 -0
- package/dist/modules/chunks/chunk-RXF7SBBZ.mjs +125 -0
- package/dist/modules/chunks/chunk-RXF7SBBZ.mjs.map +7 -0
- package/dist/modules/chunks/chunk-SR66S6EJ.mjs +138 -0
- package/dist/modules/chunks/chunk-SR66S6EJ.mjs.map +7 -0
- package/dist/modules/chunks/chunk-SSQMQJ52.mjs +27 -0
- package/dist/modules/chunks/chunk-SSQMQJ52.mjs.map +7 -0
- package/dist/modules/chunks/chunk-TP26TASL.mjs +20 -0
- package/dist/modules/chunks/chunk-TP26TASL.mjs.map +7 -0
- package/dist/modules/chunks/chunk-TSAEK5P3.mjs +50 -0
- package/dist/modules/chunks/chunk-TSAEK5P3.mjs.map +7 -0
- package/dist/modules/chunks/chunk-UAY27HT3.mjs +68 -0
- package/dist/modules/chunks/chunk-UAY27HT3.mjs.map +7 -0
- package/dist/modules/chunks/chunk-UDLIWGWS.mjs +103 -0
- package/dist/modules/chunks/chunk-UDLIWGWS.mjs.map +7 -0
- package/dist/modules/chunks/chunk-UDVQHPWV.mjs +89 -0
- package/dist/modules/chunks/chunk-UDVQHPWV.mjs.map +7 -0
- package/dist/modules/chunks/chunk-UM23W3G7.mjs +237 -0
- package/dist/modules/chunks/chunk-UM23W3G7.mjs.map +7 -0
- package/dist/modules/chunks/chunk-VDZJWEAA.mjs +214 -0
- package/dist/modules/chunks/chunk-VDZJWEAA.mjs.map +7 -0
- package/dist/modules/chunks/chunk-VIGOJWSO.mjs +42 -0
- package/dist/modules/chunks/chunk-VIGOJWSO.mjs.map +7 -0
- package/dist/modules/chunks/chunk-VY3S5BWI.mjs +284 -0
- package/dist/modules/chunks/chunk-VY3S5BWI.mjs.map +7 -0
- package/dist/modules/chunks/chunk-VZXGRZYU.mjs +47 -0
- package/dist/modules/chunks/chunk-VZXGRZYU.mjs.map +7 -0
- package/dist/modules/chunks/chunk-W5DMQZB5.mjs +42 -0
- package/dist/modules/chunks/chunk-W5DMQZB5.mjs.map +7 -0
- package/dist/modules/chunks/chunk-WOMHSTVZ.mjs +918 -0
- package/dist/modules/chunks/chunk-WOMHSTVZ.mjs.map +7 -0
- package/dist/modules/chunks/chunk-XFQT7XCG.mjs +42 -0
- package/dist/modules/chunks/chunk-XFQT7XCG.mjs.map +7 -0
- package/dist/modules/chunks/chunk-XJZEVRYX.mjs +98 -0
- package/dist/modules/chunks/chunk-XJZEVRYX.mjs.map +7 -0
- package/dist/modules/chunks/chunk-XUYFV23R.mjs +317 -0
- package/dist/modules/chunks/chunk-XUYFV23R.mjs.map +7 -0
- package/dist/modules/chunks/chunk-Y5HXCPPQ.mjs +58 -0
- package/dist/modules/chunks/chunk-Y5HXCPPQ.mjs.map +7 -0
- package/dist/modules/chunks/chunk-YTHGRKGI.mjs +147 -0
- package/dist/modules/chunks/chunk-YTHGRKGI.mjs.map +7 -0
- package/dist/modules/chunks/chunk-YVQSDKAO.mjs +341 -0
- package/dist/modules/chunks/chunk-YVQSDKAO.mjs.map +7 -0
- package/dist/modules/chunks/chunk-YYXQDUVT.mjs +123 -0
- package/dist/modules/chunks/chunk-YYXQDUVT.mjs.map +7 -0
- package/dist/modules/chunks/chunk-ZFXZ2NUI.mjs +142 -0
- package/dist/modules/chunks/chunk-ZFXZ2NUI.mjs.map +7 -0
- package/dist/modules/chunks/chunk-ZLNWF4ET.mjs +9 -0
- package/dist/modules/chunks/chunk-ZLNWF4ET.mjs.map +7 -0
- package/dist/modules/chunks/chunk-ZLU5QW2O.mjs +9 -0
- package/dist/modules/chunks/chunk-ZLU5QW2O.mjs.map +7 -0
- package/dist/modules/chunks/chunk-ZNZPYE2V.mjs +28 -0
- package/dist/modules/chunks/chunk-ZNZPYE2V.mjs.map +7 -0
- package/dist/modules/chunks/core-564N45MO.mjs +7480 -0
- package/dist/modules/chunks/core-564N45MO.mjs.map +7 -0
- package/dist/modules/chunks/css-BKH4SVJG.mjs +8 -0
- package/dist/modules/chunks/css-BKH4SVJG.mjs.map +7 -0
- package/dist/modules/chunks/engine-javascript-PDVIGNGR.mjs +3241 -0
- package/dist/modules/chunks/engine-javascript-PDVIGNGR.mjs.map +7 -0
- package/dist/modules/chunks/github-dark-default-6HVTHEWF.mjs +8 -0
- package/dist/modules/chunks/github-dark-default-6HVTHEWF.mjs.map +7 -0
- package/dist/modules/chunks/github-light-default-LAXRA6XL.mjs +8 -0
- package/dist/modules/chunks/github-light-default-LAXRA6XL.mjs.map +7 -0
- package/dist/modules/chunks/glsl-UC3YWUD2.mjs +18 -0
- package/dist/modules/chunks/glsl-UC3YWUD2.mjs.map +7 -0
- package/dist/modules/chunks/html-FRVIUV63.mjs +19 -0
- package/dist/modules/chunks/html-FRVIUV63.mjs.map +7 -0
- package/dist/modules/chunks/javascript-LN3OC7S2.mjs +8 -0
- package/dist/modules/chunks/javascript-LN3OC7S2.mjs.map +7 -0
- package/dist/modules/chunks/json-5CUGWTOP.mjs +11 -0
- package/dist/modules/chunks/json-5CUGWTOP.mjs.map +7 -0
- package/dist/modules/chunks/json5-YZQI5VNO.mjs +11 -0
- package/dist/modules/chunks/json5-YZQI5VNO.mjs.map +7 -0
- package/dist/modules/chunks/jsonc-SWID6VOZ.mjs +11 -0
- package/dist/modules/chunks/jsonc-SWID6VOZ.mjs.map +7 -0
- package/dist/modules/chunks/jsx-A7RDCLJO.mjs +11 -0
- package/dist/modules/chunks/jsx-A7RDCLJO.mjs.map +7 -0
- package/dist/modules/chunks/markdown-QTCU5KP5.mjs +11 -0
- package/dist/modules/chunks/markdown-QTCU5KP5.mjs.map +7 -0
- package/dist/modules/chunks/python-LAZONBIB.mjs +11 -0
- package/dist/modules/chunks/python-LAZONBIB.mjs.map +7 -0
- package/dist/modules/chunks/rust-XWTPJFJO.mjs +11 -0
- package/dist/modules/chunks/rust-XWTPJFJO.mjs.map +7 -0
- package/dist/modules/chunks/scss-CFXRHUUW.mjs +15 -0
- package/dist/modules/chunks/scss-CFXRHUUW.mjs.map +7 -0
- package/dist/modules/chunks/shellscript-OHO3LCVU.mjs +11 -0
- package/dist/modules/chunks/shellscript-OHO3LCVU.mjs.map +7 -0
- package/dist/modules/chunks/toml-IOHFZJ5B.mjs +11 -0
- package/dist/modules/chunks/toml-IOHFZJ5B.mjs.map +7 -0
- package/dist/modules/chunks/tsx-2E6WNX2E.mjs +11 -0
- package/dist/modules/chunks/tsx-2E6WNX2E.mjs.map +7 -0
- package/dist/modules/chunks/typescript-PBKAS54P.mjs +11 -0
- package/dist/modules/chunks/typescript-PBKAS54P.mjs.map +7 -0
- package/dist/modules/chunks/wgsl-PS6QPRLZ.mjs +11 -0
- package/dist/modules/chunks/wgsl-PS6QPRLZ.mjs.map +7 -0
- package/dist/modules/chunks/xml-JECR2ACB.mjs +18 -0
- package/dist/modules/chunks/xml-JECR2ACB.mjs.map +7 -0
- package/dist/modules/chunks/yaml-P2SV4LOE.mjs +11 -0
- package/dist/modules/chunks/yaml-P2SV4LOE.mjs.map +7 -0
- package/dist/modules/cli-contributions.mjs +32 -0
- package/dist/modules/cli-contributions.mjs.map +7 -0
- package/dist/modules/cli.mjs +14 -0
- package/dist/modules/cli.mjs.map +7 -0
- package/dist/modules/command-executor.mjs +65 -0
- package/dist/modules/command-executor.mjs.map +7 -0
- package/dist/modules/commands.mjs +10 -0
- package/dist/modules/commands.mjs.map +7 -0
- package/dist/modules/embedded.mjs +18608 -0
- package/dist/modules/embedded.mjs.map +7 -0
- package/dist/modules/extension-bridge.mjs +18 -0
- package/dist/modules/extension-bridge.mjs.map +7 -0
- package/dist/modules/frontend-root.mjs +61 -0
- package/dist/modules/frontend-root.mjs.map +7 -0
- package/dist/modules/index.mjs +784 -0
- package/dist/modules/index.mjs.map +7 -0
- package/dist/modules/page.mjs +45 -0
- package/dist/modules/page.mjs.map +7 -0
- package/dist/modules/pages/scene.mjs +18 -0
- package/dist/modules/pages/scene.mjs.map +7 -0
- package/dist/modules/plugin.mjs +56 -0
- package/dist/modules/plugin.mjs.map +7 -0
- package/dist/modules/plugins/asset/frontend.mjs +23 -0
- package/dist/modules/plugins/asset/frontend.mjs.map +7 -0
- package/dist/modules/plugins/asset/i18n.mjs +15 -0
- package/dist/modules/plugins/asset/i18n.mjs.map +7 -0
- package/dist/modules/plugins/asset/identity.mjs +42 -0
- package/dist/modules/plugins/asset/identity.mjs.map +7 -0
- package/dist/modules/plugins/asset/schema.mjs +10 -0
- package/dist/modules/plugins/asset/schema.mjs.map +7 -0
- package/dist/modules/plugins/asset/ui.mjs +16 -0
- package/dist/modules/plugins/asset/ui.mjs.map +7 -0
- package/dist/modules/plugins/content-browser/frontend.mjs +17 -0
- package/dist/modules/plugins/content-browser/frontend.mjs.map +7 -0
- package/dist/modules/plugins/content-browser/i18n.mjs +15 -0
- package/dist/modules/plugins/content-browser/i18n.mjs.map +7 -0
- package/dist/modules/plugins/content-browser/identity.mjs +22 -0
- package/dist/modules/plugins/content-browser/identity.mjs.map +7 -0
- package/dist/modules/plugins/content-browser/schema.mjs +12 -0
- package/dist/modules/plugins/content-browser/schema.mjs.map +7 -0
- package/dist/modules/plugins/content-browser/ui.mjs +15 -0
- package/dist/modules/plugins/content-browser/ui.mjs.map +7 -0
- package/dist/modules/plugins/display/api.mjs +10 -0
- package/dist/modules/plugins/display/api.mjs.map +7 -0
- package/dist/modules/plugins/display/backend.mjs +16 -0
- package/dist/modules/plugins/display/backend.mjs.map +7 -0
- package/dist/modules/plugins/display/carrier-contract.mjs +38 -0
- package/dist/modules/plugins/display/carrier-contract.mjs.map +7 -0
- package/dist/modules/plugins/display/carrier.mjs +13 -0
- package/dist/modules/plugins/display/carrier.mjs.map +7 -0
- package/dist/modules/plugins/display/effects.mjs +8 -0
- package/dist/modules/plugins/display/effects.mjs.map +7 -0
- package/dist/modules/plugins/display/frontend.mjs +14 -0
- package/dist/modules/plugins/display/frontend.mjs.map +7 -0
- package/dist/modules/plugins/display/i18n.mjs +58 -0
- package/dist/modules/plugins/display/i18n.mjs.map +7 -0
- package/dist/modules/plugins/display/identity.mjs +30 -0
- package/dist/modules/plugins/display/identity.mjs.map +7 -0
- package/dist/modules/plugins/display/page-broker.mjs +12 -0
- package/dist/modules/plugins/display/page-broker.mjs.map +7 -0
- package/dist/modules/plugins/display/schema.mjs +40 -0
- package/dist/modules/plugins/display/schema.mjs.map +7 -0
- package/dist/modules/plugins/display/ui.mjs +9 -0
- package/dist/modules/plugins/display/ui.mjs.map +7 -0
- package/dist/modules/plugins/inspector/frontend.mjs +17 -0
- package/dist/modules/plugins/inspector/frontend.mjs.map +7 -0
- package/dist/modules/plugins/inspector/i18n.mjs +15 -0
- package/dist/modules/plugins/inspector/i18n.mjs.map +7 -0
- package/dist/modules/plugins/inspector/identity.mjs +22 -0
- package/dist/modules/plugins/inspector/identity.mjs.map +7 -0
- package/dist/modules/plugins/inspector/schema.mjs +12 -0
- package/dist/modules/plugins/inspector/schema.mjs.map +7 -0
- package/dist/modules/plugins/inspector/ui.mjs +16 -0
- package/dist/modules/plugins/inspector/ui.mjs.map +7 -0
- package/dist/modules/plugins/material/frontend.mjs +25 -0
- package/dist/modules/plugins/material/frontend.mjs.map +7 -0
- package/dist/modules/plugins/material/i18n.mjs +15 -0
- package/dist/modules/plugins/material/i18n.mjs.map +7 -0
- package/dist/modules/plugins/material/identity.mjs +60 -0
- package/dist/modules/plugins/material/identity.mjs.map +7 -0
- package/dist/modules/plugins/material/schema.mjs +47 -0
- package/dist/modules/plugins/material/schema.mjs.map +7 -0
- package/dist/modules/plugins/material/ui.mjs +28 -0
- package/dist/modules/plugins/material/ui.mjs.map +7 -0
- package/dist/modules/plugins/mesh/frontend.mjs +23 -0
- package/dist/modules/plugins/mesh/frontend.mjs.map +7 -0
- package/dist/modules/plugins/mesh/i18n.mjs +15 -0
- package/dist/modules/plugins/mesh/i18n.mjs.map +7 -0
- package/dist/modules/plugins/mesh/identity.mjs +54 -0
- package/dist/modules/plugins/mesh/identity.mjs.map +7 -0
- package/dist/modules/plugins/mesh/schema.mjs +10 -0
- package/dist/modules/plugins/mesh/schema.mjs.map +7 -0
- package/dist/modules/plugins/mesh/ui.mjs +26 -0
- package/dist/modules/plugins/mesh/ui.mjs.map +7 -0
- package/dist/modules/plugins/plugins/api.mjs +11 -0
- package/dist/modules/plugins/plugins/api.mjs.map +7 -0
- package/dist/modules/plugins/plugins/backend.mjs +21 -0
- package/dist/modules/plugins/plugins/backend.mjs.map +7 -0
- package/dist/modules/plugins/plugins/cli.mjs +12 -0
- package/dist/modules/plugins/plugins/cli.mjs.map +7 -0
- package/dist/modules/plugins/plugins/frontend.mjs +17 -0
- package/dist/modules/plugins/plugins/frontend.mjs.map +7 -0
- package/dist/modules/plugins/plugins/i18n.mjs +15 -0
- package/dist/modules/plugins/plugins/i18n.mjs.map +7 -0
- package/dist/modules/plugins/plugins/identity.mjs +26 -0
- package/dist/modules/plugins/plugins/identity.mjs.map +7 -0
- package/dist/modules/plugins/plugins/runtime.mjs +50 -0
- package/dist/modules/plugins/plugins/runtime.mjs.map +7 -0
- package/dist/modules/plugins/plugins/schema.mjs +12 -0
- package/dist/modules/plugins/plugins/schema.mjs.map +7 -0
- package/dist/modules/plugins/plugins/ui/panel.mjs +14 -0
- package/dist/modules/plugins/plugins/ui/panel.mjs.map +7 -0
- package/dist/modules/plugins/plugins/ui.mjs +15 -0
- package/dist/modules/plugins/plugins/ui.mjs.map +7 -0
- package/dist/modules/plugins/scene/frontend.mjs +18 -0
- package/dist/modules/plugins/scene/frontend.mjs.map +7 -0
- package/dist/modules/plugins/scene/identity.mjs +14 -0
- package/dist/modules/plugins/scene/identity.mjs.map +7 -0
- package/dist/modules/plugins/scene-tree/frontend.mjs +17 -0
- package/dist/modules/plugins/scene-tree/frontend.mjs.map +7 -0
- package/dist/modules/plugins/scene-tree/i18n.mjs +15 -0
- package/dist/modules/plugins/scene-tree/i18n.mjs.map +7 -0
- package/dist/modules/plugins/scene-tree/identity.mjs +22 -0
- package/dist/modules/plugins/scene-tree/identity.mjs.map +7 -0
- package/dist/modules/plugins/scene-tree/schema.mjs +12 -0
- package/dist/modules/plugins/scene-tree/schema.mjs.map +7 -0
- package/dist/modules/plugins/scene-tree/ui.mjs +16 -0
- package/dist/modules/plugins/scene-tree/ui.mjs.map +7 -0
- package/dist/modules/plugins/texture/frontend.mjs +23 -0
- package/dist/modules/plugins/texture/frontend.mjs.map +7 -0
- package/dist/modules/plugins/texture/i18n.mjs +15 -0
- package/dist/modules/plugins/texture/i18n.mjs.map +7 -0
- package/dist/modules/plugins/texture/identity.mjs +54 -0
- package/dist/modules/plugins/texture/identity.mjs.map +7 -0
- package/dist/modules/plugins/texture/schema.mjs +10 -0
- package/dist/modules/plugins/texture/schema.mjs.map +7 -0
- package/dist/modules/plugins/texture/ui.mjs +26 -0
- package/dist/modules/plugins/texture/ui.mjs.map +7 -0
- package/dist/modules/plugins/viewport/frontend.mjs +27 -0
- package/dist/modules/plugins/viewport/frontend.mjs.map +7 -0
- package/dist/modules/plugins/viewport/identity.mjs +28 -0
- package/dist/modules/plugins/viewport/identity.mjs.map +7 -0
- package/dist/modules/plugins/viewport/presentation-identity.mjs +10 -0
- package/dist/modules/plugins/viewport/presentation-identity.mjs.map +7 -0
- package/dist/modules/plugins/viewport/presentation.mjs +18 -0
- package/dist/modules/plugins/viewport/presentation.mjs.map +7 -0
- package/dist/modules/plugins/viewport/schema.mjs +18 -0
- package/dist/modules/plugins/viewport/schema.mjs.map +7 -0
- package/dist/modules/plugins/viewport/workspace-shell.mjs +29 -0
- package/dist/modules/plugins/viewport/workspace-shell.mjs.map +7 -0
- package/dist/modules/shell/contract.mjs +10 -0
- package/dist/modules/shell/contract.mjs.map +7 -0
- package/dist/modules/shell/frontend.mjs +14 -0
- package/dist/modules/shell/frontend.mjs.map +7 -0
- package/dist/modules/shell/layout-zones.mjs +20 -0
- package/dist/modules/shell/layout-zones.mjs.map +7 -0
- package/dist/modules/start-cli.mjs +57 -0
- package/dist/modules/start-cli.mjs.map +7 -0
- package/dist/modules/start.mjs +18 -0
- package/dist/modules/start.mjs.map +7 -0
- package/dist/modules/viewer/catalog/backend.mjs +47 -0
- package/dist/modules/viewer/catalog/backend.mjs.map +7 -0
- package/dist/modules/viewer/catalog/frontend.mjs +55 -0
- package/dist/modules/viewer/catalog/frontend.mjs.map +7 -0
- package/dist/modules/viewer/catalog/shared.mjs +43 -0
- package/dist/modules/viewer/catalog/shared.mjs.map +7 -0
- package/dist/modules/viewer/catalog.mjs +85 -0
- package/dist/modules/viewer/catalog.mjs.map +7 -0
- package/dist/modules/viewer/cli.mjs +23 -0
- package/dist/modules/viewer/cli.mjs.map +7 -0
- package/dist/modules/viewer-host/frontend.mjs +65 -0
- package/dist/modules/viewer-host/frontend.mjs.map +7 -0
- package/dist/modules/viewer-host/page-registry.mjs +27 -0
- package/dist/modules/viewer-host/page-registry.mjs.map +7 -0
- package/dist/modules/viewer-host/slot-registry.mjs +8 -0
- package/dist/modules/viewer-host/slot-registry.mjs.map +7 -0
- package/dist/modules/viewer-host.mjs +43 -0
- package/dist/modules/viewer-host.mjs.map +7 -0
- package/dist/modules/viewer.mjs +85 -0
- package/dist/modules/viewer.mjs.map +7 -0
- package/dist/modules/workspace/adopt-surface.mjs +16 -0
- package/dist/modules/workspace/adopt-surface.mjs.map +7 -0
- package/dist/modules/workspace/api.mjs +8 -0
- package/dist/modules/workspace/api.mjs.map +7 -0
- package/dist/modules/workspace/backend.mjs +23 -0
- package/dist/modules/workspace/backend.mjs.map +7 -0
- package/dist/modules/workspace/broker.mjs +16 -0
- package/dist/modules/workspace/broker.mjs.map +7 -0
- package/dist/modules/workspace/cli.mjs +9 -0
- package/dist/modules/workspace/cli.mjs.map +7 -0
- package/dist/modules/workspace/client.mjs +15 -0
- package/dist/modules/workspace/client.mjs.map +7 -0
- package/dist/modules/workspace/command-error.mjs +16 -0
- package/dist/modules/workspace/command-error.mjs.map +7 -0
- package/dist/modules/workspace/contract.mjs +71 -0
- package/dist/modules/workspace/contract.mjs.map +7 -0
- package/dist/modules/workspace/demo-client.mjs +127 -0
- package/dist/modules/workspace/demo-client.mjs.map +7 -0
- package/dist/modules/workspace/engine-adapter.mjs +16 -0
- package/dist/modules/workspace/engine-adapter.mjs.map +7 -0
- package/dist/modules/workspace/engine-presentation.mjs +10 -0
- package/dist/modules/workspace/engine-presentation.mjs.map +7 -0
- package/dist/modules/workspace/extension-bridge.mjs +18 -0
- package/dist/modules/workspace/extension-bridge.mjs.map +7 -0
- package/dist/modules/workspace/frontend-plugin.mjs +18 -0
- package/dist/modules/workspace/frontend-plugin.mjs.map +7 -0
- package/dist/modules/workspace/frontend.mjs +29 -0
- package/dist/modules/workspace/frontend.mjs.map +7 -0
- package/dist/modules/workspace/id.mjs +8 -0
- package/dist/modules/workspace/id.mjs.map +7 -0
- package/dist/modules/workspace/inspection-presentation.mjs +12 -0
- package/dist/modules/workspace/inspection-presentation.mjs.map +7 -0
- package/dist/modules/workspace/locale-bridge.mjs +14 -0
- package/dist/modules/workspace/locale-bridge.mjs.map +7 -0
- package/dist/modules/workspace/page-title.mjs +13 -0
- package/dist/modules/workspace/page-title.mjs.map +7 -0
- package/dist/modules/workspace/presentation.mjs +18 -0
- package/dist/modules/workspace/presentation.mjs.map +7 -0
- package/dist/modules/workspace/preview-surface.mjs +17 -0
- package/dist/modules/workspace/preview-surface.mjs.map +7 -0
- package/dist/modules/workspace/project-session.mjs +18 -0
- package/dist/modules/workspace/project-session.mjs.map +7 -0
- package/dist/modules/workspace/render-resize-sync.mjs +12 -0
- package/dist/modules/workspace/render-resize-sync.mjs.map +7 -0
- package/dist/modules/workspace/resident.mjs +16 -0
- package/dist/modules/workspace/resident.mjs.map +7 -0
- package/dist/modules/workspace/resource-open.mjs +34 -0
- package/dist/modules/workspace/resource-open.mjs.map +7 -0
- package/dist/modules/workspace/resource-page.mjs +27 -0
- package/dist/modules/workspace/resource-page.mjs.map +7 -0
- package/dist/modules/workspace/tool-runtime.mjs +14 -0
- package/dist/modules/workspace/tool-runtime.mjs.map +7 -0
- package/dist/modules/workspace/view-trace.mjs +60 -0
- package/dist/modules/workspace/view-trace.mjs.map +7 -0
- package/dist/modules/workspace/workspace-client-connection.mjs +22 -0
- package/dist/modules/workspace/workspace-client-connection.mjs.map +7 -0
- package/dist/modules/workspace/workspace-recovery.mjs +35 -0
- package/dist/modules/workspace/workspace-recovery.mjs.map +7 -0
- package/dist/modules/workspace/workspace-state.mjs +12 -0
- package/dist/modules/workspace/workspace-state.mjs.map +7 -0
- package/dist/modules/workspace-frontend.mjs +17 -0
- package/dist/modules/workspace-frontend.mjs.map +7 -0
- package/dist/viewer/assets/chunk-CilyBKbf.js +1 -0
- package/dist/viewer/assets/core-DSQma37-.js +13 -0
- package/dist/viewer/assets/core-DSQma37-.js.map +1 -0
- package/dist/viewer/assets/css-Bq1BXecw.js +2 -0
- package/dist/viewer/assets/css-Bq1BXecw.js.map +1 -0
- package/dist/viewer/assets/css-CWQWazmX.js +1 -0
- package/dist/viewer/assets/embedded-D4ZDx--W.js +2 -0
- package/dist/viewer/assets/embedded-D4ZDx--W.js.map +1 -0
- package/dist/viewer/assets/engine-javascript-BvokIV9O.js +142 -0
- package/dist/viewer/assets/engine-javascript-BvokIV9O.js.map +1 -0
- package/dist/viewer/assets/github-dark-default-DaDlj-WZ.js +2 -0
- package/dist/viewer/assets/github-dark-default-DaDlj-WZ.js.map +1 -0
- package/dist/viewer/assets/github-light-default-BqhWxAZd.js +2 -0
- package/dist/viewer/assets/github-light-default-BqhWxAZd.js.map +1 -0
- package/dist/viewer/assets/glsl-BJgVnv11.js +2 -0
- package/dist/viewer/assets/glsl-BJgVnv11.js.map +1 -0
- package/dist/viewer/assets/html-AaaHGGyt.js +2 -0
- package/dist/viewer/assets/html-AaaHGGyt.js.map +1 -0
- package/dist/viewer/assets/javascript-BX9W64FE.js +1 -0
- package/dist/viewer/assets/javascript-DQODvD07.js +2 -0
- package/dist/viewer/assets/javascript-DQODvD07.js.map +1 -0
- package/dist/viewer/assets/json-CpcIDpT7.js +2 -0
- package/dist/viewer/assets/json-CpcIDpT7.js.map +1 -0
- package/dist/viewer/assets/json5-Czq4A7dk.js +2 -0
- package/dist/viewer/assets/json5-Czq4A7dk.js.map +1 -0
- package/dist/viewer/assets/jsonc-BXDfCMmu.js +2 -0
- package/dist/viewer/assets/jsonc-BXDfCMmu.js.map +1 -0
- package/dist/viewer/assets/jsx-DAWscEnf.js +2 -0
- package/dist/viewer/assets/jsx-DAWscEnf.js.map +1 -0
- package/dist/viewer/assets/main-C-2CHTN_.js +15 -0
- package/dist/viewer/assets/main-C-2CHTN_.js.map +1 -0
- package/dist/viewer/assets/markdown-Cx1FMNw-.js +2 -0
- package/dist/viewer/assets/markdown-Cx1FMNw-.js.map +1 -0
- package/dist/viewer/assets/panels-entry-Ddhfjgf0.js +46 -0
- package/dist/viewer/assets/panels-entry-Ddhfjgf0.js.map +1 -0
- package/dist/viewer/assets/python-CYPKjWV9.js +2 -0
- package/dist/viewer/assets/python-CYPKjWV9.js.map +1 -0
- package/dist/viewer/assets/rust-0e5cNx_V.js +2 -0
- package/dist/viewer/assets/rust-0e5cNx_V.js.map +1 -0
- package/dist/viewer/assets/scss-B-aKzLbT.js +2 -0
- package/dist/viewer/assets/scss-B-aKzLbT.js.map +1 -0
- package/dist/viewer/assets/shellscript-CpXD-pSm.js +2 -0
- package/dist/viewer/assets/shellscript-CpXD-pSm.js.map +1 -0
- package/dist/viewer/assets/style-ClttNKZk.css +2 -0
- package/dist/viewer/assets/styles-BXozhwiU.js +11 -0
- package/dist/viewer/assets/styles-BXozhwiU.js.map +1 -0
- package/dist/viewer/assets/toml-GmchYTXa.js +2 -0
- package/dist/viewer/assets/toml-GmchYTXa.js.map +1 -0
- package/dist/viewer/assets/tsx-Crj1Bi53.js +2 -0
- package/dist/viewer/assets/tsx-Crj1Bi53.js.map +1 -0
- package/dist/viewer/assets/typescript-xi0cSHCO.js +2 -0
- package/dist/viewer/assets/typescript-xi0cSHCO.js.map +1 -0
- package/dist/viewer/assets/wgsl-BoEPRo9U.js +2 -0
- package/dist/viewer/assets/wgsl-BoEPRo9U.js.map +1 -0
- package/dist/viewer/assets/xml-B8JqQrMD.js +2 -0
- package/dist/viewer/assets/xml-B8JqQrMD.js.map +1 -0
- package/dist/viewer/assets/yaml-DsIB85X9.js +2 -0
- package/dist/viewer/assets/yaml-DsIB85X9.js.map +1 -0
- package/dist/viewer/index.html +15 -0
- package/dist/viewer/panels.js +1 -0
- package/host.pack.json +13 -0
- package/package.json +174 -0
- package/skills/forgeax-view-cli/SKILL.md +74 -0
- package/skills/forgeax-view-start/SKILL.md +202 -0
- package/skills/forgeax-view-start/scripts/start-view.mjs +202 -0
|
@@ -0,0 +1,609 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getLocale,
|
|
3
|
+
subscribeLocale,
|
|
4
|
+
t
|
|
5
|
+
} from "./chunk-XJZEVRYX.mjs";
|
|
6
|
+
import {
|
|
7
|
+
INSPECTOR_ACTIONS
|
|
8
|
+
} from "./chunk-QBHBKOIL.mjs";
|
|
9
|
+
import {
|
|
10
|
+
CollapsibleSection,
|
|
11
|
+
EmptyState,
|
|
12
|
+
FloatingMenu,
|
|
13
|
+
IconButton,
|
|
14
|
+
InspectorFieldControl,
|
|
15
|
+
Menu,
|
|
16
|
+
OverlayRootProvider,
|
|
17
|
+
PanelHeader,
|
|
18
|
+
PropertyRow,
|
|
19
|
+
SearchField,
|
|
20
|
+
Spinner,
|
|
21
|
+
Text,
|
|
22
|
+
Toolbar,
|
|
23
|
+
formatInspectorFieldLabel,
|
|
24
|
+
normalizeInspectorFieldValue,
|
|
25
|
+
resolveInspectorFieldKind,
|
|
26
|
+
useOverlayRoot,
|
|
27
|
+
useWorkspaceClientConnected
|
|
28
|
+
} from "./chunk-NJH2OJFC.mjs";
|
|
29
|
+
import {
|
|
30
|
+
createWorkspaceObservation,
|
|
31
|
+
createWorkspaceStateReader
|
|
32
|
+
} from "./chunk-FJM6WWIY.mjs";
|
|
33
|
+
import {
|
|
34
|
+
jsonUnchanged
|
|
35
|
+
} from "./chunk-32GD5LL6.mjs";
|
|
36
|
+
|
|
37
|
+
// packages/view-plugin-inspector/src/ui/mount.tsx
|
|
38
|
+
import { createRoot } from "react-dom/client";
|
|
39
|
+
|
|
40
|
+
// packages/view-plugin-inspector/src/ui/InspectorPanel.tsx
|
|
41
|
+
import {
|
|
42
|
+
Box,
|
|
43
|
+
Camera,
|
|
44
|
+
Check,
|
|
45
|
+
CircleUserRound,
|
|
46
|
+
Copy,
|
|
47
|
+
Crosshair,
|
|
48
|
+
Focus,
|
|
49
|
+
Hexagon,
|
|
50
|
+
Layers,
|
|
51
|
+
Lightbulb,
|
|
52
|
+
Maximize2,
|
|
53
|
+
Minimize2,
|
|
54
|
+
MoreHorizontal,
|
|
55
|
+
MousePointer2,
|
|
56
|
+
Move3d,
|
|
57
|
+
SlidersHorizontal
|
|
58
|
+
} from "lucide-react";
|
|
59
|
+
import {
|
|
60
|
+
useEffect,
|
|
61
|
+
useMemo,
|
|
62
|
+
useRef,
|
|
63
|
+
useState,
|
|
64
|
+
useSyncExternalStore as useSyncExternalStore2
|
|
65
|
+
} from "react";
|
|
66
|
+
import { createPortal } from "react-dom";
|
|
67
|
+
|
|
68
|
+
// packages/view-plugin-inspector/src/i18n/useTranslation.ts
|
|
69
|
+
import { useCallback, useSyncExternalStore } from "react";
|
|
70
|
+
function useTranslation() {
|
|
71
|
+
const locale = useSyncExternalStore(subscribeLocale, getLocale, getLocale);
|
|
72
|
+
const t2 = useCallback(
|
|
73
|
+
(key, vars) => t(key, vars),
|
|
74
|
+
[locale]
|
|
75
|
+
);
|
|
76
|
+
return { t: t2, locale };
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// packages/view-plugin-inspector/src/ui/mockInspector.ts
|
|
80
|
+
var MOCK_INSPECTOR_BY_ID = {
|
|
81
|
+
ground: {
|
|
82
|
+
id: "ground",
|
|
83
|
+
name: "Ground",
|
|
84
|
+
badge: "Mesh",
|
|
85
|
+
components: [
|
|
86
|
+
{
|
|
87
|
+
name: "Transform",
|
|
88
|
+
icon: "move3d",
|
|
89
|
+
category: "all",
|
|
90
|
+
fields: [
|
|
91
|
+
{ key: "position", label: "Position", kind: "vector3", value: { x: 0, y: 0, z: 0 } },
|
|
92
|
+
{ key: "rotation", label: "Rotation", kind: "vector3", value: { x: 0, y: 0, z: 0 } },
|
|
93
|
+
{ key: "scale", label: "Scale", kind: "vector3", value: { x: 10, y: 0.2, z: 8 } }
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: "MeshFilter",
|
|
98
|
+
icon: "box",
|
|
99
|
+
category: "type",
|
|
100
|
+
fields: [{ key: "mesh", label: "Mesh", kind: "asset", value: "Plane" }]
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: "MeshRenderer",
|
|
104
|
+
icon: "layers",
|
|
105
|
+
category: "capability",
|
|
106
|
+
fields: [
|
|
107
|
+
{ key: "material", label: "Material 0", kind: "asset", value: "Ground Material" },
|
|
108
|
+
{ key: "castShadows", label: "Cast Shadows", kind: "bool", value: true },
|
|
109
|
+
{ key: "receiveShadows", label: "Receive Shadows", kind: "bool", value: true }
|
|
110
|
+
]
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
name: "Collider",
|
|
114
|
+
icon: "hexagon",
|
|
115
|
+
category: "capability",
|
|
116
|
+
fields: [
|
|
117
|
+
{ key: "shape", label: "Shape", kind: "enum", value: "Box", options: ["Box", "Sphere", "Capsule", "Mesh"] },
|
|
118
|
+
{ key: "center", label: "Center", kind: "vector3", value: { x: 0, y: 0, z: 0 } },
|
|
119
|
+
{ key: "isTrigger", label: "Is Trigger", kind: "bool", value: false }
|
|
120
|
+
]
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
"red-box": {
|
|
125
|
+
id: "red-box",
|
|
126
|
+
name: "RedBox",
|
|
127
|
+
badge: "Mesh",
|
|
128
|
+
components: [
|
|
129
|
+
{
|
|
130
|
+
name: "Transform",
|
|
131
|
+
icon: "move3d",
|
|
132
|
+
category: "all",
|
|
133
|
+
fields: [
|
|
134
|
+
{
|
|
135
|
+
key: "position",
|
|
136
|
+
label: "Position",
|
|
137
|
+
kind: "vector3",
|
|
138
|
+
value: { x: 0, y: 0.5, z: 2.4 }
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
key: "rotation",
|
|
142
|
+
label: "Rotation",
|
|
143
|
+
kind: "vector3",
|
|
144
|
+
value: { x: 0, y: 45, z: 0 }
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
key: "scale",
|
|
148
|
+
label: "Scale",
|
|
149
|
+
kind: "vector3",
|
|
150
|
+
value: { x: 1, y: 1, z: 1 }
|
|
151
|
+
}
|
|
152
|
+
]
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
name: "MeshFilter",
|
|
156
|
+
icon: "box",
|
|
157
|
+
category: "type",
|
|
158
|
+
fields: [{ key: "mesh", label: "Mesh", kind: "asset", value: "Cube" }]
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
name: "MeshRenderer",
|
|
162
|
+
icon: "layers",
|
|
163
|
+
category: "capability",
|
|
164
|
+
fields: [
|
|
165
|
+
{ key: "material", label: "Material 0", kind: "asset", value: "Red Material" },
|
|
166
|
+
{ key: "castShadows", label: "Cast Shadows", kind: "bool", value: true }
|
|
167
|
+
]
|
|
168
|
+
}
|
|
169
|
+
]
|
|
170
|
+
},
|
|
171
|
+
player: {
|
|
172
|
+
id: "player",
|
|
173
|
+
name: "Player",
|
|
174
|
+
badge: "Character",
|
|
175
|
+
components: [
|
|
176
|
+
{
|
|
177
|
+
name: "Transform",
|
|
178
|
+
icon: "move3d",
|
|
179
|
+
category: "all",
|
|
180
|
+
fields: [
|
|
181
|
+
{
|
|
182
|
+
key: "position",
|
|
183
|
+
label: "Position",
|
|
184
|
+
kind: "vector3",
|
|
185
|
+
value: { x: -1.2, y: 0, z: 0 }
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
key: "rotation",
|
|
189
|
+
label: "Rotation",
|
|
190
|
+
kind: "vector3",
|
|
191
|
+
value: { x: 0, y: 0, z: 0 }
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
key: "scale",
|
|
195
|
+
label: "Scale",
|
|
196
|
+
kind: "vector3",
|
|
197
|
+
value: { x: 1, y: 1, z: 1 }
|
|
198
|
+
}
|
|
199
|
+
]
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
name: "CharacterController",
|
|
203
|
+
icon: "user",
|
|
204
|
+
category: "capability",
|
|
205
|
+
fields: [
|
|
206
|
+
{ key: "speed", label: "Move Speed", kind: "number", value: 6 },
|
|
207
|
+
{ key: "jumpHeight", label: "Jump Height", kind: "number", value: 1.4 },
|
|
208
|
+
{ key: "enabled", label: "Enabled", kind: "bool", value: true }
|
|
209
|
+
]
|
|
210
|
+
}
|
|
211
|
+
]
|
|
212
|
+
},
|
|
213
|
+
sun: {
|
|
214
|
+
id: "sun",
|
|
215
|
+
name: "Sun",
|
|
216
|
+
badge: "Light",
|
|
217
|
+
components: [
|
|
218
|
+
{
|
|
219
|
+
name: "Transform",
|
|
220
|
+
icon: "move3d",
|
|
221
|
+
category: "all",
|
|
222
|
+
fields: [
|
|
223
|
+
{ key: "rotation", label: "Rotation", kind: "vector3", value: { x: 50, y: -30, z: 0 } }
|
|
224
|
+
]
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
name: "Light",
|
|
228
|
+
icon: "sun",
|
|
229
|
+
category: "type",
|
|
230
|
+
fields: [
|
|
231
|
+
{ key: "type", label: "Type", kind: "enum", value: "Directional", options: ["Directional", "Point", "Spot"] },
|
|
232
|
+
{ key: "color", label: "Color", kind: "color", value: "#fff4d6" },
|
|
233
|
+
{ key: "intensity", label: "Intensity", kind: "number", value: 3.2 },
|
|
234
|
+
{ key: "castShadows", label: "Cast Shadows", kind: "bool", value: true }
|
|
235
|
+
]
|
|
236
|
+
}
|
|
237
|
+
]
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
// packages/view-plugin-inspector/src/inspection.mjs
|
|
242
|
+
function resolveObjectInspectorEntity(primary, { demo = false, mockById = null } = {}) {
|
|
243
|
+
if (!primary?.entityId) return null;
|
|
244
|
+
if (demo && mockById?.[primary.entityId]) return mockById[primary.entityId];
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
function inspectorEntityFromInspection(inspection) {
|
|
248
|
+
if (!inspection?.entityId || !Array.isArray(inspection.components)) return null;
|
|
249
|
+
return {
|
|
250
|
+
id: inspection.entityId,
|
|
251
|
+
name: inspection.name ?? (inspection.entity === void 0 ? inspection.entityId : `Entity ${inspection.entity}`),
|
|
252
|
+
badge: "Entity",
|
|
253
|
+
components: inspection.components.map((component) => ({
|
|
254
|
+
name: component.name,
|
|
255
|
+
icon: "box",
|
|
256
|
+
category: "all",
|
|
257
|
+
fields: Object.entries(component.fields ?? {}).map(([key, schema]) => {
|
|
258
|
+
const rawValue = component.values?.[key];
|
|
259
|
+
const kind = resolveInspectorFieldKind(schema, rawValue);
|
|
260
|
+
return {
|
|
261
|
+
key,
|
|
262
|
+
label: formatInspectorFieldLabel(key),
|
|
263
|
+
kind,
|
|
264
|
+
value: normalizeInspectorFieldValue(rawValue, kind)
|
|
265
|
+
};
|
|
266
|
+
})
|
|
267
|
+
}))
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// packages/view-plugin-inspector/src/ui/InspectorPanel.tsx
|
|
272
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
273
|
+
function inspectionMatchesSelection(inspection, primary, target) {
|
|
274
|
+
if (!inspection || !primary?.entityId || !target?.targetId) return false;
|
|
275
|
+
return inspection.entityId === primary.entityId && inspection.targetId === target.targetId && inspection.generation === target.generation;
|
|
276
|
+
}
|
|
277
|
+
function componentIcon(component, size = 13) {
|
|
278
|
+
const props = { size, strokeWidth: 1.7 };
|
|
279
|
+
if (component.name === "Transform") return /* @__PURE__ */ jsx(Move3d, { ...props });
|
|
280
|
+
if (component.name === "Light") return /* @__PURE__ */ jsx(Lightbulb, { ...props });
|
|
281
|
+
if (component.name === "Camera") return /* @__PURE__ */ jsx(Camera, { ...props });
|
|
282
|
+
if (component.name.includes("Renderer")) return /* @__PURE__ */ jsx(Layers, { ...props });
|
|
283
|
+
if (component.name.includes("Body") || component.name.includes("Collider")) return /* @__PURE__ */ jsx(Hexagon, { ...props });
|
|
284
|
+
if (component.name.includes("Character")) return /* @__PURE__ */ jsx(CircleUserRound, { ...props });
|
|
285
|
+
return /* @__PURE__ */ jsx(Box, { ...props });
|
|
286
|
+
}
|
|
287
|
+
function InspectorContextMenu({ state, close }) {
|
|
288
|
+
const overlayRoot = useOverlayRoot();
|
|
289
|
+
const { t: t2 } = useTranslation();
|
|
290
|
+
useEffect(() => {
|
|
291
|
+
const dismiss = () => close();
|
|
292
|
+
const escape = (event) => event.key === "Escape" && close();
|
|
293
|
+
window.addEventListener("pointerdown", dismiss);
|
|
294
|
+
window.addEventListener("keydown", escape);
|
|
295
|
+
return () => {
|
|
296
|
+
window.removeEventListener("pointerdown", dismiss);
|
|
297
|
+
window.removeEventListener("keydown", escape);
|
|
298
|
+
};
|
|
299
|
+
}, [close]);
|
|
300
|
+
return createPortal(
|
|
301
|
+
/* @__PURE__ */ jsx(
|
|
302
|
+
"div",
|
|
303
|
+
{
|
|
304
|
+
className: "insp-context-menu fx-ui",
|
|
305
|
+
"data-action": INSPECTOR_ACTIONS.showContextMenu,
|
|
306
|
+
style: {
|
|
307
|
+
left: Math.max(8, Math.min(state.x, window.innerWidth - 238)),
|
|
308
|
+
top: Math.max(8, Math.min(state.y, window.innerHeight - 300))
|
|
309
|
+
},
|
|
310
|
+
onPointerDown: (event) => event.stopPropagation(),
|
|
311
|
+
onContextMenu: (event) => event.preventDefault(),
|
|
312
|
+
children: /* @__PURE__ */ jsx(
|
|
313
|
+
Menu,
|
|
314
|
+
{
|
|
315
|
+
label: t2("inspector.contextMenu"),
|
|
316
|
+
items: state.items.map((item) => {
|
|
317
|
+
if (item.kind === "separator") return { type: "separator" };
|
|
318
|
+
if (item.kind === "title") return { type: "title", label: item.label };
|
|
319
|
+
return {
|
|
320
|
+
id: item.id,
|
|
321
|
+
label: item.label,
|
|
322
|
+
icon: item.forge ? /* @__PURE__ */ jsx("span", { className: "insp-menu-forge", children: item.icon }) : item.icon,
|
|
323
|
+
disabled: item.disabled,
|
|
324
|
+
danger: item.danger,
|
|
325
|
+
onSelect: () => {
|
|
326
|
+
item.action();
|
|
327
|
+
close();
|
|
328
|
+
}
|
|
329
|
+
};
|
|
330
|
+
})
|
|
331
|
+
}
|
|
332
|
+
)
|
|
333
|
+
}
|
|
334
|
+
),
|
|
335
|
+
overlayRoot ?? document.body
|
|
336
|
+
);
|
|
337
|
+
}
|
|
338
|
+
function InspectorBody({ source, focus }) {
|
|
339
|
+
const { t: t2 } = useTranslation();
|
|
340
|
+
const name = source.name;
|
|
341
|
+
const components = useMemo(() => structuredClone(source.components), [source]);
|
|
342
|
+
const [collapsed, setCollapsed] = useState(/* @__PURE__ */ new Set());
|
|
343
|
+
const [query, setQuery] = useState("");
|
|
344
|
+
const [settingsOpen, setSettingsOpen] = useState(false);
|
|
345
|
+
const [settingsMenuAnchor, setSettingsMenuAnchor] = useState(null);
|
|
346
|
+
const settingsButtonRef = useRef(null);
|
|
347
|
+
const [copied, setCopied] = useState(false);
|
|
348
|
+
const [contextMenu, setContextMenu] = useState(null);
|
|
349
|
+
const sectionRefs = useRef({});
|
|
350
|
+
useEffect(() => {
|
|
351
|
+
if (!settingsOpen) setSettingsMenuAnchor(null);
|
|
352
|
+
}, [settingsOpen]);
|
|
353
|
+
const toggleSettingsMenu = () => {
|
|
354
|
+
if (settingsOpen) {
|
|
355
|
+
setSettingsOpen(false);
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
const rect = settingsButtonRef.current?.getBoundingClientRect();
|
|
359
|
+
if (rect) setSettingsMenuAnchor(rect);
|
|
360
|
+
setSettingsOpen(true);
|
|
361
|
+
};
|
|
362
|
+
const showContext = (event, items) => {
|
|
363
|
+
event.preventDefault();
|
|
364
|
+
event.stopPropagation();
|
|
365
|
+
setSettingsOpen(false);
|
|
366
|
+
setContextMenu({ x: event.clientX, y: event.clientY, items });
|
|
367
|
+
};
|
|
368
|
+
const componentMenu = (component) => [
|
|
369
|
+
{ kind: "title", label: component.name },
|
|
370
|
+
{ kind: "item", id: "copy", label: t2("inspector.menu.copyComponentJson"), icon: /* @__PURE__ */ jsx(Copy, { size: 14 }), action: () => void navigator.clipboard?.writeText(JSON.stringify({ [component.name]: component.fields }, null, 2)) }
|
|
371
|
+
];
|
|
372
|
+
const fieldMenu = (component, field) => [
|
|
373
|
+
{ kind: "title", label: `${component.name}.${field.label}` },
|
|
374
|
+
{ kind: "item", id: "copy-value", label: t2("inspector.menu.copyValue"), icon: /* @__PURE__ */ jsx(Copy, { size: 14 }), action: () => void navigator.clipboard?.writeText(JSON.stringify(field.value)) }
|
|
375
|
+
];
|
|
376
|
+
const shownComponents = useMemo(() => {
|
|
377
|
+
const text = query.trim().toLowerCase();
|
|
378
|
+
return components.map((component) => ({
|
|
379
|
+
...component,
|
|
380
|
+
fields: component.fields.filter((field) => !text || component.name.toLowerCase().includes(text) || field.label.toLowerCase().includes(text) || field.key.toLowerCase().includes(text))
|
|
381
|
+
})).filter((component) => !text || component.name.toLowerCase().includes(text) || component.fields.length > 0);
|
|
382
|
+
}, [components, query]);
|
|
383
|
+
const headerIcon = source.badge === "Light" ? /* @__PURE__ */ jsx(Lightbulb, { size: 15 }) : source.badge === "Character" ? /* @__PURE__ */ jsx(CircleUserRound, { size: 15 }) : /* @__PURE__ */ jsx(Box, { size: 15 });
|
|
384
|
+
return /* @__PURE__ */ jsxs("div", { className: "fx-inspector__body", children: [
|
|
385
|
+
/* @__PURE__ */ jsx(
|
|
386
|
+
PanelHeader,
|
|
387
|
+
{
|
|
388
|
+
className: "insp-header",
|
|
389
|
+
onContextMenu: (event) => showContext(event, [
|
|
390
|
+
{ kind: "title", label: name },
|
|
391
|
+
{ kind: "item", id: "focus", label: t2("inspector.menu.focusViewport"), icon: /* @__PURE__ */ jsx(Focus, { size: 14 }), action: () => focus?.(), disabled: !focus },
|
|
392
|
+
{ kind: "item", id: "copy", label: t2("inspector.menu.copyObjectJson"), icon: /* @__PURE__ */ jsx(Copy, { size: 14 }), action: () => void navigator.clipboard?.writeText(JSON.stringify({ name, components }, null, 2)) }
|
|
393
|
+
]),
|
|
394
|
+
start: /* @__PURE__ */ jsxs("span", { className: "insp-header-identity", children: [
|
|
395
|
+
/* @__PURE__ */ jsx("span", { className: "tico", children: headerIcon }),
|
|
396
|
+
/* @__PURE__ */ jsx("span", { className: "insp-header-copy", children: /* @__PURE__ */ jsx(Text, { as: "span", variant: "label", className: "insp-header-name", title: name, children: name }) })
|
|
397
|
+
] }),
|
|
398
|
+
end: /* @__PURE__ */ jsxs("span", { className: "insp-header-end", children: [
|
|
399
|
+
source.badge ? /* @__PURE__ */ jsx("span", { className: "badge", title: source.badge, children: source.badge }) : null,
|
|
400
|
+
/* @__PURE__ */ jsx(IconButton, { "data-action": INSPECTOR_ACTIONS.focus, onClick: focus, disabled: !focus, label: t2("inspector.focusObject"), icon: /* @__PURE__ */ jsx(Crosshair, { size: 15 }), variant: "quiet", size: "compact" }),
|
|
401
|
+
/* @__PURE__ */ jsx(IconButton, { "data-action": INSPECTOR_ACTIONS.copyEntity, label: t2("inspector.copyJson"), icon: copied ? /* @__PURE__ */ jsx(Check, { size: 15 }) : /* @__PURE__ */ jsx(Copy, { size: 15 }), variant: "quiet", size: "compact", onClick: () => {
|
|
402
|
+
void navigator.clipboard?.writeText(JSON.stringify({ name, components }, null, 2));
|
|
403
|
+
setCopied(true);
|
|
404
|
+
window.setTimeout(() => setCopied(false), 1e3);
|
|
405
|
+
} })
|
|
406
|
+
] })
|
|
407
|
+
}
|
|
408
|
+
),
|
|
409
|
+
/* @__PURE__ */ jsxs(Toolbar, { className: "insp-toolbar", children: [
|
|
410
|
+
/* @__PURE__ */ jsx(SearchField, { "data-testid": "insp-search", "data-action": INSPECTOR_ACTIONS.search, value: query, onChange: (event) => setQuery(event.target.value), onClear: () => setQuery(""), placeholder: t2("inspector.searchPlaceholder"), label: t2("inspector.searchLabel") }),
|
|
411
|
+
/* @__PURE__ */ jsx(IconButton, { ref: settingsButtonRef, className: settingsOpen ? "is-active" : void 0, "data-testid": "insp-settings", label: t2("inspector.displaySettings"), icon: /* @__PURE__ */ jsx(SlidersHorizontal, { size: 15 }), variant: "secondary", size: "compact", onClick: toggleSettingsMenu })
|
|
412
|
+
] }),
|
|
413
|
+
/* @__PURE__ */ jsxs("div", { className: "insp-scroll", "data-testid": "insp-scroll", children: [
|
|
414
|
+
/* @__PURE__ */ jsxs("div", { className: "dp-comp", children: [
|
|
415
|
+
/* @__PURE__ */ jsx("div", { className: "ch", children: /* @__PURE__ */ jsx(Text, { as: "span", variant: "caption", tone: "muted", children: t2("inspector.components") }) }),
|
|
416
|
+
components.map((component) => /* @__PURE__ */ jsxs("div", { role: "button", tabIndex: 0, className: "comp-row", "data-testid": `insp-comprow-${component.name}`, onClick: () => {
|
|
417
|
+
setCollapsed((current) => {
|
|
418
|
+
const next = new Set(current);
|
|
419
|
+
next.delete(component.name);
|
|
420
|
+
return next;
|
|
421
|
+
});
|
|
422
|
+
sectionRefs.current[component.name]?.scrollIntoView({ behavior: "smooth", block: "start" });
|
|
423
|
+
}, onContextMenu: (event) => showContext(event, componentMenu(component)), children: [
|
|
424
|
+
/* @__PURE__ */ jsx("span", { className: "ci", children: componentIcon(component) }),
|
|
425
|
+
/* @__PURE__ */ jsx("span", { className: "comp-name", children: component.name })
|
|
426
|
+
] }, component.name))
|
|
427
|
+
] }),
|
|
428
|
+
/* @__PURE__ */ jsx("div", { className: "dp-body", children: shownComponents.length === 0 ? /* @__PURE__ */ jsx(EmptyState, { className: "no-match", title: t2("inspector.noMatchTitle"), description: t2("inspector.noMatchDescription") }) : shownComponents.map((component) => {
|
|
429
|
+
const isCollapsed = collapsed.has(component.name) && !query;
|
|
430
|
+
const category = component.category === "all" ? "dim-all" : component.category === "capability" ? "dim-cap" : "dim-type";
|
|
431
|
+
return /* @__PURE__ */ jsx("div", { className: `cat ${category}`, ref: (element) => {
|
|
432
|
+
sectionRefs.current[component.name] = element;
|
|
433
|
+
}, onContextMenu: (event) => showContext(event, componentMenu(component)), children: /* @__PURE__ */ jsx(
|
|
434
|
+
CollapsibleSection,
|
|
435
|
+
{
|
|
436
|
+
open: !isCollapsed,
|
|
437
|
+
onOpenChange: (open) => setCollapsed((current) => {
|
|
438
|
+
const next = new Set(current);
|
|
439
|
+
if (open) next.delete(component.name);
|
|
440
|
+
else next.add(component.name);
|
|
441
|
+
return next;
|
|
442
|
+
}),
|
|
443
|
+
triggerProps: { "data-action": INSPECTOR_ACTIONS.toggleComponent },
|
|
444
|
+
title: /* @__PURE__ */ jsxs("span", { className: "cat-title", children: [
|
|
445
|
+
/* @__PURE__ */ jsx("span", { className: "cat-icon", children: componentIcon(component) }),
|
|
446
|
+
/* @__PURE__ */ jsx("span", { children: component.name })
|
|
447
|
+
] }),
|
|
448
|
+
trailing: /* @__PURE__ */ jsxs("span", { className: "cacts", children: [
|
|
449
|
+
/* @__PURE__ */ jsx(IconButton, { className: "cact", "data-action": INSPECTOR_ACTIONS.copyComponent, label: t2("inspector.menu.copyComponentJson"), icon: /* @__PURE__ */ jsx(Copy, { size: 13 }), variant: "quiet", size: "compact", onClick: (event) => {
|
|
450
|
+
event.stopPropagation();
|
|
451
|
+
void navigator.clipboard?.writeText(JSON.stringify(component, null, 2));
|
|
452
|
+
} }),
|
|
453
|
+
/* @__PURE__ */ jsx(IconButton, { className: "cact more", label: t2("inspector.more"), icon: /* @__PURE__ */ jsx(MoreHorizontal, { size: 14 }), variant: "quiet", size: "compact", onClick: (event) => showContext(event, componentMenu(component)) })
|
|
454
|
+
] }),
|
|
455
|
+
children: /* @__PURE__ */ jsx("div", { className: "cat-fields", children: component.fields.length === 0 ? /* @__PURE__ */ jsx(EmptyState, { className: "no-match", title: t2("inspector.noMatchTitle"), description: t2("inspector.noMatchComponent") }) : component.fields.map((field) => /* @__PURE__ */ jsx("div", { className: "f-row-wrap", "data-testid": `insp-field-${component.name}-${field.key}`, onContextMenu: (event) => {
|
|
456
|
+
event.stopPropagation();
|
|
457
|
+
showContext(event, fieldMenu(component, field));
|
|
458
|
+
}, children: /* @__PURE__ */ jsx(PropertyRow, { className: "f-row", label: /* @__PURE__ */ jsx("span", { title: field.key, children: field.label }), children: /* @__PURE__ */ jsx(InspectorFieldControl, { field }) }) }, field.key)) })
|
|
459
|
+
}
|
|
460
|
+
) }, component.name);
|
|
461
|
+
}) })
|
|
462
|
+
] }),
|
|
463
|
+
/* @__PURE__ */ jsx(
|
|
464
|
+
FloatingMenu,
|
|
465
|
+
{
|
|
466
|
+
open: Boolean(settingsMenuAnchor && settingsOpen),
|
|
467
|
+
anchorRect: settingsMenuAnchor,
|
|
468
|
+
onClose: () => setSettingsOpen(false),
|
|
469
|
+
ignorePointerWithin: [settingsButtonRef],
|
|
470
|
+
containerProps: { onPointerDown: (event) => event.stopPropagation() },
|
|
471
|
+
children: /* @__PURE__ */ jsx("div", { className: "fx-insp-menu", children: /* @__PURE__ */ jsx(Menu, { label: t2("inspector.displaySettings"), items: [
|
|
472
|
+
{ type: "title", label: t2("inspector.displaySettings") },
|
|
473
|
+
{ id: "expand", label: t2("inspector.expandAll"), buttonProps: { "data-action": INSPECTOR_ACTIONS.expandAll }, icon: /* @__PURE__ */ jsx(Maximize2, { size: 14 }), onSelect: () => {
|
|
474
|
+
setCollapsed(/* @__PURE__ */ new Set());
|
|
475
|
+
setSettingsOpen(false);
|
|
476
|
+
} },
|
|
477
|
+
{ id: "collapse", label: t2("inspector.collapseAll"), buttonProps: { "data-action": INSPECTOR_ACTIONS.collapseAll }, icon: /* @__PURE__ */ jsx(Minimize2, { size: 14 }), onSelect: () => {
|
|
478
|
+
setCollapsed(new Set(components.map((component) => component.name)));
|
|
479
|
+
setSettingsOpen(false);
|
|
480
|
+
} }
|
|
481
|
+
] }) })
|
|
482
|
+
}
|
|
483
|
+
),
|
|
484
|
+
contextMenu ? /* @__PURE__ */ jsx(InspectorContextMenu, { state: contextMenu, close: () => setContextMenu(null) }) : null
|
|
485
|
+
] });
|
|
486
|
+
}
|
|
487
|
+
function InspectorPanel(props) {
|
|
488
|
+
const { t: t2 } = useTranslation();
|
|
489
|
+
const reader = useMemo(() => createWorkspaceStateReader(props.client), [props.client]);
|
|
490
|
+
const workspace = useSyncExternalStore2(
|
|
491
|
+
reader.subscribe,
|
|
492
|
+
() => reader.getSnapshot(),
|
|
493
|
+
() => reader.getSnapshot()
|
|
494
|
+
);
|
|
495
|
+
const primary = workspace?.sceneSelection?.primary ?? null;
|
|
496
|
+
const target = workspace?.preview?.target;
|
|
497
|
+
const connected = useWorkspaceClientConnected(props.demo ? void 0 : props.client);
|
|
498
|
+
const [inspection, setInspection] = useState(null);
|
|
499
|
+
const [loading, setLoading] = useState(false);
|
|
500
|
+
const [failure, setFailure] = useState(null);
|
|
501
|
+
const lastDisplaySourceRef = useRef(null);
|
|
502
|
+
const selectionKey = primary?.entityId && target?.targetId ? `${primary.entityId}:${target.targetId}:${target.generation ?? ""}` : null;
|
|
503
|
+
useEffect(() => {
|
|
504
|
+
if (!primary?.entityId) lastDisplaySourceRef.current = null;
|
|
505
|
+
}, [primary?.entityId]);
|
|
506
|
+
useEffect(() => {
|
|
507
|
+
if (props.demo || !props.client || !connected || !primary?.entityId || !target?.targetId) {
|
|
508
|
+
setLoading(false);
|
|
509
|
+
return;
|
|
510
|
+
}
|
|
511
|
+
const observation = createWorkspaceObservation(reader, (current) => current?.sceneSelection?.primary?.entityId === primary.entityId && current?.preview?.target?.targetId === target.targetId && current?.preview?.target?.generation === target.generation);
|
|
512
|
+
const { signal } = observation;
|
|
513
|
+
let timer;
|
|
514
|
+
setLoading(true);
|
|
515
|
+
setFailure(null);
|
|
516
|
+
const refresh = async () => {
|
|
517
|
+
if (signal.aborted) return;
|
|
518
|
+
try {
|
|
519
|
+
const result = await props.client.call("entity.inspect", { entityId: primary.entityId, targetId: target.targetId, targetGeneration: target.generation }, { signal });
|
|
520
|
+
if (signal.aborted) return;
|
|
521
|
+
const source = inspectorEntityFromInspection(result);
|
|
522
|
+
setInspection((current) => {
|
|
523
|
+
const next = { entityId: primary.entityId, targetId: target.targetId, generation: target.generation, source };
|
|
524
|
+
if (current && current.entityId === next.entityId && current.targetId === next.targetId && current.generation === next.generation && jsonUnchanged(current.source, next.source)) return current;
|
|
525
|
+
return next;
|
|
526
|
+
});
|
|
527
|
+
setFailure(null);
|
|
528
|
+
setLoading(false);
|
|
529
|
+
} catch (error) {
|
|
530
|
+
if (signal.aborted) return;
|
|
531
|
+
setInspection((current) => {
|
|
532
|
+
if (current == null) return current;
|
|
533
|
+
return null;
|
|
534
|
+
});
|
|
535
|
+
setFailure(String(error));
|
|
536
|
+
setLoading(false);
|
|
537
|
+
}
|
|
538
|
+
if (!signal.aborted) timer = setTimeout(refresh, 500);
|
|
539
|
+
};
|
|
540
|
+
void refresh();
|
|
541
|
+
return () => {
|
|
542
|
+
observation.dispose();
|
|
543
|
+
clearTimeout(timer);
|
|
544
|
+
};
|
|
545
|
+
}, [props.client, props.demo, connected, selectionKey, reader, workspace]);
|
|
546
|
+
const inSync = inspectionMatchesSelection(inspection, primary, target);
|
|
547
|
+
const syncedSource = inSync ? inspection?.source ?? null : null;
|
|
548
|
+
useEffect(() => {
|
|
549
|
+
if (syncedSource) lastDisplaySourceRef.current = syncedSource;
|
|
550
|
+
}, [syncedSource]);
|
|
551
|
+
const demoSource = resolveObjectInspectorEntity(primary, { demo: true, mockById: MOCK_INSPECTOR_BY_ID });
|
|
552
|
+
const hasSelection = Boolean(primary?.entityId);
|
|
553
|
+
const displaySource = props.demo ? demoSource : syncedSource ?? (hasSelection ? lastDisplaySourceRef.current : null);
|
|
554
|
+
const focus = props.client && target && primary?.entityId ? () => {
|
|
555
|
+
void props.client.call("entity.focus", { entityId: primary.entityId, targetId: target.targetId, targetGeneration: target.generation }).catch((error) => setFailure(String(error)));
|
|
556
|
+
} : void 0;
|
|
557
|
+
const showEmpty = props.demo ? !demoSource : !hasSelection || !displaySource && !loading;
|
|
558
|
+
const showLoadingPane = !props.demo && hasSelection && !displaySource && loading;
|
|
559
|
+
const showStaleOverlay = !props.demo && hasSelection && !inSync && loading && Boolean(displaySource);
|
|
560
|
+
const entityIdAttr = inSync ? syncedSource?.id : primary?.entityId ?? displaySource?.id;
|
|
561
|
+
return /* @__PURE__ */ jsx(
|
|
562
|
+
"div",
|
|
563
|
+
{
|
|
564
|
+
className: "fx-inspector fx-ui",
|
|
565
|
+
"data-testid": "panel-inspector",
|
|
566
|
+
"data-view-readonly": "true",
|
|
567
|
+
"data-entity-id": entityIdAttr,
|
|
568
|
+
"data-inspector-loading": showStaleOverlay || showLoadingPane ? "true" : void 0,
|
|
569
|
+
children: showEmpty ? /* @__PURE__ */ jsx(
|
|
570
|
+
EmptyState,
|
|
571
|
+
{
|
|
572
|
+
className: "dp-empty",
|
|
573
|
+
"data-testid": "insp-empty",
|
|
574
|
+
title: t2("inspector.emptyTitle"),
|
|
575
|
+
description: failure ?? t2("inspector.emptyDescription"),
|
|
576
|
+
icon: /* @__PURE__ */ jsx(MousePointer2, {})
|
|
577
|
+
}
|
|
578
|
+
) : showLoadingPane ? /* @__PURE__ */ jsx("div", { className: "fx-inspector__loading-pane", "data-testid": "insp-loading", children: /* @__PURE__ */ jsx(Spinner, { label: t2("inspector.loading") }) }) : displaySource ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
579
|
+
/* @__PURE__ */ jsx(InspectorBody, { source: displaySource, focus }, displaySource.id),
|
|
580
|
+
showStaleOverlay ? /* @__PURE__ */ jsx("div", { className: "fx-inspector__loading-veil", "aria-hidden": true, children: /* @__PURE__ */ jsx(Spinner, { label: t2("inspector.loading") }) }) : null
|
|
581
|
+
] }) : null
|
|
582
|
+
}
|
|
583
|
+
);
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
// packages/view-plugin-inspector/src/ui/inspector.css
|
|
587
|
+
var 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";
|
|
588
|
+
if (typeof document !== "undefined" && !document.querySelector('style[data-forgeax-css="L2RhdGEvaG9tZS9nYWhvdWxpYW8vYWN0aW9ucy1ydW5uZXIvX3dvcmsvZm9yZ2VheC12aWV3L2ZvcmdlYXgtdmlldy9wYWNrYWdlcy92aWV3LXBsdWdpbi1pbnNwZWN0b3Ivc3JjL3VpL2luc3BlY3Rvci5jc3M"]')) {
|
|
589
|
+
const style = document.createElement("style");
|
|
590
|
+
style.dataset.forgeaxCss = "L2RhdGEvaG9tZS9nYWhvdWxpYW8vYWN0aW9ucy1ydW5uZXIvX3dvcmsvZm9yZ2VheC12aWV3L2ZvcmdlYXgtdmlldy9wYWNrYWdlcy92aWV3LXBsdWdpbi1pbnNwZWN0b3Ivc3JjL3VpL2luc3BlY3Rvci5jc3M";
|
|
591
|
+
style.textContent = css;
|
|
592
|
+
document.head.append(style);
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
// packages/view-plugin-inspector/src/ui/mount.tsx
|
|
596
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
597
|
+
async function mountInspectorPanel(props) {
|
|
598
|
+
if (!props.mountElement) throw new TypeError("mountInspectorPanel requires mountElement");
|
|
599
|
+
const root = createRoot(props.mountElement);
|
|
600
|
+
root.render(
|
|
601
|
+
/* @__PURE__ */ jsx2(OverlayRootProvider, { root: props.overlayRoot ?? props.mountElement, children: /* @__PURE__ */ jsx2(InspectorPanel, { client: props.client, demo: props.demo }) })
|
|
602
|
+
);
|
|
603
|
+
return async () => root.unmount();
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
export {
|
|
607
|
+
mountInspectorPanel
|
|
608
|
+
};
|
|
609
|
+
//# sourceMappingURL=chunk-MUOQZPVH.mjs.map
|