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

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 (215) hide show
  1. package/build/build.js +132 -14
  2. package/build/buildHelpers.js +196 -92
  3. package/build/bundle.js +56 -0
  4. package/build/commonViteConfig.js +2 -2
  5. package/config/base.config.json +29 -2
  6. package/config/dev.config.json +29 -1
  7. package/config/www.config.json +81 -39
  8. package/dist/assets/@mdi/font/LICENSE +20 -0
  9. package/dist/assets/@mdi/font/css/materialdesignicons.css.map +16 -0
  10. package/dist/assets/@mdi/font/css/materialdesignicons.min.e3f476.css +3 -0
  11. package/dist/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
  12. package/dist/assets/cesium/Workers/{AxisAlignedBoundingBox-85d9e53a.js → AxisAlignedBoundingBox-4140c51f.js} +1 -1
  13. package/dist/assets/cesium/Workers/{BoundingRectangle-1ee7eb47.js → BoundingRectangle-c714b156.js} +1 -1
  14. package/dist/assets/cesium/Workers/{BoxGeometry-3b2be784.js → BoxGeometry-6f3da43d.js} +1 -1
  15. package/dist/assets/cesium/Workers/{Color-f107c84d.js → Color-8a565ff2.js} +5 -5
  16. package/dist/assets/cesium/Workers/{CoplanarPolygonGeometryLibrary-78d71993.js → CoplanarPolygonGeometryLibrary-4b4d4096.js} +1 -1
  17. package/dist/assets/cesium/Workers/{CorridorGeometryLibrary-50d99b33.js → CorridorGeometryLibrary-7b94502b.js} +1 -1
  18. package/dist/assets/cesium/Workers/{CylinderGeometry-51b0d9bf.js → CylinderGeometry-ca070b87.js} +1 -1
  19. package/dist/assets/cesium/Workers/{EllipseGeometry-bcfb5d87.js → EllipseGeometry-122e51fa.js} +1 -1
  20. package/dist/assets/cesium/Workers/{EllipseGeometryLibrary-e94f8472.js → EllipseGeometryLibrary-4d326efc.js} +1 -1
  21. package/dist/assets/cesium/Workers/{EllipseOutlineGeometry-28e3a1bb.js → EllipseOutlineGeometry-16cc2bd7.js} +1 -1
  22. package/dist/assets/cesium/Workers/{EllipsoidGeometry-b222fa63.js → EllipsoidGeometry-cb148ca2.js} +1 -1
  23. package/dist/assets/cesium/Workers/{EllipsoidOutlineGeometry-38a3fb5b.js → EllipsoidOutlineGeometry-0fa10c79.js} +1 -1
  24. package/dist/assets/cesium/Workers/{EllipsoidTangentPlane-8c89f28c.js → EllipsoidTangentPlane-6dd1b7af.js} +1 -1
  25. package/dist/assets/cesium/Workers/{FrustumGeometry-bdd3a04d.js → FrustumGeometry-ee73037c.js} +1 -1
  26. package/dist/assets/cesium/Workers/{GeometryAttribute-153115c5.js → GeometryAttribute-ff5b4fb1.js} +1 -1
  27. package/dist/assets/cesium/Workers/{GeometryPipeline-acb2399c.js → GeometryPipeline-1f8fbf05.js} +1 -1
  28. package/dist/assets/cesium/Workers/{IntersectionTests-271e513e.js → IntersectionTests-70d39ba9.js} +1 -1
  29. package/dist/assets/cesium/Workers/{OrientedBoundingBox-5e04e31f.js → OrientedBoundingBox-159cf1d6.js} +1 -1
  30. package/dist/assets/cesium/Workers/{PolygonGeometryLibrary-6762b65b.js → PolygonGeometryLibrary-076a5d25.js} +1 -1
  31. package/dist/assets/cesium/Workers/{PolygonPipeline-7dc7a431.js → PolygonPipeline-b9f2810a.js} +1 -1
  32. package/dist/assets/cesium/Workers/{PolylinePipeline-15fde655.js → PolylinePipeline-639192e0.js} +1 -1
  33. package/dist/assets/cesium/Workers/{PolylineVolumeGeometryLibrary-ba7dfed5.js → PolylineVolumeGeometryLibrary-b73549fb.js} +1 -1
  34. package/dist/assets/cesium/Workers/{PrimitivePipeline-68f0b9a2.js → PrimitivePipeline-10ede1b6.js} +1 -1
  35. package/dist/assets/cesium/Workers/{RectangleGeometryLibrary-8eaf23da.js → RectangleGeometryLibrary-c35a7356.js} +1 -1
  36. package/dist/assets/cesium/Workers/{TerrainEncoding-eb8a645a.js → TerrainEncoding-668d242f.js} +1 -1
  37. package/dist/assets/cesium/Workers/{Transforms-f6451f99.js → Transforms-a2a85221.js} +14 -0
  38. package/dist/assets/cesium/Workers/{WallGeometryLibrary-feef3109.js → WallGeometryLibrary-1938bf0d.js} +1 -1
  39. package/dist/assets/cesium/Workers/cesiumWorkerBootstrapper.js +1 -1
  40. package/dist/assets/cesium/Workers/combineGeometry.js +1 -1
  41. package/dist/assets/cesium/Workers/createBoxGeometry.js +1 -1
  42. package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +1 -1
  43. package/dist/assets/cesium/Workers/createCircleGeometry.js +1 -1
  44. package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +1 -1
  45. package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +1 -1
  46. package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +1 -1
  47. package/dist/assets/cesium/Workers/createCorridorGeometry.js +1 -1
  48. package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +1 -1
  49. package/dist/assets/cesium/Workers/createCylinderGeometry.js +1 -1
  50. package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +1 -1
  51. package/dist/assets/cesium/Workers/createEllipseGeometry.js +1 -1
  52. package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +1 -1
  53. package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +1 -1
  54. package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +1 -1
  55. package/dist/assets/cesium/Workers/createFrustumGeometry.js +1 -1
  56. package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +1 -1
  57. package/dist/assets/cesium/Workers/createGeometry.js +1 -1
  58. package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +1 -1
  59. package/dist/assets/cesium/Workers/createPlaneGeometry.js +1 -1
  60. package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +1 -1
  61. package/dist/assets/cesium/Workers/createPolygonGeometry.js +1 -1
  62. package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +1 -1
  63. package/dist/assets/cesium/Workers/createPolylineGeometry.js +1 -1
  64. package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +1 -1
  65. package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +1 -1
  66. package/dist/assets/cesium/Workers/createRectangleGeometry.js +1 -1
  67. package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +1 -1
  68. package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +1 -1
  69. package/dist/assets/cesium/Workers/createSphereGeometry.js +1 -1
  70. package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +1 -1
  71. package/dist/assets/cesium/Workers/createVectorTileGeometries.js +1 -1
  72. package/dist/assets/cesium/Workers/createVectorTilePolygons.js +1 -1
  73. package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
  74. package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +1 -1
  75. package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +1 -1
  76. package/dist/assets/cesium/Workers/createWallGeometry.js +1 -1
  77. package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +1 -1
  78. package/dist/assets/cesium/Workers/package.js +1 -1
  79. package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -1
  80. package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +1 -1
  81. package/dist/assets/{cesium.253914.js → cesium.1457fa.js} +58656 -33170
  82. package/dist/assets/cesium.js +1 -1
  83. package/dist/assets/core.47836f.js +19060 -0
  84. package/dist/assets/core.js +1 -1
  85. package/dist/assets/index-bb372634.js +1 -0
  86. package/dist/assets/{ol.1c946a.js → ol.9e4d23.js} +27344 -12118
  87. package/dist/assets/ol.js +1 -1
  88. package/dist/assets/ui.6ed89d.css +5 -0
  89. package/dist/assets/ui.6ed89d.js +13461 -0
  90. package/dist/assets/ui.js +1 -1
  91. package/dist/assets/{vue.c1ece7.js → vue.7327e4.js} +834 -598
  92. package/dist/assets/vue.js +2 -2
  93. package/dist/assets/{vuetify.6efa21.css → vuetify.d2131d.css} +1 -1
  94. package/dist/assets/{vuetify.6efa21.js → vuetify.d2131d.js} +343 -103
  95. package/dist/assets/vuetify.js +2 -2
  96. package/dist/index.html +7 -6
  97. package/index.html +14 -6
  98. package/index.js +17 -2
  99. package/lib/olLib.js +19 -16
  100. package/package.json +15 -14
  101. package/plugins/@vcmap/create-link/fallbackCreateLink.vue +0 -2
  102. package/plugins/@vcmap/simple-graph/index.js +1 -1
  103. package/plugins/@vcmap-show-case/README.md +2 -1
  104. package/plugins/@vcmap-show-case/buttons-example/ButtonsExample.vue +55 -79
  105. package/plugins/@vcmap-show-case/category-tester/CategoriesExample.vue +135 -0
  106. package/plugins/@vcmap-show-case/category-tester/CollectionComponentOptions.vue +209 -0
  107. package/plugins/@vcmap-show-case/category-tester/index.js +19 -1
  108. package/plugins/@vcmap-show-case/collection-manager-example/CollectionManagerExample.vue +182 -0
  109. package/plugins/@vcmap-show-case/collection-manager-example/README.md +3 -0
  110. package/plugins/@vcmap-show-case/collection-manager-example/index.js +74 -0
  111. package/plugins/@vcmap-show-case/collection-manager-example/package.json +5 -0
  112. package/plugins/@vcmap-show-case/form-inputs-example/FormInputsExample.vue +20 -3
  113. package/plugins/@vcmap-show-case/switch-map-callback-example/README.md +21 -0
  114. package/plugins/@vcmap-show-case/switch-map-callback-example/SwitchMapCallback.js +47 -0
  115. package/plugins/@vcmap-show-case/switch-map-callback-example/config.json +3 -0
  116. package/plugins/@vcmap-show-case/switch-map-callback-example/index.js +34 -0
  117. package/plugins/@vcmap-show-case/switch-map-callback-example/package.json +5 -0
  118. package/plugins/@vcmap-show-case/table-example/DataTableExample.vue +0 -1
  119. package/plugins/package.json +3 -1
  120. package/public/assets/@mdi/font/LICENSE +20 -0
  121. package/public/assets/@mdi/font/css/materialdesignicons.css.map +16 -0
  122. package/public/assets/@mdi/font/css/materialdesignicons.min.css +3 -0
  123. package/public/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
  124. package/public/assets/favicon-128.png +0 -0
  125. package/public/assets/favicon-180.png +0 -0
  126. package/public/assets/favicon-192.png +0 -0
  127. package/public/assets/favicon-32.png +0 -0
  128. package/public/assets/logo-mobile.svg +9 -0
  129. package/public/assets/logo.svg +26 -0
  130. package/src/application/VcsApp.vue +34 -5
  131. package/src/application/VcsAttributions.vue +20 -5
  132. package/src/application/VcsAttributionsFooter.vue +0 -1
  133. package/src/application/VcsNavbar.vue +18 -13
  134. package/src/callback/activateLayersCallback.js +54 -0
  135. package/src/callback/applyLayerStyleCallback.js +63 -0
  136. package/src/callback/deactivateLayersCallback.js +54 -0
  137. package/src/callback/goToViewpointCallback.js +54 -0
  138. package/src/callback/vcsCallback.js +66 -0
  139. package/src/components/buttons/VcsActionButtonList.vue +28 -10
  140. package/src/components/buttons/VcsButton.vue +38 -100
  141. package/src/components/buttons/VcsFormButton.vue +6 -4
  142. package/src/components/buttons/VcsToolButton.vue +161 -0
  143. package/src/components/form-inputs-controls/VcsDatePicker.vue +19 -5
  144. package/src/components/form-inputs-controls/VcsFormSection.vue +0 -1
  145. package/src/components/form-inputs-controls/VcsSelect.vue +16 -2
  146. package/src/components/form-inputs-controls/VcsSlider.vue +72 -0
  147. package/src/components/form-inputs-controls/VcsTextField.vue +24 -13
  148. package/src/components/form-inputs-controls/VcsWizard.vue +13 -14
  149. package/src/components/form-inputs-controls/VcsWizardStep.vue +0 -1
  150. package/src/components/lists/VcsList.vue +3 -2
  151. package/src/components/lists/VcsTreeviewLeaf.vue +0 -1
  152. package/src/components/tables/VcsDataTable.vue +2 -4
  153. package/src/contentTree/LayerTree.vue +15 -9
  154. package/src/contentTree/contentTreeCollection.js +1 -1
  155. package/src/contentTree/contentTreeItem.js +22 -3
  156. package/src/contentTree/groupContentTreeItem.js +1 -0
  157. package/src/contentTree/layerContentTreeItem.js +4 -14
  158. package/src/contentTree/layerGroupContentTreeItem.js +4 -14
  159. package/src/contentTree/obliqueCollectionContentTreeItem.js +4 -0
  160. package/src/contentTree/viewpointContentTreeItem.js +1 -0
  161. package/src/featureInfo/BalloonComponent.vue +0 -1
  162. package/src/featureInfo/abstractFeatureInfoView.js +16 -1
  163. package/src/featureInfo/featureInfo.js +45 -56
  164. package/src/i18n/de.js +5 -2
  165. package/src/i18n/en.js +5 -2
  166. package/src/i18n/i18nCollection.js +1 -2
  167. package/src/init.js +1 -4
  168. package/src/legend/vcsLegend.vue +1 -1
  169. package/src/manager/buttonManager.js +15 -0
  170. package/src/manager/{categoryManager/CategoryComponent.vue → collectionManager/CollectionComponent.vue} +57 -66
  171. package/src/manager/collectionManager/CollectionComponentList.vue +62 -0
  172. package/src/manager/collectionManager/CollectionComponentProvider.vue +38 -0
  173. package/src/manager/collectionManager/CollectionManager.vue +43 -0
  174. package/src/manager/collectionManager/categoryManager.js +83 -0
  175. package/src/manager/collectionManager/collectionComponent.js +453 -0
  176. package/src/manager/collectionManager/collectionManager.js +432 -0
  177. package/src/manager/navbarManager.js +5 -4
  178. package/src/manager/toolbox/GroupToolboxComponent.vue +5 -7
  179. package/src/manager/toolbox/SelectToolboxComponent.vue +6 -9
  180. package/src/manager/toolbox/ToolboxManager.vue +4 -5
  181. package/src/manager/window/WindowComponentHeader.vue +0 -4
  182. package/src/navigation/mapNavigation.vue +34 -8
  183. package/src/navigation/overviewMap.js +7 -1
  184. package/src/notifier/notifierComponent.vue +0 -1
  185. package/src/pluginHelper.js +5 -0
  186. package/src/search/resultItem.vue +0 -1
  187. package/src/search/searchComponent.vue +7 -9
  188. package/src/styles/_theming.scss +2 -2
  189. package/src/styles/_typography.scss +2 -2
  190. package/src/styles/main.scss +8 -0
  191. package/src/styles/vcsFont.scss +1 -22
  192. package/src/vcsUiApp.js +76 -12
  193. package/src/vuePlugins/i18n.js +18 -19
  194. package/src/vuePlugins/vuetify.js +0 -1
  195. package/dist/assets/core.3a8205.js +0 -18426
  196. package/dist/assets/index.91ae2d55.js +0 -1
  197. package/dist/assets/ui.0025be.css +0 -5
  198. package/dist/assets/ui.0025be.js +0 -18534
  199. package/plugins/@vcmap-show-case/category-tester/Categories.vue +0 -291
  200. package/plugins/@vcmap-show-case/category-tester/Category.vue +0 -164
  201. package/src/manager/categoryManager/CategoryComponentList.vue +0 -82
  202. package/src/manager/categoryManager/CategoryManager.vue +0 -47
  203. package/src/manager/categoryManager/categoryManager.js +0 -633
  204. package/start.js +0 -9
  205. /package/{src/assets/favicon-128.png → dist/assets/favicon-128.4c4ce5.png} +0 -0
  206. /package/{src/assets/favicon-180.png → dist/assets/favicon-180.5b99c0.png} +0 -0
  207. /package/{src/assets/favicon-192.png → dist/assets/favicon-192.0e205e.png} +0 -0
  208. /package/{src/assets/favicon-32.png → dist/assets/favicon-32.6b9add.png} +0 -0
  209. /package/dist/assets/{favicon.decf54cc.svg → favicon.d5ec97.svg} +0 -0
  210. /package/dist/assets/font/{TitilliumWeb-Regular.woff2 → TitilliumWeb-Regular.9ca076.woff2} +0 -0
  211. /package/{src/assets/logo-mobile.svg → dist/assets/logo-mobile.2d10a6.svg} +0 -0
  212. /package/{src/assets/logo.svg → dist/assets/logo.27089a.svg} +0 -0
  213. /package/{src → public}/assets/favicon.svg +0 -0
  214. /package/{src → public}/assets/font/OFL.txt +0 -0
  215. /package/{src → public}/assets/font/TitilliumWeb-Regular.woff2 +0 -0
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,9 @@
1
+ <svg id="VCS_Logo_Color_Mobile" data-name="VCS Logo Color Mobile" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 68 39">
2
+ <path d="M65.15,6.98l-12.49,12.52L36.06,2.85c-.55-.55-1.29-.86-2.06-.85h29.09c.77,0,1.51,.31,2.06,.85,1.12,1.12,1.14,2.95,.03,4.09l-.03,.03Zm-12.49,12.52l-16.6,16.65c-1.14,1.14-2.97,1.14-4.11,0-.55-.54-.85-1.29-.85-2.06V4.92c0-.78,.31-1.52,.85-2.06,1.14-1.14,2.97-1.14,4.11,0l16.6,16.65ZM31.09,4.92v29.16c0,.78,.31,1.52,.85,2.06L2.85,6.98c-1.12-1.12-1.14-2.95-.03-4.09l.03-.03c.55-.55,1.29-.86,2.06-.85h29.09c-.77,0-1.51,.31-2.06,.85-.55,.54-.86,1.29-.86,2.06Zm34.06,31.23c-.55,.55-1.29,.86-2.06,.85h-29.09c.77,0,1.51-.31,2.06-.85l16.6-16.64,12.49,12.52c1.12,1.12,1.14,2.95,.03,4.09l-.03,.03Z" style="fill: #fff; isolation: isolate; opacity: .9; stroke: #fff; stroke-miterlimit: 10; stroke-width: 4px;"/>
3
+ <g>
4
+ <path id="Path_274" d="M64.99,7.19l-12.43,12.31L36.05,3.14c-.54-.54-1.28-.84-2.05-.84h28.94c.77,0,1.5,.3,2.05,.84,1.12,1.1,1.13,2.9,.03,4.02l-.03,.03Z" style="fill: #86b110; isolation: isolate; opacity: .9;"/>
5
+ <path id="Path_273" d="M52.56,19.5l-16.52,16.36c-1.13,1.12-2.96,1.12-4.09,0-.54-.54-.85-1.27-.85-2.03V5.17c0-.76,.31-1.49,.85-2.03,1.13-1.12,2.96-1.12,4.09,0l16.52,16.36Z" style="fill: #005434; isolation: isolate; opacity: .9;"/>
6
+ <path id="Path_272" d="M31.1,5.17v28.66c0,.76,.31,1.49,.85,2.03L3.01,7.19c-1.12-1.1-1.13-2.9-.03-4.02l.03-.03c.55-.54,1.28-.84,2.05-.84h28.94c-.77,0-1.5,.3-2.05,.84-.54,.53-.85,1.26-.85,2.03Z" style="fill: #409d76; isolation: isolate; opacity: .9;"/>
7
+ <path id="Path_271" d="M64.99,35.86c-.54,.54-1.28,.84-2.05,.84h-28.94c.77,0,1.5-.3,2.05-.84l16.52-16.36,12.43,12.31c1.12,1.1,1.13,2.9,.03,4.02l-.03,.03Z" style="fill: #00a0ba; isolation: isolate; opacity: .9;"/>
8
+ </g>
9
+ </svg>
@@ -0,0 +1,26 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="151" height="35.585" viewBox="0 0 151 35.585">
2
+ <g id="VCS_Logo_Color" transform="translate(0)">
3
+ <path id="Path_271" d="M245.674,76.716a3,3,0,0,1-2.116.868H213.62a3,3,0,0,0,2.116-.868l17.085-16.924,12.853,12.731A2.943,2.943,0,0,1,245.674,76.716Z" transform="translate(-180.688 -42)" fill="#00a0ba"/>
4
+ <path id="Path_272" d="M199.938,38.964V68.618a2.944,2.944,0,0,0,.878,2.1L170.878,41.061a2.943,2.943,0,0,1,0-4.193A3,3,0,0,1,173,36h29.938a3,3,0,0,0-2.117.868A2.943,2.943,0,0,0,199.938,38.964Z" transform="translate(-170 -36)" fill="#409d76"/>
5
+ <path id="Path_273" d="M231.848,53.792,214.764,70.717a3.014,3.014,0,0,1-4.233,0,2.948,2.948,0,0,1-.879-2.1V38.964a2.945,2.945,0,0,1,.879-2.1,3.014,3.014,0,0,1,4.233,0Z" transform="translate(-179.715 -36)" fill="#005434"/>
6
+ <path id="Path_274" d="M245.674,41.061,232.821,53.792,215.736,36.868A3,3,0,0,0,213.62,36h29.938a3.005,3.005,0,0,1,2.116.868A2.943,2.943,0,0,1,245.674,41.061Z" transform="translate(-180.688 -36)" fill="#86b110"/>
7
+ <path id="Path_275" d="M276.469,43.932c.18,0,.23.049.2.259l-1.849,6.874c-.442,1.7-.573,1.914-2.406,1.914-1.7,0-1.85-.2-2.325-1.914l-1.915-6.874c-.033-.211.032-.259.212-.259H270c.131,0,.147.049.214.259l1.7,6.453c.164.568.213.648.492.648.344,0,.409-.081.556-.648l1.653-6.453c.049-.211.082-.259.213-.259Z" transform="translate(-194.05 -38)" fill="#409d76"/>
8
+ <path id="Path_276" d="M283.025,42.691a.216.216,0,0,1,.245.243v8.48a.216.216,0,0,1-.245.243h-1.49a.216.216,0,0,1-.245-.243v-8.48a.216.216,0,0,1,.245-.243Zm.442-2.561a1.036,1.036,0,0,1-1.179,1.119,1.121,1.121,0,1,1,0-2.237A1.036,1.036,0,0,1,283.467,40.13Z" transform="translate(-197.219 -36.76)" fill="#409d76"/>
9
+ <path id="Path_277" d="M291.515,44c.164.049.262.114.262.292v.989c0,.179-.1.259-.278.244h-1.49c-.982,0-1.277.162-1.277.875v6.226a.216.216,0,0,1-.245.243H287a.216.216,0,0,1-.245-.243V45.9c0-1.929,1.555-2.075,2.766-2.075A10.535,10.535,0,0,1,291.515,44Z" transform="translate(-198.604 -37.973)" fill="#409d76"/>
10
+ <path id="Path_278" d="M295.885,40.611c.18-.049.278.049.278.227v2.27h1.62c.164,0,.262.082.262.243v1.022a.232.232,0,0,1-.262.259h-1.62v4.945c0,.713.213.859,1.015.859h.72c.2,0,.278.064.278.227v1.07a.262.262,0,0,1-.245.292,7.384,7.384,0,0,1-1.162.114c-1.277,0-2.6-.032-2.6-1.978V41.243c0-.162.082-.227.229-.259Z" transform="translate(-200.421 -37.159)" fill="#409d76"/>
11
+ <path id="Path_279" d="M308.785,43.932a.216.216,0,0,1,.245.243v8.269c0,.211-.082.227-.245.259a19.837,19.837,0,0,1-3.65.276c-3.028,0-3.879-.47-3.879-3.859V44.175c0-.162.115-.243.278-.243h1.474c.164,0,.23.082.23.243v4.589c0,2.4.376,2.513,1.915,2.513h1.882v-7.1a.216.216,0,0,1,.245-.243Z" transform="translate(-202.158 -38)" fill="#409d76"/>
12
+ <path id="Path_280" d="M316.88,49.077c-.867,0-1.261.276-1.261,1.087,0,.924.442,1.151,1.653,1.151a8.923,8.923,0,0,0,1.866-.178V49.077Zm4.239-2.593v5.642a.411.411,0,0,1-.328.47,15.409,15.409,0,0,1-3.683.357c-2.291,0-3.454-.357-3.454-2.707,0-2.059,1.1-2.578,3.11-2.578h2.374v-.844c0-.908-.541-1.3-1.851-1.3H314.6c-.2,0-.246-.049-.246-.243v-.989c0-.194.066-.227.229-.259a14.739,14.739,0,0,1,2.7-.211C320.17,43.824,321.12,44.732,321.12,46.483Z" transform="translate(-205.195 -37.973)" fill="#409d76"/>
13
+ <path id="Rectangle_510" d="M.325,0h1.33a.325.325,0,0,1,.325.325V12.078a.325.325,0,0,1-.325.325H.326A.326.326,0,0,1,0,12.077V.325A.325.325,0,0,1,.325,0Z" transform="translate(117.969 2.495)" fill="#409d76"/>
14
+ <path id="Path_281" d="M342.55,44a.262.262,0,0,1,.245.292v.989c0,.162-.082.243-.262.243h-2.57c-1.752,0-1.98.568-1.98,2.854s.229,2.87,1.98,2.87h2.57c.18,0,.262.081.262.243v.989a.263.263,0,0,1-.245.292,17.086,17.086,0,0,1-2.587.179c-3.323,0-3.977-.909-3.977-4.572s.655-4.556,3.977-4.556A16.987,16.987,0,0,1,342.55,44Z" transform="translate(-210.667 -37.973)" fill="#409d76"/>
15
+ <path id="Path_282" d="M348.821,42.691a.216.216,0,0,1,.245.243v8.48a.216.216,0,0,1-.245.243h-1.49a.216.216,0,0,1-.245-.243v-8.48a.216.216,0,0,1,.245-.243Zm.442-2.561a1.036,1.036,0,0,1-1.179,1.119,1.121,1.121,0,1,1,0-2.237A1.036,1.036,0,0,1,349.263,40.13Z" transform="translate(-213.338 -36.76)" fill="#409d76"/>
16
+ <path id="Path_283" d="M354.223,40.611c.18-.049.279.049.279.227v2.27h1.62a.228.228,0,0,1,.261.243v1.022a.232.232,0,0,1-.261.259H354.5v4.945c0,.713.212.859,1.015.859h.72c.2,0,.278.064.278.227v1.07a.262.262,0,0,1-.245.292,7.384,7.384,0,0,1-1.162.114c-1.277,0-2.6-.032-2.6-1.978V41.243c0-.162.082-.227.23-.259Z" transform="translate(-214.714 -37.159)" fill="#409d76"/>
17
+ <path id="Path_284" d="M367.2,43.932a.217.217,0,0,1,.246.243v8.2c-.017,2.821-.573,3.842-3.9,3.842a17.949,17.949,0,0,1-2.766-.179.236.236,0,0,1-.213-.259v-.956c0-.178.066-.243.229-.243h2.636c1.637,0,2.029-.389,2.029-1.67v-.082a12.48,12.48,0,0,1-2.1.147c-3.028,0-3.8-1.022-3.8-4.3V44.175a.216.216,0,0,1,.245-.243h1.49a.216.216,0,0,1,.245.243v4.232c0,2.318.3,2.854,2.128,2.854a13.514,13.514,0,0,0,1.785-.1V44.175a.216.216,0,0,1,.245-.243Z" transform="translate(-216.445 -38)" fill="#409d76"/>
18
+ <path id="Path_285" d="M275.307,63.735c.164.032.245.114.245.259v.956c0,.162-.082.243-.261.243h-3.012c-.687,0-1.08.211-1.08.713V66.1c0,.389.212.7.9.956l2.145.778a2.183,2.183,0,0,1,1.669,2.367v.211c0,1.849-1.243,2.27-3.388,2.27-1.423,0-2.652-.1-3.191-.146-.2-.016-.245-.1-.245-.243V71.29c0-.179.066-.259.262-.259h3.175c1.1,0,1.441-.129,1.441-.7v-.162c0-.389-.2-.648-.934-.924l-2.16-.81a2.324,2.324,0,0,1-1.637-2.384v-.324c0-1.767,1.473-2.173,3.519-2.173A16.941,16.941,0,0,1,275.307,63.735Z" transform="translate(-194.276 -42.949)" fill="#005434"/>
19
+ <path id="Path_286" d="M287.859,63.665a.216.216,0,0,1,.245.243v8.2c-.017,2.821-.573,3.842-3.9,3.842a17.956,17.956,0,0,1-2.766-.179.236.236,0,0,1-.213-.259V74.56c0-.178.066-.243.229-.243h2.636c1.637,0,2.03-.389,2.03-1.67v-.081a12.57,12.57,0,0,1-2.1.146c-3.028,0-3.8-1.022-3.8-4.3V63.908a.216.216,0,0,1,.246-.243h1.49a.216.216,0,0,1,.245.243V68.14c0,2.318.294,2.854,2.128,2.854a13.509,13.509,0,0,0,1.784-.1V63.908a.216.216,0,0,1,.246-.243Z" transform="translate(-197.007 -42.977)" fill="#005434"/>
20
+ <path id="Path_287" d="M299.154,63.735c.164.032.246.114.246.259v.956c0,.162-.082.243-.262.243h-3.012c-.687,0-1.08.211-1.08.713V66.1c0,.389.213.7.9.956l2.144.778a2.184,2.184,0,0,1,1.67,2.367v.211c0,1.849-1.244,2.27-3.388,2.27-1.424,0-2.652-.1-3.192-.146-.2-.016-.245-.1-.245-.243V71.29c0-.179.065-.259.261-.259h3.176c1.1,0,1.44-.129,1.44-.7v-.162c0-.389-.2-.648-.932-.924l-2.161-.81a2.325,2.325,0,0,1-1.637-2.384v-.324c0-1.767,1.473-2.173,3.519-2.173A16.947,16.947,0,0,1,299.154,63.735Z" transform="translate(-200.119 -42.949)" fill="#005434"/>
21
+ <path id="Path_288" d="M305.925,60.343c.18-.049.279.049.279.227v2.27h1.621a.229.229,0,0,1,.262.243V64.1a.233.233,0,0,1-.262.259H306.2v4.945c0,.713.213.859,1.015.859h.72c.2,0,.278.064.278.227v1.07a.263.263,0,0,1-.245.292,7.466,7.466,0,0,1-1.163.113c-1.277,0-2.6-.032-2.6-1.978V60.975c0-.162.082-.227.229-.259Z" transform="translate(-202.881 -42.136)" fill="#005434"/>
22
+ <path id="Path_289" d="M312.99,67.463h3.748c-.016-1.751-.376-2.2-1.833-2.2C313.383,65.259,313.006,65.713,312.99,67.463Zm5.746.487v.487c0,.307-.1.437-.557.437H312.99c.049,1.718.442,2.107,2.029,2.107h2.8a.216.216,0,0,1,.245.243v1.006a.246.246,0,0,1-.23.275,20.493,20.493,0,0,1-2.93.178c-3.191,0-3.912-.907-3.912-4.555,0-3.664.72-4.573,3.912-4.573C317.982,63.556,318.7,64.432,318.736,67.95Z" transform="translate(-204.544 -42.949)" fill="#005434"/>
23
+ <path id="Path_290" d="M335.8,67.134l-.033,5.221c0,.162-.066.243-.23.243h-1.489c-.164,0-.229-.081-.229-.243v-4.6c0-2.4-.376-2.513-1.8-2.513a10.087,10.087,0,0,0-1.636.129,6.5,6.5,0,0,1,.245,2.027l-.032,4.961c0,.179-.066.244-.213.244h-1.506a.217.217,0,0,1-.246-.244V67.426c0-2.091-.408-2.172-1.8-2.172h-1.391v7.1a.216.216,0,0,1-.246.243H323.7c-.164,0-.23-.081-.245-.243V64.07c0-.194.082-.227.245-.259a16.721,16.721,0,0,1,2.914-.259,7.382,7.382,0,0,1,2.815.486,9.167,9.167,0,0,1,2.75-.5C334.884,63.535,335.817,64.07,335.8,67.134Z" transform="translate(-207.598 -42.943)" fill="#005434"/>
24
+ <path id="Path_291" d="M348.214,63.735c.164.032.245.114.245.259v.956c0,.162-.082.243-.262.243h-3.012c-.688,0-1.08.211-1.08.713V66.1c0,.389.213.7.9.956l2.143.778a2.184,2.184,0,0,1,1.67,2.367v.211c0,1.849-1.244,2.27-3.388,2.27-1.424,0-2.652-.1-3.192-.146-.2-.016-.245-.1-.245-.243V71.29c0-.179.066-.259.262-.259h3.176c1.1,0,1.44-.129,1.44-.7v-.162c0-.389-.2-.648-.932-.924l-2.161-.81a2.325,2.325,0,0,1-1.637-2.384v-.324c0-1.767,1.473-2.173,3.519-2.173A16.956,16.956,0,0,1,348.214,63.735Z" transform="translate(-212.139 -42.949)" fill="#005434"/>
25
+ </g>
26
+ </svg>
@@ -24,11 +24,10 @@
24
24
  :icon="attributionAction.icon"
25
25
  :active="attributionAction.active"
26
26
  @click.stop="attributionAction.callback($event)"
27
- small
28
27
  class="z-index-1 mobile-attribution-btn"
29
28
  />
30
29
  <VcsMap :map-id="mapId" />
31
- <MapNavigation />
30
+ <MapNavigation v-if="showMapNavigation" />
32
31
  <ToolboxManagerComponent />
33
32
  <WindowManagerComponent />
34
33
  <NotifierComponent />
@@ -83,6 +82,7 @@
83
82
  onMounted,
84
83
  onUnmounted,
85
84
  provide,
85
+ ref,
86
86
  watch,
87
87
  } from 'vue';
88
88
  import { getVcsAppById } from '@vcmap/core';
@@ -101,7 +101,7 @@
101
101
  import MapNavigation from '../navigation/mapNavigation.vue';
102
102
  import VcsSettings from './VcsSettings.vue';
103
103
  import { WindowSlot } from '../manager/window/windowManager.js';
104
- import CategoryManager from '../manager/categoryManager/CategoryManager.vue';
104
+ import CollectionManager from '../manager/collectionManager/CollectionManager.vue';
105
105
  import { defaultPrimaryColor } from '../vuePlugins/vuetify.js';
106
106
  import VcsLegend from '../legend/vcsLegend.vue';
107
107
  import { getLegendEntries } from '../legend/legendHelper.js';
@@ -239,7 +239,7 @@
239
239
  action: legendAction,
240
240
  },
241
241
  vcsAppSymbol,
242
- ButtonLocation.TOOL,
242
+ ButtonLocation.CONTENT,
243
243
  );
244
244
  }
245
245
  };
@@ -338,7 +338,10 @@
338
338
  headerTitle: 'categoryManager.title',
339
339
  headerIcon: '$vcsComponents',
340
340
  },
341
- component: CategoryManager,
341
+ component: CollectionManager,
342
+ provides: {
343
+ collectionManager: app.categoryManager,
344
+ },
342
345
  slot: WindowSlot.STATIC,
343
346
  },
344
347
  app.windowManager,
@@ -452,6 +455,28 @@
452
455
  };
453
456
  }
454
457
 
458
+ export function setupMapNavigation(app) {
459
+ const showMapNavigation = ref(false);
460
+
461
+ const listeners = [
462
+ app.maps.added.addEventListener(() => {
463
+ showMapNavigation.value = true;
464
+ }),
465
+ app.maps.removed.addEventListener(() => {
466
+ if (app.maps.size < 1) {
467
+ showMapNavigation.value = false;
468
+ }
469
+ }),
470
+ ];
471
+
472
+ return {
473
+ showMapNavigation,
474
+ destroy: () => {
475
+ listeners.forEach((cb) => cb());
476
+ },
477
+ };
478
+ }
479
+
455
480
  /**
456
481
  * The base component to setup the entire application. To embed the VcsApp, use this component.
457
482
  * @vue-prop {string} appId - the id of the app to inject. this will setup listeners on the app to call vcsAppMounted on plugins
@@ -493,6 +518,8 @@
493
518
  );
494
519
  const { attributionEntries, attributionAction, destroyAttributions } =
495
520
  setupAttributions(app);
521
+ const { showMapNavigation, destroy: destroyMapNavigationListener } =
522
+ setupMapNavigation(app);
496
523
 
497
524
  let pluginMountedListener;
498
525
  onMounted(() => {
@@ -511,6 +538,7 @@
511
538
  destroyComponentsWindow();
512
539
  destroyThemingListener();
513
540
  destroyAttributions();
541
+ destroyMapNavigationListener();
514
542
  });
515
543
 
516
544
  return {
@@ -522,6 +550,7 @@
522
550
  ),
523
551
  attributionEntries,
524
552
  attributionAction,
553
+ showMapNavigation,
525
554
  };
526
555
  },
527
556
  };
@@ -1,9 +1,9 @@
1
1
  <template>
2
- <v-list class="px-1">
2
+ <v-list class="px-2">
3
3
  <v-list-item
4
4
  v-for="{ key, title, attributions } in entries"
5
5
  :key="key"
6
- class="px-1"
6
+ class="px-0"
7
7
  >
8
8
  <v-list-item-content>
9
9
  <v-list-item-title>{{ $t(title) }}</v-list-item-title>
@@ -22,9 +22,24 @@
22
22
  </template>
23
23
 
24
24
  <style lang="scss" scoped>
25
- ::v-deep {
26
- a:before {
27
- content: '\00a9\00a0';
25
+ @import '../styles/shades.scss';
26
+
27
+ .theme--light {
28
+ a {
29
+ color: map-get($shades, 'black');
30
+ }
31
+ }
32
+ .theme--dark {
33
+ a {
34
+ color: map-get($shades, 'white');
35
+ }
36
+ }
37
+ a {
38
+ &:hover {
39
+ color: var(--v-primary-base);
40
+ }
41
+ &:before {
42
+ content: '\00a9';
28
43
  }
29
44
  }
30
45
  </style>
@@ -11,7 +11,6 @@
11
11
  </span>
12
12
  <VcsButton
13
13
  class="d-flex"
14
- small
15
14
  :key="attributionAction.name"
16
15
  :tooltip="attributionAction.title"
17
16
  :icon="attributionAction.icon"
@@ -15,7 +15,7 @@
15
15
  <VcsActionButtonList
16
16
  :actions="mapActions"
17
17
  :overflow-count="3"
18
- large
18
+ button="VcsToolButton"
19
19
  />
20
20
  <v-divider
21
21
  v-if="
@@ -28,8 +28,8 @@
28
28
  />
29
29
  <VcsActionButtonList
30
30
  :actions="contentActions"
31
- :overflow-count="$vuetify.breakpoint.xs ? 2 : 3"
32
- large
31
+ :overflow-count="$vuetify.breakpoint.xs ? 3 : 4"
32
+ button="VcsToolButton"
33
33
  />
34
34
  <v-divider
35
35
  v-if="contentActions.length > 0 && toolActions.length > 0"
@@ -40,7 +40,7 @@
40
40
  <VcsActionButtonList
41
41
  :actions="toolActions"
42
42
  v-if="$vuetify.breakpoint.mdAndUp"
43
- large
43
+ button="VcsToolButton"
44
44
  />
45
45
  </div>
46
46
  </v-toolbar-items>
@@ -65,19 +65,22 @@
65
65
  <v-col class="align-content-end d-flex justify-end">
66
66
  <v-toolbar-items v-if="$vuetify.breakpoint.mdAndUp">
67
67
  <div class="d-flex">
68
- <VcsActionButtonList :actions="projectActions" large />
68
+ <VcsActionButtonList
69
+ :actions="projectActions"
70
+ button="VcsToolButton"
71
+ />
69
72
  <v-divider
70
73
  v-if="projectActions.length > 0 && menuActions.length > 0"
71
74
  vertical
72
75
  inset
73
76
  class="mx-2"
74
77
  />
78
+
75
79
  <v-menu offset-y v-if="shareActions.length > 0">
76
80
  <template #activator="{ on, attrs }">
77
- <VcsButton
81
+ <VcsToolButton
78
82
  v-bind="attrs"
79
83
  v-on="on"
80
- large
81
84
  tooltip="navbar.share.tooltip"
82
85
  icon="$vcsShare"
83
86
  />
@@ -88,10 +91,9 @@
88
91
  :show-icon="true"
89
92
  />
90
93
  </v-menu>
91
- <VcsButton
94
+ <VcsToolButton
92
95
  class="d-flex"
93
96
  v-if="searchAction"
94
- large
95
97
  :key="searchAction.name"
96
98
  :tooltip="searchAction.title"
97
99
  :icon="searchAction.icon"
@@ -101,10 +103,9 @@
101
103
  />
102
104
  <v-menu offset-y v-if="menuActions.length > 0">
103
105
  <template #activator="{ on, attrs }">
104
- <VcsButton
106
+ <VcsToolButton
105
107
  v-bind="attrs"
106
108
  v-on="on"
107
- large
108
109
  tooltip="navbar.menu.tooltip"
109
110
  icon="$vcsMenu"
110
111
  />
@@ -131,6 +132,10 @@
131
132
  max-height: 36px;
132
133
  margin: 0 auto;
133
134
  }
135
+ .v-toolbar.v-toolbar--bottom {
136
+ bottom: 0;
137
+ position: fixed;
138
+ }
134
139
  </style>
135
140
 
136
141
  <script>
@@ -150,7 +155,7 @@
150
155
  } from '../manager/navbarManager.js';
151
156
  import VcsActionButtonList from '../components/buttons/VcsActionButtonList.vue';
152
157
  import VcsActionList from '../components/lists/VcsActionList.vue';
153
- import VcsButton from '../components/buttons/VcsButton.vue';
158
+ import VcsToolButton from '../components/buttons/VcsToolButton.vue';
154
159
  import { createSearchButtonAction } from '../actions/actionHelper.js';
155
160
 
156
161
  export default {
@@ -158,7 +163,7 @@
158
163
  components: {
159
164
  VcsActionButtonList,
160
165
  VcsActionList,
161
- VcsButton,
166
+ VcsToolButton,
162
167
  VToolbar,
163
168
  VContainer,
164
169
  VRow,
@@ -0,0 +1,54 @@
1
+ import VcsCallback, { callbackClassRegistry } from './vcsCallback.js';
2
+
3
+ /**
4
+ * @typedef {VcsCallbackOptions} ActivateLayersOptions
5
+ * @property {Array<string>} layerNames - layer names to activate
6
+ */
7
+
8
+ /**
9
+ * @class
10
+ * @extends {VcsCallback}
11
+ */
12
+ class ActivateLayersCallback extends VcsCallback {
13
+ /**
14
+ * @type {string}
15
+ */
16
+ static get className() {
17
+ return 'ActivateLayersCallback';
18
+ }
19
+
20
+ /**
21
+ * @param {ActivateLayersOptions} options
22
+ * @param {VcsUiApp} app
23
+ */
24
+ constructor(options, app) {
25
+ super(options, app);
26
+ /**
27
+ * @type {Array<string>}
28
+ * @private
29
+ */
30
+ this._layerNames = options.layerNames;
31
+ }
32
+
33
+ callback() {
34
+ this._layerNames
35
+ .map((n) => this._app.layers.getByKey(n))
36
+ .filter((l) => l)
37
+ .forEach((l) => l.activate());
38
+ }
39
+
40
+ /**
41
+ * @returns {ActivateLayersOptions}
42
+ */
43
+ toJSON() {
44
+ const config = super.toJSON();
45
+ config.layerNames = this._layerNames.slice();
46
+ return config;
47
+ }
48
+ }
49
+
50
+ export default ActivateLayersCallback;
51
+ callbackClassRegistry.registerClass(
52
+ ActivateLayersCallback.className,
53
+ ActivateLayersCallback,
54
+ );
@@ -0,0 +1,63 @@
1
+ import { FeatureLayer } from '@vcmap/core';
2
+ import VcsCallback, { callbackClassRegistry } from './vcsCallback.js';
3
+
4
+ /**
5
+ * @typedef {VcsCallbackOptions} ApplyLayerStyleOptions
6
+ * @property {string} styleName - name of the style
7
+ * @property {string} layerName - name of the layer to apply the style
8
+ */
9
+
10
+ /**
11
+ * @class
12
+ * @extends {VcsCallback}
13
+ */
14
+ class ApplyLayerStyleCallback extends VcsCallback {
15
+ /**
16
+ * @type {string}
17
+ */
18
+ static get className() {
19
+ return 'ApplyLayerStyleCallback';
20
+ }
21
+
22
+ /**
23
+ * @param {ApplyLayerStyleOptions} options
24
+ * @param {VcsUiApp} app
25
+ */
26
+ constructor(options, app) {
27
+ super(options, app);
28
+ /**
29
+ * @type {string}
30
+ * @private
31
+ */
32
+ this._styleName = options.styleName;
33
+ /**
34
+ * @type {string}
35
+ * @private
36
+ */
37
+ this._layerName = options.layerName;
38
+ }
39
+
40
+ callback() {
41
+ const style = this._app.styles.getByKey(this._styleName);
42
+ const layer = this._app.layers.getByKey(this._layerName);
43
+ if (style && layer && layer instanceof FeatureLayer) {
44
+ layer.setStyle(style);
45
+ }
46
+ }
47
+
48
+ /**
49
+ * @returns {ApplyLayerStyleOptions}
50
+ */
51
+ toJSON() {
52
+ const config = super.toJSON();
53
+ config.styleName = this._styleName;
54
+ config.layerName = this._layerName;
55
+ return config;
56
+ }
57
+ }
58
+
59
+ export default ApplyLayerStyleCallback;
60
+ callbackClassRegistry.registerClass(
61
+ ApplyLayerStyleCallback.className,
62
+ ApplyLayerStyleCallback,
63
+ );
@@ -0,0 +1,54 @@
1
+ import VcsCallback, { callbackClassRegistry } from './vcsCallback.js';
2
+
3
+ /**
4
+ * @typedef {VcsCallbackOptions} DeactivateLayersOptions
5
+ * @property {Array<string>} layerNames - layer names to deactivate
6
+ */
7
+
8
+ /**
9
+ * @class
10
+ * @extends {VcsCallback}
11
+ */
12
+ class DeactivateLayersCallback extends VcsCallback {
13
+ /**
14
+ * @type {string}
15
+ */
16
+ static get className() {
17
+ return 'DeactivateLayersCallback';
18
+ }
19
+
20
+ /**
21
+ * @param {DeactivateLayersOptions} options
22
+ * @param {VcsUiApp} app
23
+ */
24
+ constructor(options, app) {
25
+ super(options, app);
26
+ /**
27
+ * @type {Array<string>}
28
+ * @private
29
+ */
30
+ this._layerNames = options.layerNames;
31
+ }
32
+
33
+ callback() {
34
+ this._layerNames
35
+ .map((n) => this._app.layers.getByKey(n))
36
+ .filter((l) => l)
37
+ .forEach((l) => l.deactivate());
38
+ }
39
+
40
+ /**
41
+ * @returns {DeactivateLayersOptions}
42
+ */
43
+ toJSON() {
44
+ const config = super.toJSON();
45
+ config.layerNames = this._layerNames.slice();
46
+ return config;
47
+ }
48
+ }
49
+
50
+ export default DeactivateLayersCallback;
51
+ callbackClassRegistry.registerClass(
52
+ DeactivateLayersCallback.className,
53
+ DeactivateLayersCallback,
54
+ );
@@ -0,0 +1,54 @@
1
+ import VcsCallback, { callbackClassRegistry } from './vcsCallback.js';
2
+
3
+ /**
4
+ * @typedef {VcsCallbackOptions} GoToViewpointOptions
5
+ * @property {string} viewpoint - name of the viewpoint
6
+ */
7
+
8
+ /**
9
+ * @class
10
+ * @extends {VcsCallback}
11
+ */
12
+ class GoToViewpointCallback extends VcsCallback {
13
+ /**
14
+ * @type {string}
15
+ */
16
+ static get className() {
17
+ return 'GoToViewpointCallback';
18
+ }
19
+
20
+ /**
21
+ * @param {GoToViewpointOptions} options
22
+ * @param {VcsUiApp} app
23
+ */
24
+ constructor(options, app) {
25
+ super(options, app);
26
+ /**
27
+ * @type {string}
28
+ * @private
29
+ */
30
+ this._viewpoint = options.viewpoint;
31
+ }
32
+
33
+ callback() {
34
+ const vp = this._app.viewpoints.getByKey(this._viewpoint);
35
+ if (this._app.maps.activeMap && vp) {
36
+ this._app.maps.activeMap.gotoViewpoint(vp);
37
+ }
38
+ }
39
+
40
+ /**
41
+ * @returns {GoToViewpointOptions}
42
+ */
43
+ toJSON() {
44
+ const config = super.toJSON();
45
+ config.viewpoint = this._viewpoint;
46
+ return config;
47
+ }
48
+ }
49
+
50
+ export default GoToViewpointCallback;
51
+ callbackClassRegistry.registerClass(
52
+ GoToViewpointCallback.className,
53
+ GoToViewpointCallback,
54
+ );
@@ -0,0 +1,66 @@
1
+ import { ClassRegistry } from '@vcmap/core';
2
+
3
+ /**
4
+ * @type {ClassRegistry<VcsCallback>}
5
+ */
6
+ export const callbackClassRegistry = new ClassRegistry();
7
+
8
+ /**
9
+ * creates instances of VcsCallback classes and executes its callback function
10
+ * @param {VcsUiApp} app
11
+ * @param {Array<VcsCallbackOptions>} vcsCallbackOptions
12
+ */
13
+ export function executeCallbacks(app, vcsCallbackOptions) {
14
+ vcsCallbackOptions.forEach((options) =>
15
+ app.callbackClassRegistry.createFromTypeOptions(options, app)?.callback(),
16
+ );
17
+ }
18
+
19
+ /**
20
+ * @typedef {Object} VcsCallbackOptions
21
+ * @property {string} type
22
+ */
23
+
24
+ /**
25
+ * @typedef {Object} VcsCallback
26
+ * @property {function():void} callback
27
+ */
28
+
29
+ /**
30
+ * @class
31
+ * @abstract
32
+ */
33
+ class VcsCallback {
34
+ /**
35
+ * @type {string}
36
+ */
37
+ static get className() {
38
+ return 'VcsCallback';
39
+ }
40
+
41
+ /**
42
+ * @param {VcsCallbackOptions} options
43
+ * @param {VcsUiApp} app
44
+ */
45
+ constructor(options, app) {
46
+ /**
47
+ * @protected
48
+ * @type {VcsUiApp}
49
+ */
50
+ this._app = app;
51
+ }
52
+
53
+ // eslint-disable-next-line class-methods-use-this
54
+ callback() {}
55
+
56
+ /**
57
+ * @returns {VcsCallbackOptions}
58
+ */
59
+ toJSON() {
60
+ return {
61
+ type: this.constructor.className,
62
+ };
63
+ }
64
+ }
65
+
66
+ export default VcsCallback;