@vcmap/ui 5.0.0-rc.22 → 5.0.0-rc.24
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/README.md +38 -20
- package/app.config.json +3 -0
- package/build/.eslintrc +3 -0
- package/build/build.js +184 -174
- package/build/buildCesium.js +32 -19
- package/build/buildHelpers.js +117 -48
- package/build/buildPreview.js +9 -6
- package/build/commonViteConfig.js +1 -3
- package/build/determineHost.js +17 -4
- package/build/generateOLLib.js +13 -16
- package/build/getPluginProxies.js +16 -3
- package/build/info/conf.json +21 -21
- package/build/info/publish.js +15 -4
- package/config/aerowest.config.json +18 -44
- package/config/base.config.json +72 -246
- package/config/codes.config.json +4 -0
- package/config/dev.config.json +11 -13
- package/config/graphFeatureInfo.config.json +58 -17
- package/config/projects.config.json +30 -0
- package/config/www.config.json +98 -297
- package/dist/assets/cesium/Workers/{ArcType-ce2e50ab.js → ArcType-2d9abbbc.js} +4 -4
- package/dist/assets/cesium/Workers/{AttributeCompression-b646d393.js → AttributeCompression-f9f6c717.js} +24 -24
- package/dist/assets/cesium/Workers/{AxisAlignedBoundingBox-ff186ccc.js → AxisAlignedBoundingBox-85d9e53a.js} +3 -3
- package/dist/assets/cesium/Workers/{BoundingRectangle-be5924f4.js → BoundingRectangle-1ee7eb47.js} +18 -18
- package/dist/assets/cesium/Workers/{BoxGeometry-12eeccaf.js → BoxGeometry-3b2be784.js} +9 -9
- package/dist/assets/cesium/Workers/{Check-666ab1a0.js → Check-6ede7e26.js} +22 -22
- package/dist/assets/cesium/Workers/{Color-a84038cb.js → Color-f107c84d.js} +59 -59
- package/dist/assets/cesium/Workers/{ComponentDatatype-f7b11d02.js → ComponentDatatype-cf1fa08e.js} +16 -16
- package/dist/assets/cesium/Workers/{CoplanarPolygonGeometryLibrary-3272c1b3.js → CoplanarPolygonGeometryLibrary-78d71993.js} +1 -1
- package/dist/assets/cesium/Workers/{CorridorGeometryLibrary-0170e093.js → CorridorGeometryLibrary-50d99b33.js} +1 -1
- package/dist/assets/cesium/Workers/{CylinderGeometry-7c5da648.js → CylinderGeometry-51b0d9bf.js} +12 -12
- package/dist/assets/cesium/Workers/{CylinderGeometryLibrary-372c07d8.js → CylinderGeometryLibrary-7bf291b4.js} +1 -1
- package/dist/assets/cesium/Workers/{EllipseGeometry-797d580e.js → EllipseGeometry-bcfb5d87.js} +20 -20
- package/dist/assets/cesium/Workers/{EllipseGeometryLibrary-2939e1dc.js → EllipseGeometryLibrary-e94f8472.js} +1 -1
- package/dist/assets/cesium/Workers/{EllipseOutlineGeometry-8b50870f.js → EllipseOutlineGeometry-28e3a1bb.js} +15 -15
- package/dist/assets/cesium/Workers/{EllipsoidGeodesic-98c62a56.js → EllipsoidGeodesic-5b3623dc.js} +6 -6
- package/dist/assets/cesium/Workers/{EllipsoidGeometry-21c0e3a5.js → EllipsoidGeometry-b222fa63.js} +14 -14
- package/dist/assets/cesium/Workers/{EllipsoidOutlineGeometry-eff247c8.js → EllipsoidOutlineGeometry-38a3fb5b.js} +15 -15
- package/dist/assets/cesium/Workers/{EllipsoidRhumbLine-19756602.js → EllipsoidRhumbLine-ef872433.js} +9 -9
- package/dist/assets/cesium/Workers/{EllipsoidTangentPlane-214683dc.js → EllipsoidTangentPlane-8c89f28c.js} +1 -1
- package/dist/assets/cesium/Workers/{EncodedCartesian3-81f70735.js → EncodedCartesian3-57415c8a.js} +6 -6
- package/dist/assets/cesium/Workers/{FrustumGeometry-ac42a6d9.js → FrustumGeometry-bdd3a04d.js} +139 -111
- package/dist/assets/cesium/Workers/{GeometryAttribute-7d6f1732.js → GeometryAttribute-153115c5.js} +20 -20
- package/dist/assets/cesium/Workers/{GeometryAttributes-f06a2792.js → GeometryAttributes-ad136444.js} +1 -1
- package/dist/assets/cesium/Workers/{GeometryInstance-451dc1cd.js → GeometryInstance-34d9e21e.js} +6 -6
- package/dist/assets/cesium/Workers/{GeometryPipeline-ce4339ed.js → GeometryPipeline-acb2399c.js} +22 -22
- package/dist/assets/cesium/Workers/{IndexDatatype-a55ceaa1.js → IndexDatatype-2643aa47.js} +13 -13
- package/dist/assets/cesium/Workers/{IntersectionTests-f6e6bd8a.js → IntersectionTests-271e513e.js} +37 -37
- package/dist/assets/cesium/Workers/{Math-2dbd6b93.js → Math-0a2ac845.js} +149 -139
- package/dist/assets/cesium/Workers/{Matrix2-13178034.js → Matrix2-e1298525.js} +256 -256
- package/dist/assets/cesium/Workers/{Matrix3-315394f6.js → Matrix3-41c58dde.js} +150 -150
- package/dist/assets/cesium/Workers/{OrientedBoundingBox-04920dc7.js → OrientedBoundingBox-5e04e31f.js} +19 -17
- package/dist/assets/cesium/Workers/{Plane-900aa728.js → Plane-4c3d403b.js} +5 -5
- package/dist/assets/cesium/Workers/{PolygonGeometryLibrary-a8680d96.js → PolygonGeometryLibrary-6762b65b.js} +6 -6
- package/dist/assets/cesium/Workers/PolygonPipeline-7dc7a431.js +1344 -0
- package/dist/assets/cesium/Workers/{PolylinePipeline-32f36d2a.js → PolylinePipeline-15fde655.js} +16 -16
- package/dist/assets/cesium/Workers/{PolylineVolumeGeometryLibrary-a510d657.js → PolylineVolumeGeometryLibrary-ba7dfed5.js} +7 -7
- package/dist/assets/cesium/Workers/{PrimitivePipeline-ba38434a.js → PrimitivePipeline-68f0b9a2.js} +6 -6
- package/dist/assets/cesium/Workers/{RectangleGeometryLibrary-bdba697e.js → RectangleGeometryLibrary-8eaf23da.js} +1 -1
- package/dist/assets/cesium/Workers/{RuntimeError-06c93819.js → RuntimeError-ef395448.js} +5 -5
- package/dist/assets/cesium/Workers/{TerrainEncoding-833187da.js → TerrainEncoding-eb8a645a.js} +30 -30
- package/dist/assets/cesium/Workers/Transforms-f6451f99.js +14698 -0
- package/dist/assets/cesium/Workers/{VertexFormat-6b480673.js → VertexFormat-030f11ff.js} +14 -14
- package/dist/assets/cesium/Workers/{WallGeometryLibrary-919eed92.js → WallGeometryLibrary-feef3109.js} +1 -1
- package/dist/assets/cesium/Workers/{WebGLConstants-a8cc3e8c.js → WebGLConstants-0b1ce7ba.js} +1 -1
- package/dist/assets/cesium/Workers/{WebMercatorProjection-13a90d41.js → WebMercatorProjection-13ed1a6e.js} +6 -6
- package/dist/assets/cesium/Workers/{arrayRemoveDuplicates-c2038105.js → arrayRemoveDuplicates-d2061e85.js} +5 -5
- package/dist/assets/cesium/Workers/cesiumWorkerBootstrapper.js +5 -5
- package/dist/assets/cesium/Workers/{combine-ca22a614.js → combine-d9581036.js} +5 -5
- package/dist/assets/cesium/Workers/combineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createBoxGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +9 -9
- package/dist/assets/cesium/Workers/createCircleGeometry.js +13 -13
- package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +13 -13
- package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +11 -11
- package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +9 -9
- package/dist/assets/cesium/Workers/createCorridorGeometry.js +14 -14
- package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +12 -12
- package/dist/assets/cesium/Workers/createCylinderGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +13 -13
- package/dist/assets/cesium/Workers/createEllipseGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createFrustumGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +8 -8
- package/dist/assets/cesium/Workers/createGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +33 -33
- package/dist/assets/cesium/Workers/createPlaneGeometry.js +8 -8
- package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +6 -6
- package/dist/assets/cesium/Workers/createPolygonGeometry.js +25 -25
- package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +17 -17
- package/dist/assets/cesium/Workers/createPolylineGeometry.js +11 -11
- package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +9 -9
- package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +9 -9
- package/dist/assets/cesium/Workers/createRectangleGeometry.js +16 -16
- package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +12 -12
- package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +10 -10
- package/dist/assets/cesium/Workers/createSphereGeometry.js +11 -11
- package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +12 -12
- package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +2 -2
- package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +1 -1
- package/dist/assets/cesium/Workers/createVectorTileGeometries.js +8 -8
- package/dist/assets/cesium/Workers/createVectorTilePoints.js +1 -1
- package/dist/assets/cesium/Workers/createVectorTilePolygons.js +1 -1
- package/dist/assets/cesium/Workers/createVectorTilePolylines.js +1 -1
- package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
- package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +27 -28
- package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +33 -38
- package/dist/assets/cesium/Workers/createWallGeometry.js +14 -14
- package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +14 -14
- package/dist/assets/cesium/Workers/decodeDraco.js +10 -2
- package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +15 -15
- package/dist/assets/cesium/Workers/decodeI3S.js +1 -1
- package/dist/assets/cesium/Workers/{defaultValue-0a909f67.js → defaultValue-fe22d8c0.js} +2 -2
- package/dist/assets/cesium/Workers/package.js +1 -1
- package/dist/assets/cesium/Workers/transcodeKTX2.js +46 -26
- package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -1
- package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +24 -24
- package/dist/assets/{cesium.88cffd.js → cesium.253914.js} +36578 -33768
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/{core.a66593.js → core.3a8205.js} +7824 -5377
- package/dist/assets/core.js +1 -1
- package/dist/assets/index.91ae2d55.js +1 -0
- package/dist/assets/{ol.d4539f.js → ol.1c946a.js} +5550 -5491
- package/dist/assets/ol.js +1 -1
- package/dist/assets/ui.0025be.css +5 -0
- package/dist/assets/{ui.d760e4.js → ui.0025be.js} +6260 -5164
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue.js +2 -2
- package/dist/assets/{vuetify.427322.css → vuetify.6efa21.css} +2 -2
- package/dist/assets/{vuetify.427322.js → vuetify.6efa21.js} +1 -1
- package/dist/assets/vuetify.js +2 -2
- package/dist/index.html +27 -7
- package/index.html +26 -6
- package/index.js +68 -15
- package/lib/cesium.js +1 -1
- package/lib/core.js +1 -1
- package/lib/ui.js +1 -1
- package/lib/vue.js +2 -2
- package/lib/vuetify.js +2 -2
- package/package.json +19 -10
- package/plugins/.eslintrc +9 -0
- package/plugins/@vcmap/create-link/fallbackCreateLink.vue +13 -9
- package/plugins/@vcmap/create-link/index.js +15 -6
- package/plugins/@vcmap/project-selector/{ContextsListComponent.vue → ModulesListComponent.vue} +14 -18
- package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +19 -24
- package/plugins/@vcmap/project-selector/README.md +16 -20
- package/plugins/@vcmap/project-selector/config.json +13 -13
- package/plugins/@vcmap/project-selector/de.json +4 -1
- package/plugins/@vcmap/project-selector/en.json +4 -1
- package/plugins/@vcmap/project-selector/index.js +117 -107
- package/plugins/@vcmap/search-nominatim/LICENSE.md +5 -6
- package/plugins/@vcmap/search-nominatim/README.md +2 -1
- package/plugins/@vcmap/search-nominatim/config.json +1 -2
- package/plugins/@vcmap/search-nominatim/index.js +7 -4
- package/plugins/@vcmap/search-nominatim/nominatim.js +7 -2
- package/plugins/@vcmap/search-nominatim/package.json +2 -36
- package/plugins/@vcmap/simple-graph/README.md +29 -9
- package/plugins/@vcmap/simple-graph/SimpleGraphComponent.vue +2 -7
- package/plugins/@vcmap/simple-graph/index.js +2 -2
- package/plugins/@vcmap/simple-graph/simpleGraphView.js +3 -1
- package/plugins/@vcmap/theme-changer/README.md +5 -3
- package/plugins/@vcmap/theme-changer/ThemeChangerComponent.vue +6 -10
- package/plugins/@vcmap/theme-changer/config.json +67 -67
- package/plugins/@vcmap/theme-changer/index.js +11 -5
- package/plugins/@vcmap-show-case/buttons-example/ButtonsExample.vue +76 -11
- package/plugins/@vcmap-show-case/buttons-example/index.js +10 -8
- package/plugins/@vcmap-show-case/category-tester/Categories.vue +144 -117
- package/plugins/@vcmap-show-case/category-tester/Category.vue +46 -29
- package/plugins/@vcmap-show-case/category-tester/index.js +9 -3
- package/plugins/@vcmap-show-case/config-editor/ConfigEditor.vue +62 -0
- package/plugins/@vcmap-show-case/config-editor/index.js +13 -11
- package/plugins/@vcmap-show-case/context-menu-tester/index.js +18 -10
- package/plugins/@vcmap-show-case/form-inputs-example/FormInputsExample.vue +97 -109
- package/plugins/@vcmap-show-case/form-inputs-example/config.json +3 -3
- package/plugins/@vcmap-show-case/form-inputs-example/exampleActions.js +14 -4
- package/plugins/@vcmap-show-case/form-inputs-example/index.js +42 -19
- package/plugins/@vcmap-show-case/form-inputs-example/validation.js +2 -1
- package/plugins/@vcmap-show-case/icons-example/README.md +1 -1
- package/plugins/@vcmap-show-case/icons-example/allIconsComponent.vue +10 -10
- package/plugins/@vcmap-show-case/icons-example/index.js +10 -8
- package/plugins/@vcmap-show-case/list-example/ListExample.vue +221 -103
- package/plugins/@vcmap-show-case/list-example/index.js +10 -8
- package/plugins/@vcmap-show-case/notifier-tester/index.js +9 -3
- package/plugins/@vcmap-show-case/notifier-tester/notifierTester.vue +15 -21
- package/plugins/@vcmap-show-case/table-example/DataTableExample.vue +183 -0
- package/plugins/@vcmap-show-case/table-example/README.md +3 -0
- package/plugins/@vcmap-show-case/table-example/index.js +49 -0
- package/plugins/@vcmap-show-case/table-example/package.json +5 -0
- package/plugins/@vcmap-show-case/textfields-example/TextfieldsExample.vue +7 -30
- package/plugins/@vcmap-show-case/textfields-example/index.js +10 -4
- package/plugins/@vcmap-show-case/window-tester/WindowExample.vue +16 -13
- package/plugins/@vcmap-show-case/window-tester/emptyComponent.vue +4 -7
- package/plugins/@vcmap-show-case/window-tester/index.js +26 -20
- package/plugins/@vcmap-show-case/window-tester/myCustomHeader.vue +7 -3
- package/plugins/@vcmap-show-case/window-tester/toolbox-data.js +82 -5
- package/plugins/@vcmap-show-case/window-tester/windowExampleContent.vue +3 -7
- package/plugins/@vcmap-show-case/wizard-example/index.js +9 -3
- package/plugins/@vcmap-show-case/wizard-example/wizardExample.vue +36 -38
- package/src/actions/actionHelper.js +64 -37
- package/src/actions/styleSelector.vue +40 -24
- package/src/application/VcsApp.vue +117 -80
- package/src/application/VcsAttributions.vue +8 -9
- package/src/application/VcsAttributionsFooter.vue +12 -9
- package/src/application/VcsMap.vue +9 -5
- package/src/application/VcsNavbar.vue +44 -27
- package/src/application/VcsSettings.vue +5 -12
- package/src/application/attributionsHelper.js +23 -11
- package/src/application/vcsAppWrapper.vue +1 -3
- package/src/components/buttons/VcsActionButtonList.vue +20 -17
- package/src/components/buttons/VcsButton.vue +19 -23
- package/src/components/buttons/VcsFormButton.vue +176 -0
- package/src/components/form-inputs-controls/VcsCheckbox.vue +6 -7
- package/src/components/form-inputs-controls/VcsDatePicker.vue +142 -0
- package/src/components/form-inputs-controls/VcsFormSection.vue +11 -12
- package/src/components/form-inputs-controls/VcsLabel.vue +9 -10
- package/src/components/form-inputs-controls/VcsRadio.vue +44 -44
- package/src/components/form-inputs-controls/VcsSelect.vue +16 -13
- package/src/components/form-inputs-controls/VcsTextArea.vue +21 -14
- package/src/components/form-inputs-controls/VcsTextField.vue +44 -19
- package/src/components/form-inputs-controls/VcsWizard.vue +79 -77
- package/src/components/form-inputs-controls/VcsWizardStep.vue +20 -20
- package/src/components/form-inputs-controls/composables.js +13 -8
- package/src/components/form-output/VcsFormattedNumber.vue +26 -26
- package/src/components/icons/+all.js +13 -5
- package/src/components/icons/2DAreaIcon.vue +62 -10
- package/src/components/icons/2DDistanceIcon.vue +14 -2
- package/src/components/icons/3DAreaIcon.vue +62 -10
- package/src/components/icons/3DDistanceIcon.vue +14 -2
- package/src/components/icons/3DHeightIcon.vue +14 -2
- package/src/components/icons/AngleIcon.vue +12 -3
- package/src/components/icons/AssociationsIcon.vue +6 -1
- package/src/components/icons/AxisIcon.vue +34 -5
- package/src/components/icons/BoundingBoxIcon.vue +31 -5
- package/src/components/icons/CheckboxCheckedIcon.vue +4 -1
- package/src/components/icons/CheckboxIcon.vue +1 -8
- package/src/components/icons/CheckboxIndeterminateIcon.vue +9 -2
- package/src/components/icons/CircleIcon.vue +24 -4
- package/src/components/icons/ClippingHorizontalIcon.vue +14 -2
- package/src/components/icons/ClippingIcon.vue +13 -2
- package/src/components/icons/ClippingVerticalIcon.vue +14 -2
- package/src/components/icons/ColorPickerIcon.vue +13 -2
- package/src/components/icons/ColorSwatchIcon.vue +7 -1
- package/src/components/icons/CommentIcon.vue +6 -1
- package/src/components/icons/CompassIcon.vue +21 -3
- package/src/components/icons/ComponentsIcon.vue +14 -2
- package/src/components/icons/ConeIcon.vue +26 -4
- package/src/components/icons/DimensionsHouseIcon.vue +7 -1
- package/src/components/icons/EditIcon.vue +13 -2
- package/src/components/icons/ElevationProfileIcon.vue +6 -1
- package/src/components/icons/ExportAreaIcon.vue +13 -2
- package/src/components/icons/ExportFlightIcon.vue +13 -2
- package/src/components/icons/ExportIcon.vue +14 -2
- package/src/components/icons/ExternalLinkIcon.vue +18 -3
- package/src/components/icons/EyeIcon.vue +12 -2
- package/src/components/icons/FastForwardIcon.vue +13 -2
- package/src/components/icons/FilterIcon.vue +13 -2
- package/src/components/icons/GlobalTerrainIcon.vue +12 -2
- package/src/components/icons/GlobeNatureIcon.vue +7 -1
- package/src/components/icons/GroundIcon.vue +12 -2
- package/src/components/icons/HealthCareIndustriesIcon.vue +6 -1
- package/src/components/icons/HelpIcon.vue +12 -2
- package/src/components/icons/HideIcon.vue +17 -3
- package/src/components/icons/HomePointIcon.vue +13 -3
- package/src/components/icons/HospitalsIcon.vue +6 -1
- package/src/components/icons/HouseIcon.vue +20 -3
- package/src/components/icons/ImportIcon.vue +21 -3
- package/src/components/icons/InfoIcon.vue +19 -3
- package/src/components/icons/KebabIcon.vue +12 -2
- package/src/components/icons/LabelIcon.vue +21 -3
- package/src/components/icons/LayersIcon.vue +12 -2
- package/src/components/icons/LegendIcon.vue +20 -60
- package/src/components/icons/LineIcon.vue +20 -3
- package/src/components/icons/LinkIcon.vue +13 -2
- package/src/components/icons/LogoutIcon.vue +13 -2
- package/src/components/icons/MapIcon.vue +14 -2
- package/src/components/icons/MenuIcon.vue +7 -1
- package/src/components/icons/MinusIcon.vue +14 -2
- package/src/components/icons/ObjectAttributeIcon.vue +13 -2
- package/src/components/icons/ObjectSelectIcon.vue +14 -2
- package/src/components/icons/ObliqueViewIcon.vue +11 -2
- package/src/components/icons/PdfIcon.vue +12 -2
- package/src/components/icons/PedestrianIcon.vue +13 -2
- package/src/components/icons/PenIcon.vue +13 -3
- package/src/components/icons/PlayCircleIcon.vue +20 -3
- package/src/components/icons/PlusIcon.vue +14 -3
- package/src/components/icons/PoiIcon.vue +17 -3
- package/src/components/icons/PointSelectIcon.vue +12 -2
- package/src/components/icons/PolygonIcon.vue +7 -1
- package/src/components/icons/PresentationModeIcon.vue +13 -2
- package/src/components/icons/ProgressIcon.vue +8 -6
- package/src/components/icons/QueryIcon.vue +31 -5
- package/src/components/icons/RectangleIcon.vue +24 -4
- package/src/components/icons/ReturnIcon.vue +13 -2
- package/src/components/icons/RewindIcon.vue +13 -2
- package/src/components/icons/RotateLeftIcon.vue +13 -2
- package/src/components/icons/RotateRightIcon.vue +13 -2
- package/src/components/icons/ScreenshotIcon.vue +52 -10
- package/src/components/icons/SearchIcon.vue +13 -3
- package/src/components/icons/ShadowIcon.vue +14 -3
- package/src/components/icons/ShapesIcon.vue +13 -3
- package/src/components/icons/ShareIcon.vue +17 -4
- package/src/components/icons/SimpleCircleFilledIcon.vue +14 -10
- package/src/components/icons/SimpleCircleHalfFilledIcon.vue +6 -1
- package/src/components/icons/SimpleCircleOutlinedIcon.vue +14 -10
- package/src/components/icons/SkipNextIcon.vue +11 -2
- package/src/components/icons/SkipPreviousIcon.vue +17 -3
- package/src/components/icons/SplitViewIcon.vue +6 -1
- package/src/components/icons/TerrainBoxIcon.vue +12 -2
- package/src/components/icons/TextStyleIcon.vue +7 -1
- package/src/components/icons/ThreeDimensionsIcon.vue +13 -2
- package/src/components/icons/ToolsIcon.vue +12 -2
- package/src/components/icons/TouchIcon.vue +13 -2
- package/src/components/icons/TrashCanIcon.vue +13 -2
- package/src/components/icons/TriangleIcon.vue +6 -2
- package/src/components/icons/TwoDimensionsIcon.vue +14 -2
- package/src/components/icons/UploadIcon.vue +13 -2
- package/src/components/icons/UserProfileIcon.vue +13 -2
- package/src/components/icons/UserShareIcon.vue +12 -2
- package/src/components/icons/VideoRecorderIcon.vue +16 -3
- package/src/components/icons/ViewpointFlightIcon.vue +22 -4
- package/src/components/icons/ViewpointIcon.vue +22 -4
- package/src/components/icons/Viewshed360Icon.vue +14 -2
- package/src/components/icons/ViewshedConeIcon.vue +13 -2
- package/src/components/icons/ViewshedIcon.vue +14 -2
- package/src/components/icons/WalkingIcon.vue +13 -2
- package/src/components/icons/WallIcon.vue +19 -3
- package/src/components/icons/WandIcon.vue +129 -21
- package/src/components/imageElementInjector.vue +1 -3
- package/src/components/lists/VcsActionList.vue +21 -18
- package/src/components/lists/VcsList.vue +226 -97
- package/src/components/lists/VcsTreeview.vue +30 -26
- package/src/components/lists/VcsTreeviewLeaf.vue +23 -22
- package/src/components/lists/VcsTreeviewSearchbar.vue +19 -15
- package/src/components/notification/VcsBadge.vue +4 -6
- package/src/components/notification/VcsTooltip.vue +95 -94
- package/src/components/notification/validation.js +1 -1
- package/src/components/tables/VcsDataTable.vue +398 -0
- package/src/components/tables/VcsTable.vue +63 -300
- package/src/contentTree/LayerTree.vue +2 -3
- package/src/contentTree/contentTreeCollection.js +49 -23
- package/src/contentTree/contentTreeItem.js +36 -14
- package/src/contentTree/groupContentTreeItem.js +44 -22
- package/src/contentTree/layerContentTreeItem.js +45 -20
- package/src/contentTree/layerGroupContentTreeItem.js +53 -31
- package/src/contentTree/nodeContentTreeItem.js +18 -7
- package/src/contentTree/obliqueCollectionContentTreeItem.js +45 -20
- package/src/contentTree/subContentTreeItem.js +13 -4
- package/src/contentTree/vcsObjectContentTreeItem.js +24 -15
- package/src/contentTree/viewpointContentTreeItem.js +19 -6
- package/src/downloadHelper.js +52 -0
- package/src/featureInfo/AddressBalloonComponent.vue +11 -16
- package/src/featureInfo/BalloonComponent.vue +41 -31
- package/src/featureInfo/abstractFeatureInfoView.js +30 -14
- package/src/featureInfo/addressBalloonFeatureInfoView.js +19 -7
- package/src/featureInfo/balloonFeatureInfoView.js +22 -9
- package/src/featureInfo/balloonHelper.js +61 -42
- package/src/featureInfo/featureInfo.js +74 -34
- package/src/featureInfo/featureInfoInteraction.js +13 -7
- package/src/featureInfo/iframeFeatureInfoView.js +3 -1
- package/src/featureInfo/tableFeatureInfoView.js +15 -5
- package/src/i18n/de.js +8 -0
- package/src/i18n/en.js +8 -0
- package/src/i18n/i18nCollection.js +183 -155
- package/src/init.js +124 -38
- package/src/legend/legendHelper.js +11 -6
- package/src/legend/styleLegendItem.vue +18 -12
- package/src/legend/vcsLegend.vue +15 -17
- package/src/manager/buttonManager.js +6 -3
- package/src/manager/categoryManager/CategoryComponent.vue +99 -63
- package/src/manager/categoryManager/CategoryComponentList.vue +33 -8
- package/src/manager/categoryManager/CategoryManager.vue +23 -11
- package/src/manager/categoryManager/categoryManager.js +90 -45
- package/src/manager/contextMenu/contextMenuComponent.vue +2 -6
- package/src/manager/contextMenu/contextMenuInteraction.js +6 -1
- package/src/manager/contextMenu/contextMenuManager.js +37 -22
- package/src/manager/navbarManager.js +28 -3
- package/src/manager/toolbox/GroupToolboxComponent.vue +22 -21
- package/src/manager/toolbox/SelectToolboxComponent.vue +36 -35
- package/src/manager/toolbox/ToolboxManager.vue +18 -10
- package/src/manager/toolbox/toolboxManager.js +30 -12
- package/src/manager/window/WindowComponent.vue +24 -32
- package/src/manager/window/WindowComponentHeader.vue +38 -28
- package/src/manager/window/WindowManager.vue +45 -35
- package/src/manager/window/windowHelper.js +80 -24
- package/src/manager/window/windowManager.js +79 -39
- package/src/navigation/mapNavCompass.vue +18 -4
- package/src/navigation/mapNavigation.vue +65 -46
- package/src/navigation/obliqueRotation.vue +34 -13
- package/src/navigation/orientationToolsButton.vue +6 -10
- package/src/navigation/overviewMap.js +76 -45
- package/src/navigation/overviewMapClickedInteraction.js +6 -1
- package/src/navigation/tiltSlider.vue +6 -10
- package/src/navigation/vcsCompass.vue +1 -9
- package/src/navigation/vcsZoomButton.vue +36 -11
- package/src/notifier/notifier.js +22 -13
- package/src/notifier/notifierComponent.vue +21 -21
- package/src/pluginHelper.js +39 -5
- package/src/search/resultItem.vue +10 -15
- package/src/search/resultsComponent.vue +30 -24
- package/src/search/search.js +48 -22
- package/src/search/searchComponent.vue +35 -10
- package/src/setup.js +9 -9
- package/src/state.js +28 -12
- package/src/styles/_typography.scss +0 -1
- package/src/styles/shades.scss +4 -2
- package/src/styles/utils/_border.scss +1 -1
- package/src/styles/utils/_display.scss +1 -1
- package/src/styles/variables.scss +39 -34
- package/src/styles/vcsFont.scss +6 -5
- package/src/styles/vcsGrid.scss +9 -0
- package/src/uiConfig.js +6 -4
- package/src/vcsUiApp.js +192 -91
- package/src/vuePlugins/i18n.js +5 -4
- package/src/vuePlugins/vuetify.js +4 -0
- package/start.js +8 -2
- package/dist/assets/cesium/Workers/PolygonPipeline-844aab0a.js +0 -1345
- package/dist/assets/cesium/Workers/Transforms-40229881.js +0 -14696
- package/dist/assets/index.8b833ead.js +0 -1
- package/dist/assets/ui.d760e4.css +0 -5
- package/map.config.json +0 -44
- package/plugins/@vcmap-show-case/config-editor/editor.vue +0 -66
- /package/dist/assets/cesium/Workers/{GeometryOffsetAttribute-04332ce7.js → GeometryOffsetAttribute-9ad0019c.js} +0 -0
- /package/dist/assets/{vue.db5102.js → vue.c1ece7.js} +0 -0
@@ -1,18 +1,16 @@
|
|
1
1
|
<template>
|
2
|
-
<div
|
3
|
-
:class="{ 'win-container-mobile' : $vuetify.breakpoint.xs }"
|
4
|
-
>
|
2
|
+
<div :class="{ 'win-container-mobile': $vuetify.breakpoint.xs }">
|
5
3
|
<WindowComponent
|
6
|
-
v-for="
|
4
|
+
v-for="id in componentIds"
|
7
5
|
:key="id"
|
8
6
|
:window-state="getState(id)"
|
9
7
|
:slot-window="getSlot(id)"
|
10
|
-
:z-index="zIndex"
|
8
|
+
:z-index="getComponent(id).zIndex"
|
11
9
|
@moved="move(id, $event)"
|
12
|
-
@
|
13
|
-
:style="getStyles(id
|
10
|
+
@mousedown="bringWindowToTop(id)"
|
11
|
+
:style="getStyles(id).value"
|
14
12
|
:class="getState(id).classes"
|
15
|
-
:is-on-top="isOnTop(
|
13
|
+
:is-on-top="isOnTop(id)"
|
16
14
|
>
|
17
15
|
<component
|
18
16
|
:is="getComponent(id)"
|
@@ -23,7 +21,7 @@
|
|
23
21
|
<component
|
24
22
|
:is="getHeaderComponent(id)"
|
25
23
|
:window-state="getState(id)"
|
26
|
-
:is-on-top="isOnTop(
|
24
|
+
:is-on-top="isOnTop(id)"
|
27
25
|
:slot-window="getSlot(id)"
|
28
26
|
v-bind="getProps(id)"
|
29
27
|
@close="close(id)"
|
@@ -41,13 +39,12 @@
|
|
41
39
|
width: 100%;
|
42
40
|
}
|
43
41
|
.win-container-mobile > {
|
44
|
-
div{
|
42
|
+
div {
|
45
43
|
width: 100% !important;
|
46
44
|
inset: unset !important;
|
47
45
|
border-radius: 0 !important;
|
48
46
|
}
|
49
47
|
}
|
50
|
-
|
51
48
|
</style>
|
52
49
|
|
53
50
|
<script>
|
@@ -55,7 +52,11 @@
|
|
55
52
|
|
56
53
|
import WindowComponent from './WindowComponent.vue';
|
57
54
|
import WindowComponentHeader from './WindowComponentHeader.vue';
|
58
|
-
import {
|
55
|
+
import {
|
56
|
+
applyPositionOnTarget,
|
57
|
+
getTargetSize,
|
58
|
+
moveWindow,
|
59
|
+
} from './windowHelper.js';
|
59
60
|
|
60
61
|
/**
|
61
62
|
* WindowManager rendering all registered WindowComponents
|
@@ -84,32 +85,35 @@
|
|
84
85
|
return windowManager.get(id)?.props ?? {};
|
85
86
|
};
|
86
87
|
/**
|
87
|
-
* @param {
|
88
|
+
* @param {string} id
|
88
89
|
* @returns {boolean}
|
89
90
|
*/
|
90
|
-
const isOnTop = (
|
91
|
-
return zIndex === componentIds.length - 1;
|
91
|
+
const isOnTop = (id) => {
|
92
|
+
return windowManager.get(id)?.zIndex.value === componentIds.length - 1;
|
92
93
|
};
|
93
94
|
/**
|
94
95
|
* @param {string} id
|
95
|
-
* @param {number} zIndex
|
96
96
|
* @returns {import("vue").ComputedRef<Object>}
|
97
97
|
*/
|
98
|
-
const getStyles = (id
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
98
|
+
const getStyles = (id) =>
|
99
|
+
computed(() => {
|
100
|
+
const windowComponent = windowManager.get(id);
|
101
|
+
const state = windowComponent?.state;
|
102
|
+
const position = applyPositionOnTarget(
|
103
|
+
windowComponent?.position,
|
104
|
+
targetSize.value,
|
105
|
+
);
|
106
|
+
return {
|
107
|
+
zIndex: windowComponent.zIndex.value,
|
108
|
+
...position,
|
109
|
+
...(state.styles || {}),
|
110
|
+
};
|
111
|
+
});
|
108
112
|
/**
|
109
113
|
* @param {string} id
|
110
114
|
*/
|
111
|
-
const
|
112
|
-
if (windowManager.has(id)) {
|
115
|
+
const bringWindowToTop = (id) => {
|
116
|
+
if (windowManager.has(id) && !isOnTop(id)) {
|
113
117
|
windowManager.bringWindowToTop(id);
|
114
118
|
}
|
115
119
|
};
|
@@ -125,7 +129,8 @@
|
|
125
129
|
targetSize.value = getTargetSize(app.maps.target);
|
126
130
|
};
|
127
131
|
window.addEventListener('resize', setTargetSize);
|
128
|
-
const setTargetDestroy =
|
132
|
+
const setTargetDestroy =
|
133
|
+
app.maps.mapActivated.addEventListener(setTargetSize);
|
129
134
|
|
130
135
|
onUnmounted(() => {
|
131
136
|
window.removeEventListener('resize', setTargetSize);
|
@@ -134,16 +139,21 @@
|
|
134
139
|
|
135
140
|
return {
|
136
141
|
componentIds: ref(componentIds),
|
137
|
-
getComponent: id => windowManager.get(id).component,
|
138
|
-
getHeaderComponent:
|
142
|
+
getComponent: (id) => windowManager.get(id).component,
|
143
|
+
getHeaderComponent: (id) =>
|
144
|
+
windowManager.get(id).headerComponent || WindowComponentHeader,
|
139
145
|
getStyles,
|
140
146
|
getState,
|
141
147
|
getProps,
|
142
148
|
isOnTop,
|
143
|
-
getSlot: id => windowManager.get(id).slot,
|
144
|
-
close: (id) => {
|
145
|
-
|
146
|
-
|
149
|
+
getSlot: (id) => windowManager.get(id).slot,
|
150
|
+
close: (id) => {
|
151
|
+
windowManager.remove(id);
|
152
|
+
},
|
153
|
+
pin: (id) => {
|
154
|
+
windowManager.pinWindow(id);
|
155
|
+
},
|
156
|
+
bringWindowToTop,
|
147
157
|
move,
|
148
158
|
};
|
149
159
|
},
|
@@ -51,7 +51,12 @@ export function getTargetSize(target) {
|
|
51
51
|
* @param {WindowAlignment} [alignment=WindowAlignment.TOP_LEFT]
|
52
52
|
* @returns {WindowPositionOptions}
|
53
53
|
*/
|
54
|
-
export function getWindowPositionOptions(
|
54
|
+
export function getWindowPositionOptions(
|
55
|
+
x,
|
56
|
+
y,
|
57
|
+
target,
|
58
|
+
alignment = WindowAlignment.TOP_LEFT,
|
59
|
+
) {
|
55
60
|
const targetSize = getTargetSize(target);
|
56
61
|
if (!targetSize) {
|
57
62
|
return { left: x, top: y };
|
@@ -61,11 +66,11 @@ export function getWindowPositionOptions(x, y, target, alignment = WindowAlignme
|
|
61
66
|
if (alignment === WindowAlignment.TOP_LEFT) {
|
62
67
|
return { left: x - left, top: y - top };
|
63
68
|
} else if (alignment === WindowAlignment.TOP_RIGHT) {
|
64
|
-
return { right:
|
69
|
+
return { right: left + width - x, top: y - top };
|
65
70
|
} else if (alignment === WindowAlignment.BOTTOM_LEFT) {
|
66
|
-
return { left: x - left, bottom:
|
71
|
+
return { left: x - left, bottom: height + top - y };
|
67
72
|
}
|
68
|
-
return { right:
|
73
|
+
return { right: left + width - x, bottom: height + top - y };
|
69
74
|
}
|
70
75
|
|
71
76
|
/**
|
@@ -75,17 +80,25 @@ export function getWindowPositionOptions(x, y, target, alignment = WindowAlignme
|
|
75
80
|
* @param {WindowAlignment} [alignment]
|
76
81
|
* @returns {WindowPositionOptions}
|
77
82
|
*/
|
78
|
-
export function getWindowPositionOptionsFromMapEvent(
|
83
|
+
export function getWindowPositionOptionsFromMapEvent(
|
84
|
+
windowPosition,
|
85
|
+
target,
|
86
|
+
alignment,
|
87
|
+
) {
|
79
88
|
const targetSize = getTargetSize(target);
|
80
89
|
if (!targetSize) {
|
81
90
|
return { left: windowPosition.x, top: windowPosition.y };
|
82
91
|
}
|
83
92
|
|
84
93
|
const { left, top } = targetSize;
|
85
|
-
return getWindowPositionOptions(
|
94
|
+
return getWindowPositionOptions(
|
95
|
+
windowPosition.x + left,
|
96
|
+
windowPosition.y + top,
|
97
|
+
target,
|
98
|
+
alignment,
|
99
|
+
);
|
86
100
|
}
|
87
101
|
|
88
|
-
|
89
102
|
/**
|
90
103
|
* Fits a window aligned top left, so it fits into the parent. This will change the alignment to be bottom or right depending
|
91
104
|
* on if the window would not fit into the parent.
|
@@ -127,13 +140,24 @@ export function getFittedWindowPositionOptions(x, y, width, height, target) {
|
|
127
140
|
* @param {HTMLElement} target - the map's target { @link @import("@vcmap/core").MapCollection }
|
128
141
|
* @returns {WindowPositionOptions}
|
129
142
|
*/
|
130
|
-
export function getFittedWindowPositionOptionsFromMapEvent(
|
143
|
+
export function getFittedWindowPositionOptionsFromMapEvent(
|
144
|
+
windowPosition,
|
145
|
+
width,
|
146
|
+
height,
|
147
|
+
target,
|
148
|
+
) {
|
131
149
|
const targetSize = getTargetSize(target);
|
132
150
|
if (!targetSize) {
|
133
151
|
return { left: windowPosition.x, top: windowPosition.y };
|
134
152
|
}
|
135
153
|
const { left, top } = targetSize;
|
136
|
-
return getFittedWindowPositionOptions(
|
154
|
+
return getFittedWindowPositionOptions(
|
155
|
+
windowPosition.x + left,
|
156
|
+
windowPosition.y + top,
|
157
|
+
width,
|
158
|
+
height,
|
159
|
+
target,
|
160
|
+
);
|
137
161
|
}
|
138
162
|
|
139
163
|
/**
|
@@ -148,7 +172,9 @@ export function posToNumber(pos, key, targetSize) {
|
|
148
172
|
if (pos.match(/^-?\d+\.?\d*px$/)) {
|
149
173
|
return parseInt(pos, 10);
|
150
174
|
} else if (targetSize && pos.match(/^-?\d+\.?\d*%$/)) {
|
151
|
-
const scalar = ['bottom', 'top', 'height', 'maxHeight'].includes(key)
|
175
|
+
const scalar = ['bottom', 'top', 'height', 'maxHeight'].includes(key)
|
176
|
+
? targetSize?.height
|
177
|
+
: targetSize?.width;
|
152
178
|
return (parseInt(pos, 10) / 100) * scalar;
|
153
179
|
}
|
154
180
|
return undefined;
|
@@ -166,7 +192,9 @@ export function posToPercent(pos, key, targetSize) {
|
|
166
192
|
if (!targetSize) {
|
167
193
|
return undefined;
|
168
194
|
}
|
169
|
-
const scalar = ['bottom', 'top', 'height', 'maxHeight'].includes(key)
|
195
|
+
const scalar = ['bottom', 'top', 'height', 'maxHeight'].includes(key)
|
196
|
+
? targetSize.height
|
197
|
+
: targetSize.width;
|
170
198
|
return `${((pos / scalar) * 100).toFixed(0)}%`;
|
171
199
|
}
|
172
200
|
|
@@ -204,7 +232,11 @@ export function updateWindowPosition(previous, update, targetSize) {
|
|
204
232
|
* @returns {string}
|
205
233
|
*/
|
206
234
|
const toString = (key, prev, updated) => {
|
207
|
-
if (
|
235
|
+
if (
|
236
|
+
prev[key] === 'auto' ||
|
237
|
+
prev[key] === 'unset' ||
|
238
|
+
updated[key] === undefined
|
239
|
+
) {
|
208
240
|
return prev[key];
|
209
241
|
} else if (updated[key] !== 'auto' && updated[key] !== 'unset') {
|
210
242
|
const numeric = posToNumber(updated[key], key, targetSize);
|
@@ -224,7 +256,6 @@ export function updateWindowPosition(previous, update, targetSize) {
|
|
224
256
|
return updatedPosition;
|
225
257
|
}
|
226
258
|
|
227
|
-
|
228
259
|
/**
|
229
260
|
* Move window position in x and y.
|
230
261
|
* Rightward and downward movements are positive.
|
@@ -251,7 +282,11 @@ export function moveWindow(id, translation, windowManager, targetSize) {
|
|
251
282
|
if (windowPositionOptions.right !== undefined) {
|
252
283
|
windowPositionOptions.right -= translation.dx;
|
253
284
|
}
|
254
|
-
const updatedPosition = updateWindowPosition(
|
285
|
+
const updatedPosition = updateWindowPosition(
|
286
|
+
position,
|
287
|
+
windowPositionOptions,
|
288
|
+
targetSize,
|
289
|
+
);
|
255
290
|
windowManager.setWindowPositionOptions(id, updatedPosition);
|
256
291
|
}
|
257
292
|
|
@@ -274,15 +309,18 @@ export function clipToTargetSize(windowPositionOptions, targetSize) {
|
|
274
309
|
);
|
275
310
|
}
|
276
311
|
if (windowPositionOptions.bottom !== undefined) {
|
277
|
-
const height =
|
278
|
-
|
312
|
+
const height =
|
313
|
+
windowPositionOptions.height ||
|
314
|
+
targetHeight - windowPositionOptions.bottom - windowPositionOptions.top ||
|
315
|
+
windowMoveMargin.bottom;
|
279
316
|
clippedPosition.bottom = Math.min(
|
280
317
|
Math.max(windowPositionOptions.bottom, -height + windowMoveMargin.bottom),
|
281
318
|
targetHeight - height,
|
282
319
|
);
|
283
320
|
}
|
284
321
|
if (windowPositionOptions.left !== undefined) {
|
285
|
-
const width =
|
322
|
+
const width =
|
323
|
+
windowPositionOptions.width ||
|
286
324
|
targetWidth - windowPositionOptions.right - windowPositionOptions.left;
|
287
325
|
clippedPosition.left = Math.min(
|
288
326
|
Math.max(windowPositionOptions.left, -width + windowMoveMargin.left),
|
@@ -290,7 +328,8 @@ export function clipToTargetSize(windowPositionOptions, targetSize) {
|
|
290
328
|
);
|
291
329
|
}
|
292
330
|
if (windowPositionOptions.right !== undefined) {
|
293
|
-
const width =
|
331
|
+
const width =
|
332
|
+
windowPositionOptions.width ||
|
294
333
|
targetWidth - windowPositionOptions.right - windowPositionOptions.left;
|
295
334
|
clippedPosition.right = Math.min(
|
296
335
|
Math.max(windowPositionOptions.right, -width + windowMoveMargin.right),
|
@@ -304,17 +343,30 @@ export function clipToTargetSize(windowPositionOptions, targetSize) {
|
|
304
343
|
clippedPosition.height = windowPositionOptions.height;
|
305
344
|
}
|
306
345
|
clippedPosition.maxWidth = targetWidth;
|
307
|
-
clippedPosition.maxHeight = targetHeight;
|
346
|
+
clippedPosition.maxHeight = targetHeight - 4; // 2px space plus 2px due to margin bottom
|
308
347
|
if (windowPositionOptions.maxWidth !== undefined) {
|
309
|
-
clippedPosition.maxWidth = Math.min(
|
348
|
+
clippedPosition.maxWidth = Math.min(
|
349
|
+
windowPositionOptions.maxWidth,
|
350
|
+
targetWidth,
|
351
|
+
);
|
310
352
|
}
|
311
353
|
if (windowPositionOptions.maxHeight !== undefined) {
|
312
|
-
clippedPosition.maxHeight = Math.min(
|
354
|
+
clippedPosition.maxHeight = Math.min(
|
355
|
+
windowPositionOptions.maxHeight,
|
356
|
+
targetHeight,
|
357
|
+
);
|
313
358
|
}
|
314
359
|
// max width of a top left 2 window (active static window)
|
315
|
-
const topLeft2 = posToNumber(
|
360
|
+
const topLeft2 = posToNumber(
|
361
|
+
WindowPositions.TOP_LEFT2.left,
|
362
|
+
'left',
|
363
|
+
targetSize,
|
364
|
+
);
|
316
365
|
if (clippedPosition.left === topLeft2) {
|
317
|
-
clippedPosition.maxWidth = Math.min(
|
366
|
+
clippedPosition.maxWidth = Math.min(
|
367
|
+
clippedPosition.maxWidth - topLeft2,
|
368
|
+
targetWidth,
|
369
|
+
);
|
318
370
|
}
|
319
371
|
|
320
372
|
return clippedPosition;
|
@@ -332,6 +384,10 @@ export function applyPositionOnTarget(position, targetSize) {
|
|
332
384
|
}
|
333
385
|
const windowPositionOptions = optionsFromWindowPosition(position, targetSize);
|
334
386
|
const clippedPosition = clipToTargetSize(windowPositionOptions, targetSize);
|
335
|
-
const updatedPosition = updateWindowPosition(
|
387
|
+
const updatedPosition = updateWindowPosition(
|
388
|
+
position,
|
389
|
+
clippedPosition,
|
390
|
+
targetSize,
|
391
|
+
);
|
336
392
|
return windowPositionFromOptions(updatedPosition);
|
337
393
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { reactive, ref } from 'vue';
|
1
|
+
import { computed, reactive, ref } from 'vue';
|
2
2
|
import { VcsEvent } from '@vcmap/core';
|
3
3
|
import { v4 as uuidv4 } from 'uuid';
|
4
4
|
import { parseEnumValue } from '@vcsuite/parsers';
|
@@ -20,7 +20,6 @@ export const WindowSlot = {
|
|
20
20
|
DETACHED: 'detached',
|
21
21
|
};
|
22
22
|
|
23
|
-
|
24
23
|
/**
|
25
24
|
* @typedef {Object} WindowPositionOptions
|
26
25
|
* @property {string|number|undefined} left Can be a css position string (e.g. '320px' or '50%') number values are treated as `px` values
|
@@ -84,7 +83,7 @@ export const WindowPositions = {
|
|
84
83
|
* @returns {boolean}
|
85
84
|
*/
|
86
85
|
export function compareWindowPositions(pos1, pos2) {
|
87
|
-
return !
|
86
|
+
return !Object.keys(pos1).some((key) => pos1[key] !== pos2[key]);
|
88
87
|
}
|
89
88
|
|
90
89
|
/**
|
@@ -93,8 +92,11 @@ export function compareWindowPositions(pos1, pos2) {
|
|
93
92
|
* @returns {boolean}
|
94
93
|
*/
|
95
94
|
export function isSlotPosition(windowPosition) {
|
96
|
-
return [
|
97
|
-
.
|
95
|
+
return [
|
96
|
+
WindowPositions.TOP_LEFT,
|
97
|
+
WindowPositions.TOP_LEFT2,
|
98
|
+
WindowPositions.TOP_RIGHT,
|
99
|
+
].some((s) => compareWindowPositions(s, windowPosition));
|
98
100
|
}
|
99
101
|
|
100
102
|
/**
|
@@ -137,6 +139,7 @@ export function isSlotPosition(windowPosition) {
|
|
137
139
|
* @property {WindowSlot} initialSlot
|
138
140
|
* @property {Object} props
|
139
141
|
* @property {Object} provides
|
142
|
+
* @property {import("vue").ComputedGetter<number>} zIndex
|
140
143
|
*/
|
141
144
|
|
142
145
|
/**
|
@@ -156,7 +159,10 @@ export function posToPixel(pos) {
|
|
156
159
|
* @param {WindowPosition=} windowPosition
|
157
160
|
* @returns {WindowPosition}
|
158
161
|
*/
|
159
|
-
export function windowPositionFromOptions(
|
162
|
+
export function windowPositionFromOptions(
|
163
|
+
windowPositionOptions,
|
164
|
+
windowPosition = {},
|
165
|
+
) {
|
160
166
|
let left = posToPixel(windowPositionOptions.left) || 'unset';
|
161
167
|
const right = posToPixel(windowPositionOptions.right) || 'unset';
|
162
168
|
let top = posToPixel(windowPositionOptions.top) || 'unset';
|
@@ -207,14 +213,20 @@ export function windowPositionFromOptions(windowPositionOptions, windowPosition
|
|
207
213
|
* @param {WindowPositionOptions} windowPositionOptions
|
208
214
|
*/
|
209
215
|
function setWindowPosition(windowComponent, windowPositionOptions) {
|
210
|
-
const windowPosition = windowPositionFromOptions(
|
216
|
+
const windowPosition = windowPositionFromOptions(
|
217
|
+
windowPositionOptions,
|
218
|
+
windowComponent.position,
|
219
|
+
);
|
211
220
|
// not one of the default Positions, so we also have to DETACH the windowState.
|
212
221
|
if (!isSlotPosition(windowPosition)) {
|
213
222
|
windowComponent.slot.value = WindowSlot.DETACHED;
|
214
223
|
}
|
215
224
|
// check dockable state
|
216
|
-
const initialWindowPosition = windowPositionFromOptions(
|
217
|
-
|
225
|
+
const initialWindowPosition = windowPositionFromOptions(
|
226
|
+
windowComponent.initialPositionOptions,
|
227
|
+
);
|
228
|
+
windowComponent.state.dockable =
|
229
|
+
windowComponent.slot.value === WindowSlot.DETACHED &&
|
218
230
|
!compareWindowPositions(windowPosition, initialWindowPosition);
|
219
231
|
}
|
220
232
|
|
@@ -238,6 +250,11 @@ class WindowManager {
|
|
238
250
|
* @type {Array<string>}
|
239
251
|
*/
|
240
252
|
this.componentIds = [];
|
253
|
+
/**
|
254
|
+
* reactive ordered array of ids, defining the zIndex of a component
|
255
|
+
* @type {import("vue").Ref<Array<string>>}
|
256
|
+
*/
|
257
|
+
this._zIndices = ref([]);
|
241
258
|
|
242
259
|
/**
|
243
260
|
* @type {Map<string, WindowComponent>}
|
@@ -277,8 +294,8 @@ class WindowManager {
|
|
277
294
|
const windowComponent = this._windowComponents.get(id);
|
278
295
|
if (windowComponent) {
|
279
296
|
this._cachePosition(windowComponent);
|
280
|
-
|
281
|
-
this.
|
297
|
+
this.componentIds.splice(this.componentIds.indexOf(id), 1);
|
298
|
+
this._zIndices.value.splice(this._zIndices.value.indexOf(id), 1);
|
282
299
|
this._windowComponents.delete(id);
|
283
300
|
this._handleSlotsChanged(windowComponent.slot.value);
|
284
301
|
this.removed.raiseEvent(windowComponent);
|
@@ -307,15 +324,15 @@ class WindowManager {
|
|
307
324
|
const staticWindow = this._findWindowBySlot(WindowSlot.STATIC);
|
308
325
|
const dynamicWindowLeft = this._findWindowBySlot(WindowSlot.DYNAMIC_LEFT);
|
309
326
|
if (staticWindow && dynamicWindowLeft) {
|
310
|
-
this.setWindowPositionOptions(
|
311
|
-
dynamicWindowLeft.
|
312
|
-
|
313
|
-
);
|
327
|
+
this.setWindowPositionOptions(dynamicWindowLeft.id, {
|
328
|
+
...dynamicWindowLeft.position,
|
329
|
+
...WindowPositions.TOP_LEFT2,
|
330
|
+
});
|
314
331
|
} else if (!staticWindow && dynamicWindowLeft) {
|
315
|
-
this.setWindowPositionOptions(
|
316
|
-
dynamicWindowLeft.
|
317
|
-
|
318
|
-
);
|
332
|
+
this.setWindowPositionOptions(dynamicWindowLeft.id, {
|
333
|
+
...dynamicWindowLeft.position,
|
334
|
+
...WindowPositions.TOP_LEFT,
|
335
|
+
});
|
319
336
|
}
|
320
337
|
}
|
321
338
|
}
|
@@ -326,7 +343,9 @@ class WindowManager {
|
|
326
343
|
* @private
|
327
344
|
*/
|
328
345
|
_findWindowBySlot(slot) {
|
329
|
-
return Array.from(this._windowComponents.values()).find(
|
346
|
+
return Array.from(this._windowComponents.values()).find(
|
347
|
+
(item) => item.slot.value === slot,
|
348
|
+
);
|
330
349
|
}
|
331
350
|
|
332
351
|
/**
|
@@ -381,9 +400,15 @@ class WindowManager {
|
|
381
400
|
* @private
|
382
401
|
*/
|
383
402
|
_cachePosition(windowComponent) {
|
384
|
-
const initialWindowPosition = windowPositionFromOptions(
|
385
|
-
|
386
|
-
|
403
|
+
const initialWindowPosition = windowPositionFromOptions(
|
404
|
+
windowComponent.initialPositionOptions,
|
405
|
+
);
|
406
|
+
if (
|
407
|
+
!compareWindowPositions(initialWindowPosition, windowComponent.position)
|
408
|
+
) {
|
409
|
+
this._windowPositionsCache.set(windowComponent.id, {
|
410
|
+
...windowComponent.position,
|
411
|
+
});
|
387
412
|
}
|
388
413
|
}
|
389
414
|
|
@@ -416,22 +441,26 @@ class WindowManager {
|
|
416
441
|
check(owner, [String, vcsAppSymbol]);
|
417
442
|
|
418
443
|
if (windowComponentOptions.id && this.has(windowComponentOptions.id)) {
|
419
|
-
throw new Error(
|
444
|
+
throw new Error(
|
445
|
+
`A window with id ${windowComponentOptions.id} has already been registered.`,
|
446
|
+
);
|
420
447
|
}
|
421
448
|
const id = windowComponentOptions.id || uuidv4();
|
422
|
-
const slotOption =
|
449
|
+
const slotOption =
|
450
|
+
windowComponentOptions.slot?.value || windowComponentOptions.slot;
|
423
451
|
const slot = parseEnumValue(slotOption, WindowSlot, WindowSlot.DETACHED);
|
424
|
-
const windowPositionOptions = this._getPositionOptionsForSlot(
|
452
|
+
const windowPositionOptions = this._getPositionOptionsForSlot(
|
453
|
+
slot,
|
454
|
+
windowComponentOptions.position,
|
455
|
+
);
|
425
456
|
const windowPosition = windowPositionFromOptions(windowPositionOptions);
|
426
457
|
|
427
458
|
const slotRef = ref(slot);
|
428
|
-
const {
|
429
|
-
component, headerComponent,
|
430
|
-
} = windowComponentOptions;
|
459
|
+
const { component, headerComponent } = windowComponentOptions;
|
431
460
|
const styles = { ...windowComponentOptions?.state?.styles };
|
432
|
-
const classes = Array.isArray(windowComponentOptions?.state?.classes)
|
433
|
-
[...(windowComponentOptions?.state?.classes ?? [])]
|
434
|
-
{ ...windowComponentOptions?.state?.classes };
|
461
|
+
const classes = Array.isArray(windowComponentOptions?.state?.classes)
|
462
|
+
? [...(windowComponentOptions?.state?.classes ?? [])]
|
463
|
+
: { ...windowComponentOptions?.state?.classes };
|
435
464
|
|
436
465
|
const state = reactive({
|
437
466
|
id,
|
@@ -441,7 +470,8 @@ class WindowManager {
|
|
441
470
|
headerTitle: windowComponentOptions?.state?.headerTitle,
|
442
471
|
headerIcon: windowComponentOptions?.state?.headerIcon,
|
443
472
|
headerActions: windowComponentOptions?.state?.headerActions,
|
444
|
-
headerActionsOverflow:
|
473
|
+
headerActionsOverflow:
|
474
|
+
windowComponentOptions?.state?.headerActionsOverflow,
|
445
475
|
dockable: false,
|
446
476
|
infoUrl: windowComponentOptions?.state?.infoUrl,
|
447
477
|
classes,
|
@@ -453,6 +483,7 @@ class WindowManager {
|
|
453
483
|
|
454
484
|
const position = reactive(windowPosition);
|
455
485
|
const initialPosition = { ...windowPositionOptions };
|
486
|
+
const zIndex = computed(() => this._zIndices.value.indexOf(id));
|
456
487
|
/**
|
457
488
|
* @type {WindowComponent}
|
458
489
|
*/
|
@@ -487,6 +518,9 @@ class WindowManager {
|
|
487
518
|
get provides() {
|
488
519
|
return provides;
|
489
520
|
},
|
521
|
+
get zIndex() {
|
522
|
+
return zIndex;
|
523
|
+
},
|
490
524
|
};
|
491
525
|
const cached = this._assignCachedPosition(windowComponent);
|
492
526
|
if (!cached) {
|
@@ -494,6 +528,7 @@ class WindowManager {
|
|
494
528
|
}
|
495
529
|
this._windowComponents.set(id, windowComponent);
|
496
530
|
this.componentIds.push(id);
|
531
|
+
this._zIndices.value.push(id);
|
497
532
|
this._handleSlotsChanged(slot);
|
498
533
|
this.added.raiseEvent(windowComponent);
|
499
534
|
return windowComponent;
|
@@ -505,10 +540,10 @@ class WindowManager {
|
|
505
540
|
*/
|
506
541
|
bringWindowToTop(id) {
|
507
542
|
if (this.has(id)) {
|
508
|
-
const index = this.
|
509
|
-
if (index >= 0 && index !== this.
|
510
|
-
this.
|
511
|
-
this.
|
543
|
+
const index = this._zIndices.value.indexOf(id);
|
544
|
+
if (index >= 0 && index !== this._zIndices.value.length - 1) {
|
545
|
+
this._zIndices.value.push(id);
|
546
|
+
this._zIndices.value.splice(index, 1);
|
512
547
|
}
|
513
548
|
}
|
514
549
|
}
|
@@ -526,7 +561,10 @@ class WindowManager {
|
|
526
561
|
}
|
527
562
|
this._removeWindowAtSlot(component.initialSlot);
|
528
563
|
component.slot.value = component.initialSlot;
|
529
|
-
const dockedPosition = this._getPositionOptionsForSlot(
|
564
|
+
const dockedPosition = this._getPositionOptionsForSlot(
|
565
|
+
component.initialSlot,
|
566
|
+
component.initialPositionOptions,
|
567
|
+
);
|
530
568
|
this.setWindowPositionOptions(id, dockedPosition);
|
531
569
|
this._windowPositionsCache.delete(id);
|
532
570
|
}
|
@@ -550,7 +588,9 @@ class WindowManager {
|
|
550
588
|
*/
|
551
589
|
clear() {
|
552
590
|
const componentIds = [...this.componentIds];
|
553
|
-
componentIds.forEach((id) => {
|
591
|
+
componentIds.forEach((id) => {
|
592
|
+
this.remove(id);
|
593
|
+
});
|
554
594
|
}
|
555
595
|
|
556
596
|
/**
|
@@ -1,5 +1,10 @@
|
|
1
1
|
<template>
|
2
|
-
<svg
|
2
|
+
<svg
|
3
|
+
xmlns="http://www.w3.org/2000/svg"
|
4
|
+
width="58"
|
5
|
+
height="58"
|
6
|
+
viewBox="0 0 58 58"
|
7
|
+
>
|
3
8
|
<g id="Group_1654" data-name="Group 1654" transform="translate(24)">
|
4
9
|
<path
|
5
10
|
:class="canEmit ? 'cursor-pointer' : ''"
|
@@ -20,7 +25,11 @@
|
|
20
25
|
@click="emit($event, 180)"
|
21
26
|
/>
|
22
27
|
</g>
|
23
|
-
<g
|
28
|
+
<g
|
29
|
+
id="Group_1653"
|
30
|
+
data-name="Group 1653"
|
31
|
+
transform="translate(0 33) rotate(-90)"
|
32
|
+
>
|
24
33
|
<path
|
25
34
|
:class="canEmit ? 'cursor-pointer' : ''"
|
26
35
|
id="west_arrow"
|
@@ -39,7 +48,12 @@
|
|
39
48
|
@click="emit($event, 90)"
|
40
49
|
/>
|
41
50
|
</g>
|
42
|
-
<g
|
51
|
+
<g
|
52
|
+
id="Group_1672"
|
53
|
+
data-name="Group 1672"
|
54
|
+
transform="translate(1)"
|
55
|
+
v-if="!hideTicks"
|
56
|
+
>
|
43
57
|
<line
|
44
58
|
id="Line_289-2"
|
45
59
|
data-name="Line 289"
|
@@ -162,6 +176,6 @@
|
|
162
176
|
}
|
163
177
|
|
164
178
|
svg path:hover {
|
165
|
-
fill: var(--v-
|
179
|
+
fill: var(--v-primary-lighten1) !important;
|
166
180
|
}
|
167
181
|
</style>
|