@ifc-lite/viewer 1.17.2 → 1.17.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +34 -24
- package/.turbo/turbo-typecheck.log +1 -42
- package/CHANGELOG.md +24 -0
- package/DESKTOP_CONTRACT_VERSION +1 -0
- package/dist/assets/arrow-CZ5kQ26f.js +20 -0
- package/dist/assets/basketViewActivator-BmnNtVfZ.js +1 -0
- package/dist/assets/bcf-DOG9_WPX.js +281 -0
- package/dist/assets/{browser-BDShTXzi.js → browser-C5TFR7sH.js} +1 -1
- package/dist/assets/cesium-ADbP7waU.css +1 -0
- package/dist/assets/cesium-DUOzBlqv.js +17817 -0
- package/dist/assets/drawing-2d-gWfpdfYe.js +257 -0
- package/dist/assets/epsg-index.generated-BjJrt_0S.js +1 -0
- package/dist/assets/exporters-ChAtBmlj.js +80367 -0
- package/dist/assets/geometry.worker-BQ0rzNo-.js +1 -0
- package/dist/assets/ids-B4jTqB1O.js +1 -0
- package/dist/assets/ifc-lite_bg-BX4E7TX8.wasm +0 -0
- package/dist/assets/index-Co8E2-FE.js +106013 -0
- package/dist/assets/index-DckuDqlv.css +1 -0
- package/dist/assets/lens-CSASnhAL.js +1 -0
- package/dist/assets/maplibre-gl-CGLcoNXc.js +811 -0
- package/dist/assets/native-bridge-BRvbckFQ.js +429 -0
- package/dist/assets/{arrow2-bb-jcVEo.js → parquet-CEXmQNRO.js} +2 -2
- package/dist/assets/sandbox-DZiNLNMk.js +5933 -0
- package/dist/assets/server-client-BV8zHZ7Y.js +626 -0
- package/dist/assets/tauri-core-stub-D8Fa-u43.js +1 -0
- package/dist/assets/tauri-dialog-stub-r7Wksg7o.js +1 -0
- package/dist/assets/tauri-fs-stub-BdeRC7aK.js +1 -0
- package/dist/assets/wasm-bridge-g01g7T9b.js +1 -0
- package/dist/assets/zip-DBEtpeu6.js +12 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
- package/dist/cesium/Assets/Images/bing_maps_credit.png +0 -0
- package/dist/cesium/Assets/Images/cesium_credit.png +0 -0
- package/dist/cesium/Assets/Images/google_earth_credit.png +0 -0
- package/dist/cesium/Assets/Images/ion-credit.png +0 -0
- package/dist/cesium/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
- package/dist/cesium/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml +14 -0
- package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
- package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
- package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
- package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
- package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
- package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
- package/dist/cesium/Assets/Textures/maki/airfield.png +0 -0
- package/dist/cesium/Assets/Textures/maki/airport.png +0 -0
- package/dist/cesium/Assets/Textures/maki/alcohol-shop.png +0 -0
- package/dist/cesium/Assets/Textures/maki/america-football.png +0 -0
- package/dist/cesium/Assets/Textures/maki/art-gallery.png +0 -0
- package/dist/cesium/Assets/Textures/maki/bakery.png +0 -0
- package/dist/cesium/Assets/Textures/maki/bank.png +0 -0
- package/dist/cesium/Assets/Textures/maki/bar.png +0 -0
- package/dist/cesium/Assets/Textures/maki/baseball.png +0 -0
- package/dist/cesium/Assets/Textures/maki/basketball.png +0 -0
- package/dist/cesium/Assets/Textures/maki/beer.png +0 -0
- package/dist/cesium/Assets/Textures/maki/bicycle.png +0 -0
- package/dist/cesium/Assets/Textures/maki/building.png +0 -0
- package/dist/cesium/Assets/Textures/maki/bus.png +0 -0
- package/dist/cesium/Assets/Textures/maki/cafe.png +0 -0
- package/dist/cesium/Assets/Textures/maki/camera.png +0 -0
- package/dist/cesium/Assets/Textures/maki/campsite.png +0 -0
- package/dist/cesium/Assets/Textures/maki/car.png +0 -0
- package/dist/cesium/Assets/Textures/maki/cemetery.png +0 -0
- package/dist/cesium/Assets/Textures/maki/cesium.png +0 -0
- package/dist/cesium/Assets/Textures/maki/chemist.png +0 -0
- package/dist/cesium/Assets/Textures/maki/cinema.png +0 -0
- package/dist/cesium/Assets/Textures/maki/circle-stroked.png +0 -0
- package/dist/cesium/Assets/Textures/maki/circle.png +0 -0
- package/dist/cesium/Assets/Textures/maki/city.png +0 -0
- package/dist/cesium/Assets/Textures/maki/clothing-store.png +0 -0
- package/dist/cesium/Assets/Textures/maki/college.png +0 -0
- package/dist/cesium/Assets/Textures/maki/commercial.png +0 -0
- package/dist/cesium/Assets/Textures/maki/cricket.png +0 -0
- package/dist/cesium/Assets/Textures/maki/cross.png +0 -0
- package/dist/cesium/Assets/Textures/maki/dam.png +0 -0
- package/dist/cesium/Assets/Textures/maki/danger.png +0 -0
- package/dist/cesium/Assets/Textures/maki/disability.png +0 -0
- package/dist/cesium/Assets/Textures/maki/dog-park.png +0 -0
- package/dist/cesium/Assets/Textures/maki/embassy.png +0 -0
- package/dist/cesium/Assets/Textures/maki/emergency-telephone.png +0 -0
- package/dist/cesium/Assets/Textures/maki/entrance.png +0 -0
- package/dist/cesium/Assets/Textures/maki/farm.png +0 -0
- package/dist/cesium/Assets/Textures/maki/fast-food.png +0 -0
- package/dist/cesium/Assets/Textures/maki/ferry.png +0 -0
- package/dist/cesium/Assets/Textures/maki/fire-station.png +0 -0
- package/dist/cesium/Assets/Textures/maki/fuel.png +0 -0
- package/dist/cesium/Assets/Textures/maki/garden.png +0 -0
- package/dist/cesium/Assets/Textures/maki/gift.png +0 -0
- package/dist/cesium/Assets/Textures/maki/golf.png +0 -0
- package/dist/cesium/Assets/Textures/maki/grocery.png +0 -0
- package/dist/cesium/Assets/Textures/maki/hairdresser.png +0 -0
- package/dist/cesium/Assets/Textures/maki/harbor.png +0 -0
- package/dist/cesium/Assets/Textures/maki/heart.png +0 -0
- package/dist/cesium/Assets/Textures/maki/heliport.png +0 -0
- package/dist/cesium/Assets/Textures/maki/hospital.png +0 -0
- package/dist/cesium/Assets/Textures/maki/ice-cream.png +0 -0
- package/dist/cesium/Assets/Textures/maki/industrial.png +0 -0
- package/dist/cesium/Assets/Textures/maki/land-use.png +0 -0
- package/dist/cesium/Assets/Textures/maki/laundry.png +0 -0
- package/dist/cesium/Assets/Textures/maki/library.png +0 -0
- package/dist/cesium/Assets/Textures/maki/lighthouse.png +0 -0
- package/dist/cesium/Assets/Textures/maki/lodging.png +0 -0
- package/dist/cesium/Assets/Textures/maki/logging.png +0 -0
- package/dist/cesium/Assets/Textures/maki/london-underground.png +0 -0
- package/dist/cesium/Assets/Textures/maki/marker-stroked.png +0 -0
- package/dist/cesium/Assets/Textures/maki/marker.png +0 -0
- package/dist/cesium/Assets/Textures/maki/minefield.png +0 -0
- package/dist/cesium/Assets/Textures/maki/mobilephone.png +0 -0
- package/dist/cesium/Assets/Textures/maki/monument.png +0 -0
- package/dist/cesium/Assets/Textures/maki/museum.png +0 -0
- package/dist/cesium/Assets/Textures/maki/music.png +0 -0
- package/dist/cesium/Assets/Textures/maki/oil-well.png +0 -0
- package/dist/cesium/Assets/Textures/maki/park.png +0 -0
- package/dist/cesium/Assets/Textures/maki/park2.png +0 -0
- package/dist/cesium/Assets/Textures/maki/parking-garage.png +0 -0
- package/dist/cesium/Assets/Textures/maki/parking.png +0 -0
- package/dist/cesium/Assets/Textures/maki/pharmacy.png +0 -0
- package/dist/cesium/Assets/Textures/maki/pitch.png +0 -0
- package/dist/cesium/Assets/Textures/maki/place-of-worship.png +0 -0
- package/dist/cesium/Assets/Textures/maki/playground.png +0 -0
- package/dist/cesium/Assets/Textures/maki/police.png +0 -0
- package/dist/cesium/Assets/Textures/maki/polling-place.png +0 -0
- package/dist/cesium/Assets/Textures/maki/post.png +0 -0
- package/dist/cesium/Assets/Textures/maki/prison.png +0 -0
- package/dist/cesium/Assets/Textures/maki/rail-above.png +0 -0
- package/dist/cesium/Assets/Textures/maki/rail-light.png +0 -0
- package/dist/cesium/Assets/Textures/maki/rail-metro.png +0 -0
- package/dist/cesium/Assets/Textures/maki/rail-underground.png +0 -0
- package/dist/cesium/Assets/Textures/maki/rail.png +0 -0
- package/dist/cesium/Assets/Textures/maki/religious-christian.png +0 -0
- package/dist/cesium/Assets/Textures/maki/religious-jewish.png +0 -0
- package/dist/cesium/Assets/Textures/maki/religious-muslim.png +0 -0
- package/dist/cesium/Assets/Textures/maki/restaurant.png +0 -0
- package/dist/cesium/Assets/Textures/maki/roadblock.png +0 -0
- package/dist/cesium/Assets/Textures/maki/rocket.png +0 -0
- package/dist/cesium/Assets/Textures/maki/school.png +0 -0
- package/dist/cesium/Assets/Textures/maki/scooter.png +0 -0
- package/dist/cesium/Assets/Textures/maki/shop.png +0 -0
- package/dist/cesium/Assets/Textures/maki/skiing.png +0 -0
- package/dist/cesium/Assets/Textures/maki/slaughterhouse.png +0 -0
- package/dist/cesium/Assets/Textures/maki/soccer.png +0 -0
- package/dist/cesium/Assets/Textures/maki/square-stroked.png +0 -0
- package/dist/cesium/Assets/Textures/maki/square.png +0 -0
- package/dist/cesium/Assets/Textures/maki/star-stroked.png +0 -0
- package/dist/cesium/Assets/Textures/maki/star.png +0 -0
- package/dist/cesium/Assets/Textures/maki/suitcase.png +0 -0
- package/dist/cesium/Assets/Textures/maki/swimming.png +0 -0
- package/dist/cesium/Assets/Textures/maki/telephone.png +0 -0
- package/dist/cesium/Assets/Textures/maki/tennis.png +0 -0
- package/dist/cesium/Assets/Textures/maki/theatre.png +0 -0
- package/dist/cesium/Assets/Textures/maki/toilets.png +0 -0
- package/dist/cesium/Assets/Textures/maki/town-hall.png +0 -0
- package/dist/cesium/Assets/Textures/maki/town.png +0 -0
- package/dist/cesium/Assets/Textures/maki/triangle-stroked.png +0 -0
- package/dist/cesium/Assets/Textures/maki/triangle.png +0 -0
- package/dist/cesium/Assets/Textures/maki/village.png +0 -0
- package/dist/cesium/Assets/Textures/maki/warehouse.png +0 -0
- package/dist/cesium/Assets/Textures/maki/waste-basket.png +0 -0
- package/dist/cesium/Assets/Textures/maki/water.png +0 -0
- package/dist/cesium/Assets/Textures/maki/wetland.png +0 -0
- package/dist/cesium/Assets/Textures/maki/zoo.png +0 -0
- package/dist/cesium/Assets/Textures/moonSmall.jpg +0 -0
- package/dist/cesium/Assets/Textures/pin.svg +1 -0
- package/dist/cesium/Assets/Textures/waterNormals.jpg +0 -0
- package/dist/cesium/Assets/Textures/waterNormalsSmall.jpg +0 -0
- package/dist/cesium/Assets/approximateTerrainHeights.json +1 -0
- package/dist/cesium/ThirdParty/Workers/package.json +1 -0
- package/dist/cesium/ThirdParty/Workers/zip-web-worker.js +1 -0
- package/dist/cesium/ThirdParty/basis_transcoder.wasm +0 -0
- package/dist/cesium/ThirdParty/draco_decoder.wasm +0 -0
- package/dist/cesium/ThirdParty/google-earth-dbroot-parser.js +1 -0
- package/dist/cesium/ThirdParty/wasm_splats_bg.wasm +0 -0
- package/dist/cesium/ThirdParty/zip-module.wasm +0 -0
- package/dist/cesium/Widgets/Animation/Animation.css +127 -0
- package/dist/cesium/Widgets/Animation/lighter.css +70 -0
- package/dist/cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css +108 -0
- package/dist/cesium/Widgets/BaseLayerPicker/lighter.css +22 -0
- package/dist/cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css +102 -0
- package/dist/cesium/Widgets/CesiumInspector/CesiumInspector.css +113 -0
- package/dist/cesium/Widgets/CesiumWidget/CesiumWidget.css +119 -0
- package/dist/cesium/Widgets/CesiumWidget/lighter.css +14 -0
- package/dist/cesium/Widgets/FullscreenButton/FullscreenButton.css +8 -0
- package/dist/cesium/Widgets/Geocoder/Geocoder.css +70 -0
- package/dist/cesium/Widgets/Geocoder/lighter.css +17 -0
- package/dist/cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css +27 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/azureAerial.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/azureRoads.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/bingAerial.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/bingRoads.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/blueMarble.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/earthAtNight.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/googleContour.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/googleRoadmap.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/googleSatellite.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/googleSatelliteLabels.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/mapboxStreets.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/naturalEarthII.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/openStreetMap.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/sentinel-2.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/stamenToner.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png +0 -0
- package/dist/cesium/Widgets/Images/NavigationHelp/Mouse.svg +84 -0
- package/dist/cesium/Widgets/Images/NavigationHelp/MouseLeft.svg +76 -0
- package/dist/cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg +76 -0
- package/dist/cesium/Widgets/Images/NavigationHelp/MouseRight.svg +76 -0
- package/dist/cesium/Widgets/Images/NavigationHelp/Touch.svg +120 -0
- package/dist/cesium/Widgets/Images/NavigationHelp/TouchDrag.svg +129 -0
- package/dist/cesium/Widgets/Images/NavigationHelp/TouchRotate.svg +76 -0
- package/dist/cesium/Widgets/Images/NavigationHelp/TouchTilt.svg +135 -0
- package/dist/cesium/Widgets/Images/NavigationHelp/TouchZoom.svg +74 -0
- package/dist/cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png +0 -0
- package/dist/cesium/Widgets/Images/TerrainProviders/Ellipsoid.png +0 -0
- package/dist/cesium/Widgets/Images/TimelineIcons.png +0 -0
- package/dist/cesium/Widgets/Images/info-loading.gif +0 -0
- package/dist/cesium/Widgets/InfoBox/InfoBox.css +92 -0
- package/dist/cesium/Widgets/InfoBox/InfoBoxDescription.css +178 -0
- package/dist/cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css +93 -0
- package/dist/cesium/Widgets/NavigationHelpButton/lighter.css +38 -0
- package/dist/cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css +15 -0
- package/dist/cesium/Widgets/ProjectionPicker/ProjectionPicker.css +38 -0
- package/dist/cesium/Widgets/SceneModePicker/SceneModePicker.css +56 -0
- package/dist/cesium/Widgets/SelectionIndicator/SelectionIndicator.css +20 -0
- package/dist/cesium/Widgets/Timeline/Timeline.css +103 -0
- package/dist/cesium/Widgets/Timeline/lighter.css +23 -0
- package/dist/cesium/Widgets/VRButton/VRButton.css +8 -0
- package/dist/cesium/Widgets/Viewer/Viewer.css +107 -0
- package/dist/cesium/Widgets/VoxelInspector/VoxelInspector.css +16 -0
- package/dist/cesium/Widgets/lighter.css +237 -0
- package/dist/cesium/Widgets/lighterShared.css +46 -0
- package/dist/cesium/Widgets/shared.css +103 -0
- package/dist/cesium/Widgets/widgets.css +1342 -0
- package/dist/cesium/Workers/chunk-23ZQ2IVV.js +29 -0
- package/dist/cesium/Workers/chunk-2EQO3Q56.js +26 -0
- package/dist/cesium/Workers/chunk-2MJIIVP4.js +26 -0
- package/dist/cesium/Workers/chunk-2TE5NTVD.js +26 -0
- package/dist/cesium/Workers/chunk-2ZBHLJST.js +26 -0
- package/dist/cesium/Workers/chunk-5TJMAQVL.js +26 -0
- package/dist/cesium/Workers/chunk-6BD4U3VO.js +26 -0
- package/dist/cesium/Workers/chunk-7TVGLKQF.js +26 -0
- package/dist/cesium/Workers/chunk-BTSYJ5XU.js +26 -0
- package/dist/cesium/Workers/chunk-BXMEEOCS.js +63 -0
- package/dist/cesium/Workers/chunk-BYLCY7GP.js +29 -0
- package/dist/cesium/Workers/chunk-CTHM3W6I.js +26 -0
- package/dist/cesium/Workers/chunk-CUUSNIVQ.js +26 -0
- package/dist/cesium/Workers/chunk-E3JOOS3S.js +26 -0
- package/dist/cesium/Workers/chunk-E7KYDCM5.js +26 -0
- package/dist/cesium/Workers/chunk-EDVBB7SS.js +27 -0
- package/dist/cesium/Workers/chunk-EFBN7QNX.js +26 -0
- package/dist/cesium/Workers/chunk-EQ4YRVWL.js +26 -0
- package/dist/cesium/Workers/chunk-F6PRE7D6.js +26 -0
- package/dist/cesium/Workers/chunk-FC4ZZ65J.js +26 -0
- package/dist/cesium/Workers/chunk-FFBVWF2L.js +26 -0
- package/dist/cesium/Workers/chunk-GBAA6GVX.js +26 -0
- package/dist/cesium/Workers/chunk-ICALLYLG.js +26 -0
- package/dist/cesium/Workers/chunk-ILRYTWTP.js +26 -0
- package/dist/cesium/Workers/chunk-IRNLBSEJ.js +26 -0
- package/dist/cesium/Workers/chunk-IX4VMHEV.js +26 -0
- package/dist/cesium/Workers/chunk-L6QHHACZ.js +26 -0
- package/dist/cesium/Workers/chunk-LI2ZSORM.js +26 -0
- package/dist/cesium/Workers/chunk-LSLE2RL4.js +26 -0
- package/dist/cesium/Workers/chunk-M4HLDBCG.js +26 -0
- package/dist/cesium/Workers/chunk-MJHHSGEH.js +26 -0
- package/dist/cesium/Workers/chunk-NMVKML6W.js +26 -0
- package/dist/cesium/Workers/chunk-OCWJRAXS.js +26 -0
- package/dist/cesium/Workers/chunk-OIRKANTH.js +26 -0
- package/dist/cesium/Workers/chunk-OIT7J4IC.js +26 -0
- package/dist/cesium/Workers/chunk-OLZ3FYUM.js +26 -0
- package/dist/cesium/Workers/chunk-Q5BPHJQF.js +26 -0
- package/dist/cesium/Workers/chunk-QFM5DCMQ.js +26 -0
- package/dist/cesium/Workers/chunk-QKUIYMGC.js +28 -0
- package/dist/cesium/Workers/chunk-S44JILQT.js +26 -0
- package/dist/cesium/Workers/chunk-SLT4J352.js +26 -0
- package/dist/cesium/Workers/chunk-SQMIIXB7.js +26 -0
- package/dist/cesium/Workers/chunk-TJ4XLGBQ.js +26 -0
- package/dist/cesium/Workers/chunk-TNSUQXWK.js +27 -0
- package/dist/cesium/Workers/chunk-UBOGZS7F.js +26 -0
- package/dist/cesium/Workers/chunk-V3OSTMM6.js +26 -0
- package/dist/cesium/Workers/chunk-V7QEYVP3.js +26 -0
- package/dist/cesium/Workers/chunk-VUKYSU4H.js +26 -0
- package/dist/cesium/Workers/chunk-W37FE5GR.js +26 -0
- package/dist/cesium/Workers/chunk-WBOV35NL.js +26 -0
- package/dist/cesium/Workers/chunk-WPMZLB3Y.js +26 -0
- package/dist/cesium/Workers/chunk-WWWZVEEH.js +26 -0
- package/dist/cesium/Workers/chunk-XFIQ5DEQ.js +28 -0
- package/dist/cesium/Workers/chunk-XQHLGIO7.js +26 -0
- package/dist/cesium/Workers/chunk-XUSCFAVF.js +26 -0
- package/dist/cesium/Workers/chunk-YP7I5QBZ.js +26 -0
- package/dist/cesium/Workers/chunk-Z3QF2EHT.js +26 -0
- package/dist/cesium/Workers/combineGeometry.js +26 -0
- package/dist/cesium/Workers/createBoxGeometry.js +26 -0
- package/dist/cesium/Workers/createBoxOutlineGeometry.js +26 -0
- package/dist/cesium/Workers/createCircleGeometry.js +26 -0
- package/dist/cesium/Workers/createCircleOutlineGeometry.js +26 -0
- package/dist/cesium/Workers/createCoplanarPolygonGeometry.js +26 -0
- package/dist/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +26 -0
- package/dist/cesium/Workers/createCorridorGeometry.js +26 -0
- package/dist/cesium/Workers/createCorridorOutlineGeometry.js +26 -0
- package/dist/cesium/Workers/createCylinderGeometry.js +26 -0
- package/dist/cesium/Workers/createCylinderOutlineGeometry.js +26 -0
- package/dist/cesium/Workers/createEllipseGeometry.js +26 -0
- package/dist/cesium/Workers/createEllipseOutlineGeometry.js +26 -0
- package/dist/cesium/Workers/createEllipsoidGeometry.js +26 -0
- package/dist/cesium/Workers/createEllipsoidOutlineGeometry.js +26 -0
- package/dist/cesium/Workers/createFrustumGeometry.js +26 -0
- package/dist/cesium/Workers/createFrustumOutlineGeometry.js +26 -0
- package/dist/cesium/Workers/createGeometry.js +26 -0
- package/dist/cesium/Workers/createGroundPolylineGeometry.js +26 -0
- package/dist/cesium/Workers/createPlaneGeometry.js +26 -0
- package/dist/cesium/Workers/createPlaneOutlineGeometry.js +26 -0
- package/dist/cesium/Workers/createPolygonGeometry.js +26 -0
- package/dist/cesium/Workers/createPolygonOutlineGeometry.js +26 -0
- package/dist/cesium/Workers/createPolylineGeometry.js +26 -0
- package/dist/cesium/Workers/createPolylineVolumeGeometry.js +26 -0
- package/dist/cesium/Workers/createPolylineVolumeOutlineGeometry.js +26 -0
- package/dist/cesium/Workers/createRectangleGeometry.js +26 -0
- package/dist/cesium/Workers/createRectangleOutlineGeometry.js +26 -0
- package/dist/cesium/Workers/createSimplePolylineGeometry.js +26 -0
- package/dist/cesium/Workers/createSphereGeometry.js +26 -0
- package/dist/cesium/Workers/createSphereOutlineGeometry.js +26 -0
- package/dist/cesium/Workers/createTaskProcessorWorker.js +26 -0
- package/dist/cesium/Workers/createVectorTileClampedPolylines.js +26 -0
- package/dist/cesium/Workers/createVectorTileGeometries.js +26 -0
- package/dist/cesium/Workers/createVectorTilePoints.js +26 -0
- package/dist/cesium/Workers/createVectorTilePolygons.js +26 -0
- package/dist/cesium/Workers/createVectorTilePolylines.js +26 -0
- package/dist/cesium/Workers/createVerticesFromCesium3DTilesTerrain.js +26 -0
- package/dist/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +26 -0
- package/dist/cesium/Workers/createVerticesFromHeightmap.js +26 -0
- package/dist/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +26 -0
- package/dist/cesium/Workers/createWallGeometry.js +26 -0
- package/dist/cesium/Workers/createWallOutlineGeometry.js +26 -0
- package/dist/cesium/Workers/decodeDraco.js +26 -0
- package/dist/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +26 -0
- package/dist/cesium/Workers/decodeI3S.js +26 -0
- package/dist/cesium/Workers/gaussianSplatSorter.js +26 -0
- package/dist/cesium/Workers/gaussianSplatTextureGenerator.js +26 -0
- package/dist/cesium/Workers/incrementallyBuildTerrainPicker.js +26 -0
- package/dist/cesium/Workers/transcodeKTX2.js +56 -0
- package/dist/cesium/Workers/transferTypedArrayTest.js +26 -0
- package/dist/cesium/Workers/upsampleQuantizedTerrainMesh.js +26 -0
- package/dist/cesium/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +26 -0
- package/dist/index.html +13 -2
- package/package.json +27 -19
- package/src/App.tsx +1 -17
- package/src/components/viewer/BCFPanel.tsx +46 -4
- package/src/components/viewer/CesiumOverlay.tsx +672 -0
- package/src/components/viewer/CesiumSettingsDialog.tsx +100 -0
- package/src/components/viewer/ChatPanel.tsx +54 -16
- package/src/components/viewer/CommandPalette.tsx +6 -1
- package/src/components/viewer/DesktopEntitlementBanner.tsx +74 -0
- package/src/components/viewer/ExportChangesButton.tsx +24 -4
- package/src/components/viewer/ExportDialog.tsx +38 -9
- package/src/components/viewer/HierarchyPanel.tsx +202 -6
- package/src/components/viewer/IDSPanel.tsx +52 -3
- package/src/components/viewer/KeyboardShortcutsDialog.tsx +1 -1
- package/src/components/viewer/MainToolbar.tsx +353 -27
- package/src/components/viewer/PropertiesPanel.tsx +306 -131
- package/src/components/viewer/ScriptPanel.tsx +34 -8
- package/src/components/viewer/Section2DPanel.tsx +3 -2
- package/src/components/viewer/SettingsPage.tsx +430 -0
- package/src/components/viewer/StatusBar.tsx +17 -1
- package/src/components/viewer/UpgradePage.tsx +6 -4
- package/src/components/viewer/ViewerLayout.tsx +47 -6
- package/src/components/viewer/Viewport.tsx +49 -8
- package/src/components/viewer/ViewportContainer.tsx +285 -32
- package/src/components/viewer/ViewportOverlays.tsx +129 -27
- package/src/components/viewer/hierarchy/treeDataBuilder.ts +2 -1
- package/src/components/viewer/properties/EpsgLookupDialog.tsx +418 -0
- package/src/components/viewer/properties/GeoreferencingPanel.tsx +703 -0
- package/src/components/viewer/properties/LocationMap.tsx +730 -0
- package/src/components/viewer/properties/ModelMetadataPanel.tsx +3 -70
- package/src/components/viewer/selectionHandlers.ts +4 -3
- package/src/components/viewer/useAnimationLoop.ts +4 -0
- package/src/components/viewer/useGeometryStreaming.ts +127 -40
- package/src/components/viewer/useMouseControls.ts +4 -1
- package/src/hooks/bcfIdLookup.ts +13 -11
- package/src/hooks/ids/idsColorSystem.ts +3 -8
- package/src/hooks/ingest/viewerModelIngest.ts +275 -0
- package/src/hooks/useIDS.ts +32 -17
- package/src/hooks/useIfc.ts +7 -1
- package/src/hooks/useIfcCache.ts +28 -15
- package/src/hooks/useIfcFederation.ts +59 -227
- package/src/hooks/useIfcLoader.ts +1656 -130
- package/src/hooks/useIfcServer.ts +0 -69
- package/src/lib/desktop/ClerkDesktopEntitlementSync.tsx +175 -0
- package/src/lib/desktop/desktopEntitlementEvents.ts +39 -0
- package/src/lib/desktop-entitlement.ts +45 -0
- package/src/lib/desktop-product.ts +124 -0
- package/src/lib/geo/cesium-bridge.ts +310 -0
- package/src/lib/geo/kmz-exporter.ts +112 -0
- package/src/lib/geo/reproject.ts +370 -0
- package/src/lib/lens/adapter.ts +3 -1
- package/src/lib/recent-files.ts +2 -1
- package/src/main.tsx +1 -0
- package/src/sdk/adapters/export-adapter.ts +14 -1
- package/src/sdk/adapters/viewer-adapter.ts +5 -9
- package/src/sdk/adapters/visibility-adapter.ts +6 -9
- package/src/services/analysis-extensions.ts +125 -0
- package/src/services/app-navigation.ts +13 -0
- package/src/services/bsdd.ts +53 -4
- package/src/services/cacheService.ts +1 -1
- package/src/services/desktop-cache.ts +43 -0
- package/src/services/desktop-export.ts +77 -0
- package/src/services/desktop-harness.ts +196 -0
- package/src/services/desktop-logger.ts +20 -0
- package/src/services/desktop-native-metadata.ts +207 -0
- package/src/services/desktop-panel-actions.ts +43 -0
- package/src/services/desktop-preferences.ts +44 -0
- package/src/services/file-dialog.ts +147 -0
- package/src/services/tauri-core-stub.ts +7 -0
- package/src/services/tauri-dialog-stub.ts +7 -0
- package/src/services/tauri-fs-stub.ts +7 -0
- package/src/store/basketVisibleSet.ts +3 -4
- package/src/store/globalId.ts +79 -0
- package/src/store/index.ts +41 -2
- package/src/store/slices/cesiumSlice.ts +122 -0
- package/src/store/slices/chatSlice.ts +5 -1
- package/src/store/slices/dataSlice.ts +139 -28
- package/src/store/slices/desktopEntitlementSlice.ts +86 -0
- package/src/store/slices/loadingSlice.ts +14 -2
- package/src/store/slices/modelSlice.ts +58 -3
- package/src/store/slices/mutationSlice.ts +178 -0
- package/src/store/slices/pinboardSlice.ts +4 -8
- package/src/store/types.ts +96 -2
- package/src/store.ts +1 -1
- package/src/utils/desktopModelSnapshot.ts +358 -0
- package/src/utils/ifcConfig.ts +6 -1
- package/src/utils/nativeSpatialDataStore.ts +250 -0
- package/src/utils/serverDataModel.ts +4 -0
- package/src/utils/spatialHierarchy.ts +10 -11
- package/vite.config.ts +41 -0
- package/dist/assets/Arrow.dom-BhOg9lpn.js +0 -20
- package/dist/assets/arrow2_bg-BlXl-cSQ.js +0 -1
- package/dist/assets/basketViewActivator-BRG5DBmM.js +0 -1
- package/dist/assets/desktop-cache-oPzaWXYE.js +0 -1
- package/dist/assets/geometry.worker-kgiT_Qhh.js +0 -1
- package/dist/assets/ifc-lite_bg-FNRmpSvM.wasm +0 -0
- package/dist/assets/index-B1Ecw4AU.js +0 -189756
- package/dist/assets/index-Ba4eoTe7.css +0 -1
- package/dist/assets/index-CrgYBjTn.js +0 -229
- package/dist/assets/module-6F3E5H7Y-tx0BadV3.js +0 -6
- package/dist/assets/native-bridge-Crsb7TKz.js +0 -111
- package/dist/assets/wasm-bridge-mJUhb7uk.js +0 -1
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
import{J as Y}from"./zip-DBEtpeu6.js";function j(t){if(!t||typeof t!="string")return t;let e="",i=0;for(;i<t.length;){if(t[i]!=="\\"){e+=t[i],i+=1;continue}if(t[i+1]==="P"&&t[i+3]==="\\"){i+=4;continue}if(t[i+1]==="S"&&t[i+2]==="\\"&&i+3<t.length){e+=String.fromCharCode(t.charCodeAt(i+3)+128),i+=4;continue}if(t[i+1]==="X"&&t[i+2]==="\\"&&i+5<=t.length){const n=t.slice(i+3,i+5);if(/^[0-9A-Fa-f]{2}$/.test(n)){e+=String.fromCharCode(parseInt(n,16)),i+=5;continue}}if(t.startsWith("\\X2\\",i)){const n=t.indexOf("\\X0\\",i+4);if(n!==-1){const o=t.slice(i+4,n);if(o.length%4===0&&/^[0-9A-Fa-f]+$/.test(o)){for(let s=0;s<o.length;s+=4)e+=String.fromCharCode(parseInt(o.slice(s,s+4),16));i=n+4;continue}}}if(t.startsWith("\\X4\\",i)){const n=t.indexOf("\\X0\\",i+4);if(n!==-1){const o=t.slice(i+4,n);if(o.length%8===0&&/^[0-9A-Fa-f]+$/.test(o)){for(let s=0;s<o.length;s+=8)e+=String.fromCodePoint(parseInt(o.slice(s,s+8),16));i=n+4;continue}}}e+=t[i],i+=1}return e}const M="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_$";function nt(t){const e=t.replace(/-/g,"").toUpperCase();if(e.length!==32)throw new Error(`Invalid UUID: expected 32 hex characters, got ${e.length}`);const i=new Uint8Array(16);for(let o=0;o<16;o++)i[o]=parseInt(e.substring(o*2,o*2+2),16);let n="";n+=M[i[0]>>6&3],n+=M[i[0]&63];for(let o=1;o<16;o+=3){const s=i[o]||0,c=i[o+1]||0,r=i[o+2]||0;n+=M[s>>2&63],n+=M[(s&3)<<4|c>>4&15],n+=M[(c&15)<<2|r>>6&3],n+=M[r&63]}return n}function se(){return nt(C())}function C(){if(typeof crypto<"u"&&crypto.randomUUID)return crypto.randomUUID();const t=new Uint8Array(16);if(typeof crypto<"u"&&crypto.getRandomValues)crypto.getRandomValues(t);else for(let i=0;i<16;i++)t[i]=Math.floor(Math.random()*256);t[6]=t[6]&15|64,t[8]=t[8]&63|128;let e="";for(const i of t)e+=i.toString(16).padStart(2,"0");return`${e.substring(0,8)}-${e.substring(8,12)}-${e.substring(12,16)}-${e.substring(16,20)}-${e.substring(20,32)}`}const A={".T.":"True",".F.":"False",".U.":"Unknown"},X={IFCBOOLEAN:"Boolean",IFCLOGICAL:"Logical",IFCIDENTIFIER:"Identifier",IFCLABEL:"Label",IFCTEXT:"Text",IFCREAL:"Real",IFCINTEGER:"Integer",IFCPOSITIVELENGTHMEASURE:"Length",IFCLENGTHMEASURE:"Length",IFCAREAMEASURE:"Area",IFCVOLUMEMEASURE:"Volume",IFCMASSMEASURE:"Mass",IFCTHERMALTRANSMITTANCEMEASURE:"Thermal Transmittance",IFCPRESSUREMEASURE:"Pressure",IFCFORCEMEASURE:"Force",IFCPLANEANGLEMEASURE:"Angle",IFCTIMEMEASURE:"Time",IFCNORMALISEDRATIOMEASURE:"Ratio",IFCRATIOMEASURE:"Ratio",IFCPOSITIVERATIOMEASURE:"Ratio",IFCCOUNTMEASURE:"Count",IFCMONETARYMEASURE:"Currency"};function ot(t){if(t==null)return{displayValue:"—"};if(Array.isArray(t)&&t.length===2&&typeof t[0]=="string"){const[e,i]=t,n=e.toUpperCase(),o=X[n]||n.replace(/^IFC/,"");return{displayValue:ot(i).displayValue,ifcType:o}}if(typeof t=="string"){const e=t.toUpperCase();if(A[e])return{displayValue:A[e],ifcType:"Boolean"};const i=t.match(/^(IFC[A-Z0-9_]+),(.*)$/i);if(i){const[,n,o]=i,s=n.toUpperCase(),c=X[s]||s.replace(/^IFC/,"");if(!o||o.trim()==="")return{displayValue:"—",ifcType:c};const r=o.toUpperCase().trim();return A[r]?{displayValue:A[r],ifcType:c}:{displayValue:j(o),ifcType:c}}return{displayValue:j(t)}}return typeof t=="boolean"?{displayValue:t?"True":"False",ifcType:"Boolean"}:typeof t=="number"?{displayValue:Number.isInteger(t)?t.toLocaleString():t.toLocaleString(void 0,{maximumFractionDigits:6})}:{displayValue:String(t)}}async function ce(t){const e=await Y.loadAsync(t),i=await st(e),{projectId:n,name:o,extensions:s}=await ct(e),c=await at(e);return{version:i.versionId,projectId:n,name:o,topics:c,extensions:s}}async function st(t){const e=t.file("bcf.version");if(!e)throw new Error("Invalid BCF file: missing bcf.version");const n=(await e.async("string")).match(/VersionId="([^"]+)"/);if(!n)throw new Error("Invalid BCF version file: could not parse VersionId");const o=n[1];return o!=="2.1"&&o!=="3.0"&&console.warn(`Unsupported BCF version: ${o}, treating as 2.1`),{versionId:o==="3.0"?"3.0":"2.1",detailedVersion:n[1]}}async function ct(t){const e=t.file("project.bcfp");if(!e)return{};const i=await e.async("string"),n=i.match(/ProjectId="([^"]+)"/),o=i.match(/<Name>([^<]+)<\/Name>/);return{projectId:n?.[1],name:o?.[1]}}async function at(t){const e=new Map,i=new Set;t.forEach(n=>{const o=n.match(/^([^/]+)\/markup\.bcf$/i);o&&i.add(o[1])});for(const n of i)try{const o=await rt(t,n);o&&e.set(o.guid,o)}catch(o){console.warn(`Failed to parse topic ${n}:`,o)}return e}async function rt(t,e){const i=t.file(`${e}/markup.bcf`);if(!i)return null;const n=await i.async("string"),o=n.match(/<Topic\s+Guid="([^"]+)"[^>]*>([\s\S]*?)<\/Topic>/);if(!o)return console.warn(`Invalid markup.bcf in ${e}: missing Topic element`),null;const s=o[1],c=o[2],r=n.match(/<Topic[^>]*TopicType="([^"]+)"/),a=n.match(/<Topic[^>]*TopicStatus="([^"]+)"/),l=h(c,"Title")||"Untitled",p=h(c,"Description"),f=h(c,"Priority"),m=h(c,"Index"),u=h(c,"CreationDate")||new Date().toISOString(),g=h(c,"CreationAuthor")||"Unknown",d=h(c,"ModifiedDate"),x=h(c,"ModifiedAuthor"),w=h(c,"DueDate"),T=h(c,"AssignedTo"),S=h(c,"Stage"),v=[],K=c.matchAll(/<Labels>([^<]+)<\/Labels>/g);for(const z of K)v.push(z[1]);const Q=lt(c),O=pt(c),F=[],tt=c.matchAll(/<RelatedTopic\s+Guid="([^"]+)"/g);for(const z of tt)F.push(z[1]);const et=ft(n),it=await ut(t,e,n);return{guid:s,title:l,description:p,topicType:r?.[1],topicStatus:a?.[1],priority:f,index:m?parseInt(m,10):void 0,creationDate:u,creationAuthor:g,modifiedDate:d,modifiedAuthor:x,dueDate:w,assignedTo:T,stage:S,labels:v.length>0?v:void 0,bimSnippet:Q,documentReferences:O.length>0?O:void 0,relatedTopics:F.length>0?F:void 0,comments:et,viewpoints:it}}function h(t,e){return t.match(new RegExp(`<${e}>([^<]*)<\\/${e}>`))?.[1]}function lt(t){const e=t.match(/<BimSnippet\s+SnippetType="([^"]+)"[^>]*>([\s\S]*?)<\/BimSnippet>/);if(!e)return;const i=e[0].match(/isExternal="([^"]+)"/),n=h(e[2],"Reference"),o=h(e[2],"ReferenceSchema");return{snippetType:e[1],isExternal:i?.[1]==="true",reference:n||"",referenceSchema:o}}function pt(t){const e=[],i=t.matchAll(/<DocumentReference[^>]*>([\s\S]*?)<\/DocumentReference>/g);for(const n of i){const o=n[0].match(/Guid="([^"]+)"/),s=n[0].match(/isExternal="([^"]+)"/),c=h(n[1],"ReferencedDocument"),r=h(n[1],"Description");c&&e.push({guid:o?.[1],isExternal:s?.[1]==="true",referencedDocument:c,description:r})}return e}function ft(t){const e=[],i=t.matchAll(/<Comment\s+Guid="([^"]+)"[^>]*>([\s\S]*?)<\/Comment>/g);for(const n of i){const o=n[1],s=n[2],c=h(s,"Date")||new Date().toISOString(),r=h(s,"Author")||"Unknown",a=h(s,"Comment")||"",l=h(s,"ModifiedDate"),p=h(s,"ModifiedAuthor"),f=s.match(/<Viewpoint\s+Guid="([^"]+)"/);e.push({guid:o,date:c,author:r,comment:a,viewpointGuid:f?.[1],modifiedDate:l,modifiedAuthor:p})}return e}async function ut(t,e,i){const n=[],o=new Map,s=/<Viewpoint\s+Guid="([^"]+)"[^>]*>([\s\S]*?)<\/Viewpoint>/g;for(const a of i.matchAll(s)){const l=a[1],p=a[2],f=p.match(/<Viewpoint>([^<]+)<\/Viewpoint>/),m=p.match(/<Snapshot>([^<]+)<\/Snapshot>/);o.set(l,{viewpointFile:f?.[1],snapshotFile:m?.[1]})}const c=i.matchAll(/<Viewpoint\s+Guid="([^"]+)"[^>]*\/>/g);for(const a of c)o.has(a[1])||o.set(a[1],{});const r=[];t.forEach(a=>{a.startsWith(`${e}/`)&&a.endsWith(".bcfv")&&r.push(a)});for(const a of r)try{const l=t.file(a);if(!l)continue;const p=await l.async("string"),f=mt(p);if(f){const m=o.get(f.guid);let u=null,g="png";if(m?.snapshotFile){const d=`${e}/${m.snapshotFile}`;u=t.file(d),(m.snapshotFile.toLowerCase().endsWith(".jpg")||m.snapshotFile.toLowerCase().endsWith(".jpeg"))&&(g="jpeg")}if(!u){const d=a.replace(".bcfv",""),x=d.replace(/Viewpoint_/i,"Snapshot_"),w=d.replace(/_viewpoint$/i,"_snapshot"),T=[`${x}.png`,`${w}.png`,`${d}.png`,`${e}/snapshot.png`,`${x}.jpg`,`${w}.jpg`,`${d}.jpg`,`${e}/snapshot.jpg`];for(const S of T)if(u=t.file(S),u){(S.toLowerCase().endsWith(".jpg")||S.toLowerCase().endsWith(".jpeg"))&&(g="jpeg");break}}if(u){const d=await u.async("uint8array");f.snapshotData=d,f.snapshot=`data:image/${g};base64,${B(d)}`}n.push(f)}}catch(l){console.warn(`Failed to parse viewpoint ${a}:`,l)}if(n.length===0){const a=t.file(`${e}/snapshot.png`)||t.file(`${e}/snapshot.jpg`);if(a){const l=a.name.toLowerCase().endsWith(".jpg"),p=await a.async("uint8array");n.push({guid:e,snapshot:`data:image/${l?"jpeg":"png"};base64,${B(p)}`,snapshotData:p})}}return n}function mt(t){const i=t.match(/<VisualizationInfo[^>]+Guid="([^"]+)"/)?.[1]||crypto.randomUUID?.()||`vp-${Date.now()}`,n=dt(t),o=ht(t),s=gt(t),c=Ct(t),r=wt(t),a=St(t);return{guid:i,perspectiveCamera:n,orthogonalCamera:o,components:s,lines:c.length>0?c:void 0,clippingPlanes:r.length>0?r:void 0,bitmaps:a.length>0?a:void 0}}function dt(t){const e=t.match(/<PerspectiveCamera>([\s\S]*?)<\/PerspectiveCamera>/);if(!e)return;const i=e[1],n=V(i,"CameraViewPoint"),o=I(i,"CameraDirection"),s=I(i,"CameraUpVector"),c=h(i,"FieldOfView");if(!(!n||!o||!s||!c))return{cameraViewPoint:n,cameraDirection:o,cameraUpVector:s,fieldOfView:parseFloat(c)}}function ht(t){const e=t.match(/<OrthogonalCamera>([\s\S]*?)<\/OrthogonalCamera>/);if(!e)return;const i=e[1],n=V(i,"CameraViewPoint"),o=I(i,"CameraDirection"),s=I(i,"CameraUpVector"),c=h(i,"ViewToWorldScale");if(!(!n||!o||!s||!c))return{cameraViewPoint:n,cameraDirection:o,cameraUpVector:s,viewToWorldScale:parseFloat(c)}}function V(t,e){const i=t.match(new RegExp(`<${e}>([\\s\\S]*?)<\\/${e}>`));if(!i)return;const n=h(i[1],"X"),o=h(i[1],"Y"),s=h(i[1],"Z");if(!(n===void 0||o===void 0||s===void 0))return{x:parseFloat(n),y:parseFloat(o),z:parseFloat(s)}}function I(t,e){return V(t,e)}function gt(t){const e=t.match(/<Components>([\s\S]*?)<\/Components>/);if(!e)return;const i=e[1],n=Z(i,"Selection"),o=yt(i),s=xt(i);if(!(!n&&!o&&!s))return{selection:n?.length?n:void 0,visibility:o,coloring:s?.length?s:void 0}}function Z(t,e){const i=t.match(new RegExp(`<${e}>([\\s\\S]*?)<\\/${e}>`));if(!i)return;const n=[],o=i[1].matchAll(/<Component[^>]*(?:\/>|>[\s\S]*?<\/Component>)/g);for(const s of o){const c=H(s[0]);c&&n.push(c)}return n.length>0?n:void 0}function H(t){const e=t.match(/IfcGuid="([^"]+)"/),i=t.match(/AuthoringToolId="([^"]+)"/),n=t.match(/OriginatingSystem="([^"]+)"/);if(!(!e&&!i))return{ifcGuid:e?.[1],authoringToolId:i?.[1],originatingSystem:n?.[1]}}function yt(t){const e=t.match(/<Visibility[^>]*>([\s\S]*?)<\/Visibility>/);if(!e)return;const n=t.match(/DefaultVisibility="([^"]+)"/)?.[1]!=="false",o=Z(e[1],"Exceptions");return{defaultVisibility:n,exceptions:o}}function xt(t){const e=t.match(/<Coloring>([\s\S]*?)<\/Coloring>/);if(!e)return;const i=[],n=e[1].matchAll(/<Color\s+Color="([^"]+)"[^>]*>([\s\S]*?)<\/Color>/g);for(const o of n){const s=o[1],c=[],r=o[2].matchAll(/<Component[^>]*(?:\/>|>[\s\S]*?<\/Component>)/g);for(const a of r){const l=H(a[0]);l&&c.push(l)}c.length>0&&i.push({color:s,components:c})}return i.length>0?i:void 0}function Ct(t){const e=[],i=t.match(/<Lines>([\s\S]*?)<\/Lines>/);if(!i)return e;const n=i[1].matchAll(/<Line>([\s\S]*?)<\/Line>/g);for(const o of n){const s=V(o[1],"StartPoint"),c=V(o[1],"EndPoint");s&&c&&e.push({startPoint:s,endPoint:c})}return e}function wt(t){const e=[],i=t.match(/<ClippingPlanes>([\s\S]*?)<\/ClippingPlanes>/);if(!i)return e;const n=i[1].matchAll(/<ClippingPlane>([\s\S]*?)<\/ClippingPlane>/g);for(const o of n){const s=V(o[1],"Location"),c=I(o[1],"Direction");s&&c&&e.push({location:s,direction:c})}return e}function St(t){const e=[],i=t.match(/<Bitmaps>([\s\S]*?)<\/Bitmaps>/);if(!i)return e;const n=i[1].matchAll(/<Bitmap>([\s\S]*?)<\/Bitmap>/g);for(const o of n){const s=h(o[1],"Format")||h(o[1],"Bitmap"),c=h(o[1],"Reference"),r=V(o[1],"Location"),a=I(o[1],"Normal"),l=I(o[1],"Up"),p=h(o[1],"Height");s&&c&&r&&a&&l&&p&&e.push({format:s.toUpperCase()==="JPG"?"JPG":"PNG",reference:c,location:r,normal:a,up:l,height:parseFloat(p)})}return e}function B(t){let e="";for(let i=0;i<t.length;i++)e+=String.fromCharCode(t[i]);return btoa(e)}async function ae(t){const e=new Y;$t(e,t.version),(t.projectId||t.name)&&bt(e,t);for(const[i,n]of t.topics)await Tt(e,n);return e.generateAsync({type:"blob",compression:"DEFLATE",compressionOptions:{level:6}})}function $t(t,e){const i=`<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<Version xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" VersionId="${e}">
|
|
3
|
+
<DetailedVersion>${e}</DetailedVersion>
|
|
4
|
+
</Version>`;t.file("bcf.version",i)}function bt(t,e){const i=e.projectId||C(),n=e.name?`
|
|
5
|
+
<Name>${y(e.name)}</Name>`:"",o=`<?xml version="1.0" encoding="UTF-8"?>
|
|
6
|
+
<ProjectExtension xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
|
7
|
+
<Project ProjectId="${i}">${n}
|
|
8
|
+
</Project>
|
|
9
|
+
</ProjectExtension>`;t.file("project.bcfp",o)}async function Tt(t,e){const i=t.folder(e.guid);if(i){vt(i,e);for(let n=0;n<e.viewpoints.length;n++){const o=e.viewpoints[n];await Vt(i,o)}}}function vt(t,e){let i=`<?xml version="1.0" encoding="UTF-8"?>
|
|
10
|
+
<Markup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
|
11
|
+
<Topic Guid="${e.guid}"${e.topicType?` TopicType="${y(e.topicType)}"`:""}${e.topicStatus?` TopicStatus="${y(e.topicStatus)}"`:""}>
|
|
12
|
+
<Title>${y(e.title)}</Title>`;if(e.description&&(i+=`
|
|
13
|
+
<Description>${y(e.description)}</Description>`),e.priority&&(i+=`
|
|
14
|
+
<Priority>${y(e.priority)}</Priority>`),e.index!==void 0&&(i+=`
|
|
15
|
+
<Index>${e.index}</Index>`),i+=`
|
|
16
|
+
<CreationDate>${e.creationDate}</CreationDate>`,i+=`
|
|
17
|
+
<CreationAuthor>${y(e.creationAuthor)}</CreationAuthor>`,e.modifiedDate){i+=`
|
|
18
|
+
<ModifiedDate>${e.modifiedDate}</ModifiedDate>`;const n=e.modifiedAuthor||e.creationAuthor;i+=`
|
|
19
|
+
<ModifiedAuthor>${y(n)}</ModifiedAuthor>`}if(e.dueDate&&(i+=`
|
|
20
|
+
<DueDate>${e.dueDate}</DueDate>`),e.assignedTo&&(i+=`
|
|
21
|
+
<AssignedTo>${y(e.assignedTo)}</AssignedTo>`),e.stage&&(i+=`
|
|
22
|
+
<Stage>${y(e.stage)}</Stage>`),e.labels&&e.labels.length>0)for(const n of e.labels)i+=`
|
|
23
|
+
<Labels>${y(n)}</Labels>`;if(e.relatedTopics&&e.relatedTopics.length>0)for(const n of e.relatedTopics)i+=`
|
|
24
|
+
<RelatedTopic Guid="${n}"/>`;i+=`
|
|
25
|
+
</Topic>`;for(let n=0;n<e.viewpoints.length;n++){const o=e.viewpoints[n],s=`Viewpoint_${o.guid}.bcfv`,c=`Snapshot_${o.guid}.png`;i+=`
|
|
26
|
+
<Viewpoints Guid="${o.guid}">`,i+=`
|
|
27
|
+
<Viewpoint>${s}</Viewpoint>`,(o.snapshot||o.snapshotData)&&(i+=`
|
|
28
|
+
<Snapshot>${c}</Snapshot>`),i+=`
|
|
29
|
+
</Viewpoints>`}for(const n of e.comments)i+=`
|
|
30
|
+
<Comment Guid="${n.guid}">`,i+=`
|
|
31
|
+
<Date>${n.date}</Date>`,i+=`
|
|
32
|
+
<Author>${y(n.author)}</Author>`,i+=`
|
|
33
|
+
<Comment>${y(n.comment)}</Comment>`,n.viewpointGuid&&(i+=`
|
|
34
|
+
<Viewpoint Guid="${n.viewpointGuid}"/>`),n.modifiedDate&&(i+=`
|
|
35
|
+
<ModifiedDate>${n.modifiedDate}</ModifiedDate>`),n.modifiedAuthor&&(i+=`
|
|
36
|
+
<ModifiedAuthor>${y(n.modifiedAuthor)}</ModifiedAuthor>`),i+=`
|
|
37
|
+
</Comment>`;i+=`
|
|
38
|
+
</Markup>`,t.file("markup.bcf",i)}async function Vt(t,e,i){const n=`Viewpoint_${e.guid}.bcfv`,o=`Snapshot_${e.guid}.png`;let s=`<?xml version="1.0" encoding="UTF-8"?>
|
|
39
|
+
<VisualizationInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Guid="${e.guid}">`;if(e.components&&(s+=It(e.components)),e.perspectiveCamera&&(s+=Pt(e.perspectiveCamera)),e.orthogonalCamera&&(s+=At(e.orthogonalCamera)),e.lines&&e.lines.length>0){s+=`
|
|
40
|
+
<Lines>`;for(const c of e.lines)s+=Dt(c);s+=`
|
|
41
|
+
</Lines>`}if(e.clippingPlanes&&e.clippingPlanes.length>0){s+=`
|
|
42
|
+
<ClippingPlanes>`;for(const c of e.clippingPlanes)s+=Ft(c);s+=`
|
|
43
|
+
</ClippingPlanes>`}if(e.bitmaps&&e.bitmaps.length>0){s+=`
|
|
44
|
+
<Bitmaps>`;for(const c of e.bitmaps)s+=zt(c);s+=`
|
|
45
|
+
</Bitmaps>`}if(s+=`
|
|
46
|
+
</VisualizationInfo>`,t.file(n,s),e.snapshotData)t.file(o,e.snapshotData);else if(e.snapshot&&e.snapshot.startsWith("data:")){const c=e.snapshot.split(",")[1],r=atob(c),a=new Uint8Array(r.length);for(let l=0;l<r.length;l++)a[l]=r.charCodeAt(l);t.file(o,a)}}function It(t){let e=`
|
|
47
|
+
<Components>`;if(t.visibility?.viewSetupHints){const i=t.visibility.viewSetupHints;e+=`
|
|
48
|
+
<ViewSetupHints`,i.spacesVisible!==void 0&&(e+=` SpacesVisible="${i.spacesVisible}"`),i.spaceBoundariesVisible!==void 0&&(e+=` SpaceBoundariesVisible="${i.spaceBoundariesVisible}"`),i.openingsVisible!==void 0&&(e+=` OpeningsVisible="${i.openingsVisible}"`),e+="/>"}if(t.selection&&t.selection.length>0){e+=`
|
|
49
|
+
<Selection>`;for(const i of t.selection)e+=k(i);e+=`
|
|
50
|
+
</Selection>`}if(e+=Mt(t.visibility),t.coloring&&t.coloring.length>0){e+=`
|
|
51
|
+
<Coloring>`;for(const i of t.coloring)e+=Et(i);e+=`
|
|
52
|
+
</Coloring>`}return e+=`
|
|
53
|
+
</Components>`,e}function Mt(t){let i=`
|
|
54
|
+
<Visibility DefaultVisibility="${t?.defaultVisibility??!0}">`;if(t?.exceptions&&t.exceptions.length>0){i+=`
|
|
55
|
+
<Exceptions>`;for(const n of t.exceptions)i+=k(n," ");i+=`
|
|
56
|
+
</Exceptions>`}return i+=`
|
|
57
|
+
</Visibility>`,i}function k(t,e=" "){const i=t.originatingSystem||t.authoringToolId;let n=`
|
|
58
|
+
${e}<Component`;return t.ifcGuid&&(n+=` IfcGuid="${t.ifcGuid}"`),i?(n+=">",t.originatingSystem&&(n+=`
|
|
59
|
+
${e} <OriginatingSystem>${y(t.originatingSystem)}</OriginatingSystem>`),t.authoringToolId&&(n+=`
|
|
60
|
+
${e} <AuthoringToolId>${y(t.authoringToolId)}</AuthoringToolId>`),n+=`
|
|
61
|
+
${e}</Component>`):n+="/>",n}function Et(t){let e=`
|
|
62
|
+
<Color Color="${t.color}">`;for(const i of t.components)e+=k(i," ");return e+=`
|
|
63
|
+
</Color>`,e}function Pt(t){return`
|
|
64
|
+
<PerspectiveCamera>
|
|
65
|
+
<CameraViewPoint>
|
|
66
|
+
<X>${t.cameraViewPoint.x}</X>
|
|
67
|
+
<Y>${t.cameraViewPoint.y}</Y>
|
|
68
|
+
<Z>${t.cameraViewPoint.z}</Z>
|
|
69
|
+
</CameraViewPoint>
|
|
70
|
+
<CameraDirection>
|
|
71
|
+
<X>${t.cameraDirection.x}</X>
|
|
72
|
+
<Y>${t.cameraDirection.y}</Y>
|
|
73
|
+
<Z>${t.cameraDirection.z}</Z>
|
|
74
|
+
</CameraDirection>
|
|
75
|
+
<CameraUpVector>
|
|
76
|
+
<X>${t.cameraUpVector.x}</X>
|
|
77
|
+
<Y>${t.cameraUpVector.y}</Y>
|
|
78
|
+
<Z>${t.cameraUpVector.z}</Z>
|
|
79
|
+
</CameraUpVector>
|
|
80
|
+
<FieldOfView>${t.fieldOfView}</FieldOfView>
|
|
81
|
+
</PerspectiveCamera>`}function At(t){return`
|
|
82
|
+
<OrthogonalCamera>
|
|
83
|
+
<CameraViewPoint>
|
|
84
|
+
<X>${t.cameraViewPoint.x}</X>
|
|
85
|
+
<Y>${t.cameraViewPoint.y}</Y>
|
|
86
|
+
<Z>${t.cameraViewPoint.z}</Z>
|
|
87
|
+
</CameraViewPoint>
|
|
88
|
+
<CameraDirection>
|
|
89
|
+
<X>${t.cameraDirection.x}</X>
|
|
90
|
+
<Y>${t.cameraDirection.y}</Y>
|
|
91
|
+
<Z>${t.cameraDirection.z}</Z>
|
|
92
|
+
</CameraDirection>
|
|
93
|
+
<CameraUpVector>
|
|
94
|
+
<X>${t.cameraUpVector.x}</X>
|
|
95
|
+
<Y>${t.cameraUpVector.y}</Y>
|
|
96
|
+
<Z>${t.cameraUpVector.z}</Z>
|
|
97
|
+
</CameraUpVector>
|
|
98
|
+
<ViewToWorldScale>${t.viewToWorldScale}</ViewToWorldScale>
|
|
99
|
+
</OrthogonalCamera>`}function Dt(t){return`
|
|
100
|
+
<Line>
|
|
101
|
+
<StartPoint>
|
|
102
|
+
<X>${t.startPoint.x}</X>
|
|
103
|
+
<Y>${t.startPoint.y}</Y>
|
|
104
|
+
<Z>${t.startPoint.z}</Z>
|
|
105
|
+
</StartPoint>
|
|
106
|
+
<EndPoint>
|
|
107
|
+
<X>${t.endPoint.x}</X>
|
|
108
|
+
<Y>${t.endPoint.y}</Y>
|
|
109
|
+
<Z>${t.endPoint.z}</Z>
|
|
110
|
+
</EndPoint>
|
|
111
|
+
</Line>`}function Ft(t){return`
|
|
112
|
+
<ClippingPlane>
|
|
113
|
+
<Location>
|
|
114
|
+
<X>${t.location.x}</X>
|
|
115
|
+
<Y>${t.location.y}</Y>
|
|
116
|
+
<Z>${t.location.z}</Z>
|
|
117
|
+
</Location>
|
|
118
|
+
<Direction>
|
|
119
|
+
<X>${t.direction.x}</X>
|
|
120
|
+
<Y>${t.direction.y}</Y>
|
|
121
|
+
<Z>${t.direction.z}</Z>
|
|
122
|
+
</Direction>
|
|
123
|
+
</ClippingPlane>`}function zt(t){return`
|
|
124
|
+
<Bitmap>
|
|
125
|
+
<Format>${t.format}</Format>
|
|
126
|
+
<Reference>${y(t.reference)}</Reference>
|
|
127
|
+
<Location>
|
|
128
|
+
<X>${t.location.x}</X>
|
|
129
|
+
<Y>${t.location.y}</Y>
|
|
130
|
+
<Z>${t.location.z}</Z>
|
|
131
|
+
</Location>
|
|
132
|
+
<Normal>
|
|
133
|
+
<X>${t.normal.x}</X>
|
|
134
|
+
<Y>${t.normal.y}</Y>
|
|
135
|
+
<Z>${t.normal.z}</Z>
|
|
136
|
+
</Normal>
|
|
137
|
+
<Up>
|
|
138
|
+
<X>${t.up.x}</X>
|
|
139
|
+
<Y>${t.up.y}</Y>
|
|
140
|
+
<Z>${t.up.z}</Z>
|
|
141
|
+
</Up>
|
|
142
|
+
<Height>${t.height}</Height>
|
|
143
|
+
</Bitmap>`}function y(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function $(t){return{x:t.x,y:-t.z,z:t.y}}function b(t){return{x:t.x,y:t.z,z:-t.y}}function Lt(t){const e=$(t.position),i=$(t.target),n=$(t.up),o=i.x-e.x,s=i.y-e.y,c=i.z-e.z,r=Math.sqrt(o*o+s*s+c*c),a=r>1e-4?{x:o/r,y:s/r,z:c/r}:{x:0,y:1,z:0},l=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z),p=l>1e-4?{x:n.x/l,y:n.y/l,z:n.z/l}:{x:0,y:0,z:1},f=t.fov*180/Math.PI;return{cameraViewPoint:e,cameraDirection:a,cameraUpVector:p,fieldOfView:Math.max(1,Math.min(179,f))}}function Gt(t,e){const i=$(t.position),n=$(t.target),o=$(t.up),s=n.x-i.x,c=n.y-i.y,r=n.z-i.z,a=Math.sqrt(s*s+c*c+r*r),l=a>1e-4?{x:s/a,y:c/a,z:r/a}:{x:0,y:1,z:0},p=Math.sqrt(o.x*o.x+o.y*o.y+o.z*o.z),f=p>1e-4?{x:o.x/p,y:o.y/p,z:o.z/p}:{x:0,y:0,z:1};return{cameraViewPoint:i,cameraDirection:l,cameraUpVector:f,viewToWorldScale:e}}function Ut(t,e=10){const i={x:t.cameraViewPoint.x+t.cameraDirection.x*e,y:t.cameraViewPoint.y+t.cameraDirection.y*e,z:t.cameraViewPoint.z+t.cameraDirection.z*e},n=b(t.cameraViewPoint),o=b(i),s=b(t.cameraUpVector),c=t.fieldOfView*Math.PI/180;return{position:n,target:o,up:s,fov:c,isOrthographic:!1}}function kt(t,e=10){const i={x:t.cameraViewPoint.x+t.cameraDirection.x*e,y:t.cameraViewPoint.y+t.cameraDirection.y*e,z:t.cameraViewPoint.z+t.cameraDirection.z*e},n=b(t.cameraViewPoint),o=b(i),s=b(t.cameraUpVector);return{position:n,target:o,up:s,fov:Math.PI/4,isOrthographic:!0,orthoScale:t.viewToWorldScale}}function Rt(t,e){if(!t.enabled)return null;const i=t.position/100;let n,o;switch(t.axis){case"down":n={x:(e.min.x+e.max.x)/2,y:e.min.y+i*(e.max.y-e.min.y),z:(e.min.z+e.max.z)/2},o=t.flipped?{x:0,y:1,z:0}:{x:0,y:-1,z:0};break;case"front":n={x:(e.min.x+e.max.x)/2,y:(e.min.y+e.max.y)/2,z:e.min.z+i*(e.max.z-e.min.z)},o=t.flipped?{x:0,y:0,z:1}:{x:0,y:0,z:-1};break;case"side":n={x:e.min.x+i*(e.max.x-e.min.x),y:(e.min.y+e.max.y)/2,z:(e.min.z+e.max.z)/2},o=t.flipped?{x:1,y:0,z:0}:{x:-1,y:0,z:0};break}return{location:$(n),direction:$(o)}}function Ot(t,e){const i=b(t.location),n=b(t.direction),o=Math.abs(n.x),s=Math.abs(n.y),c=Math.abs(n.z);let r,a,l;if(s>=o&&s>=c){r="down";const p=e.max.y-e.min.y;a=p>0?(i.y-e.min.y)/p*100:50,l=n.y>0}else if(c>=o){r="front";const p=e.max.z-e.min.z;a=p>0?(i.z-e.min.z)/p*100:50,l=n.z>0}else{r="side";const p=e.max.x-e.min.x;a=p>0?(i.x-e.min.x)/p*100:50,l=n.x>0}return a=Math.max(0,Math.min(100,a)),{axis:r,position:a,enabled:!0,flipped:l}}function re(t){const{camera:e,sectionPlane:i,bounds:n,snapshot:o,snapshotData:s,selectedGuids:c,hiddenGuids:r,visibleGuids:a,coloredGuids:l}=t,p={guid:C()};if(e.isOrthographic&&e.orthoScale!==void 0?p.orthogonalCamera=Gt(e,e.orthoScale):p.perspectiveCamera=Lt(e),i?.enabled&&n){const d=Rt(i,n);d&&(p.clippingPlanes=[d])}o&&(p.snapshot=o),s&&(p.snapshotData=s);const f=c&&c.length>0,m=r&&r.length>0,u=a&&a.length>0,g=l&&l.length>0;return(f||m||u||g)&&(p.components={},f&&(p.components.selection=c.map(d=>({ifcGuid:d}))),u?p.components.visibility={defaultVisibility:!1,exceptions:a.map(d=>({ifcGuid:d}))}:m&&(p.components.visibility={defaultVisibility:!0,exceptions:r.map(d=>({ifcGuid:d}))}),g&&(p.components.coloring=l.map(({color:d,guids:x})=>({color:d,components:x.map(w=>({ifcGuid:w}))})))),p}function le(t,e,i=10){let n,o;t.perspectiveCamera?n=Ut(t.perspectiveCamera,i):t.orthogonalCamera&&(n=kt(t.orthogonalCamera,i)),t.clippingPlanes&&t.clippingPlanes.length>0&&e&&(o=Ot(t.clippingPlanes[0],e));const s=[];if(t.components?.selection)for(const l of t.components.selection)l.ifcGuid&&s.push(l.ifcGuid);const c=[],r=[];if(t.components?.visibility){const{defaultVisibility:l,exceptions:p}=t.components.visibility;if(p)for(const f of p)f.ifcGuid&&(l===!1?r.push(f.ifcGuid):c.push(f.ifcGuid))}const a=[];if(t.components?.coloring)for(const l of t.components.coloring){const p=[];for(const f of l.components)f.ifcGuid&&p.push(f.ifcGuid);p.length>0&&a.push({color:l.color,guids:p})}return{camera:n,sectionPlane:o,selectedGuids:s,hiddenGuids:c,visibleGuids:r,coloredGuids:a}}function G(t){return{x:t.x,y:t.z,z:-t.y}}function jt(t,e){const i=t.perspectiveCamera??t.orthogonalCamera;if(!i)return null;const n=G(i.cameraViewPoint),o=G(i.cameraDirection),s=Math.sqrt(o.x*o.x+o.y*o.y+o.z*o.z);if(s<1e-6)return null;const c=o.x/s,r=o.y/s,a=o.z/s;return{x:n.x+c*e,y:n.y+r*e,z:n.z+a*e}}function N(t){const e=(t.min.x+t.max.x)/2,i=(t.min.z+t.max.z)/2,n=t.max.y,o=t.max.y-t.min.y,s=Math.max(o*.3,.5);return{position:{x:e,y:n+s,z:i},connectorAnchor:{x:e,y:n,z:i}}}function Xt(t,e,i){const n=t.components?.selection;if(n&&n.length>0)for(const r of n){if(!r.ifcGuid)continue;const a=e(r.ifcGuid);if(a)return{...N(a),source:"component"}}const o=t.components?.visibility;if(o&&!o.defaultVisibility&&o.exceptions&&o.exceptions.length>0)for(const r of o.exceptions){if(!r.ifcGuid)continue;const a=e(r.ifcGuid);if(a)return{...N(a),source:"component"}}const s=jt(t,i);if(s)return{position:s,source:"camera-target"};const c=t.perspectiveCamera??t.orthogonalCamera;return c?{position:G(c.cameraViewPoint),source:"camera-position"}:null}function pe(t,e,i){const{targetDistance:n=50,statusFilter:o}=i??{},s=[];for(let c=0;c<t.length;c++){const r=t[c];if(o&&o.length>0){const p=(r.topicStatus??"").toLowerCase();if(!o.some(f=>f.toLowerCase()===p))continue}let a=null;for(const p of r.viewpoints)if(a=Xt(p,e,n),a)break;if(!a)continue;const l=r.viewpoints[0];s.push({topicGuid:r.guid,position:a.position,connectorAnchor:a.connectorAnchor,title:r.title,status:r.topicStatus??"Open",priority:r.priority??"Normal",topicType:r.topicType??"Issue",commentCount:r.comments.length,hasViewpoint:r.viewpoints.length>0,snapshot:l?.snapshot,positionSource:a.source,index:r.index??c+1})}return s}const L="bcf-overlay-marker",_="bcf-overlay-connector",E="bcf-overlay-active",P="bcf-overlay-tooltip",Bt={high:"#f7768e",critical:"#f7768e",medium:"#ff9e64",normal:"#ff9e64",low:"#9ece6a"},Nt={open:"●","in progress":"◐",resolved:"✓",closed:"○"};class U{container;svgLayer;markerElements=new Map;connectorElements=new Map;markers=[];activeMarkerId=null;projection;unsubCamera=null;clickCallbacks=[];hoverCallbacks=[];opts;_visible=!0;_disposed=!1;constructor(e,i,n){this.projection=i,this.opts={showConnectors:n?.showConnectors??!0,showTooltips:n?.showTooltips??!0,minScale:n?.minScale??.65,maxScale:n?.maxScale??1,verticalOffset:n?.verticalOffset??36},this.container=document.createElement("div"),this.container.style.cssText="position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:20;",e.appendChild(this.container),this.svgLayer=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svgLayer.style.cssText="position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;",this.container.appendChild(this.svgLayer),this.injectStyles(),this.unsubCamera=i.onCameraChange(()=>this.updatePositions())}setMarkers(e){this.markers=e;const i=new Set(e.map(n=>n.topicGuid));for(const[n,o]of this.markerElements)i.has(n)||(o.remove(),this.markerElements.delete(n));for(const[n,o]of this.connectorElements)i.has(n)||(o.remove(),this.connectorElements.delete(n));for(const n of e)this.markerElements.has(n.topicGuid)?this.updateMarkerContent(n):this.createMarkerElement(n);this.updatePositions()}setActiveMarker(e){if(this.activeMarkerId){const i=this.markerElements.get(this.activeMarkerId);i&&i.classList.remove(E)}if(this.activeMarkerId=e,e){const i=this.markerElements.get(e);i&&i.classList.add(E)}}setVisible(e){this._visible=e,this.container.style.display=e?"":"none"}onMarkerClick(e){return this.clickCallbacks.push(e),()=>{this.clickCallbacks=this.clickCallbacks.filter(i=>i!==e)}}onMarkerHover(e){return this.hoverCallbacks.push(e),()=>{this.hoverCallbacks=this.hoverCallbacks.filter(i=>i!==e)}}updatePositions(){if(this._disposed||!this._visible)return;const{width:e,height:i}=this.projection.getCanvasSize();if(e===0||i===0)return;const n=this.projection.getCameraPosition?.();for(const o of this.markers){const s=this.markerElements.get(o.topicGuid);if(!s)continue;const c=this.projection.projectToScreen(o.position);if(!c||c.x<-80||c.y<-80||c.x>e+80||c.y>i+80){s.style.display="none";const f=this.connectorElements.get(o.topicGuid);f&&(f.style.display="none");continue}s.style.display="";let r=1;if(n){const f=o.position.x-n.x,m=o.position.y-n.y,u=o.position.z-n.z,g=Math.sqrt(f*f+m*m+u*u),d=Math.max(0,Math.min(1,(g-20)/180));r=this.opts.maxScale+d*(this.opts.minScale-this.opts.maxScale)}const a=c.x,l=c.y;s.style.transform=`translate(${a}px, ${l}px) translate(-50%, -100%) scale(${r.toFixed(3)})`;const p=n?.6+(1-Math.max(0,Math.min(1,(Math.sqrt((o.position.x-n.x)**2+(o.position.y-n.y)**2+(o.position.z-n.z)**2)-20)/250)))*.4:1;if(s.style.opacity=p.toFixed(2),this.opts.showConnectors){const f=o.connectorAnchor??o.position,m=this.projection.projectToScreen(f);let u=this.connectorElements.get(o.topicGuid);if(u||(u=document.createElementNS("http://www.w3.org/2000/svg","line"),u.classList.add(_),this.svgLayer.appendChild(u),this.connectorElements.set(o.topicGuid,u)),!m){u.style.display="none";continue}u.style.display="";const g=this.getPriorityColor(o.priority);u.setAttribute("x1",String(a)),u.setAttribute("y1",String(l)),u.setAttribute("x2",String(m.x)),u.setAttribute("y2",String(m.y)),u.setAttribute("stroke",g),u.setAttribute("stroke-width","1.5"),u.setAttribute("stroke-dasharray","3 2"),u.setAttribute("stroke-opacity",String((p*.5).toFixed(2)))}}}dispose(){this._disposed=!0,this.unsubCamera&&this.unsubCamera(),this.container.remove(),this.markerElements.clear(),this.connectorElements.clear(),this.clickCallbacks=[],this.hoverCallbacks=[]}createMarkerElement(e){const i=document.createElement("div");i.className=L,i.dataset.topicGuid=e.topicGuid,this.updateMarkerInnerHTML(i,e),i.addEventListener("click",n=>{n.stopPropagation();for(const o of this.clickCallbacks)o(e.topicGuid)}),i.addEventListener("mouseenter",()=>{for(const o of this.hoverCallbacks)o(e.topicGuid);const n=i.querySelector(`.${P}`);n&&(n.style.display="")}),i.addEventListener("mouseleave",()=>{for(const o of this.hoverCallbacks)o(null);const n=i.querySelector(`.${P}`);n&&(n.style.display="none")}),e.topicGuid===this.activeMarkerId&&i.classList.add(E),this.container.appendChild(i),this.markerElements.set(e.topicGuid,i)}updateMarkerContent(e){const i=this.markerElements.get(e.topicGuid);i&&(this.updateMarkerInnerHTML(i,e),e.topicGuid===this.activeMarkerId?i.classList.add(E):i.classList.remove(E))}updateMarkerInnerHTML(e,i){const n=this.getPriorityColor(i.priority),o=Nt[i.status.toLowerCase()]??"●";e.innerHTML=`
|
|
144
|
+
<div class="bcf-marker-pin" style="--marker-color:${n};">
|
|
145
|
+
<span class="bcf-marker-index">${i.index}</span>
|
|
146
|
+
</div>
|
|
147
|
+
<div class="${P}" style="display:none;">
|
|
148
|
+
<div class="bcf-tooltip-header">
|
|
149
|
+
<span class="bcf-tooltip-status" style="color:${n}">${o}</span>
|
|
150
|
+
<span class="bcf-tooltip-title">${this.escapeHtml(i.title)}</span>
|
|
151
|
+
</div>
|
|
152
|
+
<div class="bcf-tooltip-meta">
|
|
153
|
+
${this.escapeHtml(i.status)}${i.commentCount>0?` · ${i.commentCount} comment${i.commentCount!==1?"s":""}`:""}
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
`}getPriorityColor(e){return Bt[e.toLowerCase()]??"#7aa2f7"}escapeHtml(e){const i=document.createElement("div");return i.textContent=e,i.innerHTML}static stylesInjected=!1;injectStyles(){if(U.stylesInjected)return;U.stylesInjected=!0;const e=document.createElement("style");e.textContent=`
|
|
157
|
+
/* BCF 3D Overlay Markers */
|
|
158
|
+
|
|
159
|
+
.${L} {
|
|
160
|
+
position: absolute;
|
|
161
|
+
left: 0;
|
|
162
|
+
top: 0;
|
|
163
|
+
pointer-events: auto;
|
|
164
|
+
cursor: pointer;
|
|
165
|
+
will-change: transform, opacity;
|
|
166
|
+
z-index: 21;
|
|
167
|
+
filter: drop-shadow(0 2px 6px rgba(0,0,0,0.35));
|
|
168
|
+
transform-origin: center bottom;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.bcf-marker-pin {
|
|
172
|
+
width: 28px;
|
|
173
|
+
height: 28px;
|
|
174
|
+
border-radius: 50% 50% 50% 0;
|
|
175
|
+
background: var(--marker-color, #7aa2f7);
|
|
176
|
+
transform: rotate(-45deg);
|
|
177
|
+
display: flex;
|
|
178
|
+
align-items: center;
|
|
179
|
+
justify-content: center;
|
|
180
|
+
border: 2px solid rgba(255,255,255,0.9);
|
|
181
|
+
box-shadow: 0 2px 8px rgba(0,0,0,0.25);
|
|
182
|
+
transition: transform 0.15s ease, box-shadow 0.15s ease;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.${L}:hover .bcf-marker-pin {
|
|
186
|
+
transform: rotate(-45deg) scale(1.2);
|
|
187
|
+
box-shadow: 0 4px 16px rgba(0,0,0,0.4);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.${E} .bcf-marker-pin {
|
|
191
|
+
transform: rotate(-45deg) scale(1.25);
|
|
192
|
+
box-shadow: 0 0 0 4px rgba(122,162,247,0.35), 0 4px 16px rgba(0,0,0,0.4);
|
|
193
|
+
animation: bcf-pulse 1.8s ease-in-out infinite;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.bcf-marker-index {
|
|
197
|
+
transform: rotate(45deg);
|
|
198
|
+
font-size: 11px;
|
|
199
|
+
font-weight: 700;
|
|
200
|
+
color: white;
|
|
201
|
+
font-family: ui-monospace, monospace;
|
|
202
|
+
line-height: 1;
|
|
203
|
+
user-select: none;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* Tooltip */
|
|
207
|
+
.${P} {
|
|
208
|
+
position: absolute;
|
|
209
|
+
bottom: calc(100% + 6px);
|
|
210
|
+
left: 50%;
|
|
211
|
+
transform: translateX(-50%);
|
|
212
|
+
background: #1a1b26;
|
|
213
|
+
color: #a9b1d6;
|
|
214
|
+
border: 1px solid #3b4261;
|
|
215
|
+
padding: 8px 12px;
|
|
216
|
+
min-width: 160px;
|
|
217
|
+
max-width: 260px;
|
|
218
|
+
font-family: ui-monospace, monospace;
|
|
219
|
+
font-size: 11px;
|
|
220
|
+
line-height: 1.4;
|
|
221
|
+
white-space: nowrap;
|
|
222
|
+
z-index: 100;
|
|
223
|
+
pointer-events: none;
|
|
224
|
+
box-shadow: 0 4px 16px rgba(0,0,0,0.5);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.${P}::after {
|
|
228
|
+
content: '';
|
|
229
|
+
position: absolute;
|
|
230
|
+
top: 100%;
|
|
231
|
+
left: 50%;
|
|
232
|
+
transform: translateX(-50%);
|
|
233
|
+
border: 5px solid transparent;
|
|
234
|
+
border-top-color: #3b4261;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.bcf-tooltip-header {
|
|
238
|
+
display: flex;
|
|
239
|
+
align-items: center;
|
|
240
|
+
gap: 6px;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
.bcf-tooltip-status {
|
|
244
|
+
font-size: 10px;
|
|
245
|
+
flex-shrink: 0;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.bcf-tooltip-title {
|
|
249
|
+
font-weight: 600;
|
|
250
|
+
color: #c0caf5;
|
|
251
|
+
overflow: hidden;
|
|
252
|
+
text-overflow: ellipsis;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
.bcf-tooltip-meta {
|
|
256
|
+
margin-top: 3px;
|
|
257
|
+
font-size: 10px;
|
|
258
|
+
color: #565f89;
|
|
259
|
+
text-transform: uppercase;
|
|
260
|
+
letter-spacing: 0.05em;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/* Connector lines */
|
|
264
|
+
.${_} {
|
|
265
|
+
pointer-events: none;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/* Pulse animation for active marker */
|
|
269
|
+
@keyframes bcf-pulse {
|
|
270
|
+
0%, 100% { box-shadow: 0 0 0 4px rgba(122,162,247,0.35), 0 4px 16px rgba(0,0,0,0.4); }
|
|
271
|
+
50% { box-shadow: 0 0 0 8px rgba(122,162,247,0.1), 0 4px 16px rgba(0,0,0,0.4); }
|
|
272
|
+
}
|
|
273
|
+
`,document.head.appendChild(e)}}function _t(t,e){return{version:e,projectId:C(),name:t,topics:new Map}}function R(t){return{guid:C(),title:t.title,description:t.description,topicType:t.topicType??"Issue",topicStatus:t.topicStatus??"Open",priority:t.priority,creationDate:new Date().toISOString(),creationAuthor:t.author,labels:t.labels,comments:[],viewpoints:[]}}function D(t){return{guid:C(),date:new Date().toISOString(),author:t.author,comment:t.comment,viewpointGuid:t.viewpointGuid}}const Yt="ids-validator@ifc-lite",Zt=1e3,Ht="FFFF3333",qt="Error",q="Info",Wt=50;function fe(t,e={}){const{author:i=Yt,projectName:n,version:o="2.1",topicGrouping:s="per-entity",includePassingEntities:c=!1,failureTopicType:r=qt,passTopicType:a=q,maxTopics:l=Zt,failureColor:p=Ht,entityBounds:f,entitySnapshots:m}=e,u=_t(n??t.title,o);switch(s){case"per-entity":Jt(u,t,{author:i,includePassingEntities:c,failureTopicType:r,passTopicType:a,maxTopics:l,failureColor:p,entityBounds:f,entitySnapshots:m});break;case"per-specification":Kt(u,t,{author:i,failureTopicType:r,maxTopics:l,failureColor:p});break;case"per-requirement":Qt(u,t,{author:i,failureTopicType:r,maxTopics:l,failureColor:p,entityBounds:f,entitySnapshots:m});break}return u}function Jt(t,e,i){let n=0;for(const o of e.specificationResults)if(o.status!=="not_applicable")for(const s of o.entityResults){if(n>=i.maxTopics)return;if(s.passed&&!i.includePassingEntities)continue;const c=s.requirementResults.filter(m=>m.status==="fail"),r=s.requirementResults.filter(m=>m.status!=="not_applicable").length,a=s.entityName||`#${s.expressId}`,l=!s.passed,p=R({title:`${s.entityType}: ${a}`,description:te(o,s,c.length,r),author:i.author,topicType:l?i.failureTopicType:i.passTopicType??q,topicStatus:l?"Open":"Closed",priority:l?c.length===r?"High":"Medium":void 0,labels:["IDS",o.specification.name]});let f;if(s.globalId){const m=`${s.modelId}:${s.expressId}`,u=i.entityBounds?.get(m),g=i.entitySnapshots?.get(m),d=J(s.globalId,l?i.failureColor:void 0,u,g);p.viewpoints.push(d),f=d.guid}for(const m of c){const u=D({author:i.author,comment:W(m),viewpointGuid:f});p.comments.push(u)}t.topics.set(p.guid,p),n++}}function Kt(t,e,i){let n=0;for(const o of e.specificationResults){if(o.status!=="fail")continue;if(n>=i.maxTopics)return;const s=o.entityResults.filter(f=>!f.passed),c=R({title:`[FAIL] ${o.specification.name}`,description:ee(o),author:i.author,topicType:i.failureTopicType,topicStatus:"Open",priority:o.failedCount>o.passedCount?"High":"Medium",labels:["IDS",o.specification.name]}),r=s.map(f=>f.globalId).filter(f=>f!==void 0);let a;if(r.length>0){const f=ne(r,i.failureColor);c.viewpoints.push(f),a=f.guid}const l=Wt,p=s.slice(0,l);for(const f of p){const m=f.entityName||`#${f.expressId}`,g=f.requirementResults.filter(x=>x.status==="fail").map(x=>x.failureReason??x.checkedDescription).join("; "),d=D({author:i.author,comment:`${f.entityType}: ${m}${f.globalId?` (${f.globalId})`:""}
|
|
274
|
+
${g}`,viewpointGuid:a});c.comments.push(d)}if(s.length>l){const f=D({author:i.author,comment:`... and ${s.length-l} more failing entities`});c.comments.push(f)}t.topics.set(c.guid,c),n++}}function Qt(t,e,i){let n=0;for(const o of e.specificationResults)if(o.status==="fail"){for(const s of o.entityResults)if(!s.passed)for(const c of s.requirementResults){if(c.status!=="fail")continue;if(n>=i.maxTopics)return;const r=s.entityName||`#${s.expressId}`,a=R({title:`${s.entityType}: ${r} - ${c.failureReason??c.checkedDescription}`,description:`Specification: ${o.specification.name}
|
|
275
|
+
${o.specification.description??""}
|
|
276
|
+
|
|
277
|
+
Requirement: ${c.checkedDescription}${s.globalId?`
|
|
278
|
+
GlobalId: ${s.globalId}`:""}`,author:i.author,topicType:i.failureTopicType,topicStatus:"Open",labels:["IDS",o.specification.name]});let l;if(s.globalId){const f=`${s.modelId}:${s.expressId}`,m=i.entityBounds?.get(f),u=i.entitySnapshots?.get(f),g=J(s.globalId,i.failureColor,m,u);a.viewpoints.push(g),l=g.guid}const p=D({author:i.author,comment:W(c),viewpointGuid:l});a.comments.push(p),t.topics.set(a.guid,a),n++}}}function te(t,e,i,n){const o=[];return e.passed?o.push("IDS Validation Passed — all requirements satisfied"):o.push(`IDS Validation Failure — ${i} of ${n} requirements failed`),o.push(""),o.push(`Specification: ${t.specification.name}`),t.specification.description&&o.push(`Description: ${t.specification.description}`),o.push(`Entity Type: ${e.entityType}`),e.globalId&&o.push(`GlobalId: ${e.globalId}`),e.entityName&&o.push(`Name: ${e.entityName}`),o.join(`
|
|
279
|
+
`)}function ee(t){const e=[];return e.push(`IDS Specification Failure — ${t.failedCount} of ${t.applicableCount} entities failed`),t.specification.description&&(e.push(""),e.push(t.specification.description)),e.push(""),e.push(`Applicable: ${t.applicableCount}`),e.push(`Passed: ${t.passedCount}`),e.push(`Failed: ${t.failedCount}`),e.join(`
|
|
280
|
+
`)}function W(t){const e=[];return e.push(`[${t.facetType}] ${t.checkedDescription}`),t.failureReason&&e.push(`Failure: ${t.failureReason}`),t.expectedValue&&e.push(`Expected: ${t.expectedValue}`),t.actualValue&&e.push(`Actual: ${t.actualValue}`),e.join(`
|
|
281
|
+
`)}function ie(t){const e=(t.min.x+t.max.x)/2,i=(t.min.y+t.max.y)/2,n=(t.min.z+t.max.z)/2,o=t.max.x-t.min.x,s=t.max.y-t.min.y,c=t.max.z-t.min.z,r=Math.max(o,s,c,.1),a=60*Math.PI/180,l=r/2/Math.tan(a/2)*1.5,p=Math.sqrt(.6*.6+.5*.5+.6*.6),f=.6/p*l,m=.5/p*l,u=.6/p*l,g=e+f,d=i+m,x=n+u,w=e-g,T=i-d,S=n-x,v=Math.sqrt(w*w+T*T+S*S);return{cameraViewPoint:{x:g,y:-x,z:d},cameraDirection:{x:w/v,y:-S/v,z:T/v},cameraUpVector:{x:0,y:0,z:1},fieldOfView:60}}function J(t,e,i,n){const o={guid:C(),components:{selection:[{ifcGuid:t}],visibility:{defaultVisibility:!1,exceptions:[{ifcGuid:t}]}}};return e&&(o.components.coloring=[{color:e,components:[{ifcGuid:t}]}]),i&&(o.perspectiveCamera=ie(i)),n&&(o.snapshot=n),o}function ne(t,e){const i={guid:C(),components:{selection:t.map(n=>({ifcGuid:n})),visibility:{defaultVisibility:!1,exceptions:t.map(n=>({ifcGuid:n}))}}};return e&&(i.components.coloring=[{color:e,components:t.map(n=>({ifcGuid:n}))}]),i}function ue(t){return{version:t?.version??"2.1",projectId:C(),name:t?.name,topics:new Map}}function me(t){return{guid:C(),title:t.title,description:t.description,topicType:t.topicType??"Issue",topicStatus:t.topicStatus??"Open",priority:t.priority,creationDate:new Date().toISOString(),creationAuthor:t.author,assignedTo:t.assignedTo,dueDate:t.dueDate,labels:t.labels,comments:[],viewpoints:[]}}function de(t){return{guid:C(),date:new Date().toISOString(),author:t.author,comment:t.comment,viewpointGuid:t.viewpointGuid}}export{U as B,pe as a,ue as b,re as c,j as d,le as e,me as f,se as g,de as h,fe as i,ot as p,ce as r,ae as w};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{g as Ot}from"./cesium-DUOzBlqv.js";function Ct(ye,_e){for(var oe=0;oe<_e.length;oe++){const ae=_e[oe];if(typeof ae!="string"&&!Array.isArray(ae)){for(const ce in ae)if(ce!=="default"&&!(ce in ye)){const we=Object.getOwnPropertyDescriptor(ae,ce);we&&Object.defineProperty(ye,ce,we.get?we:{enumerable:!0,get:()=>ae[ce]})}}}return Object.freeze(Object.defineProperty(ye,Symbol.toStringTag,{value:"Module"}))}var He={exports:{}};(function(ye){(_e=>{var oe=Object.defineProperty,ae=Object.getOwnPropertyDescriptor,ce=Object.getOwnPropertyNames,we=Object.prototype.hasOwnProperty,Xe=(e,t)=>{for(var r in t)oe(e,r,{get:t[r],enumerable:!0})},Ke=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let g of ce(t))!we.call(e,g)&&g!==r&&oe(e,g,{get:()=>t[g],enumerable:!(a=ae(t,g))||a.enumerable});return e},Ze=e=>Ke(oe({},"__esModule",{value:!0}),e),le=(e,t,r)=>new Promise((a,g)=>{var y=f=>{try{k(r.next(f))}catch(D){g(D)}},h=f=>{try{k(r.throw(f))}catch(D){g(D)}},k=f=>f.done?a(f.value):Promise.resolve(f.value).then(y,h);k((r=r.apply(e,t)).next())}),Ee={};Xe(Ee,{analyzeMetafile:()=>bt,analyzeMetafileSync:()=>Et,build:()=>gt,buildSync:()=>vt,context:()=>pt,default:()=>$t,formatMessages:()=>wt,formatMessagesSync:()=>_t,initialize:()=>St,stop:()=>kt,transform:()=>yt,transformSync:()=>xt,version:()=>mt}),_e.exports=Ze(Ee);function Re(e){let t=a=>{if(a===null)r.write8(0);else if(typeof a=="boolean")r.write8(1),r.write8(+a);else if(typeof a=="number")r.write8(2),r.write32(a|0);else if(typeof a=="string")r.write8(3),r.write(Z(a));else if(a instanceof Uint8Array)r.write8(4),r.write(a);else if(a instanceof Array){r.write8(5),r.write32(a.length);for(let g of a)t(g)}else{let g=Object.keys(a);r.write8(6),r.write32(g.length);for(let y of g)r.write(Z(y)),t(a[y])}},r=new Ue;return r.write32(0),r.write32(e.id<<1|+!e.isRequest),t(e.value),De(r.buf,r.len-4,0),r.buf.subarray(0,r.len)}function et(e){let t=()=>{switch(r.read8()){case 0:return null;case 1:return!!r.read8();case 2:return r.read32();case 3:return he(r.read());case 4:return r.read();case 5:{let h=r.read32(),k=[];for(let f=0;f<h;f++)k.push(t());return k}case 6:{let h=r.read32(),k={};for(let f=0;f<h;f++)k[he(r.read())]=t();return k}default:throw new Error("Invalid packet")}},r=new Ue(e),a=r.read32(),g=(a&1)===0;a>>>=1;let y=t();if(r.ptr!==e.length)throw new Error("Invalid packet");return{id:a,isRequest:g,value:y}}var Ue=class{constructor(e=new Uint8Array(1024)){this.buf=e,this.len=0,this.ptr=0}_write(e){if(this.len+e>this.buf.length){let t=new Uint8Array((this.len+e)*2);t.set(this.buf),this.buf=t}return this.len+=e,this.len-e}write8(e){let t=this._write(1);this.buf[t]=e}write32(e){let t=this._write(4);De(this.buf,e,t)}write(e){let t=this._write(4+e.length);De(this.buf,e.length,t),this.buf.set(e,t+4)}_read(e){if(this.ptr+e>this.buf.length)throw new Error("Invalid packet");return this.ptr+=e,this.ptr-e}read8(){return this.buf[this._read(1)]}read32(){return Ie(this.buf,this._read(4))}read(){let e=this.read32(),t=new Uint8Array(e),r=this._read(t.length);return t.set(this.buf.subarray(r,r+e)),t}},Z,he,Ae;if(typeof TextEncoder<"u"&&typeof TextDecoder<"u"){let e=new TextEncoder,t=new TextDecoder;Z=r=>e.encode(r),he=r=>t.decode(r),Ae='new TextEncoder().encode("")'}else if(typeof Buffer<"u")Z=e=>Buffer.from(e),he=e=>{let{buffer:t,byteOffset:r,byteLength:a}=e;return Buffer.from(t,r,a).toString()},Ae='Buffer.from("")';else throw new Error("No UTF-8 codec found");if(!(Z("")instanceof Uint8Array))throw new Error(`Invariant violation: "${Ae} instanceof Uint8Array" is incorrectly false
|
|
2
2
|
|
|
3
3
|
This indicates that your JavaScript environment is broken. You cannot use
|
|
4
4
|
esbuild in this environment because esbuild relies on this invariant. This
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.cesium-svgPath-svg{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}.cesium-button{display:inline-block;position:relative;background:#303336;border:1px solid #444;color:#edffff;fill:#edffff;border-radius:4px;padding:5px 12px;margin:2px 3px;cursor:pointer;overflow:hidden;-moz-user-select:none;-webkit-user-select:none;user-select:none}.cesium-button:focus{color:#fff;fill:#fff;border-color:#ea4;outline:none}.cesium-button:hover{color:#fff;fill:#fff;background:#48b;border-color:#aef;box-shadow:0 0 8px #fff}.cesium-button:active{color:#000;fill:#000;background:#adf;border-color:#fff;box-shadow:0 0 8px #fff}.cesium-button:disabled,.cesium-button-disabled,.cesium-button-disabled:focus,.cesium-button-disabled:hover,.cesium-button-disabled:active{background:#303336;border-color:#444;color:#646464;fill:#646464;box-shadow:none;cursor:default}.cesium-button option{background-color:#000;color:#eee}.cesium-button option:disabled{color:#777}.cesium-button input,.cesium-button label{cursor:pointer}.cesium-button input{vertical-align:sub}.cesium-toolbar-button{box-sizing:border-box;width:32px;height:32px;border-radius:14%;padding:0;vertical-align:middle;z-index:0}.cesium-performanceDisplay-defaultContainer{position:absolute;top:50px;right:10px;text-align:right}.cesium-performanceDisplay{background-color:#282828b3;padding:7px;border-radius:5px;border:1px solid #444;font:700 12px sans-serif}.cesium-performanceDisplay-fps{color:#e52}.cesium-performanceDisplay-throttled{color:#a42}.cesium-performanceDisplay-ms{color:#de3}.cesium-animation-theme{visibility:hidden;display:block;position:absolute;z-index:-100}.cesium-animation-themeNormal{color:#222}.cesium-animation-themeHover{color:#4488b0}.cesium-animation-themeSelect{color:#242}.cesium-animation-themeDisabled{color:#333}.cesium-animation-themeKnob{color:#222}.cesium-animation-themePointer{color:#2e2}.cesium-animation-themeSwoosh{color:#8ac}.cesium-animation-themeSwooshHover{color:#aef}.cesium-animation-svgText{fill:#edffff;font-family:Sans-Serif;font-size:15px;text-anchor:middle}.cesium-animation-blank{fill:#000;fill-opacity:.01;stroke:none}.cesium-animation-rectButton{cursor:pointer;-moz-user-select:none;-webkit-user-select:none;user-select:none}.cesium-animation-rectButton .cesium-animation-buttonGlow{fill:#fff;stroke:none;display:none}.cesium-animation-rectButton:hover .cesium-animation-buttonGlow{display:block}.cesium-animation-rectButton .cesium-animation-buttonPath{fill:#edffff}.cesium-animation-rectButton .cesium-animation-buttonMain{stroke:#444;stroke-width:1.2}.cesium-animation-rectButton:hover .cesium-animation-buttonMain{stroke:#aef}.cesium-animation-rectButton:active .cesium-animation-buttonMain{fill:#abd6ff}.cesium-animation-buttonDisabled{-moz-user-select:none;-webkit-user-select:none;user-select:none}.cesium-animation-buttonDisabled .cesium-animation-buttonMain{stroke:#555}.cesium-animation-buttonDisabled .cesium-animation-buttonPath{fill:#818181}.cesium-animation-buttonDisabled .cesium-animation-buttonGlow{display:none}.cesium-animation-buttonToggled .cesium-animation-buttonGlow{display:block;fill:#2e2}.cesium-animation-buttonToggled .cesium-animation-buttonMain{stroke:#2e2}.cesium-animation-buttonToggled:hover .cesium-animation-buttonGlow{fill:#fff}.cesium-animation-buttonToggled:hover .cesium-animation-buttonMain{stroke:#2e2}.cesium-animation-shuttleRingG,.cesium-animation-shuttleRingPointer,.cesium-animation-shuttleRingPausePointer{cursor:pointer}.cesium-animation-shuttleRingBack{fill:#181818;fill-opacity:.8;stroke:#333;stroke-width:1.2}.cesium-animation-shuttleRingSwoosh line{stroke:#8ac;stroke-width:3;stroke-opacity:.2;stroke-linecap:round}.cesium-animation-knobOuter{cursor:pointer;stroke:#444;stroke-width:1.2}.cesium-animation-knobInner{cursor:pointer}.cesium-baseLayerPicker-selected{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.cesium-baseLayerPicker-dropDown{display:block;position:absolute;box-sizing:content-box;top:auto;right:0;width:320px;max-height:500px;margin-top:5px;background-color:#262626bf;border:1px solid #444;padding:6px;overflow:auto;border-radius:10px;-moz-user-select:none;-webkit-user-select:none;user-select:none;transform:translateY(-20%);visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in,transform .2s ease-in}.cesium-baseLayerPicker-dropDown-visible{transform:translate(0);visibility:visible;opacity:1;transition:opacity .2s ease-out,transform .2s ease-out}.cesium-baseLayerPicker-sectionTitle{display:block;font-family:sans-serif;font-size:16pt;text-align:left;color:#edffff;margin-bottom:4px}.cesium-baseLayerPicker-choices{margin-bottom:5px}.cesium-baseLayerPicker-categoryTitle{color:#edffff;font-size:11pt}.cesium-baseLayerPicker-choices{display:block;border:1px solid #888;border-radius:5px;padding:5px 0}.cesium-baseLayerPicker-item{display:inline-block;vertical-align:top;margin:2px 5px;width:64px;text-align:center;cursor:pointer}.cesium-baseLayerPicker-itemLabel{display:block;font-family:sans-serif;font-size:8pt;text-align:center;vertical-align:middle;color:#edffff;cursor:pointer;word-wrap:break-word}.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemLabel,.cesium-baseLayerPicker-item:focus .cesium-baseLayerPicker-itemLabel{text-decoration:underline}.cesium-baseLayerPicker-itemIcon{display:inline-block;position:relative;width:inherit;height:auto;background-size:100% 100%;border:solid 1px #444;border-radius:9px;color:#edffff;margin:0;padding:0;cursor:pointer;box-sizing:border-box}.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemIcon{border-color:#fff;box-shadow:0 0 8px #fff,0 0 8px #fff}.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemLabel{color:#bdecf8}.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemIcon{border:double 4px rgb(189,236,248)}.cesium-widget{font-family:sans-serif;font-size:16px;overflow:hidden;display:block;position:relative;top:0;left:0;width:100%;height:100%}.cesium-widget,.cesium-widget canvas{width:100%;height:100%;touch-action:none}.cesium-widget-credits{display:block;position:absolute;bottom:0;left:0;color:#fff;font-size:10px;text-shadow:0px 0px 2px #000000;padding-right:5px}.cesium-widget-errorPanel{position:absolute;inset:0;text-align:center;background:#000000b3;z-index:99999}.cesium-widget-errorPanel:before{display:inline-block;vertical-align:middle;height:100%;content:""}.cesium-widget-errorPanel-content{width:75%;max-width:500px;display:inline-block;text-align:left;vertical-align:middle;border:1px solid #510c00;border-radius:7px;background-color:#f0d9d5;font-size:14px;color:#510c00}.cesium-widget-errorPanel-content.expanded{max-width:75%}.cesium-widget-errorPanel-header{font-size:18px;font-family:Open Sans,Verdana,Geneva,sans-serif;background:#d69d93;border-bottom:2px solid #510c00;border-radius:3px 3px 0 0;padding:15px}.cesium-widget-errorPanel-scroll{overflow:auto;font-family:Open Sans,Verdana,Geneva,sans-serif;white-space:pre-wrap;padding:0 15px;margin:10px 0 20px}.cesium-widget-errorPanel-buttonPanel{padding:0 15px;margin:10px 0 20px;text-align:right}.cesium-widget-errorPanel-buttonPanel button{border-color:#510c00;background:#d69d93;color:#202020;margin:0}.cesium-widget-errorPanel-buttonPanel button:focus{border-color:#510c00;background:#f0d9d5;color:#510c00}.cesium-widget-errorPanel-buttonPanel button:hover{border-color:#510c00;background:#f0d9d5;color:#510c00}.cesium-widget-errorPanel-buttonPanel button:active{border-color:#510c00;background:#b17b72;color:#510c00}.cesium-widget-errorPanel-more-details{text-decoration:underline;cursor:pointer}.cesium-widget-errorPanel-more-details:hover{color:#2b0700}.cesium-cesiumInspector{border-radius:5px;transition:width ease-in-out .25s;background:#303336cc;border:1px solid #444;color:#edffff;display:inline-block;position:relative;padding:4px 12px;-moz-user-select:none;-webkit-user-select:none;user-select:none;overflow:hidden}.cesium-cesiumInspector-button{text-align:center;font-size:11pt}.cesium-cesiumInspector-visible .cesium-cesiumInspector-button{border-bottom:1px solid #aaa;padding-bottom:3px}.cesium-cesiumInspector input:enabled,.cesium-cesiumInspector-button{cursor:pointer}.cesium-cesiumInspector-visible{width:185px;height:auto}.cesium-cesiumInspector-hidden{width:122px;height:17px}.cesium-cesiumInspector-sectionContent{max-height:600px}.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionContent{max-height:0;padding:0!important;overflow:hidden}.cesium-cesiumInspector-dropDown{margin:5px 0;font-family:sans-serif;font-size:10pt;width:185px}.cesium-cesiumInspector-frustumStatistics{padding:5px;background-color:#505050bf}.cesium-cesiumInspector-pickButton{background-color:#0000004d;border:1px solid #444;color:#edffff;border-radius:5px;padding:3px 7px;cursor:pointer;-moz-user-select:none;-webkit-user-select:none;user-select:none;margin:0 auto}.cesium-cesiumInspector-pickButton:focus{outline:none}.cesium-cesiumInspector-pickButton:active,.cesium-cesiumInspector-pickButtonHighlight{color:#000;background:#adf;border-color:#fff;box-shadow:0 0 8px #fff}.cesium-cesiumInspector-center{text-align:center}.cesium-cesiumInspector-sectionHeader{font-weight:700;font-size:10pt;margin:0;cursor:pointer}.cesium-cesiumInspector-pickSection{border:1px solid #aaa;border-radius:5px;padding:3px;margin-bottom:5px}.cesium-cesiumInspector-sectionContent{margin-bottom:10px;transition:max-height .25s}.cesium-cesiumInspector-tileText{padding-bottom:10px;border-bottom:1px solid #aaa}.cesium-cesiumInspector-relativeText{padding-top:10px}.cesium-cesiumInspector-sectionHeader:before{margin-right:5px;content:"-";width:1ch;display:inline-block}.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionHeader:before{content:"+"}ul.cesium-cesiumInspector-statistics{margin:0;padding-top:3px;padding-bottom:3px}ul.cesium-cesiumInspector-statistics+ul.cesium-cesiumInspector-statistics{border-top:1px solid #aaa}.cesium-cesiumInspector-slider{margin-top:5px}.cesium-cesiumInspector-slider input[type=number]{text-align:left;background-color:#222;outline:none;border:1px solid #444;color:#edffff;width:100px;border-radius:3px;padding:1px;margin-left:10px;cursor:auto}.cesium-cesiumInspector-slider input[type=number]::-webkit-outer-spin-button,.cesium-cesiumInspector-slider input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.cesium-cesiumInspector-slider input[type=range]{margin-left:5px;vertical-align:middle}.cesium-cesiumInspector-hide .cesium-cesiumInspector-styleEditor{display:none}.cesium-cesiumInspector-styleEditor{padding:10px;border-radius:5px;background:#303336cc;border:1px solid #444}.cesium-cesiumInspector-styleEditor textarea{width:100%;height:300px;background:transparent;color:#edffff;border:none;padding:0;white-space:pre;overflow-wrap:normal;overflow-x:auto}.cesium-3DTilesInspector{width:300px;pointer-events:all}.cesium-3DTilesInspector-statistics{font-size:11px}.cesium-3DTilesInspector-disabledElementsInfo{margin:5px 0 0;padding:0 0 0 20px;color:#eed202}.cesium-3DTilesInspector div,.cesium-3DTilesInspector input[type=range]{width:100%;box-sizing:border-box}.cesium-cesiumInspector-error{color:#ff9e9e;overflow:auto}.cesium-3DTilesInspector .cesium-cesiumInspector-section{margin-top:3px}.cesium-3DTilesInspector .cesium-cesiumInspector-sectionHeader+.cesium-cesiumInspector-show{border-top:1px solid white}input.cesium-cesiumInspector-url{overflow:hidden;white-space:nowrap;overflow-x:scroll;background-color:transparent;color:#fff;outline:none;border:none;height:1em;width:100%}.cesium-cesiumInspector .field-group{display:table}.cesium-cesiumInspector .field-group>label{display:table-cell;font-weight:700}.cesium-cesiumInspector .field-group>.field{display:table-cell;width:100%}.cesium-VoxelInspector{width:300px;pointer-events:all}.cesium-VoxelInspector div,.cesium-VoxelInspector input[type=range]{width:100%;box-sizing:border-box}.cesium-VoxelInspector .cesium-cesiumInspector-section{margin-top:3px}.cesium-VoxelInspector .cesium-cesiumInspector-sectionHeader+.cesium-cesiumInspector-show{border-top:1px solid white}.cesium-button.cesium-fullscreenButton,.cesium-button.cesium-vrButton{display:block;width:100%;height:100%;margin:0;border-radius:0}.cesium-viewer-geocoderContainer .cesium-geocoder-input{border:solid 1px #444;background-color:#282828b3;color:#fff;display:inline-block;vertical-align:middle;width:0;height:32px;margin:0;padding:0 32px 0 0;border-radius:0;box-sizing:border-box;transition:width ease-in-out .25s,background-color .2s ease-in-out;-webkit-appearance:none}.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input{border-color:#aef;box-shadow:0 0 8px #fff}.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus{border-color:#ea4;background-color:#0f0f0fe6;box-shadow:none;outline:none}.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input,.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus,.cesium-viewer-geocoderContainer .cesium-geocoder-input-wide{padding-left:4px;width:250px}.cesium-viewer-geocoderContainer .search-results{position:absolute;background-color:#000;color:#eee;overflow-y:auto;opacity:.8;width:100%}.cesium-viewer-geocoderContainer .search-results ul{list-style-type:none;margin:0;padding:0}.cesium-viewer-geocoderContainer .search-results ul li{font-size:14px;padding:3px 10px}.cesium-viewer-geocoderContainer .search-results ul li:hover{cursor:pointer}.cesium-viewer-geocoderContainer .search-results ul li.active{background:#48b}.cesium-geocoder-searchButton{background-color:#303336;display:inline-block;position:absolute;cursor:pointer;width:32px;top:1px;right:1px;height:30px;vertical-align:middle;fill:#edffff}.cesium-geocoder-searchButton:hover{background-color:#48b}.cesium-infoBox{display:block;position:absolute;top:50px;right:0;width:40%;max-width:480px;background:#262626f2;color:#edffff;border:1px solid #444;border-right:none;border-top-left-radius:7px;border-bottom-left-radius:7px;box-shadow:0 0 10px 1px #000;transform:translate(100%);visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in,transform .2s ease-in}.cesium-infoBox-visible{transform:translate(0);visibility:visible;opacity:1;transition:opacity .2s ease-out,transform .2s ease-out}.cesium-infoBox-title{display:block;height:20px;padding:5px 30px 5px 25px;background:#545454;border-top-left-radius:7px;text-align:center;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;box-sizing:content-box}.cesium-infoBox-bodyless .cesium-infoBox-title{border-bottom-left-radius:7px}button.cesium-infoBox-camera{display:block;position:absolute;top:4px;left:4px;width:22px;height:22px;background:transparent;border-color:transparent;border-radius:3px;padding:0 5px;margin:0}button.cesium-infoBox-close{display:block;position:absolute;top:5px;right:5px;height:20px;background:transparent;border:none;border-radius:2px;font-weight:700;font-size:16px;padding:0 5px;margin:0;color:#edffff}button.cesium-infoBox-close:focus{background:#ee880070;outline:none}button.cesium-infoBox-close:hover{background:#888;color:#000}button.cesium-infoBox-close:active{background:#a00;color:#000}.cesium-infoBox-bodyless .cesium-infoBox-iframe{display:none}.cesium-infoBox-iframe{border:none;width:100%;width:calc(100% - 2px)}span.cesium-sceneModePicker-wrapper{display:inline-block;position:relative;margin:0 3px}.cesium-sceneModePicker-visible{visibility:visible;opacity:1;transition:opacity .25s linear}.cesium-sceneModePicker-hidden{visibility:hidden;opacity:0;transition:visibility 0s .25s,opacity .25s linear}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-none{display:none}.cesium-sceneModePicker-slide-svg{transition:left 2s;top:0;left:0}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-dropDown-icon{box-sizing:border-box;padding:0;margin:3px 0}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D,.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView,.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D{margin:0 0 3px}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-icon2D{left:100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-iconColumbusView{left:200%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon3D{left:-200%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon2D,.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-icon3D{left:-100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-iconColumbusView{left:100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-selected{border-color:#2e2;box-shadow:0 0 8px #fff,0 0 8px #fff}span.cesium-projectionPicker-wrapper{display:inline-block;position:relative;margin:0 3px}.cesium-projectionPicker-visible{visibility:visible;opacity:1;transition:opacity .25s linear}.cesium-projectionPicker-hidden{visibility:hidden;opacity:0;transition:visibility 0s .25s,opacity .25s linear}.cesium-projectionPicker-wrapper .cesium-projectionPicker-none{display:none}.cesium-projectionPicker-wrapper .cesium-projectionPicker-dropDown-icon{box-sizing:border-box;padding:0;margin:3px 0}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective,.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic{margin:0 0 3px}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective .cesium-projectionPicker-iconOrthographic{left:100%}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic .cesium-projectionPicker-iconPerspective{left:-100%}.cesium-projectionPicker-wrapper .cesium-projectionPicker-selected{border-color:#2e2;box-shadow:0 0 8px #fff,0 0 8px #fff}.cesium-performance-watchdog-message-area{position:relative;background-color:#ff0;color:#000;padding:10px}.cesium-performance-watchdog-message{margin-right:30px}.cesium-performance-watchdog-message-dismiss{position:absolute;right:0;margin:0 10px 0 0}.cesium-navigationHelpButton-wrapper{position:relative;display:inline-block}.cesium-navigation-help{visibility:hidden;position:absolute;top:38px;right:2px;width:250px;border-radius:10px;transform:scale(.01);transform-origin:234px -10px;transition:visibility 0s .25s,transform .25s ease-in}.cesium-navigation-help-visible{visibility:visible;transform:scale(1);transition:transform .25s ease-out}.cesium-navigation-help-instructions{border:1px solid #444;background-color:#262626bf;padding-bottom:5px;border-radius:0 0 10px 10px}.cesium-click-navigation-help{display:none}.cesium-touch-navigation-help{display:none;padding-top:5px}.cesium-click-navigation-help-visible,.cesium-touch-navigation-help-visible{display:block}.cesium-navigation-help-pan{color:#6cf;font-weight:700}.cesium-navigation-help-zoom{color:#65fd00;font-weight:700}.cesium-navigation-help-rotate{color:#ffd800;font-weight:700}.cesium-navigation-help-tilt{color:#d800d8;font-weight:700}.cesium-navigation-help-details{color:#fff}.cesium-navigation-button{color:#fff;background-color:transparent;border-bottom:none;border-top:1px solid #444;border-right:1px solid #444;margin:0;width:50%;cursor:pointer}.cesium-navigation-button-icon{vertical-align:middle;padding:5px 1px}.cesium-navigation-button:focus{outline:none}.cesium-navigation-button-left{border-radius:10px 0 0;border-left:1px solid #444}.cesium-navigation-button-right{border-radius:0 10px 0 0;border-left:none}.cesium-navigation-button-selected{background-color:#262626bf}.cesium-navigation-button-unselected{background-color:#000000bf}.cesium-navigation-button-unselected:hover{background-color:#4c4c4cbf}.cesium-selection-wrapper{position:absolute;width:160px;height:160px;pointer-events:none;visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in}.cesium-selection-wrapper-visible{visibility:visible;opacity:1;transition:opacity .2s ease-out}.cesium-selection-wrapper svg{fill:#2e2;stroke:#000;stroke-width:1.1px}.cesium-timeline-main{position:relative;left:0;bottom:0;overflow:hidden;border:solid 1px #888;-moz-user-select:none;-webkit-user-select:none;user-select:none}.cesium-timeline-trackContainer{width:100%;overflow:auto;border-top:solid 1px #888;position:relative;top:0;left:0}.cesium-timeline-tracks{position:absolute;top:0;left:0;width:100%}.cesium-timeline-needle{position:absolute;left:0;top:1.7em;bottom:0;width:1px;background:red}.cesium-timeline-bar{position:relative;left:0;top:0;overflow:hidden;cursor:pointer;width:100%;height:1.7em;background:linear-gradient(to bottom,#747577cc,#3a4452cc 11%,#2e3238cc 46%,#353535cc 81% 100%)}.cesium-timeline-ruler{visibility:hidden;white-space:nowrap;font-size:80%;z-index:-200}.cesium-timeline-highlight{position:absolute;bottom:0;left:0;background:#08f}.cesium-timeline-ticLabel{position:absolute;top:0;left:0;white-space:nowrap;font-size:80%;color:#eee}.cesium-timeline-ticMain{position:absolute;bottom:0;left:0;width:1px;height:50%;background:#eee}.cesium-timeline-ticSub{position:absolute;bottom:0;left:0;width:1px;height:33%;background:#aaa}.cesium-timeline-ticTiny{position:absolute;bottom:0;left:0;width:1px;height:25%;background:#888}.cesium-timeline-icon16{display:block;position:absolute;width:16px;height:16px;background-image:url(data:text/plain;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAAB3AH1ZAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sIDBITKIVzLEMAAAKNSURBVEjHxdXNSxRhHAfw7zzrqhuoWJnSkrippUVSEKsHI9BTUYdAJA/RoYMREV26rAdn6tAfUARi16hQqkOBQRgUEYFWEC3OwczMjdZd92VmdWfmeelgTjO7q7gb0VzmmZnn85vvPPPMM8B/3qTcE2PPpuTZKB1eWuUQACgXYACYwVFbCTTVeZXB/i55o4LFelcAZfStYD4vpAoPGAGo4GBcQEgSOAUMQyAezwK6iQfDPXnhS/FkHZ+/8VLMWxxqWkfH3gbMRNOYi2roavbja0zHQmoFPYf8ED4Ko4aivm9MOG/u9I8mwrafeK7a/tVrNc/bARYN5noadeq7q0342vXw9CIMU6BmW8rVP9cPBPe52uu+v3O/y9sB4gkTWs6Qsk0mj5ExXMelejvA8WafYmkmGPHanTijdtvif8rx5RiCjdWKs2Cp3jWRDl96KhrbqlBeJqBOLyLQXg0IgbkZDS0dO8EZxZfPSTA9jvDDK3mT0OmP1FXh3XwEEAKdTX5MRWLgjCK4pwH3xt/YnjgLHAv4lHTCAKMMu/wV+KZGob6PoKyMQ0+sgBpZVJZn0NterxQaVqef/DRn+/EXYds/mZx2eVeAW9d65dhCEsaKCb7K8HH0gqTevyh9GDkn0VULRiaLzJKGBu9swfdaiie5RVo9ESURN8E8BE0n7ggACJy8KzghSCzp6DmwWxkaCm24EBXr8wI8Hrkq06QBiRC0t24HALS11IBTCyJl4vb1AXmzpbVYTwoVOXN0h7L8Mwtm8bXPybIQ/5FCX3dA2cr6XowvGCA02CvztAnz9+JiZk1AMxG6fEreSoBiPNmoyNnuWiWVzAIAtISO08E6pZi/3N96AIDn4E3h3P8L/wshP+txtEs4JAAAAABJRU5ErkJggg==);background-repeat:no-repeat}.cesium-viewer{font-family:sans-serif;font-size:16px;overflow:hidden;display:block;position:relative;top:0;left:0;width:100%;height:100%}.cesium-viewer-cesiumWidgetContainer{width:100%;height:100%}.cesium-viewer-bottom{display:block;position:absolute;bottom:0;left:0;padding-right:5px}.cesium-viewer .cesium-widget-credits{display:inline;position:static;bottom:auto;left:auto;padding-right:0;color:#fff;font-size:10px;text-shadow:0 0 2px #000000}.cesium-viewer-timelineContainer{position:absolute;bottom:0;left:169px;right:29px;height:27px;padding:0;margin:0;overflow:hidden;font-size:14px}.cesium-viewer-animationContainer{position:absolute;bottom:0;left:0;padding:0;width:169px;height:112px}.cesium-viewer-fullscreenContainer,.cesium-viewer-vrContainer{position:absolute;bottom:0;right:0;padding:0;width:29px;height:29px;overflow:hidden}.cesium-viewer-toolbar{display:block;position:absolute;top:5px;right:5px}.cesium-viewer-cesiumInspectorContainer{display:block;position:absolute;top:50px;right:10px}.cesium-viewer-geocoderContainer{position:relative;display:inline-block;margin:0 3px}.cesium-viewer-cesium3DTilesInspectorContainer,.cesium-viewer-voxelInspectorContainer{display:block;position:absolute;top:50px;right:10px;max-height:calc(100% - 120px);box-sizing:border-box;overflow-y:auto;overflow-x:hidden}.cesium-viewer-i3s-explorer ul{list-style-type:none}.cesium-viewer-i3s-explorer .layersList{padding:0}.cesium-viewer-i3s-explorer input{margin:0 3px 0 0}.cesium-viewer-i3s-explorer .expandItem{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:20px}.cesium-viewer-i3s-explorer .nested,.cesium-viewer-i3s-explorer #bsl-wrapper{display:none}.cesium-viewer-i3s-explorer .active{display:block}.cesium-viewer-i3s-explorer .li-wrapper{display:flex;flex-direction:row;align-content:center}
|