@vcmap/ui 5.0.0-rc.22 → 5.0.0-rc.24

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 (425) hide show
  1. package/README.md +38 -20
  2. package/app.config.json +3 -0
  3. package/build/.eslintrc +3 -0
  4. package/build/build.js +184 -174
  5. package/build/buildCesium.js +32 -19
  6. package/build/buildHelpers.js +117 -48
  7. package/build/buildPreview.js +9 -6
  8. package/build/commonViteConfig.js +1 -3
  9. package/build/determineHost.js +17 -4
  10. package/build/generateOLLib.js +13 -16
  11. package/build/getPluginProxies.js +16 -3
  12. package/build/info/conf.json +21 -21
  13. package/build/info/publish.js +15 -4
  14. package/config/aerowest.config.json +18 -44
  15. package/config/base.config.json +72 -246
  16. package/config/codes.config.json +4 -0
  17. package/config/dev.config.json +11 -13
  18. package/config/graphFeatureInfo.config.json +58 -17
  19. package/config/projects.config.json +30 -0
  20. package/config/www.config.json +98 -297
  21. package/dist/assets/cesium/Workers/{ArcType-ce2e50ab.js → ArcType-2d9abbbc.js} +4 -4
  22. package/dist/assets/cesium/Workers/{AttributeCompression-b646d393.js → AttributeCompression-f9f6c717.js} +24 -24
  23. package/dist/assets/cesium/Workers/{AxisAlignedBoundingBox-ff186ccc.js → AxisAlignedBoundingBox-85d9e53a.js} +3 -3
  24. package/dist/assets/cesium/Workers/{BoundingRectangle-be5924f4.js → BoundingRectangle-1ee7eb47.js} +18 -18
  25. package/dist/assets/cesium/Workers/{BoxGeometry-12eeccaf.js → BoxGeometry-3b2be784.js} +9 -9
  26. package/dist/assets/cesium/Workers/{Check-666ab1a0.js → Check-6ede7e26.js} +22 -22
  27. package/dist/assets/cesium/Workers/{Color-a84038cb.js → Color-f107c84d.js} +59 -59
  28. package/dist/assets/cesium/Workers/{ComponentDatatype-f7b11d02.js → ComponentDatatype-cf1fa08e.js} +16 -16
  29. package/dist/assets/cesium/Workers/{CoplanarPolygonGeometryLibrary-3272c1b3.js → CoplanarPolygonGeometryLibrary-78d71993.js} +1 -1
  30. package/dist/assets/cesium/Workers/{CorridorGeometryLibrary-0170e093.js → CorridorGeometryLibrary-50d99b33.js} +1 -1
  31. package/dist/assets/cesium/Workers/{CylinderGeometry-7c5da648.js → CylinderGeometry-51b0d9bf.js} +12 -12
  32. package/dist/assets/cesium/Workers/{CylinderGeometryLibrary-372c07d8.js → CylinderGeometryLibrary-7bf291b4.js} +1 -1
  33. package/dist/assets/cesium/Workers/{EllipseGeometry-797d580e.js → EllipseGeometry-bcfb5d87.js} +20 -20
  34. package/dist/assets/cesium/Workers/{EllipseGeometryLibrary-2939e1dc.js → EllipseGeometryLibrary-e94f8472.js} +1 -1
  35. package/dist/assets/cesium/Workers/{EllipseOutlineGeometry-8b50870f.js → EllipseOutlineGeometry-28e3a1bb.js} +15 -15
  36. package/dist/assets/cesium/Workers/{EllipsoidGeodesic-98c62a56.js → EllipsoidGeodesic-5b3623dc.js} +6 -6
  37. package/dist/assets/cesium/Workers/{EllipsoidGeometry-21c0e3a5.js → EllipsoidGeometry-b222fa63.js} +14 -14
  38. package/dist/assets/cesium/Workers/{EllipsoidOutlineGeometry-eff247c8.js → EllipsoidOutlineGeometry-38a3fb5b.js} +15 -15
  39. package/dist/assets/cesium/Workers/{EllipsoidRhumbLine-19756602.js → EllipsoidRhumbLine-ef872433.js} +9 -9
  40. package/dist/assets/cesium/Workers/{EllipsoidTangentPlane-214683dc.js → EllipsoidTangentPlane-8c89f28c.js} +1 -1
  41. package/dist/assets/cesium/Workers/{EncodedCartesian3-81f70735.js → EncodedCartesian3-57415c8a.js} +6 -6
  42. package/dist/assets/cesium/Workers/{FrustumGeometry-ac42a6d9.js → FrustumGeometry-bdd3a04d.js} +139 -111
  43. package/dist/assets/cesium/Workers/{GeometryAttribute-7d6f1732.js → GeometryAttribute-153115c5.js} +20 -20
  44. package/dist/assets/cesium/Workers/{GeometryAttributes-f06a2792.js → GeometryAttributes-ad136444.js} +1 -1
  45. package/dist/assets/cesium/Workers/{GeometryInstance-451dc1cd.js → GeometryInstance-34d9e21e.js} +6 -6
  46. package/dist/assets/cesium/Workers/{GeometryPipeline-ce4339ed.js → GeometryPipeline-acb2399c.js} +22 -22
  47. package/dist/assets/cesium/Workers/{IndexDatatype-a55ceaa1.js → IndexDatatype-2643aa47.js} +13 -13
  48. package/dist/assets/cesium/Workers/{IntersectionTests-f6e6bd8a.js → IntersectionTests-271e513e.js} +37 -37
  49. package/dist/assets/cesium/Workers/{Math-2dbd6b93.js → Math-0a2ac845.js} +149 -139
  50. package/dist/assets/cesium/Workers/{Matrix2-13178034.js → Matrix2-e1298525.js} +256 -256
  51. package/dist/assets/cesium/Workers/{Matrix3-315394f6.js → Matrix3-41c58dde.js} +150 -150
  52. package/dist/assets/cesium/Workers/{OrientedBoundingBox-04920dc7.js → OrientedBoundingBox-5e04e31f.js} +19 -17
  53. package/dist/assets/cesium/Workers/{Plane-900aa728.js → Plane-4c3d403b.js} +5 -5
  54. package/dist/assets/cesium/Workers/{PolygonGeometryLibrary-a8680d96.js → PolygonGeometryLibrary-6762b65b.js} +6 -6
  55. package/dist/assets/cesium/Workers/PolygonPipeline-7dc7a431.js +1344 -0
  56. package/dist/assets/cesium/Workers/{PolylinePipeline-32f36d2a.js → PolylinePipeline-15fde655.js} +16 -16
  57. package/dist/assets/cesium/Workers/{PolylineVolumeGeometryLibrary-a510d657.js → PolylineVolumeGeometryLibrary-ba7dfed5.js} +7 -7
  58. package/dist/assets/cesium/Workers/{PrimitivePipeline-ba38434a.js → PrimitivePipeline-68f0b9a2.js} +6 -6
  59. package/dist/assets/cesium/Workers/{RectangleGeometryLibrary-bdba697e.js → RectangleGeometryLibrary-8eaf23da.js} +1 -1
  60. package/dist/assets/cesium/Workers/{RuntimeError-06c93819.js → RuntimeError-ef395448.js} +5 -5
  61. package/dist/assets/cesium/Workers/{TerrainEncoding-833187da.js → TerrainEncoding-eb8a645a.js} +30 -30
  62. package/dist/assets/cesium/Workers/Transforms-f6451f99.js +14698 -0
  63. package/dist/assets/cesium/Workers/{VertexFormat-6b480673.js → VertexFormat-030f11ff.js} +14 -14
  64. package/dist/assets/cesium/Workers/{WallGeometryLibrary-919eed92.js → WallGeometryLibrary-feef3109.js} +1 -1
  65. package/dist/assets/cesium/Workers/{WebGLConstants-a8cc3e8c.js → WebGLConstants-0b1ce7ba.js} +1 -1
  66. package/dist/assets/cesium/Workers/{WebMercatorProjection-13a90d41.js → WebMercatorProjection-13ed1a6e.js} +6 -6
  67. package/dist/assets/cesium/Workers/{arrayRemoveDuplicates-c2038105.js → arrayRemoveDuplicates-d2061e85.js} +5 -5
  68. package/dist/assets/cesium/Workers/cesiumWorkerBootstrapper.js +5 -5
  69. package/dist/assets/cesium/Workers/{combine-ca22a614.js → combine-d9581036.js} +5 -5
  70. package/dist/assets/cesium/Workers/combineGeometry.js +1 -1
  71. package/dist/assets/cesium/Workers/createBoxGeometry.js +1 -1
  72. package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +9 -9
  73. package/dist/assets/cesium/Workers/createCircleGeometry.js +13 -13
  74. package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +13 -13
  75. package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +11 -11
  76. package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +9 -9
  77. package/dist/assets/cesium/Workers/createCorridorGeometry.js +14 -14
  78. package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +12 -12
  79. package/dist/assets/cesium/Workers/createCylinderGeometry.js +1 -1
  80. package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +13 -13
  81. package/dist/assets/cesium/Workers/createEllipseGeometry.js +1 -1
  82. package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +1 -1
  83. package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +1 -1
  84. package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +1 -1
  85. package/dist/assets/cesium/Workers/createFrustumGeometry.js +1 -1
  86. package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +8 -8
  87. package/dist/assets/cesium/Workers/createGeometry.js +1 -1
  88. package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +33 -33
  89. package/dist/assets/cesium/Workers/createPlaneGeometry.js +8 -8
  90. package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +6 -6
  91. package/dist/assets/cesium/Workers/createPolygonGeometry.js +25 -25
  92. package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +17 -17
  93. package/dist/assets/cesium/Workers/createPolylineGeometry.js +11 -11
  94. package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +9 -9
  95. package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +9 -9
  96. package/dist/assets/cesium/Workers/createRectangleGeometry.js +16 -16
  97. package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +12 -12
  98. package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +10 -10
  99. package/dist/assets/cesium/Workers/createSphereGeometry.js +11 -11
  100. package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +12 -12
  101. package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +2 -2
  102. package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +1 -1
  103. package/dist/assets/cesium/Workers/createVectorTileGeometries.js +8 -8
  104. package/dist/assets/cesium/Workers/createVectorTilePoints.js +1 -1
  105. package/dist/assets/cesium/Workers/createVectorTilePolygons.js +1 -1
  106. package/dist/assets/cesium/Workers/createVectorTilePolylines.js +1 -1
  107. package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
  108. package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +27 -28
  109. package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +33 -38
  110. package/dist/assets/cesium/Workers/createWallGeometry.js +14 -14
  111. package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +14 -14
  112. package/dist/assets/cesium/Workers/decodeDraco.js +10 -2
  113. package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +15 -15
  114. package/dist/assets/cesium/Workers/decodeI3S.js +1 -1
  115. package/dist/assets/cesium/Workers/{defaultValue-0a909f67.js → defaultValue-fe22d8c0.js} +2 -2
  116. package/dist/assets/cesium/Workers/package.js +1 -1
  117. package/dist/assets/cesium/Workers/transcodeKTX2.js +46 -26
  118. package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -1
  119. package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +24 -24
  120. package/dist/assets/{cesium.88cffd.js → cesium.253914.js} +36578 -33768
  121. package/dist/assets/cesium.js +1 -1
  122. package/dist/assets/{core.a66593.js → core.3a8205.js} +7824 -5377
  123. package/dist/assets/core.js +1 -1
  124. package/dist/assets/index.91ae2d55.js +1 -0
  125. package/dist/assets/{ol.d4539f.js → ol.1c946a.js} +5550 -5491
  126. package/dist/assets/ol.js +1 -1
  127. package/dist/assets/ui.0025be.css +5 -0
  128. package/dist/assets/{ui.d760e4.js → ui.0025be.js} +6260 -5164
  129. package/dist/assets/ui.js +1 -1
  130. package/dist/assets/vue.js +2 -2
  131. package/dist/assets/{vuetify.427322.css → vuetify.6efa21.css} +2 -2
  132. package/dist/assets/{vuetify.427322.js → vuetify.6efa21.js} +1 -1
  133. package/dist/assets/vuetify.js +2 -2
  134. package/dist/index.html +27 -7
  135. package/index.html +26 -6
  136. package/index.js +68 -15
  137. package/lib/cesium.js +1 -1
  138. package/lib/core.js +1 -1
  139. package/lib/ui.js +1 -1
  140. package/lib/vue.js +2 -2
  141. package/lib/vuetify.js +2 -2
  142. package/package.json +19 -10
  143. package/plugins/.eslintrc +9 -0
  144. package/plugins/@vcmap/create-link/fallbackCreateLink.vue +13 -9
  145. package/plugins/@vcmap/create-link/index.js +15 -6
  146. package/plugins/@vcmap/project-selector/{ContextsListComponent.vue → ModulesListComponent.vue} +14 -18
  147. package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +19 -24
  148. package/plugins/@vcmap/project-selector/README.md +16 -20
  149. package/plugins/@vcmap/project-selector/config.json +13 -13
  150. package/plugins/@vcmap/project-selector/de.json +4 -1
  151. package/plugins/@vcmap/project-selector/en.json +4 -1
  152. package/plugins/@vcmap/project-selector/index.js +117 -107
  153. package/plugins/@vcmap/search-nominatim/LICENSE.md +5 -6
  154. package/plugins/@vcmap/search-nominatim/README.md +2 -1
  155. package/plugins/@vcmap/search-nominatim/config.json +1 -2
  156. package/plugins/@vcmap/search-nominatim/index.js +7 -4
  157. package/plugins/@vcmap/search-nominatim/nominatim.js +7 -2
  158. package/plugins/@vcmap/search-nominatim/package.json +2 -36
  159. package/plugins/@vcmap/simple-graph/README.md +29 -9
  160. package/plugins/@vcmap/simple-graph/SimpleGraphComponent.vue +2 -7
  161. package/plugins/@vcmap/simple-graph/index.js +2 -2
  162. package/plugins/@vcmap/simple-graph/simpleGraphView.js +3 -1
  163. package/plugins/@vcmap/theme-changer/README.md +5 -3
  164. package/plugins/@vcmap/theme-changer/ThemeChangerComponent.vue +6 -10
  165. package/plugins/@vcmap/theme-changer/config.json +67 -67
  166. package/plugins/@vcmap/theme-changer/index.js +11 -5
  167. package/plugins/@vcmap-show-case/buttons-example/ButtonsExample.vue +76 -11
  168. package/plugins/@vcmap-show-case/buttons-example/index.js +10 -8
  169. package/plugins/@vcmap-show-case/category-tester/Categories.vue +144 -117
  170. package/plugins/@vcmap-show-case/category-tester/Category.vue +46 -29
  171. package/plugins/@vcmap-show-case/category-tester/index.js +9 -3
  172. package/plugins/@vcmap-show-case/config-editor/ConfigEditor.vue +62 -0
  173. package/plugins/@vcmap-show-case/config-editor/index.js +13 -11
  174. package/plugins/@vcmap-show-case/context-menu-tester/index.js +18 -10
  175. package/plugins/@vcmap-show-case/form-inputs-example/FormInputsExample.vue +97 -109
  176. package/plugins/@vcmap-show-case/form-inputs-example/config.json +3 -3
  177. package/plugins/@vcmap-show-case/form-inputs-example/exampleActions.js +14 -4
  178. package/plugins/@vcmap-show-case/form-inputs-example/index.js +42 -19
  179. package/plugins/@vcmap-show-case/form-inputs-example/validation.js +2 -1
  180. package/plugins/@vcmap-show-case/icons-example/README.md +1 -1
  181. package/plugins/@vcmap-show-case/icons-example/allIconsComponent.vue +10 -10
  182. package/plugins/@vcmap-show-case/icons-example/index.js +10 -8
  183. package/plugins/@vcmap-show-case/list-example/ListExample.vue +221 -103
  184. package/plugins/@vcmap-show-case/list-example/index.js +10 -8
  185. package/plugins/@vcmap-show-case/notifier-tester/index.js +9 -3
  186. package/plugins/@vcmap-show-case/notifier-tester/notifierTester.vue +15 -21
  187. package/plugins/@vcmap-show-case/table-example/DataTableExample.vue +183 -0
  188. package/plugins/@vcmap-show-case/table-example/README.md +3 -0
  189. package/plugins/@vcmap-show-case/table-example/index.js +49 -0
  190. package/plugins/@vcmap-show-case/table-example/package.json +5 -0
  191. package/plugins/@vcmap-show-case/textfields-example/TextfieldsExample.vue +7 -30
  192. package/plugins/@vcmap-show-case/textfields-example/index.js +10 -4
  193. package/plugins/@vcmap-show-case/window-tester/WindowExample.vue +16 -13
  194. package/plugins/@vcmap-show-case/window-tester/emptyComponent.vue +4 -7
  195. package/plugins/@vcmap-show-case/window-tester/index.js +26 -20
  196. package/plugins/@vcmap-show-case/window-tester/myCustomHeader.vue +7 -3
  197. package/plugins/@vcmap-show-case/window-tester/toolbox-data.js +82 -5
  198. package/plugins/@vcmap-show-case/window-tester/windowExampleContent.vue +3 -7
  199. package/plugins/@vcmap-show-case/wizard-example/index.js +9 -3
  200. package/plugins/@vcmap-show-case/wizard-example/wizardExample.vue +36 -38
  201. package/src/actions/actionHelper.js +64 -37
  202. package/src/actions/styleSelector.vue +40 -24
  203. package/src/application/VcsApp.vue +117 -80
  204. package/src/application/VcsAttributions.vue +8 -9
  205. package/src/application/VcsAttributionsFooter.vue +12 -9
  206. package/src/application/VcsMap.vue +9 -5
  207. package/src/application/VcsNavbar.vue +44 -27
  208. package/src/application/VcsSettings.vue +5 -12
  209. package/src/application/attributionsHelper.js +23 -11
  210. package/src/application/vcsAppWrapper.vue +1 -3
  211. package/src/components/buttons/VcsActionButtonList.vue +20 -17
  212. package/src/components/buttons/VcsButton.vue +19 -23
  213. package/src/components/buttons/VcsFormButton.vue +176 -0
  214. package/src/components/form-inputs-controls/VcsCheckbox.vue +6 -7
  215. package/src/components/form-inputs-controls/VcsDatePicker.vue +142 -0
  216. package/src/components/form-inputs-controls/VcsFormSection.vue +11 -12
  217. package/src/components/form-inputs-controls/VcsLabel.vue +9 -10
  218. package/src/components/form-inputs-controls/VcsRadio.vue +44 -44
  219. package/src/components/form-inputs-controls/VcsSelect.vue +16 -13
  220. package/src/components/form-inputs-controls/VcsTextArea.vue +21 -14
  221. package/src/components/form-inputs-controls/VcsTextField.vue +44 -19
  222. package/src/components/form-inputs-controls/VcsWizard.vue +79 -77
  223. package/src/components/form-inputs-controls/VcsWizardStep.vue +20 -20
  224. package/src/components/form-inputs-controls/composables.js +13 -8
  225. package/src/components/form-output/VcsFormattedNumber.vue +26 -26
  226. package/src/components/icons/+all.js +13 -5
  227. package/src/components/icons/2DAreaIcon.vue +62 -10
  228. package/src/components/icons/2DDistanceIcon.vue +14 -2
  229. package/src/components/icons/3DAreaIcon.vue +62 -10
  230. package/src/components/icons/3DDistanceIcon.vue +14 -2
  231. package/src/components/icons/3DHeightIcon.vue +14 -2
  232. package/src/components/icons/AngleIcon.vue +12 -3
  233. package/src/components/icons/AssociationsIcon.vue +6 -1
  234. package/src/components/icons/AxisIcon.vue +34 -5
  235. package/src/components/icons/BoundingBoxIcon.vue +31 -5
  236. package/src/components/icons/CheckboxCheckedIcon.vue +4 -1
  237. package/src/components/icons/CheckboxIcon.vue +1 -8
  238. package/src/components/icons/CheckboxIndeterminateIcon.vue +9 -2
  239. package/src/components/icons/CircleIcon.vue +24 -4
  240. package/src/components/icons/ClippingHorizontalIcon.vue +14 -2
  241. package/src/components/icons/ClippingIcon.vue +13 -2
  242. package/src/components/icons/ClippingVerticalIcon.vue +14 -2
  243. package/src/components/icons/ColorPickerIcon.vue +13 -2
  244. package/src/components/icons/ColorSwatchIcon.vue +7 -1
  245. package/src/components/icons/CommentIcon.vue +6 -1
  246. package/src/components/icons/CompassIcon.vue +21 -3
  247. package/src/components/icons/ComponentsIcon.vue +14 -2
  248. package/src/components/icons/ConeIcon.vue +26 -4
  249. package/src/components/icons/DimensionsHouseIcon.vue +7 -1
  250. package/src/components/icons/EditIcon.vue +13 -2
  251. package/src/components/icons/ElevationProfileIcon.vue +6 -1
  252. package/src/components/icons/ExportAreaIcon.vue +13 -2
  253. package/src/components/icons/ExportFlightIcon.vue +13 -2
  254. package/src/components/icons/ExportIcon.vue +14 -2
  255. package/src/components/icons/ExternalLinkIcon.vue +18 -3
  256. package/src/components/icons/EyeIcon.vue +12 -2
  257. package/src/components/icons/FastForwardIcon.vue +13 -2
  258. package/src/components/icons/FilterIcon.vue +13 -2
  259. package/src/components/icons/GlobalTerrainIcon.vue +12 -2
  260. package/src/components/icons/GlobeNatureIcon.vue +7 -1
  261. package/src/components/icons/GroundIcon.vue +12 -2
  262. package/src/components/icons/HealthCareIndustriesIcon.vue +6 -1
  263. package/src/components/icons/HelpIcon.vue +12 -2
  264. package/src/components/icons/HideIcon.vue +17 -3
  265. package/src/components/icons/HomePointIcon.vue +13 -3
  266. package/src/components/icons/HospitalsIcon.vue +6 -1
  267. package/src/components/icons/HouseIcon.vue +20 -3
  268. package/src/components/icons/ImportIcon.vue +21 -3
  269. package/src/components/icons/InfoIcon.vue +19 -3
  270. package/src/components/icons/KebabIcon.vue +12 -2
  271. package/src/components/icons/LabelIcon.vue +21 -3
  272. package/src/components/icons/LayersIcon.vue +12 -2
  273. package/src/components/icons/LegendIcon.vue +20 -60
  274. package/src/components/icons/LineIcon.vue +20 -3
  275. package/src/components/icons/LinkIcon.vue +13 -2
  276. package/src/components/icons/LogoutIcon.vue +13 -2
  277. package/src/components/icons/MapIcon.vue +14 -2
  278. package/src/components/icons/MenuIcon.vue +7 -1
  279. package/src/components/icons/MinusIcon.vue +14 -2
  280. package/src/components/icons/ObjectAttributeIcon.vue +13 -2
  281. package/src/components/icons/ObjectSelectIcon.vue +14 -2
  282. package/src/components/icons/ObliqueViewIcon.vue +11 -2
  283. package/src/components/icons/PdfIcon.vue +12 -2
  284. package/src/components/icons/PedestrianIcon.vue +13 -2
  285. package/src/components/icons/PenIcon.vue +13 -3
  286. package/src/components/icons/PlayCircleIcon.vue +20 -3
  287. package/src/components/icons/PlusIcon.vue +14 -3
  288. package/src/components/icons/PoiIcon.vue +17 -3
  289. package/src/components/icons/PointSelectIcon.vue +12 -2
  290. package/src/components/icons/PolygonIcon.vue +7 -1
  291. package/src/components/icons/PresentationModeIcon.vue +13 -2
  292. package/src/components/icons/ProgressIcon.vue +8 -6
  293. package/src/components/icons/QueryIcon.vue +31 -5
  294. package/src/components/icons/RectangleIcon.vue +24 -4
  295. package/src/components/icons/ReturnIcon.vue +13 -2
  296. package/src/components/icons/RewindIcon.vue +13 -2
  297. package/src/components/icons/RotateLeftIcon.vue +13 -2
  298. package/src/components/icons/RotateRightIcon.vue +13 -2
  299. package/src/components/icons/ScreenshotIcon.vue +52 -10
  300. package/src/components/icons/SearchIcon.vue +13 -3
  301. package/src/components/icons/ShadowIcon.vue +14 -3
  302. package/src/components/icons/ShapesIcon.vue +13 -3
  303. package/src/components/icons/ShareIcon.vue +17 -4
  304. package/src/components/icons/SimpleCircleFilledIcon.vue +14 -10
  305. package/src/components/icons/SimpleCircleHalfFilledIcon.vue +6 -1
  306. package/src/components/icons/SimpleCircleOutlinedIcon.vue +14 -10
  307. package/src/components/icons/SkipNextIcon.vue +11 -2
  308. package/src/components/icons/SkipPreviousIcon.vue +17 -3
  309. package/src/components/icons/SplitViewIcon.vue +6 -1
  310. package/src/components/icons/TerrainBoxIcon.vue +12 -2
  311. package/src/components/icons/TextStyleIcon.vue +7 -1
  312. package/src/components/icons/ThreeDimensionsIcon.vue +13 -2
  313. package/src/components/icons/ToolsIcon.vue +12 -2
  314. package/src/components/icons/TouchIcon.vue +13 -2
  315. package/src/components/icons/TrashCanIcon.vue +13 -2
  316. package/src/components/icons/TriangleIcon.vue +6 -2
  317. package/src/components/icons/TwoDimensionsIcon.vue +14 -2
  318. package/src/components/icons/UploadIcon.vue +13 -2
  319. package/src/components/icons/UserProfileIcon.vue +13 -2
  320. package/src/components/icons/UserShareIcon.vue +12 -2
  321. package/src/components/icons/VideoRecorderIcon.vue +16 -3
  322. package/src/components/icons/ViewpointFlightIcon.vue +22 -4
  323. package/src/components/icons/ViewpointIcon.vue +22 -4
  324. package/src/components/icons/Viewshed360Icon.vue +14 -2
  325. package/src/components/icons/ViewshedConeIcon.vue +13 -2
  326. package/src/components/icons/ViewshedIcon.vue +14 -2
  327. package/src/components/icons/WalkingIcon.vue +13 -2
  328. package/src/components/icons/WallIcon.vue +19 -3
  329. package/src/components/icons/WandIcon.vue +129 -21
  330. package/src/components/imageElementInjector.vue +1 -3
  331. package/src/components/lists/VcsActionList.vue +21 -18
  332. package/src/components/lists/VcsList.vue +226 -97
  333. package/src/components/lists/VcsTreeview.vue +30 -26
  334. package/src/components/lists/VcsTreeviewLeaf.vue +23 -22
  335. package/src/components/lists/VcsTreeviewSearchbar.vue +19 -15
  336. package/src/components/notification/VcsBadge.vue +4 -6
  337. package/src/components/notification/VcsTooltip.vue +95 -94
  338. package/src/components/notification/validation.js +1 -1
  339. package/src/components/tables/VcsDataTable.vue +398 -0
  340. package/src/components/tables/VcsTable.vue +63 -300
  341. package/src/contentTree/LayerTree.vue +2 -3
  342. package/src/contentTree/contentTreeCollection.js +49 -23
  343. package/src/contentTree/contentTreeItem.js +36 -14
  344. package/src/contentTree/groupContentTreeItem.js +44 -22
  345. package/src/contentTree/layerContentTreeItem.js +45 -20
  346. package/src/contentTree/layerGroupContentTreeItem.js +53 -31
  347. package/src/contentTree/nodeContentTreeItem.js +18 -7
  348. package/src/contentTree/obliqueCollectionContentTreeItem.js +45 -20
  349. package/src/contentTree/subContentTreeItem.js +13 -4
  350. package/src/contentTree/vcsObjectContentTreeItem.js +24 -15
  351. package/src/contentTree/viewpointContentTreeItem.js +19 -6
  352. package/src/downloadHelper.js +52 -0
  353. package/src/featureInfo/AddressBalloonComponent.vue +11 -16
  354. package/src/featureInfo/BalloonComponent.vue +41 -31
  355. package/src/featureInfo/abstractFeatureInfoView.js +30 -14
  356. package/src/featureInfo/addressBalloonFeatureInfoView.js +19 -7
  357. package/src/featureInfo/balloonFeatureInfoView.js +22 -9
  358. package/src/featureInfo/balloonHelper.js +61 -42
  359. package/src/featureInfo/featureInfo.js +74 -34
  360. package/src/featureInfo/featureInfoInteraction.js +13 -7
  361. package/src/featureInfo/iframeFeatureInfoView.js +3 -1
  362. package/src/featureInfo/tableFeatureInfoView.js +15 -5
  363. package/src/i18n/de.js +8 -0
  364. package/src/i18n/en.js +8 -0
  365. package/src/i18n/i18nCollection.js +183 -155
  366. package/src/init.js +124 -38
  367. package/src/legend/legendHelper.js +11 -6
  368. package/src/legend/styleLegendItem.vue +18 -12
  369. package/src/legend/vcsLegend.vue +15 -17
  370. package/src/manager/buttonManager.js +6 -3
  371. package/src/manager/categoryManager/CategoryComponent.vue +99 -63
  372. package/src/manager/categoryManager/CategoryComponentList.vue +33 -8
  373. package/src/manager/categoryManager/CategoryManager.vue +23 -11
  374. package/src/manager/categoryManager/categoryManager.js +90 -45
  375. package/src/manager/contextMenu/contextMenuComponent.vue +2 -6
  376. package/src/manager/contextMenu/contextMenuInteraction.js +6 -1
  377. package/src/manager/contextMenu/contextMenuManager.js +37 -22
  378. package/src/manager/navbarManager.js +28 -3
  379. package/src/manager/toolbox/GroupToolboxComponent.vue +22 -21
  380. package/src/manager/toolbox/SelectToolboxComponent.vue +36 -35
  381. package/src/manager/toolbox/ToolboxManager.vue +18 -10
  382. package/src/manager/toolbox/toolboxManager.js +30 -12
  383. package/src/manager/window/WindowComponent.vue +24 -32
  384. package/src/manager/window/WindowComponentHeader.vue +38 -28
  385. package/src/manager/window/WindowManager.vue +45 -35
  386. package/src/manager/window/windowHelper.js +80 -24
  387. package/src/manager/window/windowManager.js +79 -39
  388. package/src/navigation/mapNavCompass.vue +18 -4
  389. package/src/navigation/mapNavigation.vue +65 -46
  390. package/src/navigation/obliqueRotation.vue +34 -13
  391. package/src/navigation/orientationToolsButton.vue +6 -10
  392. package/src/navigation/overviewMap.js +76 -45
  393. package/src/navigation/overviewMapClickedInteraction.js +6 -1
  394. package/src/navigation/tiltSlider.vue +6 -10
  395. package/src/navigation/vcsCompass.vue +1 -9
  396. package/src/navigation/vcsZoomButton.vue +36 -11
  397. package/src/notifier/notifier.js +22 -13
  398. package/src/notifier/notifierComponent.vue +21 -21
  399. package/src/pluginHelper.js +39 -5
  400. package/src/search/resultItem.vue +10 -15
  401. package/src/search/resultsComponent.vue +30 -24
  402. package/src/search/search.js +48 -22
  403. package/src/search/searchComponent.vue +35 -10
  404. package/src/setup.js +9 -9
  405. package/src/state.js +28 -12
  406. package/src/styles/_typography.scss +0 -1
  407. package/src/styles/shades.scss +4 -2
  408. package/src/styles/utils/_border.scss +1 -1
  409. package/src/styles/utils/_display.scss +1 -1
  410. package/src/styles/variables.scss +39 -34
  411. package/src/styles/vcsFont.scss +6 -5
  412. package/src/styles/vcsGrid.scss +9 -0
  413. package/src/uiConfig.js +6 -4
  414. package/src/vcsUiApp.js +192 -91
  415. package/src/vuePlugins/i18n.js +5 -4
  416. package/src/vuePlugins/vuetify.js +4 -0
  417. package/start.js +8 -2
  418. package/dist/assets/cesium/Workers/PolygonPipeline-844aab0a.js +0 -1345
  419. package/dist/assets/cesium/Workers/Transforms-40229881.js +0 -14696
  420. package/dist/assets/index.8b833ead.js +0 -1
  421. package/dist/assets/ui.d760e4.css +0 -5
  422. package/map.config.json +0 -44
  423. package/plugins/@vcmap-show-case/config-editor/editor.vue +0 -66
  424. /package/dist/assets/cesium/Workers/{GeometryOffsetAttribute-04332ce7.js → GeometryOffsetAttribute-9ad0019c.js} +0 -0
  425. /package/dist/assets/{vue.db5102.js → vue.c1ece7.js} +0 -0
package/src/vcsUiApp.js CHANGED
@@ -1,14 +1,15 @@
1
1
  import {
2
2
  VcsApp,
3
- contextIdSymbol,
3
+ moduleIdSymbol,
4
4
  Collection,
5
5
  makeOverrideCollection,
6
6
  destroyCollection,
7
7
  OverrideClassRegistry,
8
- defaultDynamicContextId,
8
+ defaultDynamicModuleId,
9
9
  ObliqueMap,
10
10
  Viewpoint,
11
- volatileContextId, VcsEvent,
11
+ volatileModuleId,
12
+ VcsEvent,
12
13
  } from '@vcmap/core';
13
14
  import { getLogger as getLoggerByName } from '@vcsuite/logger';
14
15
  import {
@@ -17,7 +18,9 @@ import {
17
18
  serializePlugin,
18
19
  deserializePlugin,
19
20
  } from './pluginHelper.js';
20
- import ToolboxManager, { setupDefaultGroups } from './manager/toolbox/toolboxManager.js';
21
+ import ToolboxManager, {
22
+ setupDefaultGroups,
23
+ } from './manager/toolbox/toolboxManager.js';
21
24
  import WindowManager from './manager/window/windowManager.js';
22
25
  import NavbarManager from './manager/navbarManager.js';
23
26
  import { createContentTreeCollection } from './contentTree/contentTreeCollection.js';
@@ -34,9 +37,12 @@ import Search from './search/search.js';
34
37
  import Notifier from './notifier/notifier.js';
35
38
 
36
39
  /**
37
- * @typedef {import("@vcmap/core").VcsAppConfig} VcsUiAppConfig
40
+ * @typedef {import("@vcmap/core").VcsModuleConfig} VcsUiModuleConfig
38
41
  * @property {Array<Object>} [plugins]
39
42
  * @property {Array<ContentTreeItemOptions>} [contentTree]
43
+ * @property {Array<UiConfigurationItem>} [uiConfig]
44
+ * @property {Array<FeatureInfoViewOptions>} [featureInfo]
45
+ * @property {Array<Object>} [i18n]
40
46
  */
41
47
 
42
48
  /**
@@ -69,7 +75,6 @@ import Notifier from './notifier/notifier.js';
69
75
  * @api
70
76
  */
71
77
 
72
-
73
78
  /**
74
79
  * @interface VcsComponentManager
75
80
  * @template {Object} T - the component type
@@ -102,7 +107,9 @@ class VcsUiApp extends VcsApp {
102
107
  * Gets the version of the @vcmap/ui npm package
103
108
  * @returns {string}
104
109
  */
105
- static getVersion() { return version; }
110
+ static getVersion() {
111
+ return version;
112
+ }
106
113
 
107
114
  constructor() {
108
115
  super();
@@ -117,7 +124,7 @@ class VcsUiApp extends VcsApp {
117
124
  */
118
125
  this._plugins = makeOverrideCollection(
119
126
  new Collection(),
120
- () => this.dynamicContextId,
127
+ () => this.dynamicModuleId,
121
128
  serializePlugin,
122
129
  deserializePlugin,
123
130
  );
@@ -134,17 +141,26 @@ class VcsUiApp extends VcsApp {
134
141
  this._contextMenuManager.removeOwner(plugin.name);
135
142
  this._search.removeOwner(plugin.name);
136
143
  if (plugin.i18n) {
137
- this.i18n.addPluginMessages(plugin.name, plugin[contextIdSymbol], plugin.i18n);
144
+ this.i18n.addPluginMessages(
145
+ plugin.name,
146
+ plugin[moduleIdSymbol],
147
+ plugin.i18n,
148
+ );
138
149
  }
139
150
  if (plugin.initialize) {
140
151
  let state;
141
- if (this._cachedAppState.contextIds.includes(plugin[contextIdSymbol])) {
142
- state = this._cachedAppState.plugins.find(s => s.name === plugin.name);
152
+ if (this._cachedAppState.moduleIds.includes(plugin[moduleIdSymbol])) {
153
+ state = this._cachedAppState.plugins.find(
154
+ (s) => s.name === plugin.name,
155
+ );
143
156
  }
144
157
  try {
145
158
  plugin.initialize(this, state?.state);
146
159
  } catch (e) {
147
- getLogger().error(`Error in plugin ${plugin.name} initialize hook`, e);
160
+ getLogger().error(
161
+ `Error in plugin ${plugin.name} initialize hook`,
162
+ e,
163
+ );
148
164
  }
149
165
  }
150
166
  }),
@@ -155,7 +171,7 @@ class VcsUiApp extends VcsApp {
155
171
  this._categoryManager.removeOwner(plugin.name);
156
172
  this._contextMenuManager.removeOwner(plugin.name);
157
173
  this._search.removeOwner(plugin.name);
158
- this.i18n.removePluginMessages(plugin.name, plugin[contextIdSymbol]);
174
+ this.i18n.removePluginMessages(plugin.name, plugin[moduleIdSymbol]);
159
175
  }),
160
176
  ];
161
177
 
@@ -163,7 +179,9 @@ class VcsUiApp extends VcsApp {
163
179
  * @type {OverrideClassRegistry<ContentTreeItem>}
164
180
  * @private
165
181
  */
166
- this._contentTreeClassRegistry = new OverrideClassRegistry(contentTreeClassRegistry);
182
+ this._contentTreeClassRegistry = new OverrideClassRegistry(
183
+ contentTreeClassRegistry,
184
+ );
167
185
 
168
186
  /**
169
187
  * @type {OverrideContentTreeCollection}
@@ -192,7 +210,7 @@ class VcsUiApp extends VcsApp {
192
210
  * @type {UiConfig}
193
211
  * @private
194
212
  */
195
- this._uiConfig = new UiConfig(() => this.dynamicContextId);
213
+ this._uiConfig = new UiConfig(() => this.dynamicModuleId);
196
214
  /**
197
215
  * @type {FeatureInfo}
198
216
  * @private
@@ -209,7 +227,7 @@ class VcsUiApp extends VcsApp {
209
227
  * @type {I18nCollection<Object>}
210
228
  * @private
211
229
  */
212
- this._i18n = new I18nCollection(() => this.dynamicContextId);
230
+ this._i18n = new I18nCollection(() => this.dynamicModuleId);
213
231
 
214
232
  /**
215
233
  * @type {CategoryManager}
@@ -252,85 +270,113 @@ class VcsUiApp extends VcsApp {
252
270
  * @type {import("@vcmap/core").OverrideCollection<VcsPlugin>}
253
271
  * @readonly
254
272
  */
255
- get plugins() { return this._plugins; }
273
+ get plugins() {
274
+ return this._plugins;
275
+ }
256
276
 
257
277
  /**
258
278
  * @type {OverrideContentTreeCollection}
259
279
  * @readonly
260
280
  */
261
- get contentTree() { return this._contentTree; }
281
+ get contentTree() {
282
+ return this._contentTree;
283
+ }
262
284
 
263
285
  /**
264
286
  * @type {OverrideClassRegistry<ContentTreeItem>}
265
287
  * @readonly
266
288
  */
267
- get contentTreeClassRegistry() { return this._contentTreeClassRegistry; }
289
+ get contentTreeClassRegistry() {
290
+ return this._contentTreeClassRegistry;
291
+ }
268
292
 
269
293
  /**
270
294
  * @returns {ToolboxManager}
271
295
  * @readonly
272
296
  */
273
- get toolboxManager() { return this._toolboxManager; }
297
+ get toolboxManager() {
298
+ return this._toolboxManager;
299
+ }
274
300
 
275
301
  /**
276
302
  * @returns {WindowManager}
277
303
  * @readonly
278
304
  */
279
- get windowManager() { return this._windowManager; }
305
+ get windowManager() {
306
+ return this._windowManager;
307
+ }
280
308
 
281
309
  /**
282
310
  * @returns {NavbarManager}
283
311
  * @readonly
284
312
  */
285
- get navbarManager() { return this._navbarManager; }
313
+ get navbarManager() {
314
+ return this._navbarManager;
315
+ }
286
316
 
287
317
  /**
288
318
  * @returns {FeatureInfo}
289
319
  * @readonly
290
320
  */
291
- get featureInfo() { return this._featureInfo; }
321
+ get featureInfo() {
322
+ return this._featureInfo;
323
+ }
292
324
 
293
325
  /**
294
326
  * @type {OverviewMap}
295
327
  * @readonly
296
328
  */
297
- get overviewMap() { return this._overviewMap; }
329
+ get overviewMap() {
330
+ return this._overviewMap;
331
+ }
298
332
 
299
333
  /**
300
334
  * @type {I18nCollection}
301
335
  * @readonly
302
336
  */
303
- get i18n() { return this._i18n; }
337
+ get i18n() {
338
+ return this._i18n;
339
+ }
304
340
 
305
341
  /**
306
342
  * @returns {CategoryManager}
307
343
  * @readonly
308
344
  */
309
- get categoryManager() { return this._categoryManager; }
345
+ get categoryManager() {
346
+ return this._categoryManager;
347
+ }
310
348
 
311
349
  /**
312
350
  * @type {ContextMenuManager}
313
351
  * @readonly
314
352
  */
315
- get contextMenuManager() { return this._contextMenuManager; }
353
+ get contextMenuManager() {
354
+ return this._contextMenuManager;
355
+ }
316
356
 
317
357
  /**
318
358
  * @type {Search}
319
359
  * @readonly
320
360
  */
321
- get search() { return this._search; }
361
+ get search() {
362
+ return this._search;
363
+ }
322
364
 
323
365
  /**
324
366
  * @type {UiConfig}
325
367
  * @readonly
326
368
  */
327
- get uiConfig() { return this._uiConfig; }
369
+ get uiConfig() {
370
+ return this._uiConfig;
371
+ }
328
372
 
329
373
  /**
330
374
  * @type {Notifier}
331
375
  * @readonly
332
376
  */
333
- get notifier() { return this._notifier; }
377
+ get notifier() {
378
+ return this._notifier;
379
+ }
334
380
 
335
381
  /**
336
382
  * 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
@@ -341,22 +387,27 @@ class VcsUiApp extends VcsApp {
341
387
  */
342
388
  async getState(forUrl) {
343
389
  const state = createEmptyState();
344
- state.contextIds = this.contexts
345
- .filter(({ id }) => id !== defaultDynamicContextId)
346
- .map(({ id }) => id);
390
+ state.moduleIds = this.modules
391
+ .filter(({ _id }) => _id !== defaultDynamicModuleId)
392
+ .map(({ _id }) => _id);
347
393
 
348
394
  state.activeMap = this.maps.activeMap.name;
349
395
  const viewpoint = await this.maps.activeMap.getViewpoint();
350
- state.activeViewpoint = viewpoint?.isValid?.() ? viewpoint.toJSON() : undefined;
396
+ state.activeViewpoint = viewpoint?.isValid?.()
397
+ ? viewpoint.toJSON()
398
+ : undefined;
351
399
  state.layers = [...this.layers]
352
- .filter(l => l.isSupported(this.maps.activeMap) &&
353
- l[contextIdSymbol] !== defaultDynamicContextId &&
354
- l[contextIdSymbol] !== volatileContextId &&
355
- (
356
- ((l.active || l.loading) && !l.activeOnStartup) ||
357
- (!l.active && l.activeOnStartup) ||
358
- ((l.active || l.loading) && l.style !== l.defaultStyle && this.styles.has(l.style))
359
- ))
400
+ .filter(
401
+ (l) =>
402
+ l.isSupported(this.maps.activeMap) &&
403
+ l[moduleIdSymbol] !== defaultDynamicModuleId &&
404
+ l[moduleIdSymbol] !== volatileModuleId &&
405
+ (((l.active || l.loading) && !l.activeOnStartup) ||
406
+ (!l.active && l.activeOnStartup) ||
407
+ ((l.active || l.loading) &&
408
+ l.style !== l.defaultStyle &&
409
+ this.styles.has(l.style))),
410
+ )
360
411
  .map((l) => {
361
412
  const layerState = {
362
413
  name: l.name,
@@ -366,19 +417,33 @@ class VcsUiApp extends VcsApp {
366
417
  l.style &&
367
418
  l.style.name !== l.defaultStyle.name &&
368
419
  this.styles.has(l.style) &&
369
- l.style[contextIdSymbol] !== defaultDynamicContextId &&
370
- l.style[contextIdSymbol] !== volatileContextId
420
+ l.style[moduleIdSymbol] !== defaultDynamicModuleId &&
421
+ l.style[moduleIdSymbol] !== volatileModuleId
371
422
  ) {
372
423
  layerState.styleName = l.style.name;
373
424
  }
374
425
  return layerState;
375
426
  });
376
427
 
377
- state.plugins = await Promise.all([...this.plugins]
378
- .filter(p => p[contextIdSymbol] !== defaultDynamicContextId &&
379
- p[contextIdSymbol] !== volatileContextId &&
380
- typeof p.getState === 'function')
381
- .map(async p => ({ name: p.name, state: await p.getState(forUrl) })));
428
+ const plugins = await Promise.all(
429
+ [...this.plugins]
430
+ .filter(
431
+ (p) =>
432
+ p[moduleIdSymbol] !== defaultDynamicModuleId &&
433
+ p[moduleIdSymbol] !== volatileModuleId &&
434
+ typeof p.getState === 'function',
435
+ )
436
+ .map(async (p) => {
437
+ try {
438
+ return { name: p.name, state: await p.getState(forUrl) };
439
+ } catch (e) {
440
+ getLogger().error(e);
441
+ return null;
442
+ }
443
+ }),
444
+ );
445
+
446
+ state.plugins = plugins.filter((p) => p);
382
447
 
383
448
  if (this.maps.activeMap instanceof ObliqueMap) {
384
449
  state.activeObliqueCollection = this.maps.activeMap.collection.name;
@@ -387,46 +452,51 @@ class VcsUiApp extends VcsApp {
387
452
  }
388
453
 
389
454
  /**
390
- * @param {import("@vcmap/core").Context} context
455
+ * @param {import("@vcmap/core").VcsModule} module
391
456
  * @returns {Promise<void>}
392
457
  * @protected
393
458
  */
394
- async _parseContext(context) {
395
- const { config } = context;
459
+ async _parseModule(module) {
460
+ const { config } = module;
396
461
  if (Array.isArray(config.plugins)) {
397
- const plugins = await Promise.all(config.plugins.map(async (pluginConfig) => {
398
- const plugin = await loadPlugin(pluginConfig.name, pluginConfig);
399
- if (!plugin) {
400
- return null;
401
- }
402
- if (!isValidPackageName(plugin.name)) {
403
- getLogger().warning(`plugin ${plugin.name} has no valid package name!`);
404
- }
405
- plugin[contextIdSymbol] = context.id;
406
- return plugin;
407
- }));
462
+ const plugins = await Promise.all(
463
+ config.plugins.map(async (pluginConfig) => {
464
+ const plugin = await loadPlugin(pluginConfig.name, pluginConfig);
465
+ if (!plugin) {
466
+ return null;
467
+ }
468
+ if (!isValidPackageName(plugin.name)) {
469
+ getLogger().warning(
470
+ `plugin ${plugin.name} has no valid package name!`,
471
+ );
472
+ }
473
+ plugin[moduleIdSymbol] = module._id;
474
+ return plugin;
475
+ }),
476
+ );
408
477
 
409
- plugins
410
- .filter(p => p)
411
- .map(p => this._plugins.override(p));
478
+ plugins.filter((p) => p).map((p) => this._plugins.override(p));
412
479
  }
413
480
  if (Array.isArray(config.i18n)) {
414
- await this.i18n.parseItems(config.i18n, context.id);
481
+ await this.i18n.parseItems(config.i18n, module._id);
415
482
  }
416
- await super._parseContext(context);
417
- await this._contentTree.parseItems(config.contentTree, context.id);
418
- await this._uiConfig.parseItems(config.uiConfig, context.id);
419
- await this._featureInfo.collection.parseItems(config.featureInfo, context.id);
483
+ await super._parseModule(module);
484
+ await this._contentTree.parseItems(config.contentTree, module._id);
485
+ await this._uiConfig.parseItems(config.uiConfig, module._id);
486
+ await this._featureInfo.collection.parseItems(
487
+ config.featureInfo,
488
+ module._id,
489
+ );
420
490
  }
421
491
 
422
492
  /**
423
- * @param {import("@vcmap/core").Context} context
493
+ * @param {import("@vcmap/core").VcsModule} module
424
494
  * @returns {Promise<void>}
425
495
  * @protected
426
496
  */
427
- async _setContextState(context) {
428
- await super._setContextState(context);
429
- if (this._cachedAppState.contextIds.includes(context.id)) {
497
+ async _setModuleState(module) {
498
+ await super._setModuleState(module);
499
+ if (this._cachedAppState.moduleIds.includes(module._id)) {
430
500
  this._cachedAppState.layers.forEach((layerState) => {
431
501
  const layer = this.layers.getByKey(layerState.name);
432
502
  if (layer) {
@@ -436,43 +506,72 @@ class VcsUiApp extends VcsApp {
436
506
  layer.deactivate();
437
507
  }
438
508
 
439
- if (layerState.styleName && this.styles.hasKey(layerState.styleName) && layer.setStyle) {
509
+ if (
510
+ layerState.styleName &&
511
+ this.styles.hasKey(layerState.styleName) &&
512
+ layer.setStyle
513
+ ) {
440
514
  layer.setStyle(this.styles.getByKey(layerState.styleName));
441
515
  }
442
516
  }
443
517
  });
444
- if (this._cachedAppState.activeMap && this.maps.hasKey(this._cachedAppState.activeMap)) {
518
+ if (
519
+ this._cachedAppState.activeMap &&
520
+ this.maps.hasKey(this._cachedAppState.activeMap)
521
+ ) {
445
522
  await this.maps.setActiveMap(this._cachedAppState.activeMap);
446
523
  }
447
524
  if (
448
525
  this._cachedAppState.activeObliqueCollection &&
449
526
  this.maps.activeMap instanceof ObliqueMap &&
450
- this.obliqueCollections.hasKey(this._cachedAppState.activeObliqueCollection)
527
+ this.obliqueCollections.hasKey(
528
+ this._cachedAppState.activeObliqueCollection,
529
+ )
451
530
  ) {
452
531
  await this.maps.activeMap.setCollection(
453
- this.obliqueCollections.getByKey(this._cachedAppState.activeObliqueCollection),
454
- this._cachedAppState.activeViewpoint,
532
+ this.obliqueCollections.getByKey(
533
+ this._cachedAppState.activeObliqueCollection,
534
+ ),
535
+ new Viewpoint(this._cachedAppState.activeViewpoint),
455
536
  );
456
537
  } else if (this._cachedAppState.activeViewpoint && this.maps.activeMap) {
457
- await this.maps.activeMap.gotoViewpoint(new Viewpoint(this._cachedAppState.activeViewpoint));
538
+ await this.maps.activeMap.gotoViewpoint(
539
+ new Viewpoint(this._cachedAppState.activeViewpoint),
540
+ );
458
541
  }
459
- this._cachedAppState.contextIds.splice(this._cachedAppState.contextIds.indexOf(context.id), 1);
542
+ this._cachedAppState.moduleIds.splice(
543
+ this._cachedAppState.moduleIds.indexOf(module._id),
544
+ 1,
545
+ );
460
546
  }
461
547
  }
462
548
 
463
549
  /**
464
- * @param {string} contextId
550
+ * @param {string} moduleId
551
+ * @returns {VcsUiModuleConfig}
552
+ */
553
+ serializeModule(moduleId) {
554
+ const config = super.serializeModule(moduleId);
555
+ config.uiConfig = this._uiConfig.serializeModule(moduleId);
556
+ config.featureInfo = this._featureInfo.collection.serializeModule(moduleId);
557
+ config.i18n = this._i18n.serializeModule(moduleId);
558
+ config.plugins = this._plugins.serializeModule(moduleId);
559
+ return config;
560
+ }
561
+
562
+ /**
563
+ * @param {string} moduleId
465
564
  * @returns {Promise<void>}
466
565
  * @protected
467
566
  */
468
- async _removeContext(contextId) {
567
+ async _removeModule(moduleId) {
469
568
  await Promise.all([
470
- super._removeContext(contextId),
471
- this._plugins.removeContext(contextId),
472
- this._i18n.removeContext(contextId),
473
- this._contentTree.removeContext(contextId),
474
- this._featureInfo.collection.removeContext(contextId),
475
- this._uiConfig.removeContext(contextId),
569
+ super._removeModule(moduleId),
570
+ this._plugins.removeModule(moduleId),
571
+ this._i18n.removeModule(moduleId),
572
+ this._contentTree.removeModule(moduleId),
573
+ this._featureInfo.collection.removeModule(moduleId),
574
+ this._uiConfig.removeModule(moduleId),
476
575
  ]);
477
576
  }
478
577
 
@@ -486,7 +585,9 @@ class VcsUiApp extends VcsApp {
486
585
  this.categoryManager.destroy();
487
586
  this.contextMenuManager.destroy();
488
587
  this._overviewMap.destroy();
489
- this._pluginListeners.forEach((cb) => { cb(); });
588
+ this._pluginListeners.forEach((cb) => {
589
+ cb();
590
+ });
490
591
  this._pluginListeners = [];
491
592
  destroyCollection(this._plugins);
492
593
  destroyCollection(this._contentTree);
@@ -5,7 +5,6 @@ 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
  /**
@@ -21,6 +20,7 @@ export function createVueI18n() {
21
20
  messages: {
22
21
  en: {},
23
22
  },
23
+ postTranslation: (val, key) => (typeof val === 'string' ? val : key),
24
24
  });
25
25
  return i18n;
26
26
  }
@@ -45,7 +45,7 @@ function setI18n(messages, i18n) {
45
45
  * @returns {function():void} returns a destroy function
46
46
  */
47
47
  export function setupI18n(app, i18n) {
48
- const defaultMessages = { en, de };
48
+ const defaultMessages = { name: 'default', en, de };
49
49
  defaultMessages[i18nPluginSymbol] = vcsAppSymbol;
50
50
  app.i18n.add(defaultMessages);
51
51
 
@@ -63,7 +63,8 @@ export function setupI18n(app, i18n) {
63
63
  }),
64
64
  ];
65
65
  return function tearDownI18nSetup() {
66
- destroyFunctions.forEach((destroy) => { destroy(); });
66
+ destroyFunctions.forEach((destroy) => {
67
+ destroy();
68
+ });
67
69
  };
68
70
  }
69
-
@@ -19,6 +19,9 @@ export const defaultPrimaryColor = {
19
19
  * @returns {import("vuetify").default}
20
20
  */
21
21
  export function createVuetify() {
22
+ const dark =
23
+ window.matchMedia?.('(prefers-color-scheme: dark)')?.matches ?? false;
24
+
22
25
  return new Vuetify({
23
26
  treeShake: false,
24
27
  defaultAssets: {
@@ -27,6 +30,7 @@ export function createVuetify() {
27
30
  },
28
31
  },
29
32
  theme: {
33
+ dark,
30
34
  options: {
31
35
  customProperties: true,
32
36
  },
package/start.js CHANGED
@@ -1,3 +1,9 @@
1
- import { initApp } from '@vcmap/ui';
1
+ // to load a app.config.json containing a set of configs
2
+ import { initAppFromAppConfig } from '@vcmap/ui';
2
3
 
3
- initApp('#app', 'map.config.json');
4
+ initAppFromAppConfig('#app', 'app.config.json');
5
+
6
+ // to load a single module (config)
7
+ // import { initAppFromModule } from '@vcmap/ui';
8
+
9
+ // initAppFromModule('#app', 'config/projects.config.json');