@vcmap/ui 5.0.0-rc.6
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/LICENSE.md +21 -0
- package/README.md +132 -0
- package/build/.eslintrc +6 -0
- package/build/build.js +165 -0
- package/build/buildCesium.js +19 -0
- package/build/buildHelpers.js +213 -0
- package/build/buildPreview.js +23 -0
- package/build/commonViteConfig.js +39 -0
- package/build/determineHost.js +46 -0
- package/build/generateOLLib.js +196 -0
- package/build/getPluginProxies.js +29 -0
- package/build/info/api-plugin.js +11 -0
- package/build/info/conf.json +21 -0
- package/build/info/define-plugin.js +31 -0
- package/build/info/package.json +3 -0
- package/build/info/publish.js +190 -0
- package/build/info/virtual-plugin.js +15 -0
- package/build/staging/Dockerfile +2 -0
- package/config/aerowest.config.json +378 -0
- package/config/base.config.json +1073 -0
- package/config/berlin.config.json +529 -0
- package/config/dev.config.json +44 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
- package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
- package/dist/assets/cesium/Assets/Images/bing_maps_credit.png +0 -0
- package/dist/assets/cesium/Assets/Images/cesium_credit.png +0 -0
- package/dist/assets/cesium/Assets/Images/google_earth_credit.png +0 -0
- package/dist/assets/cesium/Assets/Images/ion-credit.png +0 -0
- package/dist/assets/cesium/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml +14 -0
- package/dist/assets/cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/airfield.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/airport.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/alcohol-shop.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/america-football.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/art-gallery.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/bakery.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/bank.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/bar.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/baseball.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/basketball.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/beer.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/bicycle.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/building.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/bus.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/cafe.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/camera.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/campsite.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/car.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/cemetery.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/cesium.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/chemist.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/cinema.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/circle-stroked.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/circle.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/city.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/clothing-store.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/college.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/commercial.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/cricket.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/cross.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/dam.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/danger.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/disability.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/dog-park.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/embassy.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/emergency-telephone.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/entrance.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/farm.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/fast-food.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/ferry.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/fire-station.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/fuel.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/garden.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/gift.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/golf.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/grocery.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/hairdresser.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/harbor.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/heart.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/heliport.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/hospital.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/ice-cream.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/industrial.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/land-use.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/laundry.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/library.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/lighthouse.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/lodging.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/logging.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/london-underground.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/marker-stroked.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/marker.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/minefield.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/mobilephone.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/monument.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/museum.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/music.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/oil-well.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/park.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/park2.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/parking-garage.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/parking.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/pharmacy.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/pitch.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/place-of-worship.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/playground.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/police.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/polling-place.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/post.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/prison.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/rail-above.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/rail-light.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/rail-metro.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/rail-underground.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/rail.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/religious-christian.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/religious-jewish.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/religious-muslim.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/restaurant.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/roadblock.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/rocket.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/school.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/scooter.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/shop.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/skiing.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/slaughterhouse.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/soccer.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/square-stroked.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/square.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/star-stroked.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/star.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/suitcase.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/swimming.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/telephone.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/tennis.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/theatre.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/toilets.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/town-hall.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/town.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/triangle-stroked.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/triangle.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/village.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/warehouse.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/waste-basket.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/water.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/wetland.png +0 -0
- package/dist/assets/cesium/Assets/Textures/maki/zoo.png +0 -0
- package/dist/assets/cesium/Assets/Textures/moonSmall.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/pin.svg +1 -0
- package/dist/assets/cesium/Assets/Textures/waterNormals.jpg +0 -0
- package/dist/assets/cesium/Assets/Textures/waterNormalsSmall.jpg +0 -0
- package/dist/assets/cesium/Assets/approximateTerrainHeights.json +1 -0
- package/dist/assets/cesium/Workers/ArcType-fc72c06c.js +1 -0
- package/dist/assets/cesium/Workers/AttributeCompression-27507afe.js +1 -0
- package/dist/assets/cesium/Workers/AxisAlignedBoundingBox-7565c1e8.js +1 -0
- package/dist/assets/cesium/Workers/BoundingRectangle-9d707275.js +1 -0
- package/dist/assets/cesium/Workers/BoxGeometry-fb31d3b5.js +1 -0
- package/dist/assets/cesium/Workers/Color-56bb5728.js +1 -0
- package/dist/assets/cesium/Workers/ComponentDatatype-a15c9a19.js +1 -0
- package/dist/assets/cesium/Workers/CoplanarPolygonGeometryLibrary-72143c19.js +1 -0
- package/dist/assets/cesium/Workers/CorridorGeometryLibrary-7bae1712.js +1 -0
- package/dist/assets/cesium/Workers/CylinderGeometry-331891fe.js +1 -0
- package/dist/assets/cesium/Workers/CylinderGeometryLibrary-76cda53e.js +1 -0
- package/dist/assets/cesium/Workers/EllipseGeometry-5e3f67b6.js +1 -0
- package/dist/assets/cesium/Workers/EllipseGeometryLibrary-dbc15162.js +1 -0
- package/dist/assets/cesium/Workers/EllipseOutlineGeometry-21191fce.js +1 -0
- package/dist/assets/cesium/Workers/EllipsoidGeodesic-cc3bace8.js +1 -0
- package/dist/assets/cesium/Workers/EllipsoidGeometry-8bfa24a9.js +1 -0
- package/dist/assets/cesium/Workers/EllipsoidOutlineGeometry-48d9c023.js +1 -0
- package/dist/assets/cesium/Workers/EllipsoidRhumbLine-125a8b72.js +1 -0
- package/dist/assets/cesium/Workers/EllipsoidTangentPlane-678e34e4.js +1 -0
- package/dist/assets/cesium/Workers/EncodedCartesian3-96fdc0ef.js +1 -0
- package/dist/assets/cesium/Workers/FrustumGeometry-9ab86004.js +1 -0
- package/dist/assets/cesium/Workers/GeometryAttribute-3915ea0b.js +1 -0
- package/dist/assets/cesium/Workers/GeometryAttributes-32b29525.js +1 -0
- package/dist/assets/cesium/Workers/GeometryInstance-13e4ff38.js +1 -0
- package/dist/assets/cesium/Workers/GeometryOffsetAttribute-8c5e10db.js +1 -0
- package/dist/assets/cesium/Workers/GeometryPipeline-e0eb4567.js +1 -0
- package/dist/assets/cesium/Workers/IndexDatatype-f1dcdf35.js +1 -0
- package/dist/assets/cesium/Workers/IntersectionTests-ac2459de.js +1 -0
- package/dist/assets/cesium/Workers/Matrix2-37e55508.js +1 -0
- package/dist/assets/cesium/Workers/OrientedBoundingBox-e9c07538.js +1 -0
- package/dist/assets/cesium/Workers/Plane-6ee42cab.js +1 -0
- package/dist/assets/cesium/Workers/PolygonGeometryLibrary-b408c688.js +1 -0
- package/dist/assets/cesium/Workers/PolygonPipeline-7b8e4643.js +1 -0
- package/dist/assets/cesium/Workers/PolylinePipeline-6757400c.js +1 -0
- package/dist/assets/cesium/Workers/PolylineVolumeGeometryLibrary-eb972210.js +1 -0
- package/dist/assets/cesium/Workers/PrimitivePipeline-f244975e.js +1 -0
- package/dist/assets/cesium/Workers/RectangleGeometryLibrary-1bd6152a.js +1 -0
- package/dist/assets/cesium/Workers/RuntimeError-8952249c.js +1 -0
- package/dist/assets/cesium/Workers/TerrainEncoding-5a21a97f.js +1 -0
- package/dist/assets/cesium/Workers/Transforms-eb5c1a84.js +39 -0
- package/dist/assets/cesium/Workers/VertexFormat-a0b706b0.js +1 -0
- package/dist/assets/cesium/Workers/WallGeometryLibrary-a6b6a368.js +1 -0
- package/dist/assets/cesium/Workers/WebGLConstants-508b9636.js +1 -0
- package/dist/assets/cesium/Workers/WebMercatorProjection-2839e524.js +1 -0
- package/dist/assets/cesium/Workers/_commonjsHelpers-3aae1032-26891ab7.js +1 -0
- package/dist/assets/cesium/Workers/_rollup_plugin_ignore_empty_module_placeholder-57d574d0.js +1 -0
- package/dist/assets/cesium/Workers/arrayRemoveDuplicates-dc2f4046.js +1 -0
- package/dist/assets/cesium/Workers/cesiumWorkerBootstrapper.js +6 -0
- package/dist/assets/cesium/Workers/combine-3c023bda.js +1 -0
- package/dist/assets/cesium/Workers/combineGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createBoxGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createCircleGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createCorridorGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createCylinderGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createEllipseGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createFrustumGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createPlaneGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createPolygonGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createPolylineGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createRectangleGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createSphereGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +1 -0
- package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +1 -0
- package/dist/assets/cesium/Workers/createVectorTileGeometries.js +1 -0
- package/dist/assets/cesium/Workers/createVectorTilePoints.js +1 -0
- package/dist/assets/cesium/Workers/createVectorTilePolygons.js +1 -0
- package/dist/assets/cesium/Workers/createVectorTilePolylines.js +1 -0
- package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -0
- package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +3 -0
- package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +1 -0
- package/dist/assets/cesium/Workers/createWallGeometry.js +1 -0
- package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +1 -0
- package/dist/assets/cesium/Workers/decodeDraco.js +1 -0
- package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +1 -0
- package/dist/assets/cesium/Workers/defaultValue-81eec7ed.js +1 -0
- package/dist/assets/cesium/Workers/transcodeKTX2.js +1 -0
- package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -0
- package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +1 -0
- package/dist/assets/cesium.fba8ca.js +9118 -0
- package/dist/assets/cesium.js +1 -0
- package/dist/assets/core.d5ed0f.js +4 -0
- package/dist/assets/core.js +1 -0
- package/dist/assets/index.60dea538.css +1 -0
- package/dist/assets/index.6a83278e.js +1 -0
- package/dist/assets/ol.abea3a.js +318 -0
- package/dist/assets/ol.js +1 -0
- package/dist/assets/ui.ad1ec9.css +1 -0
- package/dist/assets/ui.ad1ec9.js +39 -0
- package/dist/assets/ui.js +1 -0
- package/dist/assets/uicomponents.161461.css +1 -0
- package/dist/assets/uicomponents.161461.js +31 -0
- package/dist/assets/uicomponents.js +1 -0
- package/dist/assets/vue-composition-api.7051d7.js +14 -0
- package/dist/assets/vue-composition-api.js +2 -0
- package/dist/assets/vue.9fd7f6.js +9 -0
- package/dist/assets/vue.js +1 -0
- package/dist/assets/vuetify.33dafc.css +5 -0
- package/dist/assets/vuetify.33dafc.js +48 -0
- package/dist/assets/vuetify.js +2 -0
- package/dist/index.html +26 -0
- package/index.js +18 -0
- package/lib/cesium.js +1 -0
- package/lib/core.js +1 -0
- package/lib/ol.js +1 -0
- package/lib/olLib.js +844 -0
- package/lib/ui.js +1 -0
- package/lib/uicomponents.js +1 -0
- package/lib/vue-composition-api.js +2 -0
- package/lib/vue.js +1 -0
- package/lib/vuetify.js +2 -0
- package/map.config.json +35 -0
- package/package.json +130 -0
- package/plugins/@vcmap/pluginExample/config.json +6 -0
- package/plugins/@vcmap/pluginExample/index.js +193 -0
- package/plugins/@vcmap/pluginExample/package.json +7 -0
- package/plugins/@vcmap/pluginExample/pluginExampleComponent.vue +374 -0
- package/plugins/@vcmap/pluginExample/validation.js +30 -0
- package/plugins/@vcmap/project-selector/ContextsListComponent.vue +62 -0
- package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +81 -0
- package/plugins/@vcmap/project-selector/README.md +29 -0
- package/plugins/@vcmap/project-selector/config.json +15 -0
- package/plugins/@vcmap/project-selector/index.js +254 -0
- package/plugins/@vcmap/project-selector/package.json +15 -0
- package/plugins/@vcmap/theme-changer/README.md +21 -0
- package/plugins/@vcmap/theme-changer/ThemeChangerComponent.vue +92 -0
- package/plugins/@vcmap/theme-changer/config.json +69 -0
- package/plugins/@vcmap/theme-changer/index.js +102 -0
- package/plugins/@vcmap/theme-changer/package.json +12 -0
- package/plugins/buttonExamples/ButtonExamples.vue +190 -0
- package/plugins/buttonExamples/index.js +40 -0
- package/plugins/categoryTest/Categories.vue +145 -0
- package/plugins/categoryTest/Category.vue +114 -0
- package/plugins/categoryTest/ItemEditor.vue +13 -0
- package/plugins/categoryTest/index.js +41 -0
- package/plugins/example/index.js +56 -0
- package/plugins/example/mySuperComponent.vue +127 -0
- package/plugins/package.json +5 -0
- package/plugins/test/editor.vue +63 -0
- package/plugins/test/index.js +93 -0
- package/plugins/test/myCustomHeader.vue +19 -0
- package/plugins/test/toolbox-data.js +49 -0
- package/plugins/test/vcsContent.vue +23 -0
- package/plugins/test/windowManagerExample.vue +144 -0
- package/src/actions/actionHelper.js +221 -0
- package/src/actions/stateRefAction.js +50 -0
- package/src/actions/styleSelector.vue +90 -0
- package/src/application/Navbar.vue +89 -0
- package/src/application/VcsApp.vue +147 -0
- package/src/application/VcsMap.vue +57 -0
- package/src/application/empty-cmp.vue +6 -0
- package/src/assets/logo.svg +26 -0
- package/src/contentTree/LayerTree.vue +40 -0
- package/src/contentTree/contentTreeCollection.js +311 -0
- package/src/contentTree/contentTreeItem.js +457 -0
- package/src/contentTree/groupContentTreeItem.js +67 -0
- package/src/contentTree/layerContentTreeItem.js +233 -0
- package/src/contentTree/layerGroupContentTreeItem.js +154 -0
- package/src/contentTree/nodeContentTreeItem.js +37 -0
- package/src/contentTree/obliqueCollectionContentTreeItem.js +155 -0
- package/src/contentTree/subContentTreeItem.js +42 -0
- package/src/contentTree/vcsObjectContentTreeItem.js +98 -0
- package/src/contentTree/viewPointContentTreeItem.js +107 -0
- package/src/init.js +36 -0
- package/src/lang/de.js +60 -0
- package/src/lang/en.js +53 -0
- package/src/manager/buttonManager.js +203 -0
- package/src/manager/toolbox/ToolboxManager.vue +114 -0
- package/src/manager/toolbox/ToolboxMultiSelectButton.vue +96 -0
- package/src/manager/toolbox/ToolboxSingleSelectButton.vue +98 -0
- package/src/manager/toolbox/toolbox-manager.js +203 -0
- package/src/manager/window/WindowComponent.vue +133 -0
- package/src/manager/window/WindowComponentHeader.vue +46 -0
- package/src/manager/window/WindowManager.vue +109 -0
- package/src/manager/window/windowManager.js +437 -0
- package/src/navigation/mapNavCompass.vue +161 -0
- package/src/navigation/mapNavigation.vue +176 -0
- package/src/navigation/obliqueRotation.vue +48 -0
- package/src/navigation/orientationToolsButton.vue +52 -0
- package/src/navigation/tiltSlider.vue +96 -0
- package/src/navigation/vcsCompass.vue +144 -0
- package/src/navigation/vcsZoomButton.vue +27 -0
- package/src/pluginHelper.js +106 -0
- package/src/setup.js +10 -0
- package/src/styles/_theming.scss +15 -0
- package/src/styles/_typography.scss +42 -0
- package/src/styles/main.scss +9 -0
- package/src/styles/utils/_all.scss +12 -0
- package/src/styles/utils/_border.scss +7 -0
- package/src/styles/utils/_cursor.scss +15 -0
- package/src/styles/utils/_display.scss +3 -0
- package/src/styles/utils/_fade-in.scss +8 -0
- package/src/styles/utils/_position.scss +38 -0
- package/src/styles/utils/_size.scss +79 -0
- package/src/styles/utils/_slide-in.scss +26 -0
- package/src/styles/utils/_spacing.scss +11 -0
- package/src/styles/utils/_text.scss +30 -0
- package/src/styles/utils/_transform.scss +11 -0
- package/src/styles/utils/_transition.scss +11 -0
- package/src/styles/utils/_z-index.scss +15 -0
- package/src/vcsUiApp.js +223 -0
- package/src/vuePlugins/i18n.js +20 -0
- package/src/vuePlugins/vuetify.js +54 -0
- package/start.js +3 -0
@@ -0,0 +1,176 @@
|
|
1
|
+
<template>
|
2
|
+
<v-container class="nav-container">
|
3
|
+
<v-row>
|
4
|
+
<VcsCompass
|
5
|
+
:view-mode="viewMode"
|
6
|
+
v-model="heading"
|
7
|
+
/>
|
8
|
+
</v-row>
|
9
|
+
<v-row
|
10
|
+
v-if="isOblique"
|
11
|
+
>
|
12
|
+
<ObliqueRotation
|
13
|
+
v-model="heading"
|
14
|
+
/>
|
15
|
+
</v-row>
|
16
|
+
<v-row justify="center">
|
17
|
+
<VcsZoomButton
|
18
|
+
@zoom-out="zoomOut()"
|
19
|
+
@zoom-in="zoomIn()"
|
20
|
+
/>
|
21
|
+
</v-row>
|
22
|
+
<v-row v-if="is3D" justify="center">
|
23
|
+
<TiltSlider v-model="tilt" />
|
24
|
+
</v-row>
|
25
|
+
</v-container>
|
26
|
+
</template>
|
27
|
+
|
28
|
+
<script>
|
29
|
+
import { computed, inject, ref } from '@vue/composition-api';
|
30
|
+
import { ObliqueMap, CesiumMap, OpenlayersMap } from '@vcmap/core';
|
31
|
+
import { unByKey } from 'ol/Observable.js';
|
32
|
+
import VcsCompass from './vcsCompass.vue';
|
33
|
+
import VcsZoomButton from './vcsZoomButton.vue';
|
34
|
+
import TiltSlider from './tiltSlider.vue';
|
35
|
+
import ObliqueRotation from './obliqueRotation.vue';
|
36
|
+
|
37
|
+
/**
|
38
|
+
* @enum {string}
|
39
|
+
*/
|
40
|
+
const OrientationToolsViewMode = {
|
41
|
+
THREE_D: '3d',
|
42
|
+
TWO_D: '2d',
|
43
|
+
OBLIQUE: 'oblique',
|
44
|
+
};
|
45
|
+
|
46
|
+
function getViewModeForMap(map) {
|
47
|
+
if (map instanceof ObliqueMap) {
|
48
|
+
return OrientationToolsViewMode.OBLIQUE;
|
49
|
+
} else if (map instanceof CesiumMap) {
|
50
|
+
return OrientationToolsViewMode.THREE_D;
|
51
|
+
}
|
52
|
+
return OrientationToolsViewMode.TWO_D;
|
53
|
+
}
|
54
|
+
|
55
|
+
/**
|
56
|
+
* @param {VcsMap} map
|
57
|
+
* @param {Ref<number>} headingRef
|
58
|
+
* @param {Ref<number>} tiltRef
|
59
|
+
* @returns {function():void}
|
60
|
+
*/
|
61
|
+
function mapPostRender(map, headingRef, tiltRef) {
|
62
|
+
const handler = () => {
|
63
|
+
const vp = map.getViewPointSync();
|
64
|
+
if (vp) {
|
65
|
+
headingRef.value = vp.heading;
|
66
|
+
tiltRef.value = vp.pitch;
|
67
|
+
}
|
68
|
+
};
|
69
|
+
|
70
|
+
if (map instanceof CesiumMap) {
|
71
|
+
return map.getScene().postRender.addEventListener(handler);
|
72
|
+
} else if (map instanceof ObliqueMap || map instanceof OpenlayersMap) {
|
73
|
+
const key = map.olMap.on('postrender', handler);
|
74
|
+
return () => {
|
75
|
+
unByKey(key);
|
76
|
+
};
|
77
|
+
}
|
78
|
+
return () => {};
|
79
|
+
}
|
80
|
+
|
81
|
+
/**
|
82
|
+
* @param {VcsMap} map
|
83
|
+
* @param {boolean} [out=false]
|
84
|
+
* @param {number} [zoomFactor]
|
85
|
+
* @returns {Promise<void>}
|
86
|
+
*/
|
87
|
+
async function zoom(map, out = false, zoomFactor = 2) {
|
88
|
+
const viewpoint = await map.getViewPoint();
|
89
|
+
if (out) {
|
90
|
+
viewpoint.distance *= zoomFactor;
|
91
|
+
} else {
|
92
|
+
viewpoint.distance /= zoomFactor;
|
93
|
+
}
|
94
|
+
viewpoint.animate = true;
|
95
|
+
viewpoint.duration = 0.5;
|
96
|
+
viewpoint.cameraPosition = null;
|
97
|
+
await map.gotoViewPoint(viewpoint);
|
98
|
+
}
|
99
|
+
|
100
|
+
export default {
|
101
|
+
components: {
|
102
|
+
ObliqueRotation,
|
103
|
+
TiltSlider,
|
104
|
+
VcsZoomButton,
|
105
|
+
VcsCompass,
|
106
|
+
},
|
107
|
+
setup() {
|
108
|
+
/** @type {VcsApp} */
|
109
|
+
const app = inject('vcsApp');
|
110
|
+
const viewMode = ref(OrientationToolsViewMode.TWO_D);
|
111
|
+
const headingRef = ref(0);
|
112
|
+
const tiltRef = ref(0);
|
113
|
+
|
114
|
+
let postRenderHandler = () => {};
|
115
|
+
|
116
|
+
const setActiveMap = (map) => {
|
117
|
+
viewMode.value = getViewModeForMap(map);
|
118
|
+
postRenderHandler();
|
119
|
+
postRenderHandler = mapPostRender(map, headingRef, tiltRef);
|
120
|
+
};
|
121
|
+
|
122
|
+
app.maps.mapActivated.addEventListener(setActiveMap);
|
123
|
+
setActiveMap(app.maps.activeMap);
|
124
|
+
|
125
|
+
const heading = computed({
|
126
|
+
get() { return headingRef.value; },
|
127
|
+
async set(headingValue) {
|
128
|
+
let vp;
|
129
|
+
if (viewMode.value === OrientationToolsViewMode.OBLIQUE) {
|
130
|
+
vp = await app.maps.activeMap.getViewPoint();
|
131
|
+
} else {
|
132
|
+
vp = app.maps.activeMap.getViewPointSync();
|
133
|
+
}
|
134
|
+
vp.heading = headingValue;
|
135
|
+
app.maps.activeMap.gotoViewPoint(vp);
|
136
|
+
},
|
137
|
+
});
|
138
|
+
|
139
|
+
const tilt = computed({
|
140
|
+
get() { return tiltRef.value; },
|
141
|
+
set(tiltValue) {
|
142
|
+
const vp = app.maps.activeMap.getViewPointSync(); // XXX make async and debounce
|
143
|
+
vp.pitch = tiltValue;
|
144
|
+
app.maps.activeMap.gotoViewPoint(vp);
|
145
|
+
},
|
146
|
+
});
|
147
|
+
|
148
|
+
return {
|
149
|
+
viewMode,
|
150
|
+
heading,
|
151
|
+
tilt,
|
152
|
+
is3D: computed(() => viewMode.value === OrientationToolsViewMode.THREE_D),
|
153
|
+
isOblique: computed(() => viewMode.value === OrientationToolsViewMode.OBLIQUE),
|
154
|
+
zoomIn() { zoom(app.maps.activeMap); }, // debounce?
|
155
|
+
zoomOut() { zoom(app.maps.activeMap, true); },
|
156
|
+
left: () => {},
|
157
|
+
right: () => {},
|
158
|
+
};
|
159
|
+
},
|
160
|
+
};
|
161
|
+
</script>
|
162
|
+
|
163
|
+
<style lang="scss" scoped>
|
164
|
+
.nav-container {
|
165
|
+
position: absolute;
|
166
|
+
right: 2rem;
|
167
|
+
bottom: 2rem;
|
168
|
+
width: unset;
|
169
|
+
}
|
170
|
+
|
171
|
+
.nav-container > {
|
172
|
+
.row {
|
173
|
+
margin-bottom: 15px;
|
174
|
+
}
|
175
|
+
}
|
176
|
+
</style>
|
@@ -0,0 +1,48 @@
|
|
1
|
+
<template>
|
2
|
+
<div class="d-inline-flex">
|
3
|
+
<OrientationToolsButton
|
4
|
+
@click="input(-90)"
|
5
|
+
icon="mdi-undo"
|
6
|
+
tooltip="Rotate view left"
|
7
|
+
/>
|
8
|
+
<OrientationToolsButton
|
9
|
+
@click="input(90)"
|
10
|
+
icon="mdi-redo"
|
11
|
+
tooltip="Rotate view right"
|
12
|
+
/>
|
13
|
+
</div>
|
14
|
+
</template>
|
15
|
+
|
16
|
+
<script>
|
17
|
+
import OrientationToolsButton from './orientationToolsButton.vue';
|
18
|
+
|
19
|
+
/**
|
20
|
+
* @vue-prop {number} value - the current heading
|
21
|
+
* @vue-event {number} input
|
22
|
+
*/
|
23
|
+
export default {
|
24
|
+
name: 'ObliqueRotation',
|
25
|
+
components: { OrientationToolsButton },
|
26
|
+
props: {
|
27
|
+
value: {
|
28
|
+
type: Number,
|
29
|
+
required: true,
|
30
|
+
},
|
31
|
+
},
|
32
|
+
methods: {
|
33
|
+
input(rotation) {
|
34
|
+
let currentValue = this.value + rotation;
|
35
|
+
if (currentValue > 360) {
|
36
|
+
currentValue -= 360;
|
37
|
+
} else if (currentValue < 0) {
|
38
|
+
currentValue += 360;
|
39
|
+
}
|
40
|
+
this.$emit('input', currentValue);
|
41
|
+
},
|
42
|
+
},
|
43
|
+
};
|
44
|
+
</script>
|
45
|
+
|
46
|
+
<style scoped>
|
47
|
+
|
48
|
+
</style>
|
@@ -0,0 +1,52 @@
|
|
1
|
+
<template>
|
2
|
+
<VcsTooltip
|
3
|
+
:tooltip-position="tooltipPosition"
|
4
|
+
:tooltip="tooltip"
|
5
|
+
>
|
6
|
+
<template #activator="{ on, attrs }">
|
7
|
+
<v-card
|
8
|
+
elevation="2"
|
9
|
+
class="h-8 w-8 d-flex align-center justify-center text-center btn-orientation-tools"
|
10
|
+
v-bind="{ ...$attrs, ...attrs }"
|
11
|
+
v-on="{ ...$listeners, ...on }"
|
12
|
+
>
|
13
|
+
<v-icon v-text="icon" size="16" />
|
14
|
+
</v-card>
|
15
|
+
</template>
|
16
|
+
</VcsTooltip>
|
17
|
+
</template>
|
18
|
+
<style lang="scss" scoped>
|
19
|
+
.btn-orientation-tools{
|
20
|
+
&:before{
|
21
|
+
background-color: transparent !important;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
</style>
|
25
|
+
<script>
|
26
|
+
import { VcsTooltip } from '@vcsuite/ui-components';
|
27
|
+
|
28
|
+
/**
|
29
|
+
* A v-card with h & w 8. Requires an icon and binds all attributes & listeners to the v-card
|
30
|
+
* @vue-prop {string} icon
|
31
|
+
* @vue-prop {string} tooltip
|
32
|
+
* @vue-prop {string} [tooltip-position='left']
|
33
|
+
*/
|
34
|
+
export default {
|
35
|
+
name: 'OrientationToolsButton',
|
36
|
+
components: { VcsTooltip },
|
37
|
+
props: {
|
38
|
+
icon: {
|
39
|
+
type: String,
|
40
|
+
required: true,
|
41
|
+
},
|
42
|
+
tooltip: {
|
43
|
+
type: String,
|
44
|
+
required: true,
|
45
|
+
},
|
46
|
+
tooltipPosition: {
|
47
|
+
type: String,
|
48
|
+
default: 'left',
|
49
|
+
},
|
50
|
+
},
|
51
|
+
};
|
52
|
+
</script>
|
@@ -0,0 +1,96 @@
|
|
1
|
+
<template>
|
2
|
+
<VcsTooltip
|
3
|
+
:tooltip="`Camera pitch: ${Math.round(value)}°`"
|
4
|
+
tooltip-position="left"
|
5
|
+
>
|
6
|
+
<template #activator="{ on, attrs }">
|
7
|
+
<v-card
|
8
|
+
class="w-8"
|
9
|
+
v-on="on"
|
10
|
+
v-bind="attrs"
|
11
|
+
>
|
12
|
+
<v-slider
|
13
|
+
color="secondary"
|
14
|
+
track-color="accent"
|
15
|
+
v-model="tilt"
|
16
|
+
:max="0"
|
17
|
+
:min="-90"
|
18
|
+
vertical
|
19
|
+
hide-details
|
20
|
+
class="vcs-slider"
|
21
|
+
/>
|
22
|
+
</v-card>
|
23
|
+
</template>
|
24
|
+
</VcsTooltip>
|
25
|
+
</template>
|
26
|
+
<style lang="scss" scoped>
|
27
|
+
.vcs-slider{
|
28
|
+
::v-deep {
|
29
|
+
.v-slider {
|
30
|
+
min-height: 48px;
|
31
|
+
margin-top: 8px;
|
32
|
+
margin-bottom: 8px;
|
33
|
+
}
|
34
|
+
.v-slider__thumb{
|
35
|
+
cursor: pointer;
|
36
|
+
border-radius: 3px;
|
37
|
+
width: 16px;
|
38
|
+
height: 4px;
|
39
|
+
border: 0;
|
40
|
+
left: -8px;
|
41
|
+
&:before{
|
42
|
+
background-color: transparent;
|
43
|
+
}
|
44
|
+
}
|
45
|
+
}
|
46
|
+
}
|
47
|
+
</style>
|
48
|
+
<script>
|
49
|
+
import { clamp } from 'ol/math.js';
|
50
|
+
import { VcsTooltip } from '@vcsuite/ui-components';
|
51
|
+
|
52
|
+
/**
|
53
|
+
* A vertical slider from 0 to -90. pass value with v-model
|
54
|
+
* @vue-prop {number} value
|
55
|
+
* @vue-event {number} input
|
56
|
+
*/
|
57
|
+
export default {
|
58
|
+
name: 'TiltSlider',
|
59
|
+
components: {
|
60
|
+
VcsTooltip,
|
61
|
+
},
|
62
|
+
props: {
|
63
|
+
value: {
|
64
|
+
type: Number,
|
65
|
+
required: true,
|
66
|
+
},
|
67
|
+
},
|
68
|
+
data() {
|
69
|
+
return {
|
70
|
+
localValue: Math.round(this.value),
|
71
|
+
};
|
72
|
+
},
|
73
|
+
watch: {
|
74
|
+
value() {
|
75
|
+
this.localValue = clamp(Math.round(this.value), -90, 0);
|
76
|
+
},
|
77
|
+
},
|
78
|
+
computed: {
|
79
|
+
tilt: {
|
80
|
+
get() {
|
81
|
+
return this.localValue;
|
82
|
+
},
|
83
|
+
set(value) {
|
84
|
+
if (value !== this.localValue) {
|
85
|
+
this.localValue = value;
|
86
|
+
this.$emit('input', value);
|
87
|
+
}
|
88
|
+
},
|
89
|
+
},
|
90
|
+
},
|
91
|
+
};
|
92
|
+
</script>
|
93
|
+
|
94
|
+
<style scoped>
|
95
|
+
|
96
|
+
</style>
|
@@ -0,0 +1,144 @@
|
|
1
|
+
<template>
|
2
|
+
<v-sheet
|
3
|
+
ref="compassRef"
|
4
|
+
:style="{
|
5
|
+
transform: `rotate(${compassRotation}deg)`,
|
6
|
+
cursor,
|
7
|
+
}"
|
8
|
+
@mousedown="trackMouse"
|
9
|
+
class="
|
10
|
+
h-16 w-16
|
11
|
+
d-flex flex-column justify-center align-center
|
12
|
+
position-relative
|
13
|
+
rounded-circle
|
14
|
+
user-select-none
|
15
|
+
transition-transform-200-ease
|
16
|
+
"
|
17
|
+
elevation="1"
|
18
|
+
>
|
19
|
+
<span>N</span>
|
20
|
+
<MapNavCompass
|
21
|
+
class="position-absolute pos-a-0 primary--text"
|
22
|
+
@direction-click="$emit('input', $event)"
|
23
|
+
:can-emit="viewMode === '3d' || viewMode === 'oblique'"
|
24
|
+
:hide-ticks="viewMode === 'oblique'"
|
25
|
+
/>
|
26
|
+
</v-sheet>
|
27
|
+
</template>
|
28
|
+
|
29
|
+
|
30
|
+
<script>
|
31
|
+
import { computed, onUnmounted, ref } from '@vue/composition-api';
|
32
|
+
|
33
|
+
import { fromEvent, merge, of, Subject } from 'rxjs';
|
34
|
+
import { takeUntil, tap } from 'rxjs/operators';
|
35
|
+
|
36
|
+
import MapNavCompass from './mapNavCompass.vue';
|
37
|
+
|
38
|
+
/**
|
39
|
+
* @description Compass component to be shown on the map.
|
40
|
+
* @vue-prop {OrientationToolsViewMode} viewMode - Mode of the map. Defines the behaviour of the compass.
|
41
|
+
* @vue-prop {number} value - Number of degrees of the compass rotation.
|
42
|
+
* @vue-event {number} input
|
43
|
+
*/
|
44
|
+
export default {
|
45
|
+
name: 'VcsCompass',
|
46
|
+
components: {
|
47
|
+
MapNavCompass,
|
48
|
+
},
|
49
|
+
props: {
|
50
|
+
viewMode: {
|
51
|
+
type: String,
|
52
|
+
required: true,
|
53
|
+
},
|
54
|
+
value: {
|
55
|
+
type: Number,
|
56
|
+
default: 0,
|
57
|
+
},
|
58
|
+
},
|
59
|
+
setup(props, context) {
|
60
|
+
const destroy$ = new Subject();
|
61
|
+
const grabbing = ref();
|
62
|
+
const compassRef = ref();
|
63
|
+
|
64
|
+
const mouseAngle = ({ referenceEl, event }) => {
|
65
|
+
const { left, width, top, height } = referenceEl.getBoundingClientRect();
|
66
|
+
const boxCenter = [left + width / 2, top + height / 2];
|
67
|
+
const angle = Math.atan2(event.pageX - boxCenter[0], -(event.pageY - boxCenter[1])) * (180 / Math.PI);
|
68
|
+
|
69
|
+
if (angle < 0) {
|
70
|
+
return 360 + angle;
|
71
|
+
}
|
72
|
+
|
73
|
+
return angle;
|
74
|
+
};
|
75
|
+
|
76
|
+
const trackMouse = (e) => {
|
77
|
+
if (props.viewMode === '3d') {
|
78
|
+
document.body.style.cursor = 'grabbing';
|
79
|
+
const timeout = setTimeout(() => {
|
80
|
+
grabbing.value = true;
|
81
|
+
}, 200);
|
82
|
+
|
83
|
+
const finish = () => {
|
84
|
+
clearTimeout(timeout);
|
85
|
+
document.body.style.cursor = 'unset';
|
86
|
+
grabbing.value = false;
|
87
|
+
};
|
88
|
+
|
89
|
+
merge(
|
90
|
+
of(e),
|
91
|
+
fromEvent(document.body, 'mousemove'),
|
92
|
+
).pipe(
|
93
|
+
tap((event) => {
|
94
|
+
if (grabbing.value) {
|
95
|
+
const rotation = mouseAngle({ event, referenceEl: compassRef.value.$el });
|
96
|
+
context.emit('input', -1 * rotation);
|
97
|
+
}
|
98
|
+
}),
|
99
|
+
takeUntil(fromEvent(document.body, 'mouseup').pipe(
|
100
|
+
tap(() => finish()),
|
101
|
+
)),
|
102
|
+
takeUntil(fromEvent(document.body, 'mouseleave').pipe(
|
103
|
+
tap(() => finish()),
|
104
|
+
)),
|
105
|
+
takeUntil(destroy$),
|
106
|
+
).subscribe();
|
107
|
+
}
|
108
|
+
};
|
109
|
+
|
110
|
+
const cursor = computed(() => {
|
111
|
+
if (props.viewMode === '3d') {
|
112
|
+
return grabbing.value ? 'grabbing' : 'grab';
|
113
|
+
}
|
114
|
+
return 'auto';
|
115
|
+
});
|
116
|
+
|
117
|
+
const rotationValue = ref(props.value);
|
118
|
+
|
119
|
+
onUnmounted(() => {
|
120
|
+
destroy$.next();
|
121
|
+
destroy$.unsubscribe();
|
122
|
+
});
|
123
|
+
|
124
|
+
return {
|
125
|
+
trackMouse,
|
126
|
+
compassRef,
|
127
|
+
cursor,
|
128
|
+
rotationValue,
|
129
|
+
compassRotation: computed(() => -1 * rotationValue.value),
|
130
|
+
};
|
131
|
+
},
|
132
|
+
watch: {
|
133
|
+
value(newValue, oldValue) {
|
134
|
+
let diff = newValue - oldValue;
|
135
|
+
if (diff > 180) {
|
136
|
+
diff -= 360;
|
137
|
+
} else if (diff < -180) {
|
138
|
+
diff += 360;
|
139
|
+
}
|
140
|
+
this.rotationValue += diff;
|
141
|
+
},
|
142
|
+
},
|
143
|
+
};
|
144
|
+
</script>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<template>
|
2
|
+
<div>
|
3
|
+
<OrientationToolsButton
|
4
|
+
@click="$emit('zoom-in')"
|
5
|
+
icon="$vcsPlus"
|
6
|
+
tooltip="Zoom in"
|
7
|
+
/>
|
8
|
+
<OrientationToolsButton
|
9
|
+
@click="$emit('zoom-out')"
|
10
|
+
icon="$vcsMinus"
|
11
|
+
tooltip="Zoom out"
|
12
|
+
/>
|
13
|
+
</div>
|
14
|
+
</template>
|
15
|
+
|
16
|
+
<script>
|
17
|
+
import OrientationToolsButton from './orientationToolsButton.vue';
|
18
|
+
|
19
|
+
/**
|
20
|
+
* Zoom buttons rendered above each other.
|
21
|
+
* @vue-event {void} zoom-in - raised when zoom in is called
|
22
|
+
* @vue-event {void} zoom-out - raised when zoom out is called
|
23
|
+
*/
|
24
|
+
export default {
|
25
|
+
components: { OrientationToolsButton },
|
26
|
+
};
|
27
|
+
</script>
|
@@ -0,0 +1,106 @@
|
|
1
|
+
import { check } from '@vcsuite/check';
|
2
|
+
import { getLogger as getLoggerByName } from '@vcsuite/logger';
|
3
|
+
|
4
|
+
/**
|
5
|
+
* @returns {Logger}
|
6
|
+
*/
|
7
|
+
function getLogger() {
|
8
|
+
return getLoggerByName('plugin-helpers');
|
9
|
+
}
|
10
|
+
|
11
|
+
/**
|
12
|
+
* @type {symbol}
|
13
|
+
*/
|
14
|
+
export const vcsAppSymbol = Symbol('vcsApp');
|
15
|
+
|
16
|
+
/**
|
17
|
+
* @type {symbol}
|
18
|
+
* @private
|
19
|
+
*/
|
20
|
+
export const pluginFactorySymbol = Symbol('pluginFactory');
|
21
|
+
|
22
|
+
/**
|
23
|
+
* validates the name according to package name pattern
|
24
|
+
* @param {string} name
|
25
|
+
* @returns {boolean}
|
26
|
+
*/
|
27
|
+
// eslint-disable-next-line import/prefer-default-export
|
28
|
+
export function isValidPackageName(name) {
|
29
|
+
check(name, String);
|
30
|
+
|
31
|
+
return /^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(name);
|
32
|
+
}
|
33
|
+
|
34
|
+
/**
|
35
|
+
* @param {VcsUiApp} app
|
36
|
+
* @param {string} name
|
37
|
+
* @param {PluginConfig} config
|
38
|
+
* @param {string} [registry='https://plugins.virtualcitymap.de/']
|
39
|
+
* @returns {Promise<VcsPlugin|null>}
|
40
|
+
*/
|
41
|
+
export async function loadPlugin(app, name, config, registry = 'https://plugins.virtualcitymap.de/') {
|
42
|
+
let module = config.entry;
|
43
|
+
|
44
|
+
if (!module) {
|
45
|
+
module = `${registry.replace(/\/?$/, '')}/${name}/${config.version || '*'}/index.js`;
|
46
|
+
} else if (!/^(https?:\/\/|\/)/.test(module)) {
|
47
|
+
module = `${window.location.origin}${window.location.pathname.replace(/\/?$/, '/')}${module}`;
|
48
|
+
} else if (module === '_dev') {
|
49
|
+
module = `/${name}.js`;
|
50
|
+
}
|
51
|
+
|
52
|
+
// if (!context.security.isTrustedUrl(module)) { XXX missing pipeline security
|
53
|
+
// getLogger().warning(`suppressed loading of insecure plugin ${module}`);
|
54
|
+
// return Promise.resolve();
|
55
|
+
// }
|
56
|
+
|
57
|
+
try {
|
58
|
+
let plugin;
|
59
|
+
if (window.VcsPluginLoaderFunction) { // TODO PluginLoaderfunction needs to be documented.
|
60
|
+
plugin = await window.VcsPluginLoaderFunction(name, module);
|
61
|
+
} else {
|
62
|
+
plugin = await import(/* @vite-ignore */ module);
|
63
|
+
}
|
64
|
+
if (plugin.default == null || typeof plugin.default !== 'function') {
|
65
|
+
getLogger().error(`plugin ${name} does not provide a default exported function`);
|
66
|
+
return null;
|
67
|
+
}
|
68
|
+
const pluginInstance = await plugin.default(config);
|
69
|
+
|
70
|
+
if (!pluginInstance.name) {
|
71
|
+
getLogger().error(`plugin ${name} does not expose a name`);
|
72
|
+
if (pluginInstance.destroy) {
|
73
|
+
pluginInstance.destroy();
|
74
|
+
}
|
75
|
+
return null;
|
76
|
+
}
|
77
|
+
pluginInstance[pluginFactorySymbol] = plugin.default;
|
78
|
+
return pluginInstance;
|
79
|
+
} catch (err) {
|
80
|
+
getLogger().error(`failed to load plugin ${name}`);
|
81
|
+
getLogger().error(err);
|
82
|
+
}
|
83
|
+
return null;
|
84
|
+
}
|
85
|
+
|
86
|
+
/**
|
87
|
+
* @param {VcsPlugin} plugin
|
88
|
+
* @returns {Object}
|
89
|
+
*/
|
90
|
+
export function serializePlugin(plugin) {
|
91
|
+
const serializedPlugin = plugin.toJSON ? plugin.toJSON() : {};
|
92
|
+
if (plugin[pluginFactorySymbol]) {
|
93
|
+
serializedPlugin[pluginFactorySymbol] = plugin[pluginFactorySymbol];
|
94
|
+
}
|
95
|
+
return serializedPlugin;
|
96
|
+
}
|
97
|
+
|
98
|
+
/**
|
99
|
+
* @param {Object} serializedPlugin
|
100
|
+
* @returns {Promise<VcsPlugin>}
|
101
|
+
*/
|
102
|
+
export async function deserializePlugin(serializedPlugin) {
|
103
|
+
const reincarnation = await serializedPlugin[pluginFactorySymbol](serializedPlugin);
|
104
|
+
reincarnation[pluginFactorySymbol] = serializedPlugin[pluginFactorySymbol];
|
105
|
+
return reincarnation;
|
106
|
+
}
|
package/src/setup.js
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
import Vue from 'vue';
|
2
|
+
import VueCompositionAPI from '@vue/composition-api';
|
3
|
+
// eslint-disable-next-line no-unused-vars
|
4
|
+
import * as core from '@vcmap/core'; // pull in entire core for vcsClassRegistry
|
5
|
+
|
6
|
+
Vue.config.productionTip = false;
|
7
|
+
|
8
|
+
Vue.use(VueCompositionAPI);
|
9
|
+
|
10
|
+
window.CESIUM_BASE_URL = '/node_modules/@vcmap/cesium/Source/';
|
@@ -0,0 +1,15 @@
|
|
1
|
+
:root {
|
2
|
+
--vcs-primary-logo: url('../assets/logo.svg');
|
3
|
+
}
|
4
|
+
|
5
|
+
.company-logo {
|
6
|
+
background-image: var(--vcs-primary-logo);
|
7
|
+
height: 36px;
|
8
|
+
width: 151px;
|
9
|
+
margin: 0 auto;
|
10
|
+
}
|
11
|
+
|
12
|
+
// Dev-Only!
|
13
|
+
.bg-dev.theme--light.v-application {
|
14
|
+
background-color: var(--v-primary-base);
|
15
|
+
}
|