@vcmap/ui 5.0.0-rc.23 → 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 (417) 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 +184 -174
  5. package/build/buildCesium.js +32 -19
  6. package/build/buildHelpers.js +117 -48
  7. package/build/buildPreview.js +7 -4
  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 +16 -44
  15. package/config/base.config.json +71 -246
  16. package/config/codes.config.json +3 -1
  17. package/config/dev.config.json +5 -13
  18. package/config/graphFeatureInfo.config.json +55 -16
  19. package/config/projects.config.json +5 -2
  20. package/config/www.config.json +96 -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.166f91.js → cesium.253914.js} +36578 -33768
  121. package/dist/assets/cesium.js +1 -1
  122. package/dist/assets/{core.9342a1.js → core.3a8205.js} +53 -58
  123. package/dist/assets/core.js +1 -1
  124. package/dist/assets/{index.fd041928.js → index.91ae2d55.js} +1 -1
  125. package/dist/assets/{ol.d2cba3.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.c27597.js → ui.0025be.js} +5494 -4759
  129. package/dist/assets/ui.js +1 -1
  130. package/dist/assets/vue.js +2 -2
  131. package/dist/assets/{vuetify.2f1432.css → vuetify.6efa21.css} +2 -2
  132. package/dist/assets/{vuetify.2f1432.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 +65 -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 +18 -9
  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/ModulesListComponent.vue +4 -8
  147. package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +5 -10
  148. package/plugins/@vcmap/project-selector/README.md +4 -2
  149. package/plugins/@vcmap/project-selector/config.json +13 -13
  150. package/plugins/@vcmap/project-selector/de.json +2 -2
  151. package/plugins/@vcmap/project-selector/en.json +2 -2
  152. package/plugins/@vcmap/project-selector/index.js +63 -28
  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 +1 -1
  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 +143 -116
  170. package/plugins/@vcmap-show-case/category-tester/Category.vue +46 -26
  171. package/plugins/@vcmap-show-case/category-tester/index.js +9 -3
  172. package/plugins/@vcmap-show-case/config-editor/{editor.vue → ConfigEditor.vue} +20 -24
  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 +89 -118
  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 +41 -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 +22 -41
  188. package/plugins/@vcmap-show-case/table-example/index.js +10 -8
  189. package/plugins/@vcmap-show-case/textfields-example/TextfieldsExample.vue +7 -30
  190. package/plugins/@vcmap-show-case/textfields-example/index.js +10 -4
  191. package/plugins/@vcmap-show-case/window-tester/WindowExample.vue +16 -13
  192. package/plugins/@vcmap-show-case/window-tester/emptyComponent.vue +4 -7
  193. package/plugins/@vcmap-show-case/window-tester/index.js +26 -20
  194. package/plugins/@vcmap-show-case/window-tester/myCustomHeader.vue +7 -3
  195. package/plugins/@vcmap-show-case/window-tester/toolbox-data.js +82 -5
  196. package/plugins/@vcmap-show-case/window-tester/windowExampleContent.vue +3 -7
  197. package/plugins/@vcmap-show-case/wizard-example/index.js +9 -3
  198. package/plugins/@vcmap-show-case/wizard-example/wizardExample.vue +36 -38
  199. package/src/actions/actionHelper.js +49 -11
  200. package/src/actions/styleSelector.vue +20 -11
  201. package/src/application/VcsApp.vue +117 -80
  202. package/src/application/VcsAttributions.vue +8 -9
  203. package/src/application/VcsAttributionsFooter.vue +12 -9
  204. package/src/application/VcsMap.vue +9 -5
  205. package/src/application/VcsNavbar.vue +44 -27
  206. package/src/application/VcsSettings.vue +5 -12
  207. package/src/application/attributionsHelper.js +23 -11
  208. package/src/application/vcsAppWrapper.vue +1 -3
  209. package/src/components/buttons/VcsActionButtonList.vue +20 -17
  210. package/src/components/buttons/VcsButton.vue +19 -23
  211. package/src/components/buttons/VcsFormButton.vue +176 -0
  212. package/src/components/form-inputs-controls/VcsCheckbox.vue +6 -7
  213. package/src/components/form-inputs-controls/VcsDatePicker.vue +50 -19
  214. package/src/components/form-inputs-controls/VcsFormSection.vue +11 -12
  215. package/src/components/form-inputs-controls/VcsLabel.vue +9 -10
  216. package/src/components/form-inputs-controls/VcsRadio.vue +44 -44
  217. package/src/components/form-inputs-controls/VcsSelect.vue +16 -13
  218. package/src/components/form-inputs-controls/VcsTextArea.vue +21 -14
  219. package/src/components/form-inputs-controls/VcsTextField.vue +26 -12
  220. package/src/components/form-inputs-controls/VcsWizard.vue +78 -78
  221. package/src/components/form-inputs-controls/VcsWizardStep.vue +20 -20
  222. package/src/components/form-inputs-controls/composables.js +13 -8
  223. package/src/components/form-output/VcsFormattedNumber.vue +26 -26
  224. package/src/components/icons/+all.js +13 -5
  225. package/src/components/icons/2DAreaIcon.vue +62 -10
  226. package/src/components/icons/2DDistanceIcon.vue +14 -2
  227. package/src/components/icons/3DAreaIcon.vue +62 -10
  228. package/src/components/icons/3DDistanceIcon.vue +14 -2
  229. package/src/components/icons/3DHeightIcon.vue +14 -2
  230. package/src/components/icons/AngleIcon.vue +12 -3
  231. package/src/components/icons/AssociationsIcon.vue +6 -1
  232. package/src/components/icons/AxisIcon.vue +34 -5
  233. package/src/components/icons/BoundingBoxIcon.vue +31 -5
  234. package/src/components/icons/CheckboxCheckedIcon.vue +4 -1
  235. package/src/components/icons/CheckboxIcon.vue +1 -8
  236. package/src/components/icons/CheckboxIndeterminateIcon.vue +9 -2
  237. package/src/components/icons/CircleIcon.vue +24 -4
  238. package/src/components/icons/ClippingHorizontalIcon.vue +14 -2
  239. package/src/components/icons/ClippingIcon.vue +13 -2
  240. package/src/components/icons/ClippingVerticalIcon.vue +14 -2
  241. package/src/components/icons/ColorPickerIcon.vue +13 -2
  242. package/src/components/icons/ColorSwatchIcon.vue +7 -1
  243. package/src/components/icons/CommentIcon.vue +6 -1
  244. package/src/components/icons/CompassIcon.vue +21 -3
  245. package/src/components/icons/ComponentsIcon.vue +14 -2
  246. package/src/components/icons/ConeIcon.vue +26 -4
  247. package/src/components/icons/DimensionsHouseIcon.vue +7 -1
  248. package/src/components/icons/EditIcon.vue +13 -2
  249. package/src/components/icons/ElevationProfileIcon.vue +6 -1
  250. package/src/components/icons/ExportAreaIcon.vue +13 -2
  251. package/src/components/icons/ExportFlightIcon.vue +13 -2
  252. package/src/components/icons/ExportIcon.vue +14 -2
  253. package/src/components/icons/ExternalLinkIcon.vue +18 -3
  254. package/src/components/icons/EyeIcon.vue +12 -2
  255. package/src/components/icons/FastForwardIcon.vue +13 -2
  256. package/src/components/icons/FilterIcon.vue +13 -2
  257. package/src/components/icons/GlobalTerrainIcon.vue +12 -2
  258. package/src/components/icons/GlobeNatureIcon.vue +7 -1
  259. package/src/components/icons/GroundIcon.vue +12 -2
  260. package/src/components/icons/HealthCareIndustriesIcon.vue +6 -1
  261. package/src/components/icons/HelpIcon.vue +12 -2
  262. package/src/components/icons/HideIcon.vue +17 -3
  263. package/src/components/icons/HomePointIcon.vue +13 -3
  264. package/src/components/icons/HospitalsIcon.vue +6 -1
  265. package/src/components/icons/HouseIcon.vue +20 -3
  266. package/src/components/icons/ImportIcon.vue +21 -3
  267. package/src/components/icons/InfoIcon.vue +19 -3
  268. package/src/components/icons/KebabIcon.vue +12 -2
  269. package/src/components/icons/LabelIcon.vue +21 -3
  270. package/src/components/icons/LayersIcon.vue +12 -2
  271. package/src/components/icons/LegendIcon.vue +13 -3
  272. package/src/components/icons/LineIcon.vue +20 -3
  273. package/src/components/icons/LinkIcon.vue +13 -2
  274. package/src/components/icons/LogoutIcon.vue +13 -2
  275. package/src/components/icons/MapIcon.vue +14 -2
  276. package/src/components/icons/MenuIcon.vue +7 -1
  277. package/src/components/icons/MinusIcon.vue +14 -2
  278. package/src/components/icons/ObjectAttributeIcon.vue +13 -2
  279. package/src/components/icons/ObjectSelectIcon.vue +14 -2
  280. package/src/components/icons/ObliqueViewIcon.vue +11 -2
  281. package/src/components/icons/PdfIcon.vue +12 -2
  282. package/src/components/icons/PedestrianIcon.vue +13 -2
  283. package/src/components/icons/PenIcon.vue +13 -3
  284. package/src/components/icons/PlayCircleIcon.vue +20 -3
  285. package/src/components/icons/PlusIcon.vue +14 -3
  286. package/src/components/icons/PoiIcon.vue +17 -3
  287. package/src/components/icons/PointSelectIcon.vue +12 -2
  288. package/src/components/icons/PolygonIcon.vue +7 -1
  289. package/src/components/icons/PresentationModeIcon.vue +13 -2
  290. package/src/components/icons/ProgressIcon.vue +8 -6
  291. package/src/components/icons/QueryIcon.vue +31 -5
  292. package/src/components/icons/RectangleIcon.vue +24 -4
  293. package/src/components/icons/ReturnIcon.vue +13 -2
  294. package/src/components/icons/RewindIcon.vue +13 -2
  295. package/src/components/icons/RotateLeftIcon.vue +13 -2
  296. package/src/components/icons/RotateRightIcon.vue +13 -2
  297. package/src/components/icons/ScreenshotIcon.vue +52 -10
  298. package/src/components/icons/SearchIcon.vue +13 -3
  299. package/src/components/icons/ShadowIcon.vue +14 -3
  300. package/src/components/icons/ShapesIcon.vue +13 -3
  301. package/src/components/icons/ShareIcon.vue +17 -4
  302. package/src/components/icons/SimpleCircleFilledIcon.vue +14 -10
  303. package/src/components/icons/SimpleCircleHalfFilledIcon.vue +6 -1
  304. package/src/components/icons/SimpleCircleOutlinedIcon.vue +14 -10
  305. package/src/components/icons/SkipNextIcon.vue +11 -2
  306. package/src/components/icons/SkipPreviousIcon.vue +17 -3
  307. package/src/components/icons/SplitViewIcon.vue +6 -1
  308. package/src/components/icons/TerrainBoxIcon.vue +12 -2
  309. package/src/components/icons/TextStyleIcon.vue +7 -1
  310. package/src/components/icons/ThreeDimensionsIcon.vue +13 -2
  311. package/src/components/icons/ToolsIcon.vue +12 -2
  312. package/src/components/icons/TouchIcon.vue +13 -2
  313. package/src/components/icons/TrashCanIcon.vue +13 -2
  314. package/src/components/icons/TriangleIcon.vue +6 -2
  315. package/src/components/icons/TwoDimensionsIcon.vue +14 -2
  316. package/src/components/icons/UploadIcon.vue +13 -2
  317. package/src/components/icons/UserProfileIcon.vue +13 -2
  318. package/src/components/icons/UserShareIcon.vue +12 -2
  319. package/src/components/icons/VideoRecorderIcon.vue +16 -3
  320. package/src/components/icons/ViewpointFlightIcon.vue +22 -4
  321. package/src/components/icons/ViewpointIcon.vue +22 -4
  322. package/src/components/icons/Viewshed360Icon.vue +14 -2
  323. package/src/components/icons/ViewshedConeIcon.vue +13 -2
  324. package/src/components/icons/ViewshedIcon.vue +14 -2
  325. package/src/components/icons/WalkingIcon.vue +13 -2
  326. package/src/components/icons/WallIcon.vue +19 -3
  327. package/src/components/icons/WandIcon.vue +129 -21
  328. package/src/components/imageElementInjector.vue +1 -3
  329. package/src/components/lists/VcsActionList.vue +21 -18
  330. package/src/components/lists/VcsList.vue +208 -98
  331. package/src/components/lists/VcsTreeview.vue +30 -26
  332. package/src/components/lists/VcsTreeviewLeaf.vue +23 -22
  333. package/src/components/lists/VcsTreeviewSearchbar.vue +19 -15
  334. package/src/components/notification/VcsBadge.vue +4 -6
  335. package/src/components/notification/VcsTooltip.vue +95 -94
  336. package/src/components/notification/validation.js +1 -1
  337. package/src/components/tables/VcsDataTable.vue +107 -95
  338. package/src/components/tables/VcsTable.vue +38 -30
  339. package/src/contentTree/LayerTree.vue +2 -3
  340. package/src/contentTree/contentTreeCollection.js +48 -22
  341. package/src/contentTree/contentTreeItem.js +36 -14
  342. package/src/contentTree/groupContentTreeItem.js +44 -22
  343. package/src/contentTree/layerContentTreeItem.js +42 -20
  344. package/src/contentTree/layerGroupContentTreeItem.js +53 -31
  345. package/src/contentTree/nodeContentTreeItem.js +18 -7
  346. package/src/contentTree/obliqueCollectionContentTreeItem.js +45 -20
  347. package/src/contentTree/subContentTreeItem.js +13 -4
  348. package/src/contentTree/vcsObjectContentTreeItem.js +24 -15
  349. package/src/contentTree/viewpointContentTreeItem.js +19 -6
  350. package/src/downloadHelper.js +4 -1
  351. package/src/featureInfo/AddressBalloonComponent.vue +11 -16
  352. package/src/featureInfo/BalloonComponent.vue +35 -26
  353. package/src/featureInfo/abstractFeatureInfoView.js +29 -13
  354. package/src/featureInfo/addressBalloonFeatureInfoView.js +19 -7
  355. package/src/featureInfo/balloonFeatureInfoView.js +22 -9
  356. package/src/featureInfo/balloonHelper.js +61 -42
  357. package/src/featureInfo/featureInfo.js +71 -31
  358. package/src/featureInfo/featureInfoInteraction.js +13 -7
  359. package/src/featureInfo/iframeFeatureInfoView.js +3 -1
  360. package/src/featureInfo/tableFeatureInfoView.js +15 -5
  361. package/src/i18n/i18nCollection.js +183 -155
  362. package/src/init.js +124 -121
  363. package/src/legend/legendHelper.js +11 -6
  364. package/src/legend/styleLegendItem.vue +18 -12
  365. package/src/legend/vcsLegend.vue +15 -17
  366. package/src/manager/buttonManager.js +6 -3
  367. package/src/manager/categoryManager/CategoryComponent.vue +52 -25
  368. package/src/manager/categoryManager/CategoryComponentList.vue +33 -8
  369. package/src/manager/categoryManager/CategoryManager.vue +4 -5
  370. package/src/manager/categoryManager/categoryManager.js +82 -37
  371. package/src/manager/contextMenu/contextMenuComponent.vue +2 -6
  372. package/src/manager/contextMenu/contextMenuInteraction.js +6 -1
  373. package/src/manager/contextMenu/contextMenuManager.js +37 -22
  374. package/src/manager/navbarManager.js +15 -8
  375. package/src/manager/toolbox/GroupToolboxComponent.vue +22 -21
  376. package/src/manager/toolbox/SelectToolboxComponent.vue +36 -35
  377. package/src/manager/toolbox/ToolboxManager.vue +18 -10
  378. package/src/manager/toolbox/toolboxManager.js +30 -12
  379. package/src/manager/window/WindowComponent.vue +18 -21
  380. package/src/manager/window/WindowComponentHeader.vue +34 -26
  381. package/src/manager/window/WindowManager.vue +33 -22
  382. package/src/manager/window/windowHelper.js +79 -23
  383. package/src/manager/window/windowManager.js +61 -32
  384. package/src/navigation/mapNavCompass.vue +17 -3
  385. package/src/navigation/mapNavigation.vue +59 -40
  386. package/src/navigation/obliqueRotation.vue +6 -8
  387. package/src/navigation/orientationToolsButton.vue +6 -9
  388. package/src/navigation/overviewMap.js +72 -41
  389. package/src/navigation/overviewMapClickedInteraction.js +6 -1
  390. package/src/navigation/tiltSlider.vue +6 -10
  391. package/src/navigation/vcsCompass.vue +1 -9
  392. package/src/navigation/vcsZoomButton.vue +16 -17
  393. package/src/notifier/notifier.js +22 -13
  394. package/src/notifier/notifierComponent.vue +21 -21
  395. package/src/pluginHelper.js +23 -9
  396. package/src/search/resultItem.vue +10 -15
  397. package/src/search/resultsComponent.vue +30 -24
  398. package/src/search/search.js +36 -19
  399. package/src/search/searchComponent.vue +20 -10
  400. package/src/setup.js +9 -9
  401. package/src/state.js +22 -6
  402. package/src/styles/_typography.scss +0 -1
  403. package/src/styles/shades.scss +4 -2
  404. package/src/styles/utils/_border.scss +1 -1
  405. package/src/styles/utils/_display.scss +1 -1
  406. package/src/styles/variables.scss +39 -34
  407. package/src/styles/vcsFont.scss +6 -5
  408. package/src/styles/vcsGrid.scss +9 -0
  409. package/src/uiConfig.js +3 -1
  410. package/src/vcsUiApp.js +156 -59
  411. package/src/vuePlugins/i18n.js +4 -4
  412. package/src/vuePlugins/vuetify.js +4 -0
  413. package/dist/assets/cesium/Workers/PolygonPipeline-844aab0a.js +0 -1345
  414. package/dist/assets/cesium/Workers/Transforms-40229881.js +0 -14696
  415. package/dist/assets/ui.c27597.css +0 -5
  416. /package/dist/assets/cesium/Workers/{GeometryOffsetAttribute-04332ce7.js → GeometryOffsetAttribute-9ad0019c.js} +0 -0
  417. /package/dist/assets/{vue.5d00e9.js → vue.c1ece7.js} +0 -0
@@ -1,155 +1,183 @@
1
- // eslint-disable-next-line max-classes-per-file
2
- import { moduleIdSymbol, IndexedCollection } from '@vcmap/core';
3
- import { getLogger } from '@vcsuite/logger';
4
-
5
- /**
6
- * returns true if the given value is of type object and not an array.
7
- * This function does not handle Maps and Sets and also returns true for these.
8
- * This helper function is mainly used for the i18nCollection mergeDeep function
9
- * @param {*} item
10
- * @returns {boolean}
11
- */
12
- export function isObject(item) {
13
- return (!!item && typeof item === 'object' && !Array.isArray(item));
14
- }
15
-
16
- /**
17
- * A symbol added to plugin messages added to this collection.
18
- * @type {symbol}
19
- */
20
- export const i18nPluginSymbol = Symbol('I18nPluginSymbol');
21
-
22
- /**
23
- * Deep merge objects into a new Object. Can only handle stringifyable content.
24
- * This will create a new deep copy of the given sources. No copy by reference.
25
- * @param {...Object} sources
26
- * @returns {Object}
27
- */
28
- export function mergeDeep(...sources) {
29
- return sources.reduce((prev, obj) => {
30
- Object.entries(obj).forEach(([key, value]) => {
31
- if (isObject(prev[key]) && isObject(value)) { // recursive merge if both values are objects.
32
- prev[key] = mergeDeep(prev[key], value);
33
- } else if (isObject(prev[key])) { // do not override complex object with atomic value
34
- getLogger('i18n').warning(
35
- `Overwriting a complex Object I18n Key with a string value is not allowed. Value:
36
- ${JSON.stringify(prev[key])}, newValue: ${JSON.stringify(obj[key])}`,
37
- );
38
- } else {
39
- // JSON parse/stringify to create a deep copy of the to set value, so we do not pass parts
40
- // of a source by reference
41
- prev[key] = JSON.parse(JSON.stringify(value));
42
- }
43
- });
44
- return prev;
45
- }, {});
46
- }
47
-
48
-
49
- /**
50
- * @extends {IndexedCollection<Object>}
51
- */
52
- class I18nCollection extends IndexedCollection {
53
- /**
54
- * @param {function():string} getDynamicModuleId - function to get the current dynamic module id
55
- */
56
- constructor(getDynamicModuleId) {
57
- super(false);
58
- /**
59
- * @type {function(): string}
60
- * @private
61
- */
62
- this._getDynamicModuleId = getDynamicModuleId;
63
- }
64
-
65
- /**
66
- * @inheritDoc
67
- */
68
- add(item) {
69
- if (!item[moduleIdSymbol]) {
70
- item[moduleIdSymbol] = this._getDynamicModuleId();
71
- }
72
- super.add(item);
73
- }
74
-
75
- /**
76
- * @param {Array<Object>} configArray
77
- * @param {string} moduleId
78
- * @returns {Promise<void>}
79
- */
80
- async parseItems(configArray, moduleId) {
81
- if (Array.isArray(configArray)) {
82
- configArray.forEach((item) => {
83
- item[moduleIdSymbol] = moduleId;
84
- this.add(item);
85
- });
86
- }
87
- }
88
-
89
- /**
90
- * @param {string} moduleId
91
- */
92
- async removeModule(moduleId) {
93
- [...this]
94
- .filter(item => item[moduleIdSymbol] === moduleId)
95
- .forEach((item) => {
96
- this.remove(item);
97
- });
98
- }
99
-
100
- /**
101
- * @param {string} moduleId
102
- * @returns {Array<Object>}
103
- */
104
- serializeModule(moduleId) {
105
- return [...this]
106
- .filter(item => item[moduleIdSymbol] === moduleId)
107
- .filter(item => !item[i18nPluginSymbol])
108
- .map(item => JSON.parse(JSON.stringify(item)));
109
- }
110
-
111
- /**
112
- * This method adds plugin messages to the collection. It is no necessary to call this function
113
- * from within a plugin. Use the i18n property on your plugin.
114
- * @param {string} plugin Name of the plugin
115
- * @param {string} moduleId
116
- * @param {Object} messages
117
- */
118
- addPluginMessages(plugin, moduleId, messages) {
119
- messages[i18nPluginSymbol] = plugin;
120
- messages[moduleIdSymbol] = moduleId;
121
- this.add(messages);
122
- }
123
-
124
- /**
125
- * This method removes plugin messages from the collection. It is no necessary to call this function
126
- * from within a plugin. Once your plugin is removed, the VcsUiApp will call this for you.
127
- * @param {string} pluginName
128
- * @param {string} moduleId
129
- */
130
- removePluginMessages(pluginName, moduleId) {
131
- [...this]
132
- .filter(item => item[i18nPluginSymbol] === pluginName && item[moduleIdSymbol] === moduleId)
133
- .forEach((item) => {
134
- this.remove(item);
135
- });
136
- }
137
-
138
- /**
139
- * returns a merged Message Object with the locale as a key and an Object with all the translated keys
140
- * @returns {Object}
141
- */
142
- getMergedMessages() {
143
- return mergeDeep(...this);
144
- }
145
-
146
- /**
147
- * @inheritDoc
148
- */
149
- destroy() {
150
- this._getDynamicModuleId = null;
151
- super.destroy();
152
- }
153
- }
154
-
155
- export default I18nCollection;
1
+ // eslint-disable-next-line max-classes-per-file
2
+ import { v5 as uuidv5 } from 'uuid';
3
+ import { IndexedCollection, moduleIdSymbol } from '@vcmap/core';
4
+ import { getLogger } from '@vcsuite/logger';
5
+
6
+ /**
7
+ * @type {string}
8
+ */
9
+ const uniqueNamespace = '9c27cc2d-552f-4637-9194-09329ed4c1dc';
10
+
11
+ /**
12
+ * returns true if the given value is of type object and not an array.
13
+ * This function does not handle Maps and Sets and also returns true for these.
14
+ * This helper function is mainly used for the i18nCollection mergeDeep function
15
+ * @param {*} item
16
+ * @returns {boolean}
17
+ */
18
+ export function isObject(item) {
19
+ return !!item && typeof item === 'object' && !Array.isArray(item);
20
+ }
21
+
22
+ /**
23
+ * Item for internationalization containing an object with key value mapping for each locale (de, en, nl, pl, ...).
24
+ * Other locales can be supported by adding corresponding mapping objects with associated locale key.
25
+ * @typedef {Object} I18nConfigurationItem
26
+ * @property {string} [name] - optional name for the item. If not provided checksum is used.
27
+ * @property {Object} [properties]
28
+ * @property {Object} [de]
29
+ * @property {Object} [en]
30
+ * ...
31
+ */
32
+
33
+ /**
34
+ * A symbol added to plugin messages added to this collection.
35
+ * @type {symbol}
36
+ */
37
+ export const i18nPluginSymbol = Symbol('I18nPluginSymbol');
38
+
39
+ /**
40
+ * Deep merge objects into a new Object. Can only handle stringifyable content.
41
+ * This will create a new deep copy of the given sources. No copy by reference.
42
+ * @param {...Object} sources
43
+ * @returns {Object}
44
+ */
45
+ export function mergeDeep(...sources) {
46
+ return sources.reduce((prev, obj) => {
47
+ Object.entries(obj)
48
+ .filter(([key]) => !['name', 'properties'].includes(key))
49
+ .forEach(([key, value]) => {
50
+ if (isObject(prev[key]) && isObject(value)) {
51
+ // recursive merge if both values are objects.
52
+ prev[key] = mergeDeep(prev[key], value);
53
+ } else if (isObject(prev[key])) {
54
+ // do not override complex object with atomic value
55
+ getLogger('i18n').warning(
56
+ `Overwriting a complex Object I18n Key with a string value is not allowed. Value:
57
+ ${JSON.stringify(prev[key])}, newValue: ${JSON.stringify(obj[key])}`,
58
+ );
59
+ } else {
60
+ // JSON parse/stringify to create a deep copy of the to set value, so we do not pass parts
61
+ // of a source by reference
62
+ prev[key] = JSON.parse(JSON.stringify(value));
63
+ }
64
+ });
65
+ return prev;
66
+ }, {});
67
+ }
68
+
69
+ /**
70
+ * @extends {IndexedCollection<I18nConfigurationItem>}
71
+ */
72
+ class I18nCollection extends IndexedCollection {
73
+ /**
74
+ * @param {function():string} getDynamicModuleId - function to get the current dynamic module id
75
+ */
76
+ constructor(getDynamicModuleId) {
77
+ super();
78
+ /**
79
+ * @type {function(): string}
80
+ * @private
81
+ */
82
+ this._getDynamicModuleId = getDynamicModuleId;
83
+ }
84
+
85
+ /**
86
+ * @inheritDoc
87
+ */
88
+ add(item) {
89
+ if (!item[moduleIdSymbol]) {
90
+ item[moduleIdSymbol] = this._getDynamicModuleId();
91
+ }
92
+ if (!item.name) {
93
+ item.name = uuidv5(JSON.stringify(item), uniqueNamespace);
94
+ }
95
+ super.add(item);
96
+ }
97
+
98
+ /**
99
+ * @param {Array<I18nConfigurationItem>} configArray
100
+ * @param {string} moduleId
101
+ * @returns {Promise<void>}
102
+ */
103
+ async parseItems(configArray, moduleId) {
104
+ if (Array.isArray(configArray)) {
105
+ configArray.forEach((item) => {
106
+ item[moduleIdSymbol] = moduleId;
107
+ this.add(item);
108
+ });
109
+ }
110
+ }
111
+
112
+ /**
113
+ * @param {string} moduleId
114
+ */
115
+ async removeModule(moduleId) {
116
+ [...this]
117
+ .filter((item) => item[moduleIdSymbol] === moduleId)
118
+ .forEach((item) => {
119
+ this.remove(item);
120
+ });
121
+ }
122
+
123
+ /**
124
+ * @param {string} moduleId
125
+ * @returns {Array<I18nConfigurationItem>}
126
+ */
127
+ serializeModule(moduleId) {
128
+ return [...this]
129
+ .filter((item) => item[moduleIdSymbol] === moduleId)
130
+ .filter((item) => !item[i18nPluginSymbol])
131
+ .map((item) => JSON.parse(JSON.stringify(item)));
132
+ }
133
+
134
+ /**
135
+ * This method adds plugin messages to the collection. It is no necessary to call this function
136
+ * from within a plugin. Use the i18n property on your plugin.
137
+ * @param {string} plugin Name of the plugin
138
+ * @param {string} moduleId
139
+ * @param {Object} messages
140
+ */
141
+ addPluginMessages(plugin, moduleId, messages) {
142
+ messages[i18nPluginSymbol] = plugin;
143
+ messages[moduleIdSymbol] = moduleId;
144
+ messages.name = plugin;
145
+ this.add(messages);
146
+ }
147
+
148
+ /**
149
+ * This method removes plugin messages from the collection. It is no necessary to call this function
150
+ * from within a plugin. Once your plugin is removed, the VcsUiApp will call this for you.
151
+ * @param {string} pluginName
152
+ * @param {string} moduleId
153
+ */
154
+ removePluginMessages(pluginName, moduleId) {
155
+ [...this]
156
+ .filter(
157
+ (item) =>
158
+ item[i18nPluginSymbol] === pluginName &&
159
+ item[moduleIdSymbol] === moduleId,
160
+ )
161
+ .forEach((item) => {
162
+ this.remove(item);
163
+ });
164
+ }
165
+
166
+ /**
167
+ * returns a merged Message Object with the locale as a key and an Object with all the translated keys
168
+ * @returns {Object}
169
+ */
170
+ getMergedMessages() {
171
+ return mergeDeep(...this);
172
+ }
173
+
174
+ /**
175
+ * @inheritDoc
176
+ */
177
+ destroy() {
178
+ this._getDynamicModuleId = null;
179
+ super.destroy();
180
+ }
181
+ }
182
+
183
+ export default I18nCollection;
package/src/init.js CHANGED
@@ -1,121 +1,124 @@
1
- import Vue from 'vue';
2
- import { check, checkMaybe, is } from '@vcsuite/check';
3
- import { VcsModule } from '@vcmap/core';
4
- import VcsAppComponentWrapper from './application/vcsAppWrapper.vue';
5
- import { vuetify } from './vuePlugins/vuetify.js';
6
- import { createVueI18n, setupI18n } from './vuePlugins/i18n.js';
7
- import VcsUiApp from './vcsUiApp.js';
8
-
9
- /**
10
- * Base pattern to check VcsObjects
11
- * @type {import("vcsuite/check").PatternFor<import("@vcmap/core").VcsObject>}
12
- */
13
- const VcsObjectPattern = {
14
- type: String,
15
- name: String,
16
- };
17
-
18
- /**
19
- * Base pattern to check VcsUiAppConfig
20
- * @type {import("vcsuite/check").PatternFor<VcsUiAppConfig>}
21
- */
22
- export const VcsUiAppConfigPattern = {
23
- id: [undefined, String],
24
- layers: [undefined, [VcsObjectPattern]],
25
- maps: [undefined, [VcsObjectPattern]],
26
- styles: [undefined, [VcsObjectPattern]],
27
- viewpoints: [undefined, [VcsObjectPattern]],
28
- startingViewpointName: [undefined, String],
29
- startingMapName: [undefined, String],
30
- projection: [undefined, Object],
31
- categories: [undefined, [{ name: String, items: [Object] }]],
32
- obliqueCollections: [undefined, [VcsObjectPattern]],
33
- plugins: [undefined, [Object]],
34
- contentTree: [undefined, [Object]],
35
- uiConfig: [undefined, [Object]],
36
- featureInfo: [undefined, [VcsObjectPattern]],
37
- i18n: [undefined, [Object]],
38
- };
39
-
40
- /**
41
- * creates and mounts a vcsApp
42
- * @param {string} mountTarget
43
- * @returns {Promise<VcsUiApp>}
44
- */
45
- export default async function initApp(mountTarget) {
46
- check(mountTarget, String);
47
- const app = new VcsUiApp();
48
- const i18n = createVueI18n();
49
- new Vue({
50
- vuetify,
51
- i18n,
52
- render: h => h(VcsAppComponentWrapper, {
53
- props: {
54
- appId: app.id,
55
- },
56
- }),
57
- }).$mount(mountTarget);
58
-
59
- setupI18n(app, i18n);
60
- return app;
61
- }
62
-
63
- /**
64
- * Initializes app with an optional single config
65
- * @param {string} mountTarget
66
- * @param {string=} configUrl optional config
67
- * @returns {Promise<VcsUiApp>}
68
- */
69
- export async function initAppFromModule(mountTarget, configUrl) {
70
- check(mountTarget, String);
71
- checkMaybe(configUrl, String);
72
-
73
- const app = await initApp(mountTarget);
74
- if (configUrl) {
75
- const config = await fetch(configUrl)
76
- .then(response => response.json());
77
- const module = new VcsModule(config);
78
- await app.addModule(module);
79
- }
80
-
81
- return app;
82
- }
83
-
84
- /**
85
- * Initializes app with a map config containing a set of config urls
86
- * @param {string} mountTarget
87
- * @param {string} appUrl app config containing further modules to be loaded
88
- * @returns {Promise<VcsUiApp>}
89
- */
90
- export async function initAppFromAppConfig(mountTarget, appUrl) {
91
- check(mountTarget, String);
92
- check(appUrl, String);
93
-
94
- const app = await initApp(mountTarget);
95
- /**
96
- * @type {{modules: Array<string|VcsUiAppConfig>}}
97
- */
98
- const appConfig = await fetch(appUrl)
99
- .then(response => response.json());
100
-
101
- check(appConfig.modules, [String, Object]);
102
-
103
- const modules = await Promise.all(appConfig.modules.map(async (c) => {
104
- if (is(c, VcsUiAppConfigPattern)) {
105
- return new VcsModule(/** @type{import("@vcmap/core").VcsAppConfig} */ c);
106
- } else if (is(c, String)) {
107
- const response = await fetch(c);
108
- if (response.ok) {
109
- const config = await response.json();
110
- return new VcsModule(config);
111
- }
112
- }
113
- return null;
114
- }));
115
- // eslint-disable-next-line no-restricted-syntax
116
- for await (const module of modules) {
117
- if (module) {
118
- await app.addModule(module);
119
- }
120
- }
121
- }
1
+ import Vue from 'vue';
2
+ import { check, checkMaybe, is } from '@vcsuite/check';
3
+ import { VcsModule } from '@vcmap/core';
4
+ import VcsAppComponentWrapper from './application/vcsAppWrapper.vue';
5
+ import { vuetify } from './vuePlugins/vuetify.js';
6
+ import { createVueI18n, setupI18n } from './vuePlugins/i18n.js';
7
+ import VcsUiApp from './vcsUiApp.js';
8
+
9
+ /**
10
+ * Base pattern to check VcsObjects
11
+ * @type {import("vcsuite/check").PatternFor<import("@vcmap/core").VcsObject>}
12
+ */
13
+ const VcsObjectPattern = {
14
+ type: String,
15
+ name: String,
16
+ };
17
+
18
+ /**
19
+ * Base pattern to check VcsUiAppConfig
20
+ * @type {import("vcsuite/check").PatternFor<VcsUiAppConfig>}
21
+ */
22
+ export const VcsUiAppConfigPattern = {
23
+ id: [undefined, String],
24
+ layers: [undefined, [VcsObjectPattern]],
25
+ maps: [undefined, [VcsObjectPattern]],
26
+ styles: [undefined, [VcsObjectPattern]],
27
+ viewpoints: [undefined, [VcsObjectPattern]],
28
+ startingViewpointName: [undefined, String],
29
+ startingMapName: [undefined, String],
30
+ projection: [undefined, Object],
31
+ categories: [undefined, [{ name: String, items: [Object] }]],
32
+ obliqueCollections: [undefined, [VcsObjectPattern]],
33
+ plugins: [undefined, [Object]],
34
+ contentTree: [undefined, [Object]],
35
+ uiConfig: [undefined, [Object]],
36
+ featureInfo: [undefined, [VcsObjectPattern]],
37
+ i18n: [undefined, [Object]],
38
+ };
39
+
40
+ /**
41
+ * creates and mounts a vcsApp
42
+ * @param {string} mountTarget
43
+ * @returns {Promise<VcsUiApp>}
44
+ */
45
+ export default async function initApp(mountTarget) {
46
+ check(mountTarget, String);
47
+ const app = new VcsUiApp();
48
+ const i18n = createVueI18n();
49
+ new Vue({
50
+ vuetify,
51
+ i18n,
52
+ render: (h) =>
53
+ h(VcsAppComponentWrapper, {
54
+ props: {
55
+ appId: app.id,
56
+ },
57
+ }),
58
+ }).$mount(mountTarget);
59
+
60
+ setupI18n(app, i18n);
61
+ return app;
62
+ }
63
+
64
+ /**
65
+ * Initializes app with an optional single config
66
+ * @param {string} mountTarget
67
+ * @param {string=} configUrl optional config
68
+ * @returns {Promise<VcsUiApp>}
69
+ */
70
+ export async function initAppFromModule(mountTarget, configUrl) {
71
+ check(mountTarget, String);
72
+ checkMaybe(configUrl, String);
73
+
74
+ const app = await initApp(mountTarget);
75
+ if (configUrl) {
76
+ const config = await fetch(configUrl).then((response) => response.json());
77
+ const module = new VcsModule(config);
78
+ await app.addModule(module);
79
+ }
80
+
81
+ return app;
82
+ }
83
+
84
+ /**
85
+ * Initializes app with a map config containing a set of config urls
86
+ * @param {string} mountTarget
87
+ * @param {string} appUrl app config containing further modules to be loaded
88
+ * @returns {Promise<VcsUiApp>}
89
+ */
90
+ export async function initAppFromAppConfig(mountTarget, appUrl) {
91
+ check(mountTarget, String);
92
+ check(appUrl, String);
93
+
94
+ const app = await initApp(mountTarget);
95
+ /**
96
+ * @type {{modules: Array<string|VcsUiAppConfig>}}
97
+ */
98
+ const appConfig = await fetch(appUrl).then((response) => response.json());
99
+
100
+ check(appConfig.modules, [String, Object]);
101
+
102
+ const modules = await Promise.all(
103
+ appConfig.modules.map(async (c) => {
104
+ if (is(c, VcsUiAppConfigPattern)) {
105
+ return new VcsModule(
106
+ /** @type{import("@vcmap/core").VcsAppConfig} */ c,
107
+ );
108
+ } else if (is(c, String)) {
109
+ const response = await fetch(c);
110
+ if (response.ok) {
111
+ const config = await response.json();
112
+ return new VcsModule(config);
113
+ }
114
+ }
115
+ return null;
116
+ }),
117
+ );
118
+ // eslint-disable-next-line no-restricted-syntax
119
+ for await (const module of modules) {
120
+ if (module) {
121
+ await app.addModule(module);
122
+ }
123
+ }
124
+ }
@@ -43,7 +43,6 @@ export const StyleRowType = {
43
43
  * @property {string} src - the source url. Can be an i18n string.
44
44
  */
45
45
 
46
-
47
46
  /**
48
47
  * @typedef {LegendItem} StyleLegendItem
49
48
  * @property {number} [colNr=2] Number of columns. Valid values are 1 or 2. Per default 2.
@@ -172,27 +171,33 @@ export function getLegendEntries(app) {
172
171
  if (layer.active) {
173
172
  const key = layer.name;
174
173
  const title = layer.properties.title || layer.name;
175
- const legend = layer.style?.properties?.legend ?? layer.properties?.legend;
174
+ const legend =
175
+ layer.style?.properties?.legend ?? layer.properties?.legend;
176
176
  if (legend) {
177
177
  const legendEntry = createLayerLegendEntry(key, title, legend);
178
178
  // use spread since push won't trigger updates. Put new entries at the start
179
179
  entries.value = [legendEntry, ...entries.value];
180
180
  }
181
181
  if (layer.styleChanged) {
182
- styleChangedListener[layer.name] = layer.styleChanged.addEventListener(() => syncLayerLegendEntries(layer));
182
+ styleChangedListener[layer.name] = layer.styleChanged.addEventListener(
183
+ () => syncLayerLegendEntries(layer),
184
+ );
183
185
  }
184
186
  }
185
187
  }
186
188
 
187
- const destroyChangedListener = app.layers.stateChanged.addEventListener(syncLayerLegendEntries);
188
- const destroyRemovedListener = app.layers.removed.addEventListener(removeEntryForLayer);
189
+ const destroyChangedListener = app.layers.stateChanged.addEventListener(
190
+ syncLayerLegendEntries,
191
+ );
192
+ const destroyRemovedListener =
193
+ app.layers.removed.addEventListener(removeEntryForLayer);
189
194
 
190
195
  [...app.layers].forEach(syncLayerLegendEntries);
191
196
 
192
197
  const destroy = () => {
193
198
  destroyChangedListener();
194
199
  destroyRemovedListener();
195
- Object.values(styleChangedListener).forEach(cb => cb());
200
+ Object.values(styleChangedListener).forEach((cb) => cb());
196
201
  };
197
202
 
198
203
  return { entries, destroy };