@vcmap/ui 5.0.0-rc.23 → 5.0.0-rc.25

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 (479) hide show
  1. package/README.md +36 -18
  2. package/app.config.json +2 -4
  3. package/build/.eslintrc +3 -0
  4. package/build/build.js +302 -174
  5. package/build/buildCesium.js +32 -19
  6. package/build/buildHelpers.js +267 -94
  7. package/build/buildPreview.js +7 -4
  8. package/build/bundle.js +56 -0
  9. package/build/commonViteConfig.js +2 -4
  10. package/build/determineHost.js +17 -4
  11. package/build/generateOLLib.js +13 -16
  12. package/build/getPluginProxies.js +16 -3
  13. package/build/info/conf.json +21 -21
  14. package/build/info/publish.js +15 -4
  15. package/config/aerowest.config.json +16 -44
  16. package/config/base.config.json +100 -248
  17. package/config/codes.config.json +3 -1
  18. package/config/dev.config.json +34 -14
  19. package/config/graphFeatureInfo.config.json +55 -16
  20. package/config/projects.config.json +5 -2
  21. package/config/www.config.json +174 -333
  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/Workers/{ArcType-ce2e50ab.js → ArcType-2d9abbbc.js} +4 -4
  27. package/dist/assets/cesium/Workers/{AttributeCompression-b646d393.js → AttributeCompression-f9f6c717.js} +24 -24
  28. package/dist/assets/cesium/Workers/{AxisAlignedBoundingBox-ff186ccc.js → AxisAlignedBoundingBox-4140c51f.js} +3 -3
  29. package/dist/assets/cesium/Workers/{BoundingRectangle-be5924f4.js → BoundingRectangle-c714b156.js} +18 -18
  30. package/dist/assets/cesium/Workers/{BoxGeometry-12eeccaf.js → BoxGeometry-6f3da43d.js} +9 -9
  31. package/dist/assets/cesium/Workers/{Check-666ab1a0.js → Check-6ede7e26.js} +22 -22
  32. package/dist/assets/cesium/Workers/{Color-a84038cb.js → Color-8a565ff2.js} +63 -63
  33. package/dist/assets/cesium/Workers/{ComponentDatatype-f7b11d02.js → ComponentDatatype-cf1fa08e.js} +16 -16
  34. package/dist/assets/cesium/Workers/{CoplanarPolygonGeometryLibrary-3272c1b3.js → CoplanarPolygonGeometryLibrary-4b4d4096.js} +1 -1
  35. package/dist/assets/cesium/Workers/{CorridorGeometryLibrary-0170e093.js → CorridorGeometryLibrary-7b94502b.js} +1 -1
  36. package/dist/assets/cesium/Workers/{CylinderGeometry-7c5da648.js → CylinderGeometry-ca070b87.js} +12 -12
  37. package/dist/assets/cesium/Workers/{CylinderGeometryLibrary-372c07d8.js → CylinderGeometryLibrary-7bf291b4.js} +1 -1
  38. package/dist/assets/cesium/Workers/{EllipseGeometry-797d580e.js → EllipseGeometry-122e51fa.js} +20 -20
  39. package/dist/assets/cesium/Workers/{EllipseGeometryLibrary-2939e1dc.js → EllipseGeometryLibrary-4d326efc.js} +1 -1
  40. package/dist/assets/cesium/Workers/{EllipseOutlineGeometry-8b50870f.js → EllipseOutlineGeometry-16cc2bd7.js} +15 -15
  41. package/dist/assets/cesium/Workers/{EllipsoidGeodesic-98c62a56.js → EllipsoidGeodesic-5b3623dc.js} +6 -6
  42. package/dist/assets/cesium/Workers/{EllipsoidGeometry-21c0e3a5.js → EllipsoidGeometry-cb148ca2.js} +14 -14
  43. package/dist/assets/cesium/Workers/{EllipsoidOutlineGeometry-eff247c8.js → EllipsoidOutlineGeometry-0fa10c79.js} +15 -15
  44. package/dist/assets/cesium/Workers/{EllipsoidRhumbLine-19756602.js → EllipsoidRhumbLine-ef872433.js} +9 -9
  45. package/dist/assets/cesium/Workers/{EllipsoidTangentPlane-214683dc.js → EllipsoidTangentPlane-6dd1b7af.js} +1 -1
  46. package/dist/assets/cesium/Workers/{EncodedCartesian3-81f70735.js → EncodedCartesian3-57415c8a.js} +6 -6
  47. package/dist/assets/cesium/Workers/{FrustumGeometry-ac42a6d9.js → FrustumGeometry-ee73037c.js} +139 -111
  48. package/dist/assets/cesium/Workers/{GeometryAttribute-7d6f1732.js → GeometryAttribute-ff5b4fb1.js} +20 -20
  49. package/dist/assets/cesium/Workers/{GeometryAttributes-f06a2792.js → GeometryAttributes-ad136444.js} +1 -1
  50. package/dist/assets/cesium/Workers/{GeometryInstance-451dc1cd.js → GeometryInstance-34d9e21e.js} +6 -6
  51. package/dist/assets/cesium/Workers/{GeometryPipeline-ce4339ed.js → GeometryPipeline-1f8fbf05.js} +22 -22
  52. package/dist/assets/cesium/Workers/{IndexDatatype-a55ceaa1.js → IndexDatatype-2643aa47.js} +13 -13
  53. package/dist/assets/cesium/Workers/{IntersectionTests-f6e6bd8a.js → IntersectionTests-70d39ba9.js} +37 -37
  54. package/dist/assets/cesium/Workers/{Math-2dbd6b93.js → Math-0a2ac845.js} +149 -139
  55. package/dist/assets/cesium/Workers/{Matrix2-13178034.js → Matrix2-e1298525.js} +256 -256
  56. package/dist/assets/cesium/Workers/{Matrix3-315394f6.js → Matrix3-41c58dde.js} +150 -150
  57. package/dist/assets/cesium/Workers/{OrientedBoundingBox-04920dc7.js → OrientedBoundingBox-159cf1d6.js} +19 -17
  58. package/dist/assets/cesium/Workers/{Plane-900aa728.js → Plane-4c3d403b.js} +5 -5
  59. package/dist/assets/cesium/Workers/{PolygonGeometryLibrary-a8680d96.js → PolygonGeometryLibrary-076a5d25.js} +6 -6
  60. package/dist/assets/cesium/Workers/PolygonPipeline-b9f2810a.js +1344 -0
  61. package/dist/assets/cesium/Workers/{PolylinePipeline-32f36d2a.js → PolylinePipeline-639192e0.js} +16 -16
  62. package/dist/assets/cesium/Workers/{PolylineVolumeGeometryLibrary-a510d657.js → PolylineVolumeGeometryLibrary-b73549fb.js} +7 -7
  63. package/dist/assets/cesium/Workers/{PrimitivePipeline-ba38434a.js → PrimitivePipeline-10ede1b6.js} +6 -6
  64. package/dist/assets/cesium/Workers/{RectangleGeometryLibrary-bdba697e.js → RectangleGeometryLibrary-c35a7356.js} +1 -1
  65. package/dist/assets/cesium/Workers/{RuntimeError-06c93819.js → RuntimeError-ef395448.js} +5 -5
  66. package/dist/assets/cesium/Workers/{TerrainEncoding-833187da.js → TerrainEncoding-668d242f.js} +30 -30
  67. package/dist/assets/cesium/Workers/Transforms-a2a85221.js +14712 -0
  68. package/dist/assets/cesium/Workers/{VertexFormat-6b480673.js → VertexFormat-030f11ff.js} +14 -14
  69. package/dist/assets/cesium/Workers/{WallGeometryLibrary-919eed92.js → WallGeometryLibrary-1938bf0d.js} +1 -1
  70. package/dist/assets/cesium/Workers/{WebGLConstants-a8cc3e8c.js → WebGLConstants-0b1ce7ba.js} +1 -1
  71. package/dist/assets/cesium/Workers/{WebMercatorProjection-13a90d41.js → WebMercatorProjection-13ed1a6e.js} +6 -6
  72. package/dist/assets/cesium/Workers/{arrayRemoveDuplicates-c2038105.js → arrayRemoveDuplicates-d2061e85.js} +5 -5
  73. package/dist/assets/cesium/Workers/cesiumWorkerBootstrapper.js +5 -5
  74. package/dist/assets/cesium/Workers/{combine-ca22a614.js → combine-d9581036.js} +5 -5
  75. package/dist/assets/cesium/Workers/combineGeometry.js +1 -1
  76. package/dist/assets/cesium/Workers/createBoxGeometry.js +1 -1
  77. package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +9 -9
  78. package/dist/assets/cesium/Workers/createCircleGeometry.js +13 -13
  79. package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +13 -13
  80. package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +11 -11
  81. package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +9 -9
  82. package/dist/assets/cesium/Workers/createCorridorGeometry.js +14 -14
  83. package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +12 -12
  84. package/dist/assets/cesium/Workers/createCylinderGeometry.js +1 -1
  85. package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +13 -13
  86. package/dist/assets/cesium/Workers/createEllipseGeometry.js +1 -1
  87. package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +1 -1
  88. package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +1 -1
  89. package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +1 -1
  90. package/dist/assets/cesium/Workers/createFrustumGeometry.js +1 -1
  91. package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +8 -8
  92. package/dist/assets/cesium/Workers/createGeometry.js +1 -1
  93. package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +33 -33
  94. package/dist/assets/cesium/Workers/createPlaneGeometry.js +8 -8
  95. package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +6 -6
  96. package/dist/assets/cesium/Workers/createPolygonGeometry.js +25 -25
  97. package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +17 -17
  98. package/dist/assets/cesium/Workers/createPolylineGeometry.js +11 -11
  99. package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +9 -9
  100. package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +9 -9
  101. package/dist/assets/cesium/Workers/createRectangleGeometry.js +16 -16
  102. package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +12 -12
  103. package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +10 -10
  104. package/dist/assets/cesium/Workers/createSphereGeometry.js +11 -11
  105. package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +12 -12
  106. package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +2 -2
  107. package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +1 -1
  108. package/dist/assets/cesium/Workers/createVectorTileGeometries.js +8 -8
  109. package/dist/assets/cesium/Workers/createVectorTilePoints.js +1 -1
  110. package/dist/assets/cesium/Workers/createVectorTilePolygons.js +1 -1
  111. package/dist/assets/cesium/Workers/createVectorTilePolylines.js +1 -1
  112. package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
  113. package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +27 -28
  114. package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +33 -38
  115. package/dist/assets/cesium/Workers/createWallGeometry.js +14 -14
  116. package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +14 -14
  117. package/dist/assets/cesium/Workers/decodeDraco.js +10 -2
  118. package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +15 -15
  119. package/dist/assets/cesium/Workers/decodeI3S.js +1 -1
  120. package/dist/assets/cesium/Workers/{defaultValue-0a909f67.js → defaultValue-fe22d8c0.js} +2 -2
  121. package/dist/assets/cesium/Workers/package.js +1 -1
  122. package/dist/assets/cesium/Workers/transcodeKTX2.js +46 -26
  123. package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -1
  124. package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +24 -24
  125. package/dist/assets/{cesium.166f91.js → cesium.1457fa.js} +155448 -127152
  126. package/dist/assets/cesium.js +1 -1
  127. package/dist/assets/core.47836f.js +19060 -0
  128. package/dist/assets/core.js +1 -1
  129. package/dist/assets/index-bb372634.js +1 -0
  130. package/dist/assets/{ol.d2cba3.js → ol.9e4d23.js} +28380 -13095
  131. package/dist/assets/ol.js +1 -1
  132. package/dist/assets/ui.6ed89d.css +5 -0
  133. package/dist/assets/ui.6ed89d.js +13461 -0
  134. package/dist/assets/ui.js +1 -1
  135. package/dist/assets/{vue.5d00e9.js → vue.7327e4.js} +834 -598
  136. package/dist/assets/vue.js +2 -2
  137. package/dist/assets/{vuetify.2f1432.css → vuetify.d2131d.css} +2 -2
  138. package/dist/assets/{vuetify.2f1432.js → vuetify.d2131d.js} +343 -103
  139. package/dist/assets/vuetify.js +2 -2
  140. package/dist/index.html +28 -7
  141. package/index.html +35 -7
  142. package/index.js +82 -17
  143. package/lib/cesium.js +1 -1
  144. package/lib/core.js +1 -1
  145. package/lib/olLib.js +19 -16
  146. package/lib/ui.js +1 -1
  147. package/lib/vue.js +2 -2
  148. package/lib/vuetify.js +2 -2
  149. package/package.json +29 -19
  150. package/plugins/.eslintrc +9 -0
  151. package/plugins/@vcmap/create-link/fallbackCreateLink.vue +13 -11
  152. package/plugins/@vcmap/create-link/index.js +15 -6
  153. package/plugins/@vcmap/project-selector/ModulesListComponent.vue +4 -8
  154. package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +5 -10
  155. package/plugins/@vcmap/project-selector/README.md +4 -2
  156. package/plugins/@vcmap/project-selector/config.json +13 -13
  157. package/plugins/@vcmap/project-selector/de.json +2 -2
  158. package/plugins/@vcmap/project-selector/en.json +2 -2
  159. package/plugins/@vcmap/project-selector/index.js +63 -28
  160. package/plugins/@vcmap/search-nominatim/LICENSE.md +5 -6
  161. package/plugins/@vcmap/search-nominatim/README.md +2 -1
  162. package/plugins/@vcmap/search-nominatim/config.json +1 -2
  163. package/plugins/@vcmap/search-nominatim/index.js +7 -4
  164. package/plugins/@vcmap/search-nominatim/nominatim.js +7 -2
  165. package/plugins/@vcmap/search-nominatim/package.json +2 -36
  166. package/plugins/@vcmap/simple-graph/README.md +29 -9
  167. package/plugins/@vcmap/simple-graph/SimpleGraphComponent.vue +2 -7
  168. package/plugins/@vcmap/simple-graph/index.js +2 -2
  169. package/plugins/@vcmap/simple-graph/simpleGraphView.js +3 -1
  170. package/plugins/@vcmap/theme-changer/README.md +5 -3
  171. package/plugins/@vcmap/theme-changer/ThemeChangerComponent.vue +6 -10
  172. package/plugins/@vcmap/theme-changer/config.json +67 -67
  173. package/plugins/@vcmap/theme-changer/index.js +11 -5
  174. package/plugins/@vcmap-show-case/README.md +2 -1
  175. package/plugins/@vcmap-show-case/buttons-example/ButtonsExample.vue +87 -46
  176. package/plugins/@vcmap-show-case/buttons-example/index.js +10 -8
  177. package/plugins/@vcmap-show-case/category-tester/CategoriesExample.vue +135 -0
  178. package/plugins/@vcmap-show-case/category-tester/CollectionComponentOptions.vue +209 -0
  179. package/plugins/@vcmap-show-case/category-tester/index.js +28 -4
  180. package/plugins/@vcmap-show-case/collection-manager-example/CollectionManagerExample.vue +182 -0
  181. package/plugins/@vcmap-show-case/collection-manager-example/README.md +3 -0
  182. package/plugins/@vcmap-show-case/collection-manager-example/index.js +74 -0
  183. package/plugins/@vcmap-show-case/collection-manager-example/package.json +5 -0
  184. package/plugins/@vcmap-show-case/config-editor/{editor.vue → ConfigEditor.vue} +20 -24
  185. package/plugins/@vcmap-show-case/config-editor/index.js +13 -11
  186. package/plugins/@vcmap-show-case/context-menu-tester/index.js +18 -10
  187. package/plugins/@vcmap-show-case/form-inputs-example/FormInputsExample.vue +109 -121
  188. package/plugins/@vcmap-show-case/form-inputs-example/config.json +3 -3
  189. package/plugins/@vcmap-show-case/form-inputs-example/exampleActions.js +14 -4
  190. package/plugins/@vcmap-show-case/form-inputs-example/index.js +41 -19
  191. package/plugins/@vcmap-show-case/form-inputs-example/validation.js +2 -1
  192. package/plugins/@vcmap-show-case/icons-example/README.md +1 -1
  193. package/plugins/@vcmap-show-case/icons-example/allIconsComponent.vue +10 -10
  194. package/plugins/@vcmap-show-case/icons-example/index.js +10 -8
  195. package/plugins/@vcmap-show-case/list-example/ListExample.vue +221 -103
  196. package/plugins/@vcmap-show-case/list-example/index.js +10 -8
  197. package/plugins/@vcmap-show-case/notifier-tester/index.js +9 -3
  198. package/plugins/@vcmap-show-case/notifier-tester/notifierTester.vue +15 -21
  199. package/plugins/@vcmap-show-case/switch-map-callback-example/README.md +21 -0
  200. package/plugins/@vcmap-show-case/switch-map-callback-example/SwitchMapCallback.js +47 -0
  201. package/plugins/@vcmap-show-case/switch-map-callback-example/config.json +3 -0
  202. package/plugins/@vcmap-show-case/switch-map-callback-example/index.js +34 -0
  203. package/plugins/@vcmap-show-case/switch-map-callback-example/package.json +5 -0
  204. package/plugins/@vcmap-show-case/table-example/DataTableExample.vue +22 -42
  205. package/plugins/@vcmap-show-case/table-example/index.js +10 -8
  206. package/plugins/@vcmap-show-case/textfields-example/TextfieldsExample.vue +7 -30
  207. package/plugins/@vcmap-show-case/textfields-example/index.js +10 -4
  208. package/plugins/@vcmap-show-case/window-tester/WindowExample.vue +16 -13
  209. package/plugins/@vcmap-show-case/window-tester/emptyComponent.vue +4 -7
  210. package/plugins/@vcmap-show-case/window-tester/index.js +26 -20
  211. package/plugins/@vcmap-show-case/window-tester/myCustomHeader.vue +7 -3
  212. package/plugins/@vcmap-show-case/window-tester/toolbox-data.js +82 -5
  213. package/plugins/@vcmap-show-case/window-tester/windowExampleContent.vue +3 -7
  214. package/plugins/@vcmap-show-case/wizard-example/index.js +9 -3
  215. package/plugins/@vcmap-show-case/wizard-example/wizardExample.vue +36 -38
  216. package/plugins/package.json +3 -1
  217. package/public/assets/@mdi/font/LICENSE +20 -0
  218. package/public/assets/@mdi/font/css/materialdesignicons.css.map +16 -0
  219. package/public/assets/@mdi/font/css/materialdesignicons.min.css +3 -0
  220. package/public/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
  221. package/public/assets/favicon-128.png +0 -0
  222. package/public/assets/favicon-180.png +0 -0
  223. package/public/assets/favicon-192.png +0 -0
  224. package/public/assets/favicon-32.png +0 -0
  225. package/public/assets/logo-mobile.svg +9 -0
  226. package/public/assets/logo.svg +26 -0
  227. package/src/actions/actionHelper.js +49 -11
  228. package/src/actions/styleSelector.vue +20 -11
  229. package/src/application/VcsApp.vue +151 -85
  230. package/src/application/VcsAttributions.vue +25 -11
  231. package/src/application/VcsAttributionsFooter.vue +12 -10
  232. package/src/application/VcsMap.vue +9 -5
  233. package/src/application/VcsNavbar.vue +58 -36
  234. package/src/application/VcsSettings.vue +5 -12
  235. package/src/application/attributionsHelper.js +23 -11
  236. package/src/application/vcsAppWrapper.vue +1 -3
  237. package/src/callback/activateLayersCallback.js +54 -0
  238. package/src/callback/applyLayerStyleCallback.js +63 -0
  239. package/src/callback/deactivateLayersCallback.js +54 -0
  240. package/src/callback/goToViewpointCallback.js +54 -0
  241. package/src/callback/vcsCallback.js +66 -0
  242. package/src/components/buttons/VcsActionButtonList.vue +43 -22
  243. package/src/components/buttons/VcsButton.vue +50 -116
  244. package/src/components/buttons/VcsFormButton.vue +178 -0
  245. package/src/components/buttons/VcsToolButton.vue +161 -0
  246. package/src/components/form-inputs-controls/VcsCheckbox.vue +6 -7
  247. package/src/components/form-inputs-controls/VcsDatePicker.vue +66 -21
  248. package/src/components/form-inputs-controls/VcsFormSection.vue +11 -13
  249. package/src/components/form-inputs-controls/VcsLabel.vue +9 -10
  250. package/src/components/form-inputs-controls/VcsRadio.vue +44 -44
  251. package/src/components/form-inputs-controls/VcsSelect.vue +32 -15
  252. package/src/components/form-inputs-controls/VcsSlider.vue +72 -0
  253. package/src/components/form-inputs-controls/VcsTextArea.vue +21 -14
  254. package/src/components/form-inputs-controls/VcsTextField.vue +43 -18
  255. package/src/components/form-inputs-controls/VcsWizard.vue +79 -80
  256. package/src/components/form-inputs-controls/VcsWizardStep.vue +20 -21
  257. package/src/components/form-inputs-controls/composables.js +13 -8
  258. package/src/components/form-output/VcsFormattedNumber.vue +26 -26
  259. package/src/components/icons/+all.js +13 -5
  260. package/src/components/icons/2DAreaIcon.vue +62 -10
  261. package/src/components/icons/2DDistanceIcon.vue +14 -2
  262. package/src/components/icons/3DAreaIcon.vue +62 -10
  263. package/src/components/icons/3DDistanceIcon.vue +14 -2
  264. package/src/components/icons/3DHeightIcon.vue +14 -2
  265. package/src/components/icons/AngleIcon.vue +12 -3
  266. package/src/components/icons/AssociationsIcon.vue +6 -1
  267. package/src/components/icons/AxisIcon.vue +34 -5
  268. package/src/components/icons/BoundingBoxIcon.vue +31 -5
  269. package/src/components/icons/CheckboxCheckedIcon.vue +4 -1
  270. package/src/components/icons/CheckboxIcon.vue +1 -8
  271. package/src/components/icons/CheckboxIndeterminateIcon.vue +9 -2
  272. package/src/components/icons/CircleIcon.vue +24 -4
  273. package/src/components/icons/ClippingHorizontalIcon.vue +14 -2
  274. package/src/components/icons/ClippingIcon.vue +13 -2
  275. package/src/components/icons/ClippingVerticalIcon.vue +14 -2
  276. package/src/components/icons/ColorPickerIcon.vue +13 -2
  277. package/src/components/icons/ColorSwatchIcon.vue +7 -1
  278. package/src/components/icons/CommentIcon.vue +6 -1
  279. package/src/components/icons/CompassIcon.vue +21 -3
  280. package/src/components/icons/ComponentsIcon.vue +14 -2
  281. package/src/components/icons/ConeIcon.vue +26 -4
  282. package/src/components/icons/DimensionsHouseIcon.vue +7 -1
  283. package/src/components/icons/EditIcon.vue +13 -2
  284. package/src/components/icons/ElevationProfileIcon.vue +6 -1
  285. package/src/components/icons/ExportAreaIcon.vue +13 -2
  286. package/src/components/icons/ExportFlightIcon.vue +13 -2
  287. package/src/components/icons/ExportIcon.vue +14 -2
  288. package/src/components/icons/ExternalLinkIcon.vue +18 -3
  289. package/src/components/icons/EyeIcon.vue +12 -2
  290. package/src/components/icons/FastForwardIcon.vue +13 -2
  291. package/src/components/icons/FilterIcon.vue +13 -2
  292. package/src/components/icons/GlobalTerrainIcon.vue +12 -2
  293. package/src/components/icons/GlobeNatureIcon.vue +7 -1
  294. package/src/components/icons/GroundIcon.vue +12 -2
  295. package/src/components/icons/HealthCareIndustriesIcon.vue +6 -1
  296. package/src/components/icons/HelpIcon.vue +12 -2
  297. package/src/components/icons/HideIcon.vue +17 -3
  298. package/src/components/icons/HomePointIcon.vue +13 -3
  299. package/src/components/icons/HospitalsIcon.vue +6 -1
  300. package/src/components/icons/HouseIcon.vue +20 -3
  301. package/src/components/icons/ImportIcon.vue +21 -3
  302. package/src/components/icons/InfoIcon.vue +19 -3
  303. package/src/components/icons/KebabIcon.vue +12 -2
  304. package/src/components/icons/LabelIcon.vue +21 -3
  305. package/src/components/icons/LayersIcon.vue +12 -2
  306. package/src/components/icons/LegendIcon.vue +13 -3
  307. package/src/components/icons/LineIcon.vue +20 -3
  308. package/src/components/icons/LinkIcon.vue +13 -2
  309. package/src/components/icons/LogoutIcon.vue +13 -2
  310. package/src/components/icons/MapIcon.vue +14 -2
  311. package/src/components/icons/MenuIcon.vue +7 -1
  312. package/src/components/icons/MinusIcon.vue +14 -2
  313. package/src/components/icons/ObjectAttributeIcon.vue +13 -2
  314. package/src/components/icons/ObjectSelectIcon.vue +14 -2
  315. package/src/components/icons/ObliqueViewIcon.vue +11 -2
  316. package/src/components/icons/PdfIcon.vue +12 -2
  317. package/src/components/icons/PedestrianIcon.vue +13 -2
  318. package/src/components/icons/PenIcon.vue +13 -3
  319. package/src/components/icons/PlayCircleIcon.vue +20 -3
  320. package/src/components/icons/PlusIcon.vue +14 -3
  321. package/src/components/icons/PoiIcon.vue +17 -3
  322. package/src/components/icons/PointSelectIcon.vue +12 -2
  323. package/src/components/icons/PolygonIcon.vue +7 -1
  324. package/src/components/icons/PresentationModeIcon.vue +13 -2
  325. package/src/components/icons/ProgressIcon.vue +8 -6
  326. package/src/components/icons/QueryIcon.vue +31 -5
  327. package/src/components/icons/RectangleIcon.vue +24 -4
  328. package/src/components/icons/ReturnIcon.vue +13 -2
  329. package/src/components/icons/RewindIcon.vue +13 -2
  330. package/src/components/icons/RotateLeftIcon.vue +13 -2
  331. package/src/components/icons/RotateRightIcon.vue +13 -2
  332. package/src/components/icons/ScreenshotIcon.vue +52 -10
  333. package/src/components/icons/SearchIcon.vue +13 -3
  334. package/src/components/icons/ShadowIcon.vue +14 -3
  335. package/src/components/icons/ShapesIcon.vue +13 -3
  336. package/src/components/icons/ShareIcon.vue +17 -4
  337. package/src/components/icons/SimpleCircleFilledIcon.vue +14 -10
  338. package/src/components/icons/SimpleCircleHalfFilledIcon.vue +6 -1
  339. package/src/components/icons/SimpleCircleOutlinedIcon.vue +14 -10
  340. package/src/components/icons/SkipNextIcon.vue +11 -2
  341. package/src/components/icons/SkipPreviousIcon.vue +17 -3
  342. package/src/components/icons/SplitViewIcon.vue +6 -1
  343. package/src/components/icons/TerrainBoxIcon.vue +12 -2
  344. package/src/components/icons/TextStyleIcon.vue +7 -1
  345. package/src/components/icons/ThreeDimensionsIcon.vue +13 -2
  346. package/src/components/icons/ToolsIcon.vue +12 -2
  347. package/src/components/icons/TouchIcon.vue +13 -2
  348. package/src/components/icons/TrashCanIcon.vue +13 -2
  349. package/src/components/icons/TriangleIcon.vue +6 -2
  350. package/src/components/icons/TwoDimensionsIcon.vue +14 -2
  351. package/src/components/icons/UploadIcon.vue +13 -2
  352. package/src/components/icons/UserProfileIcon.vue +13 -2
  353. package/src/components/icons/UserShareIcon.vue +12 -2
  354. package/src/components/icons/VideoRecorderIcon.vue +16 -3
  355. package/src/components/icons/ViewpointFlightIcon.vue +22 -4
  356. package/src/components/icons/ViewpointIcon.vue +22 -4
  357. package/src/components/icons/Viewshed360Icon.vue +14 -2
  358. package/src/components/icons/ViewshedConeIcon.vue +13 -2
  359. package/src/components/icons/ViewshedIcon.vue +14 -2
  360. package/src/components/icons/WalkingIcon.vue +13 -2
  361. package/src/components/icons/WallIcon.vue +19 -3
  362. package/src/components/icons/WandIcon.vue +129 -21
  363. package/src/components/imageElementInjector.vue +1 -3
  364. package/src/components/lists/VcsActionList.vue +21 -18
  365. package/src/components/lists/VcsList.vue +211 -100
  366. package/src/components/lists/VcsTreeview.vue +30 -26
  367. package/src/components/lists/VcsTreeviewLeaf.vue +23 -23
  368. package/src/components/lists/VcsTreeviewSearchbar.vue +19 -15
  369. package/src/components/notification/VcsBadge.vue +4 -6
  370. package/src/components/notification/VcsTooltip.vue +95 -94
  371. package/src/components/notification/validation.js +1 -1
  372. package/src/components/tables/VcsDataTable.vue +107 -97
  373. package/src/components/tables/VcsTable.vue +38 -30
  374. package/src/contentTree/LayerTree.vue +17 -12
  375. package/src/contentTree/contentTreeCollection.js +49 -23
  376. package/src/contentTree/contentTreeItem.js +58 -17
  377. package/src/contentTree/groupContentTreeItem.js +45 -22
  378. package/src/contentTree/layerContentTreeItem.js +40 -28
  379. package/src/contentTree/layerGroupContentTreeItem.js +51 -39
  380. package/src/contentTree/nodeContentTreeItem.js +18 -7
  381. package/src/contentTree/obliqueCollectionContentTreeItem.js +49 -20
  382. package/src/contentTree/subContentTreeItem.js +13 -4
  383. package/src/contentTree/vcsObjectContentTreeItem.js +24 -15
  384. package/src/contentTree/viewpointContentTreeItem.js +20 -6
  385. package/src/downloadHelper.js +4 -1
  386. package/src/featureInfo/AddressBalloonComponent.vue +11 -16
  387. package/src/featureInfo/BalloonComponent.vue +35 -27
  388. package/src/featureInfo/abstractFeatureInfoView.js +45 -14
  389. package/src/featureInfo/addressBalloonFeatureInfoView.js +19 -7
  390. package/src/featureInfo/balloonFeatureInfoView.js +22 -9
  391. package/src/featureInfo/balloonHelper.js +61 -42
  392. package/src/featureInfo/featureInfo.js +102 -73
  393. package/src/featureInfo/featureInfoInteraction.js +13 -7
  394. package/src/featureInfo/iframeFeatureInfoView.js +3 -1
  395. package/src/featureInfo/tableFeatureInfoView.js +15 -5
  396. package/src/i18n/de.js +5 -2
  397. package/src/i18n/en.js +5 -2
  398. package/src/i18n/i18nCollection.js +182 -155
  399. package/src/init.js +121 -121
  400. package/src/legend/legendHelper.js +11 -6
  401. package/src/legend/styleLegendItem.vue +18 -12
  402. package/src/legend/vcsLegend.vue +16 -18
  403. package/src/manager/buttonManager.js +21 -3
  404. package/src/manager/collectionManager/CollectionComponent.vue +142 -0
  405. package/src/manager/collectionManager/CollectionComponentList.vue +62 -0
  406. package/src/manager/collectionManager/CollectionComponentProvider.vue +38 -0
  407. package/src/manager/collectionManager/CollectionManager.vue +43 -0
  408. package/src/manager/collectionManager/categoryManager.js +83 -0
  409. package/src/manager/collectionManager/collectionComponent.js +453 -0
  410. package/src/manager/collectionManager/collectionManager.js +432 -0
  411. package/src/manager/contextMenu/contextMenuComponent.vue +2 -6
  412. package/src/manager/contextMenu/contextMenuInteraction.js +6 -1
  413. package/src/manager/contextMenu/contextMenuManager.js +37 -22
  414. package/src/manager/navbarManager.js +19 -11
  415. package/src/manager/toolbox/GroupToolboxComponent.vue +27 -28
  416. package/src/manager/toolbox/SelectToolboxComponent.vue +42 -44
  417. package/src/manager/toolbox/ToolboxManager.vue +22 -15
  418. package/src/manager/toolbox/toolboxManager.js +30 -12
  419. package/src/manager/window/WindowComponent.vue +18 -21
  420. package/src/manager/window/WindowComponentHeader.vue +34 -30
  421. package/src/manager/window/WindowManager.vue +33 -22
  422. package/src/manager/window/windowHelper.js +79 -23
  423. package/src/manager/window/windowManager.js +61 -32
  424. package/src/navigation/mapNavCompass.vue +17 -3
  425. package/src/navigation/mapNavigation.vue +93 -48
  426. package/src/navigation/obliqueRotation.vue +6 -8
  427. package/src/navigation/orientationToolsButton.vue +6 -9
  428. package/src/navigation/overviewMap.js +79 -42
  429. package/src/navigation/overviewMapClickedInteraction.js +6 -1
  430. package/src/navigation/tiltSlider.vue +6 -10
  431. package/src/navigation/vcsCompass.vue +1 -9
  432. package/src/navigation/vcsZoomButton.vue +16 -17
  433. package/src/notifier/notifier.js +22 -13
  434. package/src/notifier/notifierComponent.vue +21 -22
  435. package/src/pluginHelper.js +28 -9
  436. package/src/search/resultItem.vue +10 -16
  437. package/src/search/resultsComponent.vue +30 -24
  438. package/src/search/search.js +36 -19
  439. package/src/search/searchComponent.vue +27 -19
  440. package/src/setup.js +9 -9
  441. package/src/state.js +22 -6
  442. package/src/styles/_theming.scss +2 -2
  443. package/src/styles/_typography.scss +2 -3
  444. package/src/styles/main.scss +8 -0
  445. package/src/styles/shades.scss +4 -2
  446. package/src/styles/utils/_border.scss +1 -1
  447. package/src/styles/utils/_display.scss +1 -1
  448. package/src/styles/variables.scss +39 -34
  449. package/src/styles/vcsFont.scss +2 -22
  450. package/src/styles/vcsGrid.scss +9 -0
  451. package/src/uiConfig.js +3 -1
  452. package/src/vcsUiApp.js +227 -66
  453. package/src/vuePlugins/i18n.js +22 -23
  454. package/src/vuePlugins/vuetify.js +4 -1
  455. package/dist/assets/cesium/Workers/PolygonPipeline-844aab0a.js +0 -1345
  456. package/dist/assets/cesium/Workers/Transforms-40229881.js +0 -14696
  457. package/dist/assets/core.9342a1.js +0 -18431
  458. package/dist/assets/index.fd041928.js +0 -1
  459. package/dist/assets/ui.c27597.css +0 -5
  460. package/dist/assets/ui.c27597.js +0 -17799
  461. package/plugins/@vcmap-show-case/category-tester/Categories.vue +0 -264
  462. package/plugins/@vcmap-show-case/category-tester/Category.vue +0 -144
  463. package/src/manager/categoryManager/CategoryComponent.vue +0 -124
  464. package/src/manager/categoryManager/CategoryComponentList.vue +0 -57
  465. package/src/manager/categoryManager/CategoryManager.vue +0 -48
  466. package/src/manager/categoryManager/categoryManager.js +0 -588
  467. package/start.js +0 -9
  468. /package/dist/assets/cesium/Workers/{GeometryOffsetAttribute-04332ce7.js → GeometryOffsetAttribute-9ad0019c.js} +0 -0
  469. /package/{src/assets/favicon-128.png → dist/assets/favicon-128.4c4ce5.png} +0 -0
  470. /package/{src/assets/favicon-180.png → dist/assets/favicon-180.5b99c0.png} +0 -0
  471. /package/{src/assets/favicon-192.png → dist/assets/favicon-192.0e205e.png} +0 -0
  472. /package/{src/assets/favicon-32.png → dist/assets/favicon-32.6b9add.png} +0 -0
  473. /package/dist/assets/{favicon.decf54cc.svg → favicon.d5ec97.svg} +0 -0
  474. /package/dist/assets/font/{TitilliumWeb-Regular.woff2 → TitilliumWeb-Regular.9ca076.woff2} +0 -0
  475. /package/{src/assets/logo-mobile.svg → dist/assets/logo-mobile.2d10a6.svg} +0 -0
  476. /package/{src/assets/logo.svg → dist/assets/logo.27089a.svg} +0 -0
  477. /package/{src → public}/assets/favicon.svg +0 -0
  478. /package/{src → public}/assets/font/OFL.txt +0 -0
  479. /package/{src → public}/assets/font/TitilliumWeb-Regular.woff2 +0 -0
@@ -1,155 +1,182 @@
1
- // eslint-disable-next-line max-classes-per-file
2
- import { moduleIdSymbol, IndexedCollection } from '@vcmap/core';
3
- import { getLogger } from '@vcsuite/logger';
4
-
5
- /**
6
- * returns true if the given value is of type object and not an array.
7
- * This function does not handle Maps and Sets and also returns true for these.
8
- * This helper function is mainly used for the i18nCollection mergeDeep function
9
- * @param {*} item
10
- * @returns {boolean}
11
- */
12
- export function isObject(item) {
13
- return (!!item && typeof item === 'object' && !Array.isArray(item));
14
- }
15
-
16
- /**
17
- * A symbol added to plugin messages added to this collection.
18
- * @type {symbol}
19
- */
20
- export const i18nPluginSymbol = Symbol('I18nPluginSymbol');
21
-
22
- /**
23
- * Deep merge objects into a new Object. Can only handle stringifyable content.
24
- * This will create a new deep copy of the given sources. No copy by reference.
25
- * @param {...Object} sources
26
- * @returns {Object}
27
- */
28
- export function mergeDeep(...sources) {
29
- return sources.reduce((prev, obj) => {
30
- Object.entries(obj).forEach(([key, value]) => {
31
- if (isObject(prev[key]) && isObject(value)) { // recursive merge if both values are objects.
32
- prev[key] = mergeDeep(prev[key], value);
33
- } else if (isObject(prev[key])) { // do not override complex object with atomic value
34
- getLogger('i18n').warning(
35
- `Overwriting a complex Object I18n Key with a string value is not allowed. Value:
36
- ${JSON.stringify(prev[key])}, newValue: ${JSON.stringify(obj[key])}`,
37
- );
38
- } else {
39
- // JSON parse/stringify to create a deep copy of the to set value, so we do not pass parts
40
- // of a source by reference
41
- prev[key] = JSON.parse(JSON.stringify(value));
42
- }
43
- });
44
- return prev;
45
- }, {});
46
- }
47
-
48
-
49
- /**
50
- * @extends {IndexedCollection<Object>}
51
- */
52
- class I18nCollection extends IndexedCollection {
53
- /**
54
- * @param {function():string} getDynamicModuleId - function to get the current dynamic module id
55
- */
56
- constructor(getDynamicModuleId) {
57
- super(false);
58
- /**
59
- * @type {function(): string}
60
- * @private
61
- */
62
- this._getDynamicModuleId = getDynamicModuleId;
63
- }
64
-
65
- /**
66
- * @inheritDoc
67
- */
68
- add(item) {
69
- if (!item[moduleIdSymbol]) {
70
- item[moduleIdSymbol] = this._getDynamicModuleId();
71
- }
72
- super.add(item);
73
- }
74
-
75
- /**
76
- * @param {Array<Object>} configArray
77
- * @param {string} moduleId
78
- * @returns {Promise<void>}
79
- */
80
- async parseItems(configArray, moduleId) {
81
- if (Array.isArray(configArray)) {
82
- configArray.forEach((item) => {
83
- item[moduleIdSymbol] = moduleId;
84
- this.add(item);
85
- });
86
- }
87
- }
88
-
89
- /**
90
- * @param {string} moduleId
91
- */
92
- async removeModule(moduleId) {
93
- [...this]
94
- .filter(item => item[moduleIdSymbol] === moduleId)
95
- .forEach((item) => {
96
- this.remove(item);
97
- });
98
- }
99
-
100
- /**
101
- * @param {string} moduleId
102
- * @returns {Array<Object>}
103
- */
104
- serializeModule(moduleId) {
105
- return [...this]
106
- .filter(item => item[moduleIdSymbol] === moduleId)
107
- .filter(item => !item[i18nPluginSymbol])
108
- .map(item => JSON.parse(JSON.stringify(item)));
109
- }
110
-
111
- /**
112
- * This method adds plugin messages to the collection. It is no necessary to call this function
113
- * from within a plugin. Use the i18n property on your plugin.
114
- * @param {string} plugin Name of the plugin
115
- * @param {string} moduleId
116
- * @param {Object} messages
117
- */
118
- addPluginMessages(plugin, moduleId, messages) {
119
- messages[i18nPluginSymbol] = plugin;
120
- messages[moduleIdSymbol] = moduleId;
121
- this.add(messages);
122
- }
123
-
124
- /**
125
- * This method removes plugin messages from the collection. It is no necessary to call this function
126
- * from within a plugin. Once your plugin is removed, the VcsUiApp will call this for you.
127
- * @param {string} pluginName
128
- * @param {string} moduleId
129
- */
130
- removePluginMessages(pluginName, moduleId) {
131
- [...this]
132
- .filter(item => item[i18nPluginSymbol] === pluginName && item[moduleIdSymbol] === moduleId)
133
- .forEach((item) => {
134
- this.remove(item);
135
- });
136
- }
137
-
138
- /**
139
- * returns a merged Message Object with the locale as a key and an Object with all the translated keys
140
- * @returns {Object}
141
- */
142
- getMergedMessages() {
143
- return mergeDeep(...this);
144
- }
145
-
146
- /**
147
- * @inheritDoc
148
- */
149
- destroy() {
150
- this._getDynamicModuleId = null;
151
- super.destroy();
152
- }
153
- }
154
-
155
- export default I18nCollection;
1
+ // eslint-disable-next-line max-classes-per-file
2
+ import { v5 as uuidv5 } from 'uuid';
3
+ import { IndexedCollection, moduleIdSymbol } from '@vcmap/core';
4
+ import { getLogger } from '@vcsuite/logger';
5
+
6
+ /**
7
+ * @type {string}
8
+ */
9
+ const uniqueNamespace = '9c27cc2d-552f-4637-9194-09329ed4c1dc';
10
+
11
+ /**
12
+ * returns true if the given value is of type object and not an array.
13
+ * This function does not handle Maps and Sets and also returns true for these.
14
+ * This helper function is mainly used for the i18nCollection mergeDeep function
15
+ * @param {*} item
16
+ * @returns {boolean}
17
+ */
18
+ export function isObject(item) {
19
+ return !!item && typeof item === 'object' && !Array.isArray(item);
20
+ }
21
+
22
+ /**
23
+ * Item for internationalization containing an object with key value mapping for each locale (de, en, nl, pl, ...).
24
+ * Other locales can be supported by adding corresponding mapping objects with associated locale key.
25
+ * @typedef {Object} I18nConfigurationItem
26
+ * @property {string} [name] - optional name for the item. If not provided checksum is used.
27
+ * @property {Object} [properties]
28
+ * @property {Object} [de]
29
+ * @property {Object} [en]
30
+ * ...
31
+ */
32
+
33
+ /**
34
+ * A symbol added to plugin messages added to this collection.
35
+ * @type {symbol}
36
+ */
37
+ export const i18nPluginSymbol = Symbol('I18nPluginSymbol');
38
+
39
+ /**
40
+ * Deep merge objects into a new Object. Can only handle stringifyable content.
41
+ * This will create a new deep copy of the given sources. No copy by reference.
42
+ * @param {...Object} sources
43
+ * @returns {Object}
44
+ */
45
+ export function mergeDeep(...sources) {
46
+ return sources.reduce((prev, obj) => {
47
+ Object.entries(obj)
48
+ .filter(([key]) => !['name', 'properties'].includes(key))
49
+ .forEach(([key, value]) => {
50
+ if (isObject(prev[key]) && isObject(value)) {
51
+ // recursive merge if both values are objects.
52
+ prev[key] = mergeDeep(prev[key], value);
53
+ } else if (isObject(prev[key])) {
54
+ // do not override complex object with atomic value
55
+ getLogger('i18n').warning(
56
+ `Overwriting a complex Object I18n Key with a string value is not allowed. Value:
57
+ ${JSON.stringify(prev[key])}, newValue: ${JSON.stringify(obj[key])}`,
58
+ );
59
+ } else {
60
+ // JSON parse/stringify to create a deep copy of the to set value, so we do not pass parts
61
+ // of a source by reference
62
+ prev[key] = JSON.parse(JSON.stringify(value));
63
+ }
64
+ });
65
+ return prev;
66
+ }, {});
67
+ }
68
+
69
+ /**
70
+ * @extends {IndexedCollection<I18nConfigurationItem>}
71
+ */
72
+ class I18nCollection extends IndexedCollection {
73
+ /**
74
+ * @param {function():string} getDynamicModuleId - function to get the current dynamic module id
75
+ */
76
+ constructor(getDynamicModuleId) {
77
+ super();
78
+ /**
79
+ * @type {function(): string}
80
+ * @private
81
+ */
82
+ this._getDynamicModuleId = getDynamicModuleId;
83
+ }
84
+
85
+ /**
86
+ * @inheritDoc
87
+ */
88
+ add(item) {
89
+ if (!item[moduleIdSymbol]) {
90
+ item[moduleIdSymbol] = this._getDynamicModuleId();
91
+ }
92
+ if (!item.name) {
93
+ item.name = uuidv5(JSON.stringify(item), uniqueNamespace);
94
+ }
95
+ super.add(item);
96
+ }
97
+
98
+ /**
99
+ * @param {Array<I18nConfigurationItem>} configArray
100
+ * @param {string} moduleId
101
+ * @returns {Promise<void>}
102
+ */
103
+ async parseItems(configArray, moduleId) {
104
+ if (Array.isArray(configArray)) {
105
+ configArray.forEach((item) => {
106
+ this.add({ ...item, [moduleIdSymbol]: moduleId });
107
+ });
108
+ }
109
+ }
110
+
111
+ /**
112
+ * @param {string} moduleId
113
+ */
114
+ async removeModule(moduleId) {
115
+ [...this]
116
+ .filter((item) => item[moduleIdSymbol] === moduleId)
117
+ .forEach((item) => {
118
+ this.remove(item);
119
+ });
120
+ }
121
+
122
+ /**
123
+ * @param {string} moduleId
124
+ * @returns {Array<I18nConfigurationItem>}
125
+ */
126
+ serializeModule(moduleId) {
127
+ return [...this]
128
+ .filter((item) => item[moduleIdSymbol] === moduleId)
129
+ .filter((item) => !item[i18nPluginSymbol])
130
+ .map((item) => JSON.parse(JSON.stringify(item)));
131
+ }
132
+
133
+ /**
134
+ * This method adds plugin messages to the collection. It is no necessary to call this function
135
+ * from within a plugin. Use the i18n property on your plugin.
136
+ * @param {string} plugin Name of the plugin
137
+ * @param {string} moduleId
138
+ * @param {Object} messages
139
+ */
140
+ addPluginMessages(plugin, moduleId, messages) {
141
+ messages[i18nPluginSymbol] = plugin;
142
+ messages[moduleIdSymbol] = moduleId;
143
+ messages.name = plugin;
144
+ this.add(messages);
145
+ }
146
+
147
+ /**
148
+ * This method removes plugin messages from the collection. It is no necessary to call this function
149
+ * from within a plugin. Once your plugin is removed, the VcsUiApp will call this for you.
150
+ * @param {string} pluginName
151
+ * @param {string} moduleId
152
+ */
153
+ removePluginMessages(pluginName, moduleId) {
154
+ [...this]
155
+ .filter(
156
+ (item) =>
157
+ item[i18nPluginSymbol] === pluginName &&
158
+ item[moduleIdSymbol] === moduleId,
159
+ )
160
+ .forEach((item) => {
161
+ this.remove(item);
162
+ });
163
+ }
164
+
165
+ /**
166
+ * returns a merged Message Object with the locale as a key and an Object with all the translated keys
167
+ * @returns {Object}
168
+ */
169
+ getMergedMessages() {
170
+ return mergeDeep(...this);
171
+ }
172
+
173
+ /**
174
+ * @inheritDoc
175
+ */
176
+ destroy() {
177
+ this._getDynamicModuleId = null;
178
+ super.destroy();
179
+ }
180
+ }
181
+
182
+ export default I18nCollection;
package/src/init.js CHANGED
@@ -1,121 +1,121 @@
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 { createVueI18n, setupI18n } from './vuePlugins/i18n.js';
7
- import VcsUiApp from './vcsUiApp.js';
8
-
9
- /**
10
- * Base pattern to check VcsObjects
11
- * @type {import("vcsuite/check").PatternFor<import("@vcmap/core").VcsObject>}
12
- */
13
- const VcsObjectPattern = {
14
- type: String,
15
- name: String,
16
- };
17
-
18
- /**
19
- * Base pattern to check VcsUiAppConfig
20
- * @type {import("vcsuite/check").PatternFor<VcsUiAppConfig>}
21
- */
22
- export const VcsUiAppConfigPattern = {
23
- id: [undefined, String],
24
- layers: [undefined, [VcsObjectPattern]],
25
- maps: [undefined, [VcsObjectPattern]],
26
- styles: [undefined, [VcsObjectPattern]],
27
- viewpoints: [undefined, [VcsObjectPattern]],
28
- startingViewpointName: [undefined, String],
29
- startingMapName: [undefined, String],
30
- projection: [undefined, Object],
31
- categories: [undefined, [{ name: String, items: [Object] }]],
32
- obliqueCollections: [undefined, [VcsObjectPattern]],
33
- plugins: [undefined, [Object]],
34
- contentTree: [undefined, [Object]],
35
- uiConfig: [undefined, [Object]],
36
- featureInfo: [undefined, [VcsObjectPattern]],
37
- i18n: [undefined, [Object]],
38
- };
39
-
40
- /**
41
- * creates and mounts a vcsApp
42
- * @param {string} mountTarget
43
- * @returns {Promise<VcsUiApp>}
44
- */
45
- export default async function initApp(mountTarget) {
46
- check(mountTarget, String);
47
- const app = new VcsUiApp();
48
- const i18n = createVueI18n();
49
- new Vue({
50
- vuetify,
51
- i18n,
52
- render: h => h(VcsAppComponentWrapper, {
53
- props: {
54
- appId: app.id,
55
- },
56
- }),
57
- }).$mount(mountTarget);
58
-
59
- setupI18n(app, i18n);
60
- return app;
61
- }
62
-
63
- /**
64
- * Initializes app with an optional single config
65
- * @param {string} mountTarget
66
- * @param {string=} configUrl optional config
67
- * @returns {Promise<VcsUiApp>}
68
- */
69
- export async function initAppFromModule(mountTarget, configUrl) {
70
- check(mountTarget, String);
71
- checkMaybe(configUrl, String);
72
-
73
- const app = await initApp(mountTarget);
74
- if (configUrl) {
75
- const config = await fetch(configUrl)
76
- .then(response => response.json());
77
- const module = new VcsModule(config);
78
- await app.addModule(module);
79
- }
80
-
81
- return app;
82
- }
83
-
84
- /**
85
- * Initializes app with a map config containing a set of config urls
86
- * @param {string} mountTarget
87
- * @param {string} appUrl app config containing further modules to be loaded
88
- * @returns {Promise<VcsUiApp>}
89
- */
90
- export async function initAppFromAppConfig(mountTarget, appUrl) {
91
- check(mountTarget, String);
92
- check(appUrl, String);
93
-
94
- const app = await initApp(mountTarget);
95
- /**
96
- * @type {{modules: Array<string|VcsUiAppConfig>}}
97
- */
98
- const appConfig = await fetch(appUrl)
99
- .then(response => response.json());
100
-
101
- check(appConfig.modules, [String, Object]);
102
-
103
- const modules = await Promise.all(appConfig.modules.map(async (c) => {
104
- if (is(c, VcsUiAppConfigPattern)) {
105
- return new VcsModule(/** @type{import("@vcmap/core").VcsAppConfig} */ c);
106
- } else if (is(c, String)) {
107
- const response = await fetch(c);
108
- if (response.ok) {
109
- const config = await response.json();
110
- return new VcsModule(config);
111
- }
112
- }
113
- return null;
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
- }
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|VcsUiAppConfig>}}
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").VcsAppConfig} */ 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
+ }
@@ -43,7 +43,6 @@ export const StyleRowType = {
43
43
  * @property {string} src - the source url. Can be an i18n string.
44
44
  */
45
45
 
46
-
47
46
  /**
48
47
  * @typedef {LegendItem} StyleLegendItem
49
48
  * @property {number} [colNr=2] Number of columns. Valid values are 1 or 2. Per default 2.
@@ -172,27 +171,33 @@ export function getLegendEntries(app) {
172
171
  if (layer.active) {
173
172
  const key = layer.name;
174
173
  const title = layer.properties.title || layer.name;
175
- const legend = layer.style?.properties?.legend ?? layer.properties?.legend;
174
+ const legend =
175
+ layer.style?.properties?.legend ?? layer.properties?.legend;
176
176
  if (legend) {
177
177
  const legendEntry = createLayerLegendEntry(key, title, legend);
178
178
  // use spread since push won't trigger updates. Put new entries at the start
179
179
  entries.value = [legendEntry, ...entries.value];
180
180
  }
181
181
  if (layer.styleChanged) {
182
- styleChangedListener[layer.name] = layer.styleChanged.addEventListener(() => syncLayerLegendEntries(layer));
182
+ styleChangedListener[layer.name] = layer.styleChanged.addEventListener(
183
+ () => syncLayerLegendEntries(layer),
184
+ );
183
185
  }
184
186
  }
185
187
  }
186
188
 
187
- const destroyChangedListener = app.layers.stateChanged.addEventListener(syncLayerLegendEntries);
188
- const destroyRemovedListener = app.layers.removed.addEventListener(removeEntryForLayer);
189
+ const destroyChangedListener = app.layers.stateChanged.addEventListener(
190
+ syncLayerLegendEntries,
191
+ );
192
+ const destroyRemovedListener =
193
+ app.layers.removed.addEventListener(removeEntryForLayer);
189
194
 
190
195
  [...app.layers].forEach(syncLayerLegendEntries);
191
196
 
192
197
  const destroy = () => {
193
198
  destroyChangedListener();
194
199
  destroyRemovedListener();
195
- Object.values(styleChangedListener).forEach(cb => cb());
200
+ Object.values(styleChangedListener).forEach((cb) => cb());
196
201
  };
197
202
 
198
203
  return { entries, destroy };