@vcmap/ui 5.0.0-rc.6

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 (449) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +132 -0
  3. package/build/.eslintrc +6 -0
  4. package/build/build.js +165 -0
  5. package/build/buildCesium.js +19 -0
  6. package/build/buildHelpers.js +213 -0
  7. package/build/buildPreview.js +23 -0
  8. package/build/commonViteConfig.js +39 -0
  9. package/build/determineHost.js +46 -0
  10. package/build/generateOLLib.js +196 -0
  11. package/build/getPluginProxies.js +29 -0
  12. package/build/info/api-plugin.js +11 -0
  13. package/build/info/conf.json +21 -0
  14. package/build/info/define-plugin.js +31 -0
  15. package/build/info/package.json +3 -0
  16. package/build/info/publish.js +190 -0
  17. package/build/info/virtual-plugin.js +15 -0
  18. package/build/staging/Dockerfile +2 -0
  19. package/config/aerowest.config.json +378 -0
  20. package/config/base.config.json +1073 -0
  21. package/config/berlin.config.json +529 -0
  22. package/config/dev.config.json +44 -0
  23. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
  24. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
  25. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
  26. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
  27. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
  28. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
  29. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
  30. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
  31. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
  32. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
  33. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
  34. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
  35. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
  36. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
  37. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
  38. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
  39. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
  40. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
  41. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
  42. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
  43. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
  44. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
  45. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
  46. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
  47. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
  48. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
  49. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
  50. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
  51. package/dist/assets/cesium/Assets/Images/bing_maps_credit.png +0 -0
  52. package/dist/assets/cesium/Assets/Images/cesium_credit.png +0 -0
  53. package/dist/assets/cesium/Assets/Images/google_earth_credit.png +0 -0
  54. package/dist/assets/cesium/Assets/Images/ion-credit.png +0 -0
  55. package/dist/assets/cesium/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
  56. package/dist/assets/cesium/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
  57. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
  58. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
  59. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
  60. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
  61. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
  62. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
  63. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
  64. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
  65. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
  66. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
  67. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
  68. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
  69. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
  70. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
  71. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
  72. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
  73. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
  74. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
  75. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
  76. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
  77. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
  78. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
  79. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
  80. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
  81. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
  82. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
  83. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
  84. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
  85. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
  86. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
  87. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
  88. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
  89. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
  90. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
  91. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
  92. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
  93. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
  94. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
  95. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
  96. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
  97. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
  98. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
  99. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml +14 -0
  100. package/dist/assets/cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  101. package/dist/assets/cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  102. package/dist/assets/cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  103. package/dist/assets/cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  104. package/dist/assets/cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  105. package/dist/assets/cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  106. package/dist/assets/cesium/Assets/Textures/maki/airfield.png +0 -0
  107. package/dist/assets/cesium/Assets/Textures/maki/airport.png +0 -0
  108. package/dist/assets/cesium/Assets/Textures/maki/alcohol-shop.png +0 -0
  109. package/dist/assets/cesium/Assets/Textures/maki/america-football.png +0 -0
  110. package/dist/assets/cesium/Assets/Textures/maki/art-gallery.png +0 -0
  111. package/dist/assets/cesium/Assets/Textures/maki/bakery.png +0 -0
  112. package/dist/assets/cesium/Assets/Textures/maki/bank.png +0 -0
  113. package/dist/assets/cesium/Assets/Textures/maki/bar.png +0 -0
  114. package/dist/assets/cesium/Assets/Textures/maki/baseball.png +0 -0
  115. package/dist/assets/cesium/Assets/Textures/maki/basketball.png +0 -0
  116. package/dist/assets/cesium/Assets/Textures/maki/beer.png +0 -0
  117. package/dist/assets/cesium/Assets/Textures/maki/bicycle.png +0 -0
  118. package/dist/assets/cesium/Assets/Textures/maki/building.png +0 -0
  119. package/dist/assets/cesium/Assets/Textures/maki/bus.png +0 -0
  120. package/dist/assets/cesium/Assets/Textures/maki/cafe.png +0 -0
  121. package/dist/assets/cesium/Assets/Textures/maki/camera.png +0 -0
  122. package/dist/assets/cesium/Assets/Textures/maki/campsite.png +0 -0
  123. package/dist/assets/cesium/Assets/Textures/maki/car.png +0 -0
  124. package/dist/assets/cesium/Assets/Textures/maki/cemetery.png +0 -0
  125. package/dist/assets/cesium/Assets/Textures/maki/cesium.png +0 -0
  126. package/dist/assets/cesium/Assets/Textures/maki/chemist.png +0 -0
  127. package/dist/assets/cesium/Assets/Textures/maki/cinema.png +0 -0
  128. package/dist/assets/cesium/Assets/Textures/maki/circle-stroked.png +0 -0
  129. package/dist/assets/cesium/Assets/Textures/maki/circle.png +0 -0
  130. package/dist/assets/cesium/Assets/Textures/maki/city.png +0 -0
  131. package/dist/assets/cesium/Assets/Textures/maki/clothing-store.png +0 -0
  132. package/dist/assets/cesium/Assets/Textures/maki/college.png +0 -0
  133. package/dist/assets/cesium/Assets/Textures/maki/commercial.png +0 -0
  134. package/dist/assets/cesium/Assets/Textures/maki/cricket.png +0 -0
  135. package/dist/assets/cesium/Assets/Textures/maki/cross.png +0 -0
  136. package/dist/assets/cesium/Assets/Textures/maki/dam.png +0 -0
  137. package/dist/assets/cesium/Assets/Textures/maki/danger.png +0 -0
  138. package/dist/assets/cesium/Assets/Textures/maki/disability.png +0 -0
  139. package/dist/assets/cesium/Assets/Textures/maki/dog-park.png +0 -0
  140. package/dist/assets/cesium/Assets/Textures/maki/embassy.png +0 -0
  141. package/dist/assets/cesium/Assets/Textures/maki/emergency-telephone.png +0 -0
  142. package/dist/assets/cesium/Assets/Textures/maki/entrance.png +0 -0
  143. package/dist/assets/cesium/Assets/Textures/maki/farm.png +0 -0
  144. package/dist/assets/cesium/Assets/Textures/maki/fast-food.png +0 -0
  145. package/dist/assets/cesium/Assets/Textures/maki/ferry.png +0 -0
  146. package/dist/assets/cesium/Assets/Textures/maki/fire-station.png +0 -0
  147. package/dist/assets/cesium/Assets/Textures/maki/fuel.png +0 -0
  148. package/dist/assets/cesium/Assets/Textures/maki/garden.png +0 -0
  149. package/dist/assets/cesium/Assets/Textures/maki/gift.png +0 -0
  150. package/dist/assets/cesium/Assets/Textures/maki/golf.png +0 -0
  151. package/dist/assets/cesium/Assets/Textures/maki/grocery.png +0 -0
  152. package/dist/assets/cesium/Assets/Textures/maki/hairdresser.png +0 -0
  153. package/dist/assets/cesium/Assets/Textures/maki/harbor.png +0 -0
  154. package/dist/assets/cesium/Assets/Textures/maki/heart.png +0 -0
  155. package/dist/assets/cesium/Assets/Textures/maki/heliport.png +0 -0
  156. package/dist/assets/cesium/Assets/Textures/maki/hospital.png +0 -0
  157. package/dist/assets/cesium/Assets/Textures/maki/ice-cream.png +0 -0
  158. package/dist/assets/cesium/Assets/Textures/maki/industrial.png +0 -0
  159. package/dist/assets/cesium/Assets/Textures/maki/land-use.png +0 -0
  160. package/dist/assets/cesium/Assets/Textures/maki/laundry.png +0 -0
  161. package/dist/assets/cesium/Assets/Textures/maki/library.png +0 -0
  162. package/dist/assets/cesium/Assets/Textures/maki/lighthouse.png +0 -0
  163. package/dist/assets/cesium/Assets/Textures/maki/lodging.png +0 -0
  164. package/dist/assets/cesium/Assets/Textures/maki/logging.png +0 -0
  165. package/dist/assets/cesium/Assets/Textures/maki/london-underground.png +0 -0
  166. package/dist/assets/cesium/Assets/Textures/maki/marker-stroked.png +0 -0
  167. package/dist/assets/cesium/Assets/Textures/maki/marker.png +0 -0
  168. package/dist/assets/cesium/Assets/Textures/maki/minefield.png +0 -0
  169. package/dist/assets/cesium/Assets/Textures/maki/mobilephone.png +0 -0
  170. package/dist/assets/cesium/Assets/Textures/maki/monument.png +0 -0
  171. package/dist/assets/cesium/Assets/Textures/maki/museum.png +0 -0
  172. package/dist/assets/cesium/Assets/Textures/maki/music.png +0 -0
  173. package/dist/assets/cesium/Assets/Textures/maki/oil-well.png +0 -0
  174. package/dist/assets/cesium/Assets/Textures/maki/park.png +0 -0
  175. package/dist/assets/cesium/Assets/Textures/maki/park2.png +0 -0
  176. package/dist/assets/cesium/Assets/Textures/maki/parking-garage.png +0 -0
  177. package/dist/assets/cesium/Assets/Textures/maki/parking.png +0 -0
  178. package/dist/assets/cesium/Assets/Textures/maki/pharmacy.png +0 -0
  179. package/dist/assets/cesium/Assets/Textures/maki/pitch.png +0 -0
  180. package/dist/assets/cesium/Assets/Textures/maki/place-of-worship.png +0 -0
  181. package/dist/assets/cesium/Assets/Textures/maki/playground.png +0 -0
  182. package/dist/assets/cesium/Assets/Textures/maki/police.png +0 -0
  183. package/dist/assets/cesium/Assets/Textures/maki/polling-place.png +0 -0
  184. package/dist/assets/cesium/Assets/Textures/maki/post.png +0 -0
  185. package/dist/assets/cesium/Assets/Textures/maki/prison.png +0 -0
  186. package/dist/assets/cesium/Assets/Textures/maki/rail-above.png +0 -0
  187. package/dist/assets/cesium/Assets/Textures/maki/rail-light.png +0 -0
  188. package/dist/assets/cesium/Assets/Textures/maki/rail-metro.png +0 -0
  189. package/dist/assets/cesium/Assets/Textures/maki/rail-underground.png +0 -0
  190. package/dist/assets/cesium/Assets/Textures/maki/rail.png +0 -0
  191. package/dist/assets/cesium/Assets/Textures/maki/religious-christian.png +0 -0
  192. package/dist/assets/cesium/Assets/Textures/maki/religious-jewish.png +0 -0
  193. package/dist/assets/cesium/Assets/Textures/maki/religious-muslim.png +0 -0
  194. package/dist/assets/cesium/Assets/Textures/maki/restaurant.png +0 -0
  195. package/dist/assets/cesium/Assets/Textures/maki/roadblock.png +0 -0
  196. package/dist/assets/cesium/Assets/Textures/maki/rocket.png +0 -0
  197. package/dist/assets/cesium/Assets/Textures/maki/school.png +0 -0
  198. package/dist/assets/cesium/Assets/Textures/maki/scooter.png +0 -0
  199. package/dist/assets/cesium/Assets/Textures/maki/shop.png +0 -0
  200. package/dist/assets/cesium/Assets/Textures/maki/skiing.png +0 -0
  201. package/dist/assets/cesium/Assets/Textures/maki/slaughterhouse.png +0 -0
  202. package/dist/assets/cesium/Assets/Textures/maki/soccer.png +0 -0
  203. package/dist/assets/cesium/Assets/Textures/maki/square-stroked.png +0 -0
  204. package/dist/assets/cesium/Assets/Textures/maki/square.png +0 -0
  205. package/dist/assets/cesium/Assets/Textures/maki/star-stroked.png +0 -0
  206. package/dist/assets/cesium/Assets/Textures/maki/star.png +0 -0
  207. package/dist/assets/cesium/Assets/Textures/maki/suitcase.png +0 -0
  208. package/dist/assets/cesium/Assets/Textures/maki/swimming.png +0 -0
  209. package/dist/assets/cesium/Assets/Textures/maki/telephone.png +0 -0
  210. package/dist/assets/cesium/Assets/Textures/maki/tennis.png +0 -0
  211. package/dist/assets/cesium/Assets/Textures/maki/theatre.png +0 -0
  212. package/dist/assets/cesium/Assets/Textures/maki/toilets.png +0 -0
  213. package/dist/assets/cesium/Assets/Textures/maki/town-hall.png +0 -0
  214. package/dist/assets/cesium/Assets/Textures/maki/town.png +0 -0
  215. package/dist/assets/cesium/Assets/Textures/maki/triangle-stroked.png +0 -0
  216. package/dist/assets/cesium/Assets/Textures/maki/triangle.png +0 -0
  217. package/dist/assets/cesium/Assets/Textures/maki/village.png +0 -0
  218. package/dist/assets/cesium/Assets/Textures/maki/warehouse.png +0 -0
  219. package/dist/assets/cesium/Assets/Textures/maki/waste-basket.png +0 -0
  220. package/dist/assets/cesium/Assets/Textures/maki/water.png +0 -0
  221. package/dist/assets/cesium/Assets/Textures/maki/wetland.png +0 -0
  222. package/dist/assets/cesium/Assets/Textures/maki/zoo.png +0 -0
  223. package/dist/assets/cesium/Assets/Textures/moonSmall.jpg +0 -0
  224. package/dist/assets/cesium/Assets/Textures/pin.svg +1 -0
  225. package/dist/assets/cesium/Assets/Textures/waterNormals.jpg +0 -0
  226. package/dist/assets/cesium/Assets/Textures/waterNormalsSmall.jpg +0 -0
  227. package/dist/assets/cesium/Assets/approximateTerrainHeights.json +1 -0
  228. package/dist/assets/cesium/Workers/ArcType-fc72c06c.js +1 -0
  229. package/dist/assets/cesium/Workers/AttributeCompression-27507afe.js +1 -0
  230. package/dist/assets/cesium/Workers/AxisAlignedBoundingBox-7565c1e8.js +1 -0
  231. package/dist/assets/cesium/Workers/BoundingRectangle-9d707275.js +1 -0
  232. package/dist/assets/cesium/Workers/BoxGeometry-fb31d3b5.js +1 -0
  233. package/dist/assets/cesium/Workers/Color-56bb5728.js +1 -0
  234. package/dist/assets/cesium/Workers/ComponentDatatype-a15c9a19.js +1 -0
  235. package/dist/assets/cesium/Workers/CoplanarPolygonGeometryLibrary-72143c19.js +1 -0
  236. package/dist/assets/cesium/Workers/CorridorGeometryLibrary-7bae1712.js +1 -0
  237. package/dist/assets/cesium/Workers/CylinderGeometry-331891fe.js +1 -0
  238. package/dist/assets/cesium/Workers/CylinderGeometryLibrary-76cda53e.js +1 -0
  239. package/dist/assets/cesium/Workers/EllipseGeometry-5e3f67b6.js +1 -0
  240. package/dist/assets/cesium/Workers/EllipseGeometryLibrary-dbc15162.js +1 -0
  241. package/dist/assets/cesium/Workers/EllipseOutlineGeometry-21191fce.js +1 -0
  242. package/dist/assets/cesium/Workers/EllipsoidGeodesic-cc3bace8.js +1 -0
  243. package/dist/assets/cesium/Workers/EllipsoidGeometry-8bfa24a9.js +1 -0
  244. package/dist/assets/cesium/Workers/EllipsoidOutlineGeometry-48d9c023.js +1 -0
  245. package/dist/assets/cesium/Workers/EllipsoidRhumbLine-125a8b72.js +1 -0
  246. package/dist/assets/cesium/Workers/EllipsoidTangentPlane-678e34e4.js +1 -0
  247. package/dist/assets/cesium/Workers/EncodedCartesian3-96fdc0ef.js +1 -0
  248. package/dist/assets/cesium/Workers/FrustumGeometry-9ab86004.js +1 -0
  249. package/dist/assets/cesium/Workers/GeometryAttribute-3915ea0b.js +1 -0
  250. package/dist/assets/cesium/Workers/GeometryAttributes-32b29525.js +1 -0
  251. package/dist/assets/cesium/Workers/GeometryInstance-13e4ff38.js +1 -0
  252. package/dist/assets/cesium/Workers/GeometryOffsetAttribute-8c5e10db.js +1 -0
  253. package/dist/assets/cesium/Workers/GeometryPipeline-e0eb4567.js +1 -0
  254. package/dist/assets/cesium/Workers/IndexDatatype-f1dcdf35.js +1 -0
  255. package/dist/assets/cesium/Workers/IntersectionTests-ac2459de.js +1 -0
  256. package/dist/assets/cesium/Workers/Matrix2-37e55508.js +1 -0
  257. package/dist/assets/cesium/Workers/OrientedBoundingBox-e9c07538.js +1 -0
  258. package/dist/assets/cesium/Workers/Plane-6ee42cab.js +1 -0
  259. package/dist/assets/cesium/Workers/PolygonGeometryLibrary-b408c688.js +1 -0
  260. package/dist/assets/cesium/Workers/PolygonPipeline-7b8e4643.js +1 -0
  261. package/dist/assets/cesium/Workers/PolylinePipeline-6757400c.js +1 -0
  262. package/dist/assets/cesium/Workers/PolylineVolumeGeometryLibrary-eb972210.js +1 -0
  263. package/dist/assets/cesium/Workers/PrimitivePipeline-f244975e.js +1 -0
  264. package/dist/assets/cesium/Workers/RectangleGeometryLibrary-1bd6152a.js +1 -0
  265. package/dist/assets/cesium/Workers/RuntimeError-8952249c.js +1 -0
  266. package/dist/assets/cesium/Workers/TerrainEncoding-5a21a97f.js +1 -0
  267. package/dist/assets/cesium/Workers/Transforms-eb5c1a84.js +39 -0
  268. package/dist/assets/cesium/Workers/VertexFormat-a0b706b0.js +1 -0
  269. package/dist/assets/cesium/Workers/WallGeometryLibrary-a6b6a368.js +1 -0
  270. package/dist/assets/cesium/Workers/WebGLConstants-508b9636.js +1 -0
  271. package/dist/assets/cesium/Workers/WebMercatorProjection-2839e524.js +1 -0
  272. package/dist/assets/cesium/Workers/_commonjsHelpers-3aae1032-26891ab7.js +1 -0
  273. package/dist/assets/cesium/Workers/_rollup_plugin_ignore_empty_module_placeholder-57d574d0.js +1 -0
  274. package/dist/assets/cesium/Workers/arrayRemoveDuplicates-dc2f4046.js +1 -0
  275. package/dist/assets/cesium/Workers/cesiumWorkerBootstrapper.js +6 -0
  276. package/dist/assets/cesium/Workers/combine-3c023bda.js +1 -0
  277. package/dist/assets/cesium/Workers/combineGeometry.js +1 -0
  278. package/dist/assets/cesium/Workers/createBoxGeometry.js +1 -0
  279. package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +1 -0
  280. package/dist/assets/cesium/Workers/createCircleGeometry.js +1 -0
  281. package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +1 -0
  282. package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +1 -0
  283. package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +1 -0
  284. package/dist/assets/cesium/Workers/createCorridorGeometry.js +1 -0
  285. package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +1 -0
  286. package/dist/assets/cesium/Workers/createCylinderGeometry.js +1 -0
  287. package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +1 -0
  288. package/dist/assets/cesium/Workers/createEllipseGeometry.js +1 -0
  289. package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +1 -0
  290. package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +1 -0
  291. package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +1 -0
  292. package/dist/assets/cesium/Workers/createFrustumGeometry.js +1 -0
  293. package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +1 -0
  294. package/dist/assets/cesium/Workers/createGeometry.js +1 -0
  295. package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +1 -0
  296. package/dist/assets/cesium/Workers/createPlaneGeometry.js +1 -0
  297. package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +1 -0
  298. package/dist/assets/cesium/Workers/createPolygonGeometry.js +1 -0
  299. package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +1 -0
  300. package/dist/assets/cesium/Workers/createPolylineGeometry.js +1 -0
  301. package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +1 -0
  302. package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +1 -0
  303. package/dist/assets/cesium/Workers/createRectangleGeometry.js +1 -0
  304. package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +1 -0
  305. package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +1 -0
  306. package/dist/assets/cesium/Workers/createSphereGeometry.js +1 -0
  307. package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +1 -0
  308. package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +1 -0
  309. package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +1 -0
  310. package/dist/assets/cesium/Workers/createVectorTileGeometries.js +1 -0
  311. package/dist/assets/cesium/Workers/createVectorTilePoints.js +1 -0
  312. package/dist/assets/cesium/Workers/createVectorTilePolygons.js +1 -0
  313. package/dist/assets/cesium/Workers/createVectorTilePolylines.js +1 -0
  314. package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -0
  315. package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +3 -0
  316. package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +1 -0
  317. package/dist/assets/cesium/Workers/createWallGeometry.js +1 -0
  318. package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +1 -0
  319. package/dist/assets/cesium/Workers/decodeDraco.js +1 -0
  320. package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +1 -0
  321. package/dist/assets/cesium/Workers/defaultValue-81eec7ed.js +1 -0
  322. package/dist/assets/cesium/Workers/transcodeKTX2.js +1 -0
  323. package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -0
  324. package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +1 -0
  325. package/dist/assets/cesium.fba8ca.js +9118 -0
  326. package/dist/assets/cesium.js +1 -0
  327. package/dist/assets/core.d5ed0f.js +4 -0
  328. package/dist/assets/core.js +1 -0
  329. package/dist/assets/index.60dea538.css +1 -0
  330. package/dist/assets/index.6a83278e.js +1 -0
  331. package/dist/assets/ol.abea3a.js +318 -0
  332. package/dist/assets/ol.js +1 -0
  333. package/dist/assets/ui.ad1ec9.css +1 -0
  334. package/dist/assets/ui.ad1ec9.js +39 -0
  335. package/dist/assets/ui.js +1 -0
  336. package/dist/assets/uicomponents.161461.css +1 -0
  337. package/dist/assets/uicomponents.161461.js +31 -0
  338. package/dist/assets/uicomponents.js +1 -0
  339. package/dist/assets/vue-composition-api.7051d7.js +14 -0
  340. package/dist/assets/vue-composition-api.js +2 -0
  341. package/dist/assets/vue.9fd7f6.js +9 -0
  342. package/dist/assets/vue.js +1 -0
  343. package/dist/assets/vuetify.33dafc.css +5 -0
  344. package/dist/assets/vuetify.33dafc.js +48 -0
  345. package/dist/assets/vuetify.js +2 -0
  346. package/dist/index.html +26 -0
  347. package/index.js +18 -0
  348. package/lib/cesium.js +1 -0
  349. package/lib/core.js +1 -0
  350. package/lib/ol.js +1 -0
  351. package/lib/olLib.js +844 -0
  352. package/lib/ui.js +1 -0
  353. package/lib/uicomponents.js +1 -0
  354. package/lib/vue-composition-api.js +2 -0
  355. package/lib/vue.js +1 -0
  356. package/lib/vuetify.js +2 -0
  357. package/map.config.json +35 -0
  358. package/package.json +130 -0
  359. package/plugins/@vcmap/pluginExample/config.json +6 -0
  360. package/plugins/@vcmap/pluginExample/index.js +193 -0
  361. package/plugins/@vcmap/pluginExample/package.json +7 -0
  362. package/plugins/@vcmap/pluginExample/pluginExampleComponent.vue +374 -0
  363. package/plugins/@vcmap/pluginExample/validation.js +30 -0
  364. package/plugins/@vcmap/project-selector/ContextsListComponent.vue +62 -0
  365. package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +81 -0
  366. package/plugins/@vcmap/project-selector/README.md +29 -0
  367. package/plugins/@vcmap/project-selector/config.json +15 -0
  368. package/plugins/@vcmap/project-selector/index.js +254 -0
  369. package/plugins/@vcmap/project-selector/package.json +15 -0
  370. package/plugins/@vcmap/theme-changer/README.md +21 -0
  371. package/plugins/@vcmap/theme-changer/ThemeChangerComponent.vue +92 -0
  372. package/plugins/@vcmap/theme-changer/config.json +69 -0
  373. package/plugins/@vcmap/theme-changer/index.js +102 -0
  374. package/plugins/@vcmap/theme-changer/package.json +12 -0
  375. package/plugins/buttonExamples/ButtonExamples.vue +190 -0
  376. package/plugins/buttonExamples/index.js +40 -0
  377. package/plugins/categoryTest/Categories.vue +145 -0
  378. package/plugins/categoryTest/Category.vue +114 -0
  379. package/plugins/categoryTest/ItemEditor.vue +13 -0
  380. package/plugins/categoryTest/index.js +41 -0
  381. package/plugins/example/index.js +56 -0
  382. package/plugins/example/mySuperComponent.vue +127 -0
  383. package/plugins/package.json +5 -0
  384. package/plugins/test/editor.vue +63 -0
  385. package/plugins/test/index.js +93 -0
  386. package/plugins/test/myCustomHeader.vue +19 -0
  387. package/plugins/test/toolbox-data.js +49 -0
  388. package/plugins/test/vcsContent.vue +23 -0
  389. package/plugins/test/windowManagerExample.vue +144 -0
  390. package/src/actions/actionHelper.js +221 -0
  391. package/src/actions/stateRefAction.js +50 -0
  392. package/src/actions/styleSelector.vue +90 -0
  393. package/src/application/Navbar.vue +89 -0
  394. package/src/application/VcsApp.vue +147 -0
  395. package/src/application/VcsMap.vue +57 -0
  396. package/src/application/empty-cmp.vue +6 -0
  397. package/src/assets/logo.svg +26 -0
  398. package/src/contentTree/LayerTree.vue +40 -0
  399. package/src/contentTree/contentTreeCollection.js +311 -0
  400. package/src/contentTree/contentTreeItem.js +457 -0
  401. package/src/contentTree/groupContentTreeItem.js +67 -0
  402. package/src/contentTree/layerContentTreeItem.js +233 -0
  403. package/src/contentTree/layerGroupContentTreeItem.js +154 -0
  404. package/src/contentTree/nodeContentTreeItem.js +37 -0
  405. package/src/contentTree/obliqueCollectionContentTreeItem.js +155 -0
  406. package/src/contentTree/subContentTreeItem.js +42 -0
  407. package/src/contentTree/vcsObjectContentTreeItem.js +98 -0
  408. package/src/contentTree/viewPointContentTreeItem.js +107 -0
  409. package/src/init.js +36 -0
  410. package/src/lang/de.js +60 -0
  411. package/src/lang/en.js +53 -0
  412. package/src/manager/buttonManager.js +203 -0
  413. package/src/manager/toolbox/ToolboxManager.vue +114 -0
  414. package/src/manager/toolbox/ToolboxMultiSelectButton.vue +96 -0
  415. package/src/manager/toolbox/ToolboxSingleSelectButton.vue +98 -0
  416. package/src/manager/toolbox/toolbox-manager.js +203 -0
  417. package/src/manager/window/WindowComponent.vue +133 -0
  418. package/src/manager/window/WindowComponentHeader.vue +46 -0
  419. package/src/manager/window/WindowManager.vue +109 -0
  420. package/src/manager/window/windowManager.js +437 -0
  421. package/src/navigation/mapNavCompass.vue +161 -0
  422. package/src/navigation/mapNavigation.vue +176 -0
  423. package/src/navigation/obliqueRotation.vue +48 -0
  424. package/src/navigation/orientationToolsButton.vue +52 -0
  425. package/src/navigation/tiltSlider.vue +96 -0
  426. package/src/navigation/vcsCompass.vue +144 -0
  427. package/src/navigation/vcsZoomButton.vue +27 -0
  428. package/src/pluginHelper.js +106 -0
  429. package/src/setup.js +10 -0
  430. package/src/styles/_theming.scss +15 -0
  431. package/src/styles/_typography.scss +42 -0
  432. package/src/styles/main.scss +9 -0
  433. package/src/styles/utils/_all.scss +12 -0
  434. package/src/styles/utils/_border.scss +7 -0
  435. package/src/styles/utils/_cursor.scss +15 -0
  436. package/src/styles/utils/_display.scss +3 -0
  437. package/src/styles/utils/_fade-in.scss +8 -0
  438. package/src/styles/utils/_position.scss +38 -0
  439. package/src/styles/utils/_size.scss +79 -0
  440. package/src/styles/utils/_slide-in.scss +26 -0
  441. package/src/styles/utils/_spacing.scss +11 -0
  442. package/src/styles/utils/_text.scss +30 -0
  443. package/src/styles/utils/_transform.scss +11 -0
  444. package/src/styles/utils/_transition.scss +11 -0
  445. package/src/styles/utils/_z-index.scss +15 -0
  446. package/src/vcsUiApp.js +223 -0
  447. package/src/vuePlugins/i18n.js +20 -0
  448. package/src/vuePlugins/vuetify.js +54 -0
  449. package/start.js +3 -0
@@ -0,0 +1,437 @@
1
+ import { reactive, ref } from '@vue/composition-api';
2
+ import { VcsEvent } from '@vcmap/core';
3
+ import { v4 as uuidv4 } from 'uuid';
4
+ import { parseEnumValue } from '@vcsuite/parsers';
5
+ import { check } from '@vcsuite/check';
6
+ import { vcsAppSymbol } from '../../pluginHelper.js';
7
+
8
+ /**
9
+ * @readonly
10
+ * @enum {string}
11
+ * @property {string} STATIC
12
+ * @property {string} DYNAMIC_LEFT
13
+ * @property {string} DYNAMIC_RIGHT
14
+ * @property {string} DETACHED
15
+ */
16
+ export const WindowSlot = {
17
+ STATIC: 'static',
18
+ DYNAMIC_LEFT: 'dynamicLeft',
19
+ DYNAMIC_RIGHT: 'dynamicRight',
20
+ DETACHED: 'detached',
21
+ };
22
+
23
+
24
+ /**
25
+ * @typedef WindowPositionOptions
26
+ * @property {string|number|undefined} left Can be a css position string (e.g. '320px' or '50%') number values are treated as `px` values
27
+ * @property {string|number|undefined} top Can be a css position string (e.g. '320px' or '50%') number values are treated as `px` values
28
+ * @property {string|number|undefined} right Can be a css position string (e.g. '320px' or '50%') number values are treated as `px` values
29
+ * @property {string|number|undefined} bottom Can be a css position string (e.g. '320px' or '50%') number values are treated as `px` values
30
+ * @property {string|number|undefined} width Can be a css position string (e.g. '320px') number values are treated as `px` values
31
+ * @property {string|number|undefined} height Can be pixel-value string (e.g. '320px') number values are treated as `px` values
32
+ */
33
+
34
+ /**
35
+ * @typedef WindowPosition
36
+ * @property {string} left - absolute to map container
37
+ * @property {string} top - absolute to map container
38
+ * @property {string} right - absolute to map container
39
+ * @property {string} bottom - absolute to map container
40
+ * @property {string} width
41
+ * @property {string} height
42
+ */
43
+
44
+ /**
45
+ * @readonly
46
+ * @enum {WindowPositionOptions}
47
+ * @property {Position} TOP_LEFT position of the DYNAMIC_LEFT or STATIC Slot
48
+ * @property {Position} TOP_LEFT2 position of the DYNAMIC_LEFT Slot if a STATIC is present
49
+ * @property {Position} TOP_RIGHT position of the DYNAMIC_RIGHT Slot
50
+ * @property {Position} DETACHED default position of DETACHED Windows if no position is given
51
+ * @private
52
+ */
53
+ export const WindowPositions = {
54
+ TOP_LEFT: {
55
+ left: '0px',
56
+ top: '0px',
57
+ },
58
+ TOP_LEFT2: {
59
+ left: '320px',
60
+ top: '0px',
61
+ },
62
+ TOP_RIGHT: {
63
+ right: '0px',
64
+ top: '0px',
65
+ },
66
+ DETACHED: {
67
+ left: '200px',
68
+ top: '200px',
69
+ },
70
+ };
71
+
72
+ /**
73
+ * @typedef WindowComponentOptions
74
+ * @property {string} [id] Optional ID, If not provided a uuid will be generated.
75
+ * @property {VueComponent} component Main Component which is shown below the header.
76
+ * @property {VueComponent} [headerComponent] Replaces the Header Component.
77
+ * @property {WindowPositionOptions} [position] Will be ignored if WindowSlot !== DETACHED, can be given otherwise or default will be used
78
+ * @property {WindowState} [state]
79
+ * @property {WindowSlot} [slot] If WindowSlot is not detached the position will be ignored
80
+ * @property {Object} [props]
81
+ */
82
+
83
+ /**
84
+ * @typedef WindowState
85
+ * @property {string} id
86
+ * @property {string|vcsAppSymbol} owner Owner of the window, set by windowManager on add
87
+ * @property {boolean} [hideHeader] be used to not show the header.
88
+ * @property {string} [headerTitle]
89
+ * @property {string} [headerIcon]
90
+ * @property {Object<string, string>} styles[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
91
+ * @property {Array<string>|Object<string,string>} [classes] Can be used to add additional classes to the root WindowComponent. Use Vue Class Bindings Syntax https://vuejs.org/v2/guide/class-and-style.html
92
+ */
93
+
94
+ /**
95
+ * @typedef WindowComponent
96
+ * @property {string} id
97
+ * @property {VueComponent} component
98
+ * @property {VueComponent} [headerComponent]
99
+ * @property {WindowPosition} position
100
+ * @property {WindowState} state
101
+ * @property {Ref<UnwrapRef<WindowSlot>>} slot
102
+ * @property {Object} props
103
+ */
104
+
105
+ /**
106
+ * @param {string|number|undefined} pos
107
+ * @returns {string|undefined}
108
+ */
109
+ function parsePosition(pos) {
110
+ if (typeof pos === 'number') {
111
+ return `${pos}px`;
112
+ }
113
+ return pos;
114
+ }
115
+
116
+ /**
117
+ * @param {WindowPositionOptions} windowPositionOptions
118
+ * @param {WindowPosition=} windowPosition
119
+ * @returns {WindowPosition}
120
+ */
121
+ export function windowPositionFromOptions(windowPositionOptions, windowPosition = {}) {
122
+ let left = parsePosition(windowPositionOptions.left) || 'unset';
123
+ const right = parsePosition(windowPositionOptions.right) || 'unset';
124
+ let top = parsePosition(windowPositionOptions.top) || 'unset';
125
+ const bottom = parsePosition(windowPositionOptions.bottom) || 'unset';
126
+ let width = parsePosition(windowPositionOptions.width) || 'auto';
127
+ let height = parsePosition(windowPositionOptions.height) || 'auto';
128
+ if (left !== 'unset' && right !== 'unset') {
129
+ width = 'auto'; // left + right takes precedence over configured width
130
+ } else if (width === 'auto') {
131
+ width = '320px'; // default width if no value is given and no value can be calculated indirectly by left+right
132
+ }
133
+ if (left === 'unset' && right === 'unset') {
134
+ left = '200px'; // default value if neither a left or right value is given
135
+ }
136
+ if (top !== 'unset' && bottom !== 'unset') {
137
+ height = 'auto'; // top + bottom takes precedence over configured height
138
+ }
139
+ if (top === 'unset' && bottom === 'unset') {
140
+ top = '200px'; // default value if neither a top or bottom value is given
141
+ }
142
+ const result = {
143
+ left,
144
+ right,
145
+ top,
146
+ bottom,
147
+ width,
148
+ height,
149
+ };
150
+ return Object.assign(windowPosition, result);
151
+ }
152
+
153
+ /**
154
+ * WindowPositionOptions from client position relative to a HTMLElement
155
+ * @param {number} x
156
+ * @param {number} y
157
+ * @param {string|HTMLElement} [element='mapElement']
158
+ * @returns {WindowPositionOptions}
159
+ */
160
+ export function getWindowPositionOptions(x, y, element = 'mapElement') {
161
+ let mapElement = element;
162
+ if (typeof mapElement === 'string') {
163
+ mapElement = document.getElementsByClassName(element).item(0);
164
+ }
165
+ const { left, top } = mapElement.getBoundingClientRect();
166
+ return { left: x - left, top: y - top };
167
+ }
168
+
169
+ /**
170
+ * @class WindowManager
171
+ * @description Manages a set of Draggable Windows
172
+ * @implements VcsComponentManager<WindowComponent,WindowComponentOptions>
173
+ */
174
+ export class WindowManager {
175
+ constructor() {
176
+ /**
177
+ * @type {import("@vcmap/core").VcsEvent<WindowComponent>}
178
+ */
179
+ this.added = new VcsEvent();
180
+ /**
181
+ * @type {import("@vcmap/core").VcsEvent<WindowComponent>}
182
+ */
183
+ this.removed = new VcsEvent();
184
+ /**
185
+ * reactive ordered array of ids,
186
+ * @type {Array<string>}
187
+ */
188
+ this.componentIds = reactive([]);
189
+
190
+ /**
191
+ * @type {Map<string, WindowComponent>}
192
+ * @private
193
+ */
194
+ this._windowComponents = new Map();
195
+ }
196
+
197
+ /**
198
+ * @param {string} id
199
+ * @returns {WindowComponent}
200
+ */
201
+ get(id) {
202
+ if (this.has(id)) {
203
+ return this._windowComponents.get(id);
204
+ }
205
+ return undefined;
206
+ }
207
+
208
+ /**
209
+ * @param {string} id
210
+ * @returns {boolean}
211
+ */
212
+ has(id) {
213
+ return this._windowComponents.has(id);
214
+ }
215
+
216
+ /**
217
+ * removes a window, Component will not be rendered anymore and will be destroyed. Add WindowComponent again
218
+ * to show the component again
219
+ * @param {string} id
220
+ */
221
+ remove(id) {
222
+ const windowComponent = this._windowComponents.get(id);
223
+ if (windowComponent) {
224
+ const index = this.componentIds.indexOf(id);
225
+ this.componentIds.splice(index, 1);
226
+ this._windowComponents.delete(id);
227
+ this._handleSlotsChanged(windowComponent.slot.value);
228
+ this.removed.raiseEvent(windowComponent);
229
+ }
230
+ }
231
+
232
+ /**
233
+ * @param {string} id
234
+ * @param {WindowPositionOptions} windowPositionOptions
235
+ */
236
+ setWindowPositionOptions(id, windowPositionOptions) {
237
+ const windowComponent = this._windowComponents.get(id);
238
+ if (windowComponent) {
239
+ const isSlotPosition = windowPositionOptions === WindowPositions.TOP_LEFT ||
240
+ windowPositionOptions === WindowPositions.TOP_LEFT2 ||
241
+ windowPositionOptions === WindowPositions.TOP_RIGHT;
242
+ // not one of the default Positions, so we also have to DETACH the windowState.
243
+ if (!isSlotPosition) {
244
+ windowComponent.slot.value = WindowSlot.DETACHED;
245
+ }
246
+ windowPositionFromOptions(windowPositionOptions, windowComponent.position);
247
+ }
248
+ }
249
+
250
+ /**
251
+ * handles changes in the Slots. Makes sure that a STATIC Window is positioned on the right to the DYNAMIC_LEFT Slot.
252
+ * If a STATIC Window is removed again, the DYNAMIC_LEFT will be moved back.
253
+ * @param {WindowSlot} changedSlot
254
+ * @private
255
+ */
256
+ _handleSlotsChanged(changedSlot) {
257
+ if (changedSlot === WindowSlot.STATIC) {
258
+ const staticWindow = this._findWindowBySlot(WindowSlot.STATIC);
259
+ const dynamicWindowLeft = this._findWindowBySlot(WindowSlot.DYNAMIC_LEFT);
260
+ if (staticWindow && dynamicWindowLeft) {
261
+ this.setWindowPositionOptions(dynamicWindowLeft.id, WindowPositions.TOP_LEFT2);
262
+ } else if (!staticWindow && dynamicWindowLeft) {
263
+ this.setWindowPositionOptions(dynamicWindowLeft.id, WindowPositions.TOP_LEFT);
264
+ }
265
+ }
266
+ }
267
+
268
+ /**
269
+ * @param {WindowSlot} slot
270
+ * @returns {WindowComponent}
271
+ * @private
272
+ */
273
+ _findWindowBySlot(slot) {
274
+ return Array.from(this._windowComponents.values()).find(item => item.slot.value === slot);
275
+ }
276
+
277
+ /**
278
+ * @param {WindowSlot} slot
279
+ * @param {WindowPositionOptions=} position
280
+ * @returns {WindowPositionOptions}
281
+ * @private
282
+ */
283
+ _getPositionOptionsForSlot(slot, position) {
284
+ if (slot === WindowSlot.STATIC) {
285
+ return WindowPositions.TOP_LEFT;
286
+ }
287
+ if (slot === WindowSlot.DYNAMIC_LEFT) {
288
+ const windowAtStatic = this._findWindowBySlot(WindowSlot.STATIC);
289
+ if (windowAtStatic) {
290
+ return WindowPositions.TOP_LEFT2;
291
+ } else {
292
+ return WindowPositions.TOP_LEFT;
293
+ }
294
+ }
295
+ if (slot === WindowSlot.DYNAMIC_RIGHT) {
296
+ return WindowPositions.TOP_RIGHT;
297
+ }
298
+ return position || WindowPositions.DETACHED;
299
+ }
300
+
301
+ /**
302
+ * removes the window at the given slot if it exists (not for DETACHED)
303
+ * @param {WindowSlot} slot
304
+ * @private
305
+ */
306
+ _removeWindowAtSlot(slot) {
307
+ if (slot !== WindowSlot.DETACHED) {
308
+ const toRemove = this._findWindowBySlot(slot);
309
+ if (toRemove) {
310
+ this.remove(toRemove.id);
311
+ }
312
+ }
313
+ }
314
+
315
+ /**
316
+ * adds a windowComponent to the WindowManager and renders the Window at the provided position/slot.
317
+ * The reactive WindowState Object can be used to watch Changes on position/WindowSlot.
318
+ * The WindowState Object can also be used to change hideHeader, headerTitle, headerIcon, styles and classes
319
+ * @param {WindowComponentOptions|WindowComponent} windowComponentOptions
320
+ * @param {string|symbol} owner pluginName or vcsAppSymbol
321
+ * @throws {Error} if a windowComponent with the same ID has already been added
322
+ * @returns {WindowComponent}
323
+ */
324
+ add(windowComponentOptions, owner) {
325
+ check(owner, [String, vcsAppSymbol]);
326
+
327
+ if (windowComponentOptions.id && this.has(windowComponentOptions.id)) {
328
+ throw new Error(`A window with id ${windowComponentOptions.id} has already been registered.`);
329
+ }
330
+ const id = windowComponentOptions.id || uuidv4();
331
+ const slotOption = windowComponentOptions.slot?.value || windowComponentOptions.slot;
332
+ const slot = parseEnumValue(slotOption, WindowSlot, WindowSlot.DETACHED);
333
+ const windowPositionOptions = this._getPositionOptionsForSlot(slot, windowComponentOptions.position);
334
+ const windowPosition = windowPositionFromOptions(windowPositionOptions);
335
+
336
+ const slotRef = ref(slot);
337
+ const {
338
+ component, headerComponent,
339
+ } = windowComponentOptions;
340
+ const styles = { ...windowComponentOptions?.state?.styles };
341
+ const classes = Array.isArray(windowComponentOptions?.state?.classes) ?
342
+ [...(windowComponentOptions?.state?.classes ?? [])] :
343
+ { ...windowComponentOptions?.state?.classes };
344
+
345
+ const state = reactive({
346
+ id,
347
+ owner,
348
+ hideHeader: !!windowComponentOptions?.state?.hideHeader,
349
+ headerTitle: windowComponentOptions?.state?.headerTitle,
350
+ headerIcon: windowComponentOptions?.state?.headerIcon,
351
+ classes,
352
+ styles,
353
+ });
354
+
355
+ const props = windowComponentOptions.props || {};
356
+
357
+ const position = reactive(windowPosition);
358
+ /**
359
+ * @type {WindowComponent}
360
+ */
361
+ const windowComponent = {
362
+ get id() {
363
+ return id;
364
+ },
365
+ get state() {
366
+ return state;
367
+ },
368
+ get component() {
369
+ return component;
370
+ },
371
+ get headerComponent() {
372
+ return headerComponent;
373
+ },
374
+ get slot() {
375
+ return slotRef;
376
+ },
377
+ get position() {
378
+ return position;
379
+ },
380
+ get props() {
381
+ return props;
382
+ },
383
+ };
384
+ this._removeWindowAtSlot(slot);
385
+ this._windowComponents.set(id, windowComponent);
386
+ this.componentIds.push(id);
387
+ this._handleSlotsChanged(slot);
388
+ this.added.raiseEvent(windowComponent);
389
+ return windowComponent;
390
+ }
391
+
392
+ /**
393
+ * reorders the order of all windows to bring the given ID on top
394
+ * @param {string} id
395
+ */
396
+ bringWindowToTop(id) {
397
+ if (this.has(id)) {
398
+ const index = this.componentIds.indexOf(id);
399
+ if (index >= 0 && index !== this.componentIds.length - 1) {
400
+ this.componentIds.push(id);
401
+ this.componentIds.splice(index, 1);
402
+ }
403
+ }
404
+ }
405
+
406
+ /**
407
+ * removes all windowComponents of a specific owner (plugin) and fires removed Events
408
+ * @param {string|vcsAppSymbol} owner
409
+ */
410
+ removeOwner(owner) {
411
+ const componentIds = [...this.componentIds];
412
+ componentIds.forEach((id) => {
413
+ const { state } = this.get(id);
414
+ if (owner === state.owner) {
415
+ this.remove(id);
416
+ }
417
+ });
418
+ }
419
+
420
+ /**
421
+ * removes all windowComponents and fires removed Events
422
+ */
423
+ clear() {
424
+ const componentIds = [...this.componentIds];
425
+ componentIds.forEach((id) => { this.remove(id); });
426
+ }
427
+
428
+ /**
429
+ * destroys the windowManager;
430
+ */
431
+ destroy() {
432
+ this.added.destroy();
433
+ this.removed.destroy();
434
+ this.componentIds.splice(0);
435
+ this._windowComponents.clear();
436
+ }
437
+ }
@@ -0,0 +1,161 @@
1
+ <template>
2
+ <svg xmlns="http://www.w3.org/2000/svg" width="58" height="58" viewBox="0 0 58 58">
3
+ <g id="Group_1654" data-name="Group 1654" transform="translate(24)">
4
+ <path
5
+ :class="canEmit ? 'cursor-pointer' : ''"
6
+ id="north_arrow"
7
+ data-name="Polygon 14"
8
+ d="M4,0,8,13H0Z"
9
+ transform="translate(1)"
10
+ fill="currentColor"
11
+ @click="emit(0)"
12
+ />
13
+ <path
14
+ :class="canEmit ? 'cursor-pointer' : ''"
15
+ id="south_arrow"
16
+ data-name="Polygon 17"
17
+ d="M4,0,8,13H0Z"
18
+ transform="translate(9 58) rotate(180)"
19
+ fill="rgba(88,88,88,0.51)"
20
+ @click="emit(180)"
21
+ />
22
+ </g>
23
+ <g id="Group_1653" data-name="Group 1653" transform="translate(0 33) rotate(-90)">
24
+ <path
25
+ :class="canEmit ? 'cursor-pointer' : ''"
26
+ id="west_arrow"
27
+ data-name="Polygon 14"
28
+ d="M4,0,8,13H0Z"
29
+ fill="rgba(88,88,88,0.51)"
30
+ @click="emit(270)"
31
+ />
32
+ <path
33
+ :class="canEmit ? 'cursor-pointer' : ''"
34
+ id="east_arrow"
35
+ data-name="Polygon 17"
36
+ d="M4,0,8,13H0Z"
37
+ transform="translate(8 58) rotate(180)"
38
+ fill="rgba(88,88,88,0.51)"
39
+ @click="emit(90)"
40
+ />
41
+ </g>
42
+ <g id="Group_1672" data-name="Group 1672" transform="translate(1)" v-if="!hideTicks">
43
+ <line
44
+ id="Line_289-2"
45
+ data-name="Line 289"
46
+ x2="6.079"
47
+ transform="translate(3.751 15) rotate(30)"
48
+ fill="none"
49
+ stroke="#707070"
50
+ stroke-linecap="round"
51
+ stroke-width="1"
52
+ />
53
+ <line
54
+ id="Line_290-2"
55
+ data-name="Line 290"
56
+ x2="4.665"
57
+ transform="translate(48.208 40.667) rotate(30)"
58
+ fill="none"
59
+ stroke="#707070"
60
+ stroke-linecap="round"
61
+ stroke-width="1"
62
+ />
63
+ <line
64
+ id="Line_289-4"
65
+ data-name="Line 289"
66
+ x2="6.079"
67
+ transform="translate(14 53.249) rotate(-60)"
68
+ fill="none"
69
+ stroke="#707070"
70
+ stroke-linecap="round"
71
+ stroke-width="1"
72
+ />
73
+ <line
74
+ id="Line_290-3"
75
+ data-name="Line 290"
76
+ x2="4.665"
77
+ transform="translate(39.668 8.792) rotate(-60)"
78
+ fill="none"
79
+ stroke="#707070"
80
+ stroke-linecap="round"
81
+ stroke-width="1"
82
+ />
83
+ <line
84
+ id="Line_289-5"
85
+ data-name="Line 289"
86
+ x2="6.079"
87
+ transform="translate(14 4.751) rotate(60)"
88
+ fill="none"
89
+ stroke="#707070"
90
+ stroke-linecap="round"
91
+ stroke-width="1"
92
+ />
93
+ <line
94
+ id="Line_290-4"
95
+ data-name="Line 290"
96
+ x2="4.665"
97
+ transform="translate(39.667 49.208) rotate(60)"
98
+ fill="none"
99
+ stroke="#707070"
100
+ stroke-linecap="round"
101
+ stroke-width="1"
102
+ />
103
+ <line
104
+ id="Line_289-6"
105
+ data-name="Line 289"
106
+ x2="6.079"
107
+ transform="translate(3.752 43) rotate(-30)"
108
+ fill="none"
109
+ stroke="#707070"
110
+ stroke-linecap="round"
111
+ stroke-width="1"
112
+ />
113
+ <line
114
+ id="Line_290-5"
115
+ data-name="Line 290"
116
+ x2="4.665"
117
+ transform="translate(48.209 17.333) rotate(-30)"
118
+ fill="none"
119
+ stroke="#707070"
120
+ stroke-linecap="round"
121
+ stroke-width="1"
122
+ />
123
+ </g>
124
+ </svg>
125
+ </template>
126
+
127
+ <script>
128
+ /**
129
+ * The compass with ticks along the border
130
+ * @vue-prop {boolean} [canEmit=true] - whether to emit click events on cardinal direction arrows or not
131
+ * @vue-prop {boolean} [hideTicks=false] - hide ticks on navigation rose
132
+ * @vue-event {HTMLEvent} direction-click - raised when a cardinal direction arrow is clicked
133
+ */
134
+ export default {
135
+ props: {
136
+ canEmit: {
137
+ type: Boolean,
138
+ default: true,
139
+ },
140
+ hideTicks: {
141
+ type: Boolean,
142
+ default: false,
143
+ },
144
+ },
145
+ methods: {
146
+ emit(event) {
147
+ if (this.canEmit) {
148
+ this.$emit('direction-click', event);
149
+ }
150
+ },
151
+ },
152
+ };
153
+ </script>
154
+
155
+ <style scoped>
156
+ svg {
157
+ width: 85%;
158
+ height: 85%;
159
+ margin: 7.5%;
160
+ }
161
+ </style>