@ifc-lite/viewer 1.28.0 → 1.29.0
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/.turbo/turbo-build.log +38 -45
- package/CHANGELOG.md +66 -0
- package/dist/assets/{arrow-CXWhTnNT.js → arrow-fie-E7fe.js} +1 -1
- package/dist/assets/{basketViewActivator-BNRDNuUJ.js → basketViewActivator-BSRgF1Hw.js} +10 -10
- package/dist/assets/{bcf-DCwCuP7n.js → bcf-3uE1MvcT.js} +2 -2
- package/dist/assets/{cesium-CzZn5yVA.js → cesium-DezSO2mp.js} +658 -597
- package/dist/assets/{deflate-DNGgs8Ur.js → deflate-BLlUfw9-.js} +1 -1
- package/dist/assets/drawing-2d-CLn7Mtj8.js +257 -0
- package/dist/assets/{exporters-B9v81gi9.js → exporters-BL6UmxRa.js} +1724 -1533
- package/dist/assets/geometry.worker-DVwFYHTq.js +1 -0
- package/dist/assets/{geotiff-D-YCLS4g.js → geotiff-BydcIud8.js} +12 -12
- package/dist/assets/{ids-CCpq-5d3.js → ids-DFl74rTt.js} +6 -6
- package/dist/assets/{ifc-lite_bg-DbgS5EUA.wasm → ifc-lite_bg-FPffpFK_.wasm} +0 -0
- package/dist/assets/{index-Bgb3_Pu_.js → index-BNTlm2lP.js} +36770 -38098
- package/dist/assets/index-DpoJvkdg.css +1 -0
- package/dist/assets/{index.es-CWfqZyyr.js → index.es-Bk4nLsyS.js} +11 -11
- package/dist/assets/{jpeg-DGOAeUqU.js → jpeg-BvMO8-Tc.js} +1 -1
- package/dist/assets/{jspdf.es.min-XPLU2Wkq.js → jspdf.es.min-BZ_ed66E.js} +5 -5
- package/dist/assets/{lens-C4p1kQ0p.js → lens-DMnqMXpz.js} +1 -1
- package/dist/assets/{lerc-1PMSCHwX.js → lerc-CNnDpLpV.js} +1 -1
- package/dist/assets/{lzw-C65U9lNM.js → lzw-DBaPrGGZ.js} +1 -1
- package/dist/assets/{native-bridge-XxXos6yI.js → native-bridge-DFOoBvTg.js} +6 -3
- package/dist/assets/{packbits-BdMWXC3m.js → packbits-C7uyD2Bi.js} +1 -1
- package/dist/assets/{parser.worker-Ddwo3_06.js → parser.worker-U_PVhLNi.js} +3 -3
- package/dist/assets/{pdf-CRwaZf3s.js → pdf-DlqdjX9e.js} +12 -12
- package/dist/assets/raw-p_2cfl6T.js +1 -0
- package/dist/assets/{sandbox-0sDo3g3m.js → sandbox-0Z2NzeOJ.js} +3446 -2881
- package/dist/assets/{server-client-cTCJ-853.js → server-client-DUMy2mXg.js} +4 -4
- package/dist/assets/{three-CQBzFWY2.js → three-SQm7uqwa.js} +1 -1
- package/dist/assets/{webimage-BtakWX7W.js → webimage-zN-oCabb.js} +1 -1
- package/dist/assets/{xlsx-B1YOg2QB.js → xlsx-N2LbIR1G.js} +10 -10
- package/dist/assets/{zstd-CmwsbxmM.js → zstd-Jk3QKIeb.js} +1 -1
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-Z2M4BF4E.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-35LM35A5.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-I5NKQIWE.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-3R3BCVRR.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-VCOHJNKB.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-44VKZ44M.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-J6BM74AD.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-4LOVZYQ2.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-LYLRYC4L.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-55KTRCCC.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-Z4ERBZFB.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-5AJUPXGZ.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-LBZ34MHQ.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-5EEMCPIO.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-5HZ2G332.js +26 -0
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-5XHUDY37.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-6K4BWAPV.js} +1 -1
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-FC6IYMYF.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-6LZUEMFX.js} +1 -1
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-LOQDTQMX.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-6NPJZ3PS.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-6WMLAJJP.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-A3K5FM7E.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-FB7UV5BI.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-AP7AMWJA.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-U3YGOX3C.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-AZCCS55A.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-PPFUDJN4.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-BXPFAIYZ.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-VXCJOT4W.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-C4NHPSO2.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-DRBPXGI7.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-CJGWLCOV.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-TSGIJVWH.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-E4MSZ45D.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-XR7MN4PJ.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-FCRW2AGG.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-2ZYB3DYT.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-FMWRN5G2.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-5BC2Q3QW.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-FXWI4VL7.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-XU6O4MRS.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-FYQCPFNB.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-L7UE5MMF.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-G46AR6KP.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-AXNBHUAG.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-GS4ZGDWD.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-VXAZXMUX.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-GZABERXA.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-EZSKHVA2.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-H6AHPUMX.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-72KUXMWU.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-IPQQ2USK.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-T3ZGSZKA.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-ITSDUOWL.js} +1 -1
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-KG2GJUJT.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-J6WO2HA5.js} +1 -1
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-IYRGNBSH.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-K3YIAZU7.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-7NQYTTAU.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-K72DPWBT.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-DC3K7YTH.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-LKQXJXNV.js} +1 -1
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-MGPRMLLW.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-LTHJTGXC.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-4M56RRIL.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-LUECBOIT.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-236YIEYT.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-MUI5QV7K.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-XEC656IT.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-OS2CBN2U.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-IH7GXIUB.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-R5DFAOJG.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-X4D5KUN5.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-R7QNYLFY.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-WPD3MB6X.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-RH3WVPDR.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-EYZUSGKM.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-RI3TXBVT.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-ZY2KCIWI.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-RU2T2U4O.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-XR53QRQS.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-SSYRCXAV.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-TM6SYYHO.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-U4VWQPTS.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-GXEQRH2R.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-UHTXIDKA.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-XZBHEBLF.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-V74K6IQF.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-OMUAZ3NM.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-VELRZYUL.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-PQ3V63XF.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-VXS2FTO4.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-PWBQN4GK.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-VZ4ER5HI.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-EARRZPMO.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-WC7WZIXH.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-GF67PEXE.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-WM6AKY6B.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-VBYOXOSM.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-WTIPXHS3.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-IPP3UFGH.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-WZYIA4NB.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-A35GG5WJ.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-XEBZTQHW.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-QOTMLO2T.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-XFWEZBPW.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-NP26LKQA.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-YLWWFMFQ.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-F3WJIFOO.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-YNBY2HFD.js} +1 -1
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-EHC3BDVP.js → cesium@1.142.0/node_modules/cesium/Build/Cesium/Workers/chunk-ZQTDDQLY.js} +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/combineGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createBoxGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createBoxOutlineGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createCircleGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createCircleOutlineGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createCoplanarPolygonGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createCoplanarPolygonOutlineGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createCorridorGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createCorridorOutlineGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createCylinderGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createCylinderOutlineGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createEllipseGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createEllipseOutlineGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createEllipsoidGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createEllipsoidOutlineGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createFrustumGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createFrustumOutlineGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createGroundPolylineGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createPlaneGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createPlaneOutlineGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createPolygonGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createPolygonOutlineGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createPolylineGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createPolylineVolumeGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createPolylineVolumeOutlineGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createRectangleGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createRectangleOutlineGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createSimplePolylineGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createSphereGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createSphereOutlineGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createTaskProcessorWorker.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createVectorTileClampedPolylines.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createVectorTileGeometries.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createVectorTilePoints.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createVectorTilePolygons.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createVectorTilePolylines.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createVerticesFromCesium3DTilesTerrain.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createVerticesFromHeightmap.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createWallGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/createWallOutlineGeometry.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/decodeDraco.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/decodeGoogleEarthEnterprisePacket.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/decodeI3S.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/gaussianSplatSorter.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/gaussianSplatTextureGenerator.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/incrementallyBuildTerrainPicker.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/transcodeKTX2.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/transferTypedArrayTest.js +1 -1
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/upsampleQuantizedTerrainMesh.js +2 -2
- package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +2 -2
- package/dist/index.html +11 -11
- package/package.json +35 -35
- package/src/App.tsx +1 -3
- package/src/components/viewer/BCFPanel.tsx +1 -16
- package/src/components/viewer/ChatPanel.tsx +11 -46
- package/src/components/viewer/HierarchyPanel.tsx +2 -176
- package/src/components/viewer/IDSPanel.tsx +1 -26
- package/src/components/viewer/MainToolbar.tsx +104 -187
- package/src/components/viewer/MobileToolbar.tsx +1 -9
- package/src/components/viewer/PropertiesPanel.tsx +28 -126
- package/src/components/viewer/ScriptPanel.tsx +8 -34
- package/src/components/viewer/Section2DPanel.tsx +32 -1
- package/src/components/viewer/ToolOverlays.tsx +5 -0
- package/src/components/viewer/ViewerLayout.tsx +0 -2
- package/src/components/viewer/ViewportContainer.tsx +71 -42
- package/src/components/viewer/ViewportOverlays.tsx +1 -4
- package/src/components/viewer/tools/SpaceSketchOverlay.tsx +872 -0
- package/src/components/viewer/useGeometryStreaming.ts +0 -2
- package/src/hooks/ingest/federationAlign.ts +7 -0
- package/src/hooks/useConstructionUnderlay.ts +94 -0
- package/src/hooks/useDrawingGeneration.ts +307 -14
- package/src/hooks/useIfcCache.ts +94 -41
- package/src/hooks/useIfcFederation.ts +2 -3
- package/src/hooks/useIfcLoader.ts +10 -1051
- package/src/services/cacheService.ts +9 -25
- package/src/services/desktop-export.ts +2 -59
- package/src/services/file-dialog.ts +8 -142
- package/src/store/constants.ts +23 -0
- package/src/store/index.ts +3 -5
- package/src/store/slices/drawing2DSlice.ts +8 -0
- package/src/store/slices/mutationSlice.ts +21 -0
- package/src/store/slices/uiSlice.ts +1 -0
- package/src/store/slices/visibilitySlice.ts +42 -1
- package/src/store/types.ts +1 -71
- package/src/utils/ifcConfig.ts +0 -12
- package/vite.config.ts +6 -3
- package/DESKTOP_CONTRACT_VERSION +0 -1
- package/dist/assets/drawing-2d-D0dDf6Lh.js +0 -257
- package/dist/assets/event-B0kAzHa-.js +0 -1
- package/dist/assets/geometry.worker-Bpa3115V.js +0 -1
- package/dist/assets/index-BtbXFKsX.css +0 -1
- package/dist/assets/raw-CJgQdyuZ.js +0 -1
- package/dist/assets/tauri-core-stub-D8Fa-u43.js +0 -1
- package/dist/assets/tauri-dialog-stub-r7Wksg7o.js +0 -1
- package/dist/assets/tauri-fs-stub-BdeRC7aK.js +0 -1
- package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-SP35IT73.js +0 -26
- package/src/components/viewer/DesktopEntitlementBanner.tsx +0 -74
- package/src/components/viewer/SettingsPage.tsx +0 -581
- package/src/lib/desktop/desktopEntitlementEvents.ts +0 -39
- package/src/lib/desktop-entitlement.ts +0 -43
- package/src/lib/desktop-product.ts +0 -130
- package/src/lib/platform.ts +0 -23
- package/src/services/desktop-cache.ts +0 -186
- package/src/services/desktop-harness.ts +0 -196
- package/src/services/desktop-logger.ts +0 -20
- package/src/services/desktop-native-metadata.ts +0 -230
- package/src/services/desktop-panel-actions.ts +0 -43
- package/src/services/desktop-preferences.ts +0 -44
- package/src/services/fs-cache.ts +0 -212
- package/src/services/tauri-core-stub.ts +0 -7
- package/src/services/tauri-dialog-stub.ts +0 -7
- package/src/services/tauri-fs-stub.ts +0 -7
- package/src/services/tauri-modules.d.ts +0 -50
- package/src/store/slices/desktopEntitlementSlice.ts +0 -86
- package/src/utils/desktopModelSnapshot.ts +0 -359
- package/src/utils/nativeSpatialDataStore.ts +0 -277
- package/src-tauri/Cargo.toml +0 -29
- package/src-tauri/build.rs +0 -7
- package/src-tauri/capabilities/default.json +0 -18
- package/src-tauri/icons/128x128.png +0 -0
- package/src-tauri/icons/128x128@2x.png +0 -0
- package/src-tauri/icons/32x32.png +0 -0
- package/src-tauri/icons/Square107x107Logo.png +0 -0
- package/src-tauri/icons/Square142x142Logo.png +0 -0
- package/src-tauri/icons/Square150x150Logo.png +0 -0
- package/src-tauri/icons/Square284x284Logo.png +0 -0
- package/src-tauri/icons/Square30x30Logo.png +0 -0
- package/src-tauri/icons/Square310x310Logo.png +0 -0
- package/src-tauri/icons/Square44x44Logo.png +0 -0
- package/src-tauri/icons/Square71x71Logo.png +0 -0
- package/src-tauri/icons/Square89x89Logo.png +0 -0
- package/src-tauri/icons/StoreLogo.png +0 -0
- package/src-tauri/icons/icon.icns +0 -0
- package/src-tauri/icons/icon.ico +0 -0
- package/src-tauri/icons/icon.png +0 -0
- package/src-tauri/src/lib.rs +0 -21
- package/src-tauri/src/main.rs +0 -10
- package/src-tauri/tauri.conf.json +0 -39
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Images/bing_maps_credit.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Images/cesium_credit.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Images/google_earth_credit.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Images/ion-credit.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/airfield.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/airport.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/alcohol-shop.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/america-football.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/art-gallery.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/bakery.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/bank.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/bar.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/baseball.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/basketball.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/beer.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/bicycle.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/building.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/bus.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/cafe.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/camera.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/campsite.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/car.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/cemetery.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/cesium.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/chemist.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/cinema.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/circle-stroked.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/circle.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/city.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/clothing-store.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/college.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/commercial.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/cricket.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/cross.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/dam.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/danger.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/disability.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/dog-park.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/embassy.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/emergency-telephone.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/entrance.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/farm.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/fast-food.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/ferry.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/fire-station.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/fuel.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/garden.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/gift.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/golf.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/grocery.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/hairdresser.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/harbor.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/heart.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/heliport.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/hospital.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/ice-cream.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/industrial.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/land-use.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/laundry.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/library.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/lighthouse.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/lodging.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/logging.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/london-underground.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/marker-stroked.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/marker.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/minefield.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/mobilephone.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/monument.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/museum.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/music.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/oil-well.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/park.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/park2.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/parking-garage.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/parking.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/pharmacy.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/pitch.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/place-of-worship.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/playground.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/police.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/polling-place.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/post.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/prison.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/rail-above.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/rail-light.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/rail-metro.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/rail-underground.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/rail.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/religious-christian.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/religious-jewish.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/religious-muslim.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/restaurant.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/roadblock.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/rocket.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/school.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/scooter.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/shop.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/skiing.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/slaughterhouse.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/soccer.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/square-stroked.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/square.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/star-stroked.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/star.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/suitcase.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/swimming.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/telephone.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/tennis.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/theatre.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/toilets.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/town-hall.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/town.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/triangle-stroked.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/triangle.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/village.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/warehouse.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/waste-basket.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/water.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/wetland.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/maki/zoo.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/moonSmall.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/pin.svg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/waterNormals.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/Textures/waterNormalsSmall.jpg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Assets/approximateTerrainHeights.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/ThirdParty/Workers/package.json +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/ThirdParty/Workers/zip-web-worker.js +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/ThirdParty/basis_transcoder.wasm +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/ThirdParty/draco_decoder.wasm +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/ThirdParty/google-earth-dbroot-parser.js +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/ThirdParty/wasm_splats_bg.wasm +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/ThirdParty/zip-module.wasm +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Animation/Animation.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Animation/lighter.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/BaseLayerPicker/lighter.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/CesiumInspector/CesiumInspector.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/CesiumWidget/CesiumWidget.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/CesiumWidget/lighter.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/FullscreenButton/FullscreenButton.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Geocoder/Geocoder.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Geocoder/lighter.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/azureAerial.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/azureRoads.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/bingAerial.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/bingRoads.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/blueMarble.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/earthAtNight.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/googleContour.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/googleRoadmap.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/googleSatellite.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/googleSatelliteLabels.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/mapboxStreets.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/naturalEarthII.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/openStreetMap.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/sentinel-2.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/stamenToner.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/NavigationHelp/Mouse.svg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/NavigationHelp/MouseLeft.svg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/NavigationHelp/MouseRight.svg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/NavigationHelp/Touch.svg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/NavigationHelp/TouchDrag.svg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/NavigationHelp/TouchRotate.svg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/NavigationHelp/TouchTilt.svg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/NavigationHelp/TouchZoom.svg +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/TerrainProviders/Ellipsoid.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/TimelineIcons.png +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Images/info-loading.gif +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/InfoBox/InfoBox.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/InfoBox/InfoBoxDescription.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/NavigationHelpButton/lighter.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/ProjectionPicker/ProjectionPicker.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/SceneModePicker/SceneModePicker.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/SelectionIndicator/SelectionIndicator.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Timeline/Timeline.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Timeline/lighter.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/VRButton/VRButton.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/Viewer/Viewer.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/VoxelInspector/VoxelInspector.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/lighter.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/lighterShared.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/shared.css +0 -0
- /package/dist/cesium/node_modules/.pnpm/{cesium@1.141.0 → cesium@1.142.0}/node_modules/cesium/Build/Cesium/Widgets/widgets.css +0 -0
|
@@ -21,7 +21,6 @@
|
|
|
21
21
|
import { useEffect, useRef, type MutableRefObject } from 'react';
|
|
22
22
|
import type { Renderer } from '@ifc-lite/renderer';
|
|
23
23
|
import type { MeshData, CoordinateInfo } from '@ifc-lite/geometry';
|
|
24
|
-
import { logToDesktopTerminal } from '@/services/desktop-logger';
|
|
25
24
|
import { toast } from '../ui/toast.js';
|
|
26
25
|
|
|
27
26
|
// Session-scoped flag so the linear-infrastructure hint fires at most once
|
|
@@ -87,7 +86,6 @@ const MAX_VALID_COORD = 10000;
|
|
|
87
86
|
|
|
88
87
|
function traceGeometrySync(message: string): void {
|
|
89
88
|
console.log(`[GeomSync] ${message}`);
|
|
90
|
-
void logToDesktopTerminal('info', `[GeomSync] ${message}`);
|
|
91
89
|
}
|
|
92
90
|
|
|
93
91
|
export function useGeometryStreaming(params: UseGeometryStreamingParams): void {
|
|
@@ -172,6 +172,13 @@ function buildGeorefAlignmentTransform(source: ModelGeoref, reference: ModelGeor
|
|
|
172
172
|
|
|
173
173
|
const yVx = (-refAxis.o * eVx + refAxis.a * nVx) * invRefDenom;
|
|
174
174
|
const yVz = (-refAxis.o * eVz + refAxis.a * nVz) * invRefDenom;
|
|
175
|
+
// NOTE: the refOffset handling is intentionally asymmetric between X and Z and
|
|
176
|
+
// must NOT be "symmetrised". refOffset is subtracted from the FINAL viewer
|
|
177
|
+
// coordinate on every axis. X maps positively (`tx = +xC`), so its offset is
|
|
178
|
+
// folded into xC above. Z maps to the NEGATED north axis (`tz = -yC`), so its
|
|
179
|
+
// offset is applied after the negation, leaving yC offset-free here. This
|
|
180
|
+
// matches alignGeometryAcrossCrs: alignedZ = refWorldZ - refOffset.z with
|
|
181
|
+
// refWorldZ = -ifcYr. Folding -refOffset.z into yC would flip its sign.
|
|
175
182
|
const yC = (-refAxis.o * eC + refAxis.a * nC) * invRefDenom;
|
|
176
183
|
|
|
177
184
|
return {
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Faint plan-cut underlay of building elements (walls/doors/columns ~1.2 m
|
|
7
|
+
* above the storey floor) for the 2D Space Sketch, registered into the same
|
|
8
|
+
* model-metre frame as the room outlines so the user keeps building orientation
|
|
9
|
+
* while editing rooms.
|
|
10
|
+
*
|
|
11
|
+
* The construction projection (the same one the sections canvas uses) runs on
|
|
12
|
+
* render-frame meshes (Y-up, RTC-shifted). For a plan (down = `'y'`) cut,
|
|
13
|
+
* `projectTo2D` yields `(renderX, renderZ)`, and `renderX = ifcX − rtc.x +
|
|
14
|
+
* shift.x`, `renderZ = −ifcY + rtc.y + shift.z`. We invert that back to the
|
|
15
|
+
* room frame `(ifcX, ifcY)` so the underlay overlays the rooms directly.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { useEffect, useRef, useState } from 'react';
|
|
19
|
+
import { Drawing2DGenerator, createSectionConfig } from '@ifc-lite/drawing-2d';
|
|
20
|
+
import type { CoordinateInfo } from '@ifc-lite/geometry';
|
|
21
|
+
import { useViewerStore } from '@/store';
|
|
22
|
+
|
|
23
|
+
export interface UnderlayLine {
|
|
24
|
+
a: [number, number];
|
|
25
|
+
b: [number, number];
|
|
26
|
+
/** Dashed (above-cut / occluded) vs solid (at/below cut). */
|
|
27
|
+
hidden: boolean;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function useConstructionUnderlay(
|
|
31
|
+
enabled: boolean,
|
|
32
|
+
floorElevation: number | null,
|
|
33
|
+
): { lines: UnderlayLine[]; loading: boolean } {
|
|
34
|
+
const geometryResult = useViewerStore((s) => s.geometryResult);
|
|
35
|
+
const [lines, setLines] = useState<UnderlayLine[]>([]);
|
|
36
|
+
const [loading, setLoading] = useState(false);
|
|
37
|
+
const genRef = useRef<Drawing2DGenerator | null>(null);
|
|
38
|
+
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
const meshes = geometryResult?.meshes;
|
|
41
|
+
if (!enabled || floorElevation === null || !meshes || meshes.length === 0) {
|
|
42
|
+
setLines([]);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
let cancelled = false;
|
|
46
|
+
setLoading(true);
|
|
47
|
+
|
|
48
|
+
const coord = geometryResult?.coordinateInfo as CoordinateInfo | undefined;
|
|
49
|
+
const rtc = coord?.wasmRtcOffset ?? { x: 0, y: 0, z: 0 };
|
|
50
|
+
const shift = coord?.originShift ?? { x: 0, y: 0, z: 0 };
|
|
51
|
+
// Plan cut at floor + 1.2 m, in render-frame Y.
|
|
52
|
+
const cutY = floorElevation + 1.2 - rtc.z + shift.y;
|
|
53
|
+
// Inverse of the plan projection → room (ifcX, ifcY) frame.
|
|
54
|
+
const cx = rtc.x - shift.x;
|
|
55
|
+
const cy = rtc.y + shift.z;
|
|
56
|
+
|
|
57
|
+
const config = createSectionConfig('y', cutY, {
|
|
58
|
+
projectionDepth: 1.5,
|
|
59
|
+
projectionBelowDepth: 1.4,
|
|
60
|
+
projectionAboveDepth: 0.8,
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
void (async () => {
|
|
64
|
+
try {
|
|
65
|
+
const gen = genRef.current ?? new Drawing2DGenerator();
|
|
66
|
+
genRef.current = gen;
|
|
67
|
+
await gen.initialize();
|
|
68
|
+
const drawing = await gen.generate(meshes, config, {
|
|
69
|
+
includeProjection: true,
|
|
70
|
+
includeEdges: false,
|
|
71
|
+
includeHiddenLines: false,
|
|
72
|
+
mergeLines: true,
|
|
73
|
+
});
|
|
74
|
+
if (cancelled) return;
|
|
75
|
+
const out: UnderlayLine[] = drawing.lines.map((l) => ({
|
|
76
|
+
a: [l.line.start.x + cx, cy - l.line.start.y] as [number, number],
|
|
77
|
+
b: [l.line.end.x + cx, cy - l.line.end.y] as [number, number],
|
|
78
|
+
hidden: l.visibility === 'hidden',
|
|
79
|
+
}));
|
|
80
|
+
setLines(out);
|
|
81
|
+
} catch {
|
|
82
|
+
if (!cancelled) setLines([]);
|
|
83
|
+
} finally {
|
|
84
|
+
if (!cancelled) setLoading(false);
|
|
85
|
+
}
|
|
86
|
+
})();
|
|
87
|
+
|
|
88
|
+
return () => {
|
|
89
|
+
cancelled = true;
|
|
90
|
+
};
|
|
91
|
+
}, [enabled, floorElevation, geometryResult]);
|
|
92
|
+
|
|
93
|
+
return { lines, loading };
|
|
94
|
+
}
|
|
@@ -18,13 +18,40 @@ import { useCallback, useEffect, useRef, useState } from 'react';
|
|
|
18
18
|
import {
|
|
19
19
|
Drawing2DGenerator,
|
|
20
20
|
createSectionConfig,
|
|
21
|
+
currentFloorBands,
|
|
22
|
+
storeyFloorsFromMeshes,
|
|
21
23
|
type Drawing2D,
|
|
22
24
|
type DrawingLine,
|
|
23
25
|
type SectionConfig,
|
|
26
|
+
type ProfileEntry,
|
|
27
|
+
type MeshOutline2D,
|
|
24
28
|
} from '@ifc-lite/drawing-2d';
|
|
25
29
|
import { GeometryProcessor, type GeometryResult } from '@ifc-lite/geometry';
|
|
30
|
+
import type { SpatialHierarchy } from '@ifc-lite/data';
|
|
31
|
+
import * as IfcWasm from '@ifc-lite/wasm';
|
|
26
32
|
import { customPlaneCenter } from '@/store';
|
|
27
33
|
|
|
34
|
+
// The winding-robust Rust `meshOutline2d` binding (issue #979) is gitignored →
|
|
35
|
+
// CI-built, so reference it defensively: against an older wasm bundle it's
|
|
36
|
+
// undefined and projection falls back to the TS mesh silhouette. The wasm
|
|
37
|
+
// module is already initialised (the model loaded through it), so the free
|
|
38
|
+
// function can be called without a GeometryProcessor instance.
|
|
39
|
+
interface MeshOutlineHandle {
|
|
40
|
+
readonly axisMin: number;
|
|
41
|
+
readonly axisMax: number;
|
|
42
|
+
readonly contourCount: number;
|
|
43
|
+
contour(index: number): Float32Array | undefined;
|
|
44
|
+
free(): void;
|
|
45
|
+
}
|
|
46
|
+
type MeshOutline2dFn = (
|
|
47
|
+
positions: Float32Array,
|
|
48
|
+
indices: Uint32Array,
|
|
49
|
+
axis: number,
|
|
50
|
+
flipped: boolean,
|
|
51
|
+
) => MeshOutlineHandle | undefined;
|
|
52
|
+
const meshOutline2dFn = (IfcWasm as unknown as { meshOutline2d?: MeshOutline2dFn }).meshOutline2d;
|
|
53
|
+
const AXIS_CODE: Record<'x' | 'y' | 'z', number> = { x: 0, y: 1, z: 2 };
|
|
54
|
+
|
|
28
55
|
// Axis conversion from semantic (down/front/side) to geometric (x/y/z)
|
|
29
56
|
export const AXIS_MAP: Record<'down' | 'front' | 'side', 'x' | 'y' | 'z'> = {
|
|
30
57
|
down: 'y',
|
|
@@ -40,9 +67,22 @@ export const AXIS_MAP: Record<'down' | 'front' | 'side', 'x' | 'y' | 'z'> = {
|
|
|
40
67
|
// live in is already in metres (WASM applies `unit_scale` upstream).
|
|
41
68
|
export const ANNOTATION_VIEW_DEPTH = 1.2;
|
|
42
69
|
|
|
70
|
+
// View depth BEHIND a vertical (front/side) section cut within which
|
|
71
|
+
// construction projection is drawn, as a fraction of the model extent along the
|
|
72
|
+
// cut axis (issue #979 follow-up). A vertical section has no "storey" to scope
|
|
73
|
+
// to, so it projects a bounded slab behind the cut — near geometry solid,
|
|
74
|
+
// occluded/far dashed (hidden-line pass) — and culls the cut-away front half
|
|
75
|
+
// and anything past this depth. Half the model depth is a sensible default;
|
|
76
|
+
// tune here if sections feel too deep or too shallow.
|
|
77
|
+
export const SECTION_VIEW_DEPTH_FRACTION = 0.5;
|
|
78
|
+
|
|
43
79
|
interface UseDrawingGenerationParams {
|
|
44
80
|
geometryResult: GeometryResult | null | undefined;
|
|
45
|
-
|
|
81
|
+
// `spatialHierarchy` (optional — absent on cache-reopened models) backs the
|
|
82
|
+
// current-floor projection scoping (issue #979 follow-up). The runtime
|
|
83
|
+
// already passes the full DataStore from `useIfc()`, so this is a pure type
|
|
84
|
+
// widen, not new prop threading.
|
|
85
|
+
ifcDataStore: { source: Uint8Array; spatialHierarchy?: SpatialHierarchy } | null;
|
|
46
86
|
/**
|
|
47
87
|
* Section plane state. `custom` is the optional face-pick override
|
|
48
88
|
* (issue #243); when set the cutter cuts on that arbitrary plane and
|
|
@@ -61,7 +101,7 @@ interface UseDrawingGenerationParams {
|
|
|
61
101
|
bitangent: [number, number, number];
|
|
62
102
|
};
|
|
63
103
|
};
|
|
64
|
-
displayOptions: { showHiddenLines: boolean; useSymbolicRepresentations: boolean; show3DOverlay: boolean; scale: number };
|
|
104
|
+
displayOptions: { showHiddenLines: boolean; useSymbolicRepresentations: boolean; show3DOverlay: boolean; scale: number; showConstructionProjection: boolean };
|
|
65
105
|
combinedHiddenIds: Set<number>;
|
|
66
106
|
combinedIsolatedIds: Set<number> | null;
|
|
67
107
|
computedIsolatedIds?: Set<number> | null;
|
|
@@ -127,6 +167,26 @@ export function useDrawingGeneration({
|
|
|
127
167
|
useSymbolic: boolean;
|
|
128
168
|
} | null>(null);
|
|
129
169
|
|
|
170
|
+
// Cache for extracted extruded-solid profiles (issue #979 construction
|
|
171
|
+
// projection). Like symbolic reps these are section-position-independent, so
|
|
172
|
+
// they're parsed once per model and reused across section moves. Every typed
|
|
173
|
+
// array is copied off the WASM heap (`.slice()`) and the WASM handles freed
|
|
174
|
+
// deterministically before caching — caching a live view would dangle once
|
|
175
|
+
// the shared dlmalloc heap grows/reuses (AGENTS.md §7).
|
|
176
|
+
const profileCacheRef = useRef<{
|
|
177
|
+
profiles: ProfileEntry[];
|
|
178
|
+
sourceId: string | null;
|
|
179
|
+
} | null>(null);
|
|
180
|
+
|
|
181
|
+
// Cache for per-storey floor levels used to scope construction projection to
|
|
182
|
+
// the current floor (issue #979 follow-up). Derived from mesh-Y, so it only
|
|
183
|
+
// changes when the model/visibility set changes — keyed on the same
|
|
184
|
+
// `modelCacheKey` as the profile cache.
|
|
185
|
+
const storeyFloorsCacheRef = useRef<{
|
|
186
|
+
floors: number[];
|
|
187
|
+
sourceId: string | null;
|
|
188
|
+
} | null>(null);
|
|
189
|
+
|
|
130
190
|
// Generate drawing when panel opens
|
|
131
191
|
const generateDrawing = useCallback(async (isRegenerate = false) => {
|
|
132
192
|
if (!geometryResult?.meshes || geometryResult.meshes.length === 0) {
|
|
@@ -152,7 +212,7 @@ export function useDrawingGeneration({
|
|
|
152
212
|
// For multi-model: create cache key from model count and visible model IDs
|
|
153
213
|
// For single-model: use source byteLength as before
|
|
154
214
|
const modelCacheKey = models.size > 0
|
|
155
|
-
? `${models.size}-${[...models.values()].filter(m => m.visible).map(m => m.id).sort().join('
|
|
215
|
+
? `${models.size}-${[...models.values()].filter(m => m.visible).map(m => m.id).sort().join('|')}`
|
|
156
216
|
: (ifcDataStore?.source ? String(ifcDataStore.source.byteLength) : null);
|
|
157
217
|
|
|
158
218
|
const useSymbolic = displayOptions.useSymbolicRepresentations && !!ifcDataStore?.source;
|
|
@@ -341,6 +401,104 @@ export function useDrawingGeneration({
|
|
|
341
401
|
}
|
|
342
402
|
}
|
|
343
403
|
|
|
404
|
+
// Construction projection runs on any CARDINAL cut (plan 'down' + vertical
|
|
405
|
+
// 'front'/'side'), but NOT a face-picked custom plane (the band classifier
|
|
406
|
+
// and outline binding are cardinal-only). Plan and section use different
|
|
407
|
+
// boundaries: plan scopes to the current storey; a vertical section has no
|
|
408
|
+
// "storey", so it projects a bounded view depth behind the cut (see the
|
|
409
|
+
// band computation below). The UI gates the toggle to the same set; the
|
|
410
|
+
// persisted flag can survive a switch to a custom plane, so gate here too.
|
|
411
|
+
const projectionSupported = !sectionPlane.custom;
|
|
412
|
+
const projectionOn = projectionSupported && displayOptions.showConstructionProjection;
|
|
413
|
+
|
|
414
|
+
// ── Construction projection profiles (issue #979) ────────────────────────
|
|
415
|
+
// Extract extruded-area-solid profiles for the clean projection path. Only
|
|
416
|
+
// for PLAN cuts: the profile projector draws a solid's base footprint, which
|
|
417
|
+
// is the plan representation but collapses to a base edge on a vertical
|
|
418
|
+
// section — so front/side cuts use the mesh-silhouette/outline path instead
|
|
419
|
+
// (profiles stay empty → every mesh silhouettes). Cached per model since
|
|
420
|
+
// they don't move with the section. Single-model (modelIndex 0) for now,
|
|
421
|
+
// mirroring the symbolic path's federation limitation.
|
|
422
|
+
const profilesNeeded = projectionOn && sectionPlane.axis === 'down';
|
|
423
|
+
let profiles: ProfileEntry[] = [];
|
|
424
|
+
if (profilesNeeded && ifcDataStore?.source) {
|
|
425
|
+
const pcache = profileCacheRef.current;
|
|
426
|
+
if (pcache && pcache.sourceId === modelCacheKey) {
|
|
427
|
+
profiles = pcache.profiles;
|
|
428
|
+
} else {
|
|
429
|
+
if (!isRegenerate) {
|
|
430
|
+
setDrawingProgress(10, 'Extracting profiles...');
|
|
431
|
+
}
|
|
432
|
+
try {
|
|
433
|
+
const processor = new GeometryProcessor();
|
|
434
|
+
try {
|
|
435
|
+
await processor.init();
|
|
436
|
+
// ProfileCollection + each ProfileEntryJs are WASM-bindgen handles
|
|
437
|
+
// owning WASM memory. Copy every typed array off the heap with
|
|
438
|
+
// `.slice()` and free each handle deterministically before caching
|
|
439
|
+
// (AGENTS.md §7 — leaking to GC corrupts the shared dlmalloc heap).
|
|
440
|
+
const collection = processor.extractProfiles(ifcDataStore.source, 0);
|
|
441
|
+
if (collection) {
|
|
442
|
+
try {
|
|
443
|
+
// Profiles come back in UNSHIFTED WebGL world space, but the
|
|
444
|
+
// meshes and the section position live in the render frame
|
|
445
|
+
// (issue #945 RTC / large-coordinate shift). Subtract the same
|
|
446
|
+
// shift so projection lines land on the cut geometry for
|
|
447
|
+
// georeferenced models — a no-op for small-coordinate models
|
|
448
|
+
// (AC20). The WASM mesh path subtracts the RTC offset in IFC
|
|
449
|
+
// Z-up then converts to Y-up via (x,y,z)→(x,z,−y), so the Y-up
|
|
450
|
+
// shift is (rtc.x, rtc.z, −rtc.y); the TS path instead
|
|
451
|
+
// subtracts `originShift`, already in Y-up.
|
|
452
|
+
const ci = geometryResult.coordinateInfo;
|
|
453
|
+
const rtc = ci.wasmRtcOffset;
|
|
454
|
+
const shift = rtc
|
|
455
|
+
? { x: rtc.x, y: rtc.z, z: -rtc.y }
|
|
456
|
+
: ci.originShift;
|
|
457
|
+
const len = collection.length;
|
|
458
|
+
for (let i = 0; i < len; i++) {
|
|
459
|
+
const entry = collection.get(i);
|
|
460
|
+
if (!entry) continue;
|
|
461
|
+
try {
|
|
462
|
+
const transform = entry.transform.slice();
|
|
463
|
+
transform[12] -= shift.x;
|
|
464
|
+
transform[13] -= shift.y;
|
|
465
|
+
transform[14] -= shift.z;
|
|
466
|
+
profiles.push({
|
|
467
|
+
expressId: entry.expressId,
|
|
468
|
+
ifcType: entry.ifcType,
|
|
469
|
+
outerPoints: entry.outerPoints.slice(),
|
|
470
|
+
holeCounts: entry.holeCounts.slice(),
|
|
471
|
+
holePoints: entry.holePoints.slice(),
|
|
472
|
+
transform,
|
|
473
|
+
extrusionDir: entry.extrusionDir.slice(),
|
|
474
|
+
extrusionDepth: entry.extrusionDepth,
|
|
475
|
+
modelIndex: 0,
|
|
476
|
+
});
|
|
477
|
+
} finally {
|
|
478
|
+
entry.free();
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
} finally {
|
|
482
|
+
collection.free();
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
profileCacheRef.current = { profiles, sourceId: modelCacheKey };
|
|
486
|
+
} finally {
|
|
487
|
+
processor.dispose();
|
|
488
|
+
}
|
|
489
|
+
} catch (error) {
|
|
490
|
+
// Degrade gracefully: the drawing still renders without projection.
|
|
491
|
+
console.warn('Profile extraction failed:', error);
|
|
492
|
+
profiles = [];
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
} else if (!projectionOn && profileCacheRef.current) {
|
|
496
|
+
// Projection fully off: drop the cache so a re-enable re-extracts cleanly.
|
|
497
|
+
// A plan↔section switch (projection still on) keeps the cache so flipping
|
|
498
|
+
// back to a plan reuses the extracted profiles.
|
|
499
|
+
profileCacheRef.current = null;
|
|
500
|
+
}
|
|
501
|
+
|
|
344
502
|
let generator: Drawing2DGenerator | null = null;
|
|
345
503
|
try {
|
|
346
504
|
generator = new Drawing2DGenerator();
|
|
@@ -359,6 +517,79 @@ export function useDrawingGeneration({
|
|
|
359
517
|
// Calculate max depth as half the model extent
|
|
360
518
|
const maxDepth = (axisMax - axisMin) * 0.5;
|
|
361
519
|
|
|
520
|
+
// Construction-projection bands (issue #979 + current-floor follow-up).
|
|
521
|
+
// Project geometry on each side of the cut and let the band classifier
|
|
522
|
+
// split it (below → solid, above → dashed). `fullExtent` (the whole model
|
|
523
|
+
// height) is the baseline; for a multi-storey model on a plan cut the
|
|
524
|
+
// bands are instead clamped to the storey the cut sits in, so other
|
|
525
|
+
// floors don't bleed onto the plan (e.g. a roof two levels up — the
|
|
526
|
+
// reported bug). Flip-invariant: the classifier applies the flip sign
|
|
527
|
+
// itself. Floor at 1mm so a degenerate zero-extent model (or a storey
|
|
528
|
+
// collapsed to a single slab) doesn't yield 0-width bands that cull every
|
|
529
|
+
// element sitting on the plane.
|
|
530
|
+
const fullExtent = Math.max(axisMax - axisMin, 1e-3);
|
|
531
|
+
let belowDepth = fullExtent;
|
|
532
|
+
let aboveDepth = fullExtent;
|
|
533
|
+
|
|
534
|
+
// Auto-scope to the current floor only when it's safe and meaningful:
|
|
535
|
+
// a plan ('down') cut with projection on, a single model (storey ids are
|
|
536
|
+
// LOCAL express ids — federation would mismatch global mesh ids), no
|
|
537
|
+
// active manual isolation or storey selection (those already scope the
|
|
538
|
+
// set and the user's explicit choice wins), spatial-hierarchy data
|
|
539
|
+
// present (absent on cache-reopened models), and at most ONE building.
|
|
540
|
+
// A single IFC can hold several IfcBuildings with staggered storey
|
|
541
|
+
// elevations; flattening all their storey minima into one band mis-scopes
|
|
542
|
+
// (a cut on building B's ground floor capped by building A's upper
|
|
543
|
+
// storey), so multi-building models fall back to full extent too.
|
|
544
|
+
// Otherwise keep the shipped full-extent behavior so single-storey /
|
|
545
|
+
// cache-loaded / federated / multi-building models don't regress.
|
|
546
|
+
const sh = ifcDataStore?.spatialHierarchy;
|
|
547
|
+
const canScopeFloor =
|
|
548
|
+
projectionOn &&
|
|
549
|
+
sectionPlane.axis === 'down' &&
|
|
550
|
+
!sectionPlane.custom &&
|
|
551
|
+
models.size <= 1 &&
|
|
552
|
+
combinedIsolatedIds === null &&
|
|
553
|
+
!(computedIsolatedIds && computedIsolatedIds.size > 0) &&
|
|
554
|
+
sh !== undefined &&
|
|
555
|
+
sh.byBuilding.size <= 1;
|
|
556
|
+
if (canScopeFloor && sh) {
|
|
557
|
+
const cached = storeyFloorsCacheRef.current;
|
|
558
|
+
const floors =
|
|
559
|
+
cached && cached.sourceId === modelCacheKey
|
|
560
|
+
? cached.floors
|
|
561
|
+
: storeyFloorsFromMeshes(geometryResult.meshes, sh.elementToStorey);
|
|
562
|
+
if (!cached || cached.sourceId !== modelCacheKey) {
|
|
563
|
+
storeyFloorsCacheRef.current = { floors, sourceId: modelCacheKey };
|
|
564
|
+
}
|
|
565
|
+
// Need ≥2 storeys to scope: with 0/1 storey there is no "other floor"
|
|
566
|
+
// to exclude, and full extent keeps an overhead roof projecting.
|
|
567
|
+
if (floors.length >= 2) {
|
|
568
|
+
// `currentFloorBands` returns GEOMETRIC depths — `below` toward the
|
|
569
|
+
// floor, `above` toward the ceiling. The band classifier reads them
|
|
570
|
+
// in FLIP-ADJUSTED depth space (d<0 = `below` slot), so on a flipped
|
|
571
|
+
// plan cut (looking up — a reflected-ceiling-plan style view) the
|
|
572
|
+
// floor/ceiling map to the opposite slots and the magnitudes must be
|
|
573
|
+
// swapped. The shipped full-extent bands were symmetric so this never
|
|
574
|
+
// mattered before; the asymmetric storey bands make flip significant.
|
|
575
|
+
const bands = currentFloorBands(floors, position, axisMin, axisMax);
|
|
576
|
+
belowDepth = sectionPlane.flipped ? bands.above : bands.below;
|
|
577
|
+
aboveDepth = sectionPlane.flipped ? bands.below : bands.above;
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
// Vertical section (front/side): storeys don't bound it. Project a
|
|
582
|
+
// bounded view depth BEHIND the cut and cull the cut-away front half +
|
|
583
|
+
// anything past that depth. "Behind" is always the `below` (d<0) band:
|
|
584
|
+
// the band classifier's flip and the view direction's flip cancel, so
|
|
585
|
+
// this is flip-invariant (no swap needed). Near geometry draws solid;
|
|
586
|
+
// the hidden-line pass dashes occluded/far parts. (Profiles aren't
|
|
587
|
+
// extracted off-plan, so this geometry comes from the mesh silhouette.)
|
|
588
|
+
if (projectionOn && !sectionPlane.custom && sectionPlane.axis !== 'down') {
|
|
589
|
+
belowDepth = Math.max((axisMax - axisMin) * SECTION_VIEW_DEPTH_FRACTION, 1e-3);
|
|
590
|
+
aboveDepth = 1e-3; // cull the half in front of the cut
|
|
591
|
+
}
|
|
592
|
+
|
|
362
593
|
// Adjust progress to account for symbolic parsing phase (0-20%)
|
|
363
594
|
const progressOffset = symbolicLines.length > 0 ? 20 : 0;
|
|
364
595
|
const progressScale = symbolicLines.length > 0 ? 0.8 : 1;
|
|
@@ -369,6 +600,8 @@ export function useDrawingGeneration({
|
|
|
369
600
|
// Create section config
|
|
370
601
|
const config: SectionConfig = createSectionConfig(axis, position, {
|
|
371
602
|
projectionDepth: maxDepth,
|
|
603
|
+
projectionBelowDepth: belowDepth,
|
|
604
|
+
projectionAboveDepth: aboveDepth,
|
|
372
605
|
includeHiddenLines: displayOptions.showHiddenLines,
|
|
373
606
|
scale: displayOptions.scale,
|
|
374
607
|
});
|
|
@@ -434,13 +667,76 @@ export function useDrawingGeneration({
|
|
|
434
667
|
return;
|
|
435
668
|
}
|
|
436
669
|
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
670
|
+
// Construction projection (issue #979): when enabled, project geometry
|
|
671
|
+
// beyond the cut. The clean profile path handles extruded solids; the
|
|
672
|
+
// silhouette path (includeEdges) covers non-extruded geometry — roofs,
|
|
673
|
+
// stairs, site — that has no profile. The below/above band split drives
|
|
674
|
+
// solid vs dashed; hidden-line removal (below `includeHiddenLines`) is an
|
|
675
|
+
// additional occlusion pass the user controls via "show hidden lines".
|
|
676
|
+
|
|
677
|
+
// Apply the SAME hiding/isolation filters to the profiles as to the
|
|
678
|
+
// meshes, so projection respects 3D hiding and storey isolation —
|
|
679
|
+
// otherwise other storeys' profiles project through the plan and the
|
|
680
|
+
// dedup keys (built from profiles) would suppress silhouettes for
|
|
681
|
+
// entities that aren't actually drawn.
|
|
682
|
+
let projectionProfiles = profiles;
|
|
683
|
+
if (projectionOn && profiles.length > 0) {
|
|
684
|
+
if (combinedHiddenIds.size > 0) {
|
|
685
|
+
projectionProfiles = projectionProfiles.filter((p) => !combinedHiddenIds.has(p.expressId));
|
|
686
|
+
}
|
|
687
|
+
if (combinedIsolatedIds !== null) {
|
|
688
|
+
projectionProfiles = projectionProfiles.filter((p) => combinedIsolatedIds.has(p.expressId));
|
|
689
|
+
}
|
|
690
|
+
if (computedIsolatedIds !== null && computedIsolatedIds !== undefined && computedIsolatedIds.size > 0) {
|
|
691
|
+
const isolatedSet = computedIsolatedIds;
|
|
692
|
+
projectionProfiles = projectionProfiles.filter((p) => isolatedSet.has(p.expressId));
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
// Winding-robust outline provider for non-extruded geometry (roofs,
|
|
697
|
+
// stairs, site). Calls the Rust meshOutline2d binding per mesh; each call
|
|
698
|
+
// copies the contour data off the WASM heap and frees the handle inline.
|
|
699
|
+
// Undefined when projection is off or the binding isn't in this wasm
|
|
700
|
+
// build → the generator falls back to the TS mesh silhouette.
|
|
701
|
+
const outlineProvider =
|
|
702
|
+
projectionOn && typeof meshOutline2dFn === 'function'
|
|
703
|
+
? (mesh: { positions: Float32Array; indices: Uint32Array }, axis: 'x' | 'y' | 'z', flipped: boolean): MeshOutline2D | null => {
|
|
704
|
+
try {
|
|
705
|
+
const handle = meshOutline2dFn(mesh.positions, mesh.indices, AXIS_CODE[axis], flipped);
|
|
706
|
+
if (!handle) return null;
|
|
707
|
+
try {
|
|
708
|
+
const contours: Float32Array[] = [];
|
|
709
|
+
for (let i = 0; i < handle.contourCount; i++) {
|
|
710
|
+
const ring = handle.contour(i);
|
|
711
|
+
if (ring) contours.push(ring.slice()); // copy off the WASM heap
|
|
712
|
+
}
|
|
713
|
+
if (contours.length === 0) return null;
|
|
714
|
+
return { contours, axisMin: handle.axisMin, axisMax: handle.axisMax };
|
|
715
|
+
} finally {
|
|
716
|
+
handle.free();
|
|
717
|
+
}
|
|
718
|
+
} catch {
|
|
719
|
+
return null; // binding unavailable/failed → silhouette fallback
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
: undefined;
|
|
723
|
+
|
|
724
|
+
const result = await generator.generate(
|
|
725
|
+
meshesToProcess,
|
|
726
|
+
config,
|
|
727
|
+
{
|
|
728
|
+
// Respect the "show hidden lines" toggle: occlusion can downgrade
|
|
729
|
+
// visible (below-cut) projection lines to dashed. Overhead lines stay
|
|
730
|
+
// dashed regardless (the generator passes them through unchanged).
|
|
731
|
+
includeHiddenLines: projectionOn ? displayOptions.showHiddenLines : false,
|
|
732
|
+
includeProjection: projectionOn,
|
|
733
|
+
includeEdges: projectionOn,
|
|
734
|
+
mergeLines: true,
|
|
735
|
+
outlineProvider,
|
|
736
|
+
onProgress: progressCallback,
|
|
737
|
+
},
|
|
738
|
+
projectionOn ? projectionProfiles : undefined,
|
|
739
|
+
);
|
|
444
740
|
|
|
445
741
|
// If we have symbolic representations, create a hybrid drawing
|
|
446
742
|
if (symbolicLines.length > 0 && entitiesWithSymbols.size > 0) {
|
|
@@ -502,10 +798,7 @@ export function useDrawingGeneration({
|
|
|
502
798
|
// The kept window is `−ANNOTATION_VIEW_DEPTH ≤ signedDist ≤ 0` on
|
|
503
799
|
// the −normal side — the side BELOW a down-looking camera, where
|
|
504
800
|
// IFC dimensions live (authored at the storey's floor elevation,
|
|
505
|
-
// not at the cut height).
|
|
506
|
-
// `EdgeExtractor.filterEdgesByDepth`, which projects above the
|
|
507
|
-
// cut: annotations and projection edges are naturally on opposite
|
|
508
|
-
// sides of the cut plane. Flipped sections look at the same world
|
|
801
|
+
// not at the cut height). Flipped sections look at the same world
|
|
509
802
|
// from the opposite side, so the slab mirrors to
|
|
510
803
|
// `0 ≤ signedDist ≤ ANNOTATION_VIEW_DEPTH`.
|
|
511
804
|
//
|