@ifc-lite/viewer 1.22.0 → 1.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (564) hide show
  1. package/.turbo/turbo-build.log +71 -44
  2. package/CHANGELOG.md +23 -0
  3. package/dist/assets/__vite-browser-external-B1O5LaIO.js +1 -0
  4. package/dist/assets/{arrow-fie-E7fe.js → arrow-CXWhTnNT.js} +1 -1
  5. package/dist/assets/{basketViewActivator-EHAhHlwN.js → basketViewActivator--cFpU2Q9.js} +10 -10
  6. package/dist/assets/{bcf-Bhx-K17f.js → bcf-Ba2CjHib.js} +2 -2
  7. package/dist/assets/browser-DXS29_v9.js +695 -0
  8. package/dist/assets/{cesium-B4ZIU9jS.js → cesium-BoVuJvTC.js} +5838 -5730
  9. package/dist/assets/{decode-worker-CYqSjk1n.js → decode-worker-CgM1iNSK.js} +1 -1
  10. package/dist/assets/deflate-DCLbV4UE.js +1 -0
  11. package/dist/assets/{drawing-2d-Bjy8YPrg.js → drawing-2d-C71b8Ugx.js} +1 -1
  12. package/dist/assets/emscripten-module-B1g2L2eS.wasm +0 -0
  13. package/dist/assets/emscripten-module-DHbYPfAp.wasm +0 -0
  14. package/dist/assets/emscripten-module-ZrHFMo7O.wasm +0 -0
  15. package/dist/assets/emscripten-module-uFzwHH0Y.wasm +0 -0
  16. package/dist/assets/emscripten-module.browser-BLJD5hhE.js +1 -0
  17. package/dist/assets/{esbuild-Cpd5nU_H.wasm → esbuild-CzsZLPr0.wasm} +0 -0
  18. package/dist/assets/esbuild-FgU11_Eg.js +1 -0
  19. package/dist/assets/event-B0kAzHa-.js +1 -0
  20. package/dist/assets/{exporters-KTio0Tdm.js → exporters-Bf6PTtdW.js} +1011 -1011
  21. package/dist/assets/ffi-Boa1QuFa.js +1 -0
  22. package/dist/assets/{geometry-controller.worker-Cm2P_EJr.js → geometry-controller.worker-CEr00X3X.js} +2 -2
  23. package/dist/assets/{geometry.worker-DchLBqZ8.js → geometry.worker-B4VPDkmL.js} +1 -1
  24. package/dist/assets/geotiff-BN4J8Vt9.js +3354 -0
  25. package/dist/assets/{ids-CS7VCFin.js → ids-XwxE1tK3.js} +6 -6
  26. package/dist/assets/{ifc-lite-C6wEhXa6.js → ifc-lite-DNzkEkIb.js} +2 -2
  27. package/dist/assets/ifc-lite_bg-1IiJN0Zg.wasm +0 -0
  28. package/dist/assets/ifc-lite_bg-B_eUD1Wy.wasm +0 -0
  29. package/dist/assets/index-DMho-JA0.js +6 -0
  30. package/dist/assets/index-DS_xJQfP.css +1 -0
  31. package/dist/assets/{index-8k9h-ANq.js → index-j2x5R7fb.js} +66047 -55202
  32. package/dist/assets/jpeg-BUTmr0Bp.js +1 -0
  33. package/dist/assets/{laz-perf-DnSyzVYH.wasm → laz-perf-CFJp03W6.wasm} +0 -0
  34. package/dist/assets/laz-perf-DgUOSLeU.js +1 -0
  35. package/dist/assets/{laz-source-jj3xI5Y4.js → laz-source-BWjza0Iw.js} +2 -2
  36. package/dist/assets/{lens-CSASnhAL.js → lens-CpjUdqpw.js} +1 -1
  37. package/dist/assets/lerc-DmzRHXn3.js +1 -0
  38. package/dist/assets/lzw-CgyIIzii.js +1 -0
  39. package/dist/assets/maplibre-gl-Do6O5tDc.js +800 -0
  40. package/dist/assets/{native-bridge-DNrEhx2R.js → native-bridge-Q5ACp4QY.js} +3 -3
  41. package/dist/assets/packbits-C1r4AzHj.js +1 -0
  42. package/dist/assets/pako.esm-Cram60i4.js +1 -0
  43. package/dist/assets/parquet_wasm_bg-DcKVfvto.wasm +0 -0
  44. package/dist/assets/{parser.worker-BcjkIo89.js → parser.worker-Cl6XQcXA.js} +2 -2
  45. package/dist/assets/raw-ZqLh7kVQ.js +1 -0
  46. package/dist/assets/{sandbox-BSn5MyEJ.js → sandbox-Bju6ZKJK.js} +1664 -1542
  47. package/dist/assets/{server-client-D-kU2XAF.js → server-client-B8wi3CGx.js} +4 -4
  48. package/dist/assets/three-CQBzFWY2.js +4104 -0
  49. package/dist/assets/wasm-bridge-X-mWRA9Z.js +1 -0
  50. package/dist/assets/webimage-D0MbRMkU.js +1 -0
  51. package/dist/assets/{workerHelpers-pUUnk9Wc.js → workerHelpers-DnNedVRr.js} +1 -1
  52. package/dist/assets/zstd-DA4VQ-ji.js +1 -0
  53. package/dist/cesium/{Workers/chunk-V7QEYVP3.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-236YIEYT.js} +2 -2
  54. package/dist/cesium/{Workers/chunk-5TJMAQVL.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-2ZYB3DYT.js} +2 -2
  55. package/dist/cesium/{Workers/chunk-UBOGZS7F.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-4M56RRIL.js} +2 -2
  56. package/dist/cesium/{Workers/chunk-OCWJRAXS.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-5BC2Q3QW.js} +2 -2
  57. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-5XHUDY37.js +26 -0
  58. package/dist/cesium/{Workers/chunk-Z3QF2EHT.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-6WMLAJJP.js} +2 -2
  59. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-72KUXMWU.js +26 -0
  60. package/dist/cesium/{Workers/chunk-EQ4YRVWL.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-7NQYTTAU.js} +2 -2
  61. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-A35GG5WJ.js +26 -0
  62. package/dist/cesium/{Workers/chunk-FC4ZZ65J.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-AXNBHUAG.js} +2 -2
  63. package/dist/cesium/{Workers/chunk-BTSYJ5XU.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-DC3K7YTH.js} +2 -2
  64. package/dist/cesium/{Workers/chunk-SLT4J352.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-DRBPXGI7.js} +2 -2
  65. package/dist/cesium/{Workers/chunk-2MJIIVP4.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-EARRZPMO.js} +2 -2
  66. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-EHC3BDVP.js +26 -0
  67. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-EYZUSGKM.js +26 -0
  68. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-EZSKHVA2.js +26 -0
  69. package/dist/cesium/{Workers/chunk-ICALLYLG.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-F3WJIFOO.js} +2 -2
  70. package/dist/cesium/{Workers/chunk-LSLE2RL4.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-FB7UV5BI.js} +2 -2
  71. package/dist/cesium/{Workers/chunk-CUUSNIVQ.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-FC6IYMYF.js} +2 -2
  72. package/dist/cesium/{Workers/chunk-TNSUQXWK.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-GF67PEXE.js} +2 -2
  73. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-GXEQRH2R.js +26 -0
  74. package/dist/cesium/{Workers/chunk-M4HLDBCG.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-I5NKQIWE.js} +2 -2
  75. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-IH7GXIUB.js +26 -0
  76. package/dist/cesium/{Workers/chunk-OIT7J4IC.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-IPP3UFGH.js} +2 -2
  77. package/dist/cesium/{Workers/chunk-WWWZVEEH.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-IYRGNBSH.js} +2 -2
  78. package/dist/cesium/{Workers/chunk-WPMZLB3Y.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-J6BM74AD.js} +2 -2
  79. package/dist/cesium/{Workers/chunk-QFM5DCMQ.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-KG2GJUJT.js} +1 -1
  80. package/dist/cesium/{Workers/chunk-XQHLGIO7.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-L7UE5MMF.js} +2 -2
  81. package/dist/cesium/{Workers/chunk-EFBN7QNX.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-LBZ34MHQ.js} +2 -2
  82. package/dist/cesium/{Workers/chunk-YP7I5QBZ.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-LOQDTQMX.js} +2 -2
  83. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-LYLRYC4L.js +29 -0
  84. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-MGPRMLLW.js +26 -0
  85. package/dist/cesium/{Workers/chunk-LI2ZSORM.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-NP26LKQA.js} +2 -2
  86. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-OMUAZ3NM.js +26 -0
  87. package/dist/cesium/{Workers/chunk-S44JILQT.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-PPFUDJN4.js} +2 -2
  88. package/dist/cesium/{Workers/chunk-EDVBB7SS.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-PQ3V63XF.js} +2 -2
  89. package/dist/cesium/{Workers/chunk-Q5BPHJQF.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-PWBQN4GK.js} +2 -2
  90. package/dist/cesium/{Workers/chunk-E7KYDCM5.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-QOTMLO2T.js} +2 -2
  91. package/dist/cesium/{Workers/chunk-XUSCFAVF.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-SP35IT73.js} +2 -2
  92. package/dist/cesium/{Workers/chunk-6BD4U3VO.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-T3ZGSZKA.js} +2 -2
  93. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-TM6SYYHO.js +28 -0
  94. package/dist/cesium/{Workers/chunk-VUKYSU4H.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-TSGIJVWH.js} +2 -2
  95. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-U3YGOX3C.js +63 -0
  96. package/dist/cesium/{Workers/chunk-7TVGLKQF.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-VBYOXOSM.js} +2 -2
  97. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-VCOHJNKB.js +26 -0
  98. package/dist/cesium/{Workers/chunk-WBOV35NL.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-VXAZXMUX.js} +2 -2
  99. package/dist/cesium/{Workers/chunk-IX4VMHEV.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-VXCJOT4W.js} +2 -2
  100. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-WPD3MB6X.js +26 -0
  101. package/dist/cesium/{Workers/chunk-V3OSTMM6.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-X4D5KUN5.js} +2 -2
  102. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-XEC656IT.js +26 -0
  103. package/dist/cesium/{Workers/chunk-MJHHSGEH.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-XR53QRQS.js} +2 -2
  104. package/dist/cesium/{Workers/chunk-XFIQ5DEQ.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-XR7MN4PJ.js} +2 -2
  105. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-XU6O4MRS.js +26 -0
  106. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-XZBHEBLF.js +29 -0
  107. package/dist/cesium/{Workers/chunk-OLZ3FYUM.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-Z2M4BF4E.js} +2 -2
  108. package/dist/cesium/{Workers/chunk-2ZBHLJST.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-Z4ERBZFB.js} +2 -2
  109. package/dist/cesium/{Workers/chunk-W37FE5GR.js → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/chunk-ZY2KCIWI.js} +2 -2
  110. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/combineGeometry.js +2 -2
  111. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createBoxGeometry.js +2 -2
  112. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createBoxOutlineGeometry.js +2 -2
  113. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createCircleGeometry.js +2 -2
  114. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createCircleOutlineGeometry.js +2 -2
  115. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createCoplanarPolygonGeometry.js +2 -2
  116. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/createCoplanarPolygonOutlineGeometry.js +26 -0
  117. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createCorridorGeometry.js +2 -2
  118. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createCorridorOutlineGeometry.js +2 -2
  119. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createCylinderGeometry.js +2 -2
  120. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createCylinderOutlineGeometry.js +2 -2
  121. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createEllipseGeometry.js +2 -2
  122. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createEllipseOutlineGeometry.js +2 -2
  123. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createEllipsoidGeometry.js +2 -2
  124. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createEllipsoidOutlineGeometry.js +2 -2
  125. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createFrustumGeometry.js +2 -2
  126. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createFrustumOutlineGeometry.js +2 -2
  127. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createGeometry.js +2 -2
  128. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/createGroundPolylineGeometry.js +26 -0
  129. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createPlaneGeometry.js +2 -2
  130. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createPlaneOutlineGeometry.js +2 -2
  131. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createPolygonGeometry.js +2 -2
  132. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createPolygonOutlineGeometry.js +2 -2
  133. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createPolylineGeometry.js +2 -2
  134. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createPolylineVolumeGeometry.js +2 -2
  135. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createPolylineVolumeOutlineGeometry.js +2 -2
  136. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createRectangleGeometry.js +2 -2
  137. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createRectangleOutlineGeometry.js +2 -2
  138. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createSimplePolylineGeometry.js +2 -2
  139. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createSphereGeometry.js +2 -2
  140. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createSphereOutlineGeometry.js +2 -2
  141. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createTaskProcessorWorker.js +2 -2
  142. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createVectorTileClampedPolylines.js +2 -2
  143. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createVectorTileGeometries.js +2 -2
  144. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createVectorTilePoints.js +2 -2
  145. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createVectorTilePolygons.js +2 -2
  146. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createVectorTilePolylines.js +2 -2
  147. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createVerticesFromCesium3DTilesTerrain.js +2 -2
  148. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createVerticesFromGoogleEarthEnterpriseBuffer.js +2 -2
  149. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createVerticesFromHeightmap.js +2 -2
  150. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createVerticesFromQuantizedTerrainMesh.js +2 -2
  151. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createWallGeometry.js +2 -2
  152. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/createWallOutlineGeometry.js +2 -2
  153. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/decodeDraco.js +2 -2
  154. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/decodeGoogleEarthEnterprisePacket.js +2 -2
  155. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/decodeI3S.js +2 -2
  156. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/gaussianSplatSorter.js +2 -2
  157. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/gaussianSplatTextureGenerator.js +2 -2
  158. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/incrementallyBuildTerrainPicker.js +2 -2
  159. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/transcodeKTX2.js +56 -0
  160. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/transferTypedArrayTest.js +1 -1
  161. package/dist/cesium/node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers/upsampleQuantizedTerrainMesh.js +26 -0
  162. package/dist/cesium/{Workers → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Workers}/upsampleVerticesFromCesium3DTilesTerrain.js +2 -2
  163. package/dist/index.html +11 -11
  164. package/package.json +52 -45
  165. package/src/components/mcp/McpLanding.tsx +1 -1
  166. package/src/components/mcp/McpPlayground.tsx +1 -1
  167. package/src/components/viewer/AddElementPanel.tsx +2 -2
  168. package/src/components/viewer/BasepointOverlay.tsx +239 -0
  169. package/src/components/viewer/CesiumOverlay.tsx +15 -59
  170. package/src/components/viewer/CesiumPlacementEditor.tsx +16 -1
  171. package/src/components/viewer/CommandPalette.tsx +25 -0
  172. package/src/components/viewer/GeometryAxisRow.tsx +54 -0
  173. package/src/components/viewer/GeometryEditCard.tsx +392 -0
  174. package/src/components/viewer/HierarchyPanel.tsx +2 -2
  175. package/src/components/viewer/IDSAuditSummary.tsx +2 -2
  176. package/src/components/viewer/KeyboardShortcutsDialog.tsx +58 -4
  177. package/src/components/viewer/MainToolbar.tsx +275 -4
  178. package/src/components/viewer/PropertiesPanel.tsx +28 -31
  179. package/src/components/viewer/StatusBar.tsx +12 -0
  180. package/src/components/viewer/ToolOverlays.tsx +36 -0
  181. package/src/components/viewer/ViewerLayout.tsx +27 -0
  182. package/src/components/viewer/Viewport.tsx +49 -4
  183. package/src/components/viewer/ViewportContainer.tsx +88 -17
  184. package/src/components/viewer/ViewportOverlays.tsx +50 -11
  185. package/src/components/viewer/chat/ByokKeyModal.tsx +1 -1
  186. package/src/components/viewer/properties/FederationAlignmentControls.tsx +180 -0
  187. package/src/components/viewer/properties/GeoreferencingPanel.tsx +6 -0
  188. package/src/components/viewer/properties/PrecisionGridBadge.tsx +125 -0
  189. package/src/components/viewer/properties/raw-step-format.ts +5 -3
  190. package/src/components/viewer/selectionHandlers.ts +301 -10
  191. package/src/components/viewer/tools/GizmoOverlay.tsx +322 -0
  192. package/src/components/viewer/tools/SplitNumericInput.tsx +225 -0
  193. package/src/components/viewer/tools/SplitOverlay.tsx +242 -0
  194. package/src/components/viewer/tools/WallEndpointOverlay.tsx +252 -0
  195. package/src/components/viewer/useGeometryStreaming.ts +100 -1
  196. package/src/components/viewer/useMouseControls.ts +8 -1
  197. package/src/hooks/useBCF.ts +6 -6
  198. package/src/hooks/useCameraTickSubscription.ts +62 -0
  199. package/src/hooks/useIfc.ts +4 -0
  200. package/src/hooks/useIfcFederation.ts +368 -20
  201. package/src/hooks/useKeyboardShortcuts.ts +86 -0
  202. package/src/hooks/useLevelDisplayEffect.ts +160 -0
  203. package/src/hooks/useViewerSelectors.ts +8 -0
  204. package/src/lib/__test__/stubs.ts +110 -0
  205. package/src/lib/geo/cesium-bridge.ts +3 -3
  206. package/src/lib/geo/cesium-placement.test.ts +28 -12
  207. package/src/lib/geo/cesium-placement.ts +16 -10
  208. package/src/lib/geo/effective-georef.test.ts +23 -7
  209. package/src/lib/geo/geo-scale.ts +58 -2
  210. package/src/lib/geo/ifc-origin.test.ts +176 -0
  211. package/src/lib/geo/ifc-origin.ts +144 -0
  212. package/src/lib/geo/precision-grids.ts +444 -0
  213. package/src/lib/geo/reproject.test.ts +88 -0
  214. package/src/lib/geo/reproject.ts +168 -36
  215. package/src/lib/level-offsets.test.ts +153 -0
  216. package/src/lib/level-offsets.ts +140 -0
  217. package/src/lib/linear-element-edit.test.ts +220 -0
  218. package/src/lib/linear-element-edit.ts +327 -0
  219. package/src/lib/metadata-clone.test.ts +173 -0
  220. package/src/lib/metadata-clone.ts +124 -0
  221. package/src/lib/placement-core.ts +340 -0
  222. package/src/lib/placement-edit.boot.ts +21 -0
  223. package/src/lib/placement-edit.test.ts +464 -0
  224. package/src/lib/placement-edit.ts +47 -0
  225. package/src/lib/polygon-clip.test.ts +193 -0
  226. package/src/lib/polygon-clip.ts +199 -0
  227. package/src/lib/slab-edit.test.ts +169 -0
  228. package/src/lib/slab-edit.ts +312 -0
  229. package/src/lib/wall-edit.ts +342 -0
  230. package/src/lib/wall-opening-reassign.test.ts +291 -0
  231. package/src/lib/wall-opening-reassign.ts +241 -0
  232. package/src/main.tsx +4 -0
  233. package/src/store/index.ts +7 -0
  234. package/src/store/slices/cesiumSlice.ts +61 -8
  235. package/src/store/slices/dataSlice.ts +80 -0
  236. package/src/store/slices/levelDisplaySlice.ts +105 -0
  237. package/src/store/slices/modelSlice.test.ts +19 -0
  238. package/src/store/slices/mutationSlice.ts +1138 -1
  239. package/src/store/slices/splitToolSlice.ts +165 -0
  240. package/src/store/slices/uiSlice.edit-mode.test.ts +210 -0
  241. package/src/store/slices/uiSlice.ts +78 -1
  242. package/src/store/types.ts +57 -2
  243. package/src/utils/createBlankIfc.ts +37 -0
  244. package/tsconfig.json +1 -0
  245. package/.turbo/turbo-typecheck.log +0 -4
  246. package/dist/assets/arrow2_bg-BoXCojjR.wasm +0 -0
  247. package/dist/assets/browser-CVf8ATeW.js +0 -694
  248. package/dist/assets/emscripten-module-BTRCZGcB.wasm +0 -0
  249. package/dist/assets/emscripten-module-CGIn_cMh.wasm +0 -0
  250. package/dist/assets/emscripten-module-DYvzWiHh.wasm +0 -0
  251. package/dist/assets/emscripten-module-NWak2PoB.wasm +0 -0
  252. package/dist/assets/emscripten-module.browser-DcFZLAUx.js +0 -1
  253. package/dist/assets/esbuild-COv63sf-.js +0 -1
  254. package/dist/assets/event-DIOks52T.js +0 -1
  255. package/dist/assets/ffi-DlhRHxHv.js +0 -1
  256. package/dist/assets/ifc-lite_bg-CSeT3fNI.wasm +0 -0
  257. package/dist/assets/ifc-lite_bg-ns4cSnX2.wasm +0 -0
  258. package/dist/assets/index-BZC2YaOP.css +0 -1
  259. package/dist/assets/index-HqAIQkr6.js +0 -22
  260. package/dist/assets/laz-perf-Cvr_Lepg.js +0 -1
  261. package/dist/assets/maplibre-gl-C4LXKM6c.js +0 -808
  262. package/dist/assets/three-DwNDHx9-.js +0 -4049
  263. package/dist/assets/wasm-bridge-Cha08LdC.js +0 -1
  264. package/dist/cesium/Workers/chunk-23ZQ2IVV.js +0 -29
  265. package/dist/cesium/Workers/chunk-2EQO3Q56.js +0 -26
  266. package/dist/cesium/Workers/chunk-2TE5NTVD.js +0 -26
  267. package/dist/cesium/Workers/chunk-BXMEEOCS.js +0 -63
  268. package/dist/cesium/Workers/chunk-BYLCY7GP.js +0 -29
  269. package/dist/cesium/Workers/chunk-CTHM3W6I.js +0 -26
  270. package/dist/cesium/Workers/chunk-E3JOOS3S.js +0 -26
  271. package/dist/cesium/Workers/chunk-F6PRE7D6.js +0 -26
  272. package/dist/cesium/Workers/chunk-FFBVWF2L.js +0 -26
  273. package/dist/cesium/Workers/chunk-GBAA6GVX.js +0 -26
  274. package/dist/cesium/Workers/chunk-ILRYTWTP.js +0 -26
  275. package/dist/cesium/Workers/chunk-IRNLBSEJ.js +0 -26
  276. package/dist/cesium/Workers/chunk-L6QHHACZ.js +0 -26
  277. package/dist/cesium/Workers/chunk-NMVKML6W.js +0 -26
  278. package/dist/cesium/Workers/chunk-OIRKANTH.js +0 -26
  279. package/dist/cesium/Workers/chunk-QKUIYMGC.js +0 -28
  280. package/dist/cesium/Workers/chunk-SQMIIXB7.js +0 -26
  281. package/dist/cesium/Workers/chunk-TJ4XLGBQ.js +0 -26
  282. package/dist/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +0 -26
  283. package/dist/cesium/Workers/createGroundPolylineGeometry.js +0 -26
  284. package/dist/cesium/Workers/transcodeKTX2.js +0 -56
  285. package/dist/cesium/Workers/upsampleQuantizedTerrainMesh.js +0 -26
  286. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_0.json +0 -0
  287. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_1.json +0 -0
  288. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_10.json +0 -0
  289. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_11.json +0 -0
  290. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_12.json +0 -0
  291. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_13.json +0 -0
  292. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_14.json +0 -0
  293. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_15.json +0 -0
  294. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_16.json +0 -0
  295. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_17.json +0 -0
  296. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_18.json +0 -0
  297. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_19.json +0 -0
  298. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_2.json +0 -0
  299. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_20.json +0 -0
  300. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_21.json +0 -0
  301. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_22.json +0 -0
  302. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_23.json +0 -0
  303. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_24.json +0 -0
  304. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_25.json +0 -0
  305. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_26.json +0 -0
  306. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_27.json +0 -0
  307. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_3.json +0 -0
  308. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_4.json +0 -0
  309. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_5.json +0 -0
  310. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_6.json +0 -0
  311. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_7.json +0 -0
  312. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_8.json +0 -0
  313. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/IAU2006_XYS/IAU2006_XYS_9.json +0 -0
  314. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Images/bing_maps_credit.png +0 -0
  315. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Images/cesium_credit.png +0 -0
  316. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Images/google_earth_credit.png +0 -0
  317. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Images/ion-credit.png +0 -0
  318. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/LensFlare/DirtMask.jpg +0 -0
  319. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/LensFlare/StarBurst.jpg +0 -0
  320. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/0/0/0.jpg +0 -0
  321. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/0/1/0.jpg +0 -0
  322. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/1/0/0.jpg +0 -0
  323. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/1/0/1.jpg +0 -0
  324. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/1/1/0.jpg +0 -0
  325. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/1/1/1.jpg +0 -0
  326. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/1/2/0.jpg +0 -0
  327. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/1/2/1.jpg +0 -0
  328. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/1/3/0.jpg +0 -0
  329. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/1/3/1.jpg +0 -0
  330. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/0/0.jpg +0 -0
  331. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/0/1.jpg +0 -0
  332. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/0/2.jpg +0 -0
  333. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/0/3.jpg +0 -0
  334. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/1/0.jpg +0 -0
  335. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/1/1.jpg +0 -0
  336. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/1/2.jpg +0 -0
  337. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/1/3.jpg +0 -0
  338. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/2/0.jpg +0 -0
  339. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/2/1.jpg +0 -0
  340. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/2/2.jpg +0 -0
  341. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/2/3.jpg +0 -0
  342. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/3/0.jpg +0 -0
  343. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/3/1.jpg +0 -0
  344. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/3/2.jpg +0 -0
  345. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/3/3.jpg +0 -0
  346. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/4/0.jpg +0 -0
  347. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/4/1.jpg +0 -0
  348. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/4/2.jpg +0 -0
  349. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/4/3.jpg +0 -0
  350. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/5/0.jpg +0 -0
  351. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/5/1.jpg +0 -0
  352. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/5/2.jpg +0 -0
  353. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/5/3.jpg +0 -0
  354. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/6/0.jpg +0 -0
  355. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/6/1.jpg +0 -0
  356. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/6/2.jpg +0 -0
  357. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/6/3.jpg +0 -0
  358. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/7/0.jpg +0 -0
  359. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/7/1.jpg +0 -0
  360. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/7/2.jpg +0 -0
  361. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/2/7/3.jpg +0 -0
  362. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/NaturalEarthII/tilemapresource.xml +0 -0
  363. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  364. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  365. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  366. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  367. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  368. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  369. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/airfield.png +0 -0
  370. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/airport.png +0 -0
  371. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/alcohol-shop.png +0 -0
  372. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/america-football.png +0 -0
  373. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/art-gallery.png +0 -0
  374. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/bakery.png +0 -0
  375. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/bank.png +0 -0
  376. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/bar.png +0 -0
  377. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/baseball.png +0 -0
  378. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/basketball.png +0 -0
  379. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/beer.png +0 -0
  380. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/bicycle.png +0 -0
  381. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/building.png +0 -0
  382. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/bus.png +0 -0
  383. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/cafe.png +0 -0
  384. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/camera.png +0 -0
  385. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/campsite.png +0 -0
  386. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/car.png +0 -0
  387. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/cemetery.png +0 -0
  388. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/cesium.png +0 -0
  389. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/chemist.png +0 -0
  390. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/cinema.png +0 -0
  391. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/circle-stroked.png +0 -0
  392. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/circle.png +0 -0
  393. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/city.png +0 -0
  394. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/clothing-store.png +0 -0
  395. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/college.png +0 -0
  396. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/commercial.png +0 -0
  397. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/cricket.png +0 -0
  398. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/cross.png +0 -0
  399. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/dam.png +0 -0
  400. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/danger.png +0 -0
  401. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/disability.png +0 -0
  402. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/dog-park.png +0 -0
  403. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/embassy.png +0 -0
  404. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/emergency-telephone.png +0 -0
  405. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/entrance.png +0 -0
  406. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/farm.png +0 -0
  407. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/fast-food.png +0 -0
  408. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/ferry.png +0 -0
  409. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/fire-station.png +0 -0
  410. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/fuel.png +0 -0
  411. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/garden.png +0 -0
  412. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/gift.png +0 -0
  413. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/golf.png +0 -0
  414. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/grocery.png +0 -0
  415. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/hairdresser.png +0 -0
  416. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/harbor.png +0 -0
  417. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/heart.png +0 -0
  418. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/heliport.png +0 -0
  419. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/hospital.png +0 -0
  420. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/ice-cream.png +0 -0
  421. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/industrial.png +0 -0
  422. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/land-use.png +0 -0
  423. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/laundry.png +0 -0
  424. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/library.png +0 -0
  425. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/lighthouse.png +0 -0
  426. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/lodging.png +0 -0
  427. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/logging.png +0 -0
  428. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/london-underground.png +0 -0
  429. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/marker-stroked.png +0 -0
  430. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/marker.png +0 -0
  431. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/minefield.png +0 -0
  432. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/mobilephone.png +0 -0
  433. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/monument.png +0 -0
  434. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/museum.png +0 -0
  435. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/music.png +0 -0
  436. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/oil-well.png +0 -0
  437. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/park.png +0 -0
  438. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/park2.png +0 -0
  439. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/parking-garage.png +0 -0
  440. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/parking.png +0 -0
  441. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/pharmacy.png +0 -0
  442. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/pitch.png +0 -0
  443. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/place-of-worship.png +0 -0
  444. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/playground.png +0 -0
  445. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/police.png +0 -0
  446. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/polling-place.png +0 -0
  447. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/post.png +0 -0
  448. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/prison.png +0 -0
  449. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/rail-above.png +0 -0
  450. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/rail-light.png +0 -0
  451. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/rail-metro.png +0 -0
  452. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/rail-underground.png +0 -0
  453. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/rail.png +0 -0
  454. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/religious-christian.png +0 -0
  455. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/religious-jewish.png +0 -0
  456. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/religious-muslim.png +0 -0
  457. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/restaurant.png +0 -0
  458. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/roadblock.png +0 -0
  459. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/rocket.png +0 -0
  460. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/school.png +0 -0
  461. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/scooter.png +0 -0
  462. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/shop.png +0 -0
  463. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/skiing.png +0 -0
  464. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/slaughterhouse.png +0 -0
  465. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/soccer.png +0 -0
  466. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/square-stroked.png +0 -0
  467. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/square.png +0 -0
  468. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/star-stroked.png +0 -0
  469. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/star.png +0 -0
  470. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/suitcase.png +0 -0
  471. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/swimming.png +0 -0
  472. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/telephone.png +0 -0
  473. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/tennis.png +0 -0
  474. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/theatre.png +0 -0
  475. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/toilets.png +0 -0
  476. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/town-hall.png +0 -0
  477. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/town.png +0 -0
  478. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/triangle-stroked.png +0 -0
  479. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/triangle.png +0 -0
  480. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/village.png +0 -0
  481. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/warehouse.png +0 -0
  482. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/waste-basket.png +0 -0
  483. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/water.png +0 -0
  484. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/wetland.png +0 -0
  485. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/maki/zoo.png +0 -0
  486. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/moonSmall.jpg +0 -0
  487. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/pin.svg +0 -0
  488. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/waterNormals.jpg +0 -0
  489. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/Textures/waterNormalsSmall.jpg +0 -0
  490. /package/dist/cesium/{Assets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Assets}/approximateTerrainHeights.json +0 -0
  491. /package/dist/cesium/{ThirdParty → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/ThirdParty}/Workers/package.json +0 -0
  492. /package/dist/cesium/{ThirdParty → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/ThirdParty}/Workers/zip-web-worker.js +0 -0
  493. /package/dist/cesium/{ThirdParty → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/ThirdParty}/basis_transcoder.wasm +0 -0
  494. /package/dist/cesium/{ThirdParty → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/ThirdParty}/draco_decoder.wasm +0 -0
  495. /package/dist/cesium/{ThirdParty → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/ThirdParty}/google-earth-dbroot-parser.js +0 -0
  496. /package/dist/cesium/{ThirdParty → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/ThirdParty}/wasm_splats_bg.wasm +0 -0
  497. /package/dist/cesium/{ThirdParty → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/ThirdParty}/zip-module.wasm +0 -0
  498. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Animation/Animation.css +0 -0
  499. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Animation/lighter.css +0 -0
  500. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/BaseLayerPicker/BaseLayerPicker.css +0 -0
  501. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/BaseLayerPicker/lighter.css +0 -0
  502. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Cesium3DTilesInspector/Cesium3DTilesInspector.css +0 -0
  503. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/CesiumInspector/CesiumInspector.css +0 -0
  504. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/CesiumWidget/CesiumWidget.css +0 -0
  505. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/CesiumWidget/lighter.css +0 -0
  506. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/FullscreenButton/FullscreenButton.css +0 -0
  507. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Geocoder/Geocoder.css +0 -0
  508. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Geocoder/lighter.css +0 -0
  509. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css +0 -0
  510. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png +0 -0
  511. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png +0 -0
  512. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png +0 -0
  513. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/azureAerial.png +0 -0
  514. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/azureRoads.png +0 -0
  515. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/bingAerial.png +0 -0
  516. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/bingAerialLabels.png +0 -0
  517. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/bingRoads.png +0 -0
  518. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/blueMarble.png +0 -0
  519. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/earthAtNight.png +0 -0
  520. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/googleContour.png +0 -0
  521. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/googleRoadmap.png +0 -0
  522. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/googleSatellite.png +0 -0
  523. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/googleSatelliteLabels.png +0 -0
  524. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/mapQuestOpenStreetMap.png +0 -0
  525. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/mapboxSatellite.png +0 -0
  526. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/mapboxStreets.png +0 -0
  527. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/mapboxTerrain.png +0 -0
  528. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/naturalEarthII.png +0 -0
  529. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/openStreetMap.png +0 -0
  530. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/sentinel-2.png +0 -0
  531. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/stadiaAlidadeSmooth.png +0 -0
  532. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/stadiaAlidadeSmoothDark.png +0 -0
  533. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/stamenToner.png +0 -0
  534. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/ImageryProviders/stamenWatercolor.png +0 -0
  535. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/NavigationHelp/Mouse.svg +0 -0
  536. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/NavigationHelp/MouseLeft.svg +0 -0
  537. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/NavigationHelp/MouseMiddle.svg +0 -0
  538. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/NavigationHelp/MouseRight.svg +0 -0
  539. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/NavigationHelp/Touch.svg +0 -0
  540. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/NavigationHelp/TouchDrag.svg +0 -0
  541. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/NavigationHelp/TouchRotate.svg +0 -0
  542. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/NavigationHelp/TouchTilt.svg +0 -0
  543. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/NavigationHelp/TouchZoom.svg +0 -0
  544. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/TerrainProviders/CesiumWorldTerrain.png +0 -0
  545. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/TerrainProviders/Ellipsoid.png +0 -0
  546. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/TimelineIcons.png +0 -0
  547. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Images/info-loading.gif +0 -0
  548. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/InfoBox/InfoBox.css +0 -0
  549. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/InfoBox/InfoBoxDescription.css +0 -0
  550. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/NavigationHelpButton/NavigationHelpButton.css +0 -0
  551. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/NavigationHelpButton/lighter.css +0 -0
  552. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/PerformanceWatchdog/PerformanceWatchdog.css +0 -0
  553. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/ProjectionPicker/ProjectionPicker.css +0 -0
  554. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/SceneModePicker/SceneModePicker.css +0 -0
  555. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/SelectionIndicator/SelectionIndicator.css +0 -0
  556. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Timeline/Timeline.css +0 -0
  557. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Timeline/lighter.css +0 -0
  558. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/VRButton/VRButton.css +0 -0
  559. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/Viewer/Viewer.css +0 -0
  560. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/VoxelInspector/VoxelInspector.css +0 -0
  561. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/lighter.css +0 -0
  562. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/lighterShared.css +0 -0
  563. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/shared.css +0 -0
  564. /package/dist/cesium/{Widgets → node_modules/.pnpm/cesium@1.141.0/node_modules/cesium/Build/Cesium/Widgets}/widgets.css +0 -0
@@ -0,0 +1,165 @@
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
+ * State for the Split tool.
7
+ *
8
+ * Single-element flow today: user hovers a wall, the overlay
9
+ * projects the cursor onto the wall's axis to compute a candidate
10
+ * cut distance, click commits via `MutationSlice.splitWallAtDistance`.
11
+ *
12
+ * Bigger surface (slab cut-line, multi-element plane split, beam /
13
+ * column / member) is in `docs/design/element-splitting.md` and
14
+ * arrives in subsequent phases. The slice is shaped to grow without
15
+ * a breaking rename — `splitMode` covers the future modes;
16
+ * `splitHoverPoint` and `splitTargetExpressId` will be reused.
17
+ */
18
+
19
+ import type { StateCreator } from 'zustand';
20
+
21
+ /**
22
+ * Split-tool state machine:
23
+ * - `'idle'` — cursor isn't over a splittable element
24
+ * - `'aiming'` — preview cut is live for a single-click element
25
+ * (wall / beam / column / member)
26
+ * - `'first-anchor'` — slab two-click flow: user clicked once,
27
+ * the anchor is latched, the cursor's second click commits
28
+ * the cut line. Esc clears back to `'idle'`.
29
+ */
30
+ export type SplitMode = 'idle' | 'aiming' | 'first-anchor';
31
+
32
+ export interface SplitToolSlice {
33
+ /** Tool state machine. `'idle'` while the cursor isn't over a
34
+ * splittable element; `'aiming'` while a preview cut is live. */
35
+ splitMode: SplitMode;
36
+ /** Federated model id that owns the hovered target. */
37
+ splitTargetModelId: string | null;
38
+ /** Express id of the hovered wall. */
39
+ splitTargetExpressId: number | null;
40
+ /**
41
+ * Cursor in storey-local IFC space (Z-up). The overlay reads
42
+ * this to drive a per-frame preview without trampolining through
43
+ * camera projection.
44
+ */
45
+ splitHoverPoint: [number, number, number] | null;
46
+ /**
47
+ * Cached projection from the last hover update — distance along
48
+ * the wall axis from start. Single source of truth for both the
49
+ * SVG preview label and the commit handler.
50
+ */
51
+ splitHoverDistance: number | null;
52
+ /** Total length of the hovered wall (for the "1.42 / 3.50 m" label). */
53
+ splitHoverLength: number | null;
54
+ /** Cut point in storey-local space, derived from distance + wall axis. */
55
+ splitHoverCutPoint: [number, number, number] | null;
56
+ /**
57
+ * Unit-length axis direction in storey-local IFC space (Z-up).
58
+ * Used by the overlay to compute the perpendicular guide line
59
+ * without re-walking the IFC chain. Element-type-agnostic — wall
60
+ * axis lies on the storey plane, beam/member axis can have a Z
61
+ * component, column axis is `[0, 0, 1]`.
62
+ */
63
+ splitHoverAxisDirection: [number, number, number] | null;
64
+ /**
65
+ * Slab two-click flow: storey-local XY of the first click. When
66
+ * set, the tool is in `'first-anchor'` state and the next click
67
+ * commits a cut line from the anchor to the cursor.
68
+ */
69
+ slabCutAnchor: [number, number] | null;
70
+ /**
71
+ * Slab cached footprint polygon (storey-local 2D) — read once on
72
+ * first-anchor latch so the overlay can render the polygon
73
+ * outline and clip the ghost cut line against it without
74
+ * re-walking the IFC chain per frame.
75
+ */
76
+ slabCutFootprint: [number, number][] | null;
77
+ slabCutStoreyElevation: number | null;
78
+
79
+ setSplitTarget: (modelId: string | null, expressId: number | null) => void;
80
+ setSplitHover: (
81
+ hoverPoint: [number, number, number] | null,
82
+ distance: number | null,
83
+ length: number | null,
84
+ cutPoint: [number, number, number] | null,
85
+ axisDirection: [number, number, number] | null,
86
+ ) => void;
87
+ /**
88
+ * Slab flow: latch the first click + cache the footprint so the
89
+ * overlay's per-frame work stays cheap. Promotes the tool to
90
+ * `'first-anchor'`.
91
+ */
92
+ setSlabCutAnchor: (
93
+ anchor: [number, number] | null,
94
+ footprint: [number, number][] | null,
95
+ storeyElevation: number | null,
96
+ ) => void;
97
+ clearSplitHover: () => void;
98
+ }
99
+
100
+ export const createSplitToolSlice: StateCreator<SplitToolSlice, [], [], SplitToolSlice> = (set) => ({
101
+ splitMode: 'idle',
102
+ splitTargetModelId: null,
103
+ splitTargetExpressId: null,
104
+ splitHoverPoint: null,
105
+ splitHoverDistance: null,
106
+ splitHoverLength: null,
107
+ splitHoverCutPoint: null,
108
+ splitHoverAxisDirection: null,
109
+ slabCutAnchor: null,
110
+ slabCutFootprint: null,
111
+ slabCutStoreyElevation: null,
112
+
113
+ setSplitTarget: (modelId, expressId) =>
114
+ set((s) => ({
115
+ splitTargetModelId: modelId,
116
+ splitTargetExpressId: expressId,
117
+ // Entering / leaving a target without a hover yet means we're
118
+ // back to 'idle' (unless we're mid-slab-cut, in which case
119
+ // we preserve the latched anchor — the user might re-enter
120
+ // the slab from outside).
121
+ splitMode: s.splitMode === 'first-anchor' ? 'first-anchor' : 'idle',
122
+ splitHoverPoint: null,
123
+ splitHoverDistance: null,
124
+ splitHoverLength: null,
125
+ splitHoverCutPoint: null,
126
+ splitHoverAxisDirection: null,
127
+ })),
128
+ setSplitHover: (hoverPoint, distance, length, cutPoint, axisDirection) =>
129
+ set((s) => ({
130
+ splitHoverPoint: hoverPoint,
131
+ splitHoverDistance: distance,
132
+ splitHoverLength: length,
133
+ splitHoverCutPoint: cutPoint,
134
+ splitHoverAxisDirection: axisDirection,
135
+ // Promote to 'aiming' on first hover; don't downgrade the
136
+ // slab two-click state when hover ends mid-flow.
137
+ splitMode:
138
+ s.splitMode === 'first-anchor'
139
+ ? 'first-anchor'
140
+ : hoverPoint !== null
141
+ ? 'aiming'
142
+ : 'idle',
143
+ })),
144
+ setSlabCutAnchor: (anchor, footprint, storeyElevation) =>
145
+ set({
146
+ slabCutAnchor: anchor,
147
+ slabCutFootprint: footprint,
148
+ slabCutStoreyElevation: storeyElevation,
149
+ splitMode: anchor === null ? 'idle' : 'first-anchor',
150
+ }),
151
+ clearSplitHover: () =>
152
+ set({
153
+ splitMode: 'idle',
154
+ splitTargetModelId: null,
155
+ splitTargetExpressId: null,
156
+ splitHoverPoint: null,
157
+ splitHoverDistance: null,
158
+ splitHoverLength: null,
159
+ splitHoverCutPoint: null,
160
+ splitHoverAxisDirection: null,
161
+ slabCutAnchor: null,
162
+ slabCutFootprint: null,
163
+ slabCutStoreyElevation: null,
164
+ }),
165
+ });
@@ -0,0 +1,210 @@
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
+ import { describe, it, beforeEach, afterEach } from 'node:test';
6
+ import assert from 'node:assert';
7
+
8
+ /**
9
+ * Stand up minimal browser globals — `uiSlice.ts` reaches into
10
+ * `localStorage` (theme seed), `matchMedia` (theme detection), and
11
+ * `document.documentElement.classList` (theme apply) at construction
12
+ * time. Mirrors the harness in `uiSlice.merge-layers.test.ts`.
13
+ */
14
+ function installGlobals(): void {
15
+ const store: Record<string, string> = {};
16
+ Object.defineProperty(globalThis, 'localStorage', {
17
+ value: {
18
+ getItem: (k: string) => (k in store ? store[k] : null),
19
+ setItem: (k: string, v: string) => {
20
+ store[k] = String(v);
21
+ },
22
+ removeItem: (k: string) => {
23
+ delete store[k];
24
+ },
25
+ clear: () => {
26
+ for (const k of Object.keys(store)) delete store[k];
27
+ },
28
+ key: (i: number) => Object.keys(store)[i] ?? null,
29
+ get length() {
30
+ return Object.keys(store).length;
31
+ },
32
+ },
33
+ configurable: true,
34
+ writable: true,
35
+ });
36
+ Object.defineProperty(globalThis, 'window', {
37
+ value: globalThis,
38
+ configurable: true,
39
+ writable: true,
40
+ });
41
+ Object.defineProperty(globalThis, 'matchMedia', {
42
+ value: () => ({ matches: false, addEventListener: () => {}, removeEventListener: () => {} }),
43
+ configurable: true,
44
+ writable: true,
45
+ });
46
+ Object.defineProperty(globalThis, 'document', {
47
+ value: {
48
+ documentElement: {
49
+ classList: {
50
+ toggle: () => {},
51
+ add: () => {},
52
+ remove: () => {},
53
+ contains: () => false,
54
+ },
55
+ },
56
+ },
57
+ configurable: true,
58
+ writable: true,
59
+ });
60
+ }
61
+
62
+ function uninstallGlobals(): void {
63
+ Reflect.deleteProperty(globalThis as Record<string, unknown>, 'localStorage');
64
+ Reflect.deleteProperty(globalThis as Record<string, unknown>, 'window');
65
+ Reflect.deleteProperty(globalThis as Record<string, unknown>, 'matchMedia');
66
+ Reflect.deleteProperty(globalThis as Record<string, unknown>, 'document');
67
+ }
68
+
69
+ interface SliceHandle {
70
+ readonly state: Record<string, unknown>;
71
+ }
72
+
73
+ /**
74
+ * Build a fresh UISlice on top of a mock combined state.
75
+ *
76
+ * The slice's `createUISlice` returns its own initial values (default
77
+ * `activeTool`, `editEnabled: false`, etc.) which sit on top of the
78
+ * cross-slice seeds. To exercise non-default starting conditions,
79
+ * tests pass `overrides` — these are merged in AFTER slice creation
80
+ * so they actually take effect, rather than being overwritten by the
81
+ * slice's own initial values.
82
+ */
83
+ async function buildSlice(overrides: Record<string, unknown> = {}): Promise<SliceHandle> {
84
+ const mod = await import('./uiSlice.js');
85
+ const createUISlice = (mod as { createUISlice: (...args: unknown[]) => unknown }).createUISlice;
86
+ let state: Record<string, unknown> = {
87
+ models: new Map(),
88
+ geometryResult: null,
89
+ // Cesium cross-slice seeds — the slice writes through these when
90
+ // exiting edit mode.
91
+ cesiumPlacementEditMode: false,
92
+ cesiumPlacementDraftModelId: null,
93
+ cesiumPlacementDraft: null,
94
+ };
95
+ const setState = (partial: unknown) => {
96
+ if (typeof partial === 'function') {
97
+ const updates = (partial as (s: Record<string, unknown>) => Record<string, unknown>)(state);
98
+ state = { ...state, ...updates };
99
+ } else {
100
+ state = { ...state, ...(partial as Record<string, unknown>) };
101
+ }
102
+ };
103
+ const getState = () => state;
104
+ state = {
105
+ ...state,
106
+ ...(createUISlice as (set: unknown, get: unknown, api: unknown) => Record<string, unknown>)(setState, getState, {}),
107
+ ...overrides,
108
+ };
109
+ return {
110
+ get state() {
111
+ return state;
112
+ },
113
+ };
114
+ }
115
+
116
+ describe('UISlice — edit mode', () => {
117
+ beforeEach(() => installGlobals());
118
+ afterEach(() => uninstallGlobals());
119
+
120
+ it('starts disabled', async () => {
121
+ const slice = await buildSlice();
122
+ assert.strictEqual(slice.state.editEnabled, false);
123
+ });
124
+
125
+ it('toggle flips the flag', async () => {
126
+ const slice = await buildSlice();
127
+ (slice.state.toggleEditEnabled as () => void)();
128
+ assert.strictEqual(slice.state.editEnabled, true);
129
+ (slice.state.toggleEditEnabled as () => void)();
130
+ assert.strictEqual(slice.state.editEnabled, false);
131
+ });
132
+
133
+ it('setEditEnabled(true) leaves authoring tools untouched', async () => {
134
+ const slice = await buildSlice({ activeTool: 'measure' });
135
+ (slice.state.setEditEnabled as (v: boolean) => void)(true);
136
+ assert.strictEqual(slice.state.editEnabled, true);
137
+ assert.strictEqual(slice.state.activeTool, 'measure');
138
+ });
139
+
140
+ it('setEditEnabled(true) auto-opens the Add Element panel when nothing is selected', async () => {
141
+ // Default state has activeTool === 'select' and no selectedEntity,
142
+ // so flipping edit on should swap to 'addElement' as a friction-
143
+ // free entry into the authoring flow.
144
+ const slice = await buildSlice({ activeTool: 'select', selectedEntity: null });
145
+ (slice.state.setEditEnabled as (v: boolean) => void)(true);
146
+ assert.strictEqual(slice.state.editEnabled, true);
147
+ assert.strictEqual(slice.state.activeTool, 'addElement');
148
+ });
149
+
150
+ it('setEditEnabled(true) leaves activeTool=select when an entity IS selected', async () => {
151
+ // With a selection in hand the user is most likely going to use
152
+ // the Properties / Geometry edit card next — don't yank focus
153
+ // into the Add panel.
154
+ const slice = await buildSlice({
155
+ activeTool: 'select',
156
+ selectedEntity: { modelId: 'm', expressId: 1 },
157
+ });
158
+ (slice.state.setEditEnabled as (v: boolean) => void)(true);
159
+ assert.strictEqual(slice.state.editEnabled, true);
160
+ assert.strictEqual(slice.state.activeTool, 'select');
161
+ });
162
+
163
+ it('setEditEnabled(false) exits the add-element tool', async () => {
164
+ const slice = await buildSlice({ activeTool: 'addElement', editEnabled: true });
165
+ (slice.state.setEditEnabled as (v: boolean) => void)(false);
166
+ assert.strictEqual(slice.state.editEnabled, false);
167
+ assert.strictEqual(slice.state.activeTool, 'select');
168
+ });
169
+
170
+ it('setEditEnabled(false) clears cesium placement state', async () => {
171
+ const slice = await buildSlice({
172
+ activeTool: 'cesium-placement',
173
+ editEnabled: true,
174
+ cesiumPlacementEditMode: true,
175
+ cesiumPlacementDraftModelId: 'model-1',
176
+ cesiumPlacementDraft: { eastings: 1, northings: 2, orthogonalHeight: 3, xAxisAbscissa: 1, xAxisOrdinate: 0 },
177
+ });
178
+ (slice.state.setEditEnabled as (v: boolean) => void)(false);
179
+ assert.strictEqual(slice.state.editEnabled, false);
180
+ assert.strictEqual(slice.state.activeTool, 'select');
181
+ assert.strictEqual(slice.state.cesiumPlacementEditMode, false);
182
+ assert.strictEqual(slice.state.cesiumPlacementDraftModelId, null);
183
+ assert.strictEqual(slice.state.cesiumPlacementDraft, null);
184
+ });
185
+
186
+ it('setEditEnabled(false) preserves non-edit tools', async () => {
187
+ const slice = await buildSlice({ activeTool: 'section', editEnabled: true });
188
+ (slice.state.setEditEnabled as (v: boolean) => void)(false);
189
+ assert.strictEqual(slice.state.activeTool, 'section');
190
+ });
191
+
192
+ it('setActiveTool to addElement auto-enables edit mode', async () => {
193
+ const slice = await buildSlice();
194
+ (slice.state.setActiveTool as (t: string) => void)('addElement');
195
+ assert.strictEqual(slice.state.activeTool, 'addElement');
196
+ assert.strictEqual(slice.state.editEnabled, true);
197
+ });
198
+
199
+ it('setActiveTool to cesium-placement auto-enables edit mode', async () => {
200
+ const slice = await buildSlice();
201
+ (slice.state.setActiveTool as (t: string) => void)('cesium-placement');
202
+ assert.strictEqual(slice.state.editEnabled, true);
203
+ });
204
+
205
+ it('setActiveTool to a read-only tool does not touch edit mode', async () => {
206
+ const slice = await buildSlice({ editEnabled: false });
207
+ (slice.state.setActiveTool as (t: string) => void)('measure');
208
+ assert.strictEqual(slice.state.editEnabled, false);
209
+ });
210
+ });
@@ -11,9 +11,24 @@ import { MERGE_LAYERS_STORAGE_KEY, UI_DEFAULTS } from '../constants.js';
11
11
  import type { ContactShadingQuality, SeparationLinesQuality } from '@ifc-lite/renderer';
12
12
  import type { FederatedModel } from '../types.js';
13
13
  import type { GeometryResult } from '@ifc-lite/geometry';
14
+ import type { CesiumPlacementDraft } from './cesiumSlice.js';
14
15
 
15
16
  export type ThemeMode = 'light' | 'dark' | 'colorful';
16
17
 
18
+ /**
19
+ * Tools that require edit mode to function. Entering one of them
20
+ * flips `editEnabled` on; leaving edit mode forces these tools
21
+ * back to `'select'`. Keep the list in sync — duplicating the
22
+ * authoring-tool check between `setActiveTool` and
23
+ * `setEditEnabled` is how the two states drift apart in the
24
+ * "enter edit, switch tool, exit edit" flow.
25
+ */
26
+ const AUTHORING_TOOLS: ReadonlySet<string> = new Set([
27
+ 'addElement',
28
+ 'cesium-placement',
29
+ 'split',
30
+ ]);
31
+
17
32
  /**
18
33
  * Cross-slice surface UISlice reaches into via the combined Zustand
19
34
  * `get()` to decide whether toggling a load-time setting needs a
@@ -22,6 +37,15 @@ export type ThemeMode = 'light' | 'dark' | 'colorful';
22
37
  export interface UICrossSliceState {
23
38
  models: Map<string, FederatedModel>;
24
39
  geometryResult: GeometryResult | null;
40
+ /**
41
+ * Cesium placement draft state owned by `CesiumSlice`. UISlice
42
+ * reaches in to clear it when global edit mode flips off, so that
43
+ * "exit edit" really exits everything (the placement editor, the
44
+ * draft values, the active tool) in a single atomic update.
45
+ */
46
+ cesiumPlacementEditMode: boolean;
47
+ cesiumPlacementDraftModelId: string | null;
48
+ cesiumPlacementDraft: CesiumPlacementDraft | null;
25
49
  }
26
50
 
27
51
  export interface UISlice {
@@ -29,6 +53,16 @@ export interface UISlice {
29
53
  leftPanelCollapsed: boolean;
30
54
  rightPanelCollapsed: boolean;
31
55
  activeTool: string;
56
+ /**
57
+ * Global edit mode. When `true`, all in-place editing affordances
58
+ * (inline property/attribute editors, future geometry manipulators,
59
+ * georeference placement, the add-element draw tools) are unlocked.
60
+ * When `false` the viewer is strictly read-only — this is the
61
+ * default. The toggle is surfaced as a single pill in the main
62
+ * toolbar so the user has one switch for "am I editing anything?"
63
+ * rather than per-panel toggles.
64
+ */
65
+ editEnabled: boolean;
32
66
  theme: ThemeMode;
33
67
  isMobile: boolean;
34
68
  hoverTooltipsEnabled: boolean;
@@ -56,6 +90,8 @@ export interface UISlice {
56
90
  setLeftPanelCollapsed: (collapsed: boolean) => void;
57
91
  setRightPanelCollapsed: (collapsed: boolean) => void;
58
92
  setActiveTool: (tool: string) => void;
93
+ setEditEnabled: (enabled: boolean) => void;
94
+ toggleEditEnabled: () => void;
59
95
  setTheme: (theme: ThemeMode) => void;
60
96
  toggleTheme: () => void;
61
97
  /** Shift+click secret: toggle colorful mode on/off */
@@ -101,6 +137,7 @@ export const createUISlice: StateCreator<UISlice & UICrossSliceState, [], [], UI
101
137
  leftPanelCollapsed: false,
102
138
  rightPanelCollapsed: false,
103
139
  activeTool: UI_DEFAULTS.ACTIVE_TOOL,
140
+ editEnabled: false,
104
141
  theme: UI_DEFAULTS.THEME,
105
142
  isMobile: false,
106
143
  hoverTooltipsEnabled: UI_DEFAULTS.HOVER_TOOLTIPS_ENABLED,
@@ -120,7 +157,47 @@ export const createUISlice: StateCreator<UISlice & UICrossSliceState, [], [], UI
120
157
  // Actions
121
158
  setLeftPanelCollapsed: (leftPanelCollapsed) => set({ leftPanelCollapsed }),
122
159
  setRightPanelCollapsed: (rightPanelCollapsed) => set({ rightPanelCollapsed }),
123
- setActiveTool: (activeTool) => set({ activeTool }),
160
+ setActiveTool: (activeTool) => {
161
+ // Authoring tools require edit mode. Entering one of them flips
162
+ // the global toggle on so the rest of the UI (Properties panel,
163
+ // future manipulators) stays in sync. Read-only tools leave the
164
+ // flag alone.
165
+ set(AUTHORING_TOOLS.has(activeTool) ? { activeTool, editEnabled: true } : { activeTool });
166
+ },
167
+ setEditEnabled: (editEnabled) => {
168
+ if (!editEnabled) {
169
+ // Flipping edit mode off must clear every authoring sub-state
170
+ // that depends on it — otherwise the viewer ends up "not in
171
+ // edit mode" but still carrying a georef draft or a half-drawn
172
+ // slab polygon. Cross-slice reset lives here so callers don't
173
+ // have to remember to mop up.
174
+ set((s) => ({
175
+ editEnabled: false,
176
+ activeTool: AUTHORING_TOOLS.has(s.activeTool) ? 'select' : s.activeTool,
177
+ cesiumPlacementEditMode: false,
178
+ cesiumPlacementDraftModelId: null,
179
+ cesiumPlacementDraft: null,
180
+ }));
181
+ return;
182
+ }
183
+ // Turning edit mode ON with nothing selected auto-opens the
184
+ // AddElement panel — most "I want to edit" sessions start
185
+ // with adding something, and forcing the user to click an
186
+ // extra button to reach the panel adds friction. When a
187
+ // selection already exists, leave activeTool alone so the
188
+ // Properties panel + Geometry edit card stay primary.
189
+ set((s) => {
190
+ const next: Partial<UISlice & UICrossSliceState> = { editEnabled: true };
191
+ const slice = s as unknown as { selectedEntity?: unknown };
192
+ if (s.activeTool === 'select' && !slice.selectedEntity) {
193
+ next.activeTool = 'addElement';
194
+ }
195
+ return next;
196
+ });
197
+ },
198
+ toggleEditEnabled: () => {
199
+ get().setEditEnabled(!get().editEnabled);
200
+ },
124
201
 
125
202
  setTheme: (theme) => {
126
203
  applyThemeClasses(theme);
@@ -228,6 +228,14 @@ export interface CameraCallbacks {
228
228
  frameSelection?: () => void;
229
229
  orbit?: (deltaX: number, deltaY: number) => void;
230
230
  projectToScreen?: (worldPos: { x: number; y: number; z: number }) => { x: number; y: number } | null;
231
+ /**
232
+ * Unproject a screen pixel onto the horizontal plane at the
233
+ * specified world Y. Used by drag handles (wall endpoints,
234
+ * georeference move) to convert a cursor position back into
235
+ * world coordinates on the storey floor. Returns null when the
236
+ * camera ray is parallel to the plane or points the wrong way.
237
+ */
238
+ unprojectToFloor?: (clientX: number, clientY: number, worldY: number) => { x: number; y: number; z: number } | null;
231
239
  setProjectionMode?: (mode: ProjectionMode) => void;
232
240
  toggleProjectionMode?: () => void;
233
241
  getProjectionMode?: () => ProjectionMode;
@@ -240,9 +248,20 @@ export interface CameraCallbacks {
240
248
  // ============================================================================
241
249
 
242
250
  import type { IfcDataStore } from '@ifc-lite/parser';
243
- import type { GeometryResult } from '@ifc-lite/geometry';
251
+ import type { CoordinateInfo, GeometryResult } from '@ifc-lite/geometry';
244
252
 
245
- /** Compound identifier for entities across multiple models */
253
+ /**
254
+ * Compound identifier for entities across multiple models.
255
+ *
256
+ * Structurally identical to `@ifc-lite/sdk`'s EntityRef, but
257
+ * defined locally because the desktop app bundles viewer source
258
+ * via tsconfig path aliases and does not declare `@ifc-lite/sdk`
259
+ * as a workspace dep — re-exporting from the SDK breaks the
260
+ * desktop Vite build with an unresolvable module. Keep the
261
+ * shapes in sync manually; both packages exhaustively test
262
+ * EntityRef-shaped values, so drift will surface at the
263
+ * federation boundary.
264
+ */
246
265
  export interface EntityRef {
247
266
  modelId: string;
248
267
  expressId: number;
@@ -389,6 +408,42 @@ export interface FederatedModel {
389
408
  * when the model is dropped from the store.
390
409
  */
391
410
  pointCloudHandleId?: number;
411
+ /**
412
+ * Snapshot of mesh positions before federation alignment ran (one Float32Array
413
+ * per mesh, indexed in `geometryResult.meshes` order). Populated when this
414
+ * model joined an existing federation and its geometry was re-baked into the
415
+ * anchor's viewer frame. Used by `realignFederation()` to re-apply alignment
416
+ * against a different anchor without re-parsing the source file.
417
+ *
418
+ * Stays `undefined` for single-model loads and the federation anchor itself
419
+ * (which has no alignment applied).
420
+ */
421
+ preAlignmentPositions?: Float32Array[];
422
+ /**
423
+ * Snapshot of mesh normals before federation alignment ran (one Float32Array
424
+ * per mesh, sparse — empty slot when a mesh had no normals). Restored
425
+ * alongside `preAlignmentPositions` on re-alignment so repeated re-bakes
426
+ * don't accumulate rotation drift on the normals (lighting/shading bug).
427
+ */
428
+ preAlignmentNormals?: (Float32Array | undefined)[];
429
+ /**
430
+ * CoordinateInfo at the time `preAlignmentPositions` was taken. Restored
431
+ * together with the positions on re-alignment so the source's RTC/shift
432
+ * frame is recovered before applying the new alignment.
433
+ */
434
+ preAlignmentCoordinateInfo?: CoordinateInfo;
435
+ /**
436
+ * How this model was placed in the current federation:
437
+ * - `'anchor'` — this model drives the world frame, no alignment
438
+ * - `'same-crs'` — vertex transform applied (shared projected CRS)
439
+ * - `'reprojected'` — per-vertex proj4 hop into the anchor's CRS
440
+ * - `'identity'` — same CRS and same MapConversion → no change needed
441
+ * - `'failed'` — alignment could not be computed; model rendered in
442
+ * its own local frame and likely at the wrong real
443
+ * world position
444
+ * - `'none'` — single-model load or first georeferenced model
445
+ */
446
+ federationAlignmentStatus?: 'anchor' | 'same-crs' | 'reprojected' | 'identity' | 'failed' | 'none';
392
447
  }
393
448
 
394
449
  /** Convert EntityRef to string for use as Map/Set key */
@@ -0,0 +1,37 @@
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
+ * Generate a minimal blank IFC4 model as a synthetic `File`, so the
7
+ * welcome card's "Start blank" action can feed it through the regular
8
+ * `loadFile()` pipeline (format detection → WASM → store federation)
9
+ * without diverging code paths.
10
+ *
11
+ * The result has the smallest spatial hierarchy that satisfies the
12
+ * Add Element panel's gating (`AddElementPanel.tsx`): one IfcProject,
13
+ * IfcSite, IfcBuilding and a single IfcBuildingStorey at elevation 0.
14
+ */
15
+
16
+ import { IfcCreator } from '@ifc-lite/create';
17
+
18
+ export interface BlankIfcOptions {
19
+ projectName?: string;
20
+ storeyName?: string;
21
+ storeyElevation?: number;
22
+ }
23
+
24
+ export function createBlankIfcFile(options: BlankIfcOptions = {}): File {
25
+ const {
26
+ projectName = 'Untitled Project',
27
+ storeyName = 'Level 1',
28
+ storeyElevation = 0,
29
+ } = options;
30
+
31
+ const creator = new IfcCreator({ Name: projectName });
32
+ creator.addIfcBuildingStorey({ Name: storeyName, Elevation: storeyElevation });
33
+ const { content } = creator.toIfc();
34
+
35
+ const safeName = projectName.replace(/[^a-z0-9_-]+/gi, '_').replace(/^_+|_+$/g, '') || 'untitled';
36
+ return new File([content], `${safeName}.ifc`, { type: 'application/ifc' });
37
+ }
package/tsconfig.json CHANGED
@@ -3,6 +3,7 @@
3
3
  "compilerOptions": {
4
4
  "jsx": "react-jsx",
5
5
  "outDir": "./dist",
6
+ "rootDir": "../..",
6
7
  "baseUrl": ".",
7
8
  "paths": {
8
9
  "@/*": ["./src/*"],
@@ -1,4 +0,0 @@
1
-
2
- > @ifc-lite/viewer@1.22.0 typecheck /home/runner/work/ifc-lite/ifc-lite/apps/viewer
3
- > tsc --noEmit
4
-
Binary file