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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/README.md +36 -18
  2. package/app.config.json +2 -4
  3. package/build/.eslintrc +3 -0
  4. package/build/build.js +184 -174
  5. package/build/buildCesium.js +32 -19
  6. package/build/buildHelpers.js +117 -48
  7. package/build/buildPreview.js +7 -4
  8. package/build/commonViteConfig.js +1 -3
  9. package/build/determineHost.js +17 -4
  10. package/build/generateOLLib.js +13 -16
  11. package/build/getPluginProxies.js +16 -3
  12. package/build/info/conf.json +21 -21
  13. package/build/info/publish.js +15 -4
  14. package/config/aerowest.config.json +16 -44
  15. package/config/base.config.json +71 -246
  16. package/config/codes.config.json +3 -1
  17. package/config/dev.config.json +5 -13
  18. package/config/graphFeatureInfo.config.json +55 -16
  19. package/config/projects.config.json +5 -2
  20. package/config/www.config.json +96 -297
  21. package/dist/assets/cesium/Workers/{ArcType-ce2e50ab.js → ArcType-2d9abbbc.js} +4 -4
  22. package/dist/assets/cesium/Workers/{AttributeCompression-b646d393.js → AttributeCompression-f9f6c717.js} +24 -24
  23. package/dist/assets/cesium/Workers/{AxisAlignedBoundingBox-ff186ccc.js → AxisAlignedBoundingBox-85d9e53a.js} +3 -3
  24. package/dist/assets/cesium/Workers/{BoundingRectangle-be5924f4.js → BoundingRectangle-1ee7eb47.js} +18 -18
  25. package/dist/assets/cesium/Workers/{BoxGeometry-12eeccaf.js → BoxGeometry-3b2be784.js} +9 -9
  26. package/dist/assets/cesium/Workers/{Check-666ab1a0.js → Check-6ede7e26.js} +22 -22
  27. package/dist/assets/cesium/Workers/{Color-a84038cb.js → Color-f107c84d.js} +59 -59
  28. package/dist/assets/cesium/Workers/{ComponentDatatype-f7b11d02.js → ComponentDatatype-cf1fa08e.js} +16 -16
  29. package/dist/assets/cesium/Workers/{CoplanarPolygonGeometryLibrary-3272c1b3.js → CoplanarPolygonGeometryLibrary-78d71993.js} +1 -1
  30. package/dist/assets/cesium/Workers/{CorridorGeometryLibrary-0170e093.js → CorridorGeometryLibrary-50d99b33.js} +1 -1
  31. package/dist/assets/cesium/Workers/{CylinderGeometry-7c5da648.js → CylinderGeometry-51b0d9bf.js} +12 -12
  32. package/dist/assets/cesium/Workers/{CylinderGeometryLibrary-372c07d8.js → CylinderGeometryLibrary-7bf291b4.js} +1 -1
  33. package/dist/assets/cesium/Workers/{EllipseGeometry-797d580e.js → EllipseGeometry-bcfb5d87.js} +20 -20
  34. package/dist/assets/cesium/Workers/{EllipseGeometryLibrary-2939e1dc.js → EllipseGeometryLibrary-e94f8472.js} +1 -1
  35. package/dist/assets/cesium/Workers/{EllipseOutlineGeometry-8b50870f.js → EllipseOutlineGeometry-28e3a1bb.js} +15 -15
  36. package/dist/assets/cesium/Workers/{EllipsoidGeodesic-98c62a56.js → EllipsoidGeodesic-5b3623dc.js} +6 -6
  37. package/dist/assets/cesium/Workers/{EllipsoidGeometry-21c0e3a5.js → EllipsoidGeometry-b222fa63.js} +14 -14
  38. package/dist/assets/cesium/Workers/{EllipsoidOutlineGeometry-eff247c8.js → EllipsoidOutlineGeometry-38a3fb5b.js} +15 -15
  39. package/dist/assets/cesium/Workers/{EllipsoidRhumbLine-19756602.js → EllipsoidRhumbLine-ef872433.js} +9 -9
  40. package/dist/assets/cesium/Workers/{EllipsoidTangentPlane-214683dc.js → EllipsoidTangentPlane-8c89f28c.js} +1 -1
  41. package/dist/assets/cesium/Workers/{EncodedCartesian3-81f70735.js → EncodedCartesian3-57415c8a.js} +6 -6
  42. package/dist/assets/cesium/Workers/{FrustumGeometry-ac42a6d9.js → FrustumGeometry-bdd3a04d.js} +139 -111
  43. package/dist/assets/cesium/Workers/{GeometryAttribute-7d6f1732.js → GeometryAttribute-153115c5.js} +20 -20
  44. package/dist/assets/cesium/Workers/{GeometryAttributes-f06a2792.js → GeometryAttributes-ad136444.js} +1 -1
  45. package/dist/assets/cesium/Workers/{GeometryInstance-451dc1cd.js → GeometryInstance-34d9e21e.js} +6 -6
  46. package/dist/assets/cesium/Workers/{GeometryPipeline-ce4339ed.js → GeometryPipeline-acb2399c.js} +22 -22
  47. package/dist/assets/cesium/Workers/{IndexDatatype-a55ceaa1.js → IndexDatatype-2643aa47.js} +13 -13
  48. package/dist/assets/cesium/Workers/{IntersectionTests-f6e6bd8a.js → IntersectionTests-271e513e.js} +37 -37
  49. package/dist/assets/cesium/Workers/{Math-2dbd6b93.js → Math-0a2ac845.js} +149 -139
  50. package/dist/assets/cesium/Workers/{Matrix2-13178034.js → Matrix2-e1298525.js} +256 -256
  51. package/dist/assets/cesium/Workers/{Matrix3-315394f6.js → Matrix3-41c58dde.js} +150 -150
  52. package/dist/assets/cesium/Workers/{OrientedBoundingBox-04920dc7.js → OrientedBoundingBox-5e04e31f.js} +19 -17
  53. package/dist/assets/cesium/Workers/{Plane-900aa728.js → Plane-4c3d403b.js} +5 -5
  54. package/dist/assets/cesium/Workers/{PolygonGeometryLibrary-a8680d96.js → PolygonGeometryLibrary-6762b65b.js} +6 -6
  55. package/dist/assets/cesium/Workers/PolygonPipeline-7dc7a431.js +1344 -0
  56. package/dist/assets/cesium/Workers/{PolylinePipeline-32f36d2a.js → PolylinePipeline-15fde655.js} +16 -16
  57. package/dist/assets/cesium/Workers/{PolylineVolumeGeometryLibrary-a510d657.js → PolylineVolumeGeometryLibrary-ba7dfed5.js} +7 -7
  58. package/dist/assets/cesium/Workers/{PrimitivePipeline-ba38434a.js → PrimitivePipeline-68f0b9a2.js} +6 -6
  59. package/dist/assets/cesium/Workers/{RectangleGeometryLibrary-bdba697e.js → RectangleGeometryLibrary-8eaf23da.js} +1 -1
  60. package/dist/assets/cesium/Workers/{RuntimeError-06c93819.js → RuntimeError-ef395448.js} +5 -5
  61. package/dist/assets/cesium/Workers/{TerrainEncoding-833187da.js → TerrainEncoding-eb8a645a.js} +30 -30
  62. package/dist/assets/cesium/Workers/Transforms-f6451f99.js +14698 -0
  63. package/dist/assets/cesium/Workers/{VertexFormat-6b480673.js → VertexFormat-030f11ff.js} +14 -14
  64. package/dist/assets/cesium/Workers/{WallGeometryLibrary-919eed92.js → WallGeometryLibrary-feef3109.js} +1 -1
  65. package/dist/assets/cesium/Workers/{WebGLConstants-a8cc3e8c.js → WebGLConstants-0b1ce7ba.js} +1 -1
  66. package/dist/assets/cesium/Workers/{WebMercatorProjection-13a90d41.js → WebMercatorProjection-13ed1a6e.js} +6 -6
  67. package/dist/assets/cesium/Workers/{arrayRemoveDuplicates-c2038105.js → arrayRemoveDuplicates-d2061e85.js} +5 -5
  68. package/dist/assets/cesium/Workers/cesiumWorkerBootstrapper.js +5 -5
  69. package/dist/assets/cesium/Workers/{combine-ca22a614.js → combine-d9581036.js} +5 -5
  70. package/dist/assets/cesium/Workers/combineGeometry.js +1 -1
  71. package/dist/assets/cesium/Workers/createBoxGeometry.js +1 -1
  72. package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +9 -9
  73. package/dist/assets/cesium/Workers/createCircleGeometry.js +13 -13
  74. package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +13 -13
  75. package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +11 -11
  76. package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +9 -9
  77. package/dist/assets/cesium/Workers/createCorridorGeometry.js +14 -14
  78. package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +12 -12
  79. package/dist/assets/cesium/Workers/createCylinderGeometry.js +1 -1
  80. package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +13 -13
  81. package/dist/assets/cesium/Workers/createEllipseGeometry.js +1 -1
  82. package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +1 -1
  83. package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +1 -1
  84. package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +1 -1
  85. package/dist/assets/cesium/Workers/createFrustumGeometry.js +1 -1
  86. package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +8 -8
  87. package/dist/assets/cesium/Workers/createGeometry.js +1 -1
  88. package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +33 -33
  89. package/dist/assets/cesium/Workers/createPlaneGeometry.js +8 -8
  90. package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +6 -6
  91. package/dist/assets/cesium/Workers/createPolygonGeometry.js +25 -25
  92. package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +17 -17
  93. package/dist/assets/cesium/Workers/createPolylineGeometry.js +11 -11
  94. package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +9 -9
  95. package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +9 -9
  96. package/dist/assets/cesium/Workers/createRectangleGeometry.js +16 -16
  97. package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +12 -12
  98. package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +10 -10
  99. package/dist/assets/cesium/Workers/createSphereGeometry.js +11 -11
  100. package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +12 -12
  101. package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +2 -2
  102. package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +1 -1
  103. package/dist/assets/cesium/Workers/createVectorTileGeometries.js +8 -8
  104. package/dist/assets/cesium/Workers/createVectorTilePoints.js +1 -1
  105. package/dist/assets/cesium/Workers/createVectorTilePolygons.js +1 -1
  106. package/dist/assets/cesium/Workers/createVectorTilePolylines.js +1 -1
  107. package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
  108. package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +27 -28
  109. package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +33 -38
  110. package/dist/assets/cesium/Workers/createWallGeometry.js +14 -14
  111. package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +14 -14
  112. package/dist/assets/cesium/Workers/decodeDraco.js +10 -2
  113. package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +15 -15
  114. package/dist/assets/cesium/Workers/decodeI3S.js +1 -1
  115. package/dist/assets/cesium/Workers/{defaultValue-0a909f67.js → defaultValue-fe22d8c0.js} +2 -2
  116. package/dist/assets/cesium/Workers/package.js +1 -1
  117. package/dist/assets/cesium/Workers/transcodeKTX2.js +46 -26
  118. package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -1
  119. package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +24 -24
  120. package/dist/assets/{cesium.166f91.js → cesium.253914.js} +36578 -33768
  121. package/dist/assets/cesium.js +1 -1
  122. package/dist/assets/{core.9342a1.js → core.3a8205.js} +53 -58
  123. package/dist/assets/core.js +1 -1
  124. package/dist/assets/{index.fd041928.js → index.91ae2d55.js} +1 -1
  125. package/dist/assets/{ol.d2cba3.js → ol.1c946a.js} +5550 -5491
  126. package/dist/assets/ol.js +1 -1
  127. package/dist/assets/ui.0025be.css +5 -0
  128. package/dist/assets/{ui.c27597.js → ui.0025be.js} +5494 -4759
  129. package/dist/assets/ui.js +1 -1
  130. package/dist/assets/vue.js +2 -2
  131. package/dist/assets/{vuetify.2f1432.css → vuetify.6efa21.css} +2 -2
  132. package/dist/assets/{vuetify.2f1432.js → vuetify.6efa21.js} +1 -1
  133. package/dist/assets/vuetify.js +2 -2
  134. package/dist/index.html +27 -7
  135. package/index.html +26 -6
  136. package/index.js +65 -15
  137. package/lib/cesium.js +1 -1
  138. package/lib/core.js +1 -1
  139. package/lib/ui.js +1 -1
  140. package/lib/vue.js +2 -2
  141. package/lib/vuetify.js +2 -2
  142. package/package.json +18 -9
  143. package/plugins/.eslintrc +9 -0
  144. package/plugins/@vcmap/create-link/fallbackCreateLink.vue +13 -9
  145. package/plugins/@vcmap/create-link/index.js +15 -6
  146. package/plugins/@vcmap/project-selector/ModulesListComponent.vue +4 -8
  147. package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +5 -10
  148. package/plugins/@vcmap/project-selector/README.md +4 -2
  149. package/plugins/@vcmap/project-selector/config.json +13 -13
  150. package/plugins/@vcmap/project-selector/de.json +2 -2
  151. package/plugins/@vcmap/project-selector/en.json +2 -2
  152. package/plugins/@vcmap/project-selector/index.js +63 -28
  153. package/plugins/@vcmap/search-nominatim/LICENSE.md +5 -6
  154. package/plugins/@vcmap/search-nominatim/README.md +2 -1
  155. package/plugins/@vcmap/search-nominatim/config.json +1 -2
  156. package/plugins/@vcmap/search-nominatim/index.js +7 -4
  157. package/plugins/@vcmap/search-nominatim/nominatim.js +7 -2
  158. package/plugins/@vcmap/search-nominatim/package.json +2 -36
  159. package/plugins/@vcmap/simple-graph/README.md +29 -9
  160. package/plugins/@vcmap/simple-graph/SimpleGraphComponent.vue +2 -7
  161. package/plugins/@vcmap/simple-graph/index.js +1 -1
  162. package/plugins/@vcmap/simple-graph/simpleGraphView.js +3 -1
  163. package/plugins/@vcmap/theme-changer/README.md +5 -3
  164. package/plugins/@vcmap/theme-changer/ThemeChangerComponent.vue +6 -10
  165. package/plugins/@vcmap/theme-changer/config.json +67 -67
  166. package/plugins/@vcmap/theme-changer/index.js +11 -5
  167. package/plugins/@vcmap-show-case/buttons-example/ButtonsExample.vue +76 -11
  168. package/plugins/@vcmap-show-case/buttons-example/index.js +10 -8
  169. package/plugins/@vcmap-show-case/category-tester/Categories.vue +143 -116
  170. package/plugins/@vcmap-show-case/category-tester/Category.vue +46 -26
  171. package/plugins/@vcmap-show-case/category-tester/index.js +9 -3
  172. package/plugins/@vcmap-show-case/config-editor/{editor.vue → ConfigEditor.vue} +20 -24
  173. package/plugins/@vcmap-show-case/config-editor/index.js +13 -11
  174. package/plugins/@vcmap-show-case/context-menu-tester/index.js +18 -10
  175. package/plugins/@vcmap-show-case/form-inputs-example/FormInputsExample.vue +89 -118
  176. package/plugins/@vcmap-show-case/form-inputs-example/config.json +3 -3
  177. package/plugins/@vcmap-show-case/form-inputs-example/exampleActions.js +14 -4
  178. package/plugins/@vcmap-show-case/form-inputs-example/index.js +41 -19
  179. package/plugins/@vcmap-show-case/form-inputs-example/validation.js +2 -1
  180. package/plugins/@vcmap-show-case/icons-example/README.md +1 -1
  181. package/plugins/@vcmap-show-case/icons-example/allIconsComponent.vue +10 -10
  182. package/plugins/@vcmap-show-case/icons-example/index.js +10 -8
  183. package/plugins/@vcmap-show-case/list-example/ListExample.vue +221 -103
  184. package/plugins/@vcmap-show-case/list-example/index.js +10 -8
  185. package/plugins/@vcmap-show-case/notifier-tester/index.js +9 -3
  186. package/plugins/@vcmap-show-case/notifier-tester/notifierTester.vue +15 -21
  187. package/plugins/@vcmap-show-case/table-example/DataTableExample.vue +22 -41
  188. package/plugins/@vcmap-show-case/table-example/index.js +10 -8
  189. package/plugins/@vcmap-show-case/textfields-example/TextfieldsExample.vue +7 -30
  190. package/plugins/@vcmap-show-case/textfields-example/index.js +10 -4
  191. package/plugins/@vcmap-show-case/window-tester/WindowExample.vue +16 -13
  192. package/plugins/@vcmap-show-case/window-tester/emptyComponent.vue +4 -7
  193. package/plugins/@vcmap-show-case/window-tester/index.js +26 -20
  194. package/plugins/@vcmap-show-case/window-tester/myCustomHeader.vue +7 -3
  195. package/plugins/@vcmap-show-case/window-tester/toolbox-data.js +82 -5
  196. package/plugins/@vcmap-show-case/window-tester/windowExampleContent.vue +3 -7
  197. package/plugins/@vcmap-show-case/wizard-example/index.js +9 -3
  198. package/plugins/@vcmap-show-case/wizard-example/wizardExample.vue +36 -38
  199. package/src/actions/actionHelper.js +49 -11
  200. package/src/actions/styleSelector.vue +20 -11
  201. package/src/application/VcsApp.vue +117 -80
  202. package/src/application/VcsAttributions.vue +8 -9
  203. package/src/application/VcsAttributionsFooter.vue +12 -9
  204. package/src/application/VcsMap.vue +9 -5
  205. package/src/application/VcsNavbar.vue +44 -27
  206. package/src/application/VcsSettings.vue +5 -12
  207. package/src/application/attributionsHelper.js +23 -11
  208. package/src/application/vcsAppWrapper.vue +1 -3
  209. package/src/components/buttons/VcsActionButtonList.vue +20 -17
  210. package/src/components/buttons/VcsButton.vue +19 -23
  211. package/src/components/buttons/VcsFormButton.vue +176 -0
  212. package/src/components/form-inputs-controls/VcsCheckbox.vue +6 -7
  213. package/src/components/form-inputs-controls/VcsDatePicker.vue +50 -19
  214. package/src/components/form-inputs-controls/VcsFormSection.vue +11 -12
  215. package/src/components/form-inputs-controls/VcsLabel.vue +9 -10
  216. package/src/components/form-inputs-controls/VcsRadio.vue +44 -44
  217. package/src/components/form-inputs-controls/VcsSelect.vue +16 -13
  218. package/src/components/form-inputs-controls/VcsTextArea.vue +21 -14
  219. package/src/components/form-inputs-controls/VcsTextField.vue +26 -12
  220. package/src/components/form-inputs-controls/VcsWizard.vue +78 -78
  221. package/src/components/form-inputs-controls/VcsWizardStep.vue +20 -20
  222. package/src/components/form-inputs-controls/composables.js +13 -8
  223. package/src/components/form-output/VcsFormattedNumber.vue +26 -26
  224. package/src/components/icons/+all.js +13 -5
  225. package/src/components/icons/2DAreaIcon.vue +62 -10
  226. package/src/components/icons/2DDistanceIcon.vue +14 -2
  227. package/src/components/icons/3DAreaIcon.vue +62 -10
  228. package/src/components/icons/3DDistanceIcon.vue +14 -2
  229. package/src/components/icons/3DHeightIcon.vue +14 -2
  230. package/src/components/icons/AngleIcon.vue +12 -3
  231. package/src/components/icons/AssociationsIcon.vue +6 -1
  232. package/src/components/icons/AxisIcon.vue +34 -5
  233. package/src/components/icons/BoundingBoxIcon.vue +31 -5
  234. package/src/components/icons/CheckboxCheckedIcon.vue +4 -1
  235. package/src/components/icons/CheckboxIcon.vue +1 -8
  236. package/src/components/icons/CheckboxIndeterminateIcon.vue +9 -2
  237. package/src/components/icons/CircleIcon.vue +24 -4
  238. package/src/components/icons/ClippingHorizontalIcon.vue +14 -2
  239. package/src/components/icons/ClippingIcon.vue +13 -2
  240. package/src/components/icons/ClippingVerticalIcon.vue +14 -2
  241. package/src/components/icons/ColorPickerIcon.vue +13 -2
  242. package/src/components/icons/ColorSwatchIcon.vue +7 -1
  243. package/src/components/icons/CommentIcon.vue +6 -1
  244. package/src/components/icons/CompassIcon.vue +21 -3
  245. package/src/components/icons/ComponentsIcon.vue +14 -2
  246. package/src/components/icons/ConeIcon.vue +26 -4
  247. package/src/components/icons/DimensionsHouseIcon.vue +7 -1
  248. package/src/components/icons/EditIcon.vue +13 -2
  249. package/src/components/icons/ElevationProfileIcon.vue +6 -1
  250. package/src/components/icons/ExportAreaIcon.vue +13 -2
  251. package/src/components/icons/ExportFlightIcon.vue +13 -2
  252. package/src/components/icons/ExportIcon.vue +14 -2
  253. package/src/components/icons/ExternalLinkIcon.vue +18 -3
  254. package/src/components/icons/EyeIcon.vue +12 -2
  255. package/src/components/icons/FastForwardIcon.vue +13 -2
  256. package/src/components/icons/FilterIcon.vue +13 -2
  257. package/src/components/icons/GlobalTerrainIcon.vue +12 -2
  258. package/src/components/icons/GlobeNatureIcon.vue +7 -1
  259. package/src/components/icons/GroundIcon.vue +12 -2
  260. package/src/components/icons/HealthCareIndustriesIcon.vue +6 -1
  261. package/src/components/icons/HelpIcon.vue +12 -2
  262. package/src/components/icons/HideIcon.vue +17 -3
  263. package/src/components/icons/HomePointIcon.vue +13 -3
  264. package/src/components/icons/HospitalsIcon.vue +6 -1
  265. package/src/components/icons/HouseIcon.vue +20 -3
  266. package/src/components/icons/ImportIcon.vue +21 -3
  267. package/src/components/icons/InfoIcon.vue +19 -3
  268. package/src/components/icons/KebabIcon.vue +12 -2
  269. package/src/components/icons/LabelIcon.vue +21 -3
  270. package/src/components/icons/LayersIcon.vue +12 -2
  271. package/src/components/icons/LegendIcon.vue +13 -3
  272. package/src/components/icons/LineIcon.vue +20 -3
  273. package/src/components/icons/LinkIcon.vue +13 -2
  274. package/src/components/icons/LogoutIcon.vue +13 -2
  275. package/src/components/icons/MapIcon.vue +14 -2
  276. package/src/components/icons/MenuIcon.vue +7 -1
  277. package/src/components/icons/MinusIcon.vue +14 -2
  278. package/src/components/icons/ObjectAttributeIcon.vue +13 -2
  279. package/src/components/icons/ObjectSelectIcon.vue +14 -2
  280. package/src/components/icons/ObliqueViewIcon.vue +11 -2
  281. package/src/components/icons/PdfIcon.vue +12 -2
  282. package/src/components/icons/PedestrianIcon.vue +13 -2
  283. package/src/components/icons/PenIcon.vue +13 -3
  284. package/src/components/icons/PlayCircleIcon.vue +20 -3
  285. package/src/components/icons/PlusIcon.vue +14 -3
  286. package/src/components/icons/PoiIcon.vue +17 -3
  287. package/src/components/icons/PointSelectIcon.vue +12 -2
  288. package/src/components/icons/PolygonIcon.vue +7 -1
  289. package/src/components/icons/PresentationModeIcon.vue +13 -2
  290. package/src/components/icons/ProgressIcon.vue +8 -6
  291. package/src/components/icons/QueryIcon.vue +31 -5
  292. package/src/components/icons/RectangleIcon.vue +24 -4
  293. package/src/components/icons/ReturnIcon.vue +13 -2
  294. package/src/components/icons/RewindIcon.vue +13 -2
  295. package/src/components/icons/RotateLeftIcon.vue +13 -2
  296. package/src/components/icons/RotateRightIcon.vue +13 -2
  297. package/src/components/icons/ScreenshotIcon.vue +52 -10
  298. package/src/components/icons/SearchIcon.vue +13 -3
  299. package/src/components/icons/ShadowIcon.vue +14 -3
  300. package/src/components/icons/ShapesIcon.vue +13 -3
  301. package/src/components/icons/ShareIcon.vue +17 -4
  302. package/src/components/icons/SimpleCircleFilledIcon.vue +14 -10
  303. package/src/components/icons/SimpleCircleHalfFilledIcon.vue +6 -1
  304. package/src/components/icons/SimpleCircleOutlinedIcon.vue +14 -10
  305. package/src/components/icons/SkipNextIcon.vue +11 -2
  306. package/src/components/icons/SkipPreviousIcon.vue +17 -3
  307. package/src/components/icons/SplitViewIcon.vue +6 -1
  308. package/src/components/icons/TerrainBoxIcon.vue +12 -2
  309. package/src/components/icons/TextStyleIcon.vue +7 -1
  310. package/src/components/icons/ThreeDimensionsIcon.vue +13 -2
  311. package/src/components/icons/ToolsIcon.vue +12 -2
  312. package/src/components/icons/TouchIcon.vue +13 -2
  313. package/src/components/icons/TrashCanIcon.vue +13 -2
  314. package/src/components/icons/TriangleIcon.vue +6 -2
  315. package/src/components/icons/TwoDimensionsIcon.vue +14 -2
  316. package/src/components/icons/UploadIcon.vue +13 -2
  317. package/src/components/icons/UserProfileIcon.vue +13 -2
  318. package/src/components/icons/UserShareIcon.vue +12 -2
  319. package/src/components/icons/VideoRecorderIcon.vue +16 -3
  320. package/src/components/icons/ViewpointFlightIcon.vue +22 -4
  321. package/src/components/icons/ViewpointIcon.vue +22 -4
  322. package/src/components/icons/Viewshed360Icon.vue +14 -2
  323. package/src/components/icons/ViewshedConeIcon.vue +13 -2
  324. package/src/components/icons/ViewshedIcon.vue +14 -2
  325. package/src/components/icons/WalkingIcon.vue +13 -2
  326. package/src/components/icons/WallIcon.vue +19 -3
  327. package/src/components/icons/WandIcon.vue +129 -21
  328. package/src/components/imageElementInjector.vue +1 -3
  329. package/src/components/lists/VcsActionList.vue +21 -18
  330. package/src/components/lists/VcsList.vue +208 -98
  331. package/src/components/lists/VcsTreeview.vue +30 -26
  332. package/src/components/lists/VcsTreeviewLeaf.vue +23 -22
  333. package/src/components/lists/VcsTreeviewSearchbar.vue +19 -15
  334. package/src/components/notification/VcsBadge.vue +4 -6
  335. package/src/components/notification/VcsTooltip.vue +95 -94
  336. package/src/components/notification/validation.js +1 -1
  337. package/src/components/tables/VcsDataTable.vue +107 -95
  338. package/src/components/tables/VcsTable.vue +38 -30
  339. package/src/contentTree/LayerTree.vue +2 -3
  340. package/src/contentTree/contentTreeCollection.js +48 -22
  341. package/src/contentTree/contentTreeItem.js +36 -14
  342. package/src/contentTree/groupContentTreeItem.js +44 -22
  343. package/src/contentTree/layerContentTreeItem.js +42 -20
  344. package/src/contentTree/layerGroupContentTreeItem.js +53 -31
  345. package/src/contentTree/nodeContentTreeItem.js +18 -7
  346. package/src/contentTree/obliqueCollectionContentTreeItem.js +45 -20
  347. package/src/contentTree/subContentTreeItem.js +13 -4
  348. package/src/contentTree/vcsObjectContentTreeItem.js +24 -15
  349. package/src/contentTree/viewpointContentTreeItem.js +19 -6
  350. package/src/downloadHelper.js +4 -1
  351. package/src/featureInfo/AddressBalloonComponent.vue +11 -16
  352. package/src/featureInfo/BalloonComponent.vue +35 -26
  353. package/src/featureInfo/abstractFeatureInfoView.js +29 -13
  354. package/src/featureInfo/addressBalloonFeatureInfoView.js +19 -7
  355. package/src/featureInfo/balloonFeatureInfoView.js +22 -9
  356. package/src/featureInfo/balloonHelper.js +61 -42
  357. package/src/featureInfo/featureInfo.js +71 -31
  358. package/src/featureInfo/featureInfoInteraction.js +13 -7
  359. package/src/featureInfo/iframeFeatureInfoView.js +3 -1
  360. package/src/featureInfo/tableFeatureInfoView.js +15 -5
  361. package/src/i18n/i18nCollection.js +183 -155
  362. package/src/init.js +124 -121
  363. package/src/legend/legendHelper.js +11 -6
  364. package/src/legend/styleLegendItem.vue +18 -12
  365. package/src/legend/vcsLegend.vue +15 -17
  366. package/src/manager/buttonManager.js +6 -3
  367. package/src/manager/categoryManager/CategoryComponent.vue +52 -25
  368. package/src/manager/categoryManager/CategoryComponentList.vue +33 -8
  369. package/src/manager/categoryManager/CategoryManager.vue +4 -5
  370. package/src/manager/categoryManager/categoryManager.js +82 -37
  371. package/src/manager/contextMenu/contextMenuComponent.vue +2 -6
  372. package/src/manager/contextMenu/contextMenuInteraction.js +6 -1
  373. package/src/manager/contextMenu/contextMenuManager.js +37 -22
  374. package/src/manager/navbarManager.js +15 -8
  375. package/src/manager/toolbox/GroupToolboxComponent.vue +22 -21
  376. package/src/manager/toolbox/SelectToolboxComponent.vue +36 -35
  377. package/src/manager/toolbox/ToolboxManager.vue +18 -10
  378. package/src/manager/toolbox/toolboxManager.js +30 -12
  379. package/src/manager/window/WindowComponent.vue +18 -21
  380. package/src/manager/window/WindowComponentHeader.vue +34 -26
  381. package/src/manager/window/WindowManager.vue +33 -22
  382. package/src/manager/window/windowHelper.js +79 -23
  383. package/src/manager/window/windowManager.js +61 -32
  384. package/src/navigation/mapNavCompass.vue +17 -3
  385. package/src/navigation/mapNavigation.vue +59 -40
  386. package/src/navigation/obliqueRotation.vue +6 -8
  387. package/src/navigation/orientationToolsButton.vue +6 -9
  388. package/src/navigation/overviewMap.js +72 -41
  389. package/src/navigation/overviewMapClickedInteraction.js +6 -1
  390. package/src/navigation/tiltSlider.vue +6 -10
  391. package/src/navigation/vcsCompass.vue +1 -9
  392. package/src/navigation/vcsZoomButton.vue +16 -17
  393. package/src/notifier/notifier.js +22 -13
  394. package/src/notifier/notifierComponent.vue +21 -21
  395. package/src/pluginHelper.js +23 -9
  396. package/src/search/resultItem.vue +10 -15
  397. package/src/search/resultsComponent.vue +30 -24
  398. package/src/search/search.js +36 -19
  399. package/src/search/searchComponent.vue +20 -10
  400. package/src/setup.js +9 -9
  401. package/src/state.js +22 -6
  402. package/src/styles/_typography.scss +0 -1
  403. package/src/styles/shades.scss +4 -2
  404. package/src/styles/utils/_border.scss +1 -1
  405. package/src/styles/utils/_display.scss +1 -1
  406. package/src/styles/variables.scss +39 -34
  407. package/src/styles/vcsFont.scss +6 -5
  408. package/src/styles/vcsGrid.scss +9 -0
  409. package/src/uiConfig.js +3 -1
  410. package/src/vcsUiApp.js +156 -59
  411. package/src/vuePlugins/i18n.js +4 -4
  412. package/src/vuePlugins/vuetify.js +4 -0
  413. package/dist/assets/cesium/Workers/PolygonPipeline-844aab0a.js +0 -1345
  414. package/dist/assets/cesium/Workers/Transforms-40229881.js +0 -14696
  415. package/dist/assets/ui.c27597.css +0 -5
  416. /package/dist/assets/cesium/Workers/{GeometryOffsetAttribute-04332ce7.js → GeometryOffsetAttribute-9ad0019c.js} +0 -0
  417. /package/dist/assets/{vue.5d00e9.js → vue.c1ece7.js} +0 -0
@@ -6,20 +6,25 @@
6
6
  :key="idx"
7
7
  :class="{ 'w-full': item.colNr === 1, 'w-half': item.colNr !== 1 }"
8
8
  >
9
- <v-list-item
10
- dense
11
- class="pa-0"
12
- :class="determineInnerPadding(idx)"
13
- >
9
+ <v-list-item dense class="pa-0" :class="determineInnerPadding(idx)">
14
10
  <v-list-item-icon class="pr-2">
15
11
  <v-img
16
- v-if="row.type === StyleRowType.Icon || row.type === StyleRowType.Shape"
12
+ v-if="
13
+ row.type === StyleRowType.Icon ||
14
+ row.type === StyleRowType.Shape
15
+ "
17
16
  width="32"
18
17
  height="24"
19
18
  contain
20
19
  :src="getImageSrcFromShape(row.image)"
21
20
  />
22
- <svg xmlns="http://www.w3.org/2000/svg" width="32" height="24" viewBox="0 0 32 24" v-else>
21
+ <svg
22
+ xmlns="http://www.w3.org/2000/svg"
23
+ width="32"
24
+ height="24"
25
+ viewBox="0 0 32 24"
26
+ v-else
27
+ >
23
28
  <text
24
29
  v-if="row.type === StyleRowType.Text"
25
30
  :style="`font:${row.text.font}`"
@@ -75,7 +80,9 @@
75
80
  :stroke-dashoffset="row.image?.stroke?.lineDashOffset"
76
81
  :stroke-miterlimit="row.image?.stroke?.miterLimit"
77
82
  :stroke-width="row.image?.stroke?.width"
78
- :fill="getColor(row.image?.fill?.color) || 'rgba(255,255,255,0)'"
83
+ :fill="
84
+ getColor(row.image?.fill?.color) || 'rgba(255,255,255,0)'
85
+ "
79
86
  />
80
87
  </svg>
81
88
  </v-list-item-icon>
@@ -94,7 +101,6 @@
94
101
  </template>
95
102
 
96
103
  <script>
97
-
98
104
  import { getStringColor } from '@vcmap/core';
99
105
  import {
100
106
  VFlex,
@@ -164,7 +170,7 @@
164
170
  </script>
165
171
 
166
172
  <style scoped>
167
- .v-list-item--dense {
168
- height: 32px;
169
- }
173
+ .v-list-item--dense {
174
+ height: 32px;
175
+ }
170
176
  </style>
@@ -1,7 +1,5 @@
1
1
  <template>
2
- <v-sheet
3
- class="overflow-y-auto"
4
- >
2
+ <v-sheet class="overflow-y-auto">
5
3
  <v-expansion-panels
6
4
  accordion
7
5
  multiple
@@ -10,7 +8,7 @@
10
8
  class="rounded-0"
11
9
  >
12
10
  <v-expansion-panel
13
- v-for="(entry,i) in entries"
11
+ v-for="(entry, i) in entries"
14
12
  :key="i"
15
13
  class="px-2"
16
14
  @change="entry.open = !entry.open"
@@ -19,7 +17,7 @@
19
17
  <template #default="{ open }">
20
18
  <div class="d-flex justify-space-between">
21
19
  <div class="d-flex align-center">
22
- <v-icon class="mr-1" :class="{ 'rotate': !open }">
20
+ <v-icon class="mr-1" :class="{ rotate: !open }">
23
21
  mdi-chevron-down
24
22
  </v-icon>
25
23
  {{ $t(entry.title) }}
@@ -36,14 +34,14 @@
36
34
  :src="$t(item.src)"
37
35
  class="legend-image"
38
36
  :title="item.tooltip"
39
- >
37
+ />
40
38
  </div>
41
39
  <div v-else-if="item.type === LegendType.Iframe">
42
40
  <iframe
43
41
  :id="`legendIframe${idx}`"
44
42
  :src="$t(item.src)"
45
43
  scrolling="no"
46
- style="width: 100%; height: 100%;"
44
+ style="width: 100%; height: 100%"
47
45
  frameBorder="0"
48
46
  @load="setIframeHeight(`legendIframe${idx}`)"
49
47
  />
@@ -61,7 +59,6 @@
61
59
  </template>
62
60
 
63
61
  <script>
64
-
65
62
  import {
66
63
  VExpansionPanels,
67
64
  VExpansionPanel,
@@ -115,8 +112,9 @@
115
112
  * @type {import("vue").ComputedRef<number[]>}
116
113
  */
117
114
  const panels = computed(() => {
118
- return [...Array(props.entries.length).keys()]
119
- .filter((p, idx) => !!props.entries[idx].open);
115
+ return [...Array(props.entries.length).keys()].filter(
116
+ (p, idx) => !!props.entries[idx].open,
117
+ );
120
118
  });
121
119
 
122
120
  return {
@@ -129,11 +127,11 @@
129
127
  </script>
130
128
 
131
129
  <style lang="scss" scoped>
132
- .legend-image {
133
- max-width: 100%;
134
- height: auto;
135
- }
136
- .rotate {
137
- transform: rotate(-90deg);
138
- }
130
+ .legend-image {
131
+ max-width: 100%;
132
+ height: auto;
133
+ }
134
+ .rotate {
135
+ transform: rotate(-90deg);
136
+ }
139
137
  </style>
@@ -45,7 +45,6 @@ class ButtonManager {
45
45
  this._buttonComponents = new Map();
46
46
  }
47
47
 
48
-
49
48
  /**
50
49
  * @param {string} id
51
50
  * @returns {ButtonComponent}
@@ -91,7 +90,9 @@ class ButtonManager {
91
90
  check(owner, [String, vcsAppSymbol]);
92
91
 
93
92
  if (buttonComponentOptions.id && this.has(buttonComponentOptions.id)) {
94
- throw new Error(`A button with id ${buttonComponentOptions.id} has already been registered.`);
93
+ throw new Error(
94
+ `A button with id ${buttonComponentOptions.id} has already been registered.`,
95
+ );
95
96
  }
96
97
  const id = buttonComponentOptions.id || uuidv4();
97
98
 
@@ -134,7 +135,9 @@ class ButtonManager {
134
135
  */
135
136
  clear() {
136
137
  const componentIds = [...this.componentIds];
137
- componentIds.forEach((id) => { this.remove(id); });
138
+ componentIds.forEach((id) => {
139
+ this.remove(id);
140
+ });
138
141
  }
139
142
 
140
143
  /**
@@ -1,13 +1,10 @@
1
1
  <template>
2
- <v-expansion-panel
3
- class="px-2"
4
- @change="active = !active"
5
- >
2
+ <v-expansion-panel class="px-2" @change="active = !active">
6
3
  <v-expansion-panel-header hide-actions>
7
4
  <template #default="{ open }">
8
5
  <div class="d-flex justify-space-between">
9
6
  <div class="d-flex align-center">
10
- <v-icon class="mr-1" :class="{ 'rotate': !open }">
7
+ <v-icon class="mr-1" :class="{ rotate: !open }">
11
8
  mdi-chevron-down
12
9
  </v-icon>
13
10
  {{ $t(category.title) }}
@@ -24,10 +21,12 @@
24
21
  <v-expansion-panel-content class="pb-1">
25
22
  <vcs-list
26
23
  :items="category.items.slice(0, 10)"
24
+ :draggable="category.draggable"
27
25
  :selectable="category.selectable"
28
26
  :single-select="category.singleSelect"
29
27
  v-model="selection"
30
28
  :show-title="false"
29
+ @itemMoved="move"
31
30
  />
32
31
  <v-sheet v-if="category.items.length > 10" class="ma-2 pl-2">
33
32
  <VcsButton @click="openCategoryItemWindow" small>
@@ -44,11 +43,13 @@
44
43
  <script>
45
44
  import { computed, inject, ref } from 'vue';
46
45
  import {
47
- VIcon, VExpansionPanel,
46
+ VIcon,
47
+ VExpansionPanel,
48
48
  VExpansionPanelHeader,
49
49
  VExpansionPanelContent,
50
50
  VSheet,
51
51
  } from 'vuetify/lib';
52
+ import { IndexedCollection } from '@vcmap/core';
52
53
  import VcsList from '../../components/lists/VcsList.vue';
53
54
  import VcsActionButtonList from '../../components/buttons/VcsActionButtonList.vue';
54
55
  import VcsButton from '../../components/buttons/VcsButton.vue';
@@ -69,26 +70,40 @@
69
70
  VIcon,
70
71
  },
71
72
  props: {
72
- /** @type {ManagedCategory} */
73
73
  category: {
74
74
  type: Object,
75
75
  required: true,
76
76
  },
77
77
  },
78
- setup({ category }) {
78
+ setup(props) {
79
79
  /** @type {VcsUiApp} */
80
80
  const app = inject('vcsApp');
81
- const windowId = `${category.id}-category-list`;
81
+ const windowId = `${props.category.id}-category-list`;
82
82
  const active = ref(false);
83
83
 
84
84
  const selection = computed({
85
- get() { return category.selection; },
85
+ get() {
86
+ return props.category.selection;
87
+ },
86
88
  set(value) {
87
89
  // eslint-disable-next-line vue/no-mutating-props
88
- category.selection = value;
90
+ props.category.selection = value;
89
91
  },
90
92
  });
91
93
 
94
+ const { collection } = app.categories.getByKey(
95
+ props.category.categoryName,
96
+ );
97
+ /**
98
+ * index of the first item within the collection
99
+ * @type {ComputedRef<number>}
100
+ */
101
+ const collectionItemOffset = computed(() => {
102
+ return [...collection].findIndex(
103
+ (i) => i[collection.uniqueKey] === props.category.items[0]?.id,
104
+ );
105
+ });
106
+
92
107
  return {
93
108
  selection,
94
109
  active,
@@ -98,18 +113,30 @@
98
113
  app.windowManager.bringWindowToTop(windowId);
99
114
  }, 0);
100
115
  } else {
101
- app.windowManager.add({
102
- id: windowId,
103
- component: CategoryComponentList,
104
- props: {
105
- category,
106
- windowId,
116
+ app.windowManager.add(
117
+ {
118
+ id: windowId,
119
+ component: CategoryComponentList,
120
+ props: {
121
+ category: props.category,
122
+ windowId,
123
+ },
124
+ provides: {
125
+ selection,
126
+ },
127
+ slot: WindowSlot.DYNAMIC_LEFT,
107
128
  },
108
- provides: {
109
- selection,
110
- },
111
- slot: WindowSlot.DYNAMIC_LEFT,
112
- }, vcsAppSymbol);
129
+ vcsAppSymbol,
130
+ );
131
+ }
132
+ },
133
+ move({ item, targetIndex }) {
134
+ if (collection instanceof IndexedCollection) {
135
+ const collectionItem = collection.getByKey(item.id);
136
+ collection.moveTo(
137
+ collectionItem,
138
+ targetIndex + collectionItemOffset.value,
139
+ );
113
140
  }
114
141
  },
115
142
  };
@@ -118,7 +145,7 @@
118
145
  </script>
119
146
 
120
147
  <style lang="scss" scoped>
121
- .rotate {
122
- transform: rotate(-90deg);
123
- }
148
+ .rotate {
149
+ transform: rotate(-90deg);
150
+ }
124
151
  </style>
@@ -1,15 +1,18 @@
1
1
  <template>
2
2
  <vcs-list
3
3
  :items="category.items"
4
+ :draggable="category.draggable"
4
5
  :selectable="category.selectable"
5
6
  :single-select="category.singleSelect"
6
7
  v-model="selection"
7
8
  :title="category.title"
9
+ @item-moved="move"
8
10
  />
9
11
  </template>
10
12
 
11
13
  <script>
12
14
  import { computed, inject, watch } from 'vue';
15
+ import { IndexedCollection } from '@vcmap/core';
13
16
  import VcsList from '../../components/lists/VcsList.vue';
14
17
 
15
18
  export default {
@@ -27,31 +30,53 @@
27
30
  required: true,
28
31
  },
29
32
  },
30
- setup({ category, windowId }) {
33
+ setup(props) {
31
34
  /** @type {VcsUiApp} */
32
35
  const app = inject('vcsApp');
33
36
 
34
37
  const selection = computed({
35
- get() { return category.selection; },
38
+ get() {
39
+ return props.category.selection;
40
+ },
36
41
  set(value) {
37
42
  // eslint-disable-next-line vue/no-mutating-props
38
- category.selection = value;
43
+ props.category.selection = value;
39
44
  },
40
45
  });
41
46
 
42
47
  watch(app.categoryManager.componentIds, () => {
43
- if (!app.categoryManager.get(category.id)) {
44
- app.windowManager.remove(windowId);
48
+ if (!app.categoryManager.get(props.category.id)) {
49
+ app.windowManager.remove(props.windowId);
45
50
  }
46
51
  });
47
52
 
53
+ const { collection } = app.categories.getByKey(
54
+ props.category.categoryName,
55
+ );
56
+ /**
57
+ * index of the first item within the collection
58
+ * @type {ComputedRef<number>}
59
+ */
60
+ const collectionItemOffset = computed(() => {
61
+ return [...collection].findIndex(
62
+ (i) => i[collection.uniqueKey] === props.category.items[0]?.id,
63
+ );
64
+ });
65
+
48
66
  return {
49
67
  selection,
68
+ move({ item, targetIndex }) {
69
+ if (collection instanceof IndexedCollection) {
70
+ const collectionItem = collection.getByKey(item.id);
71
+ collection.moveTo(
72
+ collectionItem,
73
+ targetIndex + collectionItemOffset.value,
74
+ );
75
+ }
76
+ },
50
77
  };
51
78
  },
52
79
  };
53
80
  </script>
54
81
 
55
- <style scoped>
56
-
57
- </style>
82
+ <style scoped></style>
@@ -17,10 +17,7 @@
17
17
 
18
18
  <script>
19
19
  import { inject, ref, computed } from 'vue';
20
- import {
21
- VExpansionPanels,
22
- VSheet,
23
- } from 'vuetify/lib';
20
+ import { VExpansionPanels, VSheet } from 'vuetify/lib';
24
21
  import CategoryComponent from './CategoryComponent.vue';
25
22
 
26
23
  /**
@@ -38,7 +35,9 @@
38
35
  setup() {
39
36
  const app = inject('vcsApp');
40
37
  const categoryIds = ref(app.categoryManager.componentIds);
41
- const categories = computed(() => categoryIds.value.map(id => app.categoryManager.get(id)));
38
+ const categories = computed(() =>
39
+ categoryIds.value.map((id) => app.categoryManager.get(id)),
40
+ );
42
41
 
43
42
  return {
44
43
  categories,
@@ -2,7 +2,10 @@ import { reactive } from 'vue';
2
2
  import { moduleIdSymbol, IndexedCollection, VcsEvent } from '@vcmap/core';
3
3
  import { check } from '@vcsuite/check';
4
4
  import { sortByOwner } from '../navbarManager.js';
5
- import { validateAction, validateActions } from '../../components/lists/VcsActionList.vue';
5
+ import {
6
+ validateAction,
7
+ validateActions,
8
+ } from '../../components/lists/VcsActionList.vue';
6
9
 
7
10
  /**
8
11
  * @callback MappingFunction
@@ -35,6 +38,7 @@ import { validateAction, validateActions } from '../../components/lists/VcsActio
35
38
  * @property {string} title
36
39
  * @property {Array<VcsAction>} actions
37
40
  * @property {Array<VcsListItem & { destroy: (function():void|undefined) }>} items
41
+ * @property {boolean} draggable
38
42
  * @property {boolean} selectable
39
43
  * @property {boolean} singleSelect
40
44
  * @property {Array<VcsListItem>} selection
@@ -44,6 +48,7 @@ import { validateAction, validateActions } from '../../components/lists/VcsActio
44
48
  /**
45
49
  * @typedef {Object} ManagedCategoryOptions
46
50
  * @property {string} categoryName
51
+ * @property {boolean} [draggable] - only allowed for categories with underlying IndexedCollections
47
52
  * @property {boolean} [selectable]
48
53
  * @property {boolean} [singleSelect]
49
54
  * @property {Array<VcsAction>} [actions]
@@ -61,7 +66,9 @@ import { validateAction, validateActions } from '../../components/lists/VcsActio
61
66
  function transformItem(item, category, itemMappings) {
62
67
  const keyProperty = category.collection.uniqueKey;
63
68
  const listItem = {
64
- get id() { return item[keyProperty]; },
69
+ get id() {
70
+ return item[keyProperty];
71
+ },
65
72
  title: item?.properties?.title || item[keyProperty],
66
73
  actions: [],
67
74
  };
@@ -114,6 +121,7 @@ function reduceCategoryOptions(current, next) {
114
121
  if (next.actions?.length > 0) {
115
122
  current.actions.push(...next.actions);
116
123
  }
124
+ current.draggable = current.draggable ?? next.draggable;
117
125
  current.selectable = current.selectable ?? next.selectable;
118
126
  current.singleSelect = current.singleSelect ?? next.singleSelect;
119
127
  return current;
@@ -145,18 +153,20 @@ class CategoryManager {
145
153
  * @type {function():void}
146
154
  * @private
147
155
  */
148
- this._dynamicModuleIdListener = this._app.dynamicModuleIdChanged.addEventListener((id) => {
149
- this._dynamicModuleId = id;
150
- this._resetManagedCategories();
151
- });
156
+ this._dynamicModuleIdListener =
157
+ this._app.dynamicModuleIdChanged.addEventListener((id) => {
158
+ this._dynamicModuleId = id;
159
+ this._resetManagedCategories();
160
+ });
152
161
 
153
162
  /**
154
163
  * @type {function():void}
155
164
  * @private
156
165
  */
157
- this._appCategoriesRemovedListener = this._app.categories.removed.addEventListener((category) => {
158
- this._removeCategory(category.name);
159
- });
166
+ this._appCategoriesRemovedListener =
167
+ this._app.categories.removed.addEventListener((category) => {
168
+ this._removeCategory(category.name);
169
+ });
160
170
 
161
171
  /**
162
172
  * @type {string}
@@ -217,8 +227,9 @@ class CategoryManager {
217
227
  _handleItemMoved(item, category) {
218
228
  const managedCategory = this.get(category.name);
219
229
  if (managedCategory) {
220
- const index = managedCategory.items
221
- .findIndex((elem) => { return elem.id === item[category.collection.uniqueKey]; });
230
+ const index = managedCategory.items.findIndex((elem) => {
231
+ return elem.id === item[category.collection.uniqueKey];
232
+ });
222
233
  if (index > -1) {
223
234
  const listItem = managedCategory.items[index];
224
235
  managedCategory.items.splice(index, 1);
@@ -237,8 +248,9 @@ class CategoryManager {
237
248
  _handleItemRemoved(item, category) {
238
249
  const managedCategory = this.get(category.name);
239
250
  if (managedCategory) {
240
- const index = managedCategory.items
241
- .findIndex((elem) => { return elem.id === item[category.collection.uniqueKey]; });
251
+ const index = managedCategory.items.findIndex((elem) => {
252
+ return elem.id === item[category.collection.uniqueKey];
253
+ });
242
254
  if (index > -1) {
243
255
  const listItem = managedCategory.items[index];
244
256
  if (listItem.destroy) {
@@ -301,7 +313,9 @@ class CategoryManager {
301
313
  throw new Error(`Could not find Category: ${categoryName}`);
302
314
  }
303
315
 
304
- const options = [...this._managedCategoryOptions.get(category.name).values()] // does not have to be sorted, since this is the first owner
316
+ const options = [
317
+ ...this._managedCategoryOptions.get(category.name).values(),
318
+ ] // does not have to be sorted, since this is the first owner
305
319
  .reduce(reduceCategoryOptions, { actions: [] });
306
320
 
307
321
  const listeners = [
@@ -323,22 +337,28 @@ class CategoryManager {
323
337
  ];
324
338
 
325
339
  if (category.collection instanceof IndexedCollection) {
326
- listeners.push(category.collection.moved.addEventListener((item) => {
327
- if (item[moduleIdSymbol] === this._dynamicModuleId) {
328
- this._handleItemMoved(item, category);
329
- }
330
- }));
340
+ listeners.push(
341
+ category.collection.moved.addEventListener((item) => {
342
+ if (item[moduleIdSymbol] === this._dynamicModuleId) {
343
+ this._handleItemMoved(item, category);
344
+ }
345
+ }),
346
+ );
331
347
  }
332
348
 
333
349
  /** @type {ManagedCategory} */
334
350
  const managedCategory = reactive({
335
351
  ...options,
336
- get categoryName() { return category.name; },
352
+ get categoryName() {
353
+ return category.name;
354
+ },
337
355
  selection: [],
338
356
  title: category.title,
339
357
  items: [],
340
358
  destroy() {
341
- listeners.forEach((cb) => { cb(); });
359
+ listeners.forEach((cb) => {
360
+ cb();
361
+ });
342
362
  this.items.forEach((item) => {
343
363
  if (item.destroy) {
344
364
  item.destroy();
@@ -365,9 +385,13 @@ class CategoryManager {
365
385
  if (this._managedCategoryOptions.has(categoryName)) {
366
386
  const managedCategory = this.get(categoryName);
367
387
  if (managedCategory) {
368
- const pluginNames = [...this._app.plugins].map(p => p.name);
369
- const options = [...this._managedCategoryOptions.get(categoryName).entries()]
370
- .sort(([ownerA], [ownerB]) => sortByOwner(ownerA, ownerB, pluginNames))
388
+ const pluginNames = [...this._app.plugins].map((p) => p.name);
389
+ const options = [
390
+ ...this._managedCategoryOptions.get(categoryName).entries(),
391
+ ]
392
+ .sort(([ownerA], [ownerB]) =>
393
+ sortByOwner(ownerA, ownerB, pluginNames),
394
+ )
371
395
  .map(([, value]) => value)
372
396
  .reduce(reduceCategoryOptions, { actions: [] });
373
397
  Object.assign(managedCategory, options);
@@ -404,7 +428,10 @@ class CategoryManager {
404
428
  check(owner, [String, Symbol]);
405
429
 
406
430
  const { categoryName } = managedCategoryOptions;
407
- if (managedCategoryOptions.actions && !validateActions(managedCategoryOptions.actions)) {
431
+ if (
432
+ managedCategoryOptions.actions &&
433
+ !validateActions(managedCategoryOptions.actions)
434
+ ) {
408
435
  throw new Error('Invalid actions Array');
409
436
  }
410
437
  if (!this._app.categories.hasKey(categoryName)) {
@@ -412,13 +439,21 @@ class CategoryManager {
412
439
  }
413
440
 
414
441
  if (this._managedCategoryOptions.get(categoryName)?.has(owner)) {
415
- throw new Error(`Category has already been added by this owner: ${categoryName}, ${owner}`);
442
+ throw new Error(
443
+ `Category has already been added by this owner: ${categoryName}, ${owner}`,
444
+ );
445
+ }
446
+ if (managedCategoryOptions.draggable) {
447
+ const { collection } = this._app.categories.getByKey(categoryName);
448
+ managedCategoryOptions.draggable =
449
+ collection instanceof IndexedCollection;
416
450
  }
417
451
 
418
452
  /** @type {ManagedCategoryOptions} */
419
453
  const clonedOptions = {
420
454
  categoryName,
421
455
  actions: managedCategoryOptions.actions?.slice?.() ?? [],
456
+ draggable: managedCategoryOptions.draggable,
422
457
  selectable: managedCategoryOptions.selectable,
423
458
  singleSelect: managedCategoryOptions.singleSelect,
424
459
  };
@@ -489,10 +524,17 @@ class CategoryManager {
489
524
  if (categoryNames.length === 0) {
490
525
  throw new Error('Provide at least one categoryName');
491
526
  }
492
- if (this._itemMappings.find((itemMapping) => {
493
- return itemMapping.mappingFunction === mappingFunction && itemMapping.owner === owner;
494
- })) {
495
- throw new Error('Could not add MappingFunction, the MappingFunction is already under management');
527
+ if (
528
+ this._itemMappings.find((itemMapping) => {
529
+ return (
530
+ itemMapping.mappingFunction === mappingFunction &&
531
+ itemMapping.owner === owner
532
+ );
533
+ })
534
+ ) {
535
+ throw new Error(
536
+ 'Could not add MappingFunction, the MappingFunction is already under management',
537
+ );
496
538
  }
497
539
  /** @type {ItemMapping} */
498
540
  const itemMapping = {
@@ -519,7 +561,10 @@ class CategoryManager {
519
561
  check(owner, [String, Symbol]);
520
562
  const affectedCategories = [];
521
563
  this._itemMappings = this._itemMappings.filter((itemMapping) => {
522
- if (itemMapping.mappingFunction === mappingFunction && itemMapping.owner === owner) {
564
+ if (
565
+ itemMapping.mappingFunction === mappingFunction &&
566
+ itemMapping.owner === owner
567
+ ) {
523
568
  affectedCategories.push(...itemMapping.categoryNames);
524
569
  return false;
525
570
  }
@@ -552,10 +597,9 @@ class CategoryManager {
552
597
  this._removeCategory(categoryName);
553
598
  }
554
599
  });
555
- this._itemMappings = this._itemMappings
556
- .filter((itemMapping) => {
557
- return itemMapping.owner !== owner;
558
- });
600
+ this._itemMappings = this._itemMappings.filter((itemMapping) => {
601
+ return itemMapping.owner !== owner;
602
+ });
559
603
  this._resetManagedCategories();
560
604
  }
561
605
 
@@ -563,8 +607,9 @@ class CategoryManager {
563
607
  * Clears the manager of all added categories and item mappings
564
608
  */
565
609
  clear() {
566
- [...this.componentIds]
567
- .forEach((categoryName) => { this._removeCategory(categoryName); });
610
+ [...this.componentIds].forEach((categoryName) => {
611
+ this._removeCategory(categoryName);
612
+ });
568
613
  this._itemMappings = [];
569
614
  }
570
615
 
@@ -1,9 +1,6 @@
1
1
  <template>
2
2
  <div @click.stop="close">
3
- <VcsActionList
4
- :actions="actions"
5
- :show-icon="true"
6
- />
3
+ <VcsActionList :actions="actions" :show-icon="true" />
7
4
  </div>
8
5
  </template>
9
6
 
@@ -39,5 +36,4 @@
39
36
  };
40
37
  </script>
41
38
 
42
- <style scoped>
43
- </style>
39
+ <style scoped></style>