@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,96 @@
|
|
1
|
+
<template>
|
2
|
+
<span v-if="group.options && group.options[0]" class="ma-1 position-relative" :class="[...customClasses]">
|
3
|
+
<v-btn
|
4
|
+
class="expand-button mb-0 w-16 h-10"
|
5
|
+
:color="active ? 'white' : null"
|
6
|
+
:text="!active ? true : null"
|
7
|
+
@click="() => setOpen(group.id, !group.open)"
|
8
|
+
:class="{
|
9
|
+
'mb-0': active,
|
10
|
+
'h-full': active,
|
11
|
+
'rounded-b-0': active
|
12
|
+
}"
|
13
|
+
:disabled="group.options[0].disabled"
|
14
|
+
elevation="0"
|
15
|
+
>
|
16
|
+
<slot name="selected-icon">
|
17
|
+
<v-icon v-text="group.icon" />
|
18
|
+
</slot>
|
19
|
+
<slot />
|
20
|
+
<v-icon
|
21
|
+
:class="{ 'rotate-180--right': active }"
|
22
|
+
v-if="group.options.length > 1"
|
23
|
+
v-text="'mdi-chevron-down'"
|
24
|
+
/>
|
25
|
+
</v-btn>
|
26
|
+
|
27
|
+
<v-card v-if="group.open" tile style="position: absolute; min-width: 150px">
|
28
|
+
<v-list dense>
|
29
|
+
<v-list-item-group>
|
30
|
+
<v-list-item
|
31
|
+
v-for="option of group.options"
|
32
|
+
:key="option.id"
|
33
|
+
@click="() => selectOption(option.id)"
|
34
|
+
dense
|
35
|
+
>
|
36
|
+
<v-list-item-action>
|
37
|
+
<input type="checkbox" :checked="option.selected" :class="option.selected ? 'y' : 'n'">
|
38
|
+
</v-list-item-action>
|
39
|
+
<v-list-item-content>
|
40
|
+
<v-list-item-title>{{ option.text }}</v-list-item-title>
|
41
|
+
</v-list-item-content>
|
42
|
+
</v-list-item>
|
43
|
+
</v-list-item-group>
|
44
|
+
</v-list>
|
45
|
+
</v-card>
|
46
|
+
</span>
|
47
|
+
</template>
|
48
|
+
|
49
|
+
<style lang="scss" scoped>
|
50
|
+
.expand-button {
|
51
|
+
::v-deep {
|
52
|
+
max-width: 68px;
|
53
|
+
|
54
|
+
.v-btn__content {
|
55
|
+
max-width: 48px;
|
56
|
+
}
|
57
|
+
}
|
58
|
+
}
|
59
|
+
</style>
|
60
|
+
|
61
|
+
<script>
|
62
|
+
import { ref } from '@vue/composition-api';
|
63
|
+
|
64
|
+
export default {
|
65
|
+
name: 'VcsToolboxSingleSelectButton',
|
66
|
+
props: {
|
67
|
+
value: {
|
68
|
+
type: Boolean,
|
69
|
+
default: undefined,
|
70
|
+
},
|
71
|
+
group: {
|
72
|
+
type: Object,
|
73
|
+
default: () => ({}),
|
74
|
+
},
|
75
|
+
customClasses: {
|
76
|
+
type: Array,
|
77
|
+
default: () => [],
|
78
|
+
},
|
79
|
+
},
|
80
|
+
setup({ value }, { emit }) {
|
81
|
+
const open = ref(false);
|
82
|
+
const selectOption = (id) => {
|
83
|
+
emit('selected', id);
|
84
|
+
};
|
85
|
+
const setOpen = (id, o) => {
|
86
|
+
emit('set-open', { id, open: o });
|
87
|
+
};
|
88
|
+
return {
|
89
|
+
active: value,
|
90
|
+
open,
|
91
|
+
selectOption,
|
92
|
+
setOpen,
|
93
|
+
};
|
94
|
+
},
|
95
|
+
};
|
96
|
+
</script>
|
@@ -0,0 +1,98 @@
|
|
1
|
+
<template>
|
2
|
+
<span class="ma-1 position-relative" :class="[...customClasses]">
|
3
|
+
<v-btn
|
4
|
+
class="expand-button mb-0 w-16 h-10"
|
5
|
+
:color="active ? 'white' : null"
|
6
|
+
:text="!active ? true : null"
|
7
|
+
@click="() => setOpen(group.id, !group.open)"
|
8
|
+
:class="{
|
9
|
+
'mb-0': active,
|
10
|
+
'h-full': active,
|
11
|
+
'rounded-b-0': active,
|
12
|
+
'border-2--primary': group.options[0].selected
|
13
|
+
}"
|
14
|
+
:disabled="group.options[0].disabled"
|
15
|
+
elevation="0"
|
16
|
+
>
|
17
|
+
<slot name="selected-icon">
|
18
|
+
<v-icon v-text="group.options[0].icon" />
|
19
|
+
</slot>
|
20
|
+
<slot />
|
21
|
+
<v-icon
|
22
|
+
:class="{ 'rotate-180--right': active }"
|
23
|
+
v-if="group.options.length > 1"
|
24
|
+
v-text="'mdi-chevron-down'"
|
25
|
+
/>
|
26
|
+
|
27
|
+
</v-btn>
|
28
|
+
|
29
|
+
|
30
|
+
<div
|
31
|
+
v-if="group.open"
|
32
|
+
class="d-flex flex-row white rounded-b position-absolute z-index-1 pos-t-11"
|
33
|
+
>
|
34
|
+
<slot name="menu-items">
|
35
|
+
|
36
|
+
<v-btn
|
37
|
+
class="py-1 rounded-t-0 rounded-br-0 h-10.5 -mt-2"
|
38
|
+
elevation="0"
|
39
|
+
v-for="option of group.options.slice(1)"
|
40
|
+
:key="option.id"
|
41
|
+
@click="() => selectOption(option.id)"
|
42
|
+
>
|
43
|
+
<v-icon class="mt-1.5" v-text="option.icon" />
|
44
|
+
</v-btn>
|
45
|
+
</slot>
|
46
|
+
</div>
|
47
|
+
</span>
|
48
|
+
</template>
|
49
|
+
|
50
|
+
<style lang="scss" scoped>
|
51
|
+
.expand-button {
|
52
|
+
::v-deep {
|
53
|
+
max-width: 68px;
|
54
|
+
|
55
|
+
.v-btn__content {
|
56
|
+
max-width: 48px;
|
57
|
+
}
|
58
|
+
}
|
59
|
+
}
|
60
|
+
</style>
|
61
|
+
|
62
|
+
<script>
|
63
|
+
import { ref } from '@vue/composition-api';
|
64
|
+
|
65
|
+
export default {
|
66
|
+
name: 'VcsToolboxSingleSelectButton',
|
67
|
+
props: {
|
68
|
+
value: {
|
69
|
+
type: Boolean,
|
70
|
+
default: false,
|
71
|
+
},
|
72
|
+
group: {
|
73
|
+
type: Object,
|
74
|
+
default: () => ({}),
|
75
|
+
},
|
76
|
+
customClasses: {
|
77
|
+
type: Array,
|
78
|
+
default: () => [],
|
79
|
+
},
|
80
|
+
},
|
81
|
+
setup({ value }, { emit }) {
|
82
|
+
const open = ref(false);
|
83
|
+
const selectOption = (id) => {
|
84
|
+
emit('selected', id);
|
85
|
+
emit('set-open', { id, open: !open });
|
86
|
+
};
|
87
|
+
const setOpen = (id, o) => {
|
88
|
+
emit('set-open', { id, open: o });
|
89
|
+
};
|
90
|
+
return {
|
91
|
+
active: value,
|
92
|
+
open,
|
93
|
+
selectOption,
|
94
|
+
setOpen,
|
95
|
+
};
|
96
|
+
},
|
97
|
+
};
|
98
|
+
</script>
|
@@ -0,0 +1,203 @@
|
|
1
|
+
/* eslint-disable import/prefer-default-export */
|
2
|
+
import { VcsEvent } from '@vcmap/core';
|
3
|
+
import { reactive } from '@vue/composition-api';
|
4
|
+
import Vue from 'vue';
|
5
|
+
|
6
|
+
/**
|
7
|
+
* @typedef ToolboxGroup
|
8
|
+
* @property {string} icon
|
9
|
+
* @property {string | number} id
|
10
|
+
* @property {boolean} open
|
11
|
+
* @property {ToolboxItem[]} options
|
12
|
+
* @property {boolean} active
|
13
|
+
*/
|
14
|
+
/**
|
15
|
+
* @typedef ToolboxManagerState
|
16
|
+
* @property {boolean} visible
|
17
|
+
* @property {Object.<string, ToolboxGroup>} groups
|
18
|
+
*/
|
19
|
+
|
20
|
+
/**
|
21
|
+
* @typedef ToolboxItem
|
22
|
+
* @property {string | number} id
|
23
|
+
* @property {string} icon
|
24
|
+
* @property {boolean} active
|
25
|
+
* @property {boolean} selected
|
26
|
+
* @property {boolean} disabled
|
27
|
+
* @property {number} slot
|
28
|
+
*/
|
29
|
+
|
30
|
+
export class ToolboxManager {
|
31
|
+
constructor() {
|
32
|
+
this.onAdded = new VcsEvent();
|
33
|
+
this.onRemoved = new VcsEvent();
|
34
|
+
/** @type {ToolboxManagerState} */
|
35
|
+
this.state = reactive({
|
36
|
+
visible: true,
|
37
|
+
groups: {},
|
38
|
+
});
|
39
|
+
}
|
40
|
+
|
41
|
+
setGroupOpen(id, open) {
|
42
|
+
Object.values(this.state.groups).forEach((group) => {
|
43
|
+
if (group.id === id) {
|
44
|
+
Vue.set(this.state.groups, group.id, {
|
45
|
+
...group,
|
46
|
+
open,
|
47
|
+
});
|
48
|
+
} else {
|
49
|
+
Vue.set(this.state.groups, group.id, {
|
50
|
+
...group,
|
51
|
+
open: false,
|
52
|
+
});
|
53
|
+
}
|
54
|
+
});
|
55
|
+
}
|
56
|
+
|
57
|
+
/** @method */
|
58
|
+
toggle() {
|
59
|
+
Vue.set(this.state, 'visible', !this.state.visible);
|
60
|
+
}
|
61
|
+
|
62
|
+
/**
|
63
|
+
* @method
|
64
|
+
* @param {string} id
|
65
|
+
* @returns {boolean}
|
66
|
+
*/
|
67
|
+
has(id) {
|
68
|
+
return !!this.get(id);
|
69
|
+
}
|
70
|
+
|
71
|
+
/**
|
72
|
+
* @method
|
73
|
+
* @param {string} id
|
74
|
+
* @returns {Object}
|
75
|
+
*/
|
76
|
+
get(id) {
|
77
|
+
return Object.values(this.state.groups)
|
78
|
+
.map(group => group.options)
|
79
|
+
.flat()
|
80
|
+
.find(item => item && item.id === id);
|
81
|
+
}
|
82
|
+
|
83
|
+
/**
|
84
|
+
* @param {string} id
|
85
|
+
* @param {boolean} disabled
|
86
|
+
*/
|
87
|
+
setDisabled(id, disabled) {
|
88
|
+
const [key, slot] = this.getSlotIndexAndEntry(id);
|
89
|
+
const entry = slot.options.find(s => s.id === id);
|
90
|
+
entry.disabled = disabled;
|
91
|
+
|
92
|
+
Vue.set(this.state.groups, key, slot);
|
93
|
+
}
|
94
|
+
|
95
|
+
/**
|
96
|
+
* TODO: return item as well
|
97
|
+
* @param {string} id
|
98
|
+
* @returns {[string, ToolboxGroup]}
|
99
|
+
*/
|
100
|
+
getSlotIndexAndEntry(id) {
|
101
|
+
return Object.entries(this.state.groups).find(
|
102
|
+
entry => entry[1] &&
|
103
|
+
entry[1].options &&
|
104
|
+
entry[1].options.find(v => v.id === id),
|
105
|
+
);
|
106
|
+
}
|
107
|
+
|
108
|
+
/** @param {string} id */
|
109
|
+
selectOption(id) {
|
110
|
+
const [key, slot] = this.getSlotIndexAndEntry(id);
|
111
|
+
const option = slot.options.find(opt => opt.id === id);
|
112
|
+
if (option) {
|
113
|
+
option.selected = !option.selected;
|
114
|
+
}
|
115
|
+
|
116
|
+
Vue.set(this.state.groups, key, { ...slot });
|
117
|
+
}
|
118
|
+
|
119
|
+
/**
|
120
|
+
* @param {string} id
|
121
|
+
* @returns {number}
|
122
|
+
*/
|
123
|
+
getSlotIndexFor(id) {
|
124
|
+
const [index] = Object.entries(this.state.groups).find(entry => entry[1].options.find(o => o.id === id));
|
125
|
+
return index;
|
126
|
+
}
|
127
|
+
|
128
|
+
/** @returns {number} */
|
129
|
+
getNumberOfUsedSlots() {
|
130
|
+
return Object.values(this.state.groups).reduce(
|
131
|
+
(acc, curr) => (curr.type === 'toggleButton' ||
|
132
|
+
curr.type === 'customComponent' ||
|
133
|
+
(curr.options && curr.options.length) ?
|
134
|
+
acc + 1 :
|
135
|
+
acc),
|
136
|
+
0,
|
137
|
+
);
|
138
|
+
}
|
139
|
+
|
140
|
+
/** @param {string} id */
|
141
|
+
bringToTop(id) {
|
142
|
+
const [key, slot] = this.getSlotIndexAndEntry(id);
|
143
|
+
|
144
|
+
const updated = [
|
145
|
+
slot.options.find(i => i.id === id),
|
146
|
+
...slot.options.filter(i => i.id !== id),
|
147
|
+
];
|
148
|
+
|
149
|
+
Vue.set(this.state.groups, key, {
|
150
|
+
...slot,
|
151
|
+
options: updated,
|
152
|
+
});
|
153
|
+
}
|
154
|
+
|
155
|
+
/**
|
156
|
+
* @param {ToolboxItem} toolboxItem
|
157
|
+
* @param {string | number} slot
|
158
|
+
*/
|
159
|
+
addToolboxItem(toolboxItem, slot) {
|
160
|
+
if (this.has(toolboxItem.id)) {
|
161
|
+
throw new Error(
|
162
|
+
`Toolbox-Item with id ${toolboxItem.id} has already been registered`,
|
163
|
+
);
|
164
|
+
}
|
165
|
+
Vue.set(this.state.groups, slot, {
|
166
|
+
...this.state.groups[slot],
|
167
|
+
options: [...this.state.groups[slot].options, toolboxItem],
|
168
|
+
});
|
169
|
+
this.onAdded.raiseEvent(toolboxItem.id);
|
170
|
+
}
|
171
|
+
|
172
|
+
/**
|
173
|
+
* @param {ToolboxGroup} group
|
174
|
+
* @param {string | number} slot
|
175
|
+
*/
|
176
|
+
addToolboxGroup(group, slot) {
|
177
|
+
if (this.state.groups[slot]) {
|
178
|
+
throw new Error(
|
179
|
+
`Toolbox-Group with slot-id ${slot} has already been registered`,
|
180
|
+
);
|
181
|
+
}
|
182
|
+
Vue.set(this.state.groups, slot, group);
|
183
|
+
}
|
184
|
+
|
185
|
+
/**
|
186
|
+
* @method
|
187
|
+
* @param {string | number} id ID of popover to be removed
|
188
|
+
*/
|
189
|
+
removeToolboxItem(id) {
|
190
|
+
const slotIndex = this.getSlotIndexFor(id);
|
191
|
+
if (!slotIndex) {
|
192
|
+
throw new Error(`Cannot find slot index for toolbar item with id ${id}`);
|
193
|
+
}
|
194
|
+
|
195
|
+
Vue.set(this.state.groups, slotIndex, {
|
196
|
+
...this.state.groups[slotIndex],
|
197
|
+
options: [
|
198
|
+
...this.state.groups[slotIndex].options.filter(s => s.id !== id),
|
199
|
+
],
|
200
|
+
});
|
201
|
+
this.onRemoved.raiseEvent(id);
|
202
|
+
}
|
203
|
+
}
|
@@ -0,0 +1,133 @@
|
|
1
|
+
<template>
|
2
|
+
<div
|
3
|
+
:id="`window-component--${windowState.id}`"
|
4
|
+
class="vsc-window v-sheet elevation-0 position-absolute"
|
5
|
+
ref="windowComponentRef"
|
6
|
+
@click="clicked"
|
7
|
+
>
|
8
|
+
<v-sheet
|
9
|
+
v-if="!windowState.hideHeader"
|
10
|
+
ref="draggableHeaderRef"
|
11
|
+
class="v-sheet elevation-3 pa-2 transition-color-100-ease"
|
12
|
+
:class="{
|
13
|
+
'cursor-grab': isDynamic,
|
14
|
+
'grey--text': !isOnTop,
|
15
|
+
'rounded-tl': !isDocked,
|
16
|
+
'rounded-tr': !isDocked,
|
17
|
+
}"
|
18
|
+
:draggable="isDynamic"
|
19
|
+
>
|
20
|
+
<slot name="headerComponent" />
|
21
|
+
</v-sheet>
|
22
|
+
<v-sheet
|
23
|
+
class="v-sheet elevation-3 overflow-y-auto overflow-x-hidden w-full h-full"
|
24
|
+
:class="{
|
25
|
+
'rounded-br': !isDocked,
|
26
|
+
'rounded-bl': !isDocked,
|
27
|
+
}"
|
28
|
+
>
|
29
|
+
<slot />
|
30
|
+
</v-sheet>
|
31
|
+
</div>
|
32
|
+
</template>
|
33
|
+
|
34
|
+
<script>
|
35
|
+
import {
|
36
|
+
onMounted, onUnmounted, computed, ref, nextTick,
|
37
|
+
} from '@vue/composition-api';
|
38
|
+
import { fromEvent } from 'rxjs';
|
39
|
+
import { switchMap, take, map, tap } from 'rxjs/operators';
|
40
|
+
import { WindowSlot } from './windowManager.js';
|
41
|
+
|
42
|
+
export default {
|
43
|
+
props: {
|
44
|
+
windowState: {
|
45
|
+
type: Object,
|
46
|
+
required: true,
|
47
|
+
},
|
48
|
+
isOnTop: {
|
49
|
+
type: Boolean,
|
50
|
+
required: true,
|
51
|
+
default: false,
|
52
|
+
},
|
53
|
+
slotWindow: {
|
54
|
+
type: Object,
|
55
|
+
required: true,
|
56
|
+
},
|
57
|
+
},
|
58
|
+
setup({ windowState, slotWindow }, { emit }) {
|
59
|
+
const draggableHeaderRef = ref(null);
|
60
|
+
const windowComponentRef = ref(null);
|
61
|
+
const isDynamic = computed(() => slotWindow !== WindowSlot.STATIC);
|
62
|
+
const isDocked = computed(() => slotWindow !== WindowSlot.DETACHED);
|
63
|
+
const clicked = (e) => {
|
64
|
+
emit('click', e);
|
65
|
+
};
|
66
|
+
|
67
|
+
let dragOverSub;
|
68
|
+
let dropSub;
|
69
|
+
onMounted(() => {
|
70
|
+
if (!windowState.hideHeader && slotWindow.value !== WindowSlot.STATIC) {
|
71
|
+
nextTick(() => {
|
72
|
+
// To get to the Root Element of a Custom Component .$el is used here.
|
73
|
+
const dragStart = fromEvent(draggableHeaderRef.value.$el, 'dragstart');
|
74
|
+
const dragOver = fromEvent(document.body, 'dragover');
|
75
|
+
const drop = fromEvent(document.body, 'drop');
|
76
|
+
const dragThenDrop = dragStart.pipe(
|
77
|
+
tap(() => {
|
78
|
+
dragOverSub = dragOver.subscribe((e) => {
|
79
|
+
// make it accepting drop events
|
80
|
+
// TODO check if setting the position here works.
|
81
|
+
e.preventDefault();
|
82
|
+
});
|
83
|
+
}),
|
84
|
+
switchMap((startEvent) => {
|
85
|
+
const style = window.getComputedStyle(windowComponentRef.value, null);
|
86
|
+
const windowPosition = {
|
87
|
+
top: parseInt(style.getPropertyValue('top'), 10),
|
88
|
+
left: parseInt(style.getPropertyValue('left'), 10),
|
89
|
+
width: parseInt(style.getPropertyValue('width'), 10),
|
90
|
+
height: parseInt(style.getPropertyValue('height'), 10),
|
91
|
+
};
|
92
|
+
// set dataTransfer for Firefox
|
93
|
+
startEvent.dataTransfer.setData('text/html', null);
|
94
|
+
|
95
|
+
return drop.pipe(
|
96
|
+
take(1),
|
97
|
+
map((dropEvent) => {
|
98
|
+
windowPosition.dx = startEvent.clientX - dropEvent.clientX;
|
99
|
+
windowPosition.dy = startEvent.clientY - dropEvent.clientY;
|
100
|
+
return windowPosition;
|
101
|
+
}),
|
102
|
+
tap(() => {
|
103
|
+
dragOverSub.unsubscribe();
|
104
|
+
}),
|
105
|
+
);
|
106
|
+
}),
|
107
|
+
);
|
108
|
+
dropSub = dragThenDrop.subscribe((pos) => {
|
109
|
+
emit('dropped', pos);
|
110
|
+
});
|
111
|
+
});
|
112
|
+
}
|
113
|
+
});
|
114
|
+
|
115
|
+
onUnmounted(() => {
|
116
|
+
if (dragOverSub) {
|
117
|
+
dragOverSub.unsubscribe();
|
118
|
+
}
|
119
|
+
if (dropSub) {
|
120
|
+
dropSub.unsubscribe();
|
121
|
+
}
|
122
|
+
});
|
123
|
+
return {
|
124
|
+
isDynamic,
|
125
|
+
isDocked,
|
126
|
+
draggableHeaderRef,
|
127
|
+
windowComponentRef,
|
128
|
+
clicked,
|
129
|
+
};
|
130
|
+
},
|
131
|
+
};
|
132
|
+
</script>
|
133
|
+
|
@@ -0,0 +1,46 @@
|
|
1
|
+
<template>
|
2
|
+
<span class="d-flex justify-space-between">
|
3
|
+
<span>
|
4
|
+
<v-icon
|
5
|
+
v-if="windowState.headerIcon"
|
6
|
+
class="mr-2 primary--text"
|
7
|
+
v-text="windowState.headerIcon"
|
8
|
+
/>
|
9
|
+
<h3 class="font-size-14 d-inline-block user-select-none">
|
10
|
+
{{ windowState.headerTitle | translate }}
|
11
|
+
</h3>
|
12
|
+
</span>
|
13
|
+
<v-icon
|
14
|
+
class=".float-right"
|
15
|
+
@click.stop="close"
|
16
|
+
size="16"
|
17
|
+
v-text="'mdi-close-thick'"
|
18
|
+
/>
|
19
|
+
</span>
|
20
|
+
</template>
|
21
|
+
|
22
|
+
<script>
|
23
|
+
|
24
|
+
export default {
|
25
|
+
props: {
|
26
|
+
windowState: {
|
27
|
+
type: Object,
|
28
|
+
required: true,
|
29
|
+
},
|
30
|
+
},
|
31
|
+
setup(props, { emit }) {
|
32
|
+
const close = () => {
|
33
|
+
emit('close');
|
34
|
+
};
|
35
|
+
const clicked = (e) => {
|
36
|
+
emit('click', e);
|
37
|
+
};
|
38
|
+
|
39
|
+
return {
|
40
|
+
close,
|
41
|
+
clicked,
|
42
|
+
};
|
43
|
+
},
|
44
|
+
};
|
45
|
+
</script>
|
46
|
+
|
@@ -0,0 +1,109 @@
|
|
1
|
+
<template>
|
2
|
+
<div>
|
3
|
+
<WindowComponent
|
4
|
+
v-for="(id, zIndex) in componentIds"
|
5
|
+
:key="id"
|
6
|
+
:window-state="getState(id)"
|
7
|
+
:slot-window="getSlot(id)"
|
8
|
+
:z-index="zIndex"
|
9
|
+
@dropped="dropped(id, $event)"
|
10
|
+
@click="clicked(id)"
|
11
|
+
:style="getStyles(id, zIndex)"
|
12
|
+
:class="getState(id).classes"
|
13
|
+
:is-on-top="isOnTop(zIndex)"
|
14
|
+
>
|
15
|
+
<component
|
16
|
+
:is="getComponent(id)"
|
17
|
+
:window-state="getState(id)"
|
18
|
+
v-bind="getProps(id)"
|
19
|
+
/>
|
20
|
+
<template v-if="!getState(id).hideHeader" #headerComponent>
|
21
|
+
<component
|
22
|
+
:is="getHeaderComponent(id)"
|
23
|
+
:window-state="getState(id)"
|
24
|
+
@close="close(id)"
|
25
|
+
/>
|
26
|
+
</template>
|
27
|
+
</WindowComponent>
|
28
|
+
</div>
|
29
|
+
</template>
|
30
|
+
|
31
|
+
<script>
|
32
|
+
import { inject } from '@vue/composition-api';
|
33
|
+
|
34
|
+
import WindowComponent from './WindowComponent.vue';
|
35
|
+
import WindowComponentHeader from './WindowComponentHeader.vue';
|
36
|
+
|
37
|
+
export default {
|
38
|
+
name: 'VcsWindowManager',
|
39
|
+
components: { WindowComponent },
|
40
|
+
setup() {
|
41
|
+
const app = inject('vcsApp');
|
42
|
+
/** @type {WindowManager} */
|
43
|
+
const { windowManager } = app;
|
44
|
+
|
45
|
+
const { componentIds } = windowManager;
|
46
|
+
|
47
|
+
const getState = (id) => {
|
48
|
+
return windowManager.get(id)?.state;
|
49
|
+
};
|
50
|
+
|
51
|
+
const getProps = (id) => {
|
52
|
+
return windowManager.get(id)?.props ?? {};
|
53
|
+
};
|
54
|
+
|
55
|
+
const isOnTop = (zIndex) => {
|
56
|
+
return zIndex === componentIds.length - 1;
|
57
|
+
};
|
58
|
+
|
59
|
+
const getStyles = (id, zIndex) => {
|
60
|
+
const windowComponent = windowManager.get(id);
|
61
|
+
const state = windowComponent?.state;
|
62
|
+
const position = windowComponent?.position;
|
63
|
+
return {
|
64
|
+
zIndex,
|
65
|
+
left: position.left,
|
66
|
+
top: position.top,
|
67
|
+
right: position.right,
|
68
|
+
bottom: position.bottom,
|
69
|
+
width: position.width,
|
70
|
+
height: position.height,
|
71
|
+
...(state.styles || {}),
|
72
|
+
};
|
73
|
+
};
|
74
|
+
|
75
|
+
const clicked = (id) => {
|
76
|
+
if (windowManager.has(id)) {
|
77
|
+
windowManager.bringWindowToTop(id);
|
78
|
+
}
|
79
|
+
};
|
80
|
+
|
81
|
+
const dropped = (id, pos) => {
|
82
|
+
const { innerWidth, innerHeight } = window;
|
83
|
+
// clip position
|
84
|
+
const top = Math.min(Math.max(0, pos.top - pos.dy), innerHeight - pos.height);
|
85
|
+
const left = Math.min(Math.max(0, pos.left - pos.dx), innerWidth - pos.width);
|
86
|
+
windowManager.setWindowPositionOptions(id, {
|
87
|
+
top,
|
88
|
+
left,
|
89
|
+
width: pos.width,
|
90
|
+
height: pos.height,
|
91
|
+
});
|
92
|
+
};
|
93
|
+
|
94
|
+
return {
|
95
|
+
componentIds,
|
96
|
+
getComponent: id => windowManager.get(id).component,
|
97
|
+
getHeaderComponent: id => windowManager.get(id).headerComponent || WindowComponentHeader,
|
98
|
+
getStyles,
|
99
|
+
getState,
|
100
|
+
getProps,
|
101
|
+
isOnTop,
|
102
|
+
getSlot: id => windowManager.get(id).slot,
|
103
|
+
close: (id) => { windowManager.remove(id); },
|
104
|
+
dropped,
|
105
|
+
clicked,
|
106
|
+
};
|
107
|
+
},
|
108
|
+
};
|
109
|
+
</script>
|