@vcmap/ui 5.0.0-rc.17 → 5.0.0-rc.20

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 (386) hide show
  1. package/README.md +6 -6
  2. package/build/build.js +2 -2
  3. package/build/buildCesium.js +3 -3
  4. package/build/buildHelpers.js +2 -1
  5. package/config/base.config.json +0 -4
  6. package/config/dev.config.json +35 -14
  7. package/config/www.config.json +752 -123
  8. package/dist/assets/cesium/Workers/ArcType-ce2e50ab.js +37 -0
  9. package/dist/assets/cesium/Workers/AttributeCompression-b646d393.js +716 -0
  10. package/dist/assets/cesium/Workers/AxisAlignedBoundingBox-ff186ccc.js +258 -0
  11. package/dist/assets/cesium/Workers/BoundingRectangle-be5924f4.js +369 -0
  12. package/dist/assets/cesium/Workers/BoxGeometry-12eeccaf.js +884 -0
  13. package/dist/assets/cesium/Workers/Check-666ab1a0.js +290 -0
  14. package/dist/assets/cesium/Workers/Color-a84038cb.js +2262 -0
  15. package/dist/assets/cesium/Workers/ComponentDatatype-f7b11d02.js +341 -0
  16. package/dist/assets/cesium/Workers/CoplanarPolygonGeometryLibrary-3272c1b3.js +132 -0
  17. package/dist/assets/cesium/Workers/CorridorGeometryLibrary-0170e093.js +498 -0
  18. package/dist/assets/cesium/Workers/CylinderGeometry-7c5da648.js +467 -0
  19. package/dist/assets/cesium/Workers/CylinderGeometryLibrary-372c07d8.js +63 -0
  20. package/dist/assets/cesium/Workers/EllipseGeometry-797d580e.js +1304 -0
  21. package/dist/assets/cesium/Workers/EllipseGeometryLibrary-2939e1dc.js +366 -0
  22. package/dist/assets/cesium/Workers/EllipseOutlineGeometry-8b50870f.js +443 -0
  23. package/dist/assets/cesium/Workers/EllipsoidGeodesic-98c62a56.js +520 -0
  24. package/dist/assets/cesium/Workers/EllipsoidGeometry-21c0e3a5.js +637 -0
  25. package/dist/assets/cesium/Workers/EllipsoidOutlineGeometry-eff247c8.js +454 -0
  26. package/dist/assets/cesium/Workers/EllipsoidRhumbLine-19756602.js +741 -0
  27. package/dist/assets/cesium/Workers/EllipsoidTangentPlane-214683dc.js +373 -0
  28. package/dist/assets/cesium/Workers/EncodedCartesian3-81f70735.js +171 -0
  29. package/dist/assets/cesium/Workers/FrustumGeometry-ac42a6d9.js +2512 -0
  30. package/dist/assets/cesium/Workers/GeometryAttribute-7d6f1732.js +619 -0
  31. package/dist/assets/cesium/Workers/GeometryAttributes-f06a2792.js +91 -0
  32. package/dist/assets/cesium/Workers/GeometryInstance-451dc1cd.js +121 -0
  33. package/dist/assets/cesium/Workers/GeometryOffsetAttribute-04332ce7.js +16 -0
  34. package/dist/assets/cesium/Workers/GeometryPipeline-ce4339ed.js +3690 -0
  35. package/dist/assets/cesium/Workers/IndexDatatype-a55ceaa1.js +200 -0
  36. package/dist/assets/cesium/Workers/IntersectionTests-f6e6bd8a.js +1836 -0
  37. package/dist/assets/cesium/Workers/Math-2dbd6b93.js +1330 -0
  38. package/dist/assets/cesium/Workers/Matrix2-13178034.js +7086 -0
  39. package/dist/assets/cesium/Workers/Matrix3-315394f6.js +4283 -0
  40. package/dist/assets/cesium/Workers/OrientedBoundingBox-04920dc7.js +1257 -0
  41. package/dist/assets/cesium/Workers/Plane-900aa728.js +309 -0
  42. package/dist/assets/cesium/Workers/PolygonGeometryLibrary-a8680d96.js +1074 -0
  43. package/dist/assets/cesium/Workers/PolygonPipeline-844aab0a.js +1345 -0
  44. package/dist/assets/cesium/Workers/PolylinePipeline-32f36d2a.js +573 -0
  45. package/dist/assets/cesium/Workers/PolylineVolumeGeometryLibrary-a510d657.js +781 -0
  46. package/dist/assets/cesium/Workers/PrimitivePipeline-ba38434a.js +966 -0
  47. package/dist/assets/cesium/Workers/RectangleGeometryLibrary-bdba697e.js +280 -0
  48. package/dist/assets/cesium/Workers/RuntimeError-06c93819.js +68 -0
  49. package/dist/assets/cesium/Workers/TerrainEncoding-833187da.js +1227 -0
  50. package/dist/assets/cesium/Workers/Transforms-40229881.js +14696 -0
  51. package/dist/assets/cesium/Workers/VertexFormat-6b480673.js +312 -0
  52. package/dist/assets/cesium/Workers/WallGeometryLibrary-919eed92.js +211 -0
  53. package/dist/assets/cesium/Workers/WebGLConstants-a8cc3e8c.js +620 -0
  54. package/dist/assets/cesium/Workers/WebMercatorProjection-13a90d41.js +151 -0
  55. package/dist/assets/cesium/Workers/arrayRemoveDuplicates-c2038105.js +129 -0
  56. package/dist/assets/cesium/Workers/cesiumWorkerBootstrapper.js +1336 -4
  57. package/dist/assets/cesium/Workers/combine-ca22a614.js +82 -0
  58. package/dist/assets/cesium/Workers/combineGeometry.js +17 -25
  59. package/dist/assets/cesium/Workers/createBoxGeometry.js +12 -25
  60. package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +313 -25
  61. package/dist/assets/cesium/Workers/createCircleGeometry.js +213 -25
  62. package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +160 -25
  63. package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +586 -25
  64. package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +236 -25
  65. package/dist/assets/cesium/Workers/createCorridorGeometry.js +1407 -25
  66. package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +603 -25
  67. package/dist/assets/cesium/Workers/createCylinderGeometry.js +12 -25
  68. package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +265 -25
  69. package/dist/assets/cesium/Workers/createEllipseGeometry.js +14 -25
  70. package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +14 -25
  71. package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +12 -25
  72. package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +15 -25
  73. package/dist/assets/cesium/Workers/createFrustumGeometry.js +12 -25
  74. package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +251 -25
  75. package/dist/assets/cesium/Workers/createGeometry.js +55 -25
  76. package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +2134 -25
  77. package/dist/assets/cesium/Workers/createPlaneGeometry.js +250 -25
  78. package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +115 -25
  79. package/dist/assets/cesium/Workers/createPolygonGeometry.js +1420 -25
  80. package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +683 -25
  81. package/dist/assets/cesium/Workers/createPolylineGeometry.js +571 -25
  82. package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +411 -25
  83. package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +301 -25
  84. package/dist/assets/cesium/Workers/createRectangleGeometry.js +1476 -25
  85. package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +535 -25
  86. package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +458 -25
  87. package/dist/assets/cesium/Workers/createSphereGeometry.js +123 -25
  88. package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +126 -25
  89. package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +127 -25
  90. package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +535 -25
  91. package/dist/assets/cesium/Workers/createVectorTileGeometries.js +445 -25
  92. package/dist/assets/cesium/Workers/createVectorTilePoints.js +79 -25
  93. package/dist/assets/cesium/Workers/createVectorTilePolygons.js +406 -25
  94. package/dist/assets/cesium/Workers/createVectorTilePolylines.js +254 -25
  95. package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +640 -25
  96. package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +2711 -27
  97. package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +994 -25
  98. package/dist/assets/cesium/Workers/createWallGeometry.js +623 -25
  99. package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +432 -25
  100. package/dist/assets/cesium/Workers/decodeDraco.js +381 -25
  101. package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +3687 -25
  102. package/dist/assets/cesium/Workers/decodeI3S.js +1040 -0
  103. package/dist/assets/cesium/Workers/defaultValue-0a909f67.js +51 -0
  104. package/dist/assets/cesium/Workers/package.js +2 -2
  105. package/dist/assets/cesium/Workers/transcodeKTX2.js +1516 -25
  106. package/dist/assets/cesium/Workers/transferTypedArrayTest.js +18 -2
  107. package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +1023 -25
  108. package/dist/assets/{cesium.41de56.js → cesium.adbd45.js} +112161 -108735
  109. package/dist/assets/cesium.js +1 -1
  110. package/dist/assets/{core.af84e3.js → core.60e74d.js} +1616 -1629
  111. package/dist/assets/core.f198cf.js +15993 -0
  112. package/dist/assets/core.js +1 -1
  113. package/dist/assets/{index.5b773cad.js → index.884a53ef.js} +1 -1
  114. package/dist/assets/{ol.5c7490.js → ol.c6ff35.js} +6992 -6972
  115. package/dist/assets/ol.dbd604.js +44299 -0
  116. package/dist/assets/ol.js +1 -1
  117. package/dist/assets/ui.bf504d.css +1 -0
  118. package/dist/assets/{ui.dffe32.js → ui.bf504d.js} +6171 -6821
  119. package/dist/assets/ui.js +1 -1
  120. package/dist/assets/{vue.25da17.js → vue.75b819.js} +0 -0
  121. package/dist/assets/vue.a831f1.js +4675 -0
  122. package/dist/assets/vue.js +2 -2
  123. package/dist/assets/{vuetify.e4ece7.css → vuetify.0d7360.css} +0 -0
  124. package/dist/assets/{vuetify.e4ece7.js → vuetify.0d7360.js} +1 -1
  125. package/dist/assets/vuetify.js +2 -2
  126. package/dist/index.html +1 -1
  127. package/index.js +2 -1
  128. package/lib/cesium.js +1 -1
  129. package/package.json +3 -4
  130. package/plugins/{simple-graph → @vcmap/simple-graph}/README.md +1 -1
  131. package/plugins/{simple-graph → @vcmap/simple-graph}/SimpleGraphComponent.vue +0 -0
  132. package/plugins/{simple-graph → @vcmap/simple-graph}/index.js +0 -0
  133. package/plugins/{simple-graph → @vcmap/simple-graph}/package.json +0 -0
  134. package/plugins/{simple-graph → @vcmap/simple-graph}/simpleGraphView.js +0 -0
  135. package/plugins/@vcmap-show-case/README.md +20 -0
  136. package/plugins/{buttonExamples/ButtonExamples.vue → @vcmap-show-case/buttons-example/ButtonsExample.vue} +19 -1
  137. package/plugins/@vcmap-show-case/buttons-example/README.md +4 -0
  138. package/plugins/{buttonExamples → @vcmap-show-case/buttons-example}/index.js +16 -8
  139. package/plugins/@vcmap-show-case/buttons-example/package.json +5 -0
  140. package/plugins/{categoryTest → @vcmap-show-case/category-tester}/Categories.vue +7 -6
  141. package/plugins/{categoryTest → @vcmap-show-case/category-tester}/Category.vue +4 -3
  142. package/plugins/@vcmap-show-case/category-tester/README.md +3 -0
  143. package/plugins/{categoryTest → @vcmap-show-case/category-tester}/index.js +12 -4
  144. package/plugins/@vcmap-show-case/category-tester/package.json +5 -0
  145. package/plugins/@vcmap-show-case/config-editor/README.md +3 -0
  146. package/plugins/{test → @vcmap-show-case/config-editor}/editor.vue +0 -0
  147. package/plugins/@vcmap-show-case/config-editor/index.js +47 -0
  148. package/plugins/@vcmap-show-case/config-editor/package.json +5 -0
  149. package/plugins/@vcmap-show-case/context-menu-tester/README.md +3 -0
  150. package/plugins/@vcmap-show-case/context-menu-tester/index.js +33 -0
  151. package/plugins/@vcmap-show-case/context-menu-tester/package.json +5 -0
  152. package/plugins/{@vcmap/pluginExample/pluginExampleComponent.vue → @vcmap-show-case/form-inputs-example/FormInputsExample.vue} +14 -13
  153. package/plugins/@vcmap-show-case/form-inputs-example/README.md +4 -0
  154. package/plugins/@vcmap-show-case/form-inputs-example/config.json +5 -0
  155. package/plugins/{@vcmap/pluginExample → @vcmap-show-case/form-inputs-example}/exampleActions.js +1 -1
  156. package/plugins/{@vcmap/pluginExample → @vcmap-show-case/form-inputs-example}/index.js +23 -22
  157. package/plugins/@vcmap-show-case/form-inputs-example/package.json +5 -0
  158. package/plugins/{@vcmap/pluginExample → @vcmap-show-case/form-inputs-example}/validation.js +0 -0
  159. package/plugins/@vcmap-show-case/icons-example/README.md +5 -0
  160. package/plugins/@vcmap-show-case/icons-example/allIconsComponent.vue +51 -0
  161. package/plugins/@vcmap-show-case/icons-example/index.js +44 -0
  162. package/plugins/@vcmap-show-case/icons-example/package.json +5 -0
  163. package/plugins/{test/testList.vue → @vcmap-show-case/list-example/ListExample.vue} +1 -1
  164. package/plugins/@vcmap-show-case/list-example/README.md +3 -0
  165. package/plugins/@vcmap-show-case/list-example/index.js +44 -0
  166. package/plugins/@vcmap-show-case/list-example/package.json +5 -0
  167. package/plugins/@vcmap-show-case/notifier-tester/README.md +3 -0
  168. package/plugins/{notifier → @vcmap-show-case/notifier-tester}/index.js +11 -6
  169. package/plugins/{notifier → @vcmap-show-case/notifier-tester}/notifierTester.vue +0 -0
  170. package/plugins/@vcmap-show-case/notifier-tester/package.json +5 -0
  171. package/plugins/@vcmap-show-case/textfields-example/README.md +3 -0
  172. package/plugins/{example/mySuperComponent.vue → @vcmap-show-case/textfields-example/TextfieldsExample.vue} +1 -7
  173. package/plugins/{example → @vcmap-show-case/textfields-example}/index.js +58 -62
  174. package/plugins/@vcmap-show-case/textfields-example/package.json +5 -0
  175. package/plugins/@vcmap-show-case/window-tester/README.md +3 -0
  176. package/plugins/{test/windowManagerExample.vue → @vcmap-show-case/window-tester/WindowExample.vue} +36 -20
  177. package/plugins/{test → @vcmap-show-case/window-tester}/emptyComponent.vue +8 -3
  178. package/plugins/@vcmap-show-case/window-tester/index.js +62 -0
  179. package/plugins/{test → @vcmap-show-case/window-tester}/myCustomHeader.vue +0 -0
  180. package/plugins/@vcmap-show-case/window-tester/package.json +5 -0
  181. package/plugins/@vcmap-show-case/window-tester/toolbox-data.js +211 -0
  182. package/plugins/{test/vcsContent.vue → @vcmap-show-case/window-tester/windowExampleContent.vue} +1 -5
  183. package/plugins/@vcmap-show-case/wizard-example/README.md +3 -0
  184. package/plugins/{wizardExample → @vcmap-show-case/wizard-example}/index.js +12 -6
  185. package/plugins/@vcmap-show-case/wizard-example/package.json +5 -0
  186. package/plugins/@vcmap-show-case/wizard-example/wizardExample.vue +95 -0
  187. package/plugins/package.json +2 -1
  188. package/src/actions/actionHelper.js +4 -4
  189. package/src/actions/stateRefAction.js +0 -10
  190. package/src/application/VcsApp.vue +42 -23
  191. package/src/application/VcsMap.vue +9 -0
  192. package/src/application/VcsNavbar.vue +1 -1
  193. package/src/components/buttons/VcsActionButtonList.vue +1 -0
  194. package/src/components/buttons/VcsButton.vue +14 -3
  195. package/src/components/form-inputs-controls/VcsCheckbox.vue +3 -1
  196. package/src/components/form-inputs-controls/VcsWizard.vue +17 -20
  197. package/src/components/form-inputs-controls/VcsWizardStep.vue +160 -0
  198. package/src/{icons → components/icons}/+all.js +0 -0
  199. package/src/{icons → components/icons}/2DAreaIcon.vue +0 -0
  200. package/src/{icons → components/icons}/2DDistanceIcon.vue +0 -0
  201. package/src/{icons → components/icons}/3DAreaIcon.vue +0 -0
  202. package/src/{icons → components/icons}/3DDistanceIcon.vue +0 -0
  203. package/src/{icons → components/icons}/3DHeightIcon.vue +0 -0
  204. package/src/{icons → components/icons}/AngleIcon.vue +0 -0
  205. package/src/{icons → components/icons}/AssociationsIcon.vue +0 -0
  206. package/src/{icons → components/icons}/AxisIcon.vue +0 -0
  207. package/src/{icons → components/icons}/BoundingBoxIcon.vue +0 -0
  208. package/src/{icons → components/icons}/CheckboxCheckedIcon.vue +0 -0
  209. package/src/{icons → components/icons}/CheckboxIcon.vue +0 -0
  210. package/src/{icons → components/icons}/CheckboxIndeterminateIcon.vue +0 -0
  211. package/src/{icons → components/icons}/CircleIcon.vue +0 -0
  212. package/src/{icons → components/icons}/ClippingHorizontalIcon.vue +0 -0
  213. package/src/{icons → components/icons}/ClippingIcon.vue +0 -0
  214. package/src/{icons → components/icons}/ClippingVerticalIcon.vue +0 -0
  215. package/src/{icons → components/icons}/ColorPickerIcon.vue +0 -0
  216. package/src/{icons → components/icons}/ColorSwatchIcon.vue +0 -0
  217. package/src/{icons → components/icons}/CommentIcon.vue +0 -0
  218. package/src/{icons → components/icons}/CompassIcon.vue +0 -0
  219. package/src/{icons → components/icons}/ComponentsIcon.vue +0 -0
  220. package/src/{icons → components/icons}/ConeIcon.vue +0 -0
  221. package/src/{icons → components/icons}/DimensionsHouseIcon.vue +0 -0
  222. package/src/{icons → components/icons}/EditIcon.vue +0 -0
  223. package/src/{icons → components/icons}/ElevationProfileIcon.vue +0 -0
  224. package/src/{icons → components/icons}/ExportAreaIcon.vue +0 -0
  225. package/src/{icons → components/icons}/ExportFlightIcon.vue +0 -0
  226. package/src/{icons → components/icons}/ExportIcon.vue +0 -0
  227. package/src/{icons → components/icons}/ExternalLinkIcon.vue +0 -0
  228. package/src/{icons → components/icons}/EyeIcon.vue +0 -0
  229. package/src/{icons → components/icons}/FastForwardIcon.vue +0 -0
  230. package/src/{icons → components/icons}/FilterIcon.vue +0 -0
  231. package/src/{icons → components/icons}/GlobalTerrainIcon.vue +0 -0
  232. package/src/{icons → components/icons}/GlobeNatureIcon.vue +0 -0
  233. package/src/{icons → components/icons}/GroundIcon.vue +0 -0
  234. package/src/{icons → components/icons}/HealthCareIndustriesIcon.vue +0 -0
  235. package/src/{icons → components/icons}/HelpIcon.vue +0 -0
  236. package/src/{icons → components/icons}/HideIcon.vue +0 -0
  237. package/src/{icons → components/icons}/HomePointIcon.vue +0 -0
  238. package/src/{icons → components/icons}/HospitalsIcon.vue +0 -0
  239. package/src/{icons → components/icons}/HouseIcon.vue +0 -0
  240. package/src/{icons → components/icons}/ImportIcon.vue +0 -0
  241. package/src/{icons → components/icons}/InfoIcon.vue +0 -0
  242. package/src/{icons → components/icons}/KebabIcon.vue +0 -0
  243. package/src/{icons → components/icons}/LabelIcon.vue +0 -0
  244. package/src/{icons → components/icons}/LayersIcon.vue +0 -0
  245. package/src/{icons → components/icons}/LegendIcon.vue +0 -0
  246. package/src/{icons → components/icons}/LineIcon.vue +0 -0
  247. package/src/{icons → components/icons}/LinkIcon.vue +0 -0
  248. package/src/{icons → components/icons}/LogoutIcon.vue +0 -0
  249. package/src/{icons → components/icons}/MapIcon.vue +0 -0
  250. package/src/{icons → components/icons}/MenuIcon.vue +0 -0
  251. package/src/{icons → components/icons}/MinusIcon.vue +0 -0
  252. package/src/{icons → components/icons}/ObjectAttributeIcon.vue +0 -0
  253. package/src/{icons → components/icons}/ObjectSelectIcon.vue +0 -0
  254. package/src/{icons → components/icons}/ObliqueViewIcon.vue +0 -0
  255. package/src/{icons → components/icons}/PdfIcon.vue +0 -0
  256. package/src/{icons → components/icons}/PedestrianIcon.vue +0 -0
  257. package/src/{icons → components/icons}/PenIcon.vue +0 -0
  258. package/src/{icons → components/icons}/PlayCircleIcon.vue +0 -0
  259. package/src/{icons → components/icons}/PlusIcon.vue +0 -0
  260. package/src/{icons → components/icons}/PoiIcon.vue +0 -0
  261. package/src/{icons → components/icons}/PointSelectIcon.vue +0 -0
  262. package/src/{icons → components/icons}/PolygonIcon.vue +0 -0
  263. package/src/{icons → components/icons}/PresentationModeIcon.vue +0 -0
  264. package/src/{icons → components/icons}/ProgressIcon.vue +0 -0
  265. package/src/{icons → components/icons}/QueryIcon.vue +0 -0
  266. package/src/{icons → components/icons}/RectangleIcon.vue +0 -0
  267. package/src/{icons → components/icons}/ReturnIcon.vue +0 -0
  268. package/src/{icons → components/icons}/RewindIcon.vue +0 -0
  269. package/src/{icons → components/icons}/RotateLeftIcon.vue +0 -0
  270. package/src/{icons → components/icons}/RotateRightIcon.vue +0 -0
  271. package/src/{icons → components/icons}/ScreenshotIcon.vue +0 -0
  272. package/src/{icons → components/icons}/SearchIcon.vue +0 -0
  273. package/src/{icons → components/icons}/ShadowIcon.vue +0 -0
  274. package/src/{icons → components/icons}/ShapesIcon.vue +0 -0
  275. package/src/{icons → components/icons}/ShareIcon.vue +0 -0
  276. package/src/{icons → components/icons}/SimpleCircleFilledIcon.vue +0 -0
  277. package/src/{icons → components/icons}/SimpleCircleHalfFilledIcon.vue +0 -0
  278. package/src/{icons → components/icons}/SimpleCircleOutlinedIcon.vue +0 -0
  279. package/src/{icons → components/icons}/SkipNextIcon.vue +0 -0
  280. package/src/{icons → components/icons}/SkipPreviousIcon.vue +0 -0
  281. package/src/{icons → components/icons}/SplitViewIcon.vue +0 -0
  282. package/src/{icons → components/icons}/TerrainBoxIcon.vue +0 -0
  283. package/src/{icons → components/icons}/TextStyleIcon.vue +0 -0
  284. package/src/{icons → components/icons}/ThreeDimensionsIcon.vue +0 -0
  285. package/src/{icons → components/icons}/ToolsIcon.vue +0 -0
  286. package/src/{icons → components/icons}/TouchIcon.vue +0 -0
  287. package/src/{icons → components/icons}/TrashCanIcon.vue +0 -0
  288. package/src/{icons → components/icons}/TriangleIcon.vue +0 -0
  289. package/src/{icons → components/icons}/TwoDimensionsIcon.vue +0 -0
  290. package/src/{icons → components/icons}/UploadIcon.vue +0 -0
  291. package/src/{icons → components/icons}/UserProfileIcon.vue +0 -0
  292. package/src/{icons → components/icons}/UserShareIcon.vue +0 -0
  293. package/src/{icons → components/icons}/VideoRecorderIcon.vue +0 -0
  294. package/src/{icons → components/icons}/ViewpointFlightIcon.vue +0 -0
  295. package/src/{icons → components/icons}/ViewpointIcon.vue +0 -0
  296. package/src/{icons → components/icons}/Viewshed360Icon.vue +0 -0
  297. package/src/{icons → components/icons}/ViewshedConeIcon.vue +0 -0
  298. package/src/{icons → components/icons}/ViewshedIcon.vue +0 -0
  299. package/src/{icons → components/icons}/WalkingIcon.vue +0 -0
  300. package/src/{icons → components/icons}/WallIcon.vue +0 -0
  301. package/src/{icons → components/icons}/WandIcon.vue +0 -0
  302. package/src/components/lists/VcsActionList.vue +2 -0
  303. package/src/components/lists/VcsList.vue +21 -12
  304. package/src/components/lists/VcsTreeviewLeaf.vue +14 -2
  305. package/src/components/notification/VcsTooltip.vue +1 -1
  306. package/src/contentTree/layerContentTreeItem.js +2 -2
  307. package/src/featureInfo/BalloonComponent.vue +2 -2
  308. package/src/featureInfo/abstractFeatureInfoView.js +1 -1
  309. package/src/featureInfo/addressBalloonFeatureInfoView.js +1 -1
  310. package/src/featureInfo/balloonFeatureInfoView.js +1 -1
  311. package/src/featureInfo/balloonHelper.js +6 -6
  312. package/src/featureInfo/featureInfo.js +2 -2
  313. package/src/i18n/de.js +8 -8
  314. package/src/i18n/en.js +6 -6
  315. package/src/legend/legendHelper.js +8 -8
  316. package/src/legend/vcsLegend.vue +33 -5
  317. package/src/manager/toolbox/ToolboxManager.vue +1 -0
  318. package/src/manager/window/WindowComponent.vue +42 -4
  319. package/src/manager/window/WindowComponentHeader.vue +1 -1
  320. package/src/manager/window/windowHelper.js +7 -11
  321. package/src/manager/window/windowManager.js +15 -11
  322. package/src/navigation/mapNavCompass.vue +13 -7
  323. package/src/navigation/mapNavigation.vue +66 -4
  324. package/src/navigation/orientationToolsButton.vue +1 -1
  325. package/src/navigation/overviewMap.js +26 -10
  326. package/src/navigation/vcsCompass.vue +4 -73
  327. package/src/setup.js +1 -1
  328. package/src/vuePlugins/vuetify.js +1 -1
  329. package/dist/assets/cesium/Workers/ArcType-c9b2b290.js +0 -25
  330. package/dist/assets/cesium/Workers/AttributeCompression-7b0f288d.js +0 -25
  331. package/dist/assets/cesium/Workers/AxisAlignedBoundingBox-d0c22774.js +0 -25
  332. package/dist/assets/cesium/Workers/BoundingRectangle-201b1a81.js +0 -25
  333. package/dist/assets/cesium/Workers/BoxGeometry-4985457c.js +0 -25
  334. package/dist/assets/cesium/Workers/Color-cc8c18b3.js +0 -25
  335. package/dist/assets/cesium/Workers/ComponentDatatype-0200bf8c.js +0 -25
  336. package/dist/assets/cesium/Workers/CoplanarPolygonGeometryLibrary-4345acdf.js +0 -25
  337. package/dist/assets/cesium/Workers/CorridorGeometryLibrary-850a6c35.js +0 -25
  338. package/dist/assets/cesium/Workers/CylinderGeometry-57a1051a.js +0 -25
  339. package/dist/assets/cesium/Workers/CylinderGeometryLibrary-62ce5a1f.js +0 -25
  340. package/dist/assets/cesium/Workers/EllipseGeometry-8627398f.js +0 -25
  341. package/dist/assets/cesium/Workers/EllipseGeometryLibrary-e5919563.js +0 -25
  342. package/dist/assets/cesium/Workers/EllipseOutlineGeometry-96fd4ae1.js +0 -25
  343. package/dist/assets/cesium/Workers/EllipsoidGeodesic-8bfefbff.js +0 -25
  344. package/dist/assets/cesium/Workers/EllipsoidGeometry-377329b9.js +0 -25
  345. package/dist/assets/cesium/Workers/EllipsoidOutlineGeometry-e6e16e49.js +0 -25
  346. package/dist/assets/cesium/Workers/EllipsoidRhumbLine-03528f73.js +0 -25
  347. package/dist/assets/cesium/Workers/EllipsoidTangentPlane-c080fd1b.js +0 -25
  348. package/dist/assets/cesium/Workers/EncodedCartesian3-ea0e408f.js +0 -25
  349. package/dist/assets/cesium/Workers/FrustumGeometry-a8b5d817.js +0 -25
  350. package/dist/assets/cesium/Workers/GeometryAttribute-8458a8fd.js +0 -25
  351. package/dist/assets/cesium/Workers/GeometryAttributes-ac0f8485.js +0 -25
  352. package/dist/assets/cesium/Workers/GeometryInstance-ee3aa3ba.js +0 -25
  353. package/dist/assets/cesium/Workers/GeometryOffsetAttribute-08ae0c50.js +0 -25
  354. package/dist/assets/cesium/Workers/GeometryPipeline-33ca229c.js +0 -25
  355. package/dist/assets/cesium/Workers/IndexDatatype-e713bfd2.js +0 -25
  356. package/dist/assets/cesium/Workers/IntersectionTests-eb4db8e0.js +0 -25
  357. package/dist/assets/cesium/Workers/Matrix2-eefef8eb.js +0 -25
  358. package/dist/assets/cesium/Workers/OrientedBoundingBox-5193f9a2.js +0 -25
  359. package/dist/assets/cesium/Workers/Plane-b0299683.js +0 -25
  360. package/dist/assets/cesium/Workers/PolygonGeometryLibrary-b61295f3.js +0 -25
  361. package/dist/assets/cesium/Workers/PolygonPipeline-eb527514.js +0 -25
  362. package/dist/assets/cesium/Workers/PolylinePipeline-0f23dd84.js +0 -25
  363. package/dist/assets/cesium/Workers/PolylineVolumeGeometryLibrary-2d903430.js +0 -25
  364. package/dist/assets/cesium/Workers/PrimitivePipeline-e2640413.js +0 -25
  365. package/dist/assets/cesium/Workers/RectangleGeometryLibrary-ae8bf8a5.js +0 -25
  366. package/dist/assets/cesium/Workers/RuntimeError-5baf5c66.js +0 -25
  367. package/dist/assets/cesium/Workers/TerrainEncoding-bc10ab54.js +0 -25
  368. package/dist/assets/cesium/Workers/Transforms-d2e5867e.js +0 -63
  369. package/dist/assets/cesium/Workers/VertexFormat-5ec0d9ff.js +0 -25
  370. package/dist/assets/cesium/Workers/WallGeometryLibrary-1a33e416.js +0 -25
  371. package/dist/assets/cesium/Workers/WebGLConstants-5b50ced1.js +0 -25
  372. package/dist/assets/cesium/Workers/WebMercatorProjection-cd2f30c2.js +0 -25
  373. package/dist/assets/cesium/Workers/_commonjsHelpers-bc29abbc.js +0 -25
  374. package/dist/assets/cesium/Workers/arrayRemoveDuplicates-f13aceb1.js +0 -25
  375. package/dist/assets/cesium/Workers/combine-7533016d.js +0 -25
  376. package/dist/assets/cesium/Workers/defaultValue-0c475b81.js +0 -25
  377. package/dist/assets/cesium/Workers/package.json +0 -1
  378. package/dist/assets/ui.dffe32.css +0 -1
  379. package/plugins/@vcmap/pluginExample/config.json +0 -6
  380. package/plugins/@vcmap/pluginExample/package.json +0 -7
  381. package/plugins/categoryTest/ItemEditor.vue +0 -13
  382. package/plugins/test/allIconsComponent.vue +0 -50
  383. package/plugins/test/index.js +0 -207
  384. package/plugins/test/toolbox-data.js +0 -154
  385. package/plugins/wizardExample/wizardExample.vue +0 -77
  386. package/src/components/form-inputs-controls/VcsColorPicker.vue +0 -85
@@ -5,14 +5,18 @@
5
5
  @click="clicked"
6
6
  @dragstart="dragStart"
7
7
  @dragend="dragEnd"
8
- :draggable="isDynamic"
8
+ :draggable="isDraggable"
9
9
  :class="{
10
10
  'rounded': !isDocked,
11
- 'marginToTop': isDocked
11
+ 'marginToTop': isDocked,
12
+ 'rounded-br': isDynamicLeft,
13
+ 'rounded-bl': isDynamicRight,
12
14
  }"
13
15
  >
14
16
  <div
15
17
  v-if="!windowState.hideHeader"
18
+ @mousedown="mousedown"
19
+ @mouseup="isDraggable = false"
16
20
  class="pa-2"
17
21
  :class="{
18
22
  'cursor-grab': isDynamic,
@@ -23,7 +27,7 @@
23
27
  </div>
24
28
  <v-divider />
25
29
  <div
26
- class="overflow-x-hidden"
30
+ class="overflow-x-hidden mb-1"
27
31
  >
28
32
  <slot />
29
33
  </div>
@@ -40,7 +44,7 @@
40
44
 
41
45
  <script>
42
46
  import {
43
- computed, inject, provide,
47
+ computed, inject, provide, ref,
44
48
  } from 'vue';
45
49
  import { VDivider, VSheet } from 'vuetify/lib';
46
50
  import { WindowSlot } from './windowManager.js';
@@ -86,12 +90,30 @@
86
90
 
87
91
  const isDynamic = computed(() => props.slotWindow !== WindowSlot.STATIC);
88
92
  const isDocked = computed(() => props.slotWindow !== WindowSlot.DETACHED);
93
+ const isDockedLeft = computed(() => {
94
+ return props.slotWindow === WindowSlot.STATIC || props.slotWindow === WindowSlot.DYNAMIC_LEFT;
95
+ });
96
+ const isDockedRight = computed(() => props.slotWindow === WindowSlot.DYNAMIC_RIGHT);
97
+ const isDraggable = ref(false);
89
98
  /**
90
99
  * @param {PointerEvent} e
91
100
  */
92
101
  const clicked = (e) => {
93
102
  emit('click', e);
94
103
  };
104
+ /**
105
+ * Sets window as draggable on mousedown on header.
106
+ * Stops bubbling of header action buttons.
107
+ * @param {MouseEvent} e
108
+ */
109
+ const mousedown = (e) => {
110
+ if (e.target.closest('button')) {
111
+ e.preventDefault();
112
+ e.stopPropagation();
113
+ return;
114
+ }
115
+ isDraggable.value = isDynamic.value;
116
+ };
95
117
  /**
96
118
  * @type {DragEvent}
97
119
  */
@@ -100,7 +122,16 @@
100
122
  * @param {DragEvent} e
101
123
  */
102
124
  const dragStart = (e) => {
125
+ if (!isDraggable.value) {
126
+ e.preventDefault();
127
+ e.stopPropagation();
128
+ }
103
129
  startEvent = e;
130
+ // set mouse cursor to move
131
+ e.dataTransfer.effectAllowed = 'move';
132
+ const preventDefaultDragover = dragOverEvent => dragOverEvent.preventDefault();
133
+ e.target.parentElement.ondragover = preventDefaultDragover;
134
+ app.maps.target.ondragover = preventDefaultDragover;
104
135
  };
105
136
  /**
106
137
  * @param {DragEvent} endEvent
@@ -112,14 +143,21 @@
112
143
  };
113
144
  emit('moved', movement);
114
145
  startEvent = null;
146
+ isDraggable.value = false;
147
+ endEvent.target.parentElement.ondragover = null;
148
+ app.maps.target.ondragover = null;
115
149
  };
116
150
 
117
151
  return {
118
152
  isDynamic,
119
153
  isDocked,
154
+ isDynamicLeft: isDockedLeft,
155
+ isDynamicRight: isDockedRight,
156
+ isDraggable,
120
157
  clicked,
121
158
  dragStart,
122
159
  dragEnd,
160
+ mousedown,
123
161
  };
124
162
  },
125
163
  };
@@ -18,7 +18,7 @@
18
18
  <template v-if="windowState.headerActions?.length > 0">
19
19
  <VcsActionButtonList
20
20
  :actions="windowState.headerActions"
21
- :overflow-count="windowState.headerActionsOverflowCount ?? 3"
21
+ :overflow-count="windowState.headerActionsOverflow ?? 3"
22
22
  small
23
23
  />
24
24
  <v-divider
@@ -70,7 +70,7 @@ export function getWindowPositionOptions(x, y, target, alignment = WindowAlignme
70
70
 
71
71
  /**
72
72
  * Get window position options based on a pixel in the map
73
- * @param {import("@vcmap/cesium").Cartesian2} windowPosition - the window position, as retrieved from an InteractionEvent
73
+ * @param {import("@vcmap-cesium/engine").Cartesian2} windowPosition - the window position, as retrieved from an InteractionEvent
74
74
  * @param {HTMLElement} target - the map's target { @link @import("@vcmap/core").MapCollection }
75
75
  * @param {WindowAlignment} [alignment]
76
76
  * @returns {WindowPositionOptions}
@@ -121,7 +121,7 @@ export function getFittedWindowPositionOptions(x, y, width, height, target) {
121
121
  /**
122
122
  * Fits a window aligned top left, so it fits into currently active map. This will change the alignment to be bottom or right depending
123
123
  * on if the window would not fit into active map element.
124
- * @param {import("@vcmap/cesium").Cartesian2} windowPosition - the window position, as retrieved from an InteractionEvent
124
+ * @param {import("@vcmap-cesium/engine").Cartesian2} windowPosition - the window position, as retrieved from an InteractionEvent
125
125
  * @param {number} width
126
126
  * @param {number} height
127
127
  * @param {HTMLElement} target - the map's target { @link @import("@vcmap/core").MapCollection }
@@ -251,15 +251,6 @@ export function moveWindow(id, translation, windowManager, targetSize) {
251
251
  if (windowPositionOptions.right !== undefined) {
252
252
  windowPositionOptions.right -= translation.dx;
253
253
  }
254
- // clear size restrictions
255
- if (position.maxHeight === WindowPositions.TOP_RIGHT.maxHeight &&
256
- slot.value === WindowSlot.DYNAMIC_RIGHT) {
257
- windowPositionOptions.maxHeight = 'unset';
258
- }
259
- if (position.maxWidth === WindowPositions.TOP_LEFT.maxWidth &&
260
- slot.value === WindowSlot.DYNAMIC_LEFT) {
261
- windowPositionOptions.maxWidth = 'unset';
262
- }
263
254
  const updatedPosition = updateWindowPosition(position, windowPositionOptions, targetSize);
264
255
  windowManager.setWindowPositionOptions(id, updatedPosition);
265
256
  }
@@ -320,6 +311,11 @@ export function clipToTargetSize(windowPositionOptions, targetSize) {
320
311
  if (windowPositionOptions.maxHeight !== undefined) {
321
312
  clippedPosition.maxHeight = Math.min(windowPositionOptions.maxHeight, targetHeight);
322
313
  }
314
+ // max width of a top left 2 window (active static window)
315
+ const topLeft2 = posToNumber(WindowPositions.TOP_LEFT2.left, 'left', targetSize);
316
+ if (clippedPosition.left === topLeft2) {
317
+ clippedPosition.maxWidth = Math.min(clippedPosition.maxWidth - topLeft2, targetWidth);
318
+ }
323
319
 
324
320
  return clippedPosition;
325
321
  }
@@ -62,16 +62,14 @@ export const WindowPositions = {
62
62
  TOP_LEFT: {
63
63
  left: '0px',
64
64
  top: '0px',
65
- maxWidth: '320px',
66
65
  },
67
66
  TOP_LEFT2: {
68
- left: '320px',
67
+ left: '322px', // 2px space
69
68
  top: '0px',
70
69
  },
71
70
  TOP_RIGHT: {
72
71
  right: '0px',
73
72
  top: '0px',
74
- maxHeight: '70%',
75
73
  },
76
74
  DETACHED: {
77
75
  left: '200px',
@@ -120,7 +118,7 @@ export function isSlotPosition(windowPosition) {
120
118
  * @property {string} [headerTitle]
121
119
  * @property {string} [headerIcon]
122
120
  * @property {Array<VcsAction>} [headerActions]
123
- * @property {number} [headerActionsOverflowCount]
121
+ * @property {number} [headerActionsOverflow]
124
122
  * @property {string} [infoUrl] An optional url referencing help or further information on the window's content.
125
123
  * @property {boolean} [dockable] Auto derived from hidePin, current slot, current position and initial position.
126
124
  * @property {Object<string, string>} [styles] Can be used to add additional styles to the root WindowComponent. Use Vue Style Bindings Object Syntax https://vuejs.org/v2/guide/class-and-style.html
@@ -206,7 +204,7 @@ export function windowPositionFromOptions(windowPositionOptions, windowPosition
206
204
  /**
207
205
  * Sets a position on a component. Updates dockable state.
208
206
  * @param {WindowComponent} windowComponent
209
- * @param {WindowComponentOptions} windowPositionOptions
207
+ * @param {WindowPositionOptions} windowPositionOptions
210
208
  */
211
209
  function setWindowPosition(windowComponent, windowPositionOptions) {
212
210
  const windowPosition = windowPositionFromOptions(windowPositionOptions, windowComponent.position);
@@ -309,9 +307,15 @@ class WindowManager {
309
307
  const staticWindow = this._findWindowBySlot(WindowSlot.STATIC);
310
308
  const dynamicWindowLeft = this._findWindowBySlot(WindowSlot.DYNAMIC_LEFT);
311
309
  if (staticWindow && dynamicWindowLeft) {
312
- this.setWindowPositionOptions(dynamicWindowLeft.id, WindowPositions.TOP_LEFT2);
310
+ this.setWindowPositionOptions(
311
+ dynamicWindowLeft.id,
312
+ { ...dynamicWindowLeft.position, ...WindowPositions.TOP_LEFT2 },
313
+ );
313
314
  } else if (!staticWindow && dynamicWindowLeft) {
314
- this.setWindowPositionOptions(dynamicWindowLeft.id, WindowPositions.TOP_LEFT);
315
+ this.setWindowPositionOptions(
316
+ dynamicWindowLeft.id,
317
+ { ...dynamicWindowLeft.position, ...WindowPositions.TOP_LEFT },
318
+ );
315
319
  }
316
320
  }
317
321
  }
@@ -333,18 +337,18 @@ class WindowManager {
333
337
  */
334
338
  _getPositionOptionsForSlot(slot, position) {
335
339
  if (slot === WindowSlot.STATIC) {
336
- return WindowPositions.TOP_LEFT;
340
+ return { ...WindowPositions.TOP_LEFT, maxWidth: '320px' };
337
341
  }
338
342
  if (slot === WindowSlot.DYNAMIC_LEFT) {
339
343
  const windowAtStatic = this._findWindowBySlot(WindowSlot.STATIC);
340
344
  if (windowAtStatic) {
341
- return WindowPositions.TOP_LEFT2;
345
+ return { ...position, ...WindowPositions.TOP_LEFT2 };
342
346
  } else {
343
- return WindowPositions.TOP_LEFT;
347
+ return { ...position, ...WindowPositions.TOP_LEFT };
344
348
  }
345
349
  }
346
350
  if (slot === WindowSlot.DYNAMIC_RIGHT) {
347
- return WindowPositions.TOP_RIGHT;
351
+ return { ...position, ...WindowPositions.TOP_RIGHT };
348
352
  }
349
353
  return position || WindowPositions.DETACHED;
350
354
  }
@@ -8,7 +8,7 @@
8
8
  d="M4,0,8,13H0Z"
9
9
  transform="translate(1)"
10
10
  fill="currentColor"
11
- @click="emit(0)"
11
+ @click="emit($event, 0)"
12
12
  />
13
13
  <path
14
14
  :class="canEmit ? 'cursor-pointer' : ''"
@@ -17,7 +17,7 @@
17
17
  d="M4,0,8,13H0Z"
18
18
  transform="translate(9 58) rotate(180)"
19
19
  fill="rgba(88,88,88,0.51)"
20
- @click="emit(180)"
20
+ @click="emit($event, 180)"
21
21
  />
22
22
  </g>
23
23
  <g id="Group_1653" data-name="Group 1653" transform="translate(0 33) rotate(-90)">
@@ -27,7 +27,7 @@
27
27
  data-name="Polygon 14"
28
28
  d="M4,0,8,13H0Z"
29
29
  fill="rgba(88,88,88,0.51)"
30
- @click="emit(270)"
30
+ @click="emit($event, 270)"
31
31
  />
32
32
  <path
33
33
  :class="canEmit ? 'cursor-pointer' : ''"
@@ -36,7 +36,7 @@
36
36
  d="M4,0,8,13H0Z"
37
37
  transform="translate(8 58) rotate(180)"
38
38
  fill="rgba(88,88,88,0.51)"
39
- @click="emit(90)"
39
+ @click="emit($event, 90)"
40
40
  />
41
41
  </g>
42
42
  <g id="Group_1672" data-name="Group 1672" transform="translate(1)" v-if="!hideTicks">
@@ -143,19 +143,25 @@
143
143
  },
144
144
  },
145
145
  methods: {
146
- emit(event) {
146
+ emit(event, dir) {
147
147
  if (this.canEmit) {
148
- this.$emit('direction-click', event);
148
+ event.preventDefault();
149
+ event.stopPropagation();
150
+ this.$emit('direction-click', dir);
149
151
  }
150
152
  },
151
153
  },
152
154
  };
153
155
  </script>
154
156
 
155
- <style scoped>
157
+ <style lang="scss" scoped>
156
158
  svg {
157
159
  width: 85%;
158
160
  height: 85%;
159
161
  margin: 7.5%;
160
162
  }
163
+
164
+ svg path:hover {
165
+ fill: var(--v-base-lighten5) !important;
166
+ }
161
167
  </style>
@@ -23,6 +23,14 @@
23
23
  <v-row justify="center" v-if="is3D && $vuetify.breakpoint.mdAndUp">
24
24
  <TiltSlider v-model="tilt" />
25
25
  </v-row>
26
+ <v-row justify="center">
27
+ <OrientationToolsButton
28
+ v-if="homeAction.icon"
29
+ :icon="homeAction.icon"
30
+ :tooltip="homeAction.title"
31
+ @click.stop="homeAction.callback($event)"
32
+ />
33
+ </v-row>
26
34
  <v-row justify="center">
27
35
  <OrientationToolsButton
28
36
  :icon="overviewAction.icon"
@@ -36,10 +44,12 @@
36
44
  </template>
37
45
 
38
46
  <script>
39
- import { computed, inject, ref, reactive, onUnmounted } from 'vue';
47
+ import {
48
+ computed, inject, ref, reactive, onUnmounted,
49
+ } from 'vue';
40
50
  import { ObliqueMap, CesiumMap } from '@vcmap/core';
41
51
  import { VContainer, VRow } from 'vuetify/lib';
42
- import { createOverviewMapAction } from '../actions/actionHelper.js';
52
+ import { createGoToViewpointAction, createOverviewMapAction } from '../actions/actionHelper.js';
43
53
  import { getWindowComponentOptions } from './overviewMap.js';
44
54
  import VcsCompass from './vcsCompass.vue';
45
55
  import VcsZoomButton from './vcsZoomButton.vue';
@@ -47,6 +57,53 @@
47
57
  import ObliqueRotation from './obliqueRotation.vue';
48
58
  import OrientationToolsButton from './orientationToolsButton.vue';
49
59
 
60
+ /**
61
+ * Creates a go-to viewpoint action from a startingViewpointName defined in a context
62
+ * @param {VcsUiApp} app
63
+ * @returns {{action: import("vue").Reactive<{}>, destroy: function():void}}
64
+ */
65
+ function setupHomeButton(app) {
66
+ const initialAction = { icon: undefined, title: undefined, active: undefined, callback: undefined };
67
+ const action = reactive({ ...initialAction });
68
+ /**
69
+ * Gets the starting viewpoint of the last added context, where a startingViewpointName was defined
70
+ * and sets it on the home button action.
71
+ */
72
+ const updateStartingViewpoint = () => {
73
+ let viewpoint = null;
74
+ for (let idx = app.contexts.length - 1; idx >= 0; idx--) {
75
+ const { startingViewpointName } = app.contexts[idx].config;
76
+ if (startingViewpointName && app.viewpoints.hasKey(startingViewpointName)) {
77
+ viewpoint = app.viewpoints.getByKey(startingViewpointName);
78
+ break;
79
+ }
80
+ }
81
+ if (!viewpoint) {
82
+ Object.assign(action, { ...initialAction });
83
+ } else {
84
+ Object.assign(action, createGoToViewpointAction(
85
+ {
86
+ name: 'home-action',
87
+ title: 'navigation.homeButton',
88
+ icon: '$vcsHomePoint',
89
+ },
90
+ viewpoint,
91
+ app.viewpoints,
92
+ app.maps,
93
+ ));
94
+ }
95
+ };
96
+
97
+ const listener = [
98
+ app.contextAdded.addEventListener(updateStartingViewpoint),
99
+ app.contextRemoved.addEventListener(updateStartingViewpoint),
100
+ ];
101
+
102
+ const destroy = () => { listener.forEach(cb => cb()); };
103
+
104
+ return { action, destroy };
105
+ }
106
+
50
107
  /**
51
108
  * @enum {string}
52
109
  */
@@ -143,11 +200,14 @@
143
200
  app.windowManager,
144
201
  );
145
202
 
203
+ const { action: homeAction, destroy: homeDestroy } = setupHomeButton(app);
204
+
146
205
  onUnmounted(() => {
147
206
  if (destroy) {
148
207
  destroy();
149
208
  }
150
209
  postRenderHandler();
210
+ homeDestroy();
151
211
  });
152
212
 
153
213
  return {
@@ -159,6 +219,7 @@
159
219
  zoomIn() { zoom(app.maps.activeMap); }, // debounce?
160
220
  zoomOut() { zoom(app.maps.activeMap, true); },
161
221
  overviewAction: reactive(action),
222
+ homeAction,
162
223
  };
163
224
  },
164
225
  };
@@ -168,7 +229,7 @@
168
229
  .nav-container {
169
230
  position: absolute;
170
231
  right: 2rem;
171
- bottom: 2rem;
232
+ bottom: 1rem;
172
233
  width: unset;
173
234
  &.mobile{
174
235
  top: 1rem;
@@ -178,7 +239,8 @@
178
239
  }
179
240
  .nav-container > {
180
241
  .row {
181
- margin-bottom: 15px;
242
+ margin-top: 15px;
243
+ margin-bottom: 0;
182
244
  }
183
245
  }
184
246
  </style>
@@ -5,7 +5,7 @@
5
5
  >
6
6
  <template #activator="{ on, attrs }">
7
7
  <v-card
8
- elevation="2"
8
+ elevation="0"
9
9
  class="h-8 w-8 d-flex align-center justify-center text-center btn-orientation-tools"
10
10
  v-bind="{ ...$attrs, ...attrs }"
11
11
  v-on="{ ...$listeners, ...on }"
@@ -14,9 +14,10 @@ import {
14
14
  } from '@vcmap/core';
15
15
  import Point from 'ol/geom/Point.js';
16
16
  import Feature from 'ol/Feature.js';
17
- import { Math as CesiumMath, Color } from '@vcmap/cesium';
17
+ import { Math as CesiumMath, Color } from '@vcmap-cesium/engine';
18
18
  import { unByKey } from 'ol/Observable.js';
19
19
  import VectorSource from 'ol/source/Vector.js';
20
+ import { Icon } from 'ol/style.js';
20
21
  import { WindowSlot } from '../manager/window/windowManager.js';
21
22
  import OverviewMapClickedInteraction from './overviewMapClickedInteraction.js';
22
23
  import { defaultPrimaryColor } from '../vuePlugins/vuetify.js';
@@ -34,16 +35,29 @@ export function getWindowComponentOptions() {
34
35
  id: 'overview-map-container',
35
36
  state: {
36
37
  hideHeader: true,
38
+ classes: ['overview-map'],
37
39
  },
38
40
  position: {
39
41
  right: '100px',
40
42
  bottom: '25px',
41
- width: '272px',
42
- height: '223px',
43
+ width: '300px',
44
+ height: '240px',
43
45
  },
44
46
  };
45
47
  }
46
48
 
49
+ /**
50
+ * @param {string} color
51
+ * @returns {import("ol/style/Icon").Options}
52
+ */
53
+ function getCameraIcon(color) {
54
+ return {
55
+ src: `data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E%3Csvg id='cam' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 81.06 49.47'%3E%3Cdefs%3E%3ClinearGradient id='1' x1='40.53' y1='48.97' x2='40.53' y2='.25' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='${encodeURIComponent(color)}'/%3E%3Cstop offset='.46' stop-color='${encodeURIComponent(color)}' stop-opacity='.60'/%3E%3Cstop offset='.65' stop-color='${encodeURIComponent(color)}' stop-opacity='.40'/%3E%3Cstop offset='.83' stop-color='${encodeURIComponent(color)}' stop-opacity='.20'/%3E%3Cstop offset='.89' stop-color='${encodeURIComponent(color)}' stop-opacity='.15'/%3E%3Cstop offset='1' stop-color='transparent' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='2' x1='40.53' y1='49.37' x2='40.53' y2='0' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='.24' stop-color='${encodeURIComponent(color)}'/%3E%3Cstop offset='.38' stop-color='${encodeURIComponent(color)}' stop-opacity='.93'/%3E%3Cstop offset='.57' stop-color='${encodeURIComponent(color)}' stop-opacity='.70'/%3E%3Cstop offset='.78' stop-color='${encodeURIComponent(color)}' stop-opacity='.38'/%3E%3Cstop offset='1' stop-color='transparent' stop-opacity='0'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpolygon points='40.53 48.97 80.53 .25 .53 .25 40.53 48.97' fill='url(%231)' stroke='url(%232)' stroke-miterlimit='10' stroke-width='.5px'/%3E%3Ccircle cx='40.53' cy='42.97' r='6' fill='${encodeURIComponent(color)}' stroke='%23fff' stroke-miterlimit='10'/%3E%3C/svg%3E`,
56
+ scale: 0.5,
57
+ color,
58
+ };
59
+ }
60
+
47
61
  /**
48
62
  * A 2D OverviewMap for cesium, openlayers and oblique map.
49
63
  * Baselayers are added to the OverviewMap using `showInOverviewMap` flag within the properties bag of a layer configuration.
@@ -151,10 +165,7 @@ class OverviewMap {
151
165
  * @type {import("@vcmap/core").VectorStyleItem}
152
166
  */
153
167
  this.cameraIconStyle = new VectorStyleItem({
154
- image: {
155
- src: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAAA8CAYAAADxJz2MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDphMzhlODgyYy00ZGYzLTZkNGMtYWZhYy1hYTkwOTI3MjRiYjEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NEYxRkE1MDlENjRDMTFFNTlGRjhFMzM3RTA3MDJFMDciIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NEYxRkE1MDhENjRDMTFFNTlGRjhFMzM3RTA3MDJFMDciIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OGJiODg5ODItZGM0Zi0xNjQyLWEyZDYtODJkZTcxMGNhNjkwIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6YzY5MTdhNjAtZDYzYy0xMWU1LThjNTgt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',
156
- anchor: [0.5, 1],
157
- },
168
+ image: getCameraIcon(defaultPrimaryColor),
158
169
  });
159
170
 
160
171
  /**
@@ -220,12 +231,12 @@ class OverviewMap {
220
231
  }),
221
232
  this._app.uiConfig.added.addEventListener((item) => {
222
233
  if (item?.name === 'primaryColor') {
223
- this._setObliqueColor(item.value);
234
+ this._updatePrimaryColor(item.value);
224
235
  }
225
236
  }),
226
237
  this._app.uiConfig.removed.addEventListener((item) => {
227
238
  if (item?.name === 'primaryColor') {
228
- this._setObliqueColor(defaultPrimaryColor);
239
+ this._updatePrimaryColor(defaultPrimaryColor);
229
240
  }
230
241
  }),
231
242
  ];
@@ -267,12 +278,16 @@ class OverviewMap {
267
278
  * @param {string} color
268
279
  * @private
269
280
  */
270
- _setObliqueColor(color) {
281
+ _updatePrimaryColor(color) {
271
282
  this.obliqueUnselectedStyle?.stroke?.setColor(color);
272
283
  this.obliqueSelectedStyle?.stroke?.setColor(color);
273
284
  this._obliqueTileLayer?.forceRedraw?.();
274
285
  this._obliqueImageLayer?.forceRedraw?.();
275
286
  this._obliqueSelectedImageLayer?.forceRedraw?.();
287
+ const rotation = this.cameraIconStyle.image.getRotation();
288
+ this.cameraIconStyle.image = new Icon(getCameraIcon(color));
289
+ this.cameraIconStyle.image.setRotation(rotation);
290
+ this._cameraIconLayer?.getFeatureById('cameraFeature')?.setStyle(this.cameraIconStyle.style);
276
291
  }
277
292
 
278
293
  /**
@@ -299,6 +314,7 @@ class OverviewMap {
299
314
  }
300
315
  await this._map.activate();
301
316
  this.map.setTarget('overview-map-container');
317
+ this._map.target?.firstChild?.classList?.add('overviewMapElement');
302
318
  if (!this._active) {
303
319
  this._mapActivatedListener = this._app.maps.mapActivated.addEventListener(() => {
304
320
  this._clearListeners();
@@ -1,11 +1,9 @@
1
1
  <template>
2
2
  <v-sheet
3
- ref="compassRef"
4
3
  :style="{
5
4
  transform: `rotate(${compassRotation}deg)`,
6
- cursor,
7
5
  }"
8
- @mousedown="trackMouse"
6
+ @click="$emit('input', 0)"
9
7
  class="
10
8
  h-16 w-16
11
9
  d-flex flex-column justify-center align-center
@@ -19,6 +17,7 @@
19
17
  <span>N</span>
20
18
  <MapNavCompass
21
19
  class="position-absolute pos-a-0 primary--text"
20
+ @click="$event.stopPropagation()"
22
21
  @direction-click="$emit('input', $event)"
23
22
  :can-emit="viewMode === '3d' || viewMode === 'oblique'"
24
23
  :hide-ticks="viewMode === 'oblique'"
@@ -28,10 +27,7 @@
28
27
 
29
28
 
30
29
  <script>
31
- import { computed, onUnmounted, ref } from 'vue';
32
-
33
- import { fromEvent, merge, of, Subject } from 'rxjs';
34
- import { takeUntil, tap } from 'rxjs/operators';
30
+ import { computed, ref } from 'vue';
35
31
 
36
32
  import { VSheet } from 'vuetify/lib';
37
33
  import MapNavCompass from './mapNavCompass.vue';
@@ -58,75 +54,10 @@
58
54
  default: 0,
59
55
  },
60
56
  },
61
- setup(props, context) {
62
- const destroy$ = new Subject();
63
- const grabbing = ref();
64
- const compassRef = ref();
65
-
66
- const mouseAngle = ({ referenceEl, event }) => {
67
- const { left, width, top, height } = referenceEl.getBoundingClientRect();
68
- const boxCenter = [left + width / 2, top + height / 2];
69
- const angle = Math.atan2(event.pageX - boxCenter[0], -(event.pageY - boxCenter[1])) * (180 / Math.PI);
70
-
71
- if (angle < 0) {
72
- return 360 + angle;
73
- }
74
-
75
- return angle;
76
- };
77
-
78
- const trackMouse = (e) => {
79
- if (props.viewMode === '3d') {
80
- document.body.style.cursor = 'grabbing';
81
- const timeout = setTimeout(() => {
82
- grabbing.value = true;
83
- }, 200);
84
-
85
- const finish = () => {
86
- clearTimeout(timeout);
87
- document.body.style.cursor = 'unset';
88
- grabbing.value = false;
89
- };
90
-
91
- merge(
92
- of(e),
93
- fromEvent(document.body, 'mousemove'),
94
- ).pipe(
95
- tap((event) => {
96
- if (grabbing.value) {
97
- const rotation = mouseAngle({ event, referenceEl: compassRef.value.$el });
98
- context.emit('input', -1 * rotation);
99
- }
100
- }),
101
- takeUntil(fromEvent(document.body, 'mouseup').pipe(
102
- tap(() => finish()),
103
- )),
104
- takeUntil(fromEvent(document.body, 'mouseleave').pipe(
105
- tap(() => finish()),
106
- )),
107
- takeUntil(destroy$),
108
- ).subscribe();
109
- }
110
- };
111
-
112
- const cursor = computed(() => {
113
- if (props.viewMode === '3d') {
114
- return grabbing.value ? 'grabbing' : 'grab';
115
- }
116
- return 'auto';
117
- });
118
-
57
+ setup(props) {
119
58
  const rotationValue = ref(props.value);
120
59
 
121
- onUnmounted(() => {
122
- destroy$.next();
123
- destroy$.unsubscribe();
124
- });
125
-
126
60
  return {
127
- trackMouse,
128
- compassRef,
129
- cursor,
130
61
  rotationValue,
131
62
  compassRotation: computed(() => -1 * rotationValue.value),
132
63
  };
package/src/setup.js CHANGED
@@ -6,4 +6,4 @@ import * as core from '@vcmap/core';
6
6
 
7
7
  Vue.config.productionTip = false;
8
8
 
9
- window.CESIUM_BASE_URL = '/node_modules/@vcmap/cesium/Build/CesiumUnminified/';
9
+ window.CESIUM_BASE_URL = '/node_modules/@vcmap-cesium/engine/Build/';
@@ -1,7 +1,7 @@
1
1
  import '@mdi/font/css/materialdesignicons.css';
2
2
  import Vue from 'vue';
3
3
  import Vuetify from 'vuetify/lib';
4
- import Icons from '../icons/+all.js';
4
+ import Icons from '../components/icons/+all.js';
5
5
 
6
6
  Vue.use(Vuetify);
7
7