@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,18 +1,16 @@
1
1
  <template>
2
- <div
3
- :class="{ 'win-container-mobile' : $vuetify.breakpoint.xs }"
4
- >
2
+ <div :class="{ 'win-container-mobile': $vuetify.breakpoint.xs }">
5
3
  <WindowComponent
6
- v-for="(id, zIndex) in componentIds"
4
+ v-for="id in componentIds"
7
5
  :key="id"
8
6
  :window-state="getState(id)"
9
7
  :slot-window="getSlot(id)"
10
- :z-index="zIndex"
8
+ :z-index="getComponent(id).zIndex"
11
9
  @moved="move(id, $event)"
12
- @click="clicked(id)"
13
- :style="getStyles(id, zIndex).value"
10
+ @mousedown="bringWindowToTop(id)"
11
+ :style="getStyles(id).value"
14
12
  :class="getState(id).classes"
15
- :is-on-top="isOnTop(zIndex)"
13
+ :is-on-top="isOnTop(id)"
16
14
  >
17
15
  <component
18
16
  :is="getComponent(id)"
@@ -23,7 +21,7 @@
23
21
  <component
24
22
  :is="getHeaderComponent(id)"
25
23
  :window-state="getState(id)"
26
- :is-on-top="isOnTop(zIndex)"
24
+ :is-on-top="isOnTop(id)"
27
25
  :slot-window="getSlot(id)"
28
26
  v-bind="getProps(id)"
29
27
  @close="close(id)"
@@ -41,13 +39,12 @@
41
39
  width: 100%;
42
40
  }
43
41
  .win-container-mobile > {
44
- div{
42
+ div {
45
43
  width: 100% !important;
46
44
  inset: unset !important;
47
45
  border-radius: 0 !important;
48
46
  }
49
47
  }
50
-
51
48
  </style>
52
49
 
53
50
  <script>
@@ -55,7 +52,11 @@
55
52
 
56
53
  import WindowComponent from './WindowComponent.vue';
57
54
  import WindowComponentHeader from './WindowComponentHeader.vue';
58
- import { applyPositionOnTarget, getTargetSize, moveWindow } from './windowHelper.js';
55
+ import {
56
+ applyPositionOnTarget,
57
+ getTargetSize,
58
+ moveWindow,
59
+ } from './windowHelper.js';
59
60
 
60
61
  /**
61
62
  * WindowManager rendering all registered WindowComponents
@@ -84,32 +85,35 @@
84
85
  return windowManager.get(id)?.props ?? {};
85
86
  };
86
87
  /**
87
- * @param {number} zIndex
88
+ * @param {string} id
88
89
  * @returns {boolean}
89
90
  */
90
- const isOnTop = (zIndex) => {
91
- return zIndex === componentIds.length - 1;
91
+ const isOnTop = (id) => {
92
+ return windowManager.get(id)?.zIndex.value === componentIds.length - 1;
92
93
  };
93
94
  /**
94
95
  * @param {string} id
95
- * @param {number} zIndex
96
96
  * @returns {import("vue").ComputedRef<Object>}
97
97
  */
98
- const getStyles = (id, zIndex) => computed(() => {
99
- const windowComponent = windowManager.get(id);
100
- const state = windowComponent?.state;
101
- const position = applyPositionOnTarget(windowComponent?.position, targetSize.value);
102
- return {
103
- zIndex,
104
- ...position,
105
- ...(state.styles || {}),
106
- };
107
- });
98
+ const getStyles = (id) =>
99
+ computed(() => {
100
+ const windowComponent = windowManager.get(id);
101
+ const state = windowComponent?.state;
102
+ const position = applyPositionOnTarget(
103
+ windowComponent?.position,
104
+ targetSize.value,
105
+ );
106
+ return {
107
+ zIndex: windowComponent.zIndex.value,
108
+ ...position,
109
+ ...(state.styles || {}),
110
+ };
111
+ });
108
112
  /**
109
113
  * @param {string} id
110
114
  */
111
- const clicked = (id) => {
112
- if (windowManager.has(id)) {
115
+ const bringWindowToTop = (id) => {
116
+ if (windowManager.has(id) && !isOnTop(id)) {
113
117
  windowManager.bringWindowToTop(id);
114
118
  }
115
119
  };
@@ -125,7 +129,8 @@
125
129
  targetSize.value = getTargetSize(app.maps.target);
126
130
  };
127
131
  window.addEventListener('resize', setTargetSize);
128
- const setTargetDestroy = app.maps.mapActivated.addEventListener(setTargetSize);
132
+ const setTargetDestroy =
133
+ app.maps.mapActivated.addEventListener(setTargetSize);
129
134
 
130
135
  onUnmounted(() => {
131
136
  window.removeEventListener('resize', setTargetSize);
@@ -134,16 +139,21 @@
134
139
 
135
140
  return {
136
141
  componentIds: ref(componentIds),
137
- getComponent: id => windowManager.get(id).component,
138
- getHeaderComponent: id => windowManager.get(id).headerComponent || WindowComponentHeader,
142
+ getComponent: (id) => windowManager.get(id).component,
143
+ getHeaderComponent: (id) =>
144
+ windowManager.get(id).headerComponent || WindowComponentHeader,
139
145
  getStyles,
140
146
  getState,
141
147
  getProps,
142
148
  isOnTop,
143
- getSlot: id => windowManager.get(id).slot,
144
- close: (id) => { windowManager.remove(id); },
145
- pin: (id) => { windowManager.pinWindow(id); },
146
- clicked,
149
+ getSlot: (id) => windowManager.get(id).slot,
150
+ close: (id) => {
151
+ windowManager.remove(id);
152
+ },
153
+ pin: (id) => {
154
+ windowManager.pinWindow(id);
155
+ },
156
+ bringWindowToTop,
147
157
  move,
148
158
  };
149
159
  },
@@ -51,7 +51,12 @@ export function getTargetSize(target) {
51
51
  * @param {WindowAlignment} [alignment=WindowAlignment.TOP_LEFT]
52
52
  * @returns {WindowPositionOptions}
53
53
  */
54
- export function getWindowPositionOptions(x, y, target, alignment = WindowAlignment.TOP_LEFT) {
54
+ export function getWindowPositionOptions(
55
+ x,
56
+ y,
57
+ target,
58
+ alignment = WindowAlignment.TOP_LEFT,
59
+ ) {
55
60
  const targetSize = getTargetSize(target);
56
61
  if (!targetSize) {
57
62
  return { left: x, top: y };
@@ -61,11 +66,11 @@ export function getWindowPositionOptions(x, y, target, alignment = WindowAlignme
61
66
  if (alignment === WindowAlignment.TOP_LEFT) {
62
67
  return { left: x - left, top: y - top };
63
68
  } else if (alignment === WindowAlignment.TOP_RIGHT) {
64
- return { right: (left + width) - x, top: y - top };
69
+ return { right: left + width - x, top: y - top };
65
70
  } else if (alignment === WindowAlignment.BOTTOM_LEFT) {
66
- return { left: x - left, bottom: (height + top) - y };
71
+ return { left: x - left, bottom: height + top - y };
67
72
  }
68
- return { right: (left + width) - x, bottom: (height + top) - y };
73
+ return { right: left + width - x, bottom: height + top - y };
69
74
  }
70
75
 
71
76
  /**
@@ -75,17 +80,25 @@ export function getWindowPositionOptions(x, y, target, alignment = WindowAlignme
75
80
  * @param {WindowAlignment} [alignment]
76
81
  * @returns {WindowPositionOptions}
77
82
  */
78
- export function getWindowPositionOptionsFromMapEvent(windowPosition, target, alignment) {
83
+ export function getWindowPositionOptionsFromMapEvent(
84
+ windowPosition,
85
+ target,
86
+ alignment,
87
+ ) {
79
88
  const targetSize = getTargetSize(target);
80
89
  if (!targetSize) {
81
90
  return { left: windowPosition.x, top: windowPosition.y };
82
91
  }
83
92
 
84
93
  const { left, top } = targetSize;
85
- return getWindowPositionOptions(windowPosition.x + left, windowPosition.y + top, target, alignment);
94
+ return getWindowPositionOptions(
95
+ windowPosition.x + left,
96
+ windowPosition.y + top,
97
+ target,
98
+ alignment,
99
+ );
86
100
  }
87
101
 
88
-
89
102
  /**
90
103
  * Fits a window aligned top left, so it fits into the parent. This will change the alignment to be bottom or right depending
91
104
  * on if the window would not fit into the parent.
@@ -127,13 +140,24 @@ export function getFittedWindowPositionOptions(x, y, width, height, target) {
127
140
  * @param {HTMLElement} target - the map's target { @link @import("@vcmap/core").MapCollection }
128
141
  * @returns {WindowPositionOptions}
129
142
  */
130
- export function getFittedWindowPositionOptionsFromMapEvent(windowPosition, width, height, target) {
143
+ export function getFittedWindowPositionOptionsFromMapEvent(
144
+ windowPosition,
145
+ width,
146
+ height,
147
+ target,
148
+ ) {
131
149
  const targetSize = getTargetSize(target);
132
150
  if (!targetSize) {
133
151
  return { left: windowPosition.x, top: windowPosition.y };
134
152
  }
135
153
  const { left, top } = targetSize;
136
- return getFittedWindowPositionOptions(windowPosition.x + left, windowPosition.y + top, width, height, target);
154
+ return getFittedWindowPositionOptions(
155
+ windowPosition.x + left,
156
+ windowPosition.y + top,
157
+ width,
158
+ height,
159
+ target,
160
+ );
137
161
  }
138
162
 
139
163
  /**
@@ -148,7 +172,9 @@ export function posToNumber(pos, key, targetSize) {
148
172
  if (pos.match(/^-?\d+\.?\d*px$/)) {
149
173
  return parseInt(pos, 10);
150
174
  } else if (targetSize && pos.match(/^-?\d+\.?\d*%$/)) {
151
- const scalar = ['bottom', 'top', 'height', 'maxHeight'].includes(key) ? targetSize?.height : targetSize?.width;
175
+ const scalar = ['bottom', 'top', 'height', 'maxHeight'].includes(key)
176
+ ? targetSize?.height
177
+ : targetSize?.width;
152
178
  return (parseInt(pos, 10) / 100) * scalar;
153
179
  }
154
180
  return undefined;
@@ -166,7 +192,9 @@ export function posToPercent(pos, key, targetSize) {
166
192
  if (!targetSize) {
167
193
  return undefined;
168
194
  }
169
- const scalar = ['bottom', 'top', 'height', 'maxHeight'].includes(key) ? targetSize.height : targetSize.width;
195
+ const scalar = ['bottom', 'top', 'height', 'maxHeight'].includes(key)
196
+ ? targetSize.height
197
+ : targetSize.width;
170
198
  return `${((pos / scalar) * 100).toFixed(0)}%`;
171
199
  }
172
200
 
@@ -204,7 +232,11 @@ export function updateWindowPosition(previous, update, targetSize) {
204
232
  * @returns {string}
205
233
  */
206
234
  const toString = (key, prev, updated) => {
207
- if (prev[key] === 'auto' || prev[key] === 'unset' || updated[key] === undefined) {
235
+ if (
236
+ prev[key] === 'auto' ||
237
+ prev[key] === 'unset' ||
238
+ updated[key] === undefined
239
+ ) {
208
240
  return prev[key];
209
241
  } else if (updated[key] !== 'auto' && updated[key] !== 'unset') {
210
242
  const numeric = posToNumber(updated[key], key, targetSize);
@@ -224,7 +256,6 @@ export function updateWindowPosition(previous, update, targetSize) {
224
256
  return updatedPosition;
225
257
  }
226
258
 
227
-
228
259
  /**
229
260
  * Move window position in x and y.
230
261
  * Rightward and downward movements are positive.
@@ -251,7 +282,11 @@ export function moveWindow(id, translation, windowManager, targetSize) {
251
282
  if (windowPositionOptions.right !== undefined) {
252
283
  windowPositionOptions.right -= translation.dx;
253
284
  }
254
- const updatedPosition = updateWindowPosition(position, windowPositionOptions, targetSize);
285
+ const updatedPosition = updateWindowPosition(
286
+ position,
287
+ windowPositionOptions,
288
+ targetSize,
289
+ );
255
290
  windowManager.setWindowPositionOptions(id, updatedPosition);
256
291
  }
257
292
 
@@ -274,15 +309,18 @@ export function clipToTargetSize(windowPositionOptions, targetSize) {
274
309
  );
275
310
  }
276
311
  if (windowPositionOptions.bottom !== undefined) {
277
- const height = windowPositionOptions.height ||
278
- targetHeight - windowPositionOptions.bottom - windowPositionOptions.top || windowMoveMargin.bottom;
312
+ const height =
313
+ windowPositionOptions.height ||
314
+ targetHeight - windowPositionOptions.bottom - windowPositionOptions.top ||
315
+ windowMoveMargin.bottom;
279
316
  clippedPosition.bottom = Math.min(
280
317
  Math.max(windowPositionOptions.bottom, -height + windowMoveMargin.bottom),
281
318
  targetHeight - height,
282
319
  );
283
320
  }
284
321
  if (windowPositionOptions.left !== undefined) {
285
- const width = windowPositionOptions.width ||
322
+ const width =
323
+ windowPositionOptions.width ||
286
324
  targetWidth - windowPositionOptions.right - windowPositionOptions.left;
287
325
  clippedPosition.left = Math.min(
288
326
  Math.max(windowPositionOptions.left, -width + windowMoveMargin.left),
@@ -290,7 +328,8 @@ export function clipToTargetSize(windowPositionOptions, targetSize) {
290
328
  );
291
329
  }
292
330
  if (windowPositionOptions.right !== undefined) {
293
- const width = windowPositionOptions.width ||
331
+ const width =
332
+ windowPositionOptions.width ||
294
333
  targetWidth - windowPositionOptions.right - windowPositionOptions.left;
295
334
  clippedPosition.right = Math.min(
296
335
  Math.max(windowPositionOptions.right, -width + windowMoveMargin.right),
@@ -304,17 +343,30 @@ export function clipToTargetSize(windowPositionOptions, targetSize) {
304
343
  clippedPosition.height = windowPositionOptions.height;
305
344
  }
306
345
  clippedPosition.maxWidth = targetWidth;
307
- clippedPosition.maxHeight = targetHeight;
346
+ clippedPosition.maxHeight = targetHeight - 4; // 2px space plus 2px due to margin bottom
308
347
  if (windowPositionOptions.maxWidth !== undefined) {
309
- clippedPosition.maxWidth = Math.min(windowPositionOptions.maxWidth, targetWidth);
348
+ clippedPosition.maxWidth = Math.min(
349
+ windowPositionOptions.maxWidth,
350
+ targetWidth,
351
+ );
310
352
  }
311
353
  if (windowPositionOptions.maxHeight !== undefined) {
312
- clippedPosition.maxHeight = Math.min(windowPositionOptions.maxHeight, targetHeight);
354
+ clippedPosition.maxHeight = Math.min(
355
+ windowPositionOptions.maxHeight,
356
+ targetHeight,
357
+ );
313
358
  }
314
359
  // max width of a top left 2 window (active static window)
315
- const topLeft2 = posToNumber(WindowPositions.TOP_LEFT2.left, 'left', targetSize);
360
+ const topLeft2 = posToNumber(
361
+ WindowPositions.TOP_LEFT2.left,
362
+ 'left',
363
+ targetSize,
364
+ );
316
365
  if (clippedPosition.left === topLeft2) {
317
- clippedPosition.maxWidth = Math.min(clippedPosition.maxWidth - topLeft2, targetWidth);
366
+ clippedPosition.maxWidth = Math.min(
367
+ clippedPosition.maxWidth - topLeft2,
368
+ targetWidth,
369
+ );
318
370
  }
319
371
 
320
372
  return clippedPosition;
@@ -332,6 +384,10 @@ export function applyPositionOnTarget(position, targetSize) {
332
384
  }
333
385
  const windowPositionOptions = optionsFromWindowPosition(position, targetSize);
334
386
  const clippedPosition = clipToTargetSize(windowPositionOptions, targetSize);
335
- const updatedPosition = updateWindowPosition(position, clippedPosition, targetSize);
387
+ const updatedPosition = updateWindowPosition(
388
+ position,
389
+ clippedPosition,
390
+ targetSize,
391
+ );
336
392
  return windowPositionFromOptions(updatedPosition);
337
393
  }
@@ -1,4 +1,4 @@
1
- import { reactive, ref } from 'vue';
1
+ import { computed, reactive, ref } from 'vue';
2
2
  import { VcsEvent } from '@vcmap/core';
3
3
  import { v4 as uuidv4 } from 'uuid';
4
4
  import { parseEnumValue } from '@vcsuite/parsers';
@@ -20,7 +20,6 @@ export const WindowSlot = {
20
20
  DETACHED: 'detached',
21
21
  };
22
22
 
23
-
24
23
  /**
25
24
  * @typedef {Object} WindowPositionOptions
26
25
  * @property {string|number|undefined} left Can be a css position string (e.g. '320px' or '50%') number values are treated as `px` values
@@ -84,7 +83,7 @@ export const WindowPositions = {
84
83
  * @returns {boolean}
85
84
  */
86
85
  export function compareWindowPositions(pos1, pos2) {
87
- return !(Object.keys(pos1).some(key => pos1[key] !== pos2[key]));
86
+ return !Object.keys(pos1).some((key) => pos1[key] !== pos2[key]);
88
87
  }
89
88
 
90
89
  /**
@@ -93,8 +92,11 @@ export function compareWindowPositions(pos1, pos2) {
93
92
  * @returns {boolean}
94
93
  */
95
94
  export function isSlotPosition(windowPosition) {
96
- return [WindowPositions.TOP_LEFT, WindowPositions.TOP_LEFT2, WindowPositions.TOP_RIGHT]
97
- .some(s => compareWindowPositions(s, windowPosition));
95
+ return [
96
+ WindowPositions.TOP_LEFT,
97
+ WindowPositions.TOP_LEFT2,
98
+ WindowPositions.TOP_RIGHT,
99
+ ].some((s) => compareWindowPositions(s, windowPosition));
98
100
  }
99
101
 
100
102
  /**
@@ -137,6 +139,7 @@ export function isSlotPosition(windowPosition) {
137
139
  * @property {WindowSlot} initialSlot
138
140
  * @property {Object} props
139
141
  * @property {Object} provides
142
+ * @property {import("vue").ComputedGetter<number>} zIndex
140
143
  */
141
144
 
142
145
  /**
@@ -156,7 +159,10 @@ export function posToPixel(pos) {
156
159
  * @param {WindowPosition=} windowPosition
157
160
  * @returns {WindowPosition}
158
161
  */
159
- export function windowPositionFromOptions(windowPositionOptions, windowPosition = {}) {
162
+ export function windowPositionFromOptions(
163
+ windowPositionOptions,
164
+ windowPosition = {},
165
+ ) {
160
166
  let left = posToPixel(windowPositionOptions.left) || 'unset';
161
167
  const right = posToPixel(windowPositionOptions.right) || 'unset';
162
168
  let top = posToPixel(windowPositionOptions.top) || 'unset';
@@ -207,14 +213,20 @@ export function windowPositionFromOptions(windowPositionOptions, windowPosition
207
213
  * @param {WindowPositionOptions} windowPositionOptions
208
214
  */
209
215
  function setWindowPosition(windowComponent, windowPositionOptions) {
210
- const windowPosition = windowPositionFromOptions(windowPositionOptions, windowComponent.position);
216
+ const windowPosition = windowPositionFromOptions(
217
+ windowPositionOptions,
218
+ windowComponent.position,
219
+ );
211
220
  // not one of the default Positions, so we also have to DETACH the windowState.
212
221
  if (!isSlotPosition(windowPosition)) {
213
222
  windowComponent.slot.value = WindowSlot.DETACHED;
214
223
  }
215
224
  // check dockable state
216
- const initialWindowPosition = windowPositionFromOptions(windowComponent.initialPositionOptions);
217
- windowComponent.state.dockable = windowComponent.slot.value === WindowSlot.DETACHED &&
225
+ const initialWindowPosition = windowPositionFromOptions(
226
+ windowComponent.initialPositionOptions,
227
+ );
228
+ windowComponent.state.dockable =
229
+ windowComponent.slot.value === WindowSlot.DETACHED &&
218
230
  !compareWindowPositions(windowPosition, initialWindowPosition);
219
231
  }
220
232
 
@@ -238,6 +250,11 @@ class WindowManager {
238
250
  * @type {Array<string>}
239
251
  */
240
252
  this.componentIds = [];
253
+ /**
254
+ * reactive ordered array of ids, defining the zIndex of a component
255
+ * @type {import("vue").Ref<Array<string>>}
256
+ */
257
+ this._zIndices = ref([]);
241
258
 
242
259
  /**
243
260
  * @type {Map<string, WindowComponent>}
@@ -277,8 +294,8 @@ class WindowManager {
277
294
  const windowComponent = this._windowComponents.get(id);
278
295
  if (windowComponent) {
279
296
  this._cachePosition(windowComponent);
280
- const index = this.componentIds.indexOf(id);
281
- this.componentIds.splice(index, 1);
297
+ this.componentIds.splice(this.componentIds.indexOf(id), 1);
298
+ this._zIndices.value.splice(this._zIndices.value.indexOf(id), 1);
282
299
  this._windowComponents.delete(id);
283
300
  this._handleSlotsChanged(windowComponent.slot.value);
284
301
  this.removed.raiseEvent(windowComponent);
@@ -307,15 +324,15 @@ class WindowManager {
307
324
  const staticWindow = this._findWindowBySlot(WindowSlot.STATIC);
308
325
  const dynamicWindowLeft = this._findWindowBySlot(WindowSlot.DYNAMIC_LEFT);
309
326
  if (staticWindow && dynamicWindowLeft) {
310
- this.setWindowPositionOptions(
311
- dynamicWindowLeft.id,
312
- { ...dynamicWindowLeft.position, ...WindowPositions.TOP_LEFT2 },
313
- );
327
+ this.setWindowPositionOptions(dynamicWindowLeft.id, {
328
+ ...dynamicWindowLeft.position,
329
+ ...WindowPositions.TOP_LEFT2,
330
+ });
314
331
  } else if (!staticWindow && dynamicWindowLeft) {
315
- this.setWindowPositionOptions(
316
- dynamicWindowLeft.id,
317
- { ...dynamicWindowLeft.position, ...WindowPositions.TOP_LEFT },
318
- );
332
+ this.setWindowPositionOptions(dynamicWindowLeft.id, {
333
+ ...dynamicWindowLeft.position,
334
+ ...WindowPositions.TOP_LEFT,
335
+ });
319
336
  }
320
337
  }
321
338
  }
@@ -326,7 +343,9 @@ class WindowManager {
326
343
  * @private
327
344
  */
328
345
  _findWindowBySlot(slot) {
329
- return Array.from(this._windowComponents.values()).find(item => item.slot.value === slot);
346
+ return Array.from(this._windowComponents.values()).find(
347
+ (item) => item.slot.value === slot,
348
+ );
330
349
  }
331
350
 
332
351
  /**
@@ -381,9 +400,15 @@ class WindowManager {
381
400
  * @private
382
401
  */
383
402
  _cachePosition(windowComponent) {
384
- const initialWindowPosition = windowPositionFromOptions(windowComponent.initialPositionOptions);
385
- if (!compareWindowPositions(initialWindowPosition, windowComponent.position)) {
386
- this._windowPositionsCache.set(windowComponent.id, { ...windowComponent.position });
403
+ const initialWindowPosition = windowPositionFromOptions(
404
+ windowComponent.initialPositionOptions,
405
+ );
406
+ if (
407
+ !compareWindowPositions(initialWindowPosition, windowComponent.position)
408
+ ) {
409
+ this._windowPositionsCache.set(windowComponent.id, {
410
+ ...windowComponent.position,
411
+ });
387
412
  }
388
413
  }
389
414
 
@@ -416,22 +441,26 @@ class WindowManager {
416
441
  check(owner, [String, vcsAppSymbol]);
417
442
 
418
443
  if (windowComponentOptions.id && this.has(windowComponentOptions.id)) {
419
- throw new Error(`A window with id ${windowComponentOptions.id} has already been registered.`);
444
+ throw new Error(
445
+ `A window with id ${windowComponentOptions.id} has already been registered.`,
446
+ );
420
447
  }
421
448
  const id = windowComponentOptions.id || uuidv4();
422
- const slotOption = windowComponentOptions.slot?.value || windowComponentOptions.slot;
449
+ const slotOption =
450
+ windowComponentOptions.slot?.value || windowComponentOptions.slot;
423
451
  const slot = parseEnumValue(slotOption, WindowSlot, WindowSlot.DETACHED);
424
- const windowPositionOptions = this._getPositionOptionsForSlot(slot, windowComponentOptions.position);
452
+ const windowPositionOptions = this._getPositionOptionsForSlot(
453
+ slot,
454
+ windowComponentOptions.position,
455
+ );
425
456
  const windowPosition = windowPositionFromOptions(windowPositionOptions);
426
457
 
427
458
  const slotRef = ref(slot);
428
- const {
429
- component, headerComponent,
430
- } = windowComponentOptions;
459
+ const { component, headerComponent } = windowComponentOptions;
431
460
  const styles = { ...windowComponentOptions?.state?.styles };
432
- const classes = Array.isArray(windowComponentOptions?.state?.classes) ?
433
- [...(windowComponentOptions?.state?.classes ?? [])] :
434
- { ...windowComponentOptions?.state?.classes };
461
+ const classes = Array.isArray(windowComponentOptions?.state?.classes)
462
+ ? [...(windowComponentOptions?.state?.classes ?? [])]
463
+ : { ...windowComponentOptions?.state?.classes };
435
464
 
436
465
  const state = reactive({
437
466
  id,
@@ -441,7 +470,8 @@ class WindowManager {
441
470
  headerTitle: windowComponentOptions?.state?.headerTitle,
442
471
  headerIcon: windowComponentOptions?.state?.headerIcon,
443
472
  headerActions: windowComponentOptions?.state?.headerActions,
444
- headerActionsOverflow: windowComponentOptions?.state?.headerActionsOverflow,
473
+ headerActionsOverflow:
474
+ windowComponentOptions?.state?.headerActionsOverflow,
445
475
  dockable: false,
446
476
  infoUrl: windowComponentOptions?.state?.infoUrl,
447
477
  classes,
@@ -453,6 +483,7 @@ class WindowManager {
453
483
 
454
484
  const position = reactive(windowPosition);
455
485
  const initialPosition = { ...windowPositionOptions };
486
+ const zIndex = computed(() => this._zIndices.value.indexOf(id));
456
487
  /**
457
488
  * @type {WindowComponent}
458
489
  */
@@ -487,6 +518,9 @@ class WindowManager {
487
518
  get provides() {
488
519
  return provides;
489
520
  },
521
+ get zIndex() {
522
+ return zIndex;
523
+ },
490
524
  };
491
525
  const cached = this._assignCachedPosition(windowComponent);
492
526
  if (!cached) {
@@ -494,6 +528,7 @@ class WindowManager {
494
528
  }
495
529
  this._windowComponents.set(id, windowComponent);
496
530
  this.componentIds.push(id);
531
+ this._zIndices.value.push(id);
497
532
  this._handleSlotsChanged(slot);
498
533
  this.added.raiseEvent(windowComponent);
499
534
  return windowComponent;
@@ -505,10 +540,10 @@ class WindowManager {
505
540
  */
506
541
  bringWindowToTop(id) {
507
542
  if (this.has(id)) {
508
- const index = this.componentIds.indexOf(id);
509
- if (index >= 0 && index !== this.componentIds.length - 1) {
510
- this.componentIds.push(id);
511
- this.componentIds.splice(index, 1);
543
+ const index = this._zIndices.value.indexOf(id);
544
+ if (index >= 0 && index !== this._zIndices.value.length - 1) {
545
+ this._zIndices.value.push(id);
546
+ this._zIndices.value.splice(index, 1);
512
547
  }
513
548
  }
514
549
  }
@@ -526,7 +561,10 @@ class WindowManager {
526
561
  }
527
562
  this._removeWindowAtSlot(component.initialSlot);
528
563
  component.slot.value = component.initialSlot;
529
- const dockedPosition = this._getPositionOptionsForSlot(component.initialSlot, component.initialPositionOptions);
564
+ const dockedPosition = this._getPositionOptionsForSlot(
565
+ component.initialSlot,
566
+ component.initialPositionOptions,
567
+ );
530
568
  this.setWindowPositionOptions(id, dockedPosition);
531
569
  this._windowPositionsCache.delete(id);
532
570
  }
@@ -550,7 +588,9 @@ class WindowManager {
550
588
  */
551
589
  clear() {
552
590
  const componentIds = [...this.componentIds];
553
- componentIds.forEach((id) => { this.remove(id); });
591
+ componentIds.forEach((id) => {
592
+ this.remove(id);
593
+ });
554
594
  }
555
595
 
556
596
  /**
@@ -1,5 +1,10 @@
1
1
  <template>
2
- <svg xmlns="http://www.w3.org/2000/svg" width="58" height="58" viewBox="0 0 58 58">
2
+ <svg
3
+ xmlns="http://www.w3.org/2000/svg"
4
+ width="58"
5
+ height="58"
6
+ viewBox="0 0 58 58"
7
+ >
3
8
  <g id="Group_1654" data-name="Group 1654" transform="translate(24)">
4
9
  <path
5
10
  :class="canEmit ? 'cursor-pointer' : ''"
@@ -20,7 +25,11 @@
20
25
  @click="emit($event, 180)"
21
26
  />
22
27
  </g>
23
- <g id="Group_1653" data-name="Group 1653" transform="translate(0 33) rotate(-90)">
28
+ <g
29
+ id="Group_1653"
30
+ data-name="Group 1653"
31
+ transform="translate(0 33) rotate(-90)"
32
+ >
24
33
  <path
25
34
  :class="canEmit ? 'cursor-pointer' : ''"
26
35
  id="west_arrow"
@@ -39,7 +48,12 @@
39
48
  @click="emit($event, 90)"
40
49
  />
41
50
  </g>
42
- <g id="Group_1672" data-name="Group 1672" transform="translate(1)" v-if="!hideTicks">
51
+ <g
52
+ id="Group_1672"
53
+ data-name="Group 1672"
54
+ transform="translate(1)"
55
+ v-if="!hideTicks"
56
+ >
43
57
  <line
44
58
  id="Line_289-2"
45
59
  data-name="Line 289"
@@ -162,6 +176,6 @@
162
176
  }
163
177
 
164
178
  svg path:hover {
165
- fill: var(--v-base-lighten5) !important;
179
+ fill: var(--v-primary-lighten1) !important;
166
180
  }
167
181
  </style>