@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,7 +1,7 @@
1
1
  import { VcsObject } from '@vcmap/core';
2
2
  import { WindowSlot } from '../manager/window/windowManager.js';
3
3
  import { defaultTagOptions } from '../components/tables/VcsTable.vue';
4
- import { replaceAttributes } from '../application/markdownHelper.js';
4
+ import { renderTemplate } from '../components/form-output/markdownHelper.js';
5
5
 
6
6
  /**
7
7
  * @typedef {Object} FeatureInfoProps
@@ -24,13 +24,13 @@ import { replaceAttributes } from '../application/markdownHelper.js';
24
24
  * keyMapping?: Record<string,string>,
25
25
  * valueMapping?: Record<string, string|Record<string,string>>,
26
26
  * tags?: Record<string, HTMLTagOptions>,
27
- * window?: import("../manager/window/windowManager.js").WindowComponentOptions
27
+ * window?: Pick<import("../manager/window/windowManager.js").WindowComponentOptions,'state'|'slot'|'position'>
28
28
  * }} FeatureInfoViewOptions
29
29
  * @property {Array<string>} [attributeKeys] - list of keys to filter attributes of selected feature
30
30
  * @property {Object<string,string>} [keyMapping] - object providing text replacements or i18n strings for attribute keys
31
31
  * @property {Object<string, string|Object<string,string>>} [valueMapping] - object providing text replacements or i18n strings for attribute values
32
32
  * @property {Object<string,HTMLTagOptions>} [tags] - object with keys rendered as special html element. Value contains html options
33
- * @property {import("../manager/window/windowManager.js").WindowComponentOptions} [window] - state, slot, position can be set. Other options are predefined. headerTitle of window state can be a template string, e.g. "{{myAttribute}}" or ["{{layerName}}", " - ", "{{myAttribute}}"]
33
+ * @property {Pick<import("../manager/window/windowManager.js").WindowComponentOptions,'state'|'slot'|'position'>} [window] - state, slot, position can be set. Other options are predefined. headerTitle of window state can be a template string, e.g. "{{myAttribute}}" or ["{{layerName}}", " - ", "{{myAttribute}}"]
34
34
  */
35
35
 
36
36
  /**
@@ -221,6 +221,21 @@ export function applyOlcsAttributeFilter(attributes, keys = []) {
221
221
  }, {});
222
222
  }
223
223
 
224
+ /**
225
+ * Filters all __ attributes (from vc-converter tilesets) not provided as keys
226
+ * @param {Object<string, unknown>} attributes
227
+ * @param {Array<string>} keys
228
+ * @returns {Object}
229
+ */
230
+ export function applyDoubleUnderscoreFilter(attributes, keys = []) {
231
+ return Object.keys(attributes)
232
+ .filter((key) => keys.includes(key) || !/^__/.test(key))
233
+ .reduce((obj, key) => {
234
+ obj[key] = attributes[key];
235
+ return obj;
236
+ }, {});
237
+ }
238
+
224
239
  /**
225
240
  * Filters attributes having an empty object as value
226
241
  * @param {Object<string, unknown>} attributes
@@ -251,11 +266,9 @@ function getWindowState(app, state, attributes) {
251
266
  let headerTitle = state?.headerTitle;
252
267
  if (headerTitle) {
253
268
  if (Array.isArray(headerTitle)) {
254
- headerTitle = headerTitle.map((item) =>
255
- replaceAttributes(item, attributes),
256
- );
269
+ headerTitle = headerTitle.map((item) => renderTemplate(item, attributes));
257
270
  } else {
258
- headerTitle = replaceAttributes(headerTitle, attributes);
271
+ headerTitle = renderTemplate(headerTitle, attributes);
259
272
  }
260
273
  }
261
274
  return {
@@ -316,7 +329,7 @@ class AbstractFeatureInfoView extends VcsObject {
316
329
  */
317
330
  this.tags = options.tags || defaultOptions.tags;
318
331
  /**
319
- * @type {import("../manager/window/windowManager.js").WindowComponentOptions|Object}
332
+ * @type {Pick<import("../manager/window/windowManager.js").WindowComponentOptions,'state'|'slot'|'position'>|Object}
320
333
  * @private
321
334
  */
322
335
  this._window = options.window || defaultOptions.window;
@@ -329,7 +342,7 @@ class AbstractFeatureInfoView extends VcsObject {
329
342
 
330
343
  /**
331
344
  * window options, configured in a module, used only internally by AbstractFeatureInfoView or subclass
332
- * @type {import("../manager/window/windowManager.js").WindowComponentOptions|Object}
345
+ * @type {Pick<import("../manager/window/windowManager.js").WindowComponentOptions<FeatureInfoProps>,'state'|'slot'|'position'>|Object}
333
346
  */
334
347
  get window() {
335
348
  return this._window;
@@ -343,6 +356,16 @@ class AbstractFeatureInfoView extends VcsObject {
343
356
  return this._component;
344
357
  }
345
358
 
359
+ /**
360
+ * @param {undefined|import("ol").Feature|import("@vcmap-cesium/engine").Cesium3DTileFeature|import("@vcmap-cesium/engine").Cesium3DTilePointFeature} feature
361
+ * @returns {Object}
362
+ * @protected
363
+ */
364
+ // eslint-disable-next-line class-methods-use-this
365
+ _getAttributesFromFeature(feature) {
366
+ return feature?.getAttributes() || {};
367
+ }
368
+
346
369
  /**
347
370
  * This method returns all relevant attributes for this view.
348
371
  * Called by `getProperties()` to pass attributes as props object to the VueComponent of this view.
@@ -352,7 +375,7 @@ class AbstractFeatureInfoView extends VcsObject {
352
375
  * @returns {Object}
353
376
  */
354
377
  getAttributes(feature) {
355
- let attributes = feature.getProperty('attributes') || {};
378
+ let attributes = this._getAttributesFromFeature(feature);
356
379
  if (this.attributeKeys.length > 0) {
357
380
  attributes = applyAttributeFilter(attributes, this.attributeKeys);
358
381
  }
@@ -363,6 +386,7 @@ class AbstractFeatureInfoView extends VcsObject {
363
386
  applyKeyMapping(attributes, this.keyMapping);
364
387
  }
365
388
  attributes = applyOlcsAttributeFilter(attributes, this.attributeKeys);
389
+ attributes = applyDoubleUnderscoreFilter(attributes, this.attributeKeys);
366
390
  return applyEmptyAttributesFilter(attributes);
367
391
  }
368
392
 
@@ -375,7 +399,7 @@ class AbstractFeatureInfoView extends VcsObject {
375
399
  */
376
400
  getTags(feature) {
377
401
  if (this.tags) {
378
- const attributes = feature.getProperty('attributes') || {};
402
+ const attributes = this._getAttributesFromFeature(feature);
379
403
  const tags = Object.keys(this.tags)
380
404
  .filter(
381
405
  (key) =>
@@ -422,15 +446,16 @@ class AbstractFeatureInfoView extends VcsObject {
422
446
  * @returns {import("../manager/window/windowManager.js").WindowComponentOptions}
423
447
  */
424
448
  getWindowComponentOptions(app, featureInfo, layer) {
449
+ const props = this.getProperties(featureInfo, layer);
425
450
  return {
426
451
  state: getWindowState(app, this.window.state, {
427
- ...this.getAttributes(featureInfo.feature),
452
+ ...props.attributes,
428
453
  layerName: layer.properties?.title || layer.name,
429
454
  }),
430
455
  slot: this.window.slot ?? WindowSlot.DYNAMIC_RIGHT,
431
456
  component: this.component,
432
457
  position: this.window.position,
433
- props: this.getProperties(featureInfo, layer),
458
+ props,
434
459
  };
435
460
  }
436
461
 
@@ -28,7 +28,7 @@ export const balloonOffset = { x: 55, y: 25 };
28
28
  * @returns {undefined|import("@vcmap-cesium/engine").Cartesian2}
29
29
  */
30
30
  function getBalloonPositionCesium(scene, cartesian) {
31
- return SceneTransforms.wgs84ToWindowCoordinates(scene, cartesian);
31
+ return SceneTransforms.worldToWindowCoordinates(scene, cartesian);
32
32
  }
33
33
 
34
34
  /**
@@ -11,14 +11,9 @@ export function getHighlightStyle(feature: FeatureType, layer: import("@vcmap/co
11
11
  */
12
12
  export function createFeatureInfoSession(app: import("../vcsUiApp.js").default): FeatureInfoSession;
13
13
  /**
14
- * @typedef {Object} FeatureInfoSession
15
- * @property {VcsEvent<void>} stopped
16
- * @property {function():void} stop
17
- */
18
- /**
19
- * @type {ClassRegistry<import("@vcmap/core").Ctor<typeof AbstractFeatureInfoView>>}
14
+ * @type {ClassRegistry<typeof AbstractFeatureInfoView>}
20
15
  */
21
- export const featureInfoClassRegistry: ClassRegistry<import("@vcmap/core").Ctor<typeof AbstractFeatureInfoView>>;
16
+ export const featureInfoClassRegistry: ClassRegistry<typeof AbstractFeatureInfoView>;
22
17
  /**
23
18
  * Symbol added to features to overwrite the layers predefined feature info
24
19
  * @type {symbol}
@@ -43,6 +38,11 @@ export type FeatureInfoSession = {
43
38
  };
44
39
  import { ClassRegistry } from '@vcmap/core';
45
40
  import AbstractFeatureInfoView from './abstractFeatureInfoView.js';
41
+ /**
42
+ * @typedef {Object} FeatureInfoSession
43
+ * @property {VcsEvent<void>} stopped
44
+ * @property {function():void} stop
45
+ */
46
46
  /**
47
47
  * @class FeatureInfo
48
48
  * @description Provides registration of featureInfoClasses and stores featureInfoView instances.
@@ -21,8 +21,9 @@ import {
21
21
  Entity,
22
22
  } from '@vcmap-cesium/engine';
23
23
  import { Feature } from 'ol';
24
- import { check, checkMaybe } from '@vcsuite/check';
24
+ import { check, maybe, oneOf } from '@vcsuite/check';
25
25
 
26
+ import { reactive } from 'vue';
26
27
  import { vcsAppSymbol } from '../pluginHelper.js';
27
28
  import FeatureInfoInteraction from './featureInfoInteraction.js';
28
29
  import AbstractFeatureInfoView from './abstractFeatureInfoView.js';
@@ -52,6 +53,17 @@ function getLogger() {
52
53
  return getLoggerByName('featureInfo');
53
54
  }
54
55
 
56
+ /**
57
+ * @type {ClassRegistry<typeof AbstractFeatureInfoView>}
58
+ */
59
+ export const featureInfoClassRegistry = new ClassRegistry();
60
+
61
+ /**
62
+ * Symbol added to features to overwrite the layers predefined feature info
63
+ * @type {symbol}
64
+ */
65
+ export const featureInfoViewSymbol = Symbol('featureInfoView');
66
+
55
67
  /**
56
68
  * @param {FeatureType} feature
57
69
  * @param {import("@vcmap/core").Layer} layer
@@ -133,7 +145,7 @@ function setupFeatureInfoTool(app) {
133
145
  /** @type {FeatureInfoSession|null} */
134
146
  let session = null;
135
147
 
136
- const action = {
148
+ const action = reactive({
137
149
  name: 'featureInfoToggle',
138
150
  title: 'featureInfo.activateToolTitle',
139
151
  icon: '$vcsInfo',
@@ -144,46 +156,65 @@ function setupFeatureInfoTool(app) {
144
156
  } else {
145
157
  session = createFeatureInfoSession(app);
146
158
  session.stopped.addEventListener(() => {
147
- this.active = false;
159
+ action.active = false;
148
160
  session = null;
149
161
  app.featureInfo.clear();
150
- this.title = 'featureInfo.activateToolTitle';
162
+ action.title = 'featureInfo.activateToolTitle';
151
163
  });
152
164
  this.active = true;
153
- this.title = 'featureInfo.deactivateToolTitle';
165
+ action.title = 'featureInfo.deactivateToolTitle';
154
166
  }
155
167
  },
156
- };
168
+ });
157
169
 
158
170
  function addFeatureInfoButton() {
159
171
  if (app.uiConfig.getByKey('startingFeatureInfo')?.value !== false) {
160
172
  action.callback();
161
173
  }
162
- app.toolboxManager.add(
163
- {
164
- id: 'featureInfo',
165
- type: ToolboxType.SINGLE,
166
- action,
167
- },
168
- vcsAppSymbol,
169
- );
174
+ if (!app.toolboxManager.has('featureInfo')) {
175
+ app.toolboxManager.add(
176
+ {
177
+ id: 'featureInfo',
178
+ type: ToolboxType.SINGLE,
179
+ action,
180
+ },
181
+ vcsAppSymbol,
182
+ );
183
+ }
170
184
  }
171
185
 
172
- if ([...app.layers].some((l) => l.properties?.featureInfo)) {
186
+ if (
187
+ [...app.layers].some((l) => l.properties?.featureInfo) ||
188
+ app.search.resultLayer.getFeatures().some((f) => !!f[featureInfoViewSymbol])
189
+ ) {
173
190
  addFeatureInfoButton();
174
191
  }
175
192
 
176
193
  const listeners = [
177
194
  app.layers.added.addEventListener((layer) => {
178
- if (
179
- layer?.properties?.featureInfo &&
180
- !app.toolboxManager.has('featureInfo')
181
- ) {
195
+ if (layer?.properties?.featureInfo) {
182
196
  addFeatureInfoButton();
183
197
  }
184
198
  }),
185
199
  app.layers.removed.addEventListener(() => {
186
200
  if (
201
+ ![...app.layers].some((l) => l.properties?.featureInfo) &&
202
+ !app.search.resultLayer
203
+ .getFeatures()
204
+ .some((f) => !!f[featureInfoViewSymbol]) &&
205
+ app.toolboxManager.has('featureInfo')
206
+ ) {
207
+ app.toolboxManager.remove('featureInfo');
208
+ }
209
+ }),
210
+ app.search.resultsChanged.addEventListener(() => {
211
+ if (
212
+ app.search.resultLayer
213
+ .getFeatures()
214
+ .some((f) => !!f[featureInfoViewSymbol])
215
+ ) {
216
+ addFeatureInfoButton();
217
+ } else if (
187
218
  ![...app.layers].some((l) => l.properties?.featureInfo) &&
188
219
  app.toolboxManager.has('featureInfo')
189
220
  ) {
@@ -207,17 +238,6 @@ function setupFeatureInfoTool(app) {
207
238
  * @property {function():void} stop
208
239
  */
209
240
 
210
- /**
211
- * @type {ClassRegistry<import("@vcmap/core").Ctor<typeof AbstractFeatureInfoView>>}
212
- */
213
- export const featureInfoClassRegistry = new ClassRegistry();
214
-
215
- /**
216
- * Symbol added to features to overwrite the layers predefined feature info
217
- * @type {symbol}
218
- */
219
- export const featureInfoViewSymbol = Symbol('featureInfoView');
220
-
221
241
  /**
222
242
  * @class FeatureInfo
223
243
  * @description Provides registration of featureInfoClasses and stores featureInfoView instances.
@@ -390,15 +410,13 @@ class FeatureInfo extends Collection {
390
410
  * @returns {Promise<void>}
391
411
  */
392
412
  async selectFeature(feature, position, windowPosition, featureInfoView) {
393
- check(feature, [
394
- Feature,
395
- Entity,
396
- Cesium3DTileFeature,
397
- Cesium3DTilePointFeature,
398
- ]);
399
- checkMaybe(position, [Number]);
400
- checkMaybe(windowPosition, [Number]);
401
- checkMaybe(featureInfoView, AbstractFeatureInfoView);
413
+ check(
414
+ feature,
415
+ oneOf(Feature, Entity, Cesium3DTileFeature, Cesium3DTilePointFeature),
416
+ );
417
+ check(position, maybe([Number]));
418
+ check(windowPosition, maybe([Number]));
419
+ check(featureInfoView, maybe(AbstractFeatureInfoView));
402
420
 
403
421
  const usedFeatureInfoView =
404
422
  feature[featureInfoViewSymbol] ??
@@ -416,7 +434,7 @@ class FeatureInfo extends Collection {
416
434
  [featureId]: getHighlightStyle(
417
435
  feature,
418
436
  layer,
419
- this._app.uiConfig.config.value.primaryColor ??
437
+ this._app.uiConfig.config.primaryColor ??
420
438
  getDefaultPrimaryColor(this._app),
421
439
  ),
422
440
  });
@@ -428,7 +446,7 @@ class FeatureInfo extends Collection {
428
446
  [featureId]: getHighlightStyle(
429
447
  feature,
430
448
  layer,
431
- this._app.uiConfig.config.value.primaryColor ??
449
+ this._app.uiConfig.config.primaryColor ??
432
450
  getDefaultPrimaryColor(this._app),
433
451
  ),
434
452
  });
@@ -9,7 +9,7 @@ export type IframeFeatureInfoViewProps = any & {
9
9
  };
10
10
  /**
11
11
  * @typedef {import("./abstractFeatureInfoView.js").FeatureInfoViewOptions & { src: string, title?: string }} IframeFeatureInfoViewOptions
12
- * @property {string} src - Specifies the address of the document to embed in the <iframe>. Variables wrapped in `${}` are replaced by their values, e.g. `${featureId}` or `${attributes.gml:name}`
12
+ * @property {string} src - Specifies the address of the document to embed in the <iframe>. Variables wrapped in `${}` are replaced by their values, e.g. `${featureId}` or `${gml:name}`
13
13
  * @property {string} [title] - optional title for the <iframe>
14
14
  */
15
15
  /**
@@ -34,7 +34,13 @@ declare class IframeFeatureInfoView extends AbstractFeatureInfoView {
34
34
  */
35
35
  title: string | undefined;
36
36
  /**
37
- * Variables wrapped in `${}` within `src` are replaced by their values, e.g. `${featureId}` or `${attributes.gml:name}`
37
+ * @param {Record<string, unknown>} attributes
38
+ * @protected
39
+ * @returns {string}
40
+ */
41
+ protected _renderTemplate(attributes: Record<string, unknown>): string;
42
+ /**
43
+ * Supports markdown templates (e.g. {{someProperty}}) and style expressions to derive a URL
38
44
  * @param {import("./featureInfo.js").FeatureInfoEvent} featureInfo
39
45
  * @param {import("@vcmap/core").Layer} layer
40
46
  * @returns {IframeFeatureInfoViewProps}
@@ -1,9 +1,10 @@
1
+ import { renderTemplate } from '../components/form-output/markdownHelper.js';
1
2
  import AbstractFeatureInfoView from './abstractFeatureInfoView.js';
2
3
  import IframeComponent from './IframeComponent.vue';
3
4
 
4
5
  /**
5
6
  * @typedef {import("./abstractFeatureInfoView.js").FeatureInfoViewOptions & { src: string, title?: string }} IframeFeatureInfoViewOptions
6
- * @property {string} src - Specifies the address of the document to embed in the <iframe>. Variables wrapped in `${}` are replaced by their values, e.g. `${featureId}` or `${attributes.gml:name}`
7
+ * @property {string} src - Specifies the address of the document to embed in the <iframe>. Variables wrapped in `${}` are replaced by their values, e.g. `${featureId}` or `${gml:name}`
7
8
  * @property {string} [title] - optional title for the <iframe>
8
9
  */
9
10
 
@@ -41,7 +42,16 @@ class IframeFeatureInfoView extends AbstractFeatureInfoView {
41
42
  }
42
43
 
43
44
  /**
44
- * Variables wrapped in `${}` within `src` are replaced by their values, e.g. `${featureId}` or `${attributes.gml:name}`
45
+ * @param {Record<string, unknown>} attributes
46
+ * @protected
47
+ * @returns {string}
48
+ */
49
+ _renderTemplate(attributes) {
50
+ return renderTemplate(this.src, attributes);
51
+ }
52
+
53
+ /**
54
+ * Supports markdown templates (e.g. {{someProperty}}) and style expressions to derive a URL
45
55
  * @param {import("./featureInfo.js").FeatureInfoEvent} featureInfo
46
56
  * @param {import("@vcmap/core").Layer} layer
47
57
  * @returns {IframeFeatureInfoViewProps}
@@ -50,9 +60,9 @@ class IframeFeatureInfoView extends AbstractFeatureInfoView {
50
60
  const properties = super.getProperties(featureInfo, layer);
51
61
  return {
52
62
  ...properties,
53
- src: this.src.replace(/\$\{(.*?)}/g, (match, token) => {
54
- const variable = token.split('.');
55
- return variable.reduce((obj, prop) => obj?.[prop], properties);
63
+ src: this._renderTemplate({
64
+ ...properties,
65
+ ...properties.attributes,
56
66
  }),
57
67
  title: this.title,
58
68
  };
@@ -33,7 +33,7 @@ declare class MarkdownBalloonFeatureInfoView extends BalloonFeatureInfoView {
33
33
  */
34
34
  protected _renderTemplate(attributes: Record<string, unknown>): string;
35
35
  /**
36
- * Variables wrapped in `${}` within `src` are replaced by their values, e.g. `${featureId}` or `${attributes.gml:name}`
36
+ * Supports markdown templates (e.g. {{someProperty}}) and style expressions to derive markdown rendering
37
37
  * @param {import("./featureInfo.js").FeatureInfoEvent} featureInfo
38
38
  * @param {import("@vcmap/core").Layer} layer
39
39
  * @returns {MarkdownBalloonFeatureInfoViewProps}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  parseAndSanitizeMarkdown,
3
- replaceAttributes,
4
- } from '../application/markdownHelper.js';
3
+ renderTemplate,
4
+ } from '../components/form-output/markdownHelper.js';
5
5
  import BalloonFeatureInfoView from './balloonFeatureInfoView.js';
6
6
  import MarkdownBalloonComponent from './MarkdownBalloonComponent.vue';
7
7
 
@@ -47,11 +47,11 @@ class MarkdownBalloonFeatureInfoView extends BalloonFeatureInfoView {
47
47
  * @returns {string}
48
48
  */
49
49
  _renderTemplate(attributes) {
50
- return replaceAttributes(this.template, attributes);
50
+ return renderTemplate(this.template, attributes);
51
51
  }
52
52
 
53
53
  /**
54
- * Variables wrapped in `${}` within `src` are replaced by their values, e.g. `${featureId}` or `${attributes.gml:name}`
54
+ * Supports markdown templates (e.g. {{someProperty}}) and style expressions to derive markdown rendering
55
55
  * @param {import("./featureInfo.js").FeatureInfoEvent} featureInfo
56
56
  * @param {import("@vcmap/core").Layer} layer
57
57
  * @returns {MarkdownBalloonFeatureInfoViewProps}
@@ -60,7 +60,7 @@ class MarkdownBalloonFeatureInfoView extends BalloonFeatureInfoView {
60
60
  const properties = super.getProperties(featureInfo, layer);
61
61
  return {
62
62
  ...properties,
63
- html: parseAndSanitizeMarkdown(
63
+ content: parseAndSanitizeMarkdown(
64
64
  this._renderTemplate({ ...properties, ...properties.attributes }),
65
65
  ),
66
66
  };
@@ -33,7 +33,7 @@ declare class MarkdownFeatureInfoView extends AbstractFeatureInfoView {
33
33
  */
34
34
  protected _renderTemplate(attributes: Record<string, unknown>): string;
35
35
  /**
36
- * Variables wrapped in `${}` within `src` are replaced by their values, e.g. `${featureId}` or `${attributes.gml:name}`
36
+ * Supports markdown templates (e.g. {{someProperty}}) and style expressions to derive a markdown rendering
37
37
  * @param {import("./featureInfo.js").FeatureInfoEvent} featureInfo
38
38
  * @param {import("@vcmap/core").Layer} layer
39
39
  * @returns {MarkdownFeatureInfoViewProps}
@@ -1,9 +1,6 @@
1
+ import { renderTemplate } from '../components/form-output/markdownHelper.js';
1
2
  import AbstractFeatureInfoView from './abstractFeatureInfoView.js';
2
- import {
3
- parseAndSanitizeMarkdown,
4
- replaceAttributes,
5
- } from '../application/markdownHelper.js';
6
- import MarkdownComponent from './MarkdownComponent.vue';
3
+ import VcsMarkdown from '../components/form-output/VcsMarkdown.vue';
7
4
 
8
5
  /**
9
6
  * @typedef {import("./abstractFeatureInfoView.js").FeatureInfoViewOptions & { template: string | string[] }} MarkdownFeatureInfoViewOptions
@@ -31,7 +28,7 @@ class MarkdownFeatureInfoView extends AbstractFeatureInfoView {
31
28
  * @param {MarkdownFeatureInfoViewOptions} options
32
29
  */
33
30
  constructor(options) {
34
- super(options, MarkdownComponent);
31
+ super(options, VcsMarkdown);
35
32
 
36
33
  /**
37
34
  * @type {string | string[]}
@@ -47,11 +44,11 @@ class MarkdownFeatureInfoView extends AbstractFeatureInfoView {
47
44
  * @returns {string}
48
45
  */
49
46
  _renderTemplate(attributes) {
50
- return replaceAttributes(this.template, attributes);
47
+ return renderTemplate(this.template, attributes);
51
48
  }
52
49
 
53
50
  /**
54
- * Variables wrapped in `${}` within `src` are replaced by their values, e.g. `${featureId}` or `${attributes.gml:name}`
51
+ * Supports markdown templates (e.g. {{someProperty}}) and style expressions to derive a markdown rendering
55
52
  * @param {import("./featureInfo.js").FeatureInfoEvent} featureInfo
56
53
  * @param {import("@vcmap/core").Layer} layer
57
54
  * @returns {MarkdownFeatureInfoViewProps}
@@ -60,9 +57,10 @@ class MarkdownFeatureInfoView extends AbstractFeatureInfoView {
60
57
  const properties = super.getProperties(featureInfo, layer);
61
58
  return {
62
59
  ...properties,
63
- html: parseAndSanitizeMarkdown(
64
- this._renderTemplate({ ...properties, ...properties.attributes }),
65
- ),
60
+ content: this._renderTemplate({
61
+ ...properties,
62
+ ...properties.attributes,
63
+ }),
66
64
  };
67
65
  }
68
66
 
@@ -79,6 +79,19 @@ class TableFeatureInfoView extends AbstractFeatureInfoView {
79
79
  this.searchbarPlaceholder = options.searchbarPlaceholder;
80
80
  }
81
81
 
82
+ /**
83
+ * @param {undefined|import("ol").Feature|import("@vcmap-cesium/engine").Cesium3DTileFeature|import("@vcmap-cesium/engine").Cesium3DTilePointFeature} feature
84
+ * @returns {Object}
85
+ * @private
86
+ */
87
+ _getAttributesFromFeature(feature) {
88
+ const attributes = super._getAttributesFromFeature(feature);
89
+ return {
90
+ ...attributes,
91
+ featureId: feature.getId(),
92
+ };
93
+ }
94
+
82
95
  /**
83
96
  * @param {import("./featureInfo.js").FeatureInfoEvent} featureInfo
84
97
  * @param {import("@vcmap/core").Layer} layer
@@ -92,10 +105,6 @@ class TableFeatureInfoView extends AbstractFeatureInfoView {
92
105
  itemsPerPageArray: this.itemsPerPageArray,
93
106
  showSearchbar: this.showSearchbar,
94
107
  searchbarPlaceholder: this.searchbarPlaceholder,
95
- headers: [
96
- { text: 'components.vcsTable.key', value: 'key', width: '128px' },
97
- { text: 'components.vcsTable.value', value: 'value', width: '192px' },
98
- ],
99
108
  };
100
109
  }
101
110