@vcmap/ui 6.0.0-rc.1 → 6.0.0-rc.10

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 (485) hide show
  1. package/build/build.js +40 -60
  2. package/build/buildHelpers.js +63 -20
  3. package/build/buildTypes.js +9 -5
  4. package/build/bundle.js +1 -1
  5. package/build/info/conf.json +1 -1
  6. package/build/info/publish.js +25 -31
  7. package/build/lintTypes.js +5 -0
  8. package/config/aerowest.config.json +12 -2
  9. package/config/base.config.json +22 -17
  10. package/config/dev.config.json +164 -4
  11. package/config/projects.config.json +3 -1
  12. package/config/solar.config.json +65 -0
  13. package/config/splashscreen.config.json +45 -0
  14. package/config/theming.config.json +68 -0
  15. package/config/www.config.json +39 -23
  16. package/dist/.htaccess +7 -0
  17. package/dist/assets/@mdi/font/README.md +25 -0
  18. package/dist/assets/@mdi/font/css/materialdesignicons.min-680621ca.css +3 -0
  19. package/dist/assets/@mdi/font/css/materialdesignicons.min.css.map +16 -0
  20. package/dist/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
  21. package/dist/assets/cesium/Assets/approximateTerrainHeights.json +1 -1
  22. package/dist/assets/cesium/ThirdParty/Workers/z-worker-pako.js +1 -1
  23. package/dist/assets/cesium/Workers/{chunk-JB2LWGH4.js → chunk-2LOWCAMW.js} +14 -14
  24. package/dist/assets/cesium/Workers/{chunk-Z24VKNDO.js → chunk-2PTKXHJB.js} +12 -12
  25. package/dist/assets/cesium/Workers/{chunk-AHKEZ2OE.js → chunk-3HQMMUPU.js} +1 -1
  26. package/dist/assets/cesium/Workers/{chunk-V3NGATMV.js → chunk-3IFRSGEY.js} +11 -13
  27. package/dist/assets/cesium/Workers/{chunk-66QLLS45.js → chunk-44QAAS4P.js} +11 -9
  28. package/dist/assets/cesium/Workers/{chunk-TFC6TZ3S.js → chunk-56EDBCGT.js} +33 -22
  29. package/dist/assets/cesium/Workers/{chunk-3W63OHNJ.js → chunk-57H6I3SV.js} +5 -5
  30. package/dist/assets/cesium/Workers/{chunk-PFQBCKBM.js → chunk-6SQMLVGV.js} +5206 -3483
  31. package/dist/assets/cesium/Workers/{chunk-OZJDGN5F.js → chunk-7YIOHQWH.js} +16 -16
  32. package/dist/assets/cesium/Workers/{chunk-XTY7B2N6.js → chunk-7ZZ5LMZY.js} +17 -16
  33. package/dist/assets/cesium/Workers/{chunk-HARLBUOL.js → chunk-BVKITG4N.js} +11 -8
  34. package/dist/assets/cesium/Workers/{chunk-AFFLIKOH.js → chunk-C3EQ27WF.js} +7 -7
  35. package/dist/assets/cesium/Workers/{chunk-RW6LU2CJ.js → chunk-C4WPMOKT.js} +6 -5
  36. package/dist/assets/cesium/Workers/{chunk-OYFCF4PL.js → chunk-EDLRS3AW.js} +6 -6
  37. package/dist/assets/cesium/Workers/{chunk-C3SXRKRW.js → chunk-EJVGYGLF.js} +7 -7
  38. package/dist/assets/cesium/Workers/{chunk-PCJWUS4M.js → chunk-FFLMY4TE.js} +830 -14
  39. package/dist/assets/cesium/Workers/{chunk-MPAZH4BF.js → chunk-GBT7MJ6X.js} +1 -1
  40. package/dist/assets/cesium/Workers/{chunk-ZA25DG4Y.js → chunk-HJMNR3GC.js} +11 -11
  41. package/dist/assets/cesium/Workers/{chunk-JS3AW5BK.js → chunk-HP5XLODI.js} +6 -6
  42. package/dist/assets/cesium/Workers/{chunk-34YUDLRP.js → chunk-IBRIWOCM.js} +13 -13
  43. package/dist/assets/cesium/Workers/{chunk-XY7MGBKC.js → chunk-IZGUQO6Q.js} +14 -16
  44. package/dist/assets/cesium/Workers/{chunk-KTJSNCK4.js → chunk-IZJ42N4W.js} +230 -20
  45. package/dist/assets/cesium/Workers/{chunk-QMEMZIJI.js → chunk-JBSKHTNX.js} +4 -4
  46. package/dist/assets/cesium/Workers/{chunk-QIKODV5G.js → chunk-JISPSEF3.js} +4 -4
  47. package/dist/assets/cesium/Workers/{chunk-K36FEYS7.js → chunk-JSQJDZI4.js} +16 -12
  48. package/dist/assets/cesium/Workers/{chunk-X4SU25DT.js → chunk-JXVLNVXC.js} +10 -12
  49. package/dist/assets/cesium/Workers/chunk-KHZNBFOH.js +963 -0
  50. package/dist/assets/cesium/Workers/{chunk-KD4Y7CZL.js → chunk-L5GODJAR.js} +15 -17
  51. package/dist/assets/cesium/Workers/{chunk-O5AMBQ36.js → chunk-LJ2JQHJT.js} +13 -8
  52. package/dist/assets/cesium/Workers/{chunk-ABADGKYE.js → chunk-LLAF3CPH.js} +2 -2
  53. package/dist/assets/cesium/Workers/{chunk-CHHNOC2C.js → chunk-M24KHENR.js} +95 -155
  54. package/dist/assets/cesium/Workers/{chunk-2R5O53JW.js → chunk-NDDI2LWR.js} +6 -6
  55. package/dist/assets/cesium/Workers/{chunk-QT3MPEMI.js → chunk-NGZJIN5Z.js} +4 -4
  56. package/dist/assets/cesium/Workers/{chunk-ZFOBYDGF.js → chunk-O72GZTSE.js} +2 -2
  57. package/dist/assets/cesium/Workers/{chunk-IPA4EACJ.js → chunk-OPP2SKMA.js} +12 -12
  58. package/dist/assets/cesium/Workers/{chunk-4MFFIWUA.js → chunk-P6TRGU3S.js} +2 -2
  59. package/dist/assets/cesium/Workers/{chunk-GLZBE3ML.js → chunk-QN6TBED4.js} +13 -13
  60. package/dist/assets/cesium/Workers/{chunk-MYZB7C4T.js → chunk-QQOZO7KO.js} +10 -10
  61. package/dist/assets/cesium/Workers/{chunk-HQF437NJ.js → chunk-RJM36CNY.js} +6 -6
  62. package/dist/assets/cesium/Workers/{chunk-CTELOFLA.js → chunk-RTJKHZWU.js} +6 -6
  63. package/dist/assets/cesium/Workers/{chunk-J3JY6I2C.js → chunk-TI3TRKIC.js} +425 -489
  64. package/dist/assets/cesium/Workers/{chunk-OAVNIRB4.js → chunk-TK5IIG2F.js} +5 -7
  65. package/dist/assets/cesium/Workers/{chunk-WXTV4ATB.js → chunk-U5HSOKPQ.js} +1 -1
  66. package/dist/assets/cesium/Workers/{chunk-N3JIFFX2.js → chunk-WGDFYAGC.js} +5 -6
  67. package/dist/assets/cesium/Workers/{chunk-EW2GWJYB.js → chunk-X7IQYYHF.js} +2 -2
  68. package/dist/assets/cesium/Workers/{chunk-LLUNNUJV.js → chunk-XIUSRWL6.js} +9 -5
  69. package/dist/assets/cesium/Workers/{chunk-CCFQRR6D.js → chunk-XWOUPGUF.js} +1 -1
  70. package/dist/assets/cesium/Workers/{chunk-6BTKZDRG.js → chunk-YCDZX5LS.js} +3 -5
  71. package/dist/assets/cesium/Workers/{chunk-RP2A7BR5.js → chunk-YK3QIKY7.js} +12 -14
  72. package/dist/assets/cesium/Workers/{chunk-227AJNOA.js → chunk-YSIJTJ7N.js} +5 -5
  73. package/dist/assets/cesium/Workers/{chunk-A4JVFBQ3.js → chunk-Z2QP3CXW.js} +2 -2
  74. package/dist/assets/cesium/Workers/{chunk-VLGOATD6.js → chunk-ZVUUPJEM.js} +22 -22
  75. package/dist/assets/cesium/Workers/combineGeometry.js +22 -23
  76. package/dist/assets/cesium/Workers/createBoxGeometry.js +16 -17
  77. package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +14 -15
  78. package/dist/assets/cesium/Workers/createCircleGeometry.js +29 -26
  79. package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +17 -18
  80. package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +35 -36
  81. package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +29 -30
  82. package/dist/assets/cesium/Workers/createCorridorGeometry.js +29 -30
  83. package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +27 -28
  84. package/dist/assets/cesium/Workers/createCylinderGeometry.js +18 -19
  85. package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +17 -19
  86. package/dist/assets/cesium/Workers/createEllipseGeometry.js +24 -25
  87. package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +17 -18
  88. package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +17 -18
  89. package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +16 -17
  90. package/dist/assets/cesium/Workers/createFrustumGeometry.js +16 -17
  91. package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +18 -18
  92. package/dist/assets/cesium/Workers/createGeometry.js +52 -33
  93. package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +28 -29
  94. package/dist/assets/cesium/Workers/createPlaneGeometry.js +14 -15
  95. package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +13 -14
  96. package/dist/assets/cesium/Workers/createPolygonGeometry.js +451 -176
  97. package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +29 -30
  98. package/dist/assets/cesium/Workers/createPolylineGeometry.js +24 -25
  99. package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +31 -33
  100. package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +27 -29
  101. package/dist/assets/cesium/Workers/createRectangleGeometry.js +30 -31
  102. package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +21 -24
  103. package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +22 -23
  104. package/dist/assets/cesium/Workers/createSphereGeometry.js +17 -18
  105. package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +16 -17
  106. package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +3 -3
  107. package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +14 -16
  108. package/dist/assets/cesium/Workers/createVectorTileGeometries.js +22 -23
  109. package/dist/assets/cesium/Workers/createVectorTilePoints.js +12 -12
  110. package/dist/assets/cesium/Workers/createVectorTilePolygons.js +20 -21
  111. package/dist/assets/cesium/Workers/createVectorTilePolylines.js +14 -16
  112. package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +24 -25
  113. package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +29 -26
  114. package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +19 -21
  115. package/dist/assets/cesium/Workers/createWallGeometry.js +23 -24
  116. package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +22 -23
  117. package/dist/assets/cesium/Workers/decodeDraco.js +11 -11
  118. package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +35 -19
  119. package/dist/assets/cesium/Workers/decodeI3S.js +600 -92
  120. package/dist/assets/cesium/Workers/transcodeKTX2.js +58 -93
  121. package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -1
  122. package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +21 -22
  123. package/dist/assets/{cesium.6b12b4.js → cesium-9ea5ba6e.js} +73315 -68035
  124. package/dist/assets/cesium.js +1 -1
  125. package/dist/assets/{core.074b78.js → core-9b003470.js} +7135 -5664
  126. package/dist/assets/core.js +1 -1
  127. package/dist/assets/{ol.8b2e3a.js → ol-8373d6ac.js} +43066 -44325
  128. package/dist/assets/ol.js +1 -1
  129. package/dist/assets/ui-163311a7.css +1 -0
  130. package/dist/assets/{ui.715986.js → ui-163311a7.js} +14696 -13170
  131. package/dist/assets/ui.js +1 -1
  132. package/dist/assets/vue-0f6dd813.js +6083 -0
  133. package/dist/assets/vue.js +1 -1
  134. package/dist/assets/{vuetify.28d881.css → vuetify-e2c4b35c.css} +2 -2
  135. package/dist/assets/{vuetify.28d881.js → vuetify-e2c4b35c.js} +8699 -8824
  136. package/dist/assets/vuetify.js +1 -1
  137. package/dist/index.html +11 -10
  138. package/index.d.ts +36 -20
  139. package/index.html +5 -5
  140. package/index.js +20 -10
  141. package/lib/olLib.js +90 -23
  142. package/package.json +25 -23
  143. package/plugins/@vcmap-show-case/custom-icons-example/README.md +3 -0
  144. package/plugins/@vcmap-show-case/custom-icons-example/assets/imageExample.png +0 -0
  145. package/plugins/@vcmap-show-case/custom-icons-example/assets/svgExample.svg +1 -0
  146. package/plugins/@vcmap-show-case/custom-icons-example/package.json +5 -0
  147. package/plugins/@vcmap-show-case/custom-icons-example/src/CustomIconsExample.vue +90 -0
  148. package/plugins/@vcmap-show-case/custom-icons-example/src/index.js +45 -0
  149. package/plugins/@vcmap-show-case/flight-component-example/src/FlightExample.vue +41 -1
  150. package/plugins/@vcmap-show-case/form-inputs-example/src/FormInputsExample.vue +73 -34
  151. package/plugins/@vcmap-show-case/form-inputs-example/src/exampleActions.js +7 -11
  152. package/plugins/@vcmap-show-case/form-inputs-example/src/index.js +2 -2
  153. package/plugins/@vcmap-show-case/list-example/src/ListExample.vue +50 -96
  154. package/plugins/@vcmap-show-case/plugin-editors/src/PluginEditors.vue +14 -11
  155. package/plugins/@vcmap-show-case/project-selector/src/ModulesListComponent.vue +18 -11
  156. package/plugins/@vcmap-show-case/search-example/src/index.js +1 -0
  157. package/plugins/@vcmap-show-case/search-example/src/searchImpl.js +35 -5
  158. package/plugins/@vcmap-show-case/style-input-example/src/StyleExample.vue +29 -90
  159. package/plugins/@vcmap-show-case/theming-example/README.md +3 -0
  160. package/plugins/@vcmap-show-case/theming-example/package.json +5 -0
  161. package/plugins/@vcmap-show-case/theming-example/src/ThemingExample.vue +116 -0
  162. package/plugins/@vcmap-show-case/theming-example/src/index.js +53 -0
  163. package/plugins/@vcmap-show-case/toolbox-example/src/index.js +2 -1
  164. package/plugins/@vcmap-show-case/vector-properties-example/src/GeometrySettings.vue +420 -0
  165. package/plugins/@vcmap-show-case/vector-properties-example/src/LayoutHandler.vue +97 -0
  166. package/plugins/@vcmap-show-case/vector-properties-example/src/TerrainSettings.vue +90 -0
  167. package/plugins/@vcmap-show-case/vector-properties-example/src/VectorPropertiesExample.vue +86 -70
  168. package/plugins/@vcmap-show-case/vector-properties-example/src/index.js +34 -1
  169. package/plugins/@vcmap-show-case/vector-properties-example/src/lib.js +294 -0
  170. package/plugins/@vcmap-show-case/wizard-example/src/WizardExample.vue +40 -54
  171. package/plugins/package.json +23 -21
  172. package/public/assets/@mdi/font/README.md +25 -0
  173. package/public/assets/@mdi/font/css/materialdesignicons.min.css +2 -2
  174. package/public/assets/@mdi/font/css/materialdesignicons.min.css.map +16 -0
  175. package/public/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
  176. package/src/actions/StyleSelector.vue +37 -21
  177. package/src/actions/StyleSelector.vue.d.ts +5 -5
  178. package/src/actions/actionHelper.d.ts +4 -11
  179. package/src/actions/actionHelper.js +35 -27
  180. package/src/actions/flightActions.js +44 -23
  181. package/src/actions/listActions.d.ts +5 -12
  182. package/src/actions/listActions.js +6 -22
  183. package/src/actions/stateRefAction.js +2 -2
  184. package/src/application/VcsApp.vue +196 -85
  185. package/src/application/VcsApp.vue.d.ts +309 -4
  186. package/src/application/VcsAppWrapper.vue +1 -1
  187. package/src/application/VcsAttributions.vue +4 -15
  188. package/src/application/VcsAttributionsFooter.vue +28 -18
  189. package/src/application/VcsAttributionsFooter.vue.d.ts +1 -1
  190. package/src/application/VcsContainer.vue +27 -10
  191. package/src/application/VcsContainer.vue.d.ts +248 -0
  192. package/src/application/VcsMainMap.vue +8 -8
  193. package/src/application/VcsMainMap.vue.d.ts +2 -2
  194. package/src/application/VcsMap.vue +1 -0
  195. package/src/application/VcsNavbar.vue +15 -3
  196. package/src/application/VcsNavbar.vue.d.ts +2 -1
  197. package/src/application/VcsPositionDisplay.vue +10 -25
  198. package/src/application/VcsPositionDisplay.vue.d.ts +0 -1
  199. package/src/application/VcsSettings.vue +11 -18
  200. package/src/application/VcsSplashScreen.vue +43 -55
  201. package/src/application/VcsSplashScreen.vue.d.ts +4 -6
  202. package/src/application/VcsTextPage.vue +13 -44
  203. package/src/application/VcsTextPage.vue.d.ts +4 -8
  204. package/src/application/VcsTextPageFooter.vue +26 -41
  205. package/src/application/attributionsHelper.d.ts +20 -22
  206. package/src/application/attributionsHelper.js +14 -10
  207. package/src/callback/vcsCallback.d.ts +2 -2
  208. package/src/callback/vcsCallback.js +1 -1
  209. package/src/components/buttons/VcsActionButtonList.vue +66 -7
  210. package/src/components/buttons/VcsActionButtonList.vue.d.ts +28 -0
  211. package/src/components/buttons/VcsButton.vue +8 -10
  212. package/src/components/buttons/VcsButton.vue.d.ts +4 -4
  213. package/src/components/buttons/VcsFormButton.vue +9 -9
  214. package/src/components/buttons/VcsFormButton.vue.d.ts +3 -3
  215. package/src/components/buttons/VcsToolButton.vue +9 -7
  216. package/src/components/buttons/VcsToolButton.vue.d.ts +5 -5
  217. package/src/components/composables.d.ts +14 -2
  218. package/src/components/composables.js +106 -4
  219. package/src/components/extent/VcsExtent.vue +11 -7
  220. package/src/components/extent/VcsExtent.vue.d.ts +1 -0
  221. package/src/components/extent/VcsExtentEditor.vue +2 -1
  222. package/src/components/flight/VcsFlightAnchorsComponent.vue +64 -36
  223. package/src/components/flight/VcsFlightComponent.vue +25 -30
  224. package/src/components/flight/VcsFlightComponent.vue.d.ts +1 -0
  225. package/src/components/flight/VcsFlightEditor.vue +1 -0
  226. package/src/components/flight/VcsFlightPlayer.vue +47 -19
  227. package/src/components/form-inputs-controls/VcsCheckbox.vue +32 -13
  228. package/src/components/form-inputs-controls/VcsCheckbox.vue.d.ts +10 -0
  229. package/src/components/form-inputs-controls/VcsChipArrayInput.vue +14 -17
  230. package/src/components/form-inputs-controls/VcsChipArrayInput.vue.d.ts +2 -4
  231. package/src/components/form-inputs-controls/VcsCoordinate.vue +17 -5
  232. package/src/components/form-inputs-controls/VcsCoordinate.vue.d.ts +5 -2
  233. package/src/components/form-inputs-controls/VcsDatePicker.vue +53 -59
  234. package/src/components/form-inputs-controls/VcsDatePicker.vue.d.ts +2 -64
  235. package/src/components/form-inputs-controls/VcsFileInput.vue +18 -19
  236. package/src/components/form-inputs-controls/VcsFileInput.vue.d.ts +1 -0
  237. package/src/components/form-inputs-controls/VcsLabel.vue +65 -3
  238. package/src/components/form-inputs-controls/VcsLabel.vue.d.ts +32 -1
  239. package/src/components/form-inputs-controls/VcsRadio.vue +26 -10
  240. package/src/components/form-inputs-controls/VcsRadio.vue.d.ts +2 -0
  241. package/src/components/form-inputs-controls/VcsSelect.vue +47 -47
  242. package/src/components/form-inputs-controls/VcsSelect.vue.d.ts +9 -6
  243. package/src/components/form-inputs-controls/VcsSlider.vue +53 -15
  244. package/src/components/form-inputs-controls/VcsSlider.vue.d.ts +26 -2
  245. package/src/components/form-inputs-controls/VcsTextArea.vue +56 -40
  246. package/src/components/form-inputs-controls/VcsTextArea.vue.d.ts +1 -0
  247. package/src/components/form-inputs-controls/VcsTextField.vue +46 -16
  248. package/src/components/form-inputs-controls/VcsTextField.vue.d.ts +12 -1
  249. package/src/components/form-inputs-controls/VcsWizard.vue +89 -112
  250. package/src/components/form-inputs-controls/VcsWizard.vue.d.ts +3 -13
  251. package/src/components/form-inputs-controls/VcsWizardStep.vue +78 -58
  252. package/src/components/form-inputs-controls/VcsWizardStep.vue.d.ts +24 -11
  253. package/src/components/form-inputs-controls/vcsTextField.scss +21 -13
  254. package/src/components/form-output/VcsFormattedNumber.vue +46 -14
  255. package/src/components/form-output/VcsFormattedNumber.vue.d.ts +27 -0
  256. package/src/components/form-output/VcsMarkdown.vue +56 -0
  257. package/src/{application/VcsCustomScreen.vue.d.ts → components/form-output/VcsMarkdown.vue.d.ts} +7 -5
  258. package/src/components/form-output/markdownHelper.d.ts +30 -0
  259. package/src/components/form-output/markdownHelper.js +398 -0
  260. package/src/components/import/VcsFileDrop.vue +9 -6
  261. package/src/components/import/VcsImportComponent.vue +12 -8
  262. package/src/components/import/VcsImportComponent.vue.d.ts +1 -2
  263. package/src/components/lists/VcsActionList.vue +50 -34
  264. package/src/components/lists/VcsActionList.vue.d.ts +3 -1
  265. package/src/components/lists/VcsList.vue +105 -192
  266. package/src/components/lists/VcsList.vue.d.ts +18 -66
  267. package/src/components/lists/VcsListItemComponent.vue +216 -0
  268. package/src/components/lists/VcsListItemComponent.vue.d.ts +83 -0
  269. package/src/components/lists/VcsTreeview.vue +119 -26
  270. package/src/components/lists/VcsTreeview.vue.d.ts +26 -3
  271. package/src/components/lists/VcsTreeviewSearchbar.vue +17 -6
  272. package/src/components/lists/VcsTreeviewSearchbar.vue.d.ts +3 -1
  273. package/src/components/lists/VcsTreeviewTitle.vue +40 -0
  274. package/src/components/modelHelper.d.ts +21 -8
  275. package/src/components/modelHelper.js +50 -8
  276. package/src/components/notification/VcsBadge.vue +2 -2
  277. package/src/components/notification/VcsHelp.vue +6 -7
  278. package/src/components/notification/VcsHelp.vue.d.ts +0 -8
  279. package/src/components/notification/VcsHelpTooltip.vue +48 -0
  280. package/src/components/notification/VcsHelpTooltip.vue.d.ts +25 -0
  281. package/src/components/plugins/AbstractConfigEditor.vue +2 -23
  282. package/src/components/plugins/AbstractConfigEditor.vue.d.ts +6 -29
  283. package/src/components/section/VcsExpansionPanel.vue +111 -0
  284. package/src/components/section/VcsExpansionPanel.vue.d.ts +19 -0
  285. package/src/components/{form-inputs-controls → section}/VcsFormSection.vue +13 -7
  286. package/src/components/{form-inputs-controls → section}/VcsFormSection.vue.d.ts +2 -3
  287. package/src/components/style/MenuWrapper.vue +25 -27
  288. package/src/components/style/MenuWrapper.vue.d.ts +4 -4
  289. package/src/components/style/VcsFeatureStyleComponent.vue +1 -0
  290. package/src/components/style/VcsFillMenu.vue +10 -16
  291. package/src/components/style/VcsFillMenu.vue.d.ts +0 -18
  292. package/src/components/style/VcsFillSelector.vue +14 -16
  293. package/src/components/style/VcsImageMenu.vue +9 -25
  294. package/src/components/style/VcsImageMenu.vue.d.ts +0 -27
  295. package/src/components/style/VcsImageSelector.vue +115 -172
  296. package/src/components/style/VcsImageSelector.vue.d.ts +16 -15
  297. package/src/components/style/VcsStrokeMenu.vue +9 -15
  298. package/src/components/style/VcsStrokeMenu.vue.d.ts +0 -18
  299. package/src/components/style/VcsStrokeSelector.vue +17 -21
  300. package/src/components/style/VcsStrokeSelector.vue.d.ts +1 -0
  301. package/src/components/style/VcsTextMenu.vue +12 -14
  302. package/src/components/style/VcsTextMenu.vue.d.ts +0 -9
  303. package/src/components/style/VcsTextSelector.vue +80 -96
  304. package/src/components/style/VcsTextSelector.vue.d.ts +20 -22
  305. package/src/components/style/VcsVectorStyleComponent.vue +9 -20
  306. package/src/components/style/VcsVectorStyleComponent.vue.d.ts +1 -1
  307. package/src/components/style/composables.d.ts +0 -14
  308. package/src/components/style/composables.js +0 -49
  309. package/src/components/tables/VcsDataTable.vue +43 -33
  310. package/src/components/tables/VcsDataTable.vue.d.ts +2 -1
  311. package/src/components/tables/VcsTable.vue +46 -62
  312. package/src/components/tables/VcsTable.vue.d.ts +30 -17
  313. package/src/components/tables/VcsTableCell.vue +72 -0
  314. package/src/components/tables/VcsTableCell.vue.d.ts +13 -0
  315. package/src/components/vector-properties/VcsFeatureEditingWindow.vue +87 -51
  316. package/src/components/vector-properties/VcsFeatureEditingWindow.vue.d.ts +9 -7
  317. package/src/components/vector-properties/VcsFeatureTransforms.vue +45 -6
  318. package/src/components/vector-properties/VcsFeatureTransforms.vue.d.ts +2 -1
  319. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +541 -596
  320. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue.d.ts +222 -24
  321. package/src/components/viewpoint/VcsViewpointComponent.vue +36 -20
  322. package/src/components/viewpoint/VcsViewpointComponent.vue.d.ts +1 -0
  323. package/src/components/viewpoint/VcsViewpointEditor.vue +3 -1
  324. package/src/contentTree/LayerTree.vue +10 -28
  325. package/src/contentTree/LayerTree.vue.d.ts +1 -1
  326. package/src/contentTree/contentTreeCollection.d.ts +1 -0
  327. package/src/contentTree/contentTreeCollection.js +45 -11
  328. package/src/contentTree/contentTreeItem.d.ts +4 -4
  329. package/src/contentTree/contentTreeItem.js +8 -8
  330. package/src/contentTree/layerContentTreeItem.d.ts +8 -5
  331. package/src/contentTree/layerContentTreeItem.js +48 -34
  332. package/src/contentTree/layerGroupContentTreeItem.d.ts +7 -1
  333. package/src/contentTree/layerGroupContentTreeItem.js +22 -3
  334. package/src/contentTree/obliqueCollectionContentTreeItem.js +6 -1
  335. package/src/featureInfo/AddressBalloonComponent.vue +1 -1
  336. package/src/featureInfo/BalloonComponent.vue +33 -26
  337. package/src/featureInfo/BalloonComponent.vue.d.ts +1 -0
  338. package/src/featureInfo/IframeComponent.vue +6 -1
  339. package/src/featureInfo/MarkdownBalloonComponent.vue +5 -3
  340. package/src/featureInfo/MarkdownBalloonComponent.vue.d.ts +2 -2
  341. package/src/featureInfo/abstractFeatureInfoView.d.ts +19 -4
  342. package/src/featureInfo/abstractFeatureInfoView.js +38 -13
  343. package/src/featureInfo/balloonHelper.js +1 -1
  344. package/src/featureInfo/featureInfo.d.ts +7 -7
  345. package/src/featureInfo/featureInfo.js +59 -41
  346. package/src/featureInfo/iframeFeatureInfoView.d.ts +8 -2
  347. package/src/featureInfo/iframeFeatureInfoView.js +15 -5
  348. package/src/featureInfo/markdownBalloonFeatureInfoView.d.ts +1 -1
  349. package/src/featureInfo/markdownBalloonFeatureInfoView.js +5 -5
  350. package/src/featureInfo/markdownFeatureInfoView.d.ts +1 -1
  351. package/src/featureInfo/markdownFeatureInfoView.js +9 -11
  352. package/src/featureInfo/tableFeatureInfoView.js +13 -4
  353. package/src/i18n/de.d.ts +59 -32
  354. package/src/i18n/de.js +28 -5
  355. package/src/i18n/en.d.ts +59 -32
  356. package/src/i18n/en.js +25 -2
  357. package/src/i18n/i18nCollection.d.ts +9 -15
  358. package/src/i18n/i18nCollection.js +3 -3
  359. package/src/init.d.ts +5 -38
  360. package/src/init.js +19 -18
  361. package/src/legend/StyleLegendItem.vue +4 -9
  362. package/src/legend/VcsLegend.vue +33 -55
  363. package/src/legend/VcsLegend.vue.d.ts +1 -0
  364. package/src/manager/buttonManager.js +4 -4
  365. package/src/manager/collectionManager/CollectionComponent.vue +18 -42
  366. package/src/manager/collectionManager/CollectionComponent.vue.d.ts +4 -2
  367. package/src/manager/collectionManager/CollectionComponentContent.vue +7 -6
  368. package/src/manager/collectionManager/CollectionComponentContent.vue.d.ts +3 -1
  369. package/src/manager/collectionManager/CollectionComponentList.vue +11 -9
  370. package/src/manager/collectionManager/CollectionComponentList.vue.d.ts +6 -4
  371. package/src/manager/collectionManager/CollectionComponentProvider.vue +1 -1
  372. package/src/manager/collectionManager/CollectionComponentStandalone.vue +3 -2
  373. package/src/manager/collectionManager/CollectionManager.vue +1 -1
  374. package/src/manager/collectionManager/categoryManager.d.ts +1 -1
  375. package/src/manager/collectionManager/collectionComponentClass.d.ts +3 -3
  376. package/src/manager/collectionManager/collectionComponentClass.js +16 -15
  377. package/src/manager/collectionManager/collectionManager.d.ts +1 -1
  378. package/src/manager/collectionManager/collectionManager.js +10 -10
  379. package/src/manager/collectionManager/editorCollectionComponentClass.js +11 -8
  380. package/src/manager/contextMenu/ContextMenuComponent.vue +1 -1
  381. package/src/manager/contextMenu/contextMenuManager.js +2 -2
  382. package/src/manager/navbarManager.js +2 -2
  383. package/src/manager/panel/PanelComponent.vue +2 -9
  384. package/src/manager/panel/PanelManagerComponent.vue +9 -5
  385. package/src/manager/panel/panelHelper.js +3 -3
  386. package/src/manager/panel/panelManager.d.ts +9 -1
  387. package/src/manager/panel/panelManager.js +18 -6
  388. package/src/manager/toolbox/GroupToolboxComponent.vue +13 -7
  389. package/src/manager/toolbox/GroupToolboxComponent.vue.d.ts +1 -0
  390. package/src/manager/toolbox/SelectToolboxComponent.vue +13 -8
  391. package/src/manager/toolbox/SelectToolboxComponent.vue.d.ts +1 -0
  392. package/src/manager/toolbox/{ToolboxManager.vue → ToolboxManagerComponent.vue} +28 -8
  393. package/src/manager/toolbox/{ToolboxManager.vue.d.ts → ToolboxManagerComponent.vue.d.ts} +1 -0
  394. package/src/manager/toolbox/toolboxManager.js +10 -10
  395. package/src/manager/window/WindowComponent.vue +13 -9
  396. package/src/manager/window/WindowComponentHeader.vue +33 -9
  397. package/src/manager/window/WindowComponentHeader.vue.d.ts +3 -0
  398. package/src/manager/window/WindowManager.vue +6 -3
  399. package/src/manager/window/windowManager.d.ts +71 -15
  400. package/src/manager/window/windowManager.js +32 -11
  401. package/src/navigation/MapNavigation.vue +52 -9
  402. package/src/navigation/ObliqueRotation.vue +2 -2
  403. package/src/navigation/OrientationToolsButton.vue +37 -26
  404. package/src/navigation/OrientationToolsButton.vue.d.ts +5 -1
  405. package/src/navigation/TiltSlider.vue +82 -88
  406. package/src/navigation/TiltSlider.vue.d.ts +10 -7
  407. package/src/navigation/VcsCompass.vue +17 -11
  408. package/src/navigation/VcsCompass.vue.d.ts +2 -0
  409. package/src/navigation/VcsZoomButton.vue +1 -1
  410. package/src/navigation/locatorHelper.js +4 -22
  411. package/src/navigation/overviewMap.js +5 -2
  412. package/src/notifier/NotifierComponent.vue +19 -16
  413. package/src/obliqueFallbackWarnings.d.ts +5 -0
  414. package/src/obliqueFallbackWarnings.js +54 -0
  415. package/src/search/ResultItem.vue +18 -6
  416. package/src/search/ResultsComponent.vue +32 -21
  417. package/src/search/ResultsComponent.vue.d.ts +2 -1
  418. package/src/search/SearchComponent.vue +14 -16
  419. package/src/search/SearchComponent.vue.d.ts +1 -0
  420. package/src/search/search.js +2 -2
  421. package/src/siteConfig.js +9 -9
  422. package/src/state.js +4 -4
  423. package/src/styles/_typography.scss +1 -2
  424. package/src/styles/main.scss +0 -4
  425. package/src/styles/vcsList.scss +1 -1
  426. package/src/uiConfig.d.ts +323 -7
  427. package/src/uiConfig.js +31 -17
  428. package/src/vcsUiApp.d.ts +90 -80
  429. package/src/vcsUiApp.js +61 -41
  430. package/src/vuePlugins/i18n.js +8 -0
  431. package/src/vuePlugins/vuetify.d.ts +88 -60
  432. package/src/vuePlugins/vuetify.js +134 -20
  433. package/dist/assets/@mdi/font/css/materialdesignicons.css.map +0 -16
  434. package/dist/assets/@mdi/font/css/materialdesignicons.min.e3f476.css +0 -3
  435. package/dist/assets/cesium/Workers/chunk-DUHWWBQQ.js +0 -3273
  436. package/dist/assets/cesium/Workers/chunk-QJ3DFBH3.js +0 -73
  437. package/dist/assets/index-ca7EmZ3d.js +0 -1
  438. package/dist/assets/ui.715986.css +0 -1
  439. package/dist/assets/vue.0f2c53.js +0 -6096
  440. package/plugins/@vcmap-show-case/theme-changer/README.md +0 -23
  441. package/plugins/@vcmap-show-case/theme-changer/config.json +0 -69
  442. package/plugins/@vcmap-show-case/theme-changer/package.json +0 -11
  443. package/plugins/@vcmap-show-case/theme-changer/src/ThemeChangerComponent.vue +0 -120
  444. package/plugins/@vcmap-show-case/theme-changer/src/index.js +0 -108
  445. package/public/assets/@mdi/font/css/materialdesignicons.css.map +0 -16
  446. package/src/application/VcsCustomScreen.vue +0 -45
  447. package/src/application/markdownHelper.d.ts +0 -12
  448. package/src/application/markdownHelper.js +0 -85
  449. package/src/components/lists/VcsTreeviewLeaf.vue +0 -83
  450. package/src/components/notification/VcsTooltip.vue +0 -156
  451. package/src/components/notification/VcsTooltip.vue.d.ts +0 -27
  452. package/src/components/vector-properties/composables.d.ts +0 -33
  453. package/src/components/vector-properties/composables.js +0 -100
  454. package/src/featureInfo/MarkdownComponent.vue +0 -16
  455. package/src/featureInfo/MarkdownComponent.vue.d.ts +0 -7
  456. package/src/styles/_theming.scss +0 -73
  457. package/src/styles/settings.scss +0 -6
  458. package/src/styles/shades.scss +0 -4
  459. package/src/styles/variables.scss +0 -140
  460. package/src/styles/vcsFont.scss +0 -2
  461. package/src/styles/vcsGrid.scss +0 -3
  462. /package/dist/assets/{favicon-128.4c4ce5.png → favicon-128-4c4ce5df.png} +0 -0
  463. /package/dist/assets/{favicon-180.5b99c0.png → favicon-180-4c4ce5df.png} +0 -0
  464. /package/dist/assets/{favicon-192.0e205e.png → favicon-192-4c4ce5df.png} +0 -0
  465. /package/dist/assets/{favicon-32.6b9add.png → favicon-32-4c4ce5df.png} +0 -0
  466. /package/dist/assets/{favicon.d5ec97.svg → favicon-4c4ce5df.svg} +0 -0
  467. /package/dist/assets/font/{TitilliumWeb-Regular.9ca076.woff2 → TitilliumWeb-Regular-9ca076be.woff2} +0 -0
  468. /package/dist/assets/style/{icon-marker.70960f.png → icon-marker-70960f05.png} +0 -0
  469. /package/dist/assets/style/{icon-marker-blue.534e37.png → icon-marker-blue-534e374b.png} +0 -0
  470. /package/dist/assets/style/{icon-marker-green.0b6a92.png → icon-marker-green-0b6a92bc.png} +0 -0
  471. /package/dist/assets/style/{icon-marker-o.036477.png → icon-marker-o-036477fa.png} +0 -0
  472. /package/dist/assets/style/{icon-marker-o-blue.7b6d62.png → icon-marker-o-blue-7b6d6279.png} +0 -0
  473. /package/dist/assets/style/{icon-marker-o-green.c863c0.png → icon-marker-o-green-c863c0fa.png} +0 -0
  474. /package/dist/assets/style/{icon-marker-o-red.93ff58.png → icon-marker-o-red-93ff58df.png} +0 -0
  475. /package/dist/assets/style/{icon-marker-red.313d03.png → icon-marker-red-313d03e8.png} +0 -0
  476. /package/dist/assets/style/{icon-pin.b7ce77.png → icon-pin-b7ce771e.png} +0 -0
  477. /package/dist/assets/style/{icon-pin-blue.7be369.png → icon-pin-blue-7be369a3.png} +0 -0
  478. /package/dist/assets/style/{icon-pin-green.cbb935.png → icon-pin-green-cbb935fe.png} +0 -0
  479. /package/dist/assets/style/{icon-pin-red.3f25b2.png → icon-pin-red-3f25b245.png} +0 -0
  480. /package/public/assets/{favicon-128.png → favicon-128-4c4ce5df.png} +0 -0
  481. /package/public/assets/{favicon-180.png → favicon-180-4c4ce5df.png} +0 -0
  482. /package/public/assets/{favicon-192.png → favicon-192-4c4ce5df.png} +0 -0
  483. /package/public/assets/{favicon-32.png → favicon-32-4c4ce5df.png} +0 -0
  484. /package/public/assets/{favicon.svg → favicon-4c4ce5df.svg} +0 -0
  485. /package/src/components/lists/{VcsTreeviewLeaf.vue.d.ts → VcsTreeviewTitle.vue.d.ts} +0 -0
@@ -1,14 +1,19 @@
1
1
  <template>
2
- <v-container class="fill-height pa-0" absolute fluid>
2
+ <v-container class="fill-height pa-0 vcs-app" absolute fluid>
3
3
  <VcsSplashScreen
4
4
  v-if="splashScreen"
5
- v-model="splashScreenRef"
6
5
  :options="splashScreen"
7
- :window-id="'splashScreen'"
6
+ v-model="splashScreenRef"
8
7
  ></VcsSplashScreen>
9
- <VcsNavbar />
8
+ <VcsNavbar v-if="!config.hideHeader" />
10
9
  <VcsContainer :attribution-action="attributionAction" />
11
- <v-footer v-if="smAndUp" app absolute height="22" class="d-flex gc-1 pa-0">
10
+ <v-footer
11
+ v-if="showFooter"
12
+ app
13
+ absolute
14
+ :height="footerHeight"
15
+ class="d-flex gc-1 pa-0"
16
+ >
12
17
  <VcsPositionDisplay />
13
18
  <VcsTextPageFooter
14
19
  v-if="imprint"
@@ -20,8 +25,8 @@
20
25
  :text-page="dataProtection"
21
26
  :window-id="'dataProtectionWindow'"
22
27
  />
28
+ <v-spacer />
23
29
  <VcsAttributionsFooter
24
- class="align-wrapper"
25
30
  :entries="attributionEntries"
26
31
  :attribution-action="attributionAction"
27
32
  />
@@ -33,18 +38,13 @@
33
38
  :deep(.v-application--wrap) {
34
39
  min-height: fit-content;
35
40
  }
36
- .align-wrapper {
37
- position: absolute;
38
- right: 0;
39
- margin-right: 4px !important;
40
- }
41
41
  </style>
42
42
 
43
43
  <script>
44
44
  import { computed, onMounted, onUnmounted, provide, watch, ref } from 'vue';
45
45
  import { useDisplay } from 'vuetify';
46
46
  import { getVcsAppById, moduleIdSymbol } from '@vcmap/core';
47
- import { VContainer, VFooter } from 'vuetify/components';
47
+ import { VContainer, VFooter, VSpacer } from 'vuetify/components';
48
48
  import { getLogger } from '@vcsuite/logger';
49
49
  import VcsContainer from './VcsContainer.vue';
50
50
  import { ButtonLocation } from '../manager/navbarManager.js';
@@ -58,18 +58,53 @@
58
58
  import VcsSettings from './VcsSettings.vue';
59
59
  import { WindowSlot } from '../manager/window/windowManager.js';
60
60
  import CollectionManager from '../manager/collectionManager/CollectionManager.vue';
61
- import { defaultPrimaryColor } from '../vuePlugins/vuetify.js';
61
+ import {
62
+ createVcsThemes,
63
+ setTheme,
64
+ useFontSize,
65
+ } from '../vuePlugins/vuetify.js';
62
66
  import VcsLegend from '../legend/VcsLegend.vue';
63
67
  import { getLegendEntries } from '../legend/legendHelper.js';
64
68
  import VcsAttributionsFooter from './VcsAttributionsFooter.vue';
65
69
  import VcsTextPageFooter from './VcsTextPageFooter.vue';
66
70
  import VcsSplashScreen from './VcsSplashScreen.vue';
67
- import VcsCustomScreen from './VcsCustomScreen.vue';
71
+ import VcsTextPage from './VcsTextPage.vue';
68
72
  import VcsAttributions from './VcsAttributions.vue';
69
73
  import { getAttributions } from './attributionsHelper.js';
70
74
  import VcsDefaultLogoMobile from '../logo-mobile.svg';
71
75
  import VcsPositionDisplay from './VcsPositionDisplay.vue';
72
76
 
77
+ /**
78
+ * This helper checks the uiConfig and depending on the value will setup/teardown the providedSetupFunction
79
+ * @param {import("../vcsUiApp.js").default} app
80
+ * @param {(import("../vcsUiApp.js").default) => () => void} setupFunction
81
+ * @param {string} configOption parameter name of a uiConfig parameter, for example `app.uiConfig.config.hideContentTree`
82
+ * @returns {function():void} - cleanup function
83
+ */
84
+ export function setupUIConfigDependency(app, setupFunction, configOption) {
85
+ let destroyFunction = null;
86
+ function handler() {
87
+ if (!app.uiConfig.config[configOption] && !destroyFunction) {
88
+ destroyFunction = setupFunction(app);
89
+ } else if (app.uiConfig.config[configOption] && destroyFunction) {
90
+ destroyFunction();
91
+ destroyFunction = null;
92
+ }
93
+ }
94
+ handler();
95
+ const listeners = [
96
+ app.uiConfig.added.addEventListener(handler),
97
+ app.uiConfig.added.addEventListener(handler),
98
+ ];
99
+
100
+ return () => {
101
+ if (destroyFunction) {
102
+ destroyFunction();
103
+ }
104
+ listeners.forEach((cb) => cb());
105
+ };
106
+ }
107
+
73
108
  /**
74
109
  * You should call this function in the component providing the vcsUiApp to your
75
110
  * application in the components mounted hook. This will call VcsAppMounted on all plugins in the app
@@ -104,6 +139,7 @@
104
139
  /**
105
140
  * This helper function will add a map action button based on the default icons
106
141
  * to the apps NavbarManager. Furthermore, all maps on the app are synced for adding and removing.
142
+ * The buttons can be removed with the uiConfig hideMapButtons
107
143
  * @param {import("../vcsUiApp.js").default} app
108
144
  * @returns {function():void}
109
145
  */
@@ -212,6 +248,33 @@
212
248
  }
213
249
  };
214
250
 
251
+ let currentEntryLength = entries.length;
252
+ const watchEntries = watch(entries, (newValue) => {
253
+ if (
254
+ app.uiConfig.config.openLegendOnAdd &&
255
+ newValue.length > currentEntryLength &&
256
+ !app.windowManager.has('legend')
257
+ ) {
258
+ app.windowManager.add(
259
+ {
260
+ id: 'legend',
261
+ component: VcsLegend,
262
+ state: {
263
+ headerTitle: 'legend.title',
264
+ headerIcon: '$vcsLegend',
265
+ infoUrl: app.getHelpUrlCallback(
266
+ '/components/contentspace.html#id_legend',
267
+ ),
268
+ },
269
+ slot: WindowSlot.DYNAMIC_RIGHT,
270
+ props: { entries },
271
+ },
272
+ vcsAppSymbol,
273
+ );
274
+ }
275
+ currentEntryLength = newValue.length;
276
+ });
277
+
215
278
  /**
216
279
  * Handles legend button and window.
217
280
  * Adds a button, if legend definitions are available or removes legend otherwise.
@@ -226,8 +289,11 @@
226
289
  if (layersWithLegend < 1 && stylesWithLegend < 1) {
227
290
  app.navbarManager.remove('legend');
228
291
  app.windowManager.remove('legend');
292
+ } else {
293
+ addLegend();
229
294
  }
230
295
  };
296
+ handleLegend();
231
297
 
232
298
  const listeners = [
233
299
  app.layers.added.addEventListener((layer) => {
@@ -245,6 +311,9 @@
245
311
  ];
246
312
 
247
313
  return () => {
314
+ watchEntries();
315
+ app.navbarManager.remove('legend');
316
+ app.windowManager.remove('legend');
248
317
  destroy();
249
318
  legendDestroy();
250
319
  listeners.forEach((cb) => cb());
@@ -258,7 +327,7 @@
258
327
  */
259
328
  function setupCustomScreen(app) {
260
329
  function setupCustomScreenAction() {
261
- const { customScreen } = app.uiConfig.config.value;
330
+ const { customScreen } = app.uiConfig.config;
262
331
  const { action: customScreenAction, destroy: customScreenDestroy } =
263
332
  createToggleAction(
264
333
  {
@@ -268,7 +337,7 @@
268
337
  },
269
338
  {
270
339
  id: 'customScreenId',
271
- component: VcsCustomScreen,
340
+ component: VcsTextPage,
272
341
  state: {
273
342
  headerIcon: customScreen.icon,
274
343
  headerTitle: customScreen.name,
@@ -296,7 +365,7 @@
296
365
  }
297
366
  let customScreen;
298
367
  const stopCustomScreenWatcher = watch(
299
- () => app.uiConfig.config.value.customScreen,
368
+ () => app.uiConfig.config.customScreen,
300
369
  (newCustomScreen) => {
301
370
  if (app.navbarManager.has('customScreenToggle')) {
302
371
  app.navbarManager.remove('customScreenToggle');
@@ -322,37 +391,51 @@
322
391
  */
323
392
  function setupSplashScreen(app, splashScreenRef) {
324
393
  function setupSplashScreenAction() {
325
- const { splashScreen } = app.uiConfig.config.value;
326
- const splashScreenAction = {
327
- name: splashScreen.name || 'components.splashScreen.name',
328
- icon: splashScreen.icon || 'mdi-alert-box',
329
- title: splashScreen.title,
330
- callback() {
331
- splashScreenRef.value = !splashScreenRef.value;
332
- },
333
- };
334
- app.navbarManager.add(
335
- {
336
- id: 'splashScreenToggle',
337
- action: splashScreenAction,
338
- },
339
- vcsAppSymbol,
340
- ButtonLocation.MENU,
341
- );
394
+ const { splashScreen } = app.uiConfig.config;
395
+ if (splashScreen) {
396
+ splashScreenRef.value = true;
397
+ }
398
+ if (splashScreen && splashScreen.menuEntry) {
399
+ const splashScreenAction = {
400
+ name: splashScreen.name || 'components.splashScreen.name',
401
+ icon: splashScreen.icon || 'mdi-alert-box',
402
+ title: splashScreen.title,
403
+ callback() {
404
+ splashScreenRef.value = !splashScreenRef.value;
405
+ },
406
+ };
407
+ app.navbarManager.add(
408
+ {
409
+ id: 'splashScreenToggle',
410
+ action: splashScreenAction,
411
+ },
412
+ vcsAppSymbol,
413
+ ButtonLocation.MENU,
414
+ );
415
+ }
342
416
  }
343
-
344
- return watch(
345
- () => app.uiConfig.config.value.splashScreen,
346
- (newSplashScreen) => {
417
+ setupSplashScreenAction();
418
+ const removeAddedListener = app.uiConfig.added.addEventListener((item) => {
419
+ if (item.name === 'splashScreen') {
347
420
  if (app.navbarManager.has('splashScreenToggle')) {
348
421
  app.navbarManager.remove('splashScreenToggle');
349
422
  }
350
- if (newSplashScreen && newSplashScreen.menuEntry) {
351
- setupSplashScreenAction();
423
+ setupSplashScreenAction();
424
+ }
425
+ });
426
+ const removeRemovedListener = app.uiConfig.removed.addEventListener(
427
+ (item) => {
428
+ if (item.name === 'splashScreen') {
429
+ if (app.navbarManager.has('splashScreenToggle')) {
430
+ app.navbarManager.remove('splashScreenToggle');
431
+ }
352
432
  }
353
433
  },
354
- { immediate: true },
355
434
  );
435
+ return () => {
436
+ removeAddedListener();
437
+ removeRemovedListener();
438
+ };
356
439
  }
357
440
  /**
358
441
  * This helper function will add a settings action button to the apps NavbarManager MENU location.
@@ -360,6 +443,7 @@
360
443
  * @returns {function():void}
361
444
  */
362
445
  export function setupSettingsWindow(app) {
446
+ const settingsWindowId = 'vcsSettings';
363
447
  const { action: settingsAction, destroy: settingsDestroy } =
364
448
  createToggleAction(
365
449
  {
@@ -368,7 +452,7 @@
368
452
  title: 'settings.tooltip',
369
453
  },
370
454
  {
371
- id: 'settingsId',
455
+ id: settingsWindowId,
372
456
  component: VcsSettings,
373
457
  state: { headerIcon: 'mdi-cog', headerTitle: 'settings.title' },
374
458
  slot: WindowSlot.DYNAMIC_RIGHT,
@@ -378,13 +462,15 @@
378
462
  );
379
463
  app.navbarManager.add(
380
464
  {
381
- id: 'settingsToggle',
465
+ id: settingsWindowId,
382
466
  action: settingsAction,
383
467
  },
384
468
  vcsAppSymbol,
385
469
  ButtonLocation.MENU,
386
470
  );
387
471
  return () => {
472
+ app.navbarManager.remove(settingsWindowId);
473
+ app.windowManager.remove(settingsWindowId);
388
474
  settingsDestroy();
389
475
  };
390
476
  }
@@ -412,6 +498,11 @@
412
498
  );
413
499
  }
414
500
 
501
+ /**
502
+ * @type {string}
503
+ */
504
+ export const categoryManagerWindowId = 'category-manager';
505
+
415
506
  /**
416
507
  * This helper function will add a category manager button to the navbar. The category Manager
417
508
  * will only be shown if there is at least one category under management in the categoryManager.
@@ -419,15 +510,14 @@
419
510
  * @returns {function():void}
420
511
  */
421
512
  export function setupCategoryManagerWindow(app) {
422
- const id = 'category-manager';
423
513
  const { action: categoryManagerAction, destroy } = createToggleAction(
424
514
  {
425
- name: id,
515
+ name: categoryManagerWindowId,
426
516
  icon: '$vcsComponents',
427
517
  title: 'categoryManager.tooltip',
428
518
  },
429
519
  {
430
- id,
520
+ id: categoryManagerWindowId,
431
521
  state: {
432
522
  headerTitle: 'categoryManager.title',
433
523
  headerIcon: '$vcsComponents',
@@ -453,9 +543,9 @@
453
543
  * @param {import("../manager/collectionManager/collectionComponentClass.js").default} collectionComponent
454
544
  */
455
545
  function handleAdded(collectionComponent) {
456
- if (!app.navbarManager.has(id)) {
546
+ if (!app.navbarManager.has(categoryManagerWindowId)) {
457
547
  app.navbarManager.add(
458
- { id, action: categoryManagerAction },
548
+ { id: categoryManagerWindowId, action: categoryManagerAction },
459
549
  vcsAppSymbol,
460
550
  ButtonLocation.CONTENT,
461
551
  );
@@ -464,7 +554,7 @@
464
554
  collectionComponent.id,
465
555
  collectionComponent.collection.added.addEventListener((item) => {
466
556
  if (
467
- !app.windowManager.has(id) &&
557
+ !app.windowManager.has(categoryManagerWindowId) &&
468
558
  item[moduleIdSymbol] === app.dynamicModuleId
469
559
  ) {
470
560
  categoryManagerAction.hasUpdate = true;
@@ -483,8 +573,8 @@
483
573
  collectionListeners.delete(collectionComponent.id);
484
574
 
485
575
  if (!app.categoryManager.componentIds.length) {
486
- app.windowManager.remove(id);
487
- app.navbarManager.remove(id);
576
+ app.windowManager.remove(categoryManagerWindowId);
577
+ app.navbarManager.remove(categoryManagerWindowId);
488
578
  categoryManagerAction.hasUpdate = false;
489
579
  }
490
580
  }
@@ -501,13 +591,15 @@
501
591
 
502
592
  const windowListener = app.windowManager.added.addEventListener(
503
593
  (windowComponent) => {
504
- if (windowComponent.id === id) {
594
+ if (windowComponent.id === categoryManagerWindowId) {
505
595
  categoryManagerAction.hasUpdate = false;
506
596
  }
507
597
  },
508
598
  );
509
599
 
510
600
  return () => {
601
+ app.windowManager.remove(categoryManagerWindowId);
602
+ app.navbarManager.remove(categoryManagerWindowId);
511
603
  destroy();
512
604
  addedListener();
513
605
  removedListener();
@@ -525,25 +617,19 @@
525
617
  * @returns {function():void} - call to stop syncing
526
618
  */
527
619
  export function setupUiConfigTheming(app) {
620
+ function updateTheme(item) {
621
+ if (item.name === 'primaryColor' || item.name === 'vuetifyTheme') {
622
+ const mergedThemes = createVcsThemes(
623
+ app.uiConfig.getByKey('vuetifyTheme')?.value,
624
+ app.uiConfig.getByKey('primaryColor')?.value,
625
+ );
626
+ setTheme(app.vuetify, mergedThemes);
627
+ app.themeChanged.raiseEvent();
628
+ }
629
+ }
528
630
  const listeners = [
529
- app.uiConfig.added.addEventListener((item) => {
530
- if (item.name === 'primaryColor') {
531
- app.vuetify.theme.themes.value.dark.colors.primary =
532
- item.value?.dark || item.value;
533
- app.vuetify.theme.themes.value.light.colors.primary =
534
- item.value?.light || item.value;
535
- app.themeChanged.raiseEvent();
536
- }
537
- }),
538
- app.uiConfig.removed.addEventListener((item) => {
539
- if (item.name === 'primaryColor') {
540
- app.vuetify.theme.themes.value.dark.colors.primary =
541
- defaultPrimaryColor.dark;
542
- app.vuetify.theme.themes.value.light.colors.primary =
543
- defaultPrimaryColor.light;
544
- app.themeChanged.raiseEvent();
545
- }
546
- }),
631
+ app.uiConfig.added.addEventListener(updateTheme),
632
+ app.uiConfig.removed.addEventListener(updateTheme),
547
633
  ];
548
634
  const stopWatching = watch(
549
635
  () => app.vuetify.theme.current.value.dark,
@@ -641,6 +727,7 @@
641
727
  VcsNavbar,
642
728
  VContainer,
643
729
  VFooter,
730
+ VSpacer,
644
731
  },
645
732
  props: {
646
733
  appId: {
@@ -652,14 +739,30 @@
652
739
  /** @type {import("../vcsUiApp.js").default} */
653
740
  const app = getVcsAppById(props.appId);
654
741
  provide('vcsApp', app);
655
- const mapNavbarListener = setupMapNavbar(app);
656
- const legendDestroy = setupLegendWindow(app);
657
- const settingsDestroy = setupSettingsWindow(app);
742
+ const mapNavbarListener = setupUIConfigDependency(
743
+ app,
744
+ setupMapNavbar,
745
+ 'hideMapButtons',
746
+ );
747
+ const legendDestroy = setupUIConfigDependency(
748
+ app,
749
+ setupLegendWindow,
750
+ 'hideLegend',
751
+ );
752
+ const settingsDestroy = setupUIConfigDependency(
753
+ app,
754
+ setupSettingsWindow,
755
+ 'hideSettings',
756
+ );
658
757
  const stopCustomScreen = setupCustomScreen(app);
659
758
  const splashScreenRef = ref(true);
660
759
  const stopSplashScreen = setupSplashScreen(app, splashScreenRef);
661
760
  setupHelpButton(app);
662
- const destroyComponentsWindow = setupCategoryManagerWindow(app);
761
+ const destroyMyWorkspace = setupUIConfigDependency(
762
+ app,
763
+ setupCategoryManagerWindow,
764
+ 'hideMyWorkspace',
765
+ );
663
766
  const destroyThemingListener = setupUiConfigTheming(app);
664
767
  const destroyDisplayQualityListener = setupUiConfigDisplayQuality(app);
665
768
  const { attributionEntries, attributionAction, destroyAttributions } =
@@ -679,45 +782,53 @@
679
782
  settingsDestroy();
680
783
  stopCustomScreen();
681
784
  stopSplashScreen();
682
- destroyComponentsWindow();
785
+ destroyMyWorkspace();
683
786
  destroyThemingListener();
684
- destroyAttributions();
685
787
  destroyDisplayQualityListener();
788
+ destroyAttributions();
686
789
  });
687
790
 
688
791
  const { smAndUp } = useDisplay();
792
+ const fontSize = useFontSize();
793
+ const footerHeight = computed(() => {
794
+ return Math.ceil(fontSize.value * 1.65);
795
+ });
689
796
 
690
797
  return {
691
- smAndUp,
798
+ config: app.uiConfig.config,
799
+ showFooter: computed(() => {
800
+ return !app.uiConfig.config.hideFooter && smAndUp.value;
801
+ }),
802
+ footerHeight,
692
803
  mobileLogo: computed(
693
804
  () =>
694
- app.uiConfig.config.value.mobileLogo ??
695
- app.uiConfig.config.value.logo ??
805
+ app.uiConfig.config.mobileLogo ??
806
+ app.uiConfig.config.logo ??
696
807
  VcsDefaultLogoMobile,
697
808
  ),
698
809
  imprint: computed(() => {
699
- if (app.uiConfig.config.value.imprint) {
810
+ if (app.uiConfig.config.imprint) {
700
811
  return {
701
812
  title: 'footer.imprint.title',
702
813
  tooltip: 'footer.imprint.tooltip',
703
- ...app.uiConfig.config.value.imprint,
814
+ ...app.uiConfig.config.imprint,
704
815
  };
705
816
  }
706
817
  return undefined;
707
818
  }),
708
819
  dataProtection: computed(() => {
709
- if (app.uiConfig.config.value.dataProtection) {
820
+ if (app.uiConfig.config.dataProtection) {
710
821
  return {
711
822
  title: 'footer.dataProtection.title',
712
823
  tooltip: 'footer.dataProtection.tooltip',
713
- ...app.uiConfig.config.value.dataProtection,
824
+ ...app.uiConfig.config.dataProtection,
714
825
  };
715
826
  }
716
827
  return undefined;
717
828
  }),
718
829
  splashScreenRef,
719
830
  splashScreen: computed(() => {
720
- if (app.uiConfig.config.value.splashScreen) {
831
+ if (app.uiConfig.config.splashScreen) {
721
832
  return {
722
833
  title: 'components.splashScreen.name',
723
834
  tooltip: 'components.splashScreen.tooltip',
@@ -725,7 +836,7 @@
725
836
  width: '800px',
726
837
  height: '400px',
727
838
  },
728
- ...app.uiConfig.config.value.splashScreen,
839
+ ...app.uiConfig.config.splashScreen,
729
840
  };
730
841
  }
731
842
  return undefined;