@vcmap/ui 5.0.0-rc.8 → 5.0.0
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 +95 -64
- package/app.config.json +3 -0
- package/build/.eslintrc +3 -0
- package/build/build.js +302 -165
- package/build/buildCesium.js +39 -19
- package/build/buildHelpers.js +279 -88
- package/build/buildPreview.js +16 -6
- package/build/bundle.js +57 -0
- package/build/commonViteConfig.js +7 -16
- package/build/determineHost.js +17 -4
- package/build/generateOLLib.js +15 -18
- package/build/getPluginProxies.js +35 -3
- package/build/info/conf.json +21 -19
- package/build/info/publish.js +16 -5
- package/config/aerowest.config.json +47 -54
- package/config/base.config.json +597 -662
- package/config/codes.config.json +401 -0
- package/config/dev.config.json +460 -14
- package/config/graphFeatureInfo.config.json +141 -0
- package/config/projects.config.json +29 -0
- package/config/www.config.json +1801 -0
- package/dist/assets/@mdi/font/LICENSE +20 -0
- package/dist/assets/@mdi/font/css/materialdesignicons.css.map +16 -0
- package/dist/assets/@mdi/font/css/materialdesignicons.min.e3f476.css +3 -0
- package/dist/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
- package/dist/assets/cesium/ThirdParty/Workers/basis_transcoder.js +21 -0
- package/dist/assets/cesium/ThirdParty/Workers/package.json +1 -0
- package/dist/assets/cesium/ThirdParty/Workers/pako_deflate.min.js +2 -0
- package/dist/assets/cesium/ThirdParty/Workers/pako_inflate.min.js +2 -0
- package/dist/assets/cesium/ThirdParty/Workers/z-worker-pako.js +1 -0
- package/dist/assets/cesium/ThirdParty/basis_transcoder.wasm +0 -0
- package/dist/assets/cesium/ThirdParty/draco_decoder.wasm +0 -0
- package/dist/assets/cesium/ThirdParty/google-earth-dbroot-parser.js +8337 -0
- package/dist/assets/cesium/Workers/chunk-227AJNOA.js +59 -0
- package/dist/assets/cesium/Workers/chunk-2R5O53JW.js +157 -0
- package/dist/assets/cesium/Workers/chunk-34YUDLRP.js +781 -0
- package/dist/assets/cesium/Workers/chunk-3W63OHNJ.js +100 -0
- package/dist/assets/cesium/Workers/chunk-4MFFIWUA.js +163 -0
- package/dist/assets/cesium/Workers/chunk-66QLLS45.js +218 -0
- package/dist/assets/cesium/Workers/chunk-6BTKZDRG.js +77 -0
- package/dist/assets/cesium/Workers/chunk-A4JVFBQ3.js +101 -0
- package/dist/assets/cesium/Workers/chunk-ABADGKYE.js +58 -0
- package/dist/assets/cesium/Workers/chunk-AFFLIKOH.js +353 -0
- package/dist/assets/cesium/Workers/chunk-AHKEZ2OE.js +629 -0
- package/dist/assets/cesium/Workers/chunk-C3SXRKRW.js +476 -0
- package/dist/assets/cesium/Workers/chunk-CCFQRR6D.js +55 -0
- package/dist/assets/cesium/Workers/chunk-CHHNOC2C.js +1860 -0
- package/dist/assets/cesium/Workers/chunk-CTELOFLA.js +196 -0
- package/dist/assets/cesium/Workers/chunk-DUHWWBQQ.js +3273 -0
- package/dist/assets/cesium/Workers/chunk-EW2GWJYB.js +44 -0
- package/dist/assets/cesium/Workers/chunk-GLZBE3ML.js +421 -0
- package/dist/assets/cesium/Workers/chunk-HARLBUOL.js +236 -0
- package/dist/assets/cesium/Workers/chunk-HQF437NJ.js +117 -0
- package/dist/assets/cesium/Workers/chunk-IPA4EACJ.js +368 -0
- package/dist/assets/cesium/Workers/chunk-J3JY6I2C.js +1009 -0
- package/dist/assets/cesium/Workers/chunk-JB2LWGH4.js +390 -0
- package/dist/assets/cesium/Workers/chunk-JS3AW5BK.js +634 -0
- package/dist/assets/cesium/Workers/chunk-K36FEYS7.js +452 -0
- package/dist/assets/cesium/Workers/chunk-KD4Y7CZL.js +400 -0
- package/dist/assets/cesium/Workers/chunk-KTJSNCK4.js +842 -0
- package/dist/assets/cesium/Workers/chunk-LLUNNUJV.js +258 -0
- package/dist/assets/cesium/Workers/chunk-MPAZH4BF.js +37 -0
- package/dist/assets/cesium/Workers/chunk-MYZB7C4T.js +1258 -0
- package/dist/assets/cesium/Workers/chunk-N3JIFFX2.js +501 -0
- package/dist/assets/cesium/Workers/chunk-O5AMBQ36.js +430 -0
- package/dist/assets/cesium/Workers/chunk-OAVNIRB4.js +124 -0
- package/dist/assets/cesium/Workers/chunk-OYFCF4PL.js +171 -0
- package/dist/assets/cesium/Workers/chunk-OZJDGN5F.js +1477 -0
- package/dist/assets/cesium/Workers/chunk-PCJWUS4M.js +2041 -0
- package/dist/assets/cesium/Workers/chunk-PFQBCKBM.js +8644 -0
- package/dist/assets/cesium/Workers/chunk-QIKODV5G.js +305 -0
- package/dist/assets/cesium/Workers/chunk-QJ3DFBH3.js +73 -0
- package/dist/assets/cesium/Workers/chunk-QMEMZIJI.js +138 -0
- package/dist/assets/cesium/Workers/chunk-QT3MPEMI.js +102 -0
- package/dist/assets/cesium/Workers/chunk-RP2A7BR5.js +289 -0
- package/dist/assets/cesium/Workers/chunk-RW6LU2CJ.js +138 -0
- package/dist/assets/cesium/Workers/chunk-TFC6TZ3S.js +757 -0
- package/dist/assets/cesium/Workers/chunk-V3NGATMV.js +693 -0
- package/dist/assets/cesium/Workers/chunk-VLGOATD6.js +1075 -0
- package/dist/assets/cesium/Workers/chunk-WXTV4ATB.js +39 -0
- package/dist/assets/cesium/Workers/chunk-X4SU25DT.js +302 -0
- package/dist/assets/cesium/Workers/chunk-XTY7B2N6.js +2716 -0
- package/dist/assets/cesium/Workers/chunk-XY7MGBKC.js +513 -0
- package/dist/assets/cesium/Workers/chunk-Z24VKNDO.js +834 -0
- package/dist/assets/cesium/Workers/chunk-ZA25DG4Y.js +684 -0
- package/dist/assets/cesium/Workers/chunk-ZFOBYDGF.js +73 -0
- package/dist/assets/cesium/Workers/combineGeometry.js +67 -1
- package/dist/assets/cesium/Workers/createBoxGeometry.js +57 -1
- package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +234 -1
- package/dist/assets/cesium/Workers/createCircleGeometry.js +196 -1
- package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +146 -1
- package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +506 -1
- package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +224 -1
- package/dist/assets/cesium/Workers/createCorridorGeometry.js +1262 -1
- package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +567 -1
- package/dist/assets/cesium/Workers/createCylinderGeometry.js +59 -1
- package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +231 -1
- package/dist/assets/cesium/Workers/createEllipseGeometry.js +70 -1
- package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +63 -1
- package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +58 -1
- package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +60 -1
- package/dist/assets/cesium/Workers/createFrustumGeometry.js +57 -1
- package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +234 -1
- package/dist/assets/cesium/Workers/createGeometry.js +150 -1
- package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +1607 -1
- package/dist/assets/cesium/Workers/createPlaneGeometry.js +223 -1
- package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +123 -1
- package/dist/assets/cesium/Workers/createPolygonGeometry.js +1134 -1
- package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +542 -1
- package/dist/assets/cesium/Workers/createPolylineGeometry.js +495 -1
- package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +379 -1
- package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +277 -1
- package/dist/assets/cesium/Workers/createRectangleGeometry.js +1273 -1
- package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +480 -1
- package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +399 -1
- package/dist/assets/cesium/Workers/createSphereGeometry.js +117 -1
- package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +117 -1
- package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +32 -1
- package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +492 -1
- package/dist/assets/cesium/Workers/createVectorTileGeometries.js +386 -1
- package/dist/assets/cesium/Workers/createVectorTilePoints.js +112 -1
- package/dist/assets/cesium/Workers/createVectorTilePolygons.js +384 -1
- package/dist/assets/cesium/Workers/createVectorTilePolylines.js +262 -1
- package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +568 -1
- package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +2277 -3
- package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +745 -1
- package/dist/assets/cesium/Workers/createWallGeometry.js +489 -1
- package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +337 -1
- package/dist/assets/cesium/Workers/decodeDraco.js +369 -1
- package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +2650 -1
- package/dist/assets/cesium/Workers/decodeI3S.js +835 -0
- package/dist/assets/cesium/Workers/transcodeKTX2.js +3425 -1
- package/dist/assets/cesium/Workers/transferTypedArrayTest.js +41 -1
- package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +818 -1
- package/dist/assets/cesium.4137c8.js +164897 -0
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/core.306872.js +19286 -0
- package/dist/assets/core.js +1 -1
- package/dist/assets/favicon-128.4c4ce5.png +0 -0
- package/dist/assets/favicon-180.5b99c0.png +0 -0
- package/dist/assets/favicon-192.0e205e.png +0 -0
- package/dist/assets/favicon-32.6b9add.png +0 -0
- package/dist/assets/favicon.d5ec97.svg +10 -0
- package/dist/assets/font/OFL.txt +93 -0
- package/dist/assets/font/TitilliumWeb-Regular.9ca076.woff2 +0 -0
- package/dist/assets/index-cfed33b1.js +1 -0
- package/dist/assets/ol.328bbf.js +60117 -0
- package/dist/assets/ol.js +1 -1
- package/dist/assets/style/icon-marker-blue.534e37.png +0 -0
- package/dist/assets/style/icon-marker-green.0b6a92.png +0 -0
- package/dist/assets/style/icon-marker-o-blue.7b6d62.png +0 -0
- package/dist/assets/style/icon-marker-o-green.c863c0.png +0 -0
- package/dist/assets/style/icon-marker-o-red.93ff58.png +0 -0
- package/dist/assets/style/icon-marker-o.036477.png +0 -0
- package/dist/assets/style/icon-marker-red.313d03.png +0 -0
- package/dist/assets/style/icon-marker.70960f.png +0 -0
- package/dist/assets/style/icon-pin-blue.7be369.png +0 -0
- package/dist/assets/style/icon-pin-green.cbb935.png +0 -0
- package/dist/assets/style/icon-pin-red.3f25b2.png +0 -0
- package/dist/assets/style/icon-pin.b7ce77.png +0 -0
- package/dist/assets/ui.e84ce9.css +5 -0
- package/dist/assets/ui.e84ce9.js +16488 -0
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue.1c8696.js +4911 -0
- package/dist/assets/vue.js +5 -1
- package/dist/assets/vuetify.008fac.css +5 -0
- package/dist/assets/vuetify.008fac.js +21262 -0
- package/dist/assets/vuetify.js +5 -2
- package/dist/index.html +90 -8
- package/index.html +111 -0
- package/index.js +203 -18
- package/lib/cesium.js +1 -1
- package/lib/core.js +1 -1
- package/lib/olLib.js +861 -843
- package/lib/ui.js +1 -1
- package/lib/vue.js +2 -1
- package/lib/vuetify.js +2 -2
- package/package.json +53 -34
- package/plugins/.eslintrc +9 -0
- package/plugins/@vcmap-show-case/README.md +28 -0
- package/plugins/@vcmap-show-case/buttons-example/README.md +4 -0
- package/plugins/@vcmap-show-case/buttons-example/package.json +5 -0
- package/plugins/@vcmap-show-case/buttons-example/src/ButtonsExample.vue +282 -0
- package/plugins/@vcmap-show-case/buttons-example/src/index.js +51 -0
- package/plugins/@vcmap-show-case/category-tester/README.md +3 -0
- package/plugins/@vcmap-show-case/category-tester/package.json +5 -0
- package/plugins/@vcmap-show-case/category-tester/src/CategoriesExample.vue +135 -0
- package/plugins/@vcmap-show-case/category-tester/src/CollectionComponentOptions.vue +209 -0
- package/plugins/@vcmap-show-case/category-tester/src/index.js +73 -0
- package/plugins/@vcmap-show-case/collection-manager-example/README.md +3 -0
- package/plugins/@vcmap-show-case/collection-manager-example/package.json +5 -0
- package/plugins/@vcmap-show-case/collection-manager-example/src/CollectionManagerExample.vue +182 -0
- package/plugins/@vcmap-show-case/collection-manager-example/src/index.js +79 -0
- package/plugins/@vcmap-show-case/config-editor/README.md +3 -0
- package/plugins/@vcmap-show-case/config-editor/package.json +5 -0
- package/plugins/@vcmap-show-case/config-editor/src/ConfigEditor.vue +62 -0
- package/plugins/@vcmap-show-case/config-editor/src/index.js +49 -0
- package/plugins/@vcmap-show-case/context-menu-tester/README.md +3 -0
- package/plugins/@vcmap-show-case/context-menu-tester/package.json +5 -0
- package/plugins/@vcmap-show-case/context-menu-tester/src/index.js +41 -0
- package/plugins/@vcmap-show-case/form-inputs-example/README.md +4 -0
- package/plugins/@vcmap-show-case/form-inputs-example/config.json +5 -0
- package/plugins/@vcmap-show-case/form-inputs-example/package.json +5 -0
- package/plugins/@vcmap-show-case/form-inputs-example/src/FormInputsExample.vue +516 -0
- package/plugins/@vcmap-show-case/form-inputs-example/src/exampleActions.js +36 -0
- package/plugins/{@vcmap/pluginExample → @vcmap-show-case/form-inputs-example/src}/index.js +123 -39
- package/plugins/{@vcmap/pluginExample → @vcmap-show-case/form-inputs-example/src}/validation.js +14 -2
- package/plugins/@vcmap-show-case/hello-world/README.md +31 -0
- package/plugins/@vcmap-show-case/hello-world/package.json +6 -0
- package/plugins/@vcmap-show-case/hello-world/plugin-assets/vcs_logo.png +0 -0
- package/plugins/@vcmap-show-case/hello-world/src/defaultOptions.js +4 -0
- package/plugins/@vcmap-show-case/hello-world/src/helloWorld.vue +69 -0
- package/plugins/@vcmap-show-case/hello-world/src/index.js +142 -0
- package/plugins/@vcmap-show-case/hello-world/tests/helloWorld.spec.js +53 -0
- package/plugins/@vcmap-show-case/icons-example/README.md +5 -0
- package/plugins/@vcmap-show-case/icons-example/package.json +5 -0
- package/plugins/@vcmap-show-case/icons-example/src/AllIconsComponent.vue +51 -0
- package/plugins/@vcmap-show-case/icons-example/src/index.js +46 -0
- package/plugins/@vcmap-show-case/list-example/README.md +3 -0
- package/plugins/@vcmap-show-case/list-example/package.json +5 -0
- package/plugins/@vcmap-show-case/list-example/src/ListExample.vue +411 -0
- package/plugins/@vcmap-show-case/list-example/src/index.js +46 -0
- package/plugins/@vcmap-show-case/notifier-tester/README.md +3 -0
- package/plugins/@vcmap-show-case/notifier-tester/package.json +5 -0
- package/plugins/@vcmap-show-case/notifier-tester/src/NotifierTester.vue +82 -0
- package/plugins/@vcmap-show-case/notifier-tester/src/index.js +42 -0
- package/plugins/@vcmap-show-case/plugin-editors/README.md +4 -0
- package/plugins/@vcmap-show-case/plugin-editors/package.json +5 -0
- package/plugins/@vcmap-show-case/plugin-editors/src/PluginEditors.vue +119 -0
- package/plugins/@vcmap-show-case/plugin-editors/src/index.js +41 -0
- package/plugins/@vcmap-show-case/project-selector/README.md +25 -0
- package/plugins/@vcmap-show-case/project-selector/config.json +15 -0
- package/plugins/@vcmap-show-case/project-selector/package.json +13 -0
- package/plugins/@vcmap-show-case/project-selector/src/ModulesListComponent.vue +65 -0
- package/plugins/@vcmap-show-case/project-selector/src/ProjectSelectorComponent.vue +102 -0
- package/plugins/@vcmap-show-case/project-selector/src/de.json +10 -0
- package/plugins/@vcmap-show-case/project-selector/src/en.json +10 -0
- package/plugins/@vcmap-show-case/project-selector/src/index.js +269 -0
- package/plugins/@vcmap-show-case/simple-graph/README.md +71 -0
- package/plugins/@vcmap-show-case/simple-graph/package.json +11 -0
- package/plugins/@vcmap-show-case/simple-graph/src/SimpleGraphComponent.vue +59 -0
- package/plugins/@vcmap-show-case/simple-graph/src/index.js +17 -0
- package/plugins/@vcmap-show-case/simple-graph/src/simpleGraphView.js +78 -0
- package/plugins/@vcmap-show-case/style-input-example/README.md +4 -0
- package/plugins/@vcmap-show-case/style-input-example/package.json +5 -0
- package/plugins/@vcmap-show-case/style-input-example/src/StyleExample.vue +190 -0
- package/plugins/@vcmap-show-case/style-input-example/src/index.js +42 -0
- package/plugins/@vcmap-show-case/switch-map-callback-example/README.md +21 -0
- package/plugins/@vcmap-show-case/switch-map-callback-example/config.json +3 -0
- package/plugins/@vcmap-show-case/switch-map-callback-example/package.json +5 -0
- package/plugins/@vcmap-show-case/switch-map-callback-example/src/index.js +34 -0
- package/plugins/@vcmap-show-case/switch-map-callback-example/src/switchMapCallback.js +47 -0
- package/plugins/@vcmap-show-case/table-example/README.md +3 -0
- package/plugins/@vcmap-show-case/table-example/package.json +5 -0
- package/plugins/@vcmap-show-case/table-example/src/DataTableExample.vue +182 -0
- package/plugins/@vcmap-show-case/table-example/src/index.js +49 -0
- package/plugins/@vcmap-show-case/textfields-example/README.md +3 -0
- package/plugins/@vcmap-show-case/textfields-example/package.json +5 -0
- package/plugins/{example/mySuperComponent.vue → @vcmap-show-case/textfields-example/src/TextfieldsExample.vue} +13 -31
- package/plugins/@vcmap-show-case/textfields-example/src/index.js +64 -0
- package/plugins/{@vcmap → @vcmap-show-case}/theme-changer/README.md +5 -3
- package/plugins/@vcmap-show-case/theme-changer/config.json +69 -0
- package/plugins/@vcmap-show-case/theme-changer/package.json +11 -0
- package/plugins/{@vcmap/theme-changer → @vcmap-show-case/theme-changer/src}/ThemeChangerComponent.vue +36 -8
- package/plugins/{@vcmap/theme-changer → @vcmap-show-case/theme-changer/src}/index.js +20 -14
- package/plugins/@vcmap-show-case/vector-properties-example/package.json +5 -0
- package/plugins/@vcmap-show-case/vector-properties-example/src/VectorPropertiesExample.vue +128 -0
- package/plugins/@vcmap-show-case/vector-properties-example/src/index.js +40 -0
- package/plugins/@vcmap-show-case/window-tester/README.md +3 -0
- package/plugins/@vcmap-show-case/window-tester/package.json +5 -0
- package/plugins/@vcmap-show-case/window-tester/src/EmptyComponent.vue +18 -0
- package/plugins/@vcmap-show-case/window-tester/src/MyCustomHeader.vue +31 -0
- package/plugins/@vcmap-show-case/window-tester/src/WindowExample.vue +185 -0
- package/plugins/@vcmap-show-case/window-tester/src/WindowExampleContent.vue +18 -0
- package/plugins/@vcmap-show-case/window-tester/src/WindowExampleToggleChild.vue +45 -0
- package/plugins/@vcmap-show-case/window-tester/src/index.js +80 -0
- package/plugins/@vcmap-show-case/window-tester/src/toolboxData.js +288 -0
- package/plugins/@vcmap-show-case/wizard-example/README.md +3 -0
- package/plugins/@vcmap-show-case/wizard-example/package.json +5 -0
- package/plugins/@vcmap-show-case/wizard-example/src/WizardExample.vue +127 -0
- package/plugins/@vcmap-show-case/wizard-example/src/index.js +53 -0
- package/plugins/package.json +9 -2
- package/public/assets/@mdi/font/LICENSE +20 -0
- package/public/assets/@mdi/font/css/materialdesignicons.css.map +16 -0
- package/public/assets/@mdi/font/css/materialdesignicons.min.css +3 -0
- package/public/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
- package/public/assets/favicon-128.png +0 -0
- package/public/assets/favicon-180.png +0 -0
- package/public/assets/favicon-192.png +0 -0
- package/public/assets/favicon-32.png +0 -0
- package/public/assets/favicon.svg +10 -0
- package/public/assets/font/OFL.txt +93 -0
- package/public/assets/font/TitilliumWeb-Regular.woff2 +0 -0
- package/public/assets/style/icon-marker-blue.png +0 -0
- package/public/assets/style/icon-marker-green.png +0 -0
- package/public/assets/style/icon-marker-o-blue.png +0 -0
- package/public/assets/style/icon-marker-o-green.png +0 -0
- package/public/assets/style/icon-marker-o-red.png +0 -0
- package/public/assets/style/icon-marker-o.png +0 -0
- package/public/assets/style/icon-marker-red.png +0 -0
- package/public/assets/style/icon-marker.png +0 -0
- package/public/assets/style/icon-pin-blue.png +0 -0
- package/public/assets/style/icon-pin-green.png +0 -0
- package/public/assets/style/icon-pin-red.png +0 -0
- package/public/assets/style/icon-pin.png +0 -0
- package/src/actions/StyleSelector.vue +121 -0
- package/src/actions/actionHelper.js +186 -50
- package/src/actions/stateRefAction.js +2 -3
- package/src/application/VcsApp.vue +539 -93
- package/src/application/VcsAppWrapper.vue +32 -0
- package/src/application/VcsAttributions.vue +83 -0
- package/src/application/VcsAttributionsFooter.vue +83 -0
- package/src/application/VcsMap.vue +22 -5
- package/src/application/VcsNavbar.vue +217 -0
- package/src/application/VcsSettings.vue +98 -0
- package/src/application/attributionsHelper.js +162 -0
- package/src/callback/activateLayersCallback.js +54 -0
- package/src/callback/applyLayerStyleCallback.js +63 -0
- package/src/callback/deactivateLayersCallback.js +54 -0
- package/src/callback/goToViewpointCallback.js +54 -0
- package/src/callback/vcsCallback.js +66 -0
- package/src/components/ImageElementInjector.vue +24 -0
- package/src/components/buttons/VcsActionButtonList.vue +129 -0
- package/src/components/buttons/VcsButton.vue +151 -0
- package/src/components/buttons/VcsFormButton.vue +178 -0
- package/src/components/buttons/VcsToolButton.vue +161 -0
- package/src/components/form-inputs-controls/VcsCheckbox.vue +115 -0
- package/src/components/form-inputs-controls/VcsChipArrayInput.vue +290 -0
- package/src/components/form-inputs-controls/VcsDatePicker.vue +156 -0
- package/src/components/form-inputs-controls/VcsFormSection.vue +150 -0
- package/src/components/form-inputs-controls/VcsLabel.vue +56 -0
- package/src/components/form-inputs-controls/VcsRadio.vue +149 -0
- package/src/components/form-inputs-controls/VcsRadioGrid.vue +175 -0
- package/src/components/form-inputs-controls/VcsSelect.vue +211 -0
- package/src/components/form-inputs-controls/VcsSlider.vue +73 -0
- package/src/components/form-inputs-controls/VcsTextArea.vue +180 -0
- package/src/components/form-inputs-controls/VcsTextField.vue +298 -0
- package/src/components/form-inputs-controls/VcsWizard.vue +137 -0
- package/src/components/form-inputs-controls/VcsWizardStep.vue +161 -0
- package/src/components/form-inputs-controls/composables.js +31 -0
- package/src/components/form-output/VcsFormattedNumber.vue +103 -0
- package/src/components/icons/+all.js +463 -0
- package/src/components/icons/2DAreaIcon.vue +58 -0
- package/src/components/icons/2DDistanceIcon.vue +24 -0
- package/src/components/icons/3DAreaIcon.vue +58 -0
- package/src/components/icons/3DDistanceIcon.vue +24 -0
- package/src/components/icons/3DHeightIcon.vue +24 -0
- package/src/components/icons/AngleIcon.vue +16 -0
- package/src/components/icons/AssociationsIcon.vue +37 -0
- package/src/components/icons/AxisIcon.vue +35 -0
- package/src/components/icons/BoundingBoxIcon.vue +38 -0
- package/src/components/icons/CheckboxCheckedIcon.vue +12 -0
- package/src/components/icons/CheckboxIcon.vue +21 -0
- package/src/components/icons/CheckboxIndeterminateIcon.vue +10 -0
- package/src/components/icons/CircleIcon.vue +25 -0
- package/src/components/icons/ClippingHorizontalIcon.vue +18 -0
- package/src/components/icons/ClippingIcon.vue +17 -0
- package/src/components/icons/ClippingVerticalIcon.vue +18 -0
- package/src/components/icons/ColorPickerIcon.vue +17 -0
- package/src/components/icons/ColorSwatchIcon.vue +21 -0
- package/src/components/icons/CommentIcon.vue +19 -0
- package/src/components/icons/CompassIcon.vue +24 -0
- package/src/components/icons/ComponentsIcon.vue +18 -0
- package/src/components/icons/ConeIcon.vue +30 -0
- package/src/components/icons/DimensionsHouseIcon.vue +20 -0
- package/src/components/icons/EditIcon.vue +17 -0
- package/src/components/icons/EditVerticesIcon.vue +35 -0
- package/src/components/icons/ElevationProfileIcon.vue +104 -0
- package/src/components/icons/ExportAreaIcon.vue +17 -0
- package/src/components/icons/ExportFlightIcon.vue +17 -0
- package/src/components/icons/ExportIcon.vue +24 -0
- package/src/components/icons/ExternalLinkIcon.vue +23 -0
- package/src/components/icons/EyeIcon.vue +17 -0
- package/src/components/icons/FastForwardIcon.vue +17 -0
- package/src/components/icons/FilterIcon.vue +18 -0
- package/src/components/icons/GlobalTerrainIcon.vue +19 -0
- package/src/components/icons/GlobeNatureIcon.vue +17 -0
- package/src/components/icons/GroundIcon.vue +27 -0
- package/src/components/icons/HealthCareIndustriesIcon.vue +113 -0
- package/src/components/icons/HelpIcon.vue +17 -0
- package/src/components/icons/HideIcon.vue +25 -0
- package/src/components/icons/HomePointIcon.vue +17 -0
- package/src/components/icons/HospitalsIcon.vue +223 -0
- package/src/components/icons/HouseIcon.vue +32 -0
- package/src/components/icons/ImportIcon.vue +18 -0
- package/src/components/icons/InfoIcon.vue +24 -0
- package/src/components/icons/KebabIcon.vue +38 -0
- package/src/components/icons/LabelIcon.vue +23 -0
- package/src/components/icons/LayersIcon.vue +28 -0
- package/src/components/icons/LegendIcon.vue +24 -0
- package/src/components/icons/LineIcon.vue +22 -0
- package/src/components/icons/LinkIcon.vue +17 -0
- package/src/components/icons/LogoutIcon.vue +17 -0
- package/src/components/icons/MapIcon.vue +18 -0
- package/src/components/icons/MenuIcon.vue +36 -0
- package/src/components/icons/MinusIcon.vue +18 -0
- package/src/components/icons/ObjectAttributeIcon.vue +18 -0
- package/src/components/icons/ObjectSelectIcon.vue +18 -0
- package/src/components/icons/ObliqueViewIcon.vue +19 -0
- package/src/components/icons/PdfIcon.vue +19 -0
- package/src/components/icons/PedestrianIcon.vue +17 -0
- package/src/components/icons/PenIcon.vue +16 -0
- package/src/components/icons/PlayCircleIcon.vue +20 -0
- package/src/components/icons/PlusIcon.vue +18 -0
- package/src/components/icons/PoiIcon.vue +23 -0
- package/src/components/icons/PointIcon.vue +40 -0
- package/src/components/icons/PointSelectIcon.vue +18 -0
- package/src/components/icons/PresentationModeIcon.vue +17 -0
- package/src/components/icons/ProgressIcon.vue +26 -0
- package/src/components/icons/QueryIcon.vue +39 -0
- package/src/components/icons/RectangleIcon.vue +24 -0
- package/src/components/icons/ReturnIcon.vue +17 -0
- package/src/components/icons/RewindIcon.vue +16 -0
- package/src/components/icons/RotateLeftIcon.vue +17 -0
- package/src/components/icons/RotateRightIcon.vue +17 -0
- package/src/components/icons/ScreenshotIcon.vue +53 -0
- package/src/components/icons/SearchIcon.vue +17 -0
- package/src/components/icons/ShadowIcon.vue +18 -0
- package/src/components/icons/ShapesIcon.vue +35 -0
- package/src/components/icons/ShareIcon.vue +22 -0
- package/src/components/icons/SimpleCircleFilledIcon.vue +18 -0
- package/src/components/icons/SimpleCircleHalfFilledIcon.vue +16 -0
- package/src/components/icons/SimpleCircleOutlinedIcon.vue +13 -0
- package/src/components/icons/SkipNextIcon.vue +18 -0
- package/src/components/icons/SkipPreviousIcon.vue +18 -0
- package/src/components/icons/SplitViewIcon.vue +19 -0
- package/src/components/icons/TerrainBoxIcon.vue +19 -0
- package/src/components/icons/TextStyleIcon.vue +17 -0
- package/src/components/icons/ThreeDimensionsIcon.vue +17 -0
- package/src/components/icons/ToolsIcon.vue +16 -0
- package/src/components/icons/TouchIcon.vue +18 -0
- package/src/components/icons/TrashCanIcon.vue +18 -0
- package/src/components/icons/TriangleIcon.vue +16 -0
- package/src/components/icons/TwoDimensionsIcon.vue +18 -0
- package/src/components/icons/UploadIcon.vue +17 -0
- package/src/components/icons/UserProfileIcon.vue +17 -0
- package/src/components/icons/UserShareIcon.vue +16 -0
- package/src/components/icons/VideoRecorderIcon.vue +23 -0
- package/src/components/icons/ViewpointFlightIcon.vue +28 -0
- package/src/components/icons/ViewpointIcon.vue +28 -0
- package/src/components/icons/Viewshed360Icon.vue +18 -0
- package/src/components/icons/ViewshedConeIcon.vue +17 -0
- package/src/components/icons/ViewshedIcon.vue +18 -0
- package/src/components/icons/WalkingIcon.vue +17 -0
- package/src/components/icons/WallIcon.vue +22 -0
- package/src/components/icons/WandIcon.vue +123 -0
- package/src/components/lists/VcsActionList.vue +132 -0
- package/src/components/lists/VcsList.vue +590 -0
- package/src/components/lists/VcsTreeview.vue +112 -0
- package/src/components/lists/VcsTreeviewLeaf.vue +81 -0
- package/src/components/lists/VcsTreeviewSearchbar.vue +148 -0
- package/src/components/notification/VcsBadge.vue +29 -0
- package/src/components/notification/VcsHelp.vue +39 -0
- package/src/components/notification/VcsTooltip.vue +160 -0
- package/src/components/notification/validation.js +19 -0
- package/src/components/plugins/AbstractConfigEditor.vue +84 -0
- package/src/components/style/MenuWrapper.vue +140 -0
- package/src/components/style/VcsFillMenu.vue +61 -0
- package/src/components/style/VcsFillSelector.vue +45 -0
- package/src/components/style/VcsImageMenu.vue +83 -0
- package/src/components/style/VcsImageSelector.vue +577 -0
- package/src/components/style/VcsStrokeMenu.vue +73 -0
- package/src/components/style/VcsStrokeSelector.vue +88 -0
- package/src/components/style/VcsTextMenu.vue +81 -0
- package/src/components/style/VcsTextSelector.vue +269 -0
- package/src/components/style/VcsVectorStyleComponent.vue +114 -0
- package/src/components/style/composables.js +84 -0
- package/src/components/tables/VcsDataTable.vue +475 -0
- package/src/components/tables/VcsTable.vue +145 -0
- package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +778 -0
- package/src/components/vector-properties/composables.js +93 -0
- package/src/contentTree/LayerTree.vue +19 -15
- package/src/contentTree/contentTreeCollection.js +114 -42
- package/src/contentTree/contentTreeItem.js +109 -43
- package/src/contentTree/groupContentTreeItem.js +46 -23
- package/src/contentTree/layerContentTreeItem.js +54 -23
- package/src/contentTree/layerGroupContentTreeItem.js +58 -26
- package/src/contentTree/nodeContentTreeItem.js +19 -8
- package/src/contentTree/obliqueCollectionContentTreeItem.js +51 -22
- package/src/contentTree/subContentTreeItem.js +14 -5
- package/src/contentTree/vcsObjectContentTreeItem.js +27 -16
- package/src/contentTree/viewpointContentTreeItem.js +121 -0
- package/src/downloadHelper.js +52 -0
- package/src/featureInfo/AddressBalloonComponent.vue +58 -0
- package/src/featureInfo/BalloonComponent.vue +193 -0
- package/src/featureInfo/abstractFeatureInfoView.js +346 -0
- package/src/featureInfo/addressBalloonFeatureInfoView.js +130 -0
- package/src/featureInfo/balloonFeatureInfoView.js +159 -0
- package/src/featureInfo/balloonHelper.js +172 -0
- package/src/featureInfo/featureInfo.js +525 -0
- package/src/featureInfo/featureInfoInteraction.js +48 -0
- package/src/featureInfo/iframeFeatureInfoView.js +97 -0
- package/src/featureInfo/tableFeatureInfoView.js +120 -0
- package/src/i18n/de.js +195 -0
- package/src/i18n/en.js +195 -0
- package/src/i18n/i18nCollection.js +137 -0
- package/src/init.js +121 -36
- package/src/legend/StyleLegendItem.vue +176 -0
- package/src/legend/VcsLegend.vue +140 -0
- package/src/legend/legendHelper.js +204 -0
- package/src/logo-mobile.svg +9 -0
- package/src/logo.svg +26 -0
- package/src/manager/buttonManager.js +30 -61
- package/src/manager/collectionManager/CollectionComponent.vue +140 -0
- package/src/manager/collectionManager/CollectionComponentList.vue +77 -0
- package/src/manager/collectionManager/CollectionComponentProvider.vue +39 -0
- package/src/manager/collectionManager/CollectionManager.vue +62 -0
- package/src/manager/collectionManager/categoryManager.js +83 -0
- package/src/manager/collectionManager/collectionComponent.js +470 -0
- package/src/manager/collectionManager/collectionManager.js +432 -0
- package/src/manager/contextMenu/ContextMenuComponent.vue +43 -0
- package/src/manager/contextMenu/contextMenuInteraction.js +47 -0
- package/src/manager/contextMenu/contextMenuManager.js +220 -0
- package/src/manager/navbarManager.js +115 -0
- package/src/manager/toolbox/GroupToolboxComponent.vue +128 -0
- package/src/manager/toolbox/SelectToolboxComponent.vue +144 -0
- package/src/manager/toolbox/ToolboxManager.vue +139 -74
- package/src/manager/toolbox/toolboxManager.js +371 -0
- package/src/manager/window/WindowComponent.vue +105 -85
- package/src/manager/window/WindowComponentHeader.vue +116 -25
- package/src/manager/window/WindowManager.vue +133 -50
- package/src/manager/window/windowHelper.js +465 -0
- package/src/manager/window/windowManager.js +297 -91
- package/src/navigation/{mapNavCompass.vue → MapNavCompass.vue} +31 -11
- package/src/navigation/MapNavigation.vue +291 -0
- package/src/navigation/ObliqueRotation.vue +69 -0
- package/src/navigation/{orientationToolsButton.vue → OrientationToolsButton.vue} +14 -13
- package/src/navigation/{tiltSlider.vue → TiltSlider.vue} +40 -17
- package/src/navigation/VcsCompass.vue +69 -0
- package/src/navigation/VcsZoomButton.vue +52 -0
- package/src/navigation/overviewMap.js +142 -104
- package/src/navigation/overviewMapClickedInteraction.js +6 -1
- package/src/notifier/NotifierComponent.vue +86 -0
- package/src/notifier/notifier.js +129 -0
- package/src/pluginHelper.js +148 -20
- package/src/search/ResultItem.vue +83 -0
- package/src/search/ResultsComponent.vue +103 -0
- package/src/search/SearchComponent.vue +116 -0
- package/src/search/search.js +342 -0
- package/src/setup.js +9 -10
- package/src/state.js +272 -0
- package/src/styles/_theming.scss +69 -11
- package/src/styles/_typography.scss +3 -6
- package/src/styles/main.scss +12 -0
- package/src/styles/shades.scss +4 -0
- package/src/styles/utils/_border.scss +1 -1
- package/src/styles/utils/_cursor.scss +4 -0
- package/src/styles/utils/_display.scss +1 -1
- package/src/styles/variables.scss +138 -0
- package/src/styles/vcsFont.scss +2 -0
- package/src/styles/vcsGrid.scss +13 -0
- package/src/uiConfig.js +83 -0
- package/src/vcsUiApp.js +510 -69
- package/src/vuePlugins/i18n.js +51 -13
- package/src/vuePlugins/vuetify.js +104 -43
- package/config/berlin.config.json +0 -529
- package/dist/assets/cesium/Workers/ArcType-fc72c06c.js +0 -1
- package/dist/assets/cesium/Workers/AttributeCompression-80665726.js +0 -1
- package/dist/assets/cesium/Workers/AxisAlignedBoundingBox-a655a4bc.js +0 -1
- package/dist/assets/cesium/Workers/BoundingRectangle-c3b79029.js +0 -1
- package/dist/assets/cesium/Workers/BoxGeometry-f8f9c981.js +0 -1
- package/dist/assets/cesium/Workers/Color-de06a177.js +0 -1
- package/dist/assets/cesium/Workers/ComponentDatatype-a15c9a19.js +0 -1
- package/dist/assets/cesium/Workers/CoplanarPolygonGeometryLibrary-48cdc26d.js +0 -1
- package/dist/assets/cesium/Workers/CorridorGeometryLibrary-ddc027d3.js +0 -1
- package/dist/assets/cesium/Workers/CylinderGeometry-82a8cbe6.js +0 -1
- package/dist/assets/cesium/Workers/CylinderGeometryLibrary-76cda53e.js +0 -1
- package/dist/assets/cesium/Workers/EllipseGeometry-32d55454.js +0 -1
- package/dist/assets/cesium/Workers/EllipseGeometryLibrary-b2ae188a.js +0 -1
- package/dist/assets/cesium/Workers/EllipseOutlineGeometry-f05a5a27.js +0 -1
- package/dist/assets/cesium/Workers/EllipsoidGeodesic-19e75e11.js +0 -1
- package/dist/assets/cesium/Workers/EllipsoidGeometry-7c99fc81.js +0 -1
- package/dist/assets/cesium/Workers/EllipsoidOutlineGeometry-21c243df.js +0 -1
- package/dist/assets/cesium/Workers/EllipsoidRhumbLine-6145377b.js +0 -1
- package/dist/assets/cesium/Workers/EllipsoidTangentPlane-a01286f6.js +0 -1
- package/dist/assets/cesium/Workers/EncodedCartesian3-d9f5c4a4.js +0 -1
- package/dist/assets/cesium/Workers/FrustumGeometry-17776af8.js +0 -1
- package/dist/assets/cesium/Workers/GeometryAttribute-89a520b9.js +0 -1
- package/dist/assets/cesium/Workers/GeometryAttributes-32b29525.js +0 -1
- package/dist/assets/cesium/Workers/GeometryInstance-4fbf16ba.js +0 -1
- package/dist/assets/cesium/Workers/GeometryOffsetAttribute-8c5e10db.js +0 -1
- package/dist/assets/cesium/Workers/GeometryPipeline-309fad76.js +0 -1
- package/dist/assets/cesium/Workers/IndexDatatype-f1dcdf35.js +0 -1
- package/dist/assets/cesium/Workers/IntersectionTests-58aa8f80.js +0 -1
- package/dist/assets/cesium/Workers/Matrix2-47e98d76.js +0 -1
- package/dist/assets/cesium/Workers/OrientedBoundingBox-fcb5b750.js +0 -1
- package/dist/assets/cesium/Workers/Plane-3f01019d.js +0 -1
- package/dist/assets/cesium/Workers/PolygonGeometryLibrary-0b29eb16.js +0 -1
- package/dist/assets/cesium/Workers/PolygonPipeline-a934c4dd.js +0 -1
- package/dist/assets/cesium/Workers/PolylinePipeline-8095c9bc.js +0 -1
- package/dist/assets/cesium/Workers/PolylineVolumeGeometryLibrary-67d12fff.js +0 -1
- package/dist/assets/cesium/Workers/PrimitivePipeline-980e44c5.js +0 -1
- package/dist/assets/cesium/Workers/RectangleGeometryLibrary-621c6de8.js +0 -1
- package/dist/assets/cesium/Workers/RuntimeError-8952249c.js +0 -1
- package/dist/assets/cesium/Workers/TerrainEncoding-f96552d5.js +0 -1
- package/dist/assets/cesium/Workers/Transforms-c8cb8f43.js +0 -39
- package/dist/assets/cesium/Workers/VertexFormat-a0b706b0.js +0 -1
- package/dist/assets/cesium/Workers/WallGeometryLibrary-c03d8479.js +0 -1
- package/dist/assets/cesium/Workers/WebGLConstants-508b9636.js +0 -1
- package/dist/assets/cesium/Workers/WebMercatorProjection-79b3214e.js +0 -1
- package/dist/assets/cesium/Workers/_commonjsHelpers-3aae1032-26891ab7.js +0 -1
- package/dist/assets/cesium/Workers/_rollup_plugin_ignore_empty_module_placeholder-57d574d0.js +0 -1
- package/dist/assets/cesium/Workers/arrayRemoveDuplicates-dc2f4046.js +0 -1
- package/dist/assets/cesium/Workers/cesiumWorkerBootstrapper.js +0 -6
- package/dist/assets/cesium/Workers/combine-3c023bda.js +0 -1
- package/dist/assets/cesium/Workers/defaultValue-81eec7ed.js +0 -1
- package/dist/assets/cesium.6b5bb6.js +0 -9105
- package/dist/assets/core.98f9bb.js +0 -4
- package/dist/assets/index.0be2842f.js +0 -1
- package/dist/assets/index.60dea538.css +0 -1
- package/dist/assets/ol.0561aa.js +0 -318
- package/dist/assets/ui.b7c1e3.css +0 -1
- package/dist/assets/ui.b7c1e3.js +0 -39
- package/dist/assets/uicomponents.682c5f.css +0 -1
- package/dist/assets/uicomponents.682c5f.js +0 -32
- package/dist/assets/uicomponents.js +0 -1
- package/dist/assets/vue-composition-api.f926fa.js +0 -14
- package/dist/assets/vue-composition-api.js +0 -2
- package/dist/assets/vue.ddcb6b.js +0 -9
- package/dist/assets/vuetify.d21163.css +0 -5
- package/dist/assets/vuetify.d21163.js +0 -48
- package/lib/uicomponents.js +0 -1
- package/lib/vue-composition-api.js +0 -2
- package/map.config.json +0 -35
- package/plugins/@vcmap/pluginExample/config.json +0 -6
- package/plugins/@vcmap/pluginExample/package.json +0 -7
- package/plugins/@vcmap/pluginExample/pluginExampleComponent.vue +0 -374
- package/plugins/@vcmap/project-selector/ContextsListComponent.vue +0 -62
- package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +0 -81
- package/plugins/@vcmap/project-selector/README.md +0 -29
- package/plugins/@vcmap/project-selector/config.json +0 -15
- package/plugins/@vcmap/project-selector/index.js +0 -254
- package/plugins/@vcmap/project-selector/package.json +0 -15
- package/plugins/@vcmap/theme-changer/config.json +0 -69
- package/plugins/@vcmap/theme-changer/package.json +0 -12
- package/plugins/buttonExamples/ButtonExamples.vue +0 -190
- package/plugins/buttonExamples/index.js +0 -40
- package/plugins/categoryTest/Categories.vue +0 -145
- package/plugins/categoryTest/Category.vue +0 -114
- package/plugins/categoryTest/ItemEditor.vue +0 -13
- package/plugins/categoryTest/index.js +0 -41
- package/plugins/example/index.js +0 -56
- package/plugins/test/editor.vue +0 -63
- package/plugins/test/index.js +0 -93
- package/plugins/test/myCustomHeader.vue +0 -19
- package/plugins/test/toolbox-data.js +0 -49
- package/plugins/test/vcsContent.vue +0 -23
- package/plugins/test/windowManagerExample.vue +0 -144
- package/src/actions/styleSelector.vue +0 -90
- package/src/application/Navbar.vue +0 -118
- package/src/application/empty-cmp.vue +0 -6
- package/src/assets/logo.svg +0 -26
- package/src/contentTree/viewPointContentTreeItem.js +0 -107
- package/src/lang/de.js +0 -60
- package/src/lang/en.js +0 -53
- package/src/manager/toolbox/ToolboxMultiSelectButton.vue +0 -96
- package/src/manager/toolbox/ToolboxSingleSelectButton.vue +0 -98
- package/src/manager/toolbox/toolbox-manager.js +0 -203
- package/src/navigation/mapNavigation.vue +0 -201
- package/src/navigation/obliqueRotation.vue +0 -48
- package/src/navigation/vcsCompass.vue +0 -144
- package/src/navigation/vcsZoomButton.vue +0 -27
- package/start.js +0 -3
@@ -1,4 +1,4 @@
|
|
1
|
-
import { reactive, ref } from '
|
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';
|
@@ -8,46 +8,55 @@ import { vcsAppSymbol } from '../../pluginHelper.js';
|
|
8
8
|
/**
|
9
9
|
* @readonly
|
10
10
|
* @enum {string}
|
11
|
-
* @property {string} STATIC
|
12
|
-
* @property {string} DYNAMIC_LEFT
|
13
|
-
* @property {string} DYNAMIC_RIGHT
|
14
|
-
* @property {string}
|
11
|
+
* @property {string} STATIC - Static windows cannot be moved and will be positioned top-left.
|
12
|
+
* @property {string} DYNAMIC_LEFT - Positioned top-left, if no static window is present. Can be moved by user interaction.
|
13
|
+
* @property {string} DYNAMIC_RIGHT - Positioned top-right. Can be moved by user interaction.
|
14
|
+
* @property {string} DYNAMIC_CHILD - Positioned top-right of a parent window. Can be moved by user interaction. Will be moved with parent window, if docked. Requires parentId.
|
15
|
+
* @property {string} DETACHED - Positioned at initial provided position. Can be moved by user interaction.
|
15
16
|
*/
|
16
17
|
export const WindowSlot = {
|
17
18
|
STATIC: 'static',
|
18
19
|
DYNAMIC_LEFT: 'dynamicLeft',
|
19
20
|
DYNAMIC_RIGHT: 'dynamicRight',
|
21
|
+
DYNAMIC_CHILD: 'dynamicChild',
|
20
22
|
DETACHED: 'detached',
|
21
23
|
};
|
22
24
|
|
23
|
-
|
24
25
|
/**
|
25
|
-
* @typedef WindowPositionOptions
|
26
|
+
* @typedef {Object} WindowPositionOptions
|
26
27
|
* @property {string|number|undefined} left Can be a css position string (e.g. '320px' or '50%') number values are treated as `px` values
|
27
28
|
* @property {string|number|undefined} top Can be a css position string (e.g. '320px' or '50%') number values are treated as `px` values
|
28
29
|
* @property {string|number|undefined} right Can be a css position string (e.g. '320px' or '50%') number values are treated as `px` values
|
29
30
|
* @property {string|number|undefined} bottom Can be a css position string (e.g. '320px' or '50%') number values are treated as `px` values
|
30
|
-
* @property {string|number|undefined} width Can be a css position string (e.g. '320px') number values are treated as `px` values
|
31
|
-
* @property {string|number|undefined} height Can be
|
31
|
+
* @property {string|number|undefined} width Can be a css position string (e.g. '320px' or '50%') number values are treated as `px` values
|
32
|
+
* @property {string|number|undefined} height Can be a css position string (e.g. '320px' or '50%') number values are treated as `px` values
|
33
|
+
* @property {string|number|undefined} maxHeight Can be a css position string (e.g. '320px' or '50%') number values are treated as `px` values
|
34
|
+
* @property {string|number|undefined} maxWidth Can be a css position string (e.g. '320px' or '50%') number values are treated as `px` values
|
35
|
+
* @property {string|number|undefined} minHeight Can be a css position string (e.g. '320px' or '50%') number values are treated as `px` values
|
36
|
+
* @property {string|number|undefined} minWidth Can be a css position string (e.g. '320px' or '50%') number values are treated as `px` values
|
32
37
|
*/
|
33
38
|
|
34
39
|
/**
|
35
|
-
* @typedef WindowPosition
|
36
|
-
* @property {string} left -
|
37
|
-
* @property {string} top -
|
38
|
-
* @property {string} right -
|
39
|
-
* @property {string} bottom -
|
40
|
-
* @property {string} width
|
41
|
-
* @property {string} height
|
40
|
+
* @typedef {Object} WindowPosition
|
41
|
+
* @property {string} left - The left CSS property participates in specifying the horizontal position of a window.
|
42
|
+
* @property {string} top - The top CSS property participates in specifying the vertical position of a window.
|
43
|
+
* @property {string} right - The right CSS property participates in specifying the horizontal position of a window.
|
44
|
+
* @property {string} bottom - The bottom CSS property participates in specifying the vertical position of a window.
|
45
|
+
* @property {string} width - The width CSS property sets an element's width.
|
46
|
+
* @property {string} height - The height CSS property sets an element's height.
|
47
|
+
* @property {string} [maxHeight] - It prevents the used value of the height property from becoming larger than the value specified for max-height. (max is target height, will be automatically updated)
|
48
|
+
* @property {string} [maxWidth] - It prevents the used value of the width property from becoming larger than the value specified by max-width. (max is target width, will be automatically updated)
|
49
|
+
* @property {string} [minHeight] - It prevents the used value of the height property from becoming smaller than the value specified for min-height.
|
50
|
+
* @property {string} [minWidth] - It prevents the used value of the width property from becoming smaller than the value specified for min-width.
|
42
51
|
*/
|
43
52
|
|
44
53
|
/**
|
45
54
|
* @readonly
|
46
|
-
* @enum {
|
47
|
-
* @property {
|
48
|
-
* @property {
|
49
|
-
* @property {
|
50
|
-
* @property {
|
55
|
+
* @enum {WindowPosition}
|
56
|
+
* @property {WindowPosition} TOP_LEFT position of the DYNAMIC_LEFT or STATIC Slot
|
57
|
+
* @property {WindowPosition} TOP_LEFT2 position of the DYNAMIC_LEFT Slot if a STATIC is present
|
58
|
+
* @property {WindowPosition} TOP_RIGHT position of the DYNAMIC_RIGHT Slot
|
59
|
+
* @property {WindowPosition} DETACHED default position of DETACHED Windows if no position is given
|
51
60
|
* @private
|
52
61
|
*/
|
53
62
|
export const WindowPositions = {
|
@@ -56,7 +65,7 @@ export const WindowPositions = {
|
|
56
65
|
top: '0px',
|
57
66
|
},
|
58
67
|
TOP_LEFT2: {
|
59
|
-
left: '
|
68
|
+
left: '322px', // 2px space
|
60
69
|
top: '0px',
|
61
70
|
},
|
62
71
|
TOP_RIGHT: {
|
@@ -69,15 +78,40 @@ export const WindowPositions = {
|
|
69
78
|
},
|
70
79
|
};
|
71
80
|
|
81
|
+
/**
|
82
|
+
* Return true, if all values of pos1 match with the corresponding values of pos2
|
83
|
+
* @param {WindowPosition} pos1
|
84
|
+
* @param {WindowPosition} pos2
|
85
|
+
* @returns {boolean}
|
86
|
+
*/
|
87
|
+
export function compareWindowPositions(pos1, pos2) {
|
88
|
+
return !Object.keys(pos1).some((key) => pos1[key] !== pos2[key]);
|
89
|
+
}
|
90
|
+
|
91
|
+
/**
|
92
|
+
* Returns true, if the provided position is a slot position
|
93
|
+
* @param {WindowPosition} windowPosition
|
94
|
+
* @returns {boolean}
|
95
|
+
*/
|
96
|
+
export function isSlotPosition(windowPosition) {
|
97
|
+
return [
|
98
|
+
WindowPositions.TOP_LEFT,
|
99
|
+
WindowPositions.TOP_LEFT2,
|
100
|
+
WindowPositions.TOP_RIGHT,
|
101
|
+
].some((s) => compareWindowPositions(s, windowPosition));
|
102
|
+
}
|
103
|
+
|
72
104
|
/**
|
73
105
|
* @typedef WindowComponentOptions
|
74
|
-
* @property {string} [id] Optional ID, If not provided
|
75
|
-
* @property {
|
76
|
-
* @property {
|
77
|
-
* @property {
|
106
|
+
* @property {string} [id] Optional ID, If not provided an uuid will be generated.
|
107
|
+
* @property {string} [parentId] An optional ID of a parent window for 'dynamicChild' slot. Parent windows with slot dynamicRight are not supported.
|
108
|
+
* @property {import("vue").Component} component Main Component which is shown below the header.
|
109
|
+
* @property {import("vue").Component} [headerComponent] Replaces the Header Component.
|
78
110
|
* @property {WindowState} [state]
|
79
|
-
* @property {
|
111
|
+
* @property {WindowPositionOptions} [position] Will be merged with default position for slot
|
112
|
+
* @property {WindowSlot} [slot]
|
80
113
|
* @property {Object} [props]
|
114
|
+
* @property {Object} [provides]
|
81
115
|
*/
|
82
116
|
|
83
117
|
/**
|
@@ -85,28 +119,39 @@ export const WindowPositions = {
|
|
85
119
|
* @property {string} id
|
86
120
|
* @property {string|vcsAppSymbol} owner Owner of the window, set by windowManager on add
|
87
121
|
* @property {boolean} [hideHeader] be used to not show the header.
|
88
|
-
* @property {
|
122
|
+
* @property {boolean} [hidePin] be used to not show the pin button.
|
123
|
+
* @property {string|string[]} [headerTitle] An optional translatable header. If an array is provided all elements are translated and joined afterward.
|
89
124
|
* @property {string} [headerIcon]
|
90
|
-
* @property {
|
125
|
+
* @property {Array<VcsAction>} [headerActions]
|
126
|
+
* @property {number} [headerActionsOverflow]
|
127
|
+
* @property {string} [infoUrl] An optional url referencing help or further information on the window's content.
|
128
|
+
* @property {function():string} [infoUrlCallback] An optional function returning an url referencing help or further information. Can be used for urls depending on the app's locale, e.g. app.getHelpUrl()
|
129
|
+
* @property {boolean} [dockable] Auto derived from hidePin, current slot, current position and initial position.
|
130
|
+
* @property {Object<string, string>} [styles] Can be used to add additional styles to the root WindowComponent. Use Vue Style Bindings Object Syntax https://vuejs.org/v2/guide/class-and-style.html
|
91
131
|
* @property {Array<string>|Object<string,string>} [classes] Can be used to add additional classes to the root WindowComponent. Use Vue Class Bindings Syntax https://vuejs.org/v2/guide/class-and-style.html
|
92
132
|
*/
|
93
133
|
|
94
134
|
/**
|
95
135
|
* @typedef WindowComponent
|
96
136
|
* @property {string} id
|
97
|
-
* @property {
|
98
|
-
* @property {
|
99
|
-
* @property {
|
137
|
+
* @property {string} [parentId]
|
138
|
+
* @property {import("vue").Component} component
|
139
|
+
* @property {import("vue").Component} [headerComponent]
|
100
140
|
* @property {WindowState} state
|
101
|
-
* @property {
|
141
|
+
* @property {WindowPosition} [position]
|
142
|
+
* @property {WindowPositionOptions} initialPositionOptions
|
143
|
+
* @property {import("vue").Ref<WindowSlot>} slot
|
144
|
+
* @property {WindowSlot} initialSlot
|
102
145
|
* @property {Object} props
|
146
|
+
* @property {Object} provides
|
147
|
+
* @property {import("vue").ComputedGetter<number>} zIndex
|
103
148
|
*/
|
104
149
|
|
105
150
|
/**
|
106
151
|
* @param {string|number|undefined} pos
|
107
152
|
* @returns {string|undefined}
|
108
153
|
*/
|
109
|
-
function
|
154
|
+
export function posToPixel(pos) {
|
110
155
|
if (typeof pos === 'number') {
|
111
156
|
return `${pos}px`;
|
112
157
|
}
|
@@ -114,17 +159,21 @@ function parsePosition(pos) {
|
|
114
159
|
}
|
115
160
|
|
116
161
|
/**
|
162
|
+
* Returns CSS position string properties
|
117
163
|
* @param {WindowPositionOptions} windowPositionOptions
|
118
164
|
* @param {WindowPosition=} windowPosition
|
119
165
|
* @returns {WindowPosition}
|
120
166
|
*/
|
121
|
-
export function windowPositionFromOptions(
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
let
|
167
|
+
export function windowPositionFromOptions(
|
168
|
+
windowPositionOptions,
|
169
|
+
windowPosition = {},
|
170
|
+
) {
|
171
|
+
let left = posToPixel(windowPositionOptions.left) || 'unset';
|
172
|
+
const right = posToPixel(windowPositionOptions.right) || 'unset';
|
173
|
+
let top = posToPixel(windowPositionOptions.top) || 'unset';
|
174
|
+
const bottom = posToPixel(windowPositionOptions.bottom) || 'unset';
|
175
|
+
let width = posToPixel(windowPositionOptions.width) || 'auto';
|
176
|
+
let height = posToPixel(windowPositionOptions.height) || 'auto';
|
128
177
|
if (left !== 'unset' && right !== 'unset') {
|
129
178
|
width = 'auto'; // left + right takes precedence over configured width
|
130
179
|
} else if (width === 'auto') {
|
@@ -147,23 +196,50 @@ export function windowPositionFromOptions(windowPositionOptions, windowPosition
|
|
147
196
|
width,
|
148
197
|
height,
|
149
198
|
};
|
199
|
+
if (windowPositionOptions.maxWidth) {
|
200
|
+
result.maxWidth = posToPixel(windowPositionOptions.maxWidth);
|
201
|
+
}
|
202
|
+
if (windowPositionOptions.maxHeight) {
|
203
|
+
result.maxHeight = posToPixel(windowPositionOptions.maxHeight);
|
204
|
+
}
|
205
|
+
if (windowPositionOptions.minHeight) {
|
206
|
+
result.minHeight = posToPixel(windowPositionOptions.minHeight);
|
207
|
+
}
|
208
|
+
if (windowPositionOptions.minWidth) {
|
209
|
+
result.minWidth = posToPixel(windowPositionOptions.minWidth);
|
210
|
+
}
|
211
|
+
|
150
212
|
return Object.assign(windowPosition, result);
|
151
213
|
}
|
152
214
|
|
153
215
|
/**
|
154
|
-
*
|
155
|
-
* @param {
|
156
|
-
* @param {
|
157
|
-
* @param {string|HTMLElement} [element='mapElement']
|
158
|
-
* @returns {WindowPositionOptions}
|
216
|
+
* Sets a position on a component. Updates dockable state.
|
217
|
+
* @param {WindowComponent} windowComponent
|
218
|
+
* @param {WindowPositionOptions} windowPositionOptions
|
159
219
|
*/
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
220
|
+
function setWindowPosition(windowComponent, windowPositionOptions) {
|
221
|
+
const windowPosition = windowPositionFromOptions(
|
222
|
+
windowPositionOptions,
|
223
|
+
windowComponent.position,
|
224
|
+
);
|
225
|
+
// not one of the default Positions, so we also have to DETACH the windowState.
|
226
|
+
if (!isSlotPosition(windowPosition)) {
|
227
|
+
windowComponent.slot.value = WindowSlot.DETACHED;
|
228
|
+
}
|
229
|
+
// check dockable state
|
230
|
+
const initialWindowPosition = windowPositionFromOptions(
|
231
|
+
windowComponent.initialPositionOptions,
|
232
|
+
);
|
233
|
+
const isInitialPosition = compareWindowPositions(
|
234
|
+
windowPosition,
|
235
|
+
initialWindowPosition,
|
236
|
+
);
|
237
|
+
windowComponent.state.dockable =
|
238
|
+
windowComponent.slot.value === WindowSlot.DETACHED && !isInitialPosition;
|
239
|
+
|
240
|
+
if (isInitialPosition) {
|
241
|
+
windowComponent.slot.value = windowComponent.initialSlot;
|
164
242
|
}
|
165
|
-
const { left, top } = mapElement.getBoundingClientRect();
|
166
|
-
return { left: x - left, top: y - top };
|
167
243
|
}
|
168
244
|
|
169
245
|
/**
|
@@ -171,7 +247,7 @@ export function getWindowPositionOptions(x, y, element = 'mapElement') {
|
|
171
247
|
* @description Manages a set of Draggable Windows
|
172
248
|
* @implements VcsComponentManager<WindowComponent,WindowComponentOptions>
|
173
249
|
*/
|
174
|
-
|
250
|
+
class WindowManager {
|
175
251
|
constructor() {
|
176
252
|
/**
|
177
253
|
* @type {import("@vcmap/core").VcsEvent<WindowComponent>}
|
@@ -185,13 +261,23 @@ export class WindowManager {
|
|
185
261
|
* reactive ordered array of ids,
|
186
262
|
* @type {Array<string>}
|
187
263
|
*/
|
188
|
-
this.componentIds =
|
264
|
+
this.componentIds = [];
|
265
|
+
/**
|
266
|
+
* reactive ordered array of ids, defining the zIndex of a component
|
267
|
+
* @type {import("vue").Ref<Array<string>>}
|
268
|
+
*/
|
269
|
+
this._zIndices = ref([]);
|
189
270
|
|
190
271
|
/**
|
191
272
|
* @type {Map<string, WindowComponent>}
|
192
273
|
* @private
|
193
274
|
*/
|
194
275
|
this._windowComponents = new Map();
|
276
|
+
/**
|
277
|
+
* @type {Map<string, WindowPosition>}
|
278
|
+
* @private
|
279
|
+
*/
|
280
|
+
this._windowPositionsCache = new Map();
|
195
281
|
}
|
196
282
|
|
197
283
|
/**
|
@@ -199,10 +285,7 @@ export class WindowManager {
|
|
199
285
|
* @returns {WindowComponent}
|
200
286
|
*/
|
201
287
|
get(id) {
|
202
|
-
|
203
|
-
return this._windowComponents.get(id);
|
204
|
-
}
|
205
|
-
return undefined;
|
288
|
+
return this._windowComponents.get(id);
|
206
289
|
}
|
207
290
|
|
208
291
|
/**
|
@@ -219,13 +302,21 @@ export class WindowManager {
|
|
219
302
|
* @param {string} id
|
220
303
|
*/
|
221
304
|
remove(id) {
|
305
|
+
check(id, String);
|
222
306
|
const windowComponent = this._windowComponents.get(id);
|
223
307
|
if (windowComponent) {
|
224
|
-
|
225
|
-
this.componentIds.splice(
|
308
|
+
this._cachePosition(windowComponent);
|
309
|
+
this.componentIds.splice(this.componentIds.indexOf(id), 1);
|
310
|
+
this._zIndices.value.splice(this._zIndices.value.indexOf(id), 1);
|
226
311
|
this._windowComponents.delete(id);
|
227
312
|
this._handleSlotsChanged(windowComponent.slot.value);
|
228
313
|
this.removed.raiseEvent(windowComponent);
|
314
|
+
const child = Array.from(this._windowComponents.values()).find(
|
315
|
+
({ parentId }) => id === parentId,
|
316
|
+
);
|
317
|
+
if (child) {
|
318
|
+
this.remove(child.id);
|
319
|
+
}
|
229
320
|
}
|
230
321
|
}
|
231
322
|
|
@@ -236,14 +327,7 @@ export class WindowManager {
|
|
236
327
|
setWindowPositionOptions(id, windowPositionOptions) {
|
237
328
|
const windowComponent = this._windowComponents.get(id);
|
238
329
|
if (windowComponent) {
|
239
|
-
|
240
|
-
windowPositionOptions === WindowPositions.TOP_LEFT2 ||
|
241
|
-
windowPositionOptions === WindowPositions.TOP_RIGHT;
|
242
|
-
// not one of the default Positions, so we also have to DETACH the windowState.
|
243
|
-
if (!isSlotPosition) {
|
244
|
-
windowComponent.slot.value = WindowSlot.DETACHED;
|
245
|
-
}
|
246
|
-
windowPositionFromOptions(windowPositionOptions, windowComponent.position);
|
330
|
+
setWindowPosition(windowComponent, windowPositionOptions);
|
247
331
|
}
|
248
332
|
}
|
249
333
|
|
@@ -258,9 +342,15 @@ export class WindowManager {
|
|
258
342
|
const staticWindow = this._findWindowBySlot(WindowSlot.STATIC);
|
259
343
|
const dynamicWindowLeft = this._findWindowBySlot(WindowSlot.DYNAMIC_LEFT);
|
260
344
|
if (staticWindow && dynamicWindowLeft) {
|
261
|
-
this.setWindowPositionOptions(dynamicWindowLeft.id,
|
345
|
+
this.setWindowPositionOptions(dynamicWindowLeft.id, {
|
346
|
+
...dynamicWindowLeft.position,
|
347
|
+
...WindowPositions.TOP_LEFT2,
|
348
|
+
});
|
262
349
|
} else if (!staticWindow && dynamicWindowLeft) {
|
263
|
-
this.setWindowPositionOptions(dynamicWindowLeft.id,
|
350
|
+
this.setWindowPositionOptions(dynamicWindowLeft.id, {
|
351
|
+
...dynamicWindowLeft.position,
|
352
|
+
...WindowPositions.TOP_LEFT,
|
353
|
+
});
|
264
354
|
}
|
265
355
|
}
|
266
356
|
}
|
@@ -271,7 +361,9 @@ export class WindowManager {
|
|
271
361
|
* @private
|
272
362
|
*/
|
273
363
|
_findWindowBySlot(slot) {
|
274
|
-
return Array.from(this._windowComponents.values()).find(
|
364
|
+
return Array.from(this._windowComponents.values()).find(
|
365
|
+
(item) => item.slot.value === slot,
|
366
|
+
);
|
275
367
|
}
|
276
368
|
|
277
369
|
/**
|
@@ -282,18 +374,21 @@ export class WindowManager {
|
|
282
374
|
*/
|
283
375
|
_getPositionOptionsForSlot(slot, position) {
|
284
376
|
if (slot === WindowSlot.STATIC) {
|
285
|
-
return WindowPositions.TOP_LEFT;
|
377
|
+
return { ...WindowPositions.TOP_LEFT, maxWidth: '320px' };
|
286
378
|
}
|
287
379
|
if (slot === WindowSlot.DYNAMIC_LEFT) {
|
288
380
|
const windowAtStatic = this._findWindowBySlot(WindowSlot.STATIC);
|
289
381
|
if (windowAtStatic) {
|
290
|
-
return WindowPositions.TOP_LEFT2;
|
382
|
+
return { ...position, ...WindowPositions.TOP_LEFT2 };
|
291
383
|
} else {
|
292
|
-
return WindowPositions.TOP_LEFT;
|
384
|
+
return { ...position, ...WindowPositions.TOP_LEFT };
|
293
385
|
}
|
294
386
|
}
|
295
387
|
if (slot === WindowSlot.DYNAMIC_RIGHT) {
|
296
|
-
return WindowPositions.TOP_RIGHT;
|
388
|
+
return { ...position, ...WindowPositions.TOP_RIGHT };
|
389
|
+
}
|
390
|
+
if (slot === WindowSlot.DYNAMIC_CHILD) {
|
391
|
+
return { ...position, ...WindowPositions.TOP_LEFT };
|
297
392
|
}
|
298
393
|
return position || WindowPositions.DETACHED;
|
299
394
|
}
|
@@ -312,10 +407,52 @@ export class WindowManager {
|
|
312
407
|
}
|
313
408
|
}
|
314
409
|
|
410
|
+
/**
|
411
|
+
* @param {string} id
|
412
|
+
* @returns {WindowPosition|undefined}
|
413
|
+
*/
|
414
|
+
getCachedPosition(id) {
|
415
|
+
return this._windowPositionsCache.get(id);
|
416
|
+
}
|
417
|
+
|
418
|
+
/**
|
419
|
+
* Caches the position, if it differs from the initial position
|
420
|
+
* @param {WindowComponent} windowComponent
|
421
|
+
* @private
|
422
|
+
*/
|
423
|
+
_cachePosition(windowComponent) {
|
424
|
+
const initialWindowPosition = windowPositionFromOptions(
|
425
|
+
windowComponent.initialPositionOptions,
|
426
|
+
);
|
427
|
+
if (
|
428
|
+
!compareWindowPositions(initialWindowPosition, windowComponent.position)
|
429
|
+
) {
|
430
|
+
this._windowPositionsCache.set(windowComponent.id, {
|
431
|
+
...windowComponent.position,
|
432
|
+
});
|
433
|
+
}
|
434
|
+
}
|
435
|
+
|
436
|
+
/**
|
437
|
+
* Returns true, if cached position was assigned.
|
438
|
+
* @param {WindowComponent} windowComponent
|
439
|
+
* @returns {boolean}
|
440
|
+
* @private
|
441
|
+
*/
|
442
|
+
_assignCachedPosition(windowComponent) {
|
443
|
+
if (this._windowPositionsCache.has(windowComponent.id)) {
|
444
|
+
const windowPosition = this.getCachedPosition(windowComponent.id);
|
445
|
+
setWindowPosition(windowComponent, windowPosition);
|
446
|
+
this._windowPositionsCache.delete(windowComponent.id);
|
447
|
+
return true;
|
448
|
+
}
|
449
|
+
return false;
|
450
|
+
}
|
451
|
+
|
315
452
|
/**
|
316
453
|
* adds a windowComponent to the WindowManager and renders the Window at the provided position/slot.
|
317
454
|
* The reactive WindowState Object can be used to watch Changes on position/WindowSlot.
|
318
|
-
* The WindowState Object can also be used to change hideHeader, headerTitle, headerIcon, styles and classes
|
455
|
+
* The WindowState Object can also be used to change hideHeader, headerTitle, headerIcon, headerActions, styles and classes
|
319
456
|
* @param {WindowComponentOptions|WindowComponent} windowComponentOptions
|
320
457
|
* @param {string|symbol} owner pluginName or vcsAppSymbol
|
321
458
|
* @throws {Error} if a windowComponent with the same ID has already been added
|
@@ -325,36 +462,60 @@ export class WindowManager {
|
|
325
462
|
check(owner, [String, vcsAppSymbol]);
|
326
463
|
|
327
464
|
if (windowComponentOptions.id && this.has(windowComponentOptions.id)) {
|
328
|
-
throw new Error(
|
465
|
+
throw new Error(
|
466
|
+
`A window with id ${windowComponentOptions.id} has already been registered.`,
|
467
|
+
);
|
329
468
|
}
|
330
469
|
const id = windowComponentOptions.id || uuidv4();
|
331
|
-
const
|
470
|
+
const parentId = windowComponentOptions?.parentId;
|
471
|
+
const slotOption =
|
472
|
+
windowComponentOptions.slot?.value || windowComponentOptions.slot;
|
332
473
|
const slot = parseEnumValue(slotOption, WindowSlot, WindowSlot.DETACHED);
|
333
|
-
|
474
|
+
if (
|
475
|
+
slot === WindowSlot.DYNAMIC_CHILD &&
|
476
|
+
!this.has(windowComponentOptions.parentId)
|
477
|
+
) {
|
478
|
+
throw new Error(
|
479
|
+
`The mandatory parent window with id ${windowComponentOptions.parentId} is not registered. Add the parent window or choose another slot than dynamicChild.`,
|
480
|
+
);
|
481
|
+
}
|
482
|
+
const windowPositionOptions = this._getPositionOptionsForSlot(
|
483
|
+
slot,
|
484
|
+
windowComponentOptions.position,
|
485
|
+
);
|
334
486
|
const windowPosition = windowPositionFromOptions(windowPositionOptions);
|
335
487
|
|
336
488
|
const slotRef = ref(slot);
|
337
|
-
const {
|
338
|
-
component, headerComponent,
|
339
|
-
} = windowComponentOptions;
|
489
|
+
const { component, headerComponent } = windowComponentOptions;
|
340
490
|
const styles = { ...windowComponentOptions?.state?.styles };
|
341
|
-
const classes = Array.isArray(windowComponentOptions?.state?.classes)
|
342
|
-
[...(windowComponentOptions?.state?.classes ?? [])]
|
343
|
-
{ ...windowComponentOptions?.state?.classes };
|
491
|
+
const classes = Array.isArray(windowComponentOptions?.state?.classes)
|
492
|
+
? [...(windowComponentOptions?.state?.classes ?? [])]
|
493
|
+
: { ...windowComponentOptions?.state?.classes };
|
344
494
|
|
345
495
|
const state = reactive({
|
346
496
|
id,
|
497
|
+
parentId,
|
347
498
|
owner,
|
348
499
|
hideHeader: !!windowComponentOptions?.state?.hideHeader,
|
500
|
+
hidePin: !!windowComponentOptions?.state?.hidePin,
|
349
501
|
headerTitle: windowComponentOptions?.state?.headerTitle,
|
350
502
|
headerIcon: windowComponentOptions?.state?.headerIcon,
|
503
|
+
headerActions: windowComponentOptions?.state?.headerActions,
|
504
|
+
headerActionsOverflow:
|
505
|
+
windowComponentOptions?.state?.headerActionsOverflow,
|
506
|
+
dockable: false,
|
507
|
+
infoUrl: windowComponentOptions?.state?.infoUrl,
|
508
|
+
infoUrlCallback: windowComponentOptions?.state?.infoUrlCallback,
|
351
509
|
classes,
|
352
510
|
styles,
|
353
511
|
});
|
354
512
|
|
355
513
|
const props = windowComponentOptions.props || {};
|
514
|
+
const provides = windowComponentOptions.provides || {};
|
356
515
|
|
357
516
|
const position = reactive(windowPosition);
|
517
|
+
const initialPosition = { ...windowPositionOptions };
|
518
|
+
const zIndex = computed(() => this._zIndices.value.indexOf(id));
|
358
519
|
/**
|
359
520
|
* @type {WindowComponent}
|
360
521
|
*/
|
@@ -362,6 +523,9 @@ export class WindowManager {
|
|
362
523
|
get id() {
|
363
524
|
return id;
|
364
525
|
},
|
526
|
+
get parentId() {
|
527
|
+
return parentId;
|
528
|
+
},
|
365
529
|
get state() {
|
366
530
|
return state;
|
367
531
|
},
|
@@ -374,16 +538,32 @@ export class WindowManager {
|
|
374
538
|
get slot() {
|
375
539
|
return slotRef;
|
376
540
|
},
|
541
|
+
get initialSlot() {
|
542
|
+
return slot;
|
543
|
+
},
|
377
544
|
get position() {
|
378
545
|
return position;
|
379
546
|
},
|
547
|
+
get initialPositionOptions() {
|
548
|
+
return initialPosition;
|
549
|
+
},
|
380
550
|
get props() {
|
381
551
|
return props;
|
382
552
|
},
|
553
|
+
get provides() {
|
554
|
+
return provides;
|
555
|
+
},
|
556
|
+
get zIndex() {
|
557
|
+
return zIndex;
|
558
|
+
},
|
383
559
|
};
|
384
|
-
this.
|
560
|
+
const cached = this._assignCachedPosition(windowComponent);
|
561
|
+
if (!cached) {
|
562
|
+
this._removeWindowAtSlot(slot);
|
563
|
+
}
|
385
564
|
this._windowComponents.set(id, windowComponent);
|
386
565
|
this.componentIds.push(id);
|
566
|
+
this._zIndices.value.push(id);
|
387
567
|
this._handleSlotsChanged(slot);
|
388
568
|
this.added.raiseEvent(windowComponent);
|
389
569
|
return windowComponent;
|
@@ -395,14 +575,36 @@ export class WindowManager {
|
|
395
575
|
*/
|
396
576
|
bringWindowToTop(id) {
|
397
577
|
if (this.has(id)) {
|
398
|
-
const index = this.
|
399
|
-
if (index >= 0 && index !== this.
|
400
|
-
this.
|
401
|
-
this.
|
578
|
+
const index = this._zIndices.value.indexOf(id);
|
579
|
+
if (index >= 0 && index !== this._zIndices.value.length - 1) {
|
580
|
+
this._zIndices.value.push(id);
|
581
|
+
this._zIndices.value.splice(index, 1);
|
402
582
|
}
|
403
583
|
}
|
404
584
|
}
|
405
585
|
|
586
|
+
/**
|
587
|
+
* Docks a window by resetting detached to its initial slot.
|
588
|
+
* Updates position according to its initial slot or initial position.
|
589
|
+
* Clears any cached position for this window.
|
590
|
+
* @param {string} id
|
591
|
+
*/
|
592
|
+
pinWindow(id) {
|
593
|
+
const component = this.get(id);
|
594
|
+
if (!component?.state?.dockable) {
|
595
|
+
return;
|
596
|
+
}
|
597
|
+
this._removeWindowAtSlot(component.initialSlot);
|
598
|
+
component.slot.value = component.initialSlot;
|
599
|
+
component.state.dockable = false;
|
600
|
+
const dockedPosition = this._getPositionOptionsForSlot(
|
601
|
+
component.initialSlot,
|
602
|
+
component.initialPositionOptions,
|
603
|
+
);
|
604
|
+
windowPositionFromOptions(dockedPosition, component.position);
|
605
|
+
this._windowPositionsCache.delete(id);
|
606
|
+
}
|
607
|
+
|
406
608
|
/**
|
407
609
|
* removes all windowComponents of a specific owner (plugin) and fires removed Events
|
408
610
|
* @param {string|vcsAppSymbol} owner
|
@@ -422,7 +624,9 @@ export class WindowManager {
|
|
422
624
|
*/
|
423
625
|
clear() {
|
424
626
|
const componentIds = [...this.componentIds];
|
425
|
-
componentIds.forEach((id) => {
|
627
|
+
componentIds.forEach((id) => {
|
628
|
+
this.remove(id);
|
629
|
+
});
|
426
630
|
}
|
427
631
|
|
428
632
|
/**
|
@@ -435,3 +639,5 @@ export class WindowManager {
|
|
435
639
|
this._windowComponents.clear();
|
436
640
|
}
|
437
641
|
}
|
642
|
+
|
643
|
+
export default WindowManager;
|