@vcmap/ui 5.0.0-rc.23 → 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 +36 -18
- package/app.config.json +2 -4
- 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 +7 -4
- 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 +16 -44
- package/config/base.config.json +71 -246
- package/config/codes.config.json +3 -1
- package/config/dev.config.json +5 -13
- package/config/graphFeatureInfo.config.json +55 -16
- package/config/projects.config.json +5 -2
- package/config/www.config.json +96 -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.166f91.js → cesium.253914.js} +36578 -33768
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/{core.9342a1.js → core.3a8205.js} +53 -58
- package/dist/assets/core.js +1 -1
- package/dist/assets/{index.fd041928.js → index.91ae2d55.js} +1 -1
- package/dist/assets/{ol.d2cba3.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.c27597.js → ui.0025be.js} +5494 -4759
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue.js +2 -2
- package/dist/assets/{vuetify.2f1432.css → vuetify.6efa21.css} +2 -2
- package/dist/assets/{vuetify.2f1432.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 +65 -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 +18 -9
- 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/ModulesListComponent.vue +4 -8
- package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +5 -10
- package/plugins/@vcmap/project-selector/README.md +4 -2
- package/plugins/@vcmap/project-selector/config.json +13 -13
- package/plugins/@vcmap/project-selector/de.json +2 -2
- package/plugins/@vcmap/project-selector/en.json +2 -2
- package/plugins/@vcmap/project-selector/index.js +63 -28
- 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 +1 -1
- 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 +143 -116
- package/plugins/@vcmap-show-case/category-tester/Category.vue +46 -26
- package/plugins/@vcmap-show-case/category-tester/index.js +9 -3
- package/plugins/@vcmap-show-case/config-editor/{editor.vue → ConfigEditor.vue} +20 -24
- 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 +89 -118
- 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 +41 -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 +22 -41
- package/plugins/@vcmap-show-case/table-example/index.js +10 -8
- 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 +49 -11
- package/src/actions/styleSelector.vue +20 -11
- 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 +50 -19
- 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 +26 -12
- package/src/components/form-inputs-controls/VcsWizard.vue +78 -78
- 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 +13 -3
- 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 +208 -98
- 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 +107 -95
- package/src/components/tables/VcsTable.vue +38 -30
- package/src/contentTree/LayerTree.vue +2 -3
- package/src/contentTree/contentTreeCollection.js +48 -22
- package/src/contentTree/contentTreeItem.js +36 -14
- package/src/contentTree/groupContentTreeItem.js +44 -22
- package/src/contentTree/layerContentTreeItem.js +42 -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 +4 -1
- package/src/featureInfo/AddressBalloonComponent.vue +11 -16
- package/src/featureInfo/BalloonComponent.vue +35 -26
- package/src/featureInfo/abstractFeatureInfoView.js +29 -13
- 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 +71 -31
- package/src/featureInfo/featureInfoInteraction.js +13 -7
- package/src/featureInfo/iframeFeatureInfoView.js +3 -1
- package/src/featureInfo/tableFeatureInfoView.js +15 -5
- package/src/i18n/i18nCollection.js +183 -155
- package/src/init.js +124 -121
- 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 +52 -25
- package/src/manager/categoryManager/CategoryComponentList.vue +33 -8
- package/src/manager/categoryManager/CategoryManager.vue +4 -5
- package/src/manager/categoryManager/categoryManager.js +82 -37
- 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 +15 -8
- 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 +18 -21
- package/src/manager/window/WindowComponentHeader.vue +34 -26
- package/src/manager/window/WindowManager.vue +33 -22
- package/src/manager/window/windowHelper.js +79 -23
- package/src/manager/window/windowManager.js +61 -32
- package/src/navigation/mapNavCompass.vue +17 -3
- package/src/navigation/mapNavigation.vue +59 -40
- package/src/navigation/obliqueRotation.vue +6 -8
- package/src/navigation/orientationToolsButton.vue +6 -9
- package/src/navigation/overviewMap.js +72 -41
- 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 +16 -17
- package/src/notifier/notifier.js +22 -13
- package/src/notifier/notifierComponent.vue +21 -21
- package/src/pluginHelper.js +23 -9
- package/src/search/resultItem.vue +10 -15
- package/src/search/resultsComponent.vue +30 -24
- package/src/search/search.js +36 -19
- package/src/search/searchComponent.vue +20 -10
- package/src/setup.js +9 -9
- package/src/state.js +22 -6
- 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 +3 -1
- package/src/vcsUiApp.js +156 -59
- package/src/vuePlugins/i18n.js +4 -4
- package/src/vuePlugins/vuetify.js +4 -0
- package/dist/assets/cesium/Workers/PolygonPipeline-844aab0a.js +0 -1345
- package/dist/assets/cesium/Workers/Transforms-40229881.js +0 -14696
- package/dist/assets/ui.c27597.css +0 -5
- /package/dist/assets/cesium/Workers/{GeometryOffsetAttribute-04332ce7.js → GeometryOffsetAttribute-9ad0019c.js} +0 -0
- /package/dist/assets/{vue.5d00e9.js → vue.c1ece7.js} +0 -0
@@ -1,20 +1,23 @@
|
|
1
1
|
<template>
|
2
|
-
<
|
3
|
-
|
2
|
+
<div
|
3
|
+
class="d-flex justify-space-between align-center window-component-header"
|
4
|
+
>
|
5
|
+
<h3 class="d-flex align-center">
|
4
6
|
<v-icon
|
5
7
|
v-if="windowState.headerIcon"
|
6
|
-
class="mr-
|
8
|
+
class="mr-1"
|
7
9
|
:class="{ 'primary--text': isOnTop }"
|
8
|
-
v-text="windowState.headerIcon"
|
9
10
|
size="16"
|
10
|
-
|
11
|
-
|
11
|
+
>
|
12
|
+
{{ windowState.headerIcon }}
|
13
|
+
</v-icon>
|
14
|
+
<span
|
12
15
|
class="d-inline-block user-select-none font-weight-bold"
|
13
16
|
:class="{ 'text--primary': isOnTop }"
|
14
17
|
>
|
15
18
|
{{ $t(windowState.headerTitle) }}
|
16
|
-
</
|
17
|
-
</
|
19
|
+
</span>
|
20
|
+
</h3>
|
18
21
|
<div class="d-flex justify-space-between align-center">
|
19
22
|
<template v-if="windowState.headerActions?.length > 0">
|
20
23
|
<VcsActionButtonList
|
@@ -22,11 +25,7 @@
|
|
22
25
|
:overflow-count="windowState.headerActionsOverflow ?? 3"
|
23
26
|
small
|
24
27
|
/>
|
25
|
-
<v-divider
|
26
|
-
vertical
|
27
|
-
inset
|
28
|
-
class="mx-1"
|
29
|
-
/>
|
28
|
+
<v-divider vertical inset class="mx-1" />
|
30
29
|
</template>
|
31
30
|
<VcsButton
|
32
31
|
v-if="windowState.infoUrl"
|
@@ -52,17 +51,20 @@
|
|
52
51
|
class="d-flex"
|
53
52
|
/>
|
54
53
|
</div>
|
55
|
-
</
|
54
|
+
</div>
|
56
55
|
</template>
|
57
56
|
|
58
57
|
<style lang="scss" scoped>
|
59
|
-
.window-component-header{
|
60
|
-
|
58
|
+
.window-component-header {
|
59
|
+
max-height: 16px;
|
61
60
|
|
62
|
-
|
63
|
-
|
61
|
+
h3 {
|
62
|
+
line-height: 16px;
|
63
|
+
}
|
64
|
+
.v-divider--vertical.v-divider--inset {
|
65
|
+
margin-top: 2px;
|
66
|
+
}
|
64
67
|
}
|
65
|
-
}
|
66
68
|
</style>
|
67
69
|
|
68
70
|
<script>
|
@@ -108,13 +110,20 @@
|
|
108
110
|
const close = () => {
|
109
111
|
emit('close');
|
110
112
|
};
|
111
|
-
const isDockable = computed(
|
113
|
+
const isDockable = computed(
|
114
|
+
() => !props.windowState.hidePin && props.windowState.dockable,
|
115
|
+
);
|
112
116
|
|
113
|
-
const infoAction = props.windowState.infoUrl
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
117
|
+
const infoAction = props.windowState.infoUrl
|
118
|
+
? createLinkAction(
|
119
|
+
{
|
120
|
+
name: 'info',
|
121
|
+
title: 'content.infoAction.title',
|
122
|
+
icon: '$vcsInfo',
|
123
|
+
},
|
124
|
+
props.windowState.infoUrl,
|
125
|
+
)
|
126
|
+
: {};
|
118
127
|
|
119
128
|
return {
|
120
129
|
pin,
|
@@ -125,4 +134,3 @@
|
|
125
134
|
},
|
126
135
|
};
|
127
136
|
</script>
|
128
|
-
|
@@ -1,7 +1,5 @@
|
|
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
4
|
v-for="id in componentIds"
|
7
5
|
:key="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
|
@@ -94,16 +95,20 @@
|
|
94
95
|
* @param {string} id
|
95
96
|
* @returns {import("vue").ComputedRef<Object>}
|
96
97
|
*/
|
97
|
-
const getStyles = id
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
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
|
+
});
|
107
112
|
/**
|
108
113
|
* @param {string} id
|
109
114
|
*/
|
@@ -124,7 +129,8 @@
|
|
124
129
|
targetSize.value = getTargetSize(app.maps.target);
|
125
130
|
};
|
126
131
|
window.addEventListener('resize', setTargetSize);
|
127
|
-
const setTargetDestroy =
|
132
|
+
const setTargetDestroy =
|
133
|
+
app.maps.mapActivated.addEventListener(setTargetSize);
|
128
134
|
|
129
135
|
onUnmounted(() => {
|
130
136
|
window.removeEventListener('resize', setTargetSize);
|
@@ -133,15 +139,20 @@
|
|
133
139
|
|
134
140
|
return {
|
135
141
|
componentIds: ref(componentIds),
|
136
|
-
getComponent: id => windowManager.get(id).component,
|
137
|
-
getHeaderComponent:
|
142
|
+
getComponent: (id) => windowManager.get(id).component,
|
143
|
+
getHeaderComponent: (id) =>
|
144
|
+
windowManager.get(id).headerComponent || WindowComponentHeader,
|
138
145
|
getStyles,
|
139
146
|
getState,
|
140
147
|
getProps,
|
141
148
|
isOnTop,
|
142
|
-
getSlot: id => windowManager.get(id).slot,
|
143
|
-
close: (id) => {
|
144
|
-
|
149
|
+
getSlot: (id) => windowManager.get(id).slot,
|
150
|
+
close: (id) => {
|
151
|
+
windowManager.remove(id);
|
152
|
+
},
|
153
|
+
pin: (id) => {
|
154
|
+
windowManager.pinWindow(id);
|
155
|
+
},
|
145
156
|
bringWindowToTop,
|
146
157
|
move,
|
147
158
|
};
|
@@ -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),
|
@@ -306,15 +345,28 @@ export function clipToTargetSize(windowPositionOptions, targetSize) {
|
|
306
345
|
clippedPosition.maxWidth = targetWidth;
|
307
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
|
}
|
@@ -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
|
/**
|
@@ -157,7 +159,10 @@ export function posToPixel(pos) {
|
|
157
159
|
* @param {WindowPosition=} windowPosition
|
158
160
|
* @returns {WindowPosition}
|
159
161
|
*/
|
160
|
-
export function windowPositionFromOptions(
|
162
|
+
export function windowPositionFromOptions(
|
163
|
+
windowPositionOptions,
|
164
|
+
windowPosition = {},
|
165
|
+
) {
|
161
166
|
let left = posToPixel(windowPositionOptions.left) || 'unset';
|
162
167
|
const right = posToPixel(windowPositionOptions.right) || 'unset';
|
163
168
|
let top = posToPixel(windowPositionOptions.top) || 'unset';
|
@@ -208,14 +213,20 @@ export function windowPositionFromOptions(windowPositionOptions, windowPosition
|
|
208
213
|
* @param {WindowPositionOptions} windowPositionOptions
|
209
214
|
*/
|
210
215
|
function setWindowPosition(windowComponent, windowPositionOptions) {
|
211
|
-
const windowPosition = windowPositionFromOptions(
|
216
|
+
const windowPosition = windowPositionFromOptions(
|
217
|
+
windowPositionOptions,
|
218
|
+
windowComponent.position,
|
219
|
+
);
|
212
220
|
// not one of the default Positions, so we also have to DETACH the windowState.
|
213
221
|
if (!isSlotPosition(windowPosition)) {
|
214
222
|
windowComponent.slot.value = WindowSlot.DETACHED;
|
215
223
|
}
|
216
224
|
// check dockable state
|
217
|
-
const initialWindowPosition = windowPositionFromOptions(
|
218
|
-
|
225
|
+
const initialWindowPosition = windowPositionFromOptions(
|
226
|
+
windowComponent.initialPositionOptions,
|
227
|
+
);
|
228
|
+
windowComponent.state.dockable =
|
229
|
+
windowComponent.slot.value === WindowSlot.DETACHED &&
|
219
230
|
!compareWindowPositions(windowPosition, initialWindowPosition);
|
220
231
|
}
|
221
232
|
|
@@ -313,15 +324,15 @@ class WindowManager {
|
|
313
324
|
const staticWindow = this._findWindowBySlot(WindowSlot.STATIC);
|
314
325
|
const dynamicWindowLeft = this._findWindowBySlot(WindowSlot.DYNAMIC_LEFT);
|
315
326
|
if (staticWindow && dynamicWindowLeft) {
|
316
|
-
this.setWindowPositionOptions(
|
317
|
-
dynamicWindowLeft.
|
318
|
-
|
319
|
-
);
|
327
|
+
this.setWindowPositionOptions(dynamicWindowLeft.id, {
|
328
|
+
...dynamicWindowLeft.position,
|
329
|
+
...WindowPositions.TOP_LEFT2,
|
330
|
+
});
|
320
331
|
} else if (!staticWindow && dynamicWindowLeft) {
|
321
|
-
this.setWindowPositionOptions(
|
322
|
-
dynamicWindowLeft.
|
323
|
-
|
324
|
-
);
|
332
|
+
this.setWindowPositionOptions(dynamicWindowLeft.id, {
|
333
|
+
...dynamicWindowLeft.position,
|
334
|
+
...WindowPositions.TOP_LEFT,
|
335
|
+
});
|
325
336
|
}
|
326
337
|
}
|
327
338
|
}
|
@@ -332,7 +343,9 @@ class WindowManager {
|
|
332
343
|
* @private
|
333
344
|
*/
|
334
345
|
_findWindowBySlot(slot) {
|
335
|
-
return Array.from(this._windowComponents.values()).find(
|
346
|
+
return Array.from(this._windowComponents.values()).find(
|
347
|
+
(item) => item.slot.value === slot,
|
348
|
+
);
|
336
349
|
}
|
337
350
|
|
338
351
|
/**
|
@@ -387,9 +400,15 @@ class WindowManager {
|
|
387
400
|
* @private
|
388
401
|
*/
|
389
402
|
_cachePosition(windowComponent) {
|
390
|
-
const initialWindowPosition = windowPositionFromOptions(
|
391
|
-
|
392
|
-
|
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
|
+
});
|
393
412
|
}
|
394
413
|
}
|
395
414
|
|
@@ -422,22 +441,26 @@ class WindowManager {
|
|
422
441
|
check(owner, [String, vcsAppSymbol]);
|
423
442
|
|
424
443
|
if (windowComponentOptions.id && this.has(windowComponentOptions.id)) {
|
425
|
-
throw new Error(
|
444
|
+
throw new Error(
|
445
|
+
`A window with id ${windowComponentOptions.id} has already been registered.`,
|
446
|
+
);
|
426
447
|
}
|
427
448
|
const id = windowComponentOptions.id || uuidv4();
|
428
|
-
const slotOption =
|
449
|
+
const slotOption =
|
450
|
+
windowComponentOptions.slot?.value || windowComponentOptions.slot;
|
429
451
|
const slot = parseEnumValue(slotOption, WindowSlot, WindowSlot.DETACHED);
|
430
|
-
const windowPositionOptions = this._getPositionOptionsForSlot(
|
452
|
+
const windowPositionOptions = this._getPositionOptionsForSlot(
|
453
|
+
slot,
|
454
|
+
windowComponentOptions.position,
|
455
|
+
);
|
431
456
|
const windowPosition = windowPositionFromOptions(windowPositionOptions);
|
432
457
|
|
433
458
|
const slotRef = ref(slot);
|
434
|
-
const {
|
435
|
-
component, headerComponent,
|
436
|
-
} = windowComponentOptions;
|
459
|
+
const { component, headerComponent } = windowComponentOptions;
|
437
460
|
const styles = { ...windowComponentOptions?.state?.styles };
|
438
|
-
const classes = Array.isArray(windowComponentOptions?.state?.classes)
|
439
|
-
[...(windowComponentOptions?.state?.classes ?? [])]
|
440
|
-
{ ...windowComponentOptions?.state?.classes };
|
461
|
+
const classes = Array.isArray(windowComponentOptions?.state?.classes)
|
462
|
+
? [...(windowComponentOptions?.state?.classes ?? [])]
|
463
|
+
: { ...windowComponentOptions?.state?.classes };
|
441
464
|
|
442
465
|
const state = reactive({
|
443
466
|
id,
|
@@ -447,7 +470,8 @@ class WindowManager {
|
|
447
470
|
headerTitle: windowComponentOptions?.state?.headerTitle,
|
448
471
|
headerIcon: windowComponentOptions?.state?.headerIcon,
|
449
472
|
headerActions: windowComponentOptions?.state?.headerActions,
|
450
|
-
headerActionsOverflow:
|
473
|
+
headerActionsOverflow:
|
474
|
+
windowComponentOptions?.state?.headerActionsOverflow,
|
451
475
|
dockable: false,
|
452
476
|
infoUrl: windowComponentOptions?.state?.infoUrl,
|
453
477
|
classes,
|
@@ -537,7 +561,10 @@ class WindowManager {
|
|
537
561
|
}
|
538
562
|
this._removeWindowAtSlot(component.initialSlot);
|
539
563
|
component.slot.value = component.initialSlot;
|
540
|
-
const dockedPosition = this._getPositionOptionsForSlot(
|
564
|
+
const dockedPosition = this._getPositionOptionsForSlot(
|
565
|
+
component.initialSlot,
|
566
|
+
component.initialPositionOptions,
|
567
|
+
);
|
541
568
|
this.setWindowPositionOptions(id, dockedPosition);
|
542
569
|
this._windowPositionsCache.delete(id);
|
543
570
|
}
|
@@ -561,7 +588,9 @@ class WindowManager {
|
|
561
588
|
*/
|
562
589
|
clear() {
|
563
590
|
const componentIds = [...this.componentIds];
|
564
|
-
componentIds.forEach((id) => {
|
591
|
+
componentIds.forEach((id) => {
|
592
|
+
this.remove(id);
|
593
|
+
});
|
565
594
|
}
|
566
595
|
|
567
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"
|