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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (485) hide show
  1. package/build/build.js +40 -60
  2. package/build/buildHelpers.js +63 -20
  3. package/build/buildTypes.js +9 -5
  4. package/build/bundle.js +1 -1
  5. package/build/info/conf.json +1 -1
  6. package/build/info/publish.js +25 -31
  7. package/build/lintTypes.js +5 -0
  8. package/config/aerowest.config.json +12 -2
  9. package/config/base.config.json +22 -17
  10. package/config/dev.config.json +164 -4
  11. package/config/projects.config.json +3 -1
  12. package/config/solar.config.json +65 -0
  13. package/config/splashscreen.config.json +45 -0
  14. package/config/theming.config.json +68 -0
  15. package/config/www.config.json +39 -23
  16. package/dist/.htaccess +7 -0
  17. package/dist/assets/@mdi/font/README.md +25 -0
  18. package/dist/assets/@mdi/font/css/materialdesignicons.min-680621ca.css +3 -0
  19. package/dist/assets/@mdi/font/css/materialdesignicons.min.css.map +16 -0
  20. package/dist/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
  21. package/dist/assets/cesium/Assets/approximateTerrainHeights.json +1 -1
  22. package/dist/assets/cesium/ThirdParty/Workers/z-worker-pako.js +1 -1
  23. package/dist/assets/cesium/Workers/{chunk-JB2LWGH4.js → chunk-2LOWCAMW.js} +14 -14
  24. package/dist/assets/cesium/Workers/{chunk-Z24VKNDO.js → chunk-2PTKXHJB.js} +12 -12
  25. package/dist/assets/cesium/Workers/{chunk-AHKEZ2OE.js → chunk-3HQMMUPU.js} +1 -1
  26. package/dist/assets/cesium/Workers/{chunk-V3NGATMV.js → chunk-3IFRSGEY.js} +11 -13
  27. package/dist/assets/cesium/Workers/{chunk-66QLLS45.js → chunk-44QAAS4P.js} +11 -9
  28. package/dist/assets/cesium/Workers/{chunk-TFC6TZ3S.js → chunk-56EDBCGT.js} +33 -22
  29. package/dist/assets/cesium/Workers/{chunk-3W63OHNJ.js → chunk-57H6I3SV.js} +5 -5
  30. package/dist/assets/cesium/Workers/{chunk-PFQBCKBM.js → chunk-6SQMLVGV.js} +5206 -3483
  31. package/dist/assets/cesium/Workers/{chunk-OZJDGN5F.js → chunk-7YIOHQWH.js} +16 -16
  32. package/dist/assets/cesium/Workers/{chunk-XTY7B2N6.js → chunk-7ZZ5LMZY.js} +17 -16
  33. package/dist/assets/cesium/Workers/{chunk-HARLBUOL.js → chunk-BVKITG4N.js} +11 -8
  34. package/dist/assets/cesium/Workers/{chunk-AFFLIKOH.js → chunk-C3EQ27WF.js} +7 -7
  35. package/dist/assets/cesium/Workers/{chunk-RW6LU2CJ.js → chunk-C4WPMOKT.js} +6 -5
  36. package/dist/assets/cesium/Workers/{chunk-OYFCF4PL.js → chunk-EDLRS3AW.js} +6 -6
  37. package/dist/assets/cesium/Workers/{chunk-C3SXRKRW.js → chunk-EJVGYGLF.js} +7 -7
  38. package/dist/assets/cesium/Workers/{chunk-PCJWUS4M.js → chunk-FFLMY4TE.js} +830 -14
  39. package/dist/assets/cesium/Workers/{chunk-MPAZH4BF.js → chunk-GBT7MJ6X.js} +1 -1
  40. package/dist/assets/cesium/Workers/{chunk-ZA25DG4Y.js → chunk-HJMNR3GC.js} +11 -11
  41. package/dist/assets/cesium/Workers/{chunk-JS3AW5BK.js → chunk-HP5XLODI.js} +6 -6
  42. package/dist/assets/cesium/Workers/{chunk-34YUDLRP.js → chunk-IBRIWOCM.js} +13 -13
  43. package/dist/assets/cesium/Workers/{chunk-XY7MGBKC.js → chunk-IZGUQO6Q.js} +14 -16
  44. package/dist/assets/cesium/Workers/{chunk-KTJSNCK4.js → chunk-IZJ42N4W.js} +230 -20
  45. package/dist/assets/cesium/Workers/{chunk-QMEMZIJI.js → chunk-JBSKHTNX.js} +4 -4
  46. package/dist/assets/cesium/Workers/{chunk-QIKODV5G.js → chunk-JISPSEF3.js} +4 -4
  47. package/dist/assets/cesium/Workers/{chunk-K36FEYS7.js → chunk-JSQJDZI4.js} +16 -12
  48. package/dist/assets/cesium/Workers/{chunk-X4SU25DT.js → chunk-JXVLNVXC.js} +10 -12
  49. package/dist/assets/cesium/Workers/chunk-KHZNBFOH.js +963 -0
  50. package/dist/assets/cesium/Workers/{chunk-KD4Y7CZL.js → chunk-L5GODJAR.js} +15 -17
  51. package/dist/assets/cesium/Workers/{chunk-O5AMBQ36.js → chunk-LJ2JQHJT.js} +13 -8
  52. package/dist/assets/cesium/Workers/{chunk-ABADGKYE.js → chunk-LLAF3CPH.js} +2 -2
  53. package/dist/assets/cesium/Workers/{chunk-CHHNOC2C.js → chunk-M24KHENR.js} +95 -155
  54. package/dist/assets/cesium/Workers/{chunk-2R5O53JW.js → chunk-NDDI2LWR.js} +6 -6
  55. package/dist/assets/cesium/Workers/{chunk-QT3MPEMI.js → chunk-NGZJIN5Z.js} +4 -4
  56. package/dist/assets/cesium/Workers/{chunk-ZFOBYDGF.js → chunk-O72GZTSE.js} +2 -2
  57. package/dist/assets/cesium/Workers/{chunk-IPA4EACJ.js → chunk-OPP2SKMA.js} +12 -12
  58. package/dist/assets/cesium/Workers/{chunk-4MFFIWUA.js → chunk-P6TRGU3S.js} +2 -2
  59. package/dist/assets/cesium/Workers/{chunk-GLZBE3ML.js → chunk-QN6TBED4.js} +13 -13
  60. package/dist/assets/cesium/Workers/{chunk-MYZB7C4T.js → chunk-QQOZO7KO.js} +10 -10
  61. package/dist/assets/cesium/Workers/{chunk-HQF437NJ.js → chunk-RJM36CNY.js} +6 -6
  62. package/dist/assets/cesium/Workers/{chunk-CTELOFLA.js → chunk-RTJKHZWU.js} +6 -6
  63. package/dist/assets/cesium/Workers/{chunk-J3JY6I2C.js → chunk-TI3TRKIC.js} +425 -489
  64. package/dist/assets/cesium/Workers/{chunk-OAVNIRB4.js → chunk-TK5IIG2F.js} +5 -7
  65. package/dist/assets/cesium/Workers/{chunk-WXTV4ATB.js → chunk-U5HSOKPQ.js} +1 -1
  66. package/dist/assets/cesium/Workers/{chunk-N3JIFFX2.js → chunk-WGDFYAGC.js} +5 -6
  67. package/dist/assets/cesium/Workers/{chunk-EW2GWJYB.js → chunk-X7IQYYHF.js} +2 -2
  68. package/dist/assets/cesium/Workers/{chunk-LLUNNUJV.js → chunk-XIUSRWL6.js} +9 -5
  69. package/dist/assets/cesium/Workers/{chunk-CCFQRR6D.js → chunk-XWOUPGUF.js} +1 -1
  70. package/dist/assets/cesium/Workers/{chunk-6BTKZDRG.js → chunk-YCDZX5LS.js} +3 -5
  71. package/dist/assets/cesium/Workers/{chunk-RP2A7BR5.js → chunk-YK3QIKY7.js} +12 -14
  72. package/dist/assets/cesium/Workers/{chunk-227AJNOA.js → chunk-YSIJTJ7N.js} +5 -5
  73. package/dist/assets/cesium/Workers/{chunk-A4JVFBQ3.js → chunk-Z2QP3CXW.js} +2 -2
  74. package/dist/assets/cesium/Workers/{chunk-VLGOATD6.js → chunk-ZVUUPJEM.js} +22 -22
  75. package/dist/assets/cesium/Workers/combineGeometry.js +22 -23
  76. package/dist/assets/cesium/Workers/createBoxGeometry.js +16 -17
  77. package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +14 -15
  78. package/dist/assets/cesium/Workers/createCircleGeometry.js +29 -26
  79. package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +17 -18
  80. package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +35 -36
  81. package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +29 -30
  82. package/dist/assets/cesium/Workers/createCorridorGeometry.js +29 -30
  83. package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +27 -28
  84. package/dist/assets/cesium/Workers/createCylinderGeometry.js +18 -19
  85. package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +17 -19
  86. package/dist/assets/cesium/Workers/createEllipseGeometry.js +24 -25
  87. package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +17 -18
  88. package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +17 -18
  89. package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +16 -17
  90. package/dist/assets/cesium/Workers/createFrustumGeometry.js +16 -17
  91. package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +18 -18
  92. package/dist/assets/cesium/Workers/createGeometry.js +52 -33
  93. package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +28 -29
  94. package/dist/assets/cesium/Workers/createPlaneGeometry.js +14 -15
  95. package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +13 -14
  96. package/dist/assets/cesium/Workers/createPolygonGeometry.js +451 -176
  97. package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +29 -30
  98. package/dist/assets/cesium/Workers/createPolylineGeometry.js +24 -25
  99. package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +31 -33
  100. package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +27 -29
  101. package/dist/assets/cesium/Workers/createRectangleGeometry.js +30 -31
  102. package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +21 -24
  103. package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +22 -23
  104. package/dist/assets/cesium/Workers/createSphereGeometry.js +17 -18
  105. package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +16 -17
  106. package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +3 -3
  107. package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +14 -16
  108. package/dist/assets/cesium/Workers/createVectorTileGeometries.js +22 -23
  109. package/dist/assets/cesium/Workers/createVectorTilePoints.js +12 -12
  110. package/dist/assets/cesium/Workers/createVectorTilePolygons.js +20 -21
  111. package/dist/assets/cesium/Workers/createVectorTilePolylines.js +14 -16
  112. package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +24 -25
  113. package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +29 -26
  114. package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +19 -21
  115. package/dist/assets/cesium/Workers/createWallGeometry.js +23 -24
  116. package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +22 -23
  117. package/dist/assets/cesium/Workers/decodeDraco.js +11 -11
  118. package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +35 -19
  119. package/dist/assets/cesium/Workers/decodeI3S.js +600 -92
  120. package/dist/assets/cesium/Workers/transcodeKTX2.js +58 -93
  121. package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -1
  122. package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +21 -22
  123. package/dist/assets/{cesium.6b12b4.js → cesium-9ea5ba6e.js} +73315 -68035
  124. package/dist/assets/cesium.js +1 -1
  125. package/dist/assets/{core.074b78.js → core-9b003470.js} +7135 -5664
  126. package/dist/assets/core.js +1 -1
  127. package/dist/assets/{ol.8b2e3a.js → ol-8373d6ac.js} +43066 -44325
  128. package/dist/assets/ol.js +1 -1
  129. package/dist/assets/ui-163311a7.css +1 -0
  130. package/dist/assets/{ui.715986.js → ui-163311a7.js} +14696 -13170
  131. package/dist/assets/ui.js +1 -1
  132. package/dist/assets/vue-0f6dd813.js +6083 -0
  133. package/dist/assets/vue.js +1 -1
  134. package/dist/assets/{vuetify.28d881.css → vuetify-e2c4b35c.css} +2 -2
  135. package/dist/assets/{vuetify.28d881.js → vuetify-e2c4b35c.js} +8699 -8824
  136. package/dist/assets/vuetify.js +1 -1
  137. package/dist/index.html +11 -10
  138. package/index.d.ts +36 -20
  139. package/index.html +5 -5
  140. package/index.js +20 -10
  141. package/lib/olLib.js +90 -23
  142. package/package.json +25 -23
  143. package/plugins/@vcmap-show-case/custom-icons-example/README.md +3 -0
  144. package/plugins/@vcmap-show-case/custom-icons-example/assets/imageExample.png +0 -0
  145. package/plugins/@vcmap-show-case/custom-icons-example/assets/svgExample.svg +1 -0
  146. package/plugins/@vcmap-show-case/custom-icons-example/package.json +5 -0
  147. package/plugins/@vcmap-show-case/custom-icons-example/src/CustomIconsExample.vue +90 -0
  148. package/plugins/@vcmap-show-case/custom-icons-example/src/index.js +45 -0
  149. package/plugins/@vcmap-show-case/flight-component-example/src/FlightExample.vue +41 -1
  150. package/plugins/@vcmap-show-case/form-inputs-example/src/FormInputsExample.vue +73 -34
  151. package/plugins/@vcmap-show-case/form-inputs-example/src/exampleActions.js +7 -11
  152. package/plugins/@vcmap-show-case/form-inputs-example/src/index.js +2 -2
  153. package/plugins/@vcmap-show-case/list-example/src/ListExample.vue +50 -96
  154. package/plugins/@vcmap-show-case/plugin-editors/src/PluginEditors.vue +14 -11
  155. package/plugins/@vcmap-show-case/project-selector/src/ModulesListComponent.vue +18 -11
  156. package/plugins/@vcmap-show-case/search-example/src/index.js +1 -0
  157. package/plugins/@vcmap-show-case/search-example/src/searchImpl.js +35 -5
  158. package/plugins/@vcmap-show-case/style-input-example/src/StyleExample.vue +29 -90
  159. package/plugins/@vcmap-show-case/theming-example/README.md +3 -0
  160. package/plugins/@vcmap-show-case/theming-example/package.json +5 -0
  161. package/plugins/@vcmap-show-case/theming-example/src/ThemingExample.vue +116 -0
  162. package/plugins/@vcmap-show-case/theming-example/src/index.js +53 -0
  163. package/plugins/@vcmap-show-case/toolbox-example/src/index.js +2 -1
  164. package/plugins/@vcmap-show-case/vector-properties-example/src/GeometrySettings.vue +420 -0
  165. package/plugins/@vcmap-show-case/vector-properties-example/src/LayoutHandler.vue +97 -0
  166. package/plugins/@vcmap-show-case/vector-properties-example/src/TerrainSettings.vue +90 -0
  167. package/plugins/@vcmap-show-case/vector-properties-example/src/VectorPropertiesExample.vue +86 -70
  168. package/plugins/@vcmap-show-case/vector-properties-example/src/index.js +34 -1
  169. package/plugins/@vcmap-show-case/vector-properties-example/src/lib.js +294 -0
  170. package/plugins/@vcmap-show-case/wizard-example/src/WizardExample.vue +40 -54
  171. package/plugins/package.json +23 -21
  172. package/public/assets/@mdi/font/README.md +25 -0
  173. package/public/assets/@mdi/font/css/materialdesignicons.min.css +2 -2
  174. package/public/assets/@mdi/font/css/materialdesignicons.min.css.map +16 -0
  175. package/public/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
  176. package/src/actions/StyleSelector.vue +37 -21
  177. package/src/actions/StyleSelector.vue.d.ts +5 -5
  178. package/src/actions/actionHelper.d.ts +4 -11
  179. package/src/actions/actionHelper.js +35 -27
  180. package/src/actions/flightActions.js +44 -23
  181. package/src/actions/listActions.d.ts +5 -12
  182. package/src/actions/listActions.js +6 -22
  183. package/src/actions/stateRefAction.js +2 -2
  184. package/src/application/VcsApp.vue +196 -85
  185. package/src/application/VcsApp.vue.d.ts +309 -4
  186. package/src/application/VcsAppWrapper.vue +1 -1
  187. package/src/application/VcsAttributions.vue +4 -15
  188. package/src/application/VcsAttributionsFooter.vue +28 -18
  189. package/src/application/VcsAttributionsFooter.vue.d.ts +1 -1
  190. package/src/application/VcsContainer.vue +27 -10
  191. package/src/application/VcsContainer.vue.d.ts +248 -0
  192. package/src/application/VcsMainMap.vue +8 -8
  193. package/src/application/VcsMainMap.vue.d.ts +2 -2
  194. package/src/application/VcsMap.vue +1 -0
  195. package/src/application/VcsNavbar.vue +15 -3
  196. package/src/application/VcsNavbar.vue.d.ts +2 -1
  197. package/src/application/VcsPositionDisplay.vue +10 -25
  198. package/src/application/VcsPositionDisplay.vue.d.ts +0 -1
  199. package/src/application/VcsSettings.vue +11 -18
  200. package/src/application/VcsSplashScreen.vue +43 -55
  201. package/src/application/VcsSplashScreen.vue.d.ts +4 -6
  202. package/src/application/VcsTextPage.vue +13 -44
  203. package/src/application/VcsTextPage.vue.d.ts +4 -8
  204. package/src/application/VcsTextPageFooter.vue +26 -41
  205. package/src/application/attributionsHelper.d.ts +20 -22
  206. package/src/application/attributionsHelper.js +14 -10
  207. package/src/callback/vcsCallback.d.ts +2 -2
  208. package/src/callback/vcsCallback.js +1 -1
  209. package/src/components/buttons/VcsActionButtonList.vue +66 -7
  210. package/src/components/buttons/VcsActionButtonList.vue.d.ts +28 -0
  211. package/src/components/buttons/VcsButton.vue +8 -10
  212. package/src/components/buttons/VcsButton.vue.d.ts +4 -4
  213. package/src/components/buttons/VcsFormButton.vue +9 -9
  214. package/src/components/buttons/VcsFormButton.vue.d.ts +3 -3
  215. package/src/components/buttons/VcsToolButton.vue +9 -7
  216. package/src/components/buttons/VcsToolButton.vue.d.ts +5 -5
  217. package/src/components/composables.d.ts +14 -2
  218. package/src/components/composables.js +106 -4
  219. package/src/components/extent/VcsExtent.vue +11 -7
  220. package/src/components/extent/VcsExtent.vue.d.ts +1 -0
  221. package/src/components/extent/VcsExtentEditor.vue +2 -1
  222. package/src/components/flight/VcsFlightAnchorsComponent.vue +64 -36
  223. package/src/components/flight/VcsFlightComponent.vue +25 -30
  224. package/src/components/flight/VcsFlightComponent.vue.d.ts +1 -0
  225. package/src/components/flight/VcsFlightEditor.vue +1 -0
  226. package/src/components/flight/VcsFlightPlayer.vue +47 -19
  227. package/src/components/form-inputs-controls/VcsCheckbox.vue +32 -13
  228. package/src/components/form-inputs-controls/VcsCheckbox.vue.d.ts +10 -0
  229. package/src/components/form-inputs-controls/VcsChipArrayInput.vue +14 -17
  230. package/src/components/form-inputs-controls/VcsChipArrayInput.vue.d.ts +2 -4
  231. package/src/components/form-inputs-controls/VcsCoordinate.vue +17 -5
  232. package/src/components/form-inputs-controls/VcsCoordinate.vue.d.ts +5 -2
  233. package/src/components/form-inputs-controls/VcsDatePicker.vue +53 -59
  234. package/src/components/form-inputs-controls/VcsDatePicker.vue.d.ts +2 -64
  235. package/src/components/form-inputs-controls/VcsFileInput.vue +18 -19
  236. package/src/components/form-inputs-controls/VcsFileInput.vue.d.ts +1 -0
  237. package/src/components/form-inputs-controls/VcsLabel.vue +65 -3
  238. package/src/components/form-inputs-controls/VcsLabel.vue.d.ts +32 -1
  239. package/src/components/form-inputs-controls/VcsRadio.vue +26 -10
  240. package/src/components/form-inputs-controls/VcsRadio.vue.d.ts +2 -0
  241. package/src/components/form-inputs-controls/VcsSelect.vue +47 -47
  242. package/src/components/form-inputs-controls/VcsSelect.vue.d.ts +9 -6
  243. package/src/components/form-inputs-controls/VcsSlider.vue +53 -15
  244. package/src/components/form-inputs-controls/VcsSlider.vue.d.ts +26 -2
  245. package/src/components/form-inputs-controls/VcsTextArea.vue +56 -40
  246. package/src/components/form-inputs-controls/VcsTextArea.vue.d.ts +1 -0
  247. package/src/components/form-inputs-controls/VcsTextField.vue +46 -16
  248. package/src/components/form-inputs-controls/VcsTextField.vue.d.ts +12 -1
  249. package/src/components/form-inputs-controls/VcsWizard.vue +89 -112
  250. package/src/components/form-inputs-controls/VcsWizard.vue.d.ts +3 -13
  251. package/src/components/form-inputs-controls/VcsWizardStep.vue +78 -58
  252. package/src/components/form-inputs-controls/VcsWizardStep.vue.d.ts +24 -11
  253. package/src/components/form-inputs-controls/vcsTextField.scss +21 -13
  254. package/src/components/form-output/VcsFormattedNumber.vue +46 -14
  255. package/src/components/form-output/VcsFormattedNumber.vue.d.ts +27 -0
  256. package/src/components/form-output/VcsMarkdown.vue +56 -0
  257. package/src/{application/VcsCustomScreen.vue.d.ts → components/form-output/VcsMarkdown.vue.d.ts} +7 -5
  258. package/src/components/form-output/markdownHelper.d.ts +30 -0
  259. package/src/components/form-output/markdownHelper.js +398 -0
  260. package/src/components/import/VcsFileDrop.vue +9 -6
  261. package/src/components/import/VcsImportComponent.vue +12 -8
  262. package/src/components/import/VcsImportComponent.vue.d.ts +1 -2
  263. package/src/components/lists/VcsActionList.vue +50 -34
  264. package/src/components/lists/VcsActionList.vue.d.ts +3 -1
  265. package/src/components/lists/VcsList.vue +105 -192
  266. package/src/components/lists/VcsList.vue.d.ts +18 -66
  267. package/src/components/lists/VcsListItemComponent.vue +216 -0
  268. package/src/components/lists/VcsListItemComponent.vue.d.ts +83 -0
  269. package/src/components/lists/VcsTreeview.vue +119 -26
  270. package/src/components/lists/VcsTreeview.vue.d.ts +26 -3
  271. package/src/components/lists/VcsTreeviewSearchbar.vue +17 -6
  272. package/src/components/lists/VcsTreeviewSearchbar.vue.d.ts +3 -1
  273. package/src/components/lists/VcsTreeviewTitle.vue +40 -0
  274. package/src/components/modelHelper.d.ts +21 -8
  275. package/src/components/modelHelper.js +50 -8
  276. package/src/components/notification/VcsBadge.vue +2 -2
  277. package/src/components/notification/VcsHelp.vue +6 -7
  278. package/src/components/notification/VcsHelp.vue.d.ts +0 -8
  279. package/src/components/notification/VcsHelpTooltip.vue +48 -0
  280. package/src/components/notification/VcsHelpTooltip.vue.d.ts +25 -0
  281. package/src/components/plugins/AbstractConfigEditor.vue +2 -23
  282. package/src/components/plugins/AbstractConfigEditor.vue.d.ts +6 -29
  283. package/src/components/section/VcsExpansionPanel.vue +111 -0
  284. package/src/components/section/VcsExpansionPanel.vue.d.ts +19 -0
  285. package/src/components/{form-inputs-controls → section}/VcsFormSection.vue +13 -7
  286. package/src/components/{form-inputs-controls → section}/VcsFormSection.vue.d.ts +2 -3
  287. package/src/components/style/MenuWrapper.vue +25 -27
  288. package/src/components/style/MenuWrapper.vue.d.ts +4 -4
  289. package/src/components/style/VcsFeatureStyleComponent.vue +1 -0
  290. package/src/components/style/VcsFillMenu.vue +10 -16
  291. package/src/components/style/VcsFillMenu.vue.d.ts +0 -18
  292. package/src/components/style/VcsFillSelector.vue +14 -16
  293. package/src/components/style/VcsImageMenu.vue +9 -25
  294. package/src/components/style/VcsImageMenu.vue.d.ts +0 -27
  295. package/src/components/style/VcsImageSelector.vue +115 -172
  296. package/src/components/style/VcsImageSelector.vue.d.ts +16 -15
  297. package/src/components/style/VcsStrokeMenu.vue +9 -15
  298. package/src/components/style/VcsStrokeMenu.vue.d.ts +0 -18
  299. package/src/components/style/VcsStrokeSelector.vue +17 -21
  300. package/src/components/style/VcsStrokeSelector.vue.d.ts +1 -0
  301. package/src/components/style/VcsTextMenu.vue +12 -14
  302. package/src/components/style/VcsTextMenu.vue.d.ts +0 -9
  303. package/src/components/style/VcsTextSelector.vue +80 -96
  304. package/src/components/style/VcsTextSelector.vue.d.ts +20 -22
  305. package/src/components/style/VcsVectorStyleComponent.vue +9 -20
  306. package/src/components/style/VcsVectorStyleComponent.vue.d.ts +1 -1
  307. package/src/components/style/composables.d.ts +0 -14
  308. package/src/components/style/composables.js +0 -49
  309. package/src/components/tables/VcsDataTable.vue +43 -33
  310. package/src/components/tables/VcsDataTable.vue.d.ts +2 -1
  311. package/src/components/tables/VcsTable.vue +46 -62
  312. package/src/components/tables/VcsTable.vue.d.ts +30 -17
  313. package/src/components/tables/VcsTableCell.vue +72 -0
  314. package/src/components/tables/VcsTableCell.vue.d.ts +13 -0
  315. package/src/components/vector-properties/VcsFeatureEditingWindow.vue +87 -51
  316. package/src/components/vector-properties/VcsFeatureEditingWindow.vue.d.ts +9 -7
  317. package/src/components/vector-properties/VcsFeatureTransforms.vue +45 -6
  318. package/src/components/vector-properties/VcsFeatureTransforms.vue.d.ts +2 -1
  319. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +541 -596
  320. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue.d.ts +222 -24
  321. package/src/components/viewpoint/VcsViewpointComponent.vue +36 -20
  322. package/src/components/viewpoint/VcsViewpointComponent.vue.d.ts +1 -0
  323. package/src/components/viewpoint/VcsViewpointEditor.vue +3 -1
  324. package/src/contentTree/LayerTree.vue +10 -28
  325. package/src/contentTree/LayerTree.vue.d.ts +1 -1
  326. package/src/contentTree/contentTreeCollection.d.ts +1 -0
  327. package/src/contentTree/contentTreeCollection.js +45 -11
  328. package/src/contentTree/contentTreeItem.d.ts +4 -4
  329. package/src/contentTree/contentTreeItem.js +8 -8
  330. package/src/contentTree/layerContentTreeItem.d.ts +8 -5
  331. package/src/contentTree/layerContentTreeItem.js +48 -34
  332. package/src/contentTree/layerGroupContentTreeItem.d.ts +7 -1
  333. package/src/contentTree/layerGroupContentTreeItem.js +22 -3
  334. package/src/contentTree/obliqueCollectionContentTreeItem.js +6 -1
  335. package/src/featureInfo/AddressBalloonComponent.vue +1 -1
  336. package/src/featureInfo/BalloonComponent.vue +33 -26
  337. package/src/featureInfo/BalloonComponent.vue.d.ts +1 -0
  338. package/src/featureInfo/IframeComponent.vue +6 -1
  339. package/src/featureInfo/MarkdownBalloonComponent.vue +5 -3
  340. package/src/featureInfo/MarkdownBalloonComponent.vue.d.ts +2 -2
  341. package/src/featureInfo/abstractFeatureInfoView.d.ts +19 -4
  342. package/src/featureInfo/abstractFeatureInfoView.js +38 -13
  343. package/src/featureInfo/balloonHelper.js +1 -1
  344. package/src/featureInfo/featureInfo.d.ts +7 -7
  345. package/src/featureInfo/featureInfo.js +59 -41
  346. package/src/featureInfo/iframeFeatureInfoView.d.ts +8 -2
  347. package/src/featureInfo/iframeFeatureInfoView.js +15 -5
  348. package/src/featureInfo/markdownBalloonFeatureInfoView.d.ts +1 -1
  349. package/src/featureInfo/markdownBalloonFeatureInfoView.js +5 -5
  350. package/src/featureInfo/markdownFeatureInfoView.d.ts +1 -1
  351. package/src/featureInfo/markdownFeatureInfoView.js +9 -11
  352. package/src/featureInfo/tableFeatureInfoView.js +13 -4
  353. package/src/i18n/de.d.ts +59 -32
  354. package/src/i18n/de.js +28 -5
  355. package/src/i18n/en.d.ts +59 -32
  356. package/src/i18n/en.js +25 -2
  357. package/src/i18n/i18nCollection.d.ts +9 -15
  358. package/src/i18n/i18nCollection.js +3 -3
  359. package/src/init.d.ts +5 -38
  360. package/src/init.js +19 -18
  361. package/src/legend/StyleLegendItem.vue +4 -9
  362. package/src/legend/VcsLegend.vue +33 -55
  363. package/src/legend/VcsLegend.vue.d.ts +1 -0
  364. package/src/manager/buttonManager.js +4 -4
  365. package/src/manager/collectionManager/CollectionComponent.vue +18 -42
  366. package/src/manager/collectionManager/CollectionComponent.vue.d.ts +4 -2
  367. package/src/manager/collectionManager/CollectionComponentContent.vue +7 -6
  368. package/src/manager/collectionManager/CollectionComponentContent.vue.d.ts +3 -1
  369. package/src/manager/collectionManager/CollectionComponentList.vue +11 -9
  370. package/src/manager/collectionManager/CollectionComponentList.vue.d.ts +6 -4
  371. package/src/manager/collectionManager/CollectionComponentProvider.vue +1 -1
  372. package/src/manager/collectionManager/CollectionComponentStandalone.vue +3 -2
  373. package/src/manager/collectionManager/CollectionManager.vue +1 -1
  374. package/src/manager/collectionManager/categoryManager.d.ts +1 -1
  375. package/src/manager/collectionManager/collectionComponentClass.d.ts +3 -3
  376. package/src/manager/collectionManager/collectionComponentClass.js +16 -15
  377. package/src/manager/collectionManager/collectionManager.d.ts +1 -1
  378. package/src/manager/collectionManager/collectionManager.js +10 -10
  379. package/src/manager/collectionManager/editorCollectionComponentClass.js +11 -8
  380. package/src/manager/contextMenu/ContextMenuComponent.vue +1 -1
  381. package/src/manager/contextMenu/contextMenuManager.js +2 -2
  382. package/src/manager/navbarManager.js +2 -2
  383. package/src/manager/panel/PanelComponent.vue +2 -9
  384. package/src/manager/panel/PanelManagerComponent.vue +9 -5
  385. package/src/manager/panel/panelHelper.js +3 -3
  386. package/src/manager/panel/panelManager.d.ts +9 -1
  387. package/src/manager/panel/panelManager.js +18 -6
  388. package/src/manager/toolbox/GroupToolboxComponent.vue +13 -7
  389. package/src/manager/toolbox/GroupToolboxComponent.vue.d.ts +1 -0
  390. package/src/manager/toolbox/SelectToolboxComponent.vue +13 -8
  391. package/src/manager/toolbox/SelectToolboxComponent.vue.d.ts +1 -0
  392. package/src/manager/toolbox/{ToolboxManager.vue → ToolboxManagerComponent.vue} +28 -8
  393. package/src/manager/toolbox/{ToolboxManager.vue.d.ts → ToolboxManagerComponent.vue.d.ts} +1 -0
  394. package/src/manager/toolbox/toolboxManager.js +10 -10
  395. package/src/manager/window/WindowComponent.vue +13 -9
  396. package/src/manager/window/WindowComponentHeader.vue +33 -9
  397. package/src/manager/window/WindowComponentHeader.vue.d.ts +3 -0
  398. package/src/manager/window/WindowManager.vue +6 -3
  399. package/src/manager/window/windowManager.d.ts +71 -15
  400. package/src/manager/window/windowManager.js +32 -11
  401. package/src/navigation/MapNavigation.vue +52 -9
  402. package/src/navigation/ObliqueRotation.vue +2 -2
  403. package/src/navigation/OrientationToolsButton.vue +37 -26
  404. package/src/navigation/OrientationToolsButton.vue.d.ts +5 -1
  405. package/src/navigation/TiltSlider.vue +82 -88
  406. package/src/navigation/TiltSlider.vue.d.ts +10 -7
  407. package/src/navigation/VcsCompass.vue +17 -11
  408. package/src/navigation/VcsCompass.vue.d.ts +2 -0
  409. package/src/navigation/VcsZoomButton.vue +1 -1
  410. package/src/navigation/locatorHelper.js +4 -22
  411. package/src/navigation/overviewMap.js +5 -2
  412. package/src/notifier/NotifierComponent.vue +19 -16
  413. package/src/obliqueFallbackWarnings.d.ts +5 -0
  414. package/src/obliqueFallbackWarnings.js +54 -0
  415. package/src/search/ResultItem.vue +18 -6
  416. package/src/search/ResultsComponent.vue +32 -21
  417. package/src/search/ResultsComponent.vue.d.ts +2 -1
  418. package/src/search/SearchComponent.vue +14 -16
  419. package/src/search/SearchComponent.vue.d.ts +1 -0
  420. package/src/search/search.js +2 -2
  421. package/src/siteConfig.js +9 -9
  422. package/src/state.js +4 -4
  423. package/src/styles/_typography.scss +1 -2
  424. package/src/styles/main.scss +0 -4
  425. package/src/styles/vcsList.scss +1 -1
  426. package/src/uiConfig.d.ts +323 -7
  427. package/src/uiConfig.js +31 -17
  428. package/src/vcsUiApp.d.ts +90 -80
  429. package/src/vcsUiApp.js +61 -41
  430. package/src/vuePlugins/i18n.js +8 -0
  431. package/src/vuePlugins/vuetify.d.ts +88 -60
  432. package/src/vuePlugins/vuetify.js +134 -20
  433. package/dist/assets/@mdi/font/css/materialdesignicons.css.map +0 -16
  434. package/dist/assets/@mdi/font/css/materialdesignicons.min.e3f476.css +0 -3
  435. package/dist/assets/cesium/Workers/chunk-DUHWWBQQ.js +0 -3273
  436. package/dist/assets/cesium/Workers/chunk-QJ3DFBH3.js +0 -73
  437. package/dist/assets/index-ca7EmZ3d.js +0 -1
  438. package/dist/assets/ui.715986.css +0 -1
  439. package/dist/assets/vue.0f2c53.js +0 -6096
  440. package/plugins/@vcmap-show-case/theme-changer/README.md +0 -23
  441. package/plugins/@vcmap-show-case/theme-changer/config.json +0 -69
  442. package/plugins/@vcmap-show-case/theme-changer/package.json +0 -11
  443. package/plugins/@vcmap-show-case/theme-changer/src/ThemeChangerComponent.vue +0 -120
  444. package/plugins/@vcmap-show-case/theme-changer/src/index.js +0 -108
  445. package/public/assets/@mdi/font/css/materialdesignicons.css.map +0 -16
  446. package/src/application/VcsCustomScreen.vue +0 -45
  447. package/src/application/markdownHelper.d.ts +0 -12
  448. package/src/application/markdownHelper.js +0 -85
  449. package/src/components/lists/VcsTreeviewLeaf.vue +0 -83
  450. package/src/components/notification/VcsTooltip.vue +0 -156
  451. package/src/components/notification/VcsTooltip.vue.d.ts +0 -27
  452. package/src/components/vector-properties/composables.d.ts +0 -33
  453. package/src/components/vector-properties/composables.js +0 -100
  454. package/src/featureInfo/MarkdownComponent.vue +0 -16
  455. package/src/featureInfo/MarkdownComponent.vue.d.ts +0 -7
  456. package/src/styles/_theming.scss +0 -73
  457. package/src/styles/settings.scss +0 -6
  458. package/src/styles/shades.scss +0 -4
  459. package/src/styles/variables.scss +0 -140
  460. package/src/styles/vcsFont.scss +0 -2
  461. package/src/styles/vcsGrid.scss +0 -3
  462. /package/dist/assets/{favicon-128.4c4ce5.png → favicon-128-4c4ce5df.png} +0 -0
  463. /package/dist/assets/{favicon-180.5b99c0.png → favicon-180-4c4ce5df.png} +0 -0
  464. /package/dist/assets/{favicon-192.0e205e.png → favicon-192-4c4ce5df.png} +0 -0
  465. /package/dist/assets/{favicon-32.6b9add.png → favicon-32-4c4ce5df.png} +0 -0
  466. /package/dist/assets/{favicon.d5ec97.svg → favicon-4c4ce5df.svg} +0 -0
  467. /package/dist/assets/font/{TitilliumWeb-Regular.9ca076.woff2 → TitilliumWeb-Regular-9ca076be.woff2} +0 -0
  468. /package/dist/assets/style/{icon-marker.70960f.png → icon-marker-70960f05.png} +0 -0
  469. /package/dist/assets/style/{icon-marker-blue.534e37.png → icon-marker-blue-534e374b.png} +0 -0
  470. /package/dist/assets/style/{icon-marker-green.0b6a92.png → icon-marker-green-0b6a92bc.png} +0 -0
  471. /package/dist/assets/style/{icon-marker-o.036477.png → icon-marker-o-036477fa.png} +0 -0
  472. /package/dist/assets/style/{icon-marker-o-blue.7b6d62.png → icon-marker-o-blue-7b6d6279.png} +0 -0
  473. /package/dist/assets/style/{icon-marker-o-green.c863c0.png → icon-marker-o-green-c863c0fa.png} +0 -0
  474. /package/dist/assets/style/{icon-marker-o-red.93ff58.png → icon-marker-o-red-93ff58df.png} +0 -0
  475. /package/dist/assets/style/{icon-marker-red.313d03.png → icon-marker-red-313d03e8.png} +0 -0
  476. /package/dist/assets/style/{icon-pin.b7ce77.png → icon-pin-b7ce771e.png} +0 -0
  477. /package/dist/assets/style/{icon-pin-blue.7be369.png → icon-pin-blue-7be369a3.png} +0 -0
  478. /package/dist/assets/style/{icon-pin-green.cbb935.png → icon-pin-green-cbb935fe.png} +0 -0
  479. /package/dist/assets/style/{icon-pin-red.3f25b2.png → icon-pin-red-3f25b245.png} +0 -0
  480. /package/public/assets/{favicon-128.png → favicon-128-4c4ce5df.png} +0 -0
  481. /package/public/assets/{favicon-180.png → favicon-180-4c4ce5df.png} +0 -0
  482. /package/public/assets/{favicon-192.png → favicon-192-4c4ce5df.png} +0 -0
  483. /package/public/assets/{favicon-32.png → favicon-32-4c4ce5df.png} +0 -0
  484. /package/public/assets/{favicon.svg → favicon-4c4ce5df.svg} +0 -0
  485. /package/src/components/lists/{VcsTreeviewLeaf.vue.d.ts → VcsTreeviewTitle.vue.d.ts} +0 -0
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <v-sheet>
2
+ <v-sheet class="vcs-image-selector">
3
3
  <v-container class="px-1 py-0">
4
4
  <v-row no-gutters>
5
5
  <v-col class="d-flex justify-center py-1">
@@ -25,26 +25,34 @@
25
25
  <v-divider />
26
26
  <v-container class="px-1 pt-1 pb-0">
27
27
  <VcsRadio
28
- v-model="selectedImage"
28
+ v-model="selectedIdx"
29
29
  :items="currentItems"
30
- :disabled="!value"
31
- item-value="src"
30
+ :disabled="!modelValue"
31
+ item-value="idx"
32
+ label-position="top"
33
+ inline
34
+ class="d-flex justify-center"
32
35
  >
33
- <template #top-label="{ item }" v-if="selectedType === ImageType.SHAPE">
34
- <v-icon size="24">{{ item.src }}</v-icon>
36
+ <template #label="{ item }">
37
+ <img
38
+ v-if="selectedType !== ImageType.SHAPE"
39
+ :src="item.src"
40
+ alt="shape"
41
+ />
42
+ <v-icon v-else size="24">{{ item.src }}</v-icon>
35
43
  </template>
36
44
  </VcsRadio>
37
45
  <div v-if="selectedType === ImageType.ICON">
38
46
  <v-row no-gutters>
39
47
  <v-col>
40
- <VcsLabel html-for="style-icon-opacity">
48
+ <VcsLabel :html-for="`${cid}-style-icon-opacity`">
41
49
  {{ $t('components.style.opacity') }}
42
50
  </VcsLabel>
43
51
  </v-col>
44
52
  <v-col>
45
53
  <VcsSlider
46
- id="style-icon-opacity"
47
- v-model="selectedOpacity"
54
+ :id="`${cid}-style-icon-opacity`"
55
+ v-model="localValue.opacity"
48
56
  step="0.1"
49
57
  type="number"
50
58
  max="1"
@@ -58,18 +66,20 @@
58
66
  <v-row
59
67
  no-gutters
60
68
  v-for="input in shapeSingleValueInputs"
61
- :key="input.name"
69
+ :key="input.key"
62
70
  >
63
71
  <v-col>
64
- <VcsLabel>{{ $st(`components.style.${input.text}`) }}</VcsLabel>
72
+ <VcsLabel :html-for="`${cid}-${input.key}`">{{
73
+ $st(`components.style.${input.key}`)
74
+ }}</VcsLabel>
65
75
  </v-col>
66
76
  <v-col cols="3">
67
77
  <VcsTextField
68
- :id="`style-shape-${input.text}`"
78
+ :id="`${cid}-${input.key}`"
69
79
  :hide-spin-buttons="true"
70
80
  type="number"
71
81
  :unit="input.unit || ''"
72
- v-model.number="input.value.value"
82
+ v-model.number="localValue[input.key]"
73
83
  :disabled="currentType !== ImageType.SHAPE"
74
84
  :step="input.step || 1"
75
85
  :min="input.range?.[0] || 0"
@@ -94,11 +104,13 @@
94
104
  v-if="extendedShapeSettings || selectedType === ImageType.ICON"
95
105
  >
96
106
  <v-col>
97
- <VcsLabel>{{ $t('components.style.scale') }}</VcsLabel>
107
+ <VcsLabel :html-for="`${cid}-style-shape-scale`">{{
108
+ $t('components.style.scale')
109
+ }}</VcsLabel>
98
110
  </v-col>
99
111
  <v-col cols="3">
100
112
  <VcsTextField
101
- id="style-shape-scale"
113
+ :id="`${cid}-style-shape-scale`"
102
114
  :hide-spin-buttons="true"
103
115
  type="number"
104
116
  v-model.number="selectedScale"
@@ -110,22 +122,22 @@
110
122
  </v-row>
111
123
  <VcsStrokeMenu
112
124
  v-if="selectedType === ImageType.SHAPE"
113
- v-model="selectedStroke"
125
+ v-model="localValue.stroke"
114
126
  :value-default="valueDefault?.stroke"
115
- :disabled="!value || currentType !== ImageType.SHAPE"
127
+ :disabled="!localValue || currentType !== ImageType.SHAPE"
116
128
  />
117
129
  <VcsFillMenu
118
130
  v-if="selectedType === ImageType.SHAPE"
119
- v-model="selectedFill"
131
+ v-model="localValue.fill"
120
132
  :value-default="valueDefault?.fill"
121
- :disabled="!value || currentType !== ImageType.SHAPE"
133
+ :disabled="!localValue || currentType !== ImageType.SHAPE"
122
134
  />
123
135
  </v-container>
124
136
  </v-sheet>
125
137
  </template>
126
138
 
127
139
  <script>
128
- import { computed, onMounted, ref, watch } from 'vue';
140
+ import { computed, onMounted, ref, toRaw, watch } from 'vue';
129
141
  import {
130
142
  VSheet,
131
143
  VDivider,
@@ -136,16 +148,19 @@
136
148
  VTabs,
137
149
  VTab,
138
150
  } from 'vuetify/components';
139
- import { Circle, Fill, Icon, RegularShape, Stroke, Style } from 'ol/style.js';
151
+ import { Icon, Style } from 'ol/style.js';
140
152
  import { toContext } from 'ol/render.js';
141
153
  import { Point } from 'ol/geom.js';
154
+ import { getImageStyleFromOptions } from '@vcmap/core';
155
+ import { useComponentId } from '../composables.js';
156
+ import { useProxiedComplexModel } from '../modelHelper.js';
142
157
  import VcsLabel from '../form-inputs-controls/VcsLabel.vue';
143
158
  import VcsTextField from '../form-inputs-controls/VcsTextField.vue';
144
159
  import VcsSlider from '../form-inputs-controls/VcsSlider.vue';
145
160
  import VcsRadio from '../form-inputs-controls/VcsRadio.vue';
146
161
  import VcsFillMenu from './VcsFillMenu.vue';
147
162
  import VcsStrokeMenu from './VcsStrokeMenu.vue';
148
- import { useSelectedKey, between } from './composables.js';
163
+ import { between } from './composables.js';
149
164
 
150
165
  /**
151
166
  * @enum {string}
@@ -160,8 +175,8 @@
160
175
  /**
161
176
  * Draws an image style on a canvas.
162
177
  * @param {HTMLCanvasElement} canvas The canvas to draw on
163
- * @param {import("ol/style/Image").Options} imageOptions The JSON options of the image style.
164
- * @param {boolean} fitToCanvas If the circle, shape or icon should be fitted into the canvas or if it should be draw with it's actual size.
178
+ * @param {import("ol/style/Image").Options} [imageOptions] The JSON options of the image style.
179
+ * @param {boolean} [fitToCanvas=false] If the circle, shape or icon should be fitted into the canvas or if it should be draw with it's actual size.
165
180
  */
166
181
  export async function drawImageStyle(
167
182
  canvas,
@@ -177,37 +192,9 @@
177
192
  let imageStyle;
178
193
  let size;
179
194
  if (imageOptions.radius) {
180
- // TODO: Replace with getImageStyleFromOptions from styleHelpers.ts in @vcmap/core
181
195
  const { radius } = imageOptions;
182
196
  size = [radius * 2, radius * 2];
183
- const options = {
184
- stroke: new Stroke(
185
- imageOptions.stroke
186
- ? {
187
- color: imageOptions.stroke.color,
188
- width: imageOptions.stroke.width,
189
- }
190
- : null,
191
- ),
192
- fill: new Fill(
193
- imageOptions.fill
194
- ? {
195
- color: imageOptions.fill.color,
196
- }
197
- : null,
198
- ),
199
- radius,
200
- };
201
- if (imageOptions.points) {
202
- options.radius2 = imageOptions.radius2;
203
- options.angle = imageOptions.angle;
204
- options.points = imageOptions.points;
205
- options.rotation = imageOptions.rotation;
206
- options.scale = imageOptions.scale;
207
- imageStyle = new RegularShape(options);
208
- } else {
209
- imageStyle = new Circle(options);
210
- }
197
+ imageStyle = getImageStyleFromOptions(imageOptions);
211
198
  } else if (imageOptions.src) {
212
199
  // Somehow the icon does not load the img when providing the src. And icon.load() is not async.
213
200
  // Therefore the img first has to be loaded and then passed to new Icon
@@ -747,8 +734,8 @@
747
734
 
748
735
  /**
749
736
  * @description Allows to model a JSON representation of ol/style/Image style. It makes use of VcsStrokeMenu and VcsFillMenu.
750
- * @vue-prop {import("ol/style/RegularShape").Options | import("ol/style/Circle").Options | import("ol/style/Icon").Options} value - The Image options
751
- * @vue-prop {import("ol/style/RegularShape").Options | import("ol/style/Circle").Options | import("ol/style/Icon").Options} valueDefault - The default image options
737
+ * @vue-prop {import("ol/style/RegularShape").Options | import("ol/style/Circle").Options | import("ol/style/Icon").Options} [modelValue] - The Image options
738
+ * @vue-prop {import("ol/style/RegularShape").Options | import("ol/style/Circle").Options | import("ol/style/Icon").Options} [valueDefault] - The default image options
752
739
  * @vue-prop {Array<import("ol/style/Icon").Options>} [iconOptions] - The icon options too choose from. Scale and opacity are ignored. The defaults are 3 different shapes with 4 different colors.
753
740
  * @vue-prop {boolean} [extendedShapeSettings=false] - If true, there are all the input fields needed to create arbitrary ol RegularShapes.
754
741
  */
@@ -789,10 +776,11 @@
789
776
  },
790
777
  },
791
778
  setup(props, { emit }) {
779
+ const localValue = useProxiedComplexModel(props, 'modelValue', emit);
792
780
  const currentType = computed(() => {
793
- if (props.modelValue?.radius) {
781
+ if (localValue.value?.radius) {
794
782
  return ImageType.SHAPE;
795
- } else if (props.modelValue?.src) {
783
+ } else if (localValue.value?.src) {
796
784
  return ImageType.ICON;
797
785
  } else {
798
786
  return undefined;
@@ -814,136 +802,87 @@
814
802
  const canvas = ref();
815
803
 
816
804
  const shapeSingleValueInputs = computed(() => {
805
+ /**
806
+ * @type {[{key: string,isRequired?: boolean, unit?: string, range?: number[]}]}
807
+ */
817
808
  const inputs = [
818
- { name: 'radius', unit: 'px', range: [1, 100], isRequired: true },
809
+ { key: 'radius', unit: 'px', range: [1, 100], isRequired: true },
819
810
  ];
820
811
  if (props.extendedShapeSettings) {
821
- [
822
- { name: 'points', range: [0, 10] },
823
- { name: 'radius2', unit: 'px', range: [0, 100] },
824
- { name: 'angle', step: 0.1, unit: 'rad' },
825
- { name: 'rotation', step: 0.1, unit: 'rad' },
826
- ].forEach((entry) => inputs.push(entry));
812
+ inputs.push(
813
+ { key: 'points', range: [0, 10] },
814
+ { key: 'radius2', unit: 'px', range: [0, 100] },
815
+ { key: 'angle', step: 0.1, unit: 'rad' },
816
+ { key: 'rotation', step: 0.1, unit: 'rad' },
817
+ );
827
818
  }
828
- return inputs.map((input) => {
829
- return {
830
- text: input.name,
831
- value: useSelectedKey(
832
- () => props.modelValue,
833
- input.name,
834
- props.valueDefault[input.name],
835
- emit,
836
- input.range,
837
- input.isRequired,
838
- ),
839
- unit: input.unit,
840
- range: input.range,
841
- step: input.step,
842
- };
843
- });
819
+ return inputs;
844
820
  });
845
821
 
846
822
  const selectedScale = computed({
847
823
  get() {
848
- if (Array.isArray(props.modelValue?.scale)) {
849
- return props.modelValue.scale[0];
824
+ if (Array.isArray(localValue.value?.scale)) {
825
+ return localValue.value.scale[0];
850
826
  } else {
851
- return props.modelValue?.scale;
827
+ return localValue.value?.scale;
852
828
  }
853
829
  },
854
830
  set(value) {
855
- if (!value) {
856
- const newImage = structuredClone(props.modelValue);
857
- delete newImage.scale;
858
- emit('update:modelValue', newImage);
859
- } else if (value > 0) {
860
- const newImage = structuredClone(props.modelValue);
861
- emit(
862
- 'update:modelValue',
863
- Object.assign(newImage, { scale: value }),
864
- );
865
- }
831
+ localValue.value.scale = value;
866
832
  },
867
833
  });
868
834
 
869
- const selectedOpacity = useSelectedKey(
870
- () => props.modelValue,
871
- 'opacity',
872
- props.valueDefault.opacity,
873
- emit,
874
- );
835
+ const selectedIdx = ref(-1);
875
836
 
876
- const selectedFill = useSelectedKey(
877
- () => props.modelValue,
878
- 'fill',
879
- props.valueDefault.fill,
880
- emit,
881
- );
882
- const selectedStroke = useSelectedKey(
883
- () => props.modelValue,
884
- 'stroke',
885
- props.valueDefault.stroke,
886
- emit,
887
- );
837
+ watch(selectedType, () => {
838
+ // unset selection on tab change
839
+ if (currentType.value !== selectedType.value) {
840
+ selectedIdx.value = -1;
841
+ }
842
+ });
888
843
 
889
- const selectedImage = computed({
890
- get() {
891
- if (currentType.value !== selectedType.value) {
892
- return undefined;
893
- } else if (currentType.value === ImageType.SHAPE) {
894
- const equalShape = defaultShapes.find((preset) =>
895
- isEqualShape(props.modelValue, preset.value),
896
- );
897
- if (equalShape) {
898
- return equalShape.src;
899
- } else {
900
- return customIcon;
901
- }
844
+ watch(
845
+ localValue,
846
+ () => {
847
+ // derive selection on modelValue change
848
+ if (currentType.value === ImageType.SHAPE) {
849
+ const idx = defaultShapes
850
+ .map(({ value }) => value)
851
+ .findIndex((i) => isEqualShape(localValue.value, i));
852
+ // select custom (index 7), if no defaultShape found
853
+ selectedIdx.value = idx < 0 ? 7 : idx;
902
854
  } else if (currentType.value === ImageType.ICON) {
903
- return props.modelValue?.src;
904
- } else {
905
- return undefined;
855
+ selectedIdx.value = props.iconOptions.findIndex(
856
+ (i) => i.src === localValue.value.src,
857
+ );
906
858
  }
907
859
  },
908
- set(value) {
909
- let newImage = {};
910
- if (selectedType.value === ImageType.SHAPE) {
911
- const switchFromICON = currentType.value === ImageType.ICON;
912
- let newPreset;
913
- if (value === customIcon && !switchFromICON) {
914
- return;
915
- } else if (value === customIcon) {
916
- newPreset = defaultShapes[0];
917
- } else {
918
- newPreset = defaultShapes.find((preset) => preset.src === value);
919
- }
920
-
921
- if (newPreset) {
922
- let fill;
923
- let stroke;
860
+ { deep: true },
861
+ );
924
862
 
925
- if (switchFromICON) {
926
- fill = props.valueDefault?.fill;
927
- stroke = props.valueDefault?.stroke;
928
- } else {
929
- fill = selectedFill.value;
930
- stroke = selectedStroke.value;
931
- }
932
- newImage = JSON.parse(JSON.stringify(newPreset.value));
933
- Object.assign(newImage, {
934
- fill,
935
- stroke,
936
- });
937
- }
863
+ watch(selectedIdx, (idx) => {
864
+ // update modelValue on selection
865
+ if (idx > -1) {
866
+ if (
867
+ selectedType.value === ImageType.SHAPE &&
868
+ idx < defaultShapes.length
869
+ ) {
870
+ const switchFromICON = currentType.value === ImageType.ICON;
871
+ localValue.value = {
872
+ ...defaultShapes[idx]?.value,
873
+ fill: switchFromICON
874
+ ? props.valueDefault?.fill
875
+ : toRaw(localValue.value?.fill),
876
+ stroke: switchFromICON
877
+ ? props.valueDefault?.stroke
878
+ : toRaw(localValue.value?.stroke),
879
+ };
938
880
  } else if (selectedType.value === ImageType.ICON) {
939
- newImage = props.iconOptions.find((option) => option.src === value);
940
- Object.assign(newImage, {
941
- scale: selectedScale.value || 1,
942
- opacity: selectedOpacity.value || 1,
943
- });
881
+ localValue.value = {
882
+ ...props.iconOptions[idx],
883
+ };
944
884
  }
945
- emit('update:modelValue', JSON.parse(JSON.stringify(newImage)));
946
- },
885
+ }
947
886
  });
948
887
 
949
888
  const currentItems = computed(() => {
@@ -956,34 +895,38 @@
956
895
  } else if (selectedType.value === ImageType.ICON) {
957
896
  items = props.iconOptions;
958
897
  }
959
- return items;
898
+ return items.map(({ src }, idx) => ({
899
+ src,
900
+ idx,
901
+ }));
960
902
  });
961
903
 
962
904
  onMounted(() => {
963
- drawImageStyle(canvas.value, props.modelValue);
905
+ drawImageStyle(canvas.value, localValue.value);
964
906
  watch(
965
- () => props.modelValue,
907
+ localValue,
966
908
  () => {
967
- drawImageStyle(canvas.value, props.modelValue);
909
+ drawImageStyle(canvas.value, localValue.value);
968
910
  },
969
911
  { deep: true },
970
912
  );
971
913
  });
972
914
 
915
+ const cid = useComponentId();
916
+
973
917
  return {
974
918
  ImageType,
919
+ localValue,
975
920
  selectedType,
976
921
  currentType,
977
- selectedImage,
922
+ selectedIdx,
978
923
  canvas,
979
924
  shapeSingleValueInputs,
980
925
  selectedScale,
981
- selectedOpacity,
982
- selectedFill,
983
- selectedStroke,
984
926
  between,
985
927
  currentItems,
986
928
  selectedImageTypeTab,
929
+ cid,
987
930
  };
988
931
  },
989
932
  };
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Draws an image style on a canvas.
3
3
  * @param {HTMLCanvasElement} canvas The canvas to draw on
4
- * @param {import("ol/style/Image").Options} imageOptions The JSON options of the image style.
5
- * @param {boolean} fitToCanvas If the circle, shape or icon should be fitted into the canvas or if it should be draw with it's actual size.
4
+ * @param {import("ol/style/Image").Options} [imageOptions] The JSON options of the image style.
5
+ * @param {boolean} [fitToCanvas=false] If the circle, shape or icon should be fitted into the canvas or if it should be draw with it's actual size.
6
6
  */
7
- export function drawImageStyle(canvas: HTMLCanvasElement, imageOptions: import("ol/style/Image").Options, fitToCanvas?: boolean): Promise<void>;
7
+ export function drawImageStyle(canvas: HTMLCanvasElement, imageOptions?: import("ol/style/Image", { with: { "resolution-mode": "import" } }).Options | undefined, fitToCanvas?: boolean | undefined): Promise<void>;
8
8
  /**
9
9
  * *
10
10
  */
@@ -80,24 +80,25 @@ declare const _default: import("vue").DefineComponent<{
80
80
  SHAPE: string;
81
81
  ICON: string;
82
82
  };
83
+ localValue: import("vue").Ref<any>;
83
84
  selectedType: import("vue").ComputedRef<string>;
84
85
  currentType: import("vue").ComputedRef<string | undefined>;
85
- selectedImage: import("vue").WritableComputedRef<any>;
86
+ selectedIdx: import("vue").Ref<number>;
86
87
  canvas: import("vue").Ref<any>;
87
- shapeSingleValueInputs: import("vue").ComputedRef<{
88
- text: string;
89
- value: import("vue").WritableComputedRef<unknown>;
90
- unit: string;
91
- range: number[];
92
- step: any;
93
- }[]>;
88
+ shapeSingleValueInputs: import("vue").ComputedRef<[{
89
+ key: string;
90
+ isRequired?: boolean | undefined;
91
+ unit?: string | undefined;
92
+ range?: number[] | undefined;
93
+ }]>;
94
94
  selectedScale: import("vue").WritableComputedRef<any>;
95
- selectedOpacity: import("vue").WritableComputedRef<unknown>;
96
- selectedFill: import("vue").WritableComputedRef<unknown>;
97
- selectedStroke: import("vue").WritableComputedRef<unknown>;
98
95
  between: typeof between;
99
- currentItems: import("vue").ComputedRef<any[]>;
96
+ currentItems: import("vue").ComputedRef<{
97
+ src: any;
98
+ idx: number;
99
+ }[]>;
100
100
  selectedImageTypeTab: import("vue").Ref<number>;
101
+ cid: string;
101
102
  }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
102
103
  modelValue: {
103
104
  type: ObjectConstructor;
@@ -1,8 +1,9 @@
1
1
  <template>
2
2
  <MenuWrapper
3
- v-bind="{ ...$attrs, value, valueDefault, disabled }"
3
+ class="vcs-stroke-menu"
4
4
  :value-fallback="{ color: [0, 0, 0, 1], width: 1 }"
5
5
  name="components.style.stroke"
6
+ v-bind="{ ...$attrs, ...$props }"
6
7
  >
7
8
  <template #preview>
8
9
  <v-sheet
@@ -15,7 +16,7 @@
15
16
  />
16
17
  </template>
17
18
  <template #content>
18
- <VcsStrokeSelector :model-value="modelValue" v-bind="$attrs" />
19
+ <VcsStrokeSelector v-bind="{ ...$attrs, ...$props }" />
19
20
  </template>
20
21
  </MenuWrapper>
21
22
  </template>
@@ -23,16 +24,16 @@
23
24
  <script>
24
25
  import { computed } from 'vue';
25
26
  import { VSheet } from 'vuetify/components';
27
+ import { useProxiedAtomicModel } from '../modelHelper.js';
26
28
  import VcsStrokeSelector from './VcsStrokeSelector.vue';
27
29
  import MenuWrapper from './MenuWrapper.vue';
28
30
  import { useColorObject, rgbaObjectToString } from './composables.js';
29
31
 
30
32
  /**
31
33
  * @description A wrapper for the VcsStrokeSelector, that has a small color preview and a menu that pops up when clicking the preview, containing the stroke selector.
32
- * When clicking the reset button, the valueDefault is emitted, when unchecking the checkbox in front of the preview, null is emitted. If it is checked again, valueDefault is emitted. If the valueDefault is undefined or null, { color: [0, 0, 0, 1], width: 1 } is emitted.
34
+ * When clicking the reset button, the valueDefault is emitted, when unchecking the checkbox in front of the preview, null is emitted.
35
+ * If it is checked again, valueDefault is emitted. If the valueDefault is undefined or null, { color: [0, 0, 0, 1], width: 1 } is emitted.
33
36
  * @vue-prop {import("ol/style/Stroke").Options} [modelValue] - The Stroke Options
34
- * @vue-prop {import("ol/style/Stroke").Options} [valueDefault] - The default Stroke Options.
35
- * @vue-prop {boolean} [disabled=false] - Disable the input
36
37
  */
37
38
  export default {
38
39
  name: 'VcsStrokeMenu',
@@ -46,17 +47,10 @@
46
47
  type: Object,
47
48
  default: undefined,
48
49
  },
49
- valueDefault: {
50
- type: Object,
51
- default: undefined,
52
- },
53
- disabled: {
54
- type: Boolean,
55
- default: false,
56
- },
57
50
  },
58
- setup(props) {
59
- const rgbaObject = useColorObject(() => props.modelValue?.color);
51
+ setup(props, { emit }) {
52
+ const localValue = useProxiedAtomicModel(props, 'modelValue', emit);
53
+ const rgbaObject = useColorObject(() => localValue.value?.color);
60
54
  return {
61
55
  rgbaString: computed(() => rgbaObjectToString(rgbaObject.value)),
62
56
  };
@@ -3,14 +3,6 @@ declare const _default: import("vue").DefineComponent<{
3
3
  type: ObjectConstructor;
4
4
  default: undefined;
5
5
  };
6
- valueDefault: {
7
- type: ObjectConstructor;
8
- default: undefined;
9
- };
10
- disabled: {
11
- type: BooleanConstructor;
12
- default: boolean;
13
- };
14
6
  }, {
15
7
  rgbaString: import("vue").ComputedRef<string>;
16
8
  }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
@@ -18,17 +10,7 @@ declare const _default: import("vue").DefineComponent<{
18
10
  type: ObjectConstructor;
19
11
  default: undefined;
20
12
  };
21
- valueDefault: {
22
- type: ObjectConstructor;
23
- default: undefined;
24
- };
25
- disabled: {
26
- type: BooleanConstructor;
27
- default: boolean;
28
- };
29
13
  }>>, {
30
- disabled: boolean;
31
14
  modelValue: Record<string, any>;
32
- valueDefault: Record<string, any>;
33
15
  }, {}>;
34
16
  export default _default;