@vcmap/ui 5.0.0-rc.9 → 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 (724) hide show
  1. package/README.md +90 -106
  2. package/app.config.json +3 -0
  3. package/build/.eslintrc +3 -0
  4. package/build/build.js +302 -162
  5. package/build/buildCesium.js +39 -19
  6. package/build/buildHelpers.js +279 -87
  7. package/build/buildPreview.js +16 -6
  8. package/build/bundle.js +57 -0
  9. package/build/commonViteConfig.js +6 -15
  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 +171 -24
  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 -33
  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 +119 -35
  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 → @vcmap-show-case}/project-selector/package.json +3 -4
  234. package/plugins/{@vcmap/project-selector/ContextsListComponent.vue → @vcmap-show-case/project-selector/src/ModulesListComponent.vue} +22 -19
  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 +14 -8
  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 +184 -49
  308. package/src/actions/stateRefAction.js +2 -3
  309. package/src/application/VcsApp.vue +538 -98
  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 +52 -22
  324. package/src/components/buttons/VcsButton.vue +60 -110
  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 +62 -20
  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 +120 -16
  331. package/src/components/form-inputs-controls/VcsLabel.vue +29 -11
  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 +164 -50
  335. package/src/components/form-inputs-controls/VcsSlider.vue +73 -0
  336. package/src/components/form-inputs-controls/VcsTextArea.vue +118 -68
  337. package/src/components/form-inputs-controls/VcsTextField.vue +238 -69
  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 +28 -28
  342. package/src/{icons → components/icons}/+all.js +109 -5
  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/{icons → components/icons}/AssociationsIcon.vue +7 -4
  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/{icons → components/icons}/ColorSwatchIcon.vue +6 -2
  361. package/src/{icons → components/icons}/CommentIcon.vue +6 -6
  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/{icons → components/icons}/ElevationProfileIcon.vue +7 -14
  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/{icons → components/icons}/HealthCareIndustriesIcon.vue +7 -12
  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/{icons → components/icons}/HospitalsIcon.vue +7 -21
  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/{icons → components/icons}/KebabIcon.vue +7 -5
  388. package/src/components/icons/LabelIcon.vue +23 -0
  389. package/src/{icons → components/icons}/LayersIcon.vue +7 -5
  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/{icons → components/icons}/MenuIcon.vue +7 -5
  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/{icons/PolygonIcon.vue → components/icons/PointIcon.vue} +8 -6
  407. package/src/components/icons/PointSelectIcon.vue +18 -0
  408. package/src/components/icons/PresentationModeIcon.vue +17 -0
  409. package/src/{icons → components/icons}/ProgressIcon.vue +9 -7
  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/{icons → components/icons}/ShapesIcon.vue +13 -6
  420. package/src/components/icons/ShareIcon.vue +22 -0
  421. package/src/components/icons/SimpleCircleFilledIcon.vue +18 -0
  422. package/src/{icons → components/icons}/SimpleCircleHalfFilledIcon.vue +6 -2
  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/{icons → components/icons}/SplitViewIcon.vue +6 -6
  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 +57 -25
  448. package/src/components/lists/VcsList.vue +590 -0
  449. package/src/components/lists/VcsTreeview.vue +45 -42
  450. package/src/components/lists/VcsTreeviewLeaf.vue +45 -69
  451. package/src/components/lists/VcsTreeviewSearchbar.vue +40 -48
  452. package/src/components/notification/VcsBadge.vue +6 -4
  453. package/src/components/notification/VcsHelp.vue +39 -0
  454. package/src/components/notification/VcsTooltip.vue +111 -105
  455. package/src/components/notification/validation.js +1 -1
  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 +18 -14
  473. package/src/contentTree/contentTreeCollection.js +109 -41
  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/manager/buttonManager.js +32 -15
  502. package/src/manager/collectionManager/CollectionComponent.vue +140 -0
  503. package/src/manager/collectionManager/CollectionComponentList.vue +77 -0
  504. package/src/manager/collectionManager/CollectionComponentProvider.vue +39 -0
  505. package/src/manager/collectionManager/CollectionManager.vue +62 -0
  506. package/src/manager/collectionManager/categoryManager.js +83 -0
  507. package/src/manager/collectionManager/collectionComponent.js +470 -0
  508. package/src/manager/collectionManager/collectionManager.js +432 -0
  509. package/src/manager/contextMenu/ContextMenuComponent.vue +43 -0
  510. package/src/manager/contextMenu/contextMenuInteraction.js +47 -0
  511. package/src/manager/contextMenu/contextMenuManager.js +220 -0
  512. package/src/manager/navbarManager.js +47 -13
  513. package/src/manager/toolbox/GroupToolboxComponent.vue +128 -0
  514. package/src/manager/toolbox/SelectToolboxComponent.vue +144 -0
  515. package/src/manager/toolbox/ToolboxManager.vue +124 -102
  516. package/src/manager/toolbox/toolboxManager.js +254 -87
  517. package/src/manager/window/WindowComponent.vue +105 -85
  518. package/src/manager/window/WindowComponentHeader.vue +115 -24
  519. package/src/manager/window/WindowManager.vue +121 -55
  520. package/src/manager/window/windowHelper.js +465 -0
  521. package/src/manager/window/windowManager.js +294 -86
  522. package/src/navigation/{mapNavCompass.vue → MapNavCompass.vue} +31 -11
  523. package/src/navigation/MapNavigation.vue +291 -0
  524. package/src/navigation/ObliqueRotation.vue +69 -0
  525. package/src/navigation/{orientationToolsButton.vue → OrientationToolsButton.vue} +13 -12
  526. package/src/navigation/{tiltSlider.vue → TiltSlider.vue} +39 -16
  527. package/src/navigation/VcsCompass.vue +69 -0
  528. package/src/navigation/VcsZoomButton.vue +52 -0
  529. package/src/navigation/overviewMap.js +142 -104
  530. package/src/navigation/overviewMapClickedInteraction.js +6 -1
  531. package/src/notifier/NotifierComponent.vue +86 -0
  532. package/src/notifier/notifier.js +129 -0
  533. package/src/pluginHelper.js +148 -20
  534. package/src/search/ResultItem.vue +83 -0
  535. package/src/search/ResultsComponent.vue +103 -0
  536. package/src/search/SearchComponent.vue +116 -0
  537. package/src/search/search.js +342 -0
  538. package/src/setup.js +9 -10
  539. package/src/state.js +272 -0
  540. package/src/styles/_theming.scss +69 -21
  541. package/src/styles/_typography.scss +3 -6
  542. package/src/styles/main.scss +9 -0
  543. package/src/styles/shades.scss +4 -0
  544. package/src/styles/utils/_border.scss +1 -1
  545. package/src/styles/utils/_cursor.scss +4 -0
  546. package/src/styles/utils/_display.scss +1 -1
  547. package/src/styles/variables.scss +79 -11
  548. package/src/styles/vcsFont.scss +2 -5
  549. package/src/styles/vcsGrid.scss +9 -0
  550. package/src/uiConfig.js +83 -0
  551. package/src/vcsUiApp.js +508 -68
  552. package/src/vuePlugins/i18n.js +51 -13
  553. package/src/vuePlugins/vuetify.js +104 -43
  554. package/config/berlin.config.json +0 -529
  555. package/dist/assets/cesium/Workers/ArcType-fc72c06c.js +0 -1
  556. package/dist/assets/cesium/Workers/AttributeCompression-80665726.js +0 -1
  557. package/dist/assets/cesium/Workers/AxisAlignedBoundingBox-a655a4bc.js +0 -1
  558. package/dist/assets/cesium/Workers/BoundingRectangle-c3b79029.js +0 -1
  559. package/dist/assets/cesium/Workers/BoxGeometry-f8f9c981.js +0 -1
  560. package/dist/assets/cesium/Workers/Color-de06a177.js +0 -1
  561. package/dist/assets/cesium/Workers/ComponentDatatype-a15c9a19.js +0 -1
  562. package/dist/assets/cesium/Workers/CoplanarPolygonGeometryLibrary-48cdc26d.js +0 -1
  563. package/dist/assets/cesium/Workers/CorridorGeometryLibrary-ddc027d3.js +0 -1
  564. package/dist/assets/cesium/Workers/CylinderGeometry-82a8cbe6.js +0 -1
  565. package/dist/assets/cesium/Workers/CylinderGeometryLibrary-76cda53e.js +0 -1
  566. package/dist/assets/cesium/Workers/EllipseGeometry-32d55454.js +0 -1
  567. package/dist/assets/cesium/Workers/EllipseGeometryLibrary-b2ae188a.js +0 -1
  568. package/dist/assets/cesium/Workers/EllipseOutlineGeometry-f05a5a27.js +0 -1
  569. package/dist/assets/cesium/Workers/EllipsoidGeodesic-19e75e11.js +0 -1
  570. package/dist/assets/cesium/Workers/EllipsoidGeometry-7c99fc81.js +0 -1
  571. package/dist/assets/cesium/Workers/EllipsoidOutlineGeometry-21c243df.js +0 -1
  572. package/dist/assets/cesium/Workers/EllipsoidRhumbLine-6145377b.js +0 -1
  573. package/dist/assets/cesium/Workers/EllipsoidTangentPlane-a01286f6.js +0 -1
  574. package/dist/assets/cesium/Workers/EncodedCartesian3-d9f5c4a4.js +0 -1
  575. package/dist/assets/cesium/Workers/FrustumGeometry-17776af8.js +0 -1
  576. package/dist/assets/cesium/Workers/GeometryAttribute-89a520b9.js +0 -1
  577. package/dist/assets/cesium/Workers/GeometryAttributes-32b29525.js +0 -1
  578. package/dist/assets/cesium/Workers/GeometryInstance-4fbf16ba.js +0 -1
  579. package/dist/assets/cesium/Workers/GeometryOffsetAttribute-8c5e10db.js +0 -1
  580. package/dist/assets/cesium/Workers/GeometryPipeline-309fad76.js +0 -1
  581. package/dist/assets/cesium/Workers/IndexDatatype-f1dcdf35.js +0 -1
  582. package/dist/assets/cesium/Workers/IntersectionTests-58aa8f80.js +0 -1
  583. package/dist/assets/cesium/Workers/Matrix2-47e98d76.js +0 -1
  584. package/dist/assets/cesium/Workers/OrientedBoundingBox-fcb5b750.js +0 -1
  585. package/dist/assets/cesium/Workers/Plane-3f01019d.js +0 -1
  586. package/dist/assets/cesium/Workers/PolygonGeometryLibrary-0b29eb16.js +0 -1
  587. package/dist/assets/cesium/Workers/PolygonPipeline-a934c4dd.js +0 -1
  588. package/dist/assets/cesium/Workers/PolylinePipeline-8095c9bc.js +0 -1
  589. package/dist/assets/cesium/Workers/PolylineVolumeGeometryLibrary-67d12fff.js +0 -1
  590. package/dist/assets/cesium/Workers/PrimitivePipeline-980e44c5.js +0 -1
  591. package/dist/assets/cesium/Workers/RectangleGeometryLibrary-621c6de8.js +0 -1
  592. package/dist/assets/cesium/Workers/RuntimeError-8952249c.js +0 -1
  593. package/dist/assets/cesium/Workers/TerrainEncoding-f96552d5.js +0 -1
  594. package/dist/assets/cesium/Workers/Transforms-c8cb8f43.js +0 -39
  595. package/dist/assets/cesium/Workers/VertexFormat-a0b706b0.js +0 -1
  596. package/dist/assets/cesium/Workers/WallGeometryLibrary-c03d8479.js +0 -1
  597. package/dist/assets/cesium/Workers/WebGLConstants-508b9636.js +0 -1
  598. package/dist/assets/cesium/Workers/WebMercatorProjection-79b3214e.js +0 -1
  599. package/dist/assets/cesium/Workers/_commonjsHelpers-3aae1032-26891ab7.js +0 -1
  600. package/dist/assets/cesium/Workers/_rollup_plugin_ignore_empty_module_placeholder-57d574d0.js +0 -1
  601. package/dist/assets/cesium/Workers/arrayRemoveDuplicates-dc2f4046.js +0 -1
  602. package/dist/assets/cesium/Workers/cesiumWorkerBootstrapper.js +0 -6
  603. package/dist/assets/cesium/Workers/combine-3c023bda.js +0 -1
  604. package/dist/assets/cesium/Workers/defaultValue-81eec7ed.js +0 -1
  605. package/dist/assets/cesium.4e40f4.js +0 -9105
  606. package/dist/assets/core.edcf5e.js +0 -4
  607. package/dist/assets/index.60dea538.css +0 -1
  608. package/dist/assets/index.889d0f3a.js +0 -1
  609. package/dist/assets/ol.246fd4.js +0 -318
  610. package/dist/assets/ui.df4f6d.css +0 -1
  611. package/dist/assets/ui.df4f6d.js +0 -43
  612. package/dist/assets/vue-composition-api.a520f3.js +0 -14
  613. package/dist/assets/vue-composition-api.js +0 -2
  614. package/dist/assets/vue.2cee44.js +0 -9
  615. package/dist/assets/vuetify.cc817b.css +0 -5
  616. package/dist/assets/vuetify.cc817b.js +0 -48
  617. package/lib/vue-composition-api.js +0 -2
  618. package/map.config.json +0 -35
  619. package/plugins/@vcmap/pluginExample/config.json +0 -6
  620. package/plugins/@vcmap/pluginExample/package.json +0 -7
  621. package/plugins/@vcmap/pluginExample/pluginExampleComponent.vue +0 -374
  622. package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +0 -81
  623. package/plugins/@vcmap/project-selector/README.md +0 -29
  624. package/plugins/@vcmap/project-selector/config.json +0 -15
  625. package/plugins/@vcmap/project-selector/index.js +0 -254
  626. package/plugins/@vcmap/theme-changer/config.json +0 -69
  627. package/plugins/@vcmap/theme-changer/package.json +0 -12
  628. package/plugins/buttonExamples/ButtonExamples.vue +0 -190
  629. package/plugins/buttonExamples/index.js +0 -41
  630. package/plugins/categoryTest/Categories.vue +0 -145
  631. package/plugins/categoryTest/Category.vue +0 -114
  632. package/plugins/categoryTest/ItemEditor.vue +0 -13
  633. package/plugins/categoryTest/index.js +0 -41
  634. package/plugins/example/index.js +0 -75
  635. package/plugins/test/allIconsComponent.vue +0 -34
  636. package/plugins/test/editor.vue +0 -63
  637. package/plugins/test/index.js +0 -116
  638. package/plugins/test/myCustomHeader.vue +0 -19
  639. package/plugins/test/toolbox-data.js +0 -129
  640. package/plugins/test/vcsContent.vue +0 -23
  641. package/plugins/test/windowManagerExample.vue +0 -143
  642. package/src/actions/styleSelector.vue +0 -90
  643. package/src/application/Navbar.vue +0 -130
  644. package/src/application/empty-cmp.vue +0 -6
  645. package/src/components/form-inputs-controls/VcsColorPicker.vue +0 -81
  646. package/src/contentTree/viewPointContentTreeItem.js +0 -107
  647. package/src/icons/2DAreaIcon.vue +0 -21
  648. package/src/icons/2DDistanceIcon.vue +0 -18
  649. package/src/icons/3DAreaIcon.vue +0 -21
  650. package/src/icons/3DDistanceIcon.vue +0 -18
  651. package/src/icons/3DHeightIcon.vue +0 -18
  652. package/src/icons/AngleIcon.vue +0 -8
  653. package/src/icons/AxisIcon.vue +0 -10
  654. package/src/icons/BoundingBoxIcon.vue +0 -15
  655. package/src/icons/CheckboxCheckedIcon.vue +0 -16
  656. package/src/icons/CheckboxIcon.vue +0 -23
  657. package/src/icons/CheckboxIndeterminateIcon.vue +0 -24
  658. package/src/icons/CircleIcon.vue +0 -10
  659. package/src/icons/CompassIcon.vue +0 -8
  660. package/src/icons/ComponentsIcon.vue +0 -7
  661. package/src/icons/ConeIcon.vue +0 -11
  662. package/src/icons/DimensionsHouseIcon.vue +0 -14
  663. package/src/icons/ExportAreaIcon.vue +0 -7
  664. package/src/icons/ExportFlightIcon.vue +0 -7
  665. package/src/icons/ExportIcon.vue +0 -8
  666. package/src/icons/ExternalLinkIcon.vue +0 -10
  667. package/src/icons/EyeIcon.vue +0 -7
  668. package/src/icons/FastForwardIcon.vue +0 -7
  669. package/src/icons/FilterIcon.vue +0 -8
  670. package/src/icons/GlobeNatureIcon.vue +0 -14
  671. package/src/icons/HelpIcon.vue +0 -7
  672. package/src/icons/HomePointIcon.vue +0 -8
  673. package/src/icons/HouseIcon.vue +0 -25
  674. package/src/icons/ImportIcon.vue +0 -8
  675. package/src/icons/InfoIcon.vue +0 -10
  676. package/src/icons/LabelIcon.vue +0 -7
  677. package/src/icons/LegendIcon.vue +0 -65
  678. package/src/icons/LineIcon.vue +0 -7
  679. package/src/icons/LinkIcon.vue +0 -7
  680. package/src/icons/MapIcon.vue +0 -8
  681. package/src/icons/MinusIcon.vue +0 -8
  682. package/src/icons/ObjectAttributeIcon.vue +0 -18
  683. package/src/icons/ObjectSelectIcon.vue +0 -8
  684. package/src/icons/ObliqueViewIcon.vue +0 -13
  685. package/src/icons/PdfIcon.vue +0 -10
  686. package/src/icons/PedestrianIcon.vue +0 -8
  687. package/src/icons/PenIcon.vue +0 -14
  688. package/src/icons/PlayCircleIcon.vue +0 -10
  689. package/src/icons/PlusIcon.vue +0 -9
  690. package/src/icons/PoiIcon.vue +0 -7
  691. package/src/icons/PointSelectIcon.vue +0 -7
  692. package/src/icons/PresentationModeIcon.vue +0 -7
  693. package/src/icons/QueryIcon.vue +0 -15
  694. package/src/icons/RectangleIcon.vue +0 -9
  695. package/src/icons/ReturnIcon.vue +0 -7
  696. package/src/icons/RewindIcon.vue +0 -6
  697. package/src/icons/SearchIcon.vue +0 -8
  698. package/src/icons/ShadowIcon.vue +0 -9
  699. package/src/icons/ShareIcon.vue +0 -22
  700. package/src/icons/SimpleCircleFilledIcon.vue +0 -15
  701. package/src/icons/SimpleCircleOutlinedIcon.vue +0 -15
  702. package/src/icons/SkipNextIcon.vue +0 -7
  703. package/src/icons/SkipPreviousIcon.vue +0 -9
  704. package/src/icons/TextStyleIcon.vue +0 -14
  705. package/src/icons/ThreeDimensionsIcon.vue +0 -7
  706. package/src/icons/ToolsIcon.vue +0 -35
  707. package/src/icons/TouchIcon.vue +0 -8
  708. package/src/icons/TrashCanIcon.vue +0 -7
  709. package/src/icons/TriangleIcon.vue +0 -15
  710. package/src/icons/TwoDimensionsIcon.vue +0 -8
  711. package/src/icons/UploadIcon.vue +0 -14
  712. package/src/icons/VideoRecorderIcon.vue +0 -14
  713. package/src/icons/WalkingIcon.vue +0 -7
  714. package/src/icons/WallIcon.vue +0 -14
  715. package/src/lang/de.js +0 -60
  716. package/src/lang/en.js +0 -53
  717. package/src/manager/toolbox/ToolboxGroupComponent.vue +0 -128
  718. package/src/navigation/mapNavigation.vue +0 -205
  719. package/src/navigation/obliqueRotation.vue +0 -48
  720. package/src/navigation/vcsCompass.vue +0 -144
  721. package/src/navigation/vcsZoomButton.vue +0 -27
  722. package/start.js +0 -3
  723. /package/src/{assets/logo-mobile.svg → logo-mobile.svg} +0 -0
  724. /package/src/{assets/logo.svg → logo.svg} +0 -0
package/src/init.js CHANGED
@@ -1,36 +1,121 @@
1
- import Vue from 'vue';
2
- import { check, checkMaybe } from '@vcsuite/check';
3
- import { Context } from '@vcmap/core';
4
- import VcsAppComponent from './application/VcsApp.vue';
5
- import { vuetify } from './vuePlugins/vuetify.js';
6
- import { i18n } from './vuePlugins/i18n.js';
7
- import VcsUiApp from './vcsUiApp.js';
8
-
9
- /**
10
- * creates and mounts a vcsApp
11
- * @param {string} mountTarget
12
- * @param {string=} configUrl optional config
13
- * @returns {Promise<VcsUiApp>}
14
- */
15
- export default async function initApp(mountTarget, configUrl) {
16
- check(mountTarget, String);
17
- checkMaybe(configUrl, String);
18
- const app = new VcsUiApp();
19
- new Vue({
20
- vuetify,
21
- i18n,
22
- render: h => h(VcsAppComponent, {
23
- props: {
24
- appId: app.id,
25
- },
26
- }),
27
- }).$mount(mountTarget);
28
-
29
- if (configUrl) {
30
- const config = await fetch(configUrl)
31
- .then(response => response.json());
32
- const context = new Context(config);
33
- await app.addContext(context);
34
- }
35
- return app;
36
- }
1
+ import Vue from 'vue';
2
+ import { check, checkMaybe, is } from '@vcsuite/check';
3
+ import { VcsModule } from '@vcmap/core';
4
+ import VcsAppComponentWrapper from './application/VcsAppWrapper.vue';
5
+ import { vuetify } from './vuePlugins/vuetify.js';
6
+ import VcsUiApp from './vcsUiApp.js';
7
+
8
+ /**
9
+ * Base pattern to check VcsObjects
10
+ * @type {import("vcsuite/check").PatternFor<import("@vcmap/core").VcsObject>}
11
+ */
12
+ const VcsObjectPattern = {
13
+ type: String,
14
+ name: String,
15
+ };
16
+
17
+ /**
18
+ * Base pattern to check VcsUiAppConfig
19
+ * @type {import("vcsuite/check").PatternFor<VcsUiAppConfig>}
20
+ */
21
+ export const VcsUiAppConfigPattern = {
22
+ id: [undefined, String],
23
+ layers: [undefined, [VcsObjectPattern]],
24
+ maps: [undefined, [VcsObjectPattern]],
25
+ styles: [undefined, [VcsObjectPattern]],
26
+ viewpoints: [undefined, [VcsObjectPattern]],
27
+ startingViewpointName: [undefined, String],
28
+ startingMapName: [undefined, String],
29
+ projection: [undefined, Object],
30
+ categories: [undefined, [{ name: String, items: [Object] }]],
31
+ obliqueCollections: [undefined, [VcsObjectPattern]],
32
+ plugins: [undefined, [Object]],
33
+ contentTree: [undefined, [Object]],
34
+ uiConfig: [undefined, [Object]],
35
+ featureInfo: [undefined, [VcsObjectPattern]],
36
+ i18n: [undefined, [Object]],
37
+ };
38
+
39
+ /**
40
+ * creates and mounts a vcsApp
41
+ * @param {string} mountTarget
42
+ * @returns {Promise<VcsUiApp>}
43
+ */
44
+ export default async function initApp(mountTarget) {
45
+ check(mountTarget, String);
46
+ const app = new VcsUiApp();
47
+ new Vue({
48
+ vuetify,
49
+ i18n: app.vueI18n,
50
+ render: (h) =>
51
+ h(VcsAppComponentWrapper, {
52
+ props: {
53
+ appId: app.id,
54
+ },
55
+ }),
56
+ }).$mount(mountTarget);
57
+
58
+ return app;
59
+ }
60
+
61
+ /**
62
+ * Initializes app with an optional single config
63
+ * @param {string} mountTarget
64
+ * @param {string=} configUrl optional config
65
+ * @returns {Promise<VcsUiApp>}
66
+ */
67
+ export async function initAppFromModule(mountTarget, configUrl) {
68
+ check(mountTarget, String);
69
+ checkMaybe(configUrl, String);
70
+
71
+ const app = await initApp(mountTarget);
72
+ if (configUrl) {
73
+ const config = await fetch(configUrl).then((response) => response.json());
74
+ const module = new VcsModule(config);
75
+ await app.addModule(module);
76
+ }
77
+
78
+ return app;
79
+ }
80
+
81
+ /**
82
+ * Initializes app with a map config containing a set of config urls
83
+ * @param {string} mountTarget
84
+ * @param {string} appUrl app config containing further modules to be loaded
85
+ * @returns {Promise<VcsUiApp>}
86
+ */
87
+ export async function initAppFromAppConfig(mountTarget, appUrl) {
88
+ check(mountTarget, String);
89
+ check(appUrl, String);
90
+
91
+ const app = await initApp(mountTarget);
92
+ /**
93
+ * @type {{modules: Array<string|import("@vcmap/core").VcsModuleConfig>}}
94
+ */
95
+ const appConfig = await fetch(appUrl).then((response) => response.json());
96
+
97
+ check(appConfig.modules, [String, Object]);
98
+
99
+ const modules = await Promise.all(
100
+ appConfig.modules.map(async (c) => {
101
+ if (is(c, VcsUiAppConfigPattern)) {
102
+ return new VcsModule(
103
+ /** @type{import("@vcmap/core").VcsModuleConfig} */ c,
104
+ );
105
+ } else if (is(c, String)) {
106
+ const response = await fetch(c);
107
+ if (response.ok) {
108
+ const config = await response.json();
109
+ return new VcsModule(config);
110
+ }
111
+ }
112
+ return null;
113
+ }),
114
+ );
115
+ // eslint-disable-next-line no-restricted-syntax
116
+ for await (const module of modules) {
117
+ if (module) {
118
+ await app.addModule(module);
119
+ }
120
+ }
121
+ }
@@ -0,0 +1,176 @@
1
+ <template>
2
+ <v-list dense>
3
+ <v-layout wrap :column="item.colNr === 1">
4
+ <v-flex
5
+ v-for="(row, idx) in item.rows"
6
+ :key="idx"
7
+ :class="{ 'w-full': item.colNr === 1, 'w-half': item.colNr !== 1 }"
8
+ >
9
+ <v-list-item dense class="pa-0" :class="determineInnerPadding(idx)">
10
+ <v-list-item-icon class="pr-2">
11
+ <v-img
12
+ v-if="
13
+ row.type === StyleRowType.Icon ||
14
+ row.type === StyleRowType.Shape
15
+ "
16
+ width="32"
17
+ height="24"
18
+ contain
19
+ :src="getImageSrcFromShape(row.image)"
20
+ />
21
+ <svg
22
+ xmlns="http://www.w3.org/2000/svg"
23
+ width="32"
24
+ height="24"
25
+ viewBox="0 0 32 24"
26
+ v-else
27
+ >
28
+ <text
29
+ v-if="row.type === StyleRowType.Text"
30
+ :style="`font:${row.text.font}`"
31
+ x="0"
32
+ y="17"
33
+ :stroke="getColor(row.text?.stroke?.color)"
34
+ :stroke-linecap="row.text?.stroke?.lineCap"
35
+ :stroke-linejoin="row.text?.stroke?.lineJoin"
36
+ :stroke-dasharray="row.text?.stroke?.lineDash"
37
+ :stroke-dashoffset="row.text?.stroke?.lineDashOffset"
38
+ :stroke-miterlimit="row.text?.stroke?.miterLimit"
39
+ :stroke-width="row.text?.stroke?.width"
40
+ :fill="getColor(row.text?.fill?.color) || 'rgba(255,255,255,0)'"
41
+ >
42
+ {{ $t(row.label || 'legend.defaultLabelText') }}
43
+ </text>
44
+ <line
45
+ v-else-if="row.type === StyleRowType.Stroke"
46
+ x1="0"
47
+ y1="12"
48
+ x2="32"
49
+ y2="12"
50
+ :stroke="getColor(row.stroke?.color)"
51
+ :stroke-linecap="row.stroke?.lineCap"
52
+ :stroke-linejoin="row.stroke?.lineJoin"
53
+ :stroke-dasharray="row.stroke?.lineDash"
54
+ :stroke-dashoffset="row.stroke?.lineDashOffset"
55
+ :stroke-miterlimit="row.stroke?.miterLimit"
56
+ :stroke-width="row.stroke?.width"
57
+ />
58
+ <rect
59
+ v-else-if="row.type === StyleRowType.Fill"
60
+ width="32"
61
+ height="24"
62
+ :stroke="getColor(row.stroke?.color)"
63
+ :stroke-linecap="row.stroke?.lineCap"
64
+ :stroke-linejoin="row.stroke?.lineJoin"
65
+ :stroke-dasharray="row.stroke?.lineDash"
66
+ :stroke-dashoffset="row.stroke?.lineDashOffset"
67
+ :stroke-miterlimit="row.stroke?.miterLimit"
68
+ :stroke-width="row.stroke?.width"
69
+ :fill="getColor(row.fill?.color) || 'rgba(255,255,255,0)'"
70
+ />
71
+ <circle
72
+ v-else-if="row.type === StyleRowType.Circle"
73
+ cx="16"
74
+ cy="12"
75
+ :r="row.image?.radius || 8"
76
+ :stroke="getColor(row.image?.stroke?.color)"
77
+ :stroke-linecap="row.image?.stroke?.lineCap"
78
+ :stroke-linejoin="row.image?.stroke?.lineJoin"
79
+ :stroke-dasharray="row.image?.stroke?.lineDash"
80
+ :stroke-dashoffset="row.image?.stroke?.lineDashOffset"
81
+ :stroke-miterlimit="row.image?.stroke?.miterLimit"
82
+ :stroke-width="row.image?.stroke?.width"
83
+ :fill="
84
+ getColor(row.image?.fill?.color) || 'rgba(255,255,255,0)'
85
+ "
86
+ />
87
+ </svg>
88
+ </v-list-item-icon>
89
+ <v-list-item-content>
90
+ <v-list-item-title
91
+ class="pt-2"
92
+ :title="$t(row.tooltip || row.title)"
93
+ >
94
+ {{ $t(row.title) }}
95
+ </v-list-item-title>
96
+ </v-list-item-content>
97
+ </v-list-item>
98
+ </v-flex>
99
+ </v-layout>
100
+ </v-list>
101
+ </template>
102
+
103
+ <script>
104
+ import { getStringColor } from '@vcmap/core';
105
+ import {
106
+ VFlex,
107
+ VImg,
108
+ VLayout,
109
+ VList,
110
+ VListItem,
111
+ VListItemContent,
112
+ VListItemIcon,
113
+ VListItemTitle,
114
+ } from 'vuetify/lib';
115
+ import { StyleRowType, getImageSrcFromShape } from './legendHelper.js';
116
+
117
+ /**
118
+ * @description A component rendering vector styles as list using {@link https://vuetifyjs.com/en/api/v-list-row v-list-row}
119
+ * @vue-prop {StyleLegendItem} item - an item with multiple rows of style information and corresponding title
120
+ */
121
+ export default {
122
+ name: 'StyleLegendItem',
123
+ components: {
124
+ VList,
125
+ VLayout,
126
+ VFlex,
127
+ VListItem,
128
+ VListItemIcon,
129
+ VImg,
130
+ VListItemContent,
131
+ VListItemTitle,
132
+ },
133
+ props: {
134
+ item: {
135
+ type: Object,
136
+ required: true,
137
+ },
138
+ },
139
+ setup(props) {
140
+ /**
141
+ * Determines if a list item has padding right or left, so it has correct spacing to second row.
142
+ * @param {number} index The index of the list item. Starts with 0.
143
+ * @returns {string} Vuetify padding helper.
144
+ */
145
+ function determineInnerPadding(index) {
146
+ // check if there are more than two columns
147
+ if (props.item.colNr !== 1) {
148
+ // check if even number. If so, it is located in the left column and needs padding on the right.
149
+ if (index % 2 === 0) {
150
+ return 'pr-2';
151
+ } else {
152
+ return 'pl-2';
153
+ }
154
+ }
155
+ return '';
156
+ }
157
+ return {
158
+ StyleRowType,
159
+ getImageSrcFromShape,
160
+ getColor(color) {
161
+ if (color) {
162
+ return getStringColor(color);
163
+ }
164
+ return null;
165
+ },
166
+ determineInnerPadding,
167
+ };
168
+ },
169
+ };
170
+ </script>
171
+
172
+ <style scoped>
173
+ .v-list-item--dense {
174
+ height: 32px;
175
+ }
176
+ </style>
@@ -0,0 +1,140 @@
1
+ <template>
2
+ <v-sheet class="overflow-y-auto">
3
+ <v-expansion-panels
4
+ accordion
5
+ multiple
6
+ v-if="entries.length > 0"
7
+ v-model="panels"
8
+ class="rounded-0"
9
+ >
10
+ <v-expansion-panel
11
+ v-for="(entry, i) in entries"
12
+ :key="i"
13
+ class="px-2"
14
+ @change="entry.open = !entry.open"
15
+ >
16
+ <v-expansion-panel-header hide-actions>
17
+ <template #default="{ open }">
18
+ <div class="d-flex justify-space-between">
19
+ <div class="d-flex align-center">
20
+ <v-icon class="mr-1" :class="{ rotate: !open }">
21
+ mdi-chevron-down
22
+ </v-icon>
23
+ {{ $t(entry.title) }}
24
+ </div>
25
+ <VcsActionButtonList :actions="entry.actions" />
26
+ </div>
27
+ </template>
28
+ </v-expansion-panel-header>
29
+ <v-expansion-panel-content class="pl-6 pb-2">
30
+ <v-list dense>
31
+ <div v-for="(item, idx) in entry.legend" :key="idx">
32
+ <div v-if="item.type === LegendType.Image">
33
+ <img
34
+ :src="$t(item.src)"
35
+ :alt="item.src"
36
+ class="legend-image"
37
+ :title="item.tooltip"
38
+ />
39
+ </div>
40
+ <div v-else-if="item.type === LegendType.Iframe">
41
+ <iframe
42
+ :id="`legendIframe${idx}`"
43
+ :src="$t(item.src)"
44
+ scrolling="no"
45
+ style="width: 100%; height: 100%"
46
+ frameBorder="0"
47
+ @load="setIframeHeight(`legendIframe${idx}`)"
48
+ />
49
+ </div>
50
+ <style-legend-item v-else :item="item" />
51
+ </div>
52
+ </v-list>
53
+ </v-expansion-panel-content>
54
+ </v-expansion-panel>
55
+ </v-expansion-panels>
56
+ <v-sheet v-else class="ma-2">
57
+ {{ $t('legend.empty') }}
58
+ </v-sheet>
59
+ </v-sheet>
60
+ </template>
61
+
62
+ <script>
63
+ import {
64
+ VExpansionPanels,
65
+ VExpansionPanel,
66
+ VExpansionPanelHeader,
67
+ VExpansionPanelContent,
68
+ VIcon,
69
+ VList,
70
+ VSheet,
71
+ } from 'vuetify/lib';
72
+ import { computed } from 'vue';
73
+ import { LegendType } from './legendHelper.js';
74
+ import StyleLegendItem from './StyleLegendItem.vue';
75
+ import VcsActionButtonList from '../components/buttons/VcsActionButtonList.vue';
76
+
77
+ /**
78
+ * @description A component rendering configured legend information for active layers.
79
+ * @vue-prop {import("vue").Ref<Array<LegendEntry>>} entries - legend entries to be displayed
80
+ * @vue-computed {import("vue").ComputedRef<number[]>} panels - derives indices from entries array to define all panels as open
81
+ */
82
+ export default {
83
+ name: 'VcsLegend',
84
+ components: {
85
+ VcsActionButtonList,
86
+ StyleLegendItem,
87
+ VExpansionPanels,
88
+ VExpansionPanel,
89
+ VExpansionPanelHeader,
90
+ VExpansionPanelContent,
91
+ VIcon,
92
+ VList,
93
+ VSheet,
94
+ },
95
+ props: {
96
+ entries: {
97
+ type: Object,
98
+ required: true,
99
+ },
100
+ },
101
+ setup(props) {
102
+ /**
103
+ * adapts the iframe height on load
104
+ * @param {string} id - iframe's html id
105
+ */
106
+ const setIframeHeight = (id) => {
107
+ const iframe = document.getElementById(id);
108
+ iframe.style.height = `${iframe.contentWindow.document.documentElement.scrollHeight}px`;
109
+ };
110
+
111
+ /**
112
+ * @type {import("vue").ComputedRef<number[]>}
113
+ */
114
+ const panels = computed({
115
+ get() {
116
+ return [...Array(props.entries.length).keys()].filter(
117
+ (p, idx) => !!props.entries[idx].open,
118
+ );
119
+ },
120
+ set() {},
121
+ });
122
+
123
+ return {
124
+ LegendType,
125
+ setIframeHeight,
126
+ panels,
127
+ };
128
+ },
129
+ };
130
+ </script>
131
+
132
+ <style lang="scss" scoped>
133
+ .legend-image {
134
+ max-width: 100%;
135
+ height: auto;
136
+ }
137
+ .rotate {
138
+ transform: rotate(-90deg);
139
+ }
140
+ </style>
@@ -0,0 +1,204 @@
1
+ import { getShapeFromOptions } from '@vcmap/core';
2
+ import { shallowRef } from 'vue';
3
+
4
+ /**
5
+ * @enum {string}
6
+ * @property {string} Image - an image
7
+ * @property {string} IFRAME - an iframe
8
+ * @property {string} Style - a parametric style element
9
+ */
10
+ export const LegendType = {
11
+ Image: 'ImageLegendItem',
12
+ Iframe: 'IframeLegendItem',
13
+ Style: 'StyleLegendItem',
14
+ };
15
+
16
+ /**
17
+ * @enum {string}
18
+ */
19
+ export const StyleRowType = {
20
+ Stroke: 'StrokeLegendRow',
21
+ Fill: 'FillLegendRow',
22
+ Circle: 'CircleLegendRow',
23
+ Icon: 'IconLegendRow',
24
+ Shape: 'RegularShapeLegendRow',
25
+ Text: 'TextLegendRow',
26
+ };
27
+
28
+ /**
29
+ * @typedef {Object} LegendItem
30
+ * @property {LegendType} type - determines rendering, specialised properties are type based.
31
+ */
32
+
33
+ /**
34
+ * @typedef {LegendItem} ImageLegendItem
35
+ * @property {boolean} [popoutBtn=false] - show a button in legend title to open legend in new tab
36
+ * @property {string} src - the source url. Can be an i18n string.
37
+ * @property {string} [tooltip] - Optional further explanation of the legend
38
+ */
39
+
40
+ /**
41
+ * @typedef {LegendItem} IframeLegendItem
42
+ * @property {boolean} [popoutBtn=false] - show a button in legend title to open legend in new tab
43
+ * @property {string} src - the source url. Can be an i18n string.
44
+ */
45
+
46
+ /**
47
+ * @typedef {LegendItem} StyleLegendItem
48
+ * @property {number} [colNr=2] Number of columns. Valid values are 1 or 2. Per default 2.
49
+ * @property {Array<StyleLegendRow>} rows - style definitions with description
50
+ */
51
+
52
+ /**
53
+ * @typedef {Object} StyleLegendRow
54
+ * @property {StyleRowType} type - determines rendering of the row, specialised properties are type based.
55
+ * @property {string} title - Description of the style. Can be an i18n string
56
+ * @property {string} [tooltip] - Optional further explanation of the legend row
57
+ */
58
+
59
+ /**
60
+ * @typedef {StyleLegendRow} StrokeLegendRow
61
+ * @property {import("ol/style/Stroke").Options} stroke
62
+ */
63
+
64
+ /**
65
+ * @typedef {StyleLegendRow} FillLegendRow
66
+ * @property {import("ol/style/Fill").Options} fill
67
+ * @property {import("ol/style/Stroke").Options} [stroke]
68
+ */
69
+
70
+ /**
71
+ * @typedef {StyleLegendRow} CircleLegendRow
72
+ * @property {import("ol/style/Circle").Options} image
73
+ */
74
+
75
+ /**
76
+ * @typedef {StyleLegendRow} IconLegendRow
77
+ * @property {import("ol/style/Icon").Options} image
78
+ */
79
+
80
+ /**
81
+ * @typedef {StyleLegendRow} RegularShapeLegendRow
82
+ * @property {import("ol/style/RegularShape").Options} image
83
+ */
84
+
85
+ /**
86
+ * @typedef {StyleLegendRow} TextLegendRow
87
+ * @property {import("ol/style/Text").Options} text
88
+ * @property {string} [label='Text']
89
+ */
90
+
91
+ /**
92
+ * @type {import("ol/style/Image").Options} image
93
+ * @return {string}
94
+ */
95
+ export function getImageSrcFromShape(image) {
96
+ if (image.src) {
97
+ return image.src;
98
+ }
99
+ const shape = getShapeFromOptions(image);
100
+ const imageRep = shape.getImage(1);
101
+ return imageRep.currentSrc || imageRep.toDataURL();
102
+ }
103
+
104
+ /**
105
+ * @typedef {Object} LegendEntry
106
+ * @property {string} key
107
+ * @property {string} title - layer or entry name
108
+ * @property {boolean} [open=true] - panel state of entry
109
+ * @property {Array<LegendItem>} legend - legend properties
110
+ * @property {Array<VcsAction>} actions - popout actions
111
+ */
112
+
113
+ /**
114
+ * creates a LegendEntry with title, options and optionally popout action to the entries array
115
+ * @param {string} key - layerName
116
+ * @param {string} title
117
+ * @param {Array<LegendItem>} legend
118
+ * @returns {LegendEntry}
119
+ */
120
+ export function createLayerLegendEntry(key, title, legend) {
121
+ const actions = [];
122
+ legend.forEach((item) => {
123
+ // XXX only one popout button allowed. Rethink if use case for multiple popout buttons comes up.
124
+ if (item.src && item.popoutBtn && actions.length < 1) {
125
+ actions.push({
126
+ name: 'legendPopoutAction',
127
+ icon: 'mdi-open-in-new',
128
+ title: 'legend.openInNew',
129
+ callback: () => window.open(item.src, '_blank'),
130
+ });
131
+ }
132
+ });
133
+ return { key, title, legend, actions, open: true };
134
+ }
135
+
136
+ /**
137
+ *
138
+ * @param {VcsUiApp} app
139
+ * @returns {{entries: import("vue").Ref<Array<LegendEntry>>, destroy: (function():void)}}
140
+ */
141
+ export function getLegendEntries(app) {
142
+ /**
143
+ * @type {import("vue").Ref<Array<LegendEntry>>}>}
144
+ */
145
+ const entries = shallowRef([]);
146
+ /**
147
+ * @type {Object<string,function():void>}
148
+ */
149
+ const styleChangedListener = {};
150
+
151
+ /**
152
+ * @param {import("@vcmap/core").Layer} layer
153
+ */
154
+ function removeEntryForLayer(layer) {
155
+ const layerName = layer.name;
156
+ // reassign to trigger update
157
+ entries.value = entries.value.filter(({ key }) => key !== layerName);
158
+ if (styleChangedListener[layerName]) {
159
+ styleChangedListener[layerName]();
160
+ delete styleChangedListener[layerName];
161
+ }
162
+ }
163
+
164
+ /**
165
+ * adds or removes a LegendEntry on layer state changes and layer style changes
166
+ * adds a styleChangedListener for all layers changing its state
167
+ * @param {import("@vcmap/core").Layer} layer
168
+ */
169
+ function syncLayerLegendEntries(layer) {
170
+ removeEntryForLayer(layer);
171
+ if (layer.active) {
172
+ const key = layer.name;
173
+ const title = layer.properties.title || layer.name;
174
+ const legend =
175
+ layer.style?.properties?.legend ?? layer.properties?.legend;
176
+ if (legend) {
177
+ const legendEntry = createLayerLegendEntry(key, title, legend);
178
+ // use spread since push won't trigger updates. Put new entries at the start
179
+ entries.value = [legendEntry, ...entries.value];
180
+ }
181
+ if (layer.styleChanged) {
182
+ styleChangedListener[layer.name] = layer.styleChanged.addEventListener(
183
+ () => syncLayerLegendEntries(layer),
184
+ );
185
+ }
186
+ }
187
+ }
188
+
189
+ const destroyChangedListener = app.layers.stateChanged.addEventListener(
190
+ syncLayerLegendEntries,
191
+ );
192
+ const destroyRemovedListener =
193
+ app.layers.removed.addEventListener(removeEntryForLayer);
194
+
195
+ [...app.layers].forEach(syncLayerLegendEntries);
196
+
197
+ const destroy = () => {
198
+ destroyChangedListener();
199
+ destroyRemovedListener();
200
+ Object.values(styleChangedListener).forEach((cb) => cb());
201
+ };
202
+
203
+ return { entries, destroy };
204
+ }