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