@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
package/src/vcsUiApp.js CHANGED
@@ -10,6 +10,7 @@ import {
10
10
  Viewpoint,
11
11
  volatileModuleId,
12
12
  VcsEvent,
13
+ getObjectFromClassRegistry,
13
14
  } from '@vcmap/core';
14
15
  import { getLogger as getLoggerByName } from '@vcsuite/logger';
15
16
  import {
@@ -18,24 +19,31 @@ import {
18
19
  serializePlugin,
19
20
  deserializePlugin,
20
21
  } from './pluginHelper.js';
21
- import ToolboxManager, { setupDefaultGroups } from './manager/toolbox/toolboxManager.js';
22
+ import ToolboxManager, {
23
+ setupDefaultGroups,
24
+ } from './manager/toolbox/toolboxManager.js';
22
25
  import WindowManager from './manager/window/windowManager.js';
23
26
  import NavbarManager from './manager/navbarManager.js';
24
27
  import { createContentTreeCollection } from './contentTree/contentTreeCollection.js';
25
28
  import { contentTreeClassRegistry } from './contentTree/contentTreeItem.js';
26
29
  import OverviewMap from './navigation/overviewMap.js';
27
30
  import I18nCollection from './i18n/i18nCollection.js';
28
- import CategoryManager from './manager/categoryManager/categoryManager.js';
31
+ import CategoryManager from './manager/collectionManager/categoryManager.js';
29
32
  import ContextMenuManager from './manager/contextMenu/contextMenuManager.js';
30
- import FeatureInfo from './featureInfo/featureInfo.js';
33
+ import FeatureInfo, {
34
+ featureInfoClassRegistry,
35
+ } from './featureInfo/featureInfo.js';
31
36
  import UiConfig from './uiConfig.js';
32
37
  import { createEmptyState, getStateFromURL } from './state.js';
33
38
  import { version } from '../package.json';
34
39
  import Search from './search/search.js';
35
40
  import Notifier from './notifier/notifier.js';
41
+ import AbstractFeatureInfoView from './featureInfo/abstractFeatureInfoView.js';
42
+ import { createVueI18n, setupI18n } from './vuePlugins/i18n.js';
43
+ import { callbackClassRegistry } from './callback/vcsCallback.js';
36
44
 
37
45
  /**
38
- * @typedef {import("@vcmap/core").VcsAppConfig} VcsUiAppConfig
46
+ * @typedef {import("@vcmap/core").VcsModuleConfig} VcsUiModuleConfig
39
47
  * @property {Array<Object>} [plugins]
40
48
  * @property {Array<ContentTreeItemOptions>} [contentTree]
41
49
  * @property {Array<UiConfigurationItem>} [uiConfig]
@@ -73,7 +81,6 @@ import Notifier from './notifier/notifier.js';
73
81
  * @api
74
82
  */
75
83
 
76
-
77
84
  /**
78
85
  * @interface VcsComponentManager
79
86
  * @template {Object} T - the component type
@@ -106,7 +113,9 @@ class VcsUiApp extends VcsApp {
106
113
  * Gets the version of the @vcmap/ui npm package
107
114
  * @returns {string}
108
115
  */
109
- static getVersion() { return version; }
116
+ static getVersion() {
117
+ return version;
118
+ }
110
119
 
111
120
  constructor() {
112
121
  super();
@@ -138,17 +147,26 @@ class VcsUiApp extends VcsApp {
138
147
  this._contextMenuManager.removeOwner(plugin.name);
139
148
  this._search.removeOwner(plugin.name);
140
149
  if (plugin.i18n) {
141
- this.i18n.addPluginMessages(plugin.name, plugin[moduleIdSymbol], plugin.i18n);
150
+ this.i18n.addPluginMessages(
151
+ plugin.name,
152
+ plugin[moduleIdSymbol],
153
+ plugin.i18n,
154
+ );
142
155
  }
143
156
  if (plugin.initialize) {
144
157
  let state;
145
158
  if (this._cachedAppState.moduleIds.includes(plugin[moduleIdSymbol])) {
146
- state = this._cachedAppState.plugins.find(s => s.name === plugin.name);
159
+ state = this._cachedAppState.plugins.find(
160
+ (s) => s.name === plugin.name,
161
+ );
147
162
  }
148
163
  try {
149
164
  plugin.initialize(this, state?.state);
150
165
  } catch (e) {
151
- getLogger().error(`Error in plugin ${plugin.name} initialize hook`, e);
166
+ getLogger().error(
167
+ `Error in plugin ${plugin.name} initialize hook`,
168
+ e,
169
+ );
152
170
  }
153
171
  }
154
172
  }),
@@ -164,10 +182,20 @@ class VcsUiApp extends VcsApp {
164
182
  ];
165
183
 
166
184
  /**
167
- * @type {OverrideClassRegistry<ContentTreeItem>}
185
+ * @type {OverrideClassRegistry<VcsCallbackItem>}
168
186
  * @private
169
187
  */
170
- this._contentTreeClassRegistry = new OverrideClassRegistry(contentTreeClassRegistry);
188
+ this._callbackClassRegistry = new OverrideClassRegistry(
189
+ callbackClassRegistry,
190
+ );
191
+
192
+ /**
193
+ * @type {import("@vcmap/core").OverrideClassRegistry<ContentTreeItem>}
194
+ * @private
195
+ */
196
+ this._contentTreeClassRegistry = new OverrideClassRegistry(
197
+ contentTreeClassRegistry,
198
+ );
171
199
 
172
200
  /**
173
201
  * @type {OverrideContentTreeCollection}
@@ -198,10 +226,24 @@ class VcsUiApp extends VcsApp {
198
226
  */
199
227
  this._uiConfig = new UiConfig(() => this.dynamicModuleId);
200
228
  /**
201
- * @type {FeatureInfo}
229
+ * @type {import("@vcmap/core").OverrideClassRegistry<AbstractFeatureInfoView>}
202
230
  * @private
203
231
  */
204
- this._featureInfo = new FeatureInfo(this);
232
+ this._featureInfoClassRegistry = new OverrideClassRegistry(
233
+ featureInfoClassRegistry,
234
+ );
235
+ /**
236
+ * @type {import("@vcmap/core").OverrideCollection<AbstractFeatureInfoView>}
237
+ * @private
238
+ */
239
+ this._featureInfo = makeOverrideCollection(
240
+ new FeatureInfo(this),
241
+ () => this.dynamicModuleId,
242
+ null,
243
+ (config) =>
244
+ getObjectFromClassRegistry(this._featureInfoClassRegistry, config),
245
+ AbstractFeatureInfoView,
246
+ );
205
247
 
206
248
  /**
207
249
  * @type {OverviewMap}
@@ -215,6 +257,19 @@ class VcsUiApp extends VcsApp {
215
257
  */
216
258
  this._i18n = new I18nCollection(() => this.dynamicModuleId);
217
259
 
260
+ /**
261
+ *
262
+ * @type {import("vue-i18n").VueI18n}
263
+ * @private
264
+ */
265
+ this._vueI18n = createVueI18n();
266
+ /**
267
+ *
268
+ * @type {function(): void}
269
+ * @private
270
+ */
271
+ this._vueI18nDestroy = setupI18n(this);
272
+
218
273
  /**
219
274
  * @type {CategoryManager}
220
275
  * @private
@@ -256,85 +311,137 @@ class VcsUiApp extends VcsApp {
256
311
  * @type {import("@vcmap/core").OverrideCollection<VcsPlugin>}
257
312
  * @readonly
258
313
  */
259
- get plugins() { return this._plugins; }
314
+ get plugins() {
315
+ return this._plugins;
316
+ }
260
317
 
261
318
  /**
262
319
  * @type {OverrideContentTreeCollection}
263
320
  * @readonly
264
321
  */
265
- get contentTree() { return this._contentTree; }
322
+ get contentTree() {
323
+ return this._contentTree;
324
+ }
266
325
 
267
326
  /**
268
- * @type {OverrideClassRegistry<ContentTreeItem>}
327
+ * @type {import("@vcmap/core").OverrideClassRegistry<VcsCallback>}
269
328
  * @readonly
270
329
  */
271
- get contentTreeClassRegistry() { return this._contentTreeClassRegistry; }
330
+ get callbackClassRegistry() {
331
+ return this._callbackClassRegistry;
332
+ }
333
+
334
+ /**
335
+ * @type {import("@vcmap/core").OverrideClassRegistry<ContentTreeItem>}
336
+ * @readonly
337
+ */
338
+ get contentTreeClassRegistry() {
339
+ return this._contentTreeClassRegistry;
340
+ }
341
+
342
+ /**
343
+ * @type {import("@vcmap/core").OverrideClassRegistry<AbstractFeatureInfoView>}
344
+ * @readonly
345
+ */
346
+ get featureInfoClassRegistry() {
347
+ return this._featureInfoClassRegistry;
348
+ }
272
349
 
273
350
  /**
274
351
  * @returns {ToolboxManager}
275
352
  * @readonly
276
353
  */
277
- get toolboxManager() { return this._toolboxManager; }
354
+ get toolboxManager() {
355
+ return this._toolboxManager;
356
+ }
278
357
 
279
358
  /**
280
359
  * @returns {WindowManager}
281
360
  * @readonly
282
361
  */
283
- get windowManager() { return this._windowManager; }
362
+ get windowManager() {
363
+ return this._windowManager;
364
+ }
284
365
 
285
366
  /**
286
367
  * @returns {NavbarManager}
287
368
  * @readonly
288
369
  */
289
- get navbarManager() { return this._navbarManager; }
370
+ get navbarManager() {
371
+ return this._navbarManager;
372
+ }
290
373
 
291
374
  /**
292
375
  * @returns {FeatureInfo}
293
376
  * @readonly
294
377
  */
295
- get featureInfo() { return this._featureInfo; }
378
+ get featureInfo() {
379
+ return this._featureInfo;
380
+ }
296
381
 
297
382
  /**
298
383
  * @type {OverviewMap}
299
384
  * @readonly
300
385
  */
301
- get overviewMap() { return this._overviewMap; }
386
+ get overviewMap() {
387
+ return this._overviewMap;
388
+ }
302
389
 
303
390
  /**
304
391
  * @type {I18nCollection}
305
392
  * @readonly
306
393
  */
307
- get i18n() { return this._i18n; }
394
+ get i18n() {
395
+ return this._i18n;
396
+ }
397
+
398
+ /**
399
+ * @returns {import("vue-i18n").VueI18n}
400
+ * @readonly
401
+ */
402
+ get vueI18n() {
403
+ return this._vueI18n;
404
+ }
308
405
 
309
406
  /**
310
407
  * @returns {CategoryManager}
311
408
  * @readonly
312
409
  */
313
- get categoryManager() { return this._categoryManager; }
410
+ get categoryManager() {
411
+ return this._categoryManager;
412
+ }
314
413
 
315
414
  /**
316
415
  * @type {ContextMenuManager}
317
416
  * @readonly
318
417
  */
319
- get contextMenuManager() { return this._contextMenuManager; }
418
+ get contextMenuManager() {
419
+ return this._contextMenuManager;
420
+ }
320
421
 
321
422
  /**
322
423
  * @type {Search}
323
424
  * @readonly
324
425
  */
325
- get search() { return this._search; }
426
+ get search() {
427
+ return this._search;
428
+ }
326
429
 
327
430
  /**
328
431
  * @type {UiConfig}
329
432
  * @readonly
330
433
  */
331
- get uiConfig() { return this._uiConfig; }
434
+ get uiConfig() {
435
+ return this._uiConfig;
436
+ }
332
437
 
333
438
  /**
334
439
  * @type {Notifier}
335
440
  * @readonly
336
441
  */
337
- get notifier() { return this._notifier; }
442
+ get notifier() {
443
+ return this._notifier;
444
+ }
338
445
 
339
446
  /**
340
447
  * Get the state of the application. When passed the forUrl flag, only a minimal set of states shall be provided for a sharable link to the current state (to ensure
@@ -351,16 +458,21 @@ class VcsUiApp extends VcsApp {
351
458
 
352
459
  state.activeMap = this.maps.activeMap.name;
353
460
  const viewpoint = await this.maps.activeMap.getViewpoint();
354
- state.activeViewpoint = viewpoint?.isValid?.() ? viewpoint.toJSON() : undefined;
461
+ state.activeViewpoint = viewpoint?.isValid?.()
462
+ ? viewpoint.toJSON()
463
+ : undefined;
355
464
  state.layers = [...this.layers]
356
- .filter(l => l.isSupported(this.maps.activeMap) &&
357
- l[moduleIdSymbol] !== defaultDynamicModuleId &&
358
- l[moduleIdSymbol] !== volatileModuleId &&
359
- (
360
- ((l.active || l.loading) && !l.activeOnStartup) ||
361
- (!l.active && l.activeOnStartup) ||
362
- ((l.active || l.loading) && l.style !== l.defaultStyle && this.styles.has(l.style))
363
- ))
465
+ .filter(
466
+ (l) =>
467
+ l.isSupported(this.maps.activeMap) &&
468
+ l[moduleIdSymbol] !== defaultDynamicModuleId &&
469
+ l[moduleIdSymbol] !== volatileModuleId &&
470
+ (((l.active || l.loading) && !l.activeOnStartup) ||
471
+ (!l.active && l.activeOnStartup) ||
472
+ ((l.active || l.loading) &&
473
+ l.style !== l.defaultStyle &&
474
+ this.styles.has(l.style))),
475
+ )
364
476
  .map((l) => {
365
477
  const layerState = {
366
478
  name: l.name,
@@ -378,11 +490,25 @@ class VcsUiApp extends VcsApp {
378
490
  return layerState;
379
491
  });
380
492
 
381
- state.plugins = await Promise.all([...this.plugins]
382
- .filter(p => p[moduleIdSymbol] !== defaultDynamicModuleId &&
383
- p[moduleIdSymbol] !== volatileModuleId &&
384
- typeof p.getState === 'function')
385
- .map(async p => ({ name: p.name, state: await p.getState(forUrl) })));
493
+ const plugins = await Promise.all(
494
+ [...this.plugins]
495
+ .filter(
496
+ (p) =>
497
+ p[moduleIdSymbol] !== defaultDynamicModuleId &&
498
+ p[moduleIdSymbol] !== volatileModuleId &&
499
+ typeof p.getState === 'function',
500
+ )
501
+ .map(async (p) => {
502
+ try {
503
+ return { name: p.name, state: await p.getState(forUrl) };
504
+ } catch (e) {
505
+ getLogger().error(e);
506
+ return null;
507
+ }
508
+ }),
509
+ );
510
+
511
+ state.plugins = plugins.filter((p) => p);
386
512
 
387
513
  if (this.maps.activeMap instanceof ObliqueMap) {
388
514
  state.activeObliqueCollection = this.maps.activeMap.collection.name;
@@ -398,21 +524,23 @@ class VcsUiApp extends VcsApp {
398
524
  async _parseModule(module) {
399
525
  const { config } = module;
400
526
  if (Array.isArray(config.plugins)) {
401
- const plugins = await Promise.all(config.plugins.map(async (pluginConfig) => {
402
- const plugin = await loadPlugin(pluginConfig.name, pluginConfig);
403
- if (!plugin) {
404
- return null;
405
- }
406
- if (!isValidPackageName(plugin.name)) {
407
- getLogger().warning(`plugin ${plugin.name} has no valid package name!`);
408
- }
409
- plugin[moduleIdSymbol] = module._id;
410
- return plugin;
411
- }));
527
+ const plugins = await Promise.all(
528
+ config.plugins.map(async (pluginConfig) => {
529
+ const plugin = await loadPlugin(pluginConfig.name, pluginConfig);
530
+ if (!plugin) {
531
+ return null;
532
+ }
533
+ if (!isValidPackageName(plugin.name)) {
534
+ getLogger().warning(
535
+ `plugin ${plugin.name} has no valid package name!`,
536
+ );
537
+ }
538
+ plugin[moduleIdSymbol] = module._id;
539
+ return plugin;
540
+ }),
541
+ );
412
542
 
413
- plugins
414
- .filter(p => p)
415
- .map(p => this._plugins.override(p));
543
+ plugins.filter((p) => p).map((p) => this._plugins.override(p));
416
544
  }
417
545
  if (Array.isArray(config.i18n)) {
418
546
  await this.i18n.parseItems(config.i18n, module._id);
@@ -420,7 +548,7 @@ class VcsUiApp extends VcsApp {
420
548
  await super._parseModule(module);
421
549
  await this._contentTree.parseItems(config.contentTree, module._id);
422
550
  await this._uiConfig.parseItems(config.uiConfig, module._id);
423
- await this._featureInfo.collection.parseItems(config.featureInfo, module._id);
551
+ await this._featureInfo.parseItems(config.featureInfo, module._id);
424
552
  }
425
553
 
426
554
  /**
@@ -440,30 +568,59 @@ class VcsUiApp extends VcsApp {
440
568
  layer.deactivate();
441
569
  }
442
570
 
443
- if (layerState.styleName && this.styles.hasKey(layerState.styleName) && layer.setStyle) {
571
+ if (
572
+ layerState.styleName &&
573
+ this.styles.hasKey(layerState.styleName) &&
574
+ layer.setStyle
575
+ ) {
444
576
  layer.setStyle(this.styles.getByKey(layerState.styleName));
445
577
  }
446
578
  }
447
579
  });
448
- if (this._cachedAppState.activeMap && this.maps.hasKey(this._cachedAppState.activeMap)) {
580
+ if (
581
+ this._cachedAppState.activeMap &&
582
+ this.maps.hasKey(this._cachedAppState.activeMap)
583
+ ) {
449
584
  await this.maps.setActiveMap(this._cachedAppState.activeMap);
450
585
  }
451
586
  if (
452
587
  this._cachedAppState.activeObliqueCollection &&
453
588
  this.maps.activeMap instanceof ObliqueMap &&
454
- this.obliqueCollections.hasKey(this._cachedAppState.activeObliqueCollection)
589
+ this.obliqueCollections.hasKey(
590
+ this._cachedAppState.activeObliqueCollection,
591
+ )
455
592
  ) {
456
593
  await this.maps.activeMap.setCollection(
457
- this.obliqueCollections.getByKey(this._cachedAppState.activeObliqueCollection),
458
- this._cachedAppState.activeViewpoint,
594
+ this.obliqueCollections.getByKey(
595
+ this._cachedAppState.activeObliqueCollection,
596
+ ),
597
+ new Viewpoint(this._cachedAppState.activeViewpoint),
459
598
  );
460
599
  } else if (this._cachedAppState.activeViewpoint && this.maps.activeMap) {
461
- await this.maps.activeMap.gotoViewpoint(new Viewpoint(this._cachedAppState.activeViewpoint));
600
+ await this.maps.activeMap.gotoViewpoint(
601
+ new Viewpoint(this._cachedAppState.activeViewpoint),
602
+ );
462
603
  }
463
- this._cachedAppState.moduleIds.splice(this._cachedAppState.moduleIds.indexOf(module._id), 1);
604
+ this._cachedAppState.moduleIds.splice(
605
+ this._cachedAppState.moduleIds.indexOf(module._id),
606
+ 1,
607
+ );
464
608
  }
465
609
  }
466
610
 
611
+ /**
612
+ * @param {string} moduleId
613
+ * @returns {VcsUiModuleConfig}
614
+ */
615
+ serializeModule(moduleId) {
616
+ const config = super.serializeModule(moduleId);
617
+ config.uiConfig = this._uiConfig.serializeModule(moduleId);
618
+ config.featureInfo = this._featureInfo.serializeModule(moduleId);
619
+ config.i18n = this._i18n.serializeModule(moduleId);
620
+ config.plugins = this._plugins.serializeModule(moduleId);
621
+ return config;
622
+ }
623
+
467
624
  /**
468
625
  * @param {string} moduleId
469
626
  * @returns {Promise<void>}
@@ -475,7 +632,7 @@ class VcsUiApp extends VcsApp {
475
632
  this._plugins.removeModule(moduleId),
476
633
  this._i18n.removeModule(moduleId),
477
634
  this._contentTree.removeModule(moduleId),
478
- this._featureInfo.collection.removeModule(moduleId),
635
+ this._featureInfo.removeModule(moduleId),
479
636
  this._uiConfig.removeModule(moduleId),
480
637
  ]);
481
638
  }
@@ -490,13 +647,17 @@ class VcsUiApp extends VcsApp {
490
647
  this.categoryManager.destroy();
491
648
  this.contextMenuManager.destroy();
492
649
  this._overviewMap.destroy();
493
- this._pluginListeners.forEach((cb) => { cb(); });
650
+ this._pluginListeners.forEach((cb) => {
651
+ cb();
652
+ });
494
653
  this._pluginListeners = [];
495
654
  destroyCollection(this._plugins);
496
655
  destroyCollection(this._contentTree);
497
656
  destroyCollection(this._i18n);
498
657
  destroyCollection(this._search);
658
+ this._vueI18nDestroy();
499
659
  this._contentTreeClassRegistry.destroy();
660
+ this._featureInfoClassRegistry.destroy();
500
661
  this._featureInfo.destroy();
501
662
  this._uiConfig.destroy();
502
663
  super.destroy();
@@ -5,15 +5,14 @@ import { vcsAppSymbol } from '../pluginHelper.js';
5
5
  import de from '../i18n/de.js';
6
6
  import en from '../i18n/en.js';
7
7
 
8
-
9
8
  Vue.use(VueI18n);
10
9
 
11
10
  /**
12
11
  * creates a new VueI18n Instance.
13
- * @returns {VueI18n}
12
+ * @returns {import("vue-i18n").VueI18n}
14
13
  */
15
14
  export function createVueI18n() {
16
- const i18n = new VueI18n({
15
+ return new VueI18n({
17
16
  locale: 'en',
18
17
  silentFallbackWarn: true,
19
18
  silentTranslationWarn: true,
@@ -23,48 +22,48 @@ export function createVueI18n() {
23
22
  },
24
23
  postTranslation: (val, key) => (typeof val === 'string' ? val : key),
25
24
  });
26
- return i18n;
27
25
  }
28
26
 
29
27
  /**
30
- * sets the messages to the given I18n Instance;
31
- * @param {Object} messages
32
- * @param {VueI18n} i18n
28
+ * sets the messages to the app's I18n Instance;
29
+ * @param {VcsUiApp} app
33
30
  */
34
- function setI18n(messages, i18n) {
35
- i18n.availableLocales.forEach((locale) => {
36
- i18n.setLocaleMessage(locale, undefined);
37
- });
38
- Object.entries(messages).forEach(([locale, localeMessages]) => {
39
- i18n.setLocaleMessage(locale, localeMessages);
31
+ function setI18nMessages(app) {
32
+ app.vueI18n.availableLocales.forEach((locale) => {
33
+ app.vueI18n.setLocaleMessage(locale, undefined);
40
34
  });
35
+ Object.entries(app.i18n.getMergedMessages()).forEach(
36
+ ([locale, localeMessages]) => {
37
+ app.vueI18n.setLocaleMessage(locale, localeMessages);
38
+ },
39
+ );
41
40
  }
42
41
 
43
42
  /**
44
43
  * @param {VcsUiApp} app
45
- * @param {VueI18n} i18n
46
44
  * @returns {function():void} returns a destroy function
47
45
  */
48
- export function setupI18n(app, i18n) {
49
- const defaultMessages = { en, de };
46
+ export function setupI18n(app) {
47
+ const defaultMessages = { name: 'default', en, de };
50
48
  defaultMessages[i18nPluginSymbol] = vcsAppSymbol;
51
49
  app.i18n.add(defaultMessages);
52
50
 
53
- setI18n(app.i18n.getMergedMessages(), i18n);
54
- i18n.locale = app.locale;
51
+ setI18nMessages(app);
52
+ app.vueI18n.locale = app.locale;
55
53
  const destroyFunctions = [
56
54
  app.i18n.added.addEventListener(() => {
57
- setI18n(app.i18n.getMergedMessages(), i18n);
55
+ setI18nMessages(app);
58
56
  }),
59
57
  app.i18n.removed.addEventListener(() => {
60
- setI18n(app.i18n.getMergedMessages(), i18n);
58
+ setI18nMessages(app);
61
59
  }),
62
60
  app.localeChanged.addEventListener((locale) => {
63
- i18n.locale = locale;
61
+ app.vueI18n.locale = locale;
64
62
  }),
65
63
  ];
66
64
  return function tearDownI18nSetup() {
67
- destroyFunctions.forEach((destroy) => { destroy(); });
65
+ destroyFunctions.forEach((destroy) => {
66
+ destroy();
67
+ });
68
68
  };
69
69
  }
70
-
@@ -1,4 +1,3 @@
1
- import '@mdi/font/css/materialdesignicons.css';
2
1
  import Vue from 'vue';
3
2
  import Vuetify from 'vuetify/lib';
4
3
  import { genVariations } from 'vuetify/lib/services/theme/utils.js';
@@ -19,6 +18,9 @@ export const defaultPrimaryColor = {
19
18
  * @returns {import("vuetify").default}
20
19
  */
21
20
  export function createVuetify() {
21
+ const dark =
22
+ window.matchMedia?.('(prefers-color-scheme: dark)')?.matches ?? false;
23
+
22
24
  return new Vuetify({
23
25
  treeShake: false,
24
26
  defaultAssets: {
@@ -27,6 +29,7 @@ export function createVuetify() {
27
29
  },
28
30
  },
29
31
  theme: {
32
+ dark,
30
33
  options: {
31
34
  customProperties: true,
32
35
  },