@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
@@ -1,8 +1,11 @@
1
1
  import { reactive } from 'vue';
2
- import { contextIdSymbol, IndexedCollection, VcsEvent } from '@vcmap/core';
2
+ import { moduleIdSymbol, IndexedCollection, VcsEvent } from '@vcmap/core';
3
3
  import { check } from '@vcsuite/check';
4
4
  import { sortByOwner } from '../navbarManager.js';
5
- import { validateAction, validateActions } from '../../components/lists/VcsActionList.vue';
5
+ import {
6
+ validateAction,
7
+ validateActions,
8
+ } from '../../components/lists/VcsActionList.vue';
6
9
 
7
10
  /**
8
11
  * @callback MappingFunction
@@ -35,6 +38,7 @@ import { validateAction, validateActions } from '../../components/lists/VcsActio
35
38
  * @property {string} title
36
39
  * @property {Array<VcsAction>} actions
37
40
  * @property {Array<VcsListItem & { destroy: (function():void|undefined) }>} items
41
+ * @property {boolean} draggable
38
42
  * @property {boolean} selectable
39
43
  * @property {boolean} singleSelect
40
44
  * @property {Array<VcsListItem>} selection
@@ -44,6 +48,7 @@ import { validateAction, validateActions } from '../../components/lists/VcsActio
44
48
  /**
45
49
  * @typedef {Object} ManagedCategoryOptions
46
50
  * @property {string} categoryName
51
+ * @property {boolean} [draggable] - only allowed for categories with underlying IndexedCollections
47
52
  * @property {boolean} [selectable]
48
53
  * @property {boolean} [singleSelect]
49
54
  * @property {Array<VcsAction>} [actions]
@@ -61,7 +66,9 @@ import { validateAction, validateActions } from '../../components/lists/VcsActio
61
66
  function transformItem(item, category, itemMappings) {
62
67
  const keyProperty = category.collection.uniqueKey;
63
68
  const listItem = {
64
- get id() { return item[keyProperty]; },
69
+ get id() {
70
+ return item[keyProperty];
71
+ },
65
72
  title: item?.properties?.title || item[keyProperty],
66
73
  actions: [],
67
74
  };
@@ -114,6 +121,7 @@ function reduceCategoryOptions(current, next) {
114
121
  if (next.actions?.length > 0) {
115
122
  current.actions.push(...next.actions);
116
123
  }
124
+ current.draggable = current.draggable ?? next.draggable;
117
125
  current.selectable = current.selectable ?? next.selectable;
118
126
  current.singleSelect = current.singleSelect ?? next.singleSelect;
119
127
  return current;
@@ -145,24 +153,26 @@ class CategoryManager {
145
153
  * @type {function():void}
146
154
  * @private
147
155
  */
148
- this._dynamicContextIdListener = this._app.dynamicContextIdChanged.addEventListener((id) => {
149
- this._dynamicContextId = id;
150
- this._resetManagedCategories();
151
- });
156
+ this._dynamicModuleIdListener =
157
+ this._app.dynamicModuleIdChanged.addEventListener((id) => {
158
+ this._dynamicModuleId = id;
159
+ this._resetManagedCategories();
160
+ });
152
161
 
153
162
  /**
154
163
  * @type {function():void}
155
164
  * @private
156
165
  */
157
- this._appCategoriesRemovedListener = this._app.categories.removed.addEventListener((category) => {
158
- this._removeCategory(category.name);
159
- });
166
+ this._appCategoriesRemovedListener =
167
+ this._app.categories.removed.addEventListener((category) => {
168
+ this._removeCategory(category.name);
169
+ });
160
170
 
161
171
  /**
162
172
  * @type {string}
163
173
  * @private
164
174
  */
165
- this._dynamicContextId = this._app.dynamicContextId;
175
+ this._dynamicModuleId = this._app.dynamicModuleId;
166
176
 
167
177
  /**
168
178
  * @type {Array<ItemMapping<*>>}
@@ -217,8 +227,9 @@ class CategoryManager {
217
227
  _handleItemMoved(item, category) {
218
228
  const managedCategory = this.get(category.name);
219
229
  if (managedCategory) {
220
- const index = managedCategory.items
221
- .findIndex((elem) => { return elem.id === item[category.collection.uniqueKey]; });
230
+ const index = managedCategory.items.findIndex((elem) => {
231
+ return elem.id === item[category.collection.uniqueKey];
232
+ });
222
233
  if (index > -1) {
223
234
  const listItem = managedCategory.items[index];
224
235
  managedCategory.items.splice(index, 1);
@@ -237,8 +248,9 @@ class CategoryManager {
237
248
  _handleItemRemoved(item, category) {
238
249
  const managedCategory = this.get(category.name);
239
250
  if (managedCategory) {
240
- const index = managedCategory.items
241
- .findIndex((elem) => { return elem.id === item[category.collection.uniqueKey]; });
251
+ const index = managedCategory.items.findIndex((elem) => {
252
+ return elem.id === item[category.collection.uniqueKey];
253
+ });
242
254
  if (index > -1) {
243
255
  const listItem = managedCategory.items[index];
244
256
  if (listItem.destroy) {
@@ -250,7 +262,7 @@ class CategoryManager {
250
262
  }
251
263
 
252
264
  /**
253
- * removes all items from all categories and rebuilds the item tree depending on the ContextId
265
+ * removes all items from all categories and rebuilds the item tree depending on the ModuleId
254
266
  * @private
255
267
  */
256
268
  _resetManagedCategories() {
@@ -281,7 +293,7 @@ class CategoryManager {
281
293
  });
282
294
  managedCategory.items = [...category.collection]
283
295
  .filter((item) => {
284
- return item[contextIdSymbol] === this._dynamicContextId;
296
+ return item[moduleIdSymbol] === this._dynamicModuleId;
285
297
  })
286
298
  .map((item) => {
287
299
  return transformItem(item, category, itemMappings);
@@ -301,44 +313,52 @@ class CategoryManager {
301
313
  throw new Error(`Could not find Category: ${categoryName}`);
302
314
  }
303
315
 
304
- const options = [...this._managedCategoryOptions.get(category.name).values()] // does not have to be sorted, since this is the first owner
316
+ const options = [
317
+ ...this._managedCategoryOptions.get(category.name).values(),
318
+ ] // does not have to be sorted, since this is the first owner
305
319
  .reduce(reduceCategoryOptions, { actions: [] });
306
320
 
307
321
  const listeners = [
308
322
  category.collection.added.addEventListener((item) => {
309
- if (item[contextIdSymbol] === this._dynamicContextId) {
323
+ if (item[moduleIdSymbol] === this._dynamicModuleId) {
310
324
  this._handleItemAdded(item, category);
311
325
  }
312
326
  }),
313
327
  category.collection.removed.addEventListener((item) => {
314
- if (item[contextIdSymbol] === this._dynamicContextId) {
328
+ if (item[moduleIdSymbol] === this._dynamicModuleId) {
315
329
  this._handleItemRemoved(item, category);
316
330
  }
317
331
  }),
318
332
  category.collection.replaced.addEventListener((replacedEvent) => {
319
- if (replacedEvent.old[contextIdSymbol] === this._dynamicContextId) {
333
+ if (replacedEvent.old[moduleIdSymbol] === this._dynamicModuleId) {
320
334
  this._handleItemRemoved(replacedEvent.old, category);
321
335
  }
322
336
  }),
323
337
  ];
324
338
 
325
339
  if (category.collection instanceof IndexedCollection) {
326
- listeners.push(category.collection.moved.addEventListener((item) => {
327
- if (item[contextIdSymbol] === this._dynamicContextId) {
328
- this._handleItemMoved(item, category);
329
- }
330
- }));
340
+ listeners.push(
341
+ category.collection.moved.addEventListener((item) => {
342
+ if (item[moduleIdSymbol] === this._dynamicModuleId) {
343
+ this._handleItemMoved(item, category);
344
+ }
345
+ }),
346
+ );
331
347
  }
332
348
 
333
349
  /** @type {ManagedCategory} */
334
350
  const managedCategory = reactive({
335
351
  ...options,
336
- get categoryName() { return category.name; },
352
+ get categoryName() {
353
+ return category.name;
354
+ },
337
355
  selection: [],
338
356
  title: category.title,
339
357
  items: [],
340
358
  destroy() {
341
- listeners.forEach((cb) => { cb(); });
359
+ listeners.forEach((cb) => {
360
+ cb();
361
+ });
342
362
  this.items.forEach((item) => {
343
363
  if (item.destroy) {
344
364
  item.destroy();
@@ -365,9 +385,13 @@ class CategoryManager {
365
385
  if (this._managedCategoryOptions.has(categoryName)) {
366
386
  const managedCategory = this.get(categoryName);
367
387
  if (managedCategory) {
368
- const pluginNames = [...this._app.plugins].map(p => p.name);
369
- const options = [...this._managedCategoryOptions.get(categoryName).entries()]
370
- .sort(([ownerA], [ownerB]) => sortByOwner(ownerA, ownerB, pluginNames))
388
+ const pluginNames = [...this._app.plugins].map((p) => p.name);
389
+ const options = [
390
+ ...this._managedCategoryOptions.get(categoryName).entries(),
391
+ ]
392
+ .sort(([ownerA], [ownerB]) =>
393
+ sortByOwner(ownerA, ownerB, pluginNames),
394
+ )
371
395
  .map(([, value]) => value)
372
396
  .reduce(reduceCategoryOptions, { actions: [] });
373
397
  Object.assign(managedCategory, options);
@@ -404,7 +428,10 @@ class CategoryManager {
404
428
  check(owner, [String, Symbol]);
405
429
 
406
430
  const { categoryName } = managedCategoryOptions;
407
- if (managedCategoryOptions.actions && !validateActions(managedCategoryOptions.actions)) {
431
+ if (
432
+ managedCategoryOptions.actions &&
433
+ !validateActions(managedCategoryOptions.actions)
434
+ ) {
408
435
  throw new Error('Invalid actions Array');
409
436
  }
410
437
  if (!this._app.categories.hasKey(categoryName)) {
@@ -412,13 +439,21 @@ class CategoryManager {
412
439
  }
413
440
 
414
441
  if (this._managedCategoryOptions.get(categoryName)?.has(owner)) {
415
- throw new Error(`Category has already been added by this owner: ${categoryName}, ${owner}`);
442
+ throw new Error(
443
+ `Category has already been added by this owner: ${categoryName}, ${owner}`,
444
+ );
445
+ }
446
+ if (managedCategoryOptions.draggable) {
447
+ const { collection } = this._app.categories.getByKey(categoryName);
448
+ managedCategoryOptions.draggable =
449
+ collection instanceof IndexedCollection;
416
450
  }
417
451
 
418
452
  /** @type {ManagedCategoryOptions} */
419
453
  const clonedOptions = {
420
454
  categoryName,
421
455
  actions: managedCategoryOptions.actions?.slice?.() ?? [],
456
+ draggable: managedCategoryOptions.draggable,
422
457
  selectable: managedCategoryOptions.selectable,
423
458
  singleSelect: managedCategoryOptions.singleSelect,
424
459
  };
@@ -489,10 +524,17 @@ class CategoryManager {
489
524
  if (categoryNames.length === 0) {
490
525
  throw new Error('Provide at least one categoryName');
491
526
  }
492
- if (this._itemMappings.find((itemMapping) => {
493
- return itemMapping.mappingFunction === mappingFunction && itemMapping.owner === owner;
494
- })) {
495
- throw new Error('Could not add MappingFunction, the MappingFunction is already under management');
527
+ if (
528
+ this._itemMappings.find((itemMapping) => {
529
+ return (
530
+ itemMapping.mappingFunction === mappingFunction &&
531
+ itemMapping.owner === owner
532
+ );
533
+ })
534
+ ) {
535
+ throw new Error(
536
+ 'Could not add MappingFunction, the MappingFunction is already under management',
537
+ );
496
538
  }
497
539
  /** @type {ItemMapping} */
498
540
  const itemMapping = {
@@ -519,7 +561,10 @@ class CategoryManager {
519
561
  check(owner, [String, Symbol]);
520
562
  const affectedCategories = [];
521
563
  this._itemMappings = this._itemMappings.filter((itemMapping) => {
522
- if (itemMapping.mappingFunction === mappingFunction && itemMapping.owner === owner) {
564
+ if (
565
+ itemMapping.mappingFunction === mappingFunction &&
566
+ itemMapping.owner === owner
567
+ ) {
523
568
  affectedCategories.push(...itemMapping.categoryNames);
524
569
  return false;
525
570
  }
@@ -552,10 +597,9 @@ class CategoryManager {
552
597
  this._removeCategory(categoryName);
553
598
  }
554
599
  });
555
- this._itemMappings = this._itemMappings
556
- .filter((itemMapping) => {
557
- return itemMapping.owner !== owner;
558
- });
600
+ this._itemMappings = this._itemMappings.filter((itemMapping) => {
601
+ return itemMapping.owner !== owner;
602
+ });
559
603
  this._resetManagedCategories();
560
604
  }
561
605
 
@@ -563,8 +607,9 @@ class CategoryManager {
563
607
  * Clears the manager of all added categories and item mappings
564
608
  */
565
609
  clear() {
566
- [...this.componentIds]
567
- .forEach((categoryName) => { this._removeCategory(categoryName); });
610
+ [...this.componentIds].forEach((categoryName) => {
611
+ this._removeCategory(categoryName);
612
+ });
568
613
  this._itemMappings = [];
569
614
  }
570
615
 
@@ -572,7 +617,7 @@ class CategoryManager {
572
617
  * destroys the categoryManager, removes all Listeners and clears all Managed Categories
573
618
  */
574
619
  destroy() {
575
- this._dynamicContextIdListener();
620
+ this._dynamicModuleIdListener();
576
621
  this._appCategoriesRemovedListener();
577
622
  this.componentIds = [];
578
623
  this._managedCategories.forEach((item) => {
@@ -1,9 +1,6 @@
1
1
  <template>
2
2
  <div @click.stop="close">
3
- <VcsActionList
4
- :actions="actions"
5
- :show-icon="true"
6
- />
3
+ <VcsActionList :actions="actions" :show-icon="true" />
7
4
  </div>
8
5
  </template>
9
6
 
@@ -39,5 +36,4 @@
39
36
  };
40
37
  </script>
41
38
 
42
- <style scoped>
43
- </style>
39
+ <style scoped></style>
@@ -1,4 +1,9 @@
1
- import { AbstractInteraction, EventType, ModificationKeyType, PointerKeyType } from '@vcmap/core';
1
+ import {
2
+ AbstractInteraction,
3
+ EventType,
4
+ ModificationKeyType,
5
+ PointerKeyType,
6
+ } from '@vcmap/core';
2
7
 
3
8
  /**
4
9
  * Class to call a callback on right click and a callback on any other click
@@ -6,7 +6,9 @@ import { vcsAppSymbol } from '../../pluginHelper.js';
6
6
  import { validateAction } from '../../components/lists/VcsActionList.vue';
7
7
  import { WindowSlot } from '../window/windowManager.js';
8
8
  import { getFittedWindowPositionOptionsFromMapEvent } from '../window/windowHelper.js';
9
- import ContextMenuComponent, { contextMenuWindowId } from './contextMenuComponent.vue';
9
+ import ContextMenuComponent, {
10
+ contextMenuWindowId,
11
+ } from './contextMenuComponent.vue';
10
12
  import { sortByOwner } from '../navbarManager.js';
11
13
 
12
14
  /**
@@ -83,7 +85,8 @@ class ContextMenuManager {
83
85
 
84
86
  _ensureInteraction() {
85
87
  if (!this._interactionListener) {
86
- this._interactionListener = this._app.maps.eventHandler.addPersistentInteraction(this._interaction);
88
+ this._interactionListener =
89
+ this._app.maps.eventHandler.addPersistentInteraction(this._interaction);
87
90
  }
88
91
  }
89
92
 
@@ -102,10 +105,12 @@ class ContextMenuManager {
102
105
  */
103
106
  async _handleRightClick(event) {
104
107
  this.clear();
105
- const actionArrays = await Promise.all(this._eventHandlers.map(({ handler }) => handler(event)));
108
+ const actionArrays = await Promise.all(
109
+ this._eventHandlers.map(({ handler }) => handler(event)),
110
+ );
106
111
  const actions = actionArrays
107
- .filter(i => Array.isArray(i))
108
- .flatMap(i => i)
112
+ .filter((i) => Array.isArray(i))
113
+ .flatMap((i) => i)
109
114
  .filter(validateAction);
110
115
 
111
116
  if (actions.length > 0) {
@@ -115,25 +120,29 @@ class ContextMenuManager {
115
120
  actions.length * 32,
116
121
  this._app.maps.target,
117
122
  );
118
- if (position.left) { // ensure we nudge the window, so it does not trigger the default right click.
123
+ if (position.left) {
124
+ // ensure we nudge the window, so it does not trigger the default right click.
119
125
  position.left += 1;
120
126
  } else {
121
127
  position.right += 1;
122
128
  }
123
129
 
124
- this._app.windowManager.add({
125
- id: contextMenuWindowId,
126
- component: ContextMenuComponent,
127
- state: {
128
- hideHeader: true,
129
- },
130
- props: {
131
- actions,
132
- showIcon: true,
130
+ this._app.windowManager.add(
131
+ {
132
+ id: contextMenuWindowId,
133
+ component: ContextMenuComponent,
134
+ state: {
135
+ hideHeader: true,
136
+ },
137
+ props: {
138
+ actions,
139
+ showIcon: true,
140
+ },
141
+ position,
142
+ slow: WindowSlot.DETACHED,
133
143
  },
134
- position,
135
- slow: WindowSlot.DETACHED,
136
- }, vcsAppSymbol);
144
+ vcsAppSymbol,
145
+ );
137
146
 
138
147
  this._setupListeners();
139
148
  }
@@ -151,7 +160,7 @@ class ContextMenuManager {
151
160
 
152
161
  this._ensureInteraction();
153
162
  this._eventHandlers.push({ owner, handler });
154
- const order = [...this._app.plugins].map(p => p.name);
163
+ const order = [...this._app.plugins].map((p) => p.name);
155
164
  this._eventHandlers.sort((a, b) => {
156
165
  return sortByOwner(a.owner, b.owner, order);
157
166
  });
@@ -162,7 +171,9 @@ class ContextMenuManager {
162
171
  * @param {function(import("@vcmap/core").InteractionEvent):Promise<Array<VcsAction>>|Array<VcsAction>} handler
163
172
  */
164
173
  removeHandler(handler) {
165
- this._eventHandlers = this._eventHandlers.filter(({ handler: itemHandler }) => itemHandler !== handler);
174
+ this._eventHandlers = this._eventHandlers.filter(
175
+ ({ handler: itemHandler }) => itemHandler !== handler,
176
+ );
166
177
  if (this._eventHandlers.length === 0 && this._interactionListener) {
167
178
  this._interactionListener();
168
179
  this._interactionListener = null;
@@ -174,7 +185,9 @@ class ContextMenuManager {
174
185
  * @param {string|symbol} owner
175
186
  */
176
187
  removeOwner(owner) {
177
- this._eventHandlers = this._eventHandlers.filter(({ owner: handlerOwner }) => handlerOwner !== owner);
188
+ this._eventHandlers = this._eventHandlers.filter(
189
+ ({ owner: handlerOwner }) => handlerOwner !== owner,
190
+ );
178
191
  if (this._eventHandlers.length === 0 && this._interactionListener) {
179
192
  this._interactionListener();
180
193
  this._interactionListener = null;
@@ -185,7 +198,9 @@ class ContextMenuManager {
185
198
  * Clear any currently opened context menus
186
199
  */
187
200
  clear() {
188
- this._listeners.forEach((cb) => { cb(); });
201
+ this._listeners.forEach((cb) => {
202
+ cb();
203
+ });
189
204
  this._listeners = [];
190
205
  this._app.windowManager.remove(contextMenuWindowId);
191
206
  }
@@ -38,11 +38,16 @@ export function sortByOwner(ownerA, ownerB, order = []) {
38
38
  * @param {function(ownerA:string, ownerB:string, order: string[]):number} [compareFn=sortByOwner] Per default components are sorted by owner: app first, then plugins
39
39
  * @returns {Array<VcsAction>}
40
40
  */
41
- export function getActionsByLocation(buttonComponents, location, order = [], compareFn = sortByOwner) {
41
+ export function getActionsByLocation(
42
+ buttonComponents,
43
+ location,
44
+ order = [],
45
+ compareFn = sortByOwner,
46
+ ) {
42
47
  return [...buttonComponents]
43
- .filter(b => b[locationSymbol] === location)
48
+ .filter((b) => b[locationSymbol] === location)
44
49
  .sort((a, b) => compareFn(a.owner, b.owner, order))
45
- .map(b => b.action);
50
+ .map((b) => b.action);
46
51
  }
47
52
 
48
53
  /**
@@ -84,6 +89,26 @@ class NavbarManager extends ButtonManager {
84
89
  buttonComponent[locationSymbol] = location;
85
90
  return buttonComponent;
86
91
  }
92
+
93
+ /**
94
+ * Toggles a button of provided id by executing its callback.
95
+ * Use active flag to force a state to be applied.
96
+ * @param {string} id
97
+ * @param {boolean} [active]
98
+ */
99
+ toggle(id, active = undefined) {
100
+ check(id, String);
101
+ if (this.has(id)) {
102
+ const { action } = this.get(id);
103
+ if (active !== undefined) {
104
+ if (action?.active !== active) {
105
+ action.callback();
106
+ }
107
+ } else if (action) {
108
+ action.callback();
109
+ }
110
+ }
111
+ }
87
112
  }
88
113
 
89
114
  export default NavbarManager;
@@ -9,9 +9,10 @@
9
9
  >
10
10
  <template #activator="{ on, attrs }">
11
11
  <VcsButton
12
- class="vcs-toolbox-toogle-button"
12
+ class="vcs-toolbox-toggle-button"
13
13
  width="48"
14
14
  :icon="group.icon"
15
+ :disabled="group.disabled"
15
16
  :tooltip="group.title"
16
17
  :active="open || hasActiveAction"
17
18
  :color="hasActiveAction ? 'primary' : ''"
@@ -19,7 +20,7 @@
19
20
  v-on="on"
20
21
  large
21
22
  >
22
- <v-icon v-text="open ? 'mdi-chevron-up' : 'mdi-chevron-down'" />
23
+ <v-icon>{{ open ? 'mdi-chevron-up' : 'mdi-chevron-down' }}</v-icon>
23
24
  </VcsButton>
24
25
  </template>
25
26
 
@@ -33,13 +34,14 @@
33
34
  <v-toolbar-items class="w-full">
34
35
  <div class="d-flex align-center justify-space-between w-full mx-1">
35
36
  <VcsButton
36
- v-for="({id, action}) in orderedButtons"
37
+ v-for="{ id, action } in orderedButtons"
37
38
  :key="id"
38
39
  :tooltip="action.title"
39
40
  :icon="action.icon"
41
+ :disabled="action.disabled"
40
42
  :active="action.active"
41
43
  @click="action.callback($event)"
42
- v-bind="{...$attrs}"
44
+ v-bind="{ ...$attrs }"
43
45
  large
44
46
  />
45
47
  </div>
@@ -49,24 +51,19 @@
49
51
  </div>
50
52
  </template>
51
53
  <style lang="scss">
52
- .vcs-toolbox-2 {
53
- .v-toolbar__content {
54
- padding: 0;
54
+ .vcs-toolbox-2 {
55
+ .v-toolbar__content {
56
+ padding: 0;
57
+ }
55
58
  }
56
- }
57
59
 
58
- .marginToTop {
59
- margin-top: 3px;
60
- }
60
+ .marginToTop {
61
+ margin-top: 3px;
62
+ }
61
63
  </style>
62
64
  <script>
63
65
  import { computed, ref } from 'vue';
64
- import {
65
- VMenu,
66
- VIcon,
67
- VToolbar,
68
- VToolbarItems,
69
- } from 'vuetify/lib';
66
+ import { VMenu, VIcon, VToolbar, VToolbarItems } from 'vuetify/lib';
70
67
  import VcsButton from '../../components/buttons/VcsButton.vue';
71
68
  import { getComponentsByOrder } from './toolboxManager.js';
72
69
 
@@ -102,10 +99,14 @@
102
99
  const buttons = computed(() => {
103
100
  const { buttonManager } = props.group;
104
101
  const buttonIds = ref(buttonManager.componentIds);
105
- return buttonIds.value.map(id => buttonManager.get(id));
102
+ return buttonIds.value.map((id) => buttonManager.get(id));
106
103
  });
107
- const orderedButtons = computed(() => getComponentsByOrder(buttons.value));
108
- const hasActiveAction = computed(() => orderedButtons.value.some(a => a.action.active));
104
+ const orderedButtons = computed(() =>
105
+ getComponentsByOrder(buttons.value),
106
+ );
107
+ const hasActiveAction = computed(() =>
108
+ orderedButtons.value.some((a) => a.action.active),
109
+ );
109
110
 
110
111
  /**
111
112
  * v-menu auto prop is not working as expected.
@@ -115,7 +116,7 @@
115
116
  const nudgeLeft = computed(() => {
116
117
  const toolboxBtnWidth = 42 + 8; // with padding
117
118
  const menuBtnWidth = 48;
118
- return (buttons.value.length * (toolboxBtnWidth / 2)) - (menuBtnWidth / 2);
119
+ return buttons.value.length * (toolboxBtnWidth / 2) - menuBtnWidth / 2;
119
120
  });
120
121
 
121
122
  return {