@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,142 +1,142 @@
1
1
  <template>
2
2
  <VcsFormSection
3
+ class="vcs-vector-properties-component"
3
4
  :heading="$attrs.heading || 'components.vectorProperties.header'"
4
5
  :expandable="expandable"
5
6
  :start-open="startOpen"
6
7
  :header-actions="headerActions"
7
8
  >
8
9
  <v-container class="px-1 py-0">
9
- <v-row
10
- v-if="visibleProperties.has('altitudeMode') && show3DProperties"
11
- no-gutters
12
- >
13
- <v-col>
14
- <VcsLabel html-for="vp-altitude-mode">{{
15
- $t('components.vectorProperties.altitudeMode')
16
- }}</VcsLabel>
17
- </v-col>
18
- <v-col>
19
- <VcsSelect
20
- id="vp-altitude-mode"
21
- :items="availableAltitudeModes"
22
- v-model="altitudeMode"
23
- dense
24
- />
25
- </v-col>
26
- </v-row>
27
- <v-row
28
- v-if="
29
- visibleProperties.has('heightAboveGround') &&
30
- altitudeMode === 'relativeToGround' &&
31
- show3DProperties
32
- "
33
- no-gutters
34
- >
35
- <v-col>
36
- <VcsLabel html-for="vp-height-above-ground">{{
37
- $t('components.vectorProperties.heightAboveGround')
38
- }}</VcsLabel>
39
- </v-col>
40
- <v-col>
41
- <VcsTextField
42
- id="vp-height-above-ground"
43
- v-model.number="heightAboveGround"
44
- :hide-spin-buttons="true"
45
- type="number"
46
- unit="m"
47
- :placeholder="'heightAboveGround' in value ? '0' : ''"
48
- />
49
- </v-col>
50
- </v-row>
51
- <v-row
52
- v-if="visibleProperties.has('groundLevel') && show3DProperties"
53
- no-gutters
54
- >
55
- <v-col>
56
- <VcsLabel html-for="vp-ground-level">{{
57
- $t('components.vectorProperties.groundLevel')
58
- }}</VcsLabel>
59
- </v-col>
60
- <v-col>
61
- <VcsTextField
62
- id="vp-ground-level"
63
- v-model.number="groundLevel"
64
- :hide-spin-buttons="true"
65
- type="number"
66
- unit="m"
67
- :placeholder="'groundLevel' in value ? '0' : ''"
68
- clearable
69
- />
70
- </v-col>
71
- </v-row>
72
- <v-row
73
- v-if="visibleProperties.has('scaleByDistance') && show3DProperties"
74
- no-gutters
75
- >
76
- <v-col>
77
- <VcsCheckbox
78
- label="components.vectorProperties.scaleByDistance"
79
- v-model="hasScaleByDistance"
80
- />
81
- </v-col>
82
- <v-col>
10
+ <template v-if="show3DProperties">
11
+ <v-row v-if="visibleProperties.has('altitudeMode')" no-gutters>
12
+ <v-col>
13
+ <VcsLabel :html-for="`${cid}-vp-altitude-mode`"
14
+ >{{ $t('components.vectorProperties.altitudeMode') }}
15
+ <template #help>
16
+ <ul>
17
+ <li v-for="mode in availableAltitudeModes" :key="mode.value">
18
+ {{ $t(mode.title) }}:
19
+ {{ $t(`components.vectorProperties.help.${mode.value}`) }}
20
+ </li>
21
+ </ul>
22
+ </template>
23
+ </VcsLabel>
24
+ </v-col>
25
+ <v-col>
26
+ <VcsSelect
27
+ :id="`${cid}-vp-altitude-mode`"
28
+ :items="availableAltitudeModes"
29
+ v-model="localValue.altitudeMode"
30
+ />
31
+ </v-col>
32
+ </v-row>
33
+ <v-row v-if="visibleProperties.has('heightAboveGround')" no-gutters>
34
+ <v-col>
35
+ <VcsLabel :html-for="`${cid}-vp-height-above-ground`">{{
36
+ $t('components.vectorProperties.heightAboveGround')
37
+ }}</VcsLabel>
38
+ </v-col>
39
+ <v-col>
40
+ <VcsTextField
41
+ :id="`${cid}-vp-height-above-ground`"
42
+ v-model.number="localValue.heightAboveGround"
43
+ :hide-spin-buttons="true"
44
+ type="number"
45
+ unit="m"
46
+ clearable
47
+ />
48
+ </v-col>
49
+ </v-row>
50
+ <v-row v-if="visibleProperties.has('groundLevel')" no-gutters>
51
+ <v-col>
52
+ <VcsLabel :html-for="`${cid}-vp-ground-level`">{{
53
+ $t('components.vectorProperties.groundLevel')
54
+ }}</VcsLabel>
55
+ </v-col>
56
+ <v-col>
57
+ <VcsTextField
58
+ :id="`${cid}-vp-ground-level`"
59
+ v-model.number="localValue.groundLevel"
60
+ :hide-spin-buttons="true"
61
+ type="number"
62
+ unit="m"
63
+ placeholder="0"
64
+ clearable
65
+ />
66
+ </v-col>
67
+ </v-row>
68
+ <template v-if="visibleProperties.has('scaleByDistance')">
83
69
  <v-row no-gutters>
84
- <v-col v-for="(nearFar, index) in scaleByDistance" :key="index">
85
- <VcsTextField
86
- v-model.number="nearFar.value"
87
- :hide-spin-buttons="true"
88
- type="number"
89
- :unit="index % 2 === 0 ? 'm' : ''"
90
- :disabled="!hasScaleByDistance"
91
- :placeholder="
92
- 'scaleByDistance' in value
93
- ? `${scaleByDistanceDefault[index]}`
94
- : ''
95
- "
96
- :rules="[
97
- (v) =>
98
- !hasScaleByDistance ||
99
- !isNaN(v) ||
100
- 'components.validation.required',
101
- ]"
70
+ <v-col cols="6">
71
+ <VcsCheckbox
72
+ label="components.vectorProperties.scaleByDistance"
73
+ v-model="hasScaleByDistance"
102
74
  />
103
75
  </v-col>
104
76
  </v-row>
105
- </v-col>
106
- </v-row>
107
- <v-row
108
- v-if="visibleProperties.has('eyeOffset') && show3DProperties"
109
- no-gutters
110
- >
111
- <v-col>
112
- <VcsCheckbox
113
- label="components.vectorProperties.eyeOffset"
114
- v-model="hasEyeOffset"
115
- />
116
- </v-col>
117
- <v-col v-for="(distance, index) in eyeOffset" :key="index" cols="2">
118
- <VcsTextField
119
- v-model.number="distance.value"
120
- unit="m"
121
- :hide-spin-buttons="true"
122
- type="number"
123
- :disabled="!hasEyeOffset"
124
- :prefix="dimensionsUpperCase[index]"
125
- :rules="[
126
- (v) =>
127
- !hasEyeOffset || !isNaN(v) || 'components.validation.required',
128
- ]"
129
- :placeholder="
130
- 'eyeOffset' in value ? `${eyeOffsetDefault[index]}` : ''
131
- "
132
- />
133
- </v-col>
134
- </v-row>
77
+ <template v-if="hasScaleByDistance">
78
+ <v-row no-gutters class="pb-2">
79
+ <v-col
80
+ v-for="(_, index) in localValue.scaleByDistance"
81
+ :key="index"
82
+ >
83
+ <VcsTextField
84
+ v-model="localValue.scaleByDistance[index]"
85
+ :hide-spin-buttons="true"
86
+ type="number"
87
+ :unit="index % 2 === 0 ? 'm' : ''"
88
+ :disabled="!localValue.scaleByDistance"
89
+ :placeholder="String(scaleByDistanceDefault[index])"
90
+ :rules="[
91
+ (v) =>
92
+ !hasScaleByDistance ||
93
+ !isNaN(v) ||
94
+ 'components.validation.required',
95
+ ]"
96
+ />
97
+ </v-col>
98
+ </v-row>
99
+ </template>
100
+ </template>
101
+ <template v-if="visibleProperties.has('eyeOffset')">
102
+ <v-row no-gutters>
103
+ <v-col>
104
+ <VcsCheckbox
105
+ label="components.vectorProperties.eyeOffset"
106
+ v-model="hasEyeOffset"
107
+ />
108
+ </v-col>
109
+ </v-row>
110
+ <template v-if="hasEyeOffset">
111
+ <v-row no-gutters class="pb-2">
112
+ <v-col v-for="(_, index) in localValue.eyeOffset" :key="index">
113
+ <VcsTextField
114
+ v-model.number="localValue.eyeOffset[index]"
115
+ unit="m"
116
+ :hide-spin-buttons="true"
117
+ type="number"
118
+ :disabled="!hasEyeOffset"
119
+ :prefix="dimensionsUpperCase[index]"
120
+ :rules="[
121
+ (v) =>
122
+ !hasEyeOffset ||
123
+ !isNaN(v) ||
124
+ 'components.validation.required',
125
+ ]"
126
+ :placeholder="String(eyeOffsetDefault[index])"
127
+ />
128
+ </v-col>
129
+ </v-row>
130
+ </template>
131
+ </template>
132
+ </template>
135
133
  <v-row v-if="visibleProperties.has('allowPicking')" no-gutters>
136
134
  <v-col>
137
135
  <VcsCheckbox
138
136
  label="components.vectorProperties.allowPicking"
139
- v-model="allowPicking"
137
+ v-model="localValue.allowPicking"
138
+ :true-value="true"
139
+ :false-value="false"
140
140
  />
141
141
  </v-col>
142
142
  </v-row>
@@ -145,337 +145,349 @@
145
145
  no-gutters
146
146
  >
147
147
  <v-col>
148
- <VcsLabel html-for="vp-classification-type" :dense="true">
148
+ <VcsLabel :html-for="`${cid}-vp-classification-type`">
149
149
  {{ $t('components.vectorProperties.classificationType') }}
150
150
  </VcsLabel>
151
151
  </v-col>
152
152
  <v-col>
153
153
  <VcsSelect
154
- id="vp-classification-type"
155
- :items="[
156
- { value: 'none', text: 'components.vectorProperties.none' },
157
- { value: 'both', text: 'components.vectorProperties.both' },
158
- {
159
- value: 'cesium3DTile',
160
- text: 'components.vectorProperties.cesium3DTile',
161
- },
162
- { value: 'terrain', text: 'components.vectorProperties.terrain' },
163
- ]"
154
+ :id="`${cid}-vp-classification-type`"
155
+ :items="availableClassificationTypes"
164
156
  v-model="classificationType"
165
- dense
166
157
  />
167
158
  </v-col>
168
159
  </v-row>
169
160
  </v-container>
170
- <v-divider
171
- v-if="
172
- showDividers &&
173
- show3DProperties &&
174
- [
175
- 'extrudedHeight',
176
- 'skirt',
177
- 'storeysAboveGround',
178
- 'storeysBelowGround',
179
- 'storeyHeightsAboveGround',
180
- 'storeyHeightsBelowGround',
181
- ].some((prop) => visibleProperties.has(prop))
182
- "
183
- />
184
- <v-container class="px-1 py-0" v-if="show3DProperties">
185
- <v-row
161
+ <template v-if="show3DProperties">
162
+ <v-divider
186
163
  v-if="
187
- visibleProperties.has('storeysAboveGround') ||
188
- visibleProperties.has('storeyHeightsAboveGround')
164
+ showDividers &&
165
+ [
166
+ 'extrudedHeight',
167
+ 'skirt',
168
+ 'storeysAboveGround',
169
+ 'storeysBelowGround',
170
+ 'storeyHeightsAboveGround',
171
+ 'storeyHeightsBelowGround',
172
+ ].some((prop) => visibleProperties.has(prop))
189
173
  "
190
- no-gutters
191
- >
192
- <v-col>
193
- <VcsLabel>{{
194
- $t('components.vectorProperties.aboveGround')
195
- }}</VcsLabel>
196
- </v-col>
197
- </v-row>
198
- <v-row v-if="visibleProperties.has('extrudedHeight')" no-gutters>
199
- <v-col>
200
- <VcsLabel
201
- html-for="vp-extruded-height"
202
- :class="{
203
- 'px-4':
204
- visibleProperties.has('storeysAboveGround') ||
205
- visibleProperties.has('storeyHeightsAboveGround'),
206
- }"
207
- >{{ $t('components.vectorProperties.extrudedHeight') }}</VcsLabel
208
- >
209
- </v-col>
210
- <v-col>
211
- <VcsTextField
212
- id="vp-extruded-height"
213
- v-model.number="extrudedHeight"
214
- :hide-spin-buttons="true"
215
- type="number"
216
- unit="m"
217
- :placeholder="'extrudedHeight' in value ? '0' : ''"
218
- clearable
219
- :rules="[
220
- (v) => v >= 0 || isNaN(v) || 'components.validation.notValid',
221
- ]"
222
- />
223
- </v-col>
224
- </v-row>
225
- <v-row v-if="visibleProperties.has('storeysAboveGround')" no-gutters>
226
- <v-col>
227
- <VcsLabel html-for="vp-storeys-above" class="px-4">{{
228
- $t('components.vectorProperties.storeys')
229
- }}</VcsLabel>
230
- </v-col>
231
- <v-col>
232
- <VcsTextField
233
- id="vp-storeys-above"
234
- v-model.number="storeysAboveGround"
235
- :hide-spin-buttons="true"
236
- type="number"
237
- :placeholder="'storeysAboveGround' in value ? '0' : ''"
238
- clearable
239
- :rules="[
240
- (v) => v >= 0 || isNaN(v) || 'components.validation.notValid',
241
- ]"
242
- />
243
- </v-col>
244
- </v-row>
245
- <v-row
246
- v-if="visibleProperties.has('storeyHeightsAboveGround')"
247
- no-gutters
248
- >
249
- <v-col>
250
- <VcsLabel :html-for="'vp-storey-heights-above'" class="px-4">{{
251
- $t('components.vectorProperties.storeyHeights')
252
- }}</VcsLabel>
253
- </v-col>
254
- <v-col>
255
- <VcsChipArrayInput
256
- id="vp-storey-heights-above"
257
- dense
258
- column
259
- type="number"
260
- v-model="storeyHeights.storeyHeightsAboveGround.value"
261
- placeholder="3"
262
- :rules="[(v) => !(v <= 0) || 'components.validation.notValid']"
263
- />
264
- </v-col>
265
- </v-row>
266
- <v-row
174
+ />
175
+ <v-container class="px-1 py-0">
176
+ <v-row
177
+ v-if="
178
+ visibleProperties.has('storeysAboveGround') ||
179
+ visibleProperties.has('storeyHeightsAboveGround')
180
+ "
181
+ no-gutters
182
+ >
183
+ <v-col>
184
+ <VcsLabel>{{
185
+ $t('components.vectorProperties.aboveGround')
186
+ }}</VcsLabel>
187
+ </v-col>
188
+ </v-row>
189
+ <v-row v-if="visibleProperties.has('extrudedHeight')" no-gutters>
190
+ <v-col>
191
+ <VcsLabel
192
+ :html-for="`${cid}-vp-extruded-height`"
193
+ :class="{
194
+ 'px-4':
195
+ visibleProperties.has('storeysAboveGround') ||
196
+ visibleProperties.has('storeyHeightsAboveGround'),
197
+ }"
198
+ >{{ $t('components.vectorProperties.extrudedHeight') }}</VcsLabel
199
+ >
200
+ </v-col>
201
+ <v-col>
202
+ <VcsTextField
203
+ :id="`${cid}-vp-extruded-height`"
204
+ v-model.number="localValue.extrudedHeight"
205
+ :hide-spin-buttons="true"
206
+ type="number"
207
+ unit="m"
208
+ :placeholder="'extrudedHeight' in localValue ? '0' : ''"
209
+ clearable
210
+ :rules="[
211
+ (v) => v >= 0 || isNaN(v) || 'components.validation.notValid',
212
+ ]"
213
+ />
214
+ </v-col>
215
+ </v-row>
216
+ <v-row v-if="visibleProperties.has('storeysAboveGround')" no-gutters>
217
+ <v-col>
218
+ <VcsLabel :html-for="`${cid}-vp-storeys-above`" class="px-4">{{
219
+ $t('components.vectorProperties.storeys')
220
+ }}</VcsLabel>
221
+ </v-col>
222
+ <v-col>
223
+ <VcsTextField
224
+ :id="`${cid}-vp-storeys-above`"
225
+ v-model.number="localValue.storeysAboveGround"
226
+ :hide-spin-buttons="true"
227
+ type="number"
228
+ :placeholder="'storeysAboveGround' in localValue ? '0' : ''"
229
+ clearable
230
+ :rules="[
231
+ (v) => v >= 0 || isNaN(v) || 'components.validation.notValid',
232
+ ]"
233
+ />
234
+ </v-col>
235
+ </v-row>
236
+ <v-row
237
+ v-if="visibleProperties.has('storeyHeightsAboveGround')"
238
+ no-gutters
239
+ >
240
+ <v-col>
241
+ <VcsLabel
242
+ :html-for="`${cid}-vp-storey-heights-above`"
243
+ class="px-4"
244
+ >{{ $t('components.vectorProperties.storeyHeights') }}</VcsLabel
245
+ >
246
+ </v-col>
247
+ <v-col>
248
+ <VcsChipArrayInput
249
+ :id="`${cid}-vp-storey-heights-above`"
250
+ column
251
+ type="number"
252
+ v-model="storeyHeights.storeyHeightsAboveGround.value"
253
+ placeholder="3"
254
+ :rules="[(v) => !(v <= 0) || 'components.validation.notValid']"
255
+ />
256
+ </v-col>
257
+ </v-row>
258
+ <v-row
259
+ v-if="
260
+ visibleProperties.has('storeysBelowGround') ||
261
+ visibleProperties.has('storeyHeightsBelowGround')
262
+ "
263
+ no-gutters
264
+ >
265
+ <v-col>
266
+ <VcsLabel>{{
267
+ $t('components.vectorProperties.belowGround')
268
+ }}</VcsLabel>
269
+ </v-col>
270
+ </v-row>
271
+ <v-row v-if="visibleProperties.has('skirt')" no-gutters>
272
+ <v-col>
273
+ <VcsLabel
274
+ :html-for="`${cid}-vp-skirt`"
275
+ :class="{
276
+ 'px-4':
277
+ visibleProperties.has('storeysBelowGround') ||
278
+ visibleProperties.has('storeyHeightsBelowGround'),
279
+ }"
280
+ >{{ $t('components.vectorProperties.skirt') }}</VcsLabel
281
+ >
282
+ </v-col>
283
+ <v-col>
284
+ <VcsTextField
285
+ :id="`${cid}-vp-skirt`"
286
+ v-model.number="localValue.skirt"
287
+ :hide-spin-buttons="true"
288
+ type="number"
289
+ unit="m"
290
+ :placeholder="'skirt' in localValue ? '0' : ''"
291
+ clearable
292
+ :rules="[
293
+ (v) => v >= 0 || isNaN(v) || 'components.validation.notValid',
294
+ ]"
295
+ />
296
+ </v-col>
297
+ </v-row>
298
+ <v-row v-if="visibleProperties.has('storeysBelowGround')" no-gutters>
299
+ <v-col>
300
+ <VcsLabel :html-for="`${cid}-vp-storeys-below`" class="px-4">{{
301
+ $t('components.vectorProperties.storeys')
302
+ }}</VcsLabel>
303
+ </v-col>
304
+ <v-col>
305
+ <VcsTextField
306
+ :id="`${cid}-vp-storeys-below`"
307
+ v-model.number="localValue.storeysBelowGround"
308
+ :hide-spin-buttons="true"
309
+ type="number"
310
+ :placeholder="'storeysBelowGround' in localValue ? '0' : ''"
311
+ clearable
312
+ :rules="[
313
+ (v) => v >= 0 || isNaN(v) || 'components.validation.notValid',
314
+ ]"
315
+ />
316
+ </v-col>
317
+ </v-row>
318
+ <v-row
319
+ v-if="visibleProperties.has('storeyHeightsBelowGround')"
320
+ no-gutters
321
+ >
322
+ <v-col>
323
+ <VcsLabel
324
+ :html-for="`${cid}-vp-storey-heights-below`"
325
+ class="px-4"
326
+ >{{ $t('components.vectorProperties.storeyHeights') }}</VcsLabel
327
+ >
328
+ </v-col>
329
+ <v-col>
330
+ <VcsChipArrayInput
331
+ :id="`${cid}-vp-storey-heights-below`"
332
+ column
333
+ type="number"
334
+ v-model="storeyHeights.storeyHeightsBelowGround.value"
335
+ placeholder="3"
336
+ />
337
+ </v-col>
338
+ </v-row>
339
+ </v-container>
340
+ <v-divider
267
341
  v-if="
268
- visibleProperties.has('storeysBelowGround') ||
269
- visibleProperties.has('storeyHeightsBelowGround')
342
+ showDividers &&
343
+ [
344
+ 'modelUrl',
345
+ 'modelScaleX',
346
+ 'modelScaleY',
347
+ 'modelScaleZ',
348
+ 'modelHeading',
349
+ 'modelPitch',
350
+ 'modelRoll',
351
+ 'modelAutoScale',
352
+ 'baseUrl',
353
+ ].some((prop) => visibleProperties.has(prop))
270
354
  "
271
- no-gutters
272
- >
273
- <v-col>
274
- <VcsLabel>{{
275
- $t('components.vectorProperties.belowGround')
276
- }}</VcsLabel>
277
- </v-col>
278
- </v-row>
279
- <v-row v-if="visibleProperties.has('skirt')" no-gutters>
280
- <v-col>
281
- <VcsLabel
282
- html-for="vp-skirt"
283
- :class="{
284
- 'px-4':
285
- visibleProperties.has('storeysBelowGround') ||
286
- visibleProperties.has('storeyHeightsBelowGround'),
287
- }"
288
- >{{ $t('components.vectorProperties.skirt') }}</VcsLabel
289
- >
290
- </v-col>
291
- <v-col>
292
- <VcsTextField
293
- id="vp-skirt"
294
- v-model.number="skirt"
295
- :hide-spin-buttons="true"
296
- type="number"
297
- unit="m"
298
- :placeholder="'skirt' in value ? '0' : ''"
299
- clearable
300
- :rules="[
301
- (v) => v >= 0 || isNaN(v) || 'components.validation.notValid',
302
- ]"
303
- />
304
- </v-col>
305
- </v-row>
306
- <v-row v-if="visibleProperties.has('storeysBelowGround')" no-gutters>
307
- <v-col>
308
- <VcsLabel html-for="vp-storeys-below" class="px-4">{{
309
- $t('components.vectorProperties.storeys')
310
- }}</VcsLabel>
311
- </v-col>
312
- <v-col>
313
- <VcsTextField
314
- id="vp-storeys-below"
315
- v-model.number="storeysBelowGround"
316
- :hide-spin-buttons="true"
317
- type="number"
318
- :placeholder="'storeysBelowGround' in value ? '0' : ''"
319
- clearable
320
- :rules="[
321
- (v) => v >= 0 || isNaN(v) || 'components.validation.notValid',
322
- ]"
323
- />
324
- </v-col>
325
- </v-row>
326
- <v-row
327
- v-if="visibleProperties.has('storeyHeightsBelowGround')"
328
- no-gutters
329
- >
330
- <v-col>
331
- <VcsLabel :html-for="'vp-storey-heights-below'" class="px-4">{{
332
- $t('components.vectorProperties.storeyHeights')
333
- }}</VcsLabel>
334
- </v-col>
335
- <v-col>
336
- <VcsChipArrayInput
337
- :id="'vp-storey-heights-below'"
338
- dense
339
- column
340
- type="number"
341
- v-model="storeyHeights.storeyHeightsBelowGround.value"
342
- placeholder="3"
343
- />
344
- </v-col>
345
- </v-row>
346
- </v-container>
347
- <v-divider
348
- v-if="
349
- showDividers &&
350
- show3DProperties &&
351
- [
352
- 'modelUrl',
353
- 'modelScaleX',
354
- 'modelScaleY',
355
- 'modelScaleZ',
356
- 'modelHeading',
357
- 'modelPitch',
358
- 'modelRoll',
359
- 'baseUrl',
360
- ].some((prop) => visibleProperties.has(prop))
361
- "
362
- />
363
- <v-container class="px-1 py-0" v-if="show3DProperties">
364
- <v-row v-if="visibleProperties.has('modelUrl')" no-gutters>
365
- <v-col>
366
- <VcsLabel html-for="vp-model-url">
367
- {{ $t('components.vectorProperties.modelUrl') }}
368
- </VcsLabel>
369
- </v-col>
370
- <v-col>
371
- <VcsTextField
372
- id="vp-model-url"
373
- dense
374
- v-model="modelUrl"
375
- clearable
376
- :placeholder="'modelUrl' in value ? 'example.glb' : ''"
377
- />
378
- </v-col>
379
- </v-row>
380
- <v-row v-if="Object.keys(modelScale).length" no-gutters>
381
- <v-col cols="6">
382
- <VcsLabel>{{
383
- $t('components.vectorProperties.modelScale')
384
- }}</VcsLabel>
385
- </v-col>
386
- <v-col v-for="(dimension, key) in modelScale" :key="key">
387
- <VcsTextField
388
- v-model.number="dimension.value"
389
- :hide-spin-buttons="true"
390
- type="number"
391
- :placeholder="`modelScale${key}` in value ? '1' : ''"
392
- :prefix="key"
393
- :rules="[(v) => v > 0 || 'components.validation.notValid']"
394
- />
395
- </v-col>
396
- </v-row>
397
- <v-row v-if="visibleProperties.has('modelHeading')" no-gutters>
398
- <v-col cols="6">
399
- <VcsLabel>{{
400
- $t('components.vectorProperties.modelHeading')
401
- }}</VcsLabel>
402
- </v-col>
403
- <v-col>
404
- <VcsTextField
405
- v-model.number="modelHeading"
406
- :hide-spin-buttons="true"
407
- type="number"
408
- :placeholder="'modelHeading' in value ? '0' : ''"
409
- unit="°"
410
- clearable
411
- />
412
- </v-col>
413
- </v-row>
414
- <v-row v-if="visibleProperties.has('modelPitch')" no-gutters>
415
- <v-col cols="6">
416
- <VcsLabel>{{
417
- $t('components.vectorProperties.modelPitch')
418
- }}</VcsLabel>
419
- </v-col>
420
- <v-col>
421
- <VcsTextField
422
- v-model.number="modelPitch"
423
- :hide-spin-buttons="true"
424
- type="number"
425
- :placeholder="'modelPitch' in value ? '0' : ''"
426
- unit="°"
427
- clearable
428
- />
429
- </v-col>
430
- </v-row>
431
- <v-row v-if="visibleProperties.has('modelRoll')" no-gutters>
432
- <v-col cols="6">
433
- <VcsLabel>{{ $t('components.vectorProperties.modelRoll') }}</VcsLabel>
434
- </v-col>
435
- <v-col>
436
- <VcsTextField
437
- v-model.number="modelRoll"
438
- :hide-spin-buttons="true"
439
- type="number"
440
- :placeholder="'modelRoll' in value ? '0' : ''"
441
- unit="°"
442
- clearable
443
- />
444
- </v-col>
445
- </v-row>
446
- <v-row v-if="visibleProperties.has('baseUrl')" no-gutters>
447
- <v-col>
448
- <VcsLabel html-for="vp-base-url">{{
449
- $t('components.vectorProperties.baseUrl')
450
- }}</VcsLabel>
451
- </v-col>
452
- <v-col>
453
- <VcsTextField
454
- id="vp-base-url"
455
- dense
456
- clearable
457
- v-model="baseUrl"
458
- :placeholder="'baseUrl' in value ? 'path/to/files/' : ''"
459
- />
460
- </v-col>
461
- </v-row>
462
- </v-container>
355
+ />
356
+ <v-container class="px-1 py-0">
357
+ <v-row v-if="visibleProperties.has('modelUrl')" no-gutters>
358
+ <v-col>
359
+ <VcsLabel :html-for="`${cid}-vp-model-url`">
360
+ {{ $t('components.vectorProperties.modelUrl') }}
361
+ </VcsLabel>
362
+ </v-col>
363
+ <v-col>
364
+ <VcsTextField
365
+ :id="`${cid}-vp-model-url`"
366
+ v-model="localValue.modelUrl"
367
+ clearable
368
+ :placeholder="'modelUrl' in localValue ? 'example.glb' : ''"
369
+ />
370
+ </v-col>
371
+ </v-row>
372
+ <template v-if="Object.keys(modelScale).length">
373
+ <v-row no-gutters>
374
+ <v-col cols="6">
375
+ <VcsLabel>{{
376
+ $t('components.vectorProperties.modelScale')
377
+ }}</VcsLabel>
378
+ </v-col>
379
+ </v-row>
380
+ <v-row no-gutters class="pb-2">
381
+ <v-col v-for="(dimension, key) in modelScale" :key="key">
382
+ <VcsTextField
383
+ v-model.number="dimension.value"
384
+ :hide-spin-buttons="true"
385
+ type="number"
386
+ :placeholder="`modelScale${key}` in localValue ? '1' : ''"
387
+ :prefix="key"
388
+ :rules="[(v) => v > 0 || 'components.validation.notValid']"
389
+ />
390
+ </v-col>
391
+ </v-row>
392
+ </template>
393
+ <v-row v-if="visibleProperties.has('modelHeading')" no-gutters>
394
+ <v-col cols="6">
395
+ <VcsLabel :html-for="`${cid}-vp-model-heading`">{{
396
+ $t('components.vectorProperties.modelHeading')
397
+ }}</VcsLabel>
398
+ </v-col>
399
+ <v-col>
400
+ <VcsTextField
401
+ :id="`${cid}-vp-model-heading`"
402
+ v-model.number="localValue.modelHeading"
403
+ :hide-spin-buttons="true"
404
+ type="number"
405
+ :placeholder="'modelHeading' in localValue ? '0' : ''"
406
+ unit="°"
407
+ clearable
408
+ />
409
+ </v-col>
410
+ </v-row>
411
+ <v-row v-if="visibleProperties.has('modelPitch')" no-gutters>
412
+ <v-col cols="6">
413
+ <VcsLabel :html-for="`${cid}-vp-model-pitch`">{{
414
+ $t('components.vectorProperties.modelPitch')
415
+ }}</VcsLabel>
416
+ </v-col>
417
+ <v-col>
418
+ <VcsTextField
419
+ :id="`${cid}-vp-model-pitch`"
420
+ v-model.number="localValue.modelPitch"
421
+ :hide-spin-buttons="true"
422
+ type="number"
423
+ :placeholder="'modelPitch' in localValue ? '0' : ''"
424
+ unit="°"
425
+ clearable
426
+ />
427
+ </v-col>
428
+ </v-row>
429
+ <v-row v-if="visibleProperties.has('modelRoll')" no-gutters>
430
+ <v-col cols="6">
431
+ <VcsLabel :html-for="`${cid}-vp-model-roll`">{{
432
+ $t('components.vectorProperties.modelRoll')
433
+ }}</VcsLabel>
434
+ </v-col>
435
+ <v-col>
436
+ <VcsTextField
437
+ :id="`${cid}-vp-model-roll`"
438
+ v-model.number="localValue.modelRoll"
439
+ :hide-spin-buttons="true"
440
+ type="number"
441
+ :placeholder="'modelRoll' in localValue ? '0' : ''"
442
+ unit="°"
443
+ clearable
444
+ />
445
+ </v-col>
446
+ </v-row>
447
+ <v-row v-if="visibleProperties.has('modelAutoScale')" no-gutters>
448
+ <v-col cols="6">
449
+ <VcsLabel>{{
450
+ $t('components.vectorProperties.modelAutoScale')
451
+ }}</VcsLabel>
452
+ </v-col>
453
+ <v-col>
454
+ <VcsCheckbox v-model="localValue.modelAutoScale" />
455
+ </v-col>
456
+ </v-row>
457
+ <v-row v-if="visibleProperties.has('baseUrl')" no-gutters>
458
+ <v-col>
459
+ <VcsLabel :html-for="`${cid}-vp-base-url`">{{
460
+ $t('components.vectorProperties.baseUrl')
461
+ }}</VcsLabel>
462
+ </v-col>
463
+ <v-col>
464
+ <VcsTextField
465
+ :id="`${cid}-vp-base-url`"
466
+ clearable
467
+ v-model="localValue.baseUrl"
468
+ :placeholder="'baseUrl' in localValue ? 'path/to/files/' : ''"
469
+ />
470
+ </v-col>
471
+ </v-row>
472
+ </v-container>
473
+ </template>
463
474
  </VcsFormSection>
464
475
  </template>
465
476
  <script>
466
477
  import { computed } from 'vue';
467
478
  import { VContainer, VRow, VCol, VDivider } from 'vuetify/components';
468
- import VcsFormSection from '../form-inputs-controls/VcsFormSection.vue';
479
+ import { VectorProperties } from '@vcmap/core';
480
+ import {
481
+ useProxiedComplexModel,
482
+ useModelHasProperty,
483
+ } from '../modelHelper.js';
484
+ import VcsFormSection from '../section/VcsFormSection.vue';
469
485
  import VcsLabel from '../form-inputs-controls/VcsLabel.vue';
470
486
  import VcsTextField from '../form-inputs-controls/VcsTextField.vue';
471
487
  import VcsSelect from '../form-inputs-controls/VcsSelect.vue';
472
488
  import VcsCheckbox from '../form-inputs-controls/VcsCheckbox.vue';
473
- import {
474
- usePrimitiveProperty,
475
- useArrayProperty,
476
- useHasProperty,
477
- } from './composables.js';
478
489
  import VcsChipArrayInput from '../form-inputs-controls/VcsChipArrayInput.vue';
490
+ import { useComponentId } from '../composables.js';
479
491
 
480
492
  export const genericVectorProperties = [
481
493
  'altitudeMode',
@@ -496,6 +508,7 @@
496
508
  'modelHeading',
497
509
  'modelPitch',
498
510
  'modelRoll',
511
+ 'modelAutoScale',
499
512
  'baseUrl',
500
513
  ];
501
514
 
@@ -533,6 +546,7 @@
533
546
  */
534
547
  export default {
535
548
  name: 'VcsVectorPropertiesComponent',
549
+ methods: { computed },
536
550
  components: {
537
551
  VcsFormSection,
538
552
  VcsLabel,
@@ -548,7 +562,7 @@
548
562
  props: {
549
563
  modelValue: {
550
564
  type: Object,
551
- default: () => {},
565
+ default: () => VectorProperties.getDefaultOptions(),
552
566
  },
553
567
  valueDefault: {
554
568
  type: Object,
@@ -558,10 +572,26 @@
558
572
  type: Array,
559
573
  default: () => vectorProperties,
560
574
  },
575
+ altitudeModes: {
576
+ type: Array,
577
+ default: () => [
578
+ 'absolute',
579
+ 'relativeToGround',
580
+ 'relativeToTerrain',
581
+ 'relativeTo3DTiles',
582
+ 'clampToGround',
583
+ 'clampToTerrain',
584
+ 'clampTo3DTiles',
585
+ ],
586
+ },
561
587
  show3DProperties: {
562
588
  type: Boolean,
563
589
  default: true,
564
590
  },
591
+ is2DFeature: {
592
+ type: Boolean,
593
+ default: false,
594
+ },
565
595
  showDividers: {
566
596
  type: Boolean,
567
597
  default: true,
@@ -579,162 +609,113 @@
579
609
  default: true,
580
610
  },
581
611
  },
612
+ emits: ['update:modelValue'],
582
613
  setup(props, { emit }) {
614
+ /**
615
+ * @type {import("vue").Ref<import("vue").UnwrapRef<import("@vcmap/core").VectorProperties>>}
616
+ */
617
+ const localValue = useProxiedComplexModel(props, 'modelValue', emit);
618
+
583
619
  const visibleProperties = computed(() => {
584
620
  return new Set(props.properties);
585
621
  });
586
622
 
587
- const altitudeMode = usePrimitiveProperty(
588
- () => props.modelValue,
589
- 'altitudeMode',
590
- emit,
591
- );
592
-
593
623
  const availableAltitudeModes = computed(() => {
594
- const altitudeModes = [
624
+ return [
595
625
  {
596
626
  value: 'clampToGround',
597
- text: 'components.vectorProperties.clampToGround',
627
+ title: 'components.vectorProperties.clampToGround',
628
+ },
629
+ {
630
+ value: 'clampToTerrain',
631
+ title: 'components.vectorProperties.clampToTerrain',
632
+ },
633
+ {
634
+ value: 'clampTo3DTiles',
635
+ title: 'components.vectorProperties.clampTo3DTiles',
598
636
  },
599
637
  {
600
638
  value: 'absolute',
601
- text: 'components.vectorProperties.absolute',
639
+ title: 'components.vectorProperties.absolute',
640
+ props: {
641
+ disabled: props.is2DFeature,
642
+ },
602
643
  },
603
- ];
604
-
605
- if (visibleProperties.value.has('heightAboveGround')) {
606
- altitudeModes.push({
644
+ {
607
645
  value: 'relativeToGround',
608
- text: 'components.vectorProperties.relativeToGround',
609
- });
610
- }
611
-
612
- return altitudeModes;
646
+ title: 'components.vectorProperties.relativeToGround',
647
+ },
648
+ {
649
+ value: 'relativeToTerrain',
650
+ title: 'components.vectorProperties.relativeToTerrain',
651
+ },
652
+ {
653
+ value: 'relativeTo3DTiles',
654
+ title: 'components.vectorProperties.relativeTo3DTiles',
655
+ },
656
+ ].filter((item) => props.altitudeModes.includes(item.value));
613
657
  });
614
658
 
615
- const heightAboveGround = usePrimitiveProperty(
616
- () => props.modelValue,
617
- 'heightAboveGround',
618
- emit,
619
- );
620
- const allowPicking = computed({
621
- get() {
622
- return props.modelValue.allowPicking;
659
+ const availableClassificationTypes = [
660
+ { value: 'none', title: 'components.vectorProperties.none' },
661
+ { value: 'both', title: 'components.vectorProperties.both' },
662
+ {
663
+ value: 'cesium3DTile',
664
+ title: 'components.vectorProperties.cesium3DTile',
623
665
  },
624
- set(value) {
625
- if (props.modelValue.allowPicking !== value) {
626
- const newParams = structuredClone(props.modelValue);
627
- const changedParams = { allowPicking: value || false };
628
- emit('update:modelValue', Object.assign(newParams, changedParams));
629
- emit('propertyChange', changedParams);
630
- }
631
- },
632
- });
666
+ { value: 'terrain', title: 'components.vectorProperties.terrain' },
667
+ ];
668
+
633
669
  const classificationType = computed({
634
670
  get() {
635
- if ('classificationType' in props.modelValue) {
636
- return props.modelValue.classificationType || 'none';
671
+ if ('classificationType' in localValue.value) {
672
+ return localValue.value.classificationType || 'none';
637
673
  } else {
638
674
  return undefined;
639
675
  }
640
676
  },
641
677
  set(value) {
642
- if (props.modelValue.classificationType !== value) {
643
- const newParams = structuredClone(props.modelValue);
644
- const changedParams = {
645
- classificationType: value === 'none' ? undefined : value,
646
- };
647
- emit('update:modelValue', Object.assign(newParams, changedParams));
648
- emit('propertyChange', changedParams);
678
+ const v = value === 'none' ? undefined : value;
679
+ if (localValue.value.classificationType !== v) {
680
+ localValue.value.classificationType = v;
649
681
  }
650
682
  },
651
683
  });
652
- const scaleByDistance = useArrayProperty(
653
- () => props.modelValue,
654
- 'scaleByDistance',
655
- emit,
656
- 4,
657
- );
658
- const hasScaleByDistance = useHasProperty(
659
- () => props.modelValue,
684
+
685
+ const hasScaleByDistance = useModelHasProperty(
686
+ localValue,
660
687
  'scaleByDistance',
661
- emit,
662
688
  scaleByDistanceDefault,
663
689
  );
664
690
 
665
- const eyeOffset = useArrayProperty(
666
- () => props.modelValue,
667
- 'eyeOffset',
668
- emit,
669
- 3,
670
- );
671
- const hasEyeOffset = useHasProperty(
672
- () => props.modelValue,
691
+ const hasEyeOffset = useModelHasProperty(
692
+ localValue,
673
693
  'eyeOffset',
674
- emit,
675
694
  eyeOffsetDefault,
676
695
  );
677
696
 
678
- const groundLevel = usePrimitiveProperty(
679
- () => props.modelValue,
680
- 'groundLevel',
681
- emit,
682
- );
683
- const extrudedHeight = usePrimitiveProperty(
684
- () => props.modelValue,
685
- 'extrudedHeight',
686
- emit,
687
- );
688
- const skirt = usePrimitiveProperty(() => props.modelValue, 'skirt', emit);
689
- const storeysAboveGround = usePrimitiveProperty(
690
- () => props.modelValue,
691
- 'storeysAboveGround',
692
- emit,
693
- );
694
- const storeysBelowGround = usePrimitiveProperty(
695
- () => props.modelValue,
696
- 'storeysBelowGround',
697
- emit,
698
- );
699
-
700
697
  const storeyHeights = computed(() => {
701
698
  return ['storeyHeightsAboveGround', 'storeyHeightsBelowGround']
702
699
  .filter((key) => visibleProperties.value.has(key))
703
700
  .reduce((acc, key) => {
704
- return {
705
- ...acc,
706
- [key]: computed({
707
- get() {
708
- if (Array.isArray(props.modelValue?.[key])) {
709
- return props.modelValue?.[key];
710
- } else if (props.modelValue?.[key] > 0) {
711
- return [props.modelValue?.[key]];
712
- } else {
713
- return [];
714
- }
715
- },
716
- set(value) {
717
- const newParams = structuredClone(props.modelValue);
718
- const changedParams = {
719
- [key]: value,
720
- };
721
- emit(
722
- 'update:modelValue',
723
- Object.assign(newParams, changedParams),
724
- );
725
- emit('propertyChange', changedParams);
726
- },
727
- }),
728
- };
701
+ acc[key] = computed({
702
+ get() {
703
+ if (Array.isArray(localValue.value[key])) {
704
+ return localValue.value[key];
705
+ } else if (localValue.value[key] > 0) {
706
+ return [localValue.value[key]];
707
+ } else {
708
+ return [];
709
+ }
710
+ },
711
+ set(value) {
712
+ localValue.value[key] = value;
713
+ },
714
+ });
715
+ return acc;
729
716
  }, {});
730
717
  });
731
718
 
732
- const modelUrl = usePrimitiveProperty(
733
- () => props.modelValue,
734
- 'modelUrl',
735
- emit,
736
- );
737
-
738
719
  const modelScale = computed(() => {
739
720
  return dimensionsUpperCase
740
721
  .filter((dimension) =>
@@ -743,43 +724,18 @@
743
724
  .reduce((acc, dimension) => {
744
725
  return {
745
726
  ...acc,
746
- [dimension]: usePrimitiveProperty(
747
- () => props.modelValue,
748
- `modelScale${dimension}`,
749
- emit,
750
- ),
727
+ [dimension]: computed({
728
+ get() {
729
+ return localValue.value[`modelScale${dimension}`];
730
+ },
731
+ set(value) {
732
+ localValue.value[`modelScale${dimension}`] = value;
733
+ },
734
+ }),
751
735
  };
752
736
  }, {});
753
737
  });
754
738
 
755
- const modelHeading = usePrimitiveProperty(
756
- () => props.modelValue,
757
- 'modelHeading',
758
- emit,
759
- );
760
- const modelPitch = usePrimitiveProperty(
761
- () => props.modelValue,
762
- 'modelPitch',
763
- emit,
764
- );
765
- const modelRoll = usePrimitiveProperty(
766
- () => props.modelValue,
767
- 'modelRoll',
768
- emit,
769
- );
770
- const baseUrl = usePrimitiveProperty(
771
- () => props.modelValue,
772
- 'baseUrl',
773
- emit,
774
- );
775
-
776
- function reset() {
777
- const newParams = structuredClone(props.valueDefault);
778
-
779
- emit('update:modelValue', newParams);
780
- emit('propertyChange', newParams);
781
- }
782
-
783
739
  const headerActions = computed(() =>
784
740
  props.showReset
785
741
  ? [
@@ -788,41 +744,30 @@
788
744
  title: 'components.style.reset',
789
745
  icon: '$vcsReturn',
790
746
  callback: () => {
791
- reset();
747
+ localValue.value = props.valueDefault;
792
748
  },
793
749
  },
794
750
  ]
795
751
  : [],
796
752
  );
797
753
 
754
+ const cid = useComponentId();
755
+
798
756
  return {
757
+ localValue,
799
758
  headerActions,
800
759
  visibleProperties,
801
- altitudeMode,
802
760
  availableAltitudeModes,
803
- heightAboveGround,
804
- allowPicking,
761
+ availableClassificationTypes,
805
762
  classificationType,
806
- scaleByDistance,
807
763
  hasScaleByDistance,
808
764
  scaleByDistanceDefault,
809
- eyeOffset,
810
765
  hasEyeOffset,
811
766
  eyeOffsetDefault,
812
- groundLevel,
813
- extrudedHeight,
814
- skirt,
815
- storeysAboveGround,
816
- storeysBelowGround,
817
767
  storeyHeights,
818
- modelUrl,
819
768
  modelScale,
820
- modelHeading,
821
- modelPitch,
822
- modelRoll,
823
- baseUrl,
824
- reset,
825
769
  dimensionsUpperCase,
770
+ cid,
826
771
  };
827
772
  },
828
773
  };