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

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 (320) hide show
  1. package/build/build.js +40 -60
  2. package/build/buildHelpers.js +2 -8
  3. package/build/info/conf.json +1 -1
  4. package/config/base.config.json +4 -4
  5. package/config/projects.config.json +2 -1
  6. package/config/splashscreen.config.json +45 -0
  7. package/dist/.htaccess +7 -0
  8. package/dist/assets/@mdi/font/README.md +25 -0
  9. package/dist/assets/@mdi/font/css/materialdesignicons.min-7a4f6be0.css +3 -0
  10. package/dist/assets/@mdi/font/css/materialdesignicons.min.css.map +16 -0
  11. package/dist/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
  12. package/dist/assets/cesium/Assets/approximateTerrainHeights.json +1 -1
  13. package/dist/assets/cesium/ThirdParty/Workers/z-worker-pako.js +1 -1
  14. package/dist/assets/cesium/Workers/{chunk-ZA25DG4Y.js → chunk-3DRPXHZ4.js} +11 -11
  15. package/dist/assets/cesium/Workers/{chunk-OAVNIRB4.js → chunk-3GI7DWF7.js} +5 -7
  16. package/dist/assets/cesium/Workers/{chunk-TFC6TZ3S.js → chunk-4EW3HFFI.js} +33 -22
  17. package/dist/assets/cesium/Workers/{chunk-LLUNNUJV.js → chunk-4OX4RYLB.js} +5 -5
  18. package/dist/assets/cesium/Workers/{chunk-66QLLS45.js → chunk-4RJH3H6D.js} +11 -9
  19. package/dist/assets/cesium/Workers/{chunk-MPAZH4BF.js → chunk-5OUTANXX.js} +1 -1
  20. package/dist/assets/cesium/Workers/{chunk-WXTV4ATB.js → chunk-6DH5PLFD.js} +1 -1
  21. package/dist/assets/cesium/Workers/{chunk-A4JVFBQ3.js → chunk-6DXIYFX3.js} +2 -2
  22. package/dist/assets/cesium/Workers/chunk-A5C2A5O5.js +963 -0
  23. package/dist/assets/cesium/Workers/{chunk-HQF437NJ.js → chunk-AGTH5JMJ.js} +6 -6
  24. package/dist/assets/cesium/Workers/{chunk-RP2A7BR5.js → chunk-AVFIYUKX.js} +12 -14
  25. package/dist/assets/cesium/Workers/{chunk-227AJNOA.js → chunk-BAJAVGUF.js} +5 -5
  26. package/dist/assets/cesium/Workers/{chunk-N3JIFFX2.js → chunk-BPY4HDAK.js} +5 -6
  27. package/dist/assets/cesium/Workers/{chunk-ABADGKYE.js → chunk-D6PDWQXW.js} +2 -2
  28. package/dist/assets/cesium/Workers/{chunk-34YUDLRP.js → chunk-DR7LK6PG.js} +13 -13
  29. package/dist/assets/cesium/Workers/{chunk-OYFCF4PL.js → chunk-DTACCQDR.js} +6 -6
  30. package/dist/assets/cesium/Workers/{chunk-C3SXRKRW.js → chunk-EVU2UNBD.js} +7 -7
  31. package/dist/assets/cesium/Workers/{chunk-6BTKZDRG.js → chunk-F7IEM66T.js} +3 -5
  32. package/dist/assets/cesium/Workers/{chunk-QT3MPEMI.js → chunk-FSXNF76Y.js} +4 -4
  33. package/dist/assets/cesium/Workers/{chunk-PCJWUS4M.js → chunk-FYYT5EVH.js} +830 -14
  34. package/dist/assets/cesium/Workers/{chunk-QMEMZIJI.js → chunk-FZDKIUDT.js} +4 -4
  35. package/dist/assets/cesium/Workers/{chunk-XTY7B2N6.js → chunk-G6346EDR.js} +16 -16
  36. package/dist/assets/cesium/Workers/{chunk-CHHNOC2C.js → chunk-H7PSTL64.js} +95 -155
  37. package/dist/assets/cesium/Workers/{chunk-2R5O53JW.js → chunk-I67V66MN.js} +6 -6
  38. package/dist/assets/cesium/Workers/{chunk-JS3AW5BK.js → chunk-IALQGTA2.js} +6 -6
  39. package/dist/assets/cesium/Workers/{chunk-K36FEYS7.js → chunk-KNMGSIIN.js} +16 -12
  40. package/dist/assets/cesium/Workers/{chunk-J3JY6I2C.js → chunk-L4XQPD6P.js} +49 -88
  41. package/dist/assets/cesium/Workers/{chunk-X4SU25DT.js → chunk-LMTN7R7M.js} +10 -12
  42. package/dist/assets/cesium/Workers/{chunk-JB2LWGH4.js → chunk-LUYI3XCB.js} +14 -14
  43. package/dist/assets/cesium/Workers/{chunk-AFFLIKOH.js → chunk-N5MIFVXJ.js} +7 -7
  44. package/dist/assets/cesium/Workers/{chunk-MYZB7C4T.js → chunk-O7OUBDMZ.js} +10 -10
  45. package/dist/assets/cesium/Workers/{chunk-VLGOATD6.js → chunk-P24I5VUS.js} +22 -22
  46. package/dist/assets/cesium/Workers/{chunk-KD4Y7CZL.js → chunk-PIOKSAZH.js} +15 -17
  47. package/dist/assets/cesium/Workers/{chunk-3W63OHNJ.js → chunk-PRKEY4QK.js} +5 -5
  48. package/dist/assets/cesium/Workers/{chunk-O5AMBQ36.js → chunk-Q7PM4W34.js} +8 -8
  49. package/dist/assets/cesium/Workers/{chunk-GLZBE3ML.js → chunk-QLC66ZRL.js} +13 -13
  50. package/dist/assets/cesium/Workers/{chunk-OZJDGN5F.js → chunk-RRLGJV3Q.js} +16 -16
  51. package/dist/assets/cesium/Workers/{chunk-CCFQRR6D.js → chunk-S2UEXF6T.js} +1 -1
  52. package/dist/assets/cesium/Workers/{chunk-QIKODV5G.js → chunk-S4VTLNAJ.js} +4 -4
  53. package/dist/assets/cesium/Workers/{chunk-EW2GWJYB.js → chunk-SJC5PRDX.js} +2 -2
  54. package/dist/assets/cesium/Workers/{chunk-KTJSNCK4.js → chunk-T6TZXGG5.js} +230 -20
  55. package/dist/assets/cesium/Workers/{chunk-RW6LU2CJ.js → chunk-TLGODPEV.js} +5 -5
  56. package/dist/assets/cesium/Workers/{chunk-CTELOFLA.js → chunk-UC566ISB.js} +6 -6
  57. package/dist/assets/cesium/Workers/{chunk-ZFOBYDGF.js → chunk-UMX265HW.js} +2 -2
  58. package/dist/assets/cesium/Workers/{chunk-Z24VKNDO.js → chunk-V7WJDCPA.js} +12 -12
  59. package/dist/assets/cesium/Workers/{chunk-4MFFIWUA.js → chunk-VD6G7UPU.js} +2 -2
  60. package/dist/assets/cesium/Workers/{chunk-XY7MGBKC.js → chunk-WMVCLETM.js} +14 -16
  61. package/dist/assets/cesium/Workers/{chunk-IPA4EACJ.js → chunk-WOA6WSHH.js} +12 -12
  62. package/dist/assets/cesium/Workers/{chunk-PFQBCKBM.js → chunk-X67EJ6X6.js} +4398 -2722
  63. package/dist/assets/cesium/Workers/{chunk-V3NGATMV.js → chunk-XGI4FRXF.js} +11 -13
  64. package/dist/assets/cesium/Workers/{chunk-AHKEZ2OE.js → chunk-YFVI4SQI.js} +1 -1
  65. package/dist/assets/cesium/Workers/{chunk-HARLBUOL.js → chunk-YFYPR4MW.js} +11 -8
  66. package/dist/assets/cesium/Workers/combineGeometry.js +22 -23
  67. package/dist/assets/cesium/Workers/createBoxGeometry.js +16 -17
  68. package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +14 -15
  69. package/dist/assets/cesium/Workers/createCircleGeometry.js +29 -26
  70. package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +17 -18
  71. package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +35 -36
  72. package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +29 -30
  73. package/dist/assets/cesium/Workers/createCorridorGeometry.js +29 -30
  74. package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +27 -28
  75. package/dist/assets/cesium/Workers/createCylinderGeometry.js +18 -19
  76. package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +17 -19
  77. package/dist/assets/cesium/Workers/createEllipseGeometry.js +24 -25
  78. package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +17 -18
  79. package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +17 -18
  80. package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +16 -17
  81. package/dist/assets/cesium/Workers/createFrustumGeometry.js +16 -17
  82. package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +18 -18
  83. package/dist/assets/cesium/Workers/createGeometry.js +52 -33
  84. package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +28 -29
  85. package/dist/assets/cesium/Workers/createPlaneGeometry.js +14 -15
  86. package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +13 -14
  87. package/dist/assets/cesium/Workers/createPolygonGeometry.js +451 -176
  88. package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +29 -30
  89. package/dist/assets/cesium/Workers/createPolylineGeometry.js +24 -25
  90. package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +31 -33
  91. package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +27 -29
  92. package/dist/assets/cesium/Workers/createRectangleGeometry.js +30 -31
  93. package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +21 -24
  94. package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +22 -23
  95. package/dist/assets/cesium/Workers/createSphereGeometry.js +17 -18
  96. package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +16 -17
  97. package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +3 -3
  98. package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +14 -16
  99. package/dist/assets/cesium/Workers/createVectorTileGeometries.js +22 -23
  100. package/dist/assets/cesium/Workers/createVectorTilePoints.js +12 -12
  101. package/dist/assets/cesium/Workers/createVectorTilePolygons.js +20 -21
  102. package/dist/assets/cesium/Workers/createVectorTilePolylines.js +14 -16
  103. package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +24 -25
  104. package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +25 -26
  105. package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +19 -21
  106. package/dist/assets/cesium/Workers/createWallGeometry.js +23 -24
  107. package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +22 -23
  108. package/dist/assets/cesium/Workers/decodeDraco.js +11 -11
  109. package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +12 -19
  110. package/dist/assets/cesium/Workers/decodeI3S.js +600 -92
  111. package/dist/assets/cesium/Workers/transcodeKTX2.js +46 -82
  112. package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -1
  113. package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +21 -22
  114. package/dist/assets/{cesium.6b12b4.js → cesium-cb4dbfba.js} +151166 -145641
  115. package/dist/assets/cesium.js +1 -1
  116. package/dist/assets/{core.074b78.js → core-72f21835.js} +2299 -2225
  117. package/dist/assets/core.js +1 -1
  118. package/dist/assets/{ol.8b2e3a.js → ol-2d33bc8b.js} +42505 -44282
  119. package/dist/assets/ol.js +1 -1
  120. package/dist/assets/ui-2ab43a16.css +1 -0
  121. package/dist/assets/{ui.715986.js → ui-2ab43a16.js} +12001 -11136
  122. package/dist/assets/ui.js +1 -1
  123. package/dist/assets/vue.js +1 -1
  124. package/dist/assets/{vuetify.28d881.css → vuetify-760ced3b.css} +1 -1
  125. package/dist/assets/{vuetify.28d881.js → vuetify-760ced3b.js} +5720 -5662
  126. package/dist/assets/vuetify.js +1 -1
  127. package/dist/index.html +11 -10
  128. package/index.d.ts +9 -5
  129. package/index.html +5 -5
  130. package/index.js +4 -3
  131. package/lib/olLib.js +84 -23
  132. package/package.json +10 -9
  133. package/plugins/@vcmap-show-case/flight-component-example/src/FlightExample.vue +41 -1
  134. package/plugins/@vcmap-show-case/form-inputs-example/src/FormInputsExample.vue +70 -30
  135. package/plugins/@vcmap-show-case/form-inputs-example/src/exampleActions.js +7 -11
  136. package/plugins/@vcmap-show-case/form-inputs-example/src/index.js +2 -2
  137. package/plugins/@vcmap-show-case/list-example/src/ListExample.vue +45 -94
  138. package/plugins/@vcmap-show-case/style-input-example/src/StyleExample.vue +29 -90
  139. package/plugins/@vcmap-show-case/vector-properties-example/src/VectorPropertiesExample.vue +35 -10
  140. package/plugins/@vcmap-show-case/wizard-example/src/WizardExample.vue +40 -54
  141. package/public/assets/@mdi/font/README.md +25 -0
  142. package/public/assets/@mdi/font/css/materialdesignicons.min.css +2 -2
  143. package/public/assets/@mdi/font/css/materialdesignicons.min.css.map +16 -0
  144. package/public/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
  145. package/src/actions/actionHelper.js +20 -20
  146. package/src/actions/flightActions.js +5 -5
  147. package/src/actions/listActions.d.ts +0 -7
  148. package/src/actions/listActions.js +4 -20
  149. package/src/actions/stateRefAction.js +2 -2
  150. package/src/application/VcsApp.vue +53 -29
  151. package/src/application/VcsApp.vue.d.ts +1 -0
  152. package/src/application/VcsAttributions.vue +2 -13
  153. package/src/application/VcsAttributionsFooter.vue +10 -11
  154. package/src/application/VcsNavbar.vue.d.ts +1 -1
  155. package/src/application/VcsPositionDisplay.vue +8 -23
  156. package/src/application/VcsPositionDisplay.vue.d.ts +0 -1
  157. package/src/application/VcsSettings.vue +10 -17
  158. package/src/application/VcsSplashScreen.vue +34 -54
  159. package/src/application/VcsSplashScreen.vue.d.ts +4 -6
  160. package/src/application/VcsTextPage.vue +13 -44
  161. package/src/application/VcsTextPage.vue.d.ts +4 -8
  162. package/src/application/VcsTextPageFooter.vue +22 -40
  163. package/src/application/markdownHelper.js +2 -17
  164. package/src/components/buttons/VcsButton.vue +1 -1
  165. package/src/components/buttons/VcsButton.vue.d.ts +3 -3
  166. package/src/components/buttons/VcsFormButton.vue +1 -1
  167. package/src/components/buttons/VcsFormButton.vue.d.ts +2 -2
  168. package/src/components/buttons/VcsToolButton.vue +1 -1
  169. package/src/components/buttons/VcsToolButton.vue.d.ts +4 -4
  170. package/src/components/composables.d.ts +7 -0
  171. package/src/components/composables.js +35 -1
  172. package/src/components/extent/VcsExtentEditor.vue +1 -1
  173. package/src/components/flight/VcsFlightAnchorsComponent.vue +63 -36
  174. package/src/components/flight/VcsFlightComponent.vue +16 -21
  175. package/src/components/flight/VcsFlightPlayer.vue +27 -5
  176. package/src/components/form-inputs-controls/VcsCheckbox.vue +19 -11
  177. package/src/components/form-inputs-controls/VcsCheckbox.vue.d.ts +1 -0
  178. package/src/components/form-inputs-controls/VcsChipArrayInput.vue +1 -1
  179. package/src/components/form-inputs-controls/VcsCoordinate.vue +13 -1
  180. package/src/components/form-inputs-controls/VcsCoordinate.vue.d.ts +5 -2
  181. package/src/components/form-inputs-controls/VcsDatePicker.vue +34 -60
  182. package/src/components/form-inputs-controls/VcsDatePicker.vue.d.ts +2 -64
  183. package/src/components/form-inputs-controls/VcsFileInput.vue +18 -19
  184. package/src/components/form-inputs-controls/VcsFileInput.vue.d.ts +1 -0
  185. package/src/components/form-inputs-controls/VcsLabel.vue +31 -1
  186. package/src/components/form-inputs-controls/VcsLabel.vue.d.ts +21 -1
  187. package/src/components/form-inputs-controls/VcsRadio.vue +19 -5
  188. package/src/components/form-inputs-controls/VcsRadio.vue.d.ts +1 -0
  189. package/src/components/form-inputs-controls/VcsSelect.vue +44 -41
  190. package/src/components/form-inputs-controls/VcsSelect.vue.d.ts +7 -4
  191. package/src/components/form-inputs-controls/VcsSlider.vue +49 -10
  192. package/src/components/form-inputs-controls/VcsSlider.vue.d.ts +28 -2
  193. package/src/components/form-inputs-controls/VcsTextArea.vue +54 -35
  194. package/src/components/form-inputs-controls/VcsTextArea.vue.d.ts +1 -0
  195. package/src/components/form-inputs-controls/VcsTextField.vue +21 -14
  196. package/src/components/form-inputs-controls/VcsTextField.vue.d.ts +1 -0
  197. package/src/components/form-inputs-controls/VcsWizard.vue +89 -112
  198. package/src/components/form-inputs-controls/VcsWizard.vue.d.ts +3 -13
  199. package/src/components/form-inputs-controls/VcsWizardStep.vue +75 -57
  200. package/src/components/form-inputs-controls/VcsWizardStep.vue.d.ts +24 -11
  201. package/src/components/form-inputs-controls/vcsTextField.scss +13 -8
  202. package/src/components/form-output/VcsFormattedNumber.vue +40 -10
  203. package/src/components/form-output/VcsFormattedNumber.vue.d.ts +27 -0
  204. package/src/components/form-output/VcsMarkdown.vue +53 -0
  205. package/src/{application/VcsCustomScreen.vue.d.ts → components/form-output/VcsMarkdown.vue.d.ts} +6 -5
  206. package/src/components/lists/VcsActionList.vue +50 -34
  207. package/src/components/lists/VcsActionList.vue.d.ts +3 -1
  208. package/src/components/lists/VcsList.vue +82 -158
  209. package/src/components/lists/VcsList.vue.d.ts +7 -14
  210. package/src/components/lists/VcsListItem.vue +184 -0
  211. package/src/components/lists/VcsListItem.vue.d.ts +27 -0
  212. package/src/components/lists/VcsTreeviewLeaf.vue +1 -1
  213. package/src/components/modelHelper.d.ts +11 -0
  214. package/src/components/modelHelper.js +42 -2
  215. package/src/components/section/VcsExpansionPanel.vue +101 -0
  216. package/src/components/section/VcsExpansionPanel.vue.d.ts +19 -0
  217. package/src/components/style/MenuWrapper.vue +24 -26
  218. package/src/components/style/MenuWrapper.vue.d.ts +4 -4
  219. package/src/components/style/VcsFillMenu.vue +9 -16
  220. package/src/components/style/VcsFillMenu.vue.d.ts +0 -18
  221. package/src/components/style/VcsFillSelector.vue +13 -16
  222. package/src/components/style/VcsImageMenu.vue +8 -25
  223. package/src/components/style/VcsImageMenu.vue.d.ts +0 -27
  224. package/src/components/style/VcsImageSelector.vue +102 -167
  225. package/src/components/style/VcsImageSelector.vue.d.ts +15 -15
  226. package/src/components/style/VcsStrokeMenu.vue +8 -15
  227. package/src/components/style/VcsStrokeMenu.vue.d.ts +0 -18
  228. package/src/components/style/VcsStrokeSelector.vue +11 -18
  229. package/src/components/style/VcsTextMenu.vue +9 -12
  230. package/src/components/style/VcsTextMenu.vue.d.ts +0 -9
  231. package/src/components/style/VcsTextSelector.vue +79 -95
  232. package/src/components/style/VcsTextSelector.vue.d.ts +20 -22
  233. package/src/components/style/VcsVectorStyleComponent.vue +7 -18
  234. package/src/components/style/VcsVectorStyleComponent.vue.d.ts +1 -1
  235. package/src/components/style/composables.d.ts +0 -14
  236. package/src/components/style/composables.js +0 -49
  237. package/src/components/vector-properties/VcsFeatureEditingWindow.vue +53 -12
  238. package/src/components/vector-properties/VcsFeatureEditingWindow.vue.d.ts +3 -3
  239. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +475 -586
  240. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue.d.ts +193 -22
  241. package/src/components/viewpoint/VcsViewpointComponent.vue +21 -8
  242. package/src/components/viewpoint/VcsViewpointEditor.vue +1 -0
  243. package/src/contentTree/contentTreeItem.d.ts +2 -2
  244. package/src/contentTree/contentTreeItem.js +7 -7
  245. package/src/featureInfo/featureInfo.js +8 -10
  246. package/src/init.d.ts +5 -38
  247. package/src/init.js +19 -18
  248. package/src/legend/StyleLegendItem.vue +4 -9
  249. package/src/legend/VcsLegend.vue +28 -54
  250. package/src/manager/buttonManager.js +4 -4
  251. package/src/manager/collectionManager/CollectionComponent.vue +17 -42
  252. package/src/manager/collectionManager/CollectionComponent.vue.d.ts +4 -2
  253. package/src/manager/collectionManager/CollectionComponentContent.vue +7 -6
  254. package/src/manager/collectionManager/CollectionComponentContent.vue.d.ts +3 -1
  255. package/src/manager/collectionManager/CollectionComponentList.vue +10 -8
  256. package/src/manager/collectionManager/CollectionComponentList.vue.d.ts +4 -2
  257. package/src/manager/collectionManager/CollectionComponentProvider.vue +1 -1
  258. package/src/manager/collectionManager/CollectionComponentStandalone.vue +3 -2
  259. package/src/manager/collectionManager/CollectionManager.vue +1 -1
  260. package/src/manager/collectionManager/collectionComponentClass.js +6 -9
  261. package/src/manager/collectionManager/collectionManager.js +10 -10
  262. package/src/manager/collectionManager/editorCollectionComponentClass.js +4 -4
  263. package/src/manager/contextMenu/contextMenuManager.js +2 -2
  264. package/src/manager/navbarManager.js +2 -2
  265. package/src/manager/panel/panelManager.js +3 -3
  266. package/src/manager/toolbox/toolboxManager.js +10 -10
  267. package/src/manager/window/windowManager.d.ts +6 -6
  268. package/src/manager/window/windowManager.js +6 -6
  269. package/src/navigation/MapNavigation.vue +6 -3
  270. package/src/navigation/OrientationToolsButton.vue +39 -26
  271. package/src/navigation/OrientationToolsButton.vue.d.ts +5 -1
  272. package/src/navigation/TiltSlider.vue +83 -88
  273. package/src/navigation/TiltSlider.vue.d.ts +10 -7
  274. package/src/navigation/VcsCompass.vue +17 -11
  275. package/src/navigation/VcsCompass.vue.d.ts +2 -0
  276. package/src/search/search.js +2 -2
  277. package/src/siteConfig.js +1 -1
  278. package/src/state.js +4 -4
  279. package/src/styles/_typography.scss +1 -0
  280. package/src/vcsUiApp.d.ts +24 -26
  281. package/src/vcsUiApp.js +11 -4
  282. package/src/vuePlugins/i18n.js +7 -0
  283. package/src/vuePlugins/vuetify.d.ts +2 -0
  284. package/src/vuePlugins/vuetify.js +15 -0
  285. package/dist/assets/@mdi/font/css/materialdesignicons.css.map +0 -16
  286. package/dist/assets/@mdi/font/css/materialdesignicons.min.e3f476.css +0 -3
  287. package/dist/assets/cesium/Workers/chunk-DUHWWBQQ.js +0 -3273
  288. package/dist/assets/cesium/Workers/chunk-QJ3DFBH3.js +0 -73
  289. package/dist/assets/index-ca7EmZ3d.js +0 -1
  290. package/dist/assets/ui.715986.css +0 -1
  291. package/public/assets/@mdi/font/css/materialdesignicons.css.map +0 -16
  292. package/src/application/VcsCustomScreen.vue +0 -45
  293. package/src/components/vector-properties/composables.d.ts +0 -33
  294. package/src/components/vector-properties/composables.js +0 -100
  295. package/dist/assets/{favicon-128.4c4ce5.png → favicon-128-4c4ce5df.png} +0 -0
  296. package/dist/assets/{favicon-180.5b99c0.png → favicon-180-4c4ce5df.png} +0 -0
  297. package/dist/assets/{favicon-192.0e205e.png → favicon-192-4c4ce5df.png} +0 -0
  298. package/dist/assets/{favicon-32.6b9add.png → favicon-32-4c4ce5df.png} +0 -0
  299. package/dist/assets/{favicon.d5ec97.svg → favicon-4c4ce5df.svg} +0 -0
  300. package/dist/assets/font/{TitilliumWeb-Regular.9ca076.woff2 → TitilliumWeb-Regular-9ca076be.woff2} +0 -0
  301. package/dist/assets/style/{icon-marker.70960f.png → icon-marker-70960f05.png} +0 -0
  302. package/dist/assets/style/{icon-marker-blue.534e37.png → icon-marker-blue-534e374b.png} +0 -0
  303. package/dist/assets/style/{icon-marker-green.0b6a92.png → icon-marker-green-0b6a92bc.png} +0 -0
  304. package/dist/assets/style/{icon-marker-o.036477.png → icon-marker-o-036477fa.png} +0 -0
  305. package/dist/assets/style/{icon-marker-o-blue.7b6d62.png → icon-marker-o-blue-7b6d6279.png} +0 -0
  306. package/dist/assets/style/{icon-marker-o-green.c863c0.png → icon-marker-o-green-c863c0fa.png} +0 -0
  307. package/dist/assets/style/{icon-marker-o-red.93ff58.png → icon-marker-o-red-93ff58df.png} +0 -0
  308. package/dist/assets/style/{icon-marker-red.313d03.png → icon-marker-red-313d03e8.png} +0 -0
  309. package/dist/assets/style/{icon-pin.b7ce77.png → icon-pin-b7ce771e.png} +0 -0
  310. package/dist/assets/style/{icon-pin-blue.7be369.png → icon-pin-blue-7be369a3.png} +0 -0
  311. package/dist/assets/style/{icon-pin-green.cbb935.png → icon-pin-green-cbb935fe.png} +0 -0
  312. package/dist/assets/style/{icon-pin-red.3f25b2.png → icon-pin-red-3f25b245.png} +0 -0
  313. package/dist/assets/{vue.0f2c53.js → vue-03b265aa.js} +0 -0
  314. package/public/assets/{favicon-128.png → favicon-128-4c4ce5df.png} +0 -0
  315. package/public/assets/{favicon-180.png → favicon-180-4c4ce5df.png} +0 -0
  316. package/public/assets/{favicon-192.png → favicon-192-4c4ce5df.png} +0 -0
  317. package/public/assets/{favicon-32.png → favicon-32-4c4ce5df.png} +0 -0
  318. package/public/assets/{favicon.svg → favicon-4c4ce5df.svg} +0 -0
  319. package/src/components/{form-inputs-controls → section}/VcsFormSection.vue +0 -0
  320. package/src/components/{form-inputs-controls → section}/VcsFormSection.vue.d.ts +1 -1
@@ -6,137 +6,134 @@
6
6
  :header-actions="headerActions"
7
7
  >
8
8
  <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>
9
+ <template v-if="show3DProperties">
10
+ <v-row v-if="visibleProperties.has('altitudeMode')" no-gutters>
11
+ <v-col>
12
+ <VcsLabel html-for="vp-altitude-mode">{{
13
+ $t('components.vectorProperties.altitudeMode')
14
+ }}</VcsLabel>
15
+ </v-col>
16
+ <v-col>
17
+ <VcsSelect
18
+ id="vp-altitude-mode"
19
+ :items="availableAltitudeModes"
20
+ v-model="localValue.altitudeMode"
21
+ />
22
+ </v-col>
23
+ </v-row>
24
+ <v-row
25
+ v-if="
26
+ visibleProperties.has('heightAboveGround') &&
27
+ localValue.altitudeMode === 'relativeToGround'
28
+ "
29
+ no-gutters
30
+ >
31
+ <v-col>
32
+ <VcsLabel html-for="vp-height-above-ground">{{
33
+ $t('components.vectorProperties.heightAboveGround')
34
+ }}</VcsLabel>
35
+ </v-col>
36
+ <v-col>
37
+ <VcsTextField
38
+ id="vp-height-above-ground"
39
+ v-model.number="localValue.heightAboveGround"
40
+ :hide-spin-buttons="true"
41
+ type="number"
42
+ unit="m"
43
+ placeholder="0"
44
+ />
45
+ </v-col>
46
+ </v-row>
47
+ <v-row v-if="visibleProperties.has('groundLevel')" no-gutters>
48
+ <v-col>
49
+ <VcsLabel html-for="vp-ground-level">{{
50
+ $t('components.vectorProperties.groundLevel')
51
+ }}</VcsLabel>
52
+ </v-col>
53
+ <v-col>
54
+ <VcsTextField
55
+ id="vp-ground-level"
56
+ v-model.number="localValue.groundLevel"
57
+ :hide-spin-buttons="true"
58
+ type="number"
59
+ unit="m"
60
+ placeholder="0"
61
+ clearable
62
+ />
63
+ </v-col>
64
+ </v-row>
65
+ <template v-if="visibleProperties.has('scaleByDistance')">
83
66
  <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
- ]"
67
+ <v-col cols="6">
68
+ <VcsCheckbox
69
+ label="components.vectorProperties.scaleByDistance"
70
+ v-model="hasScaleByDistance"
102
71
  />
103
72
  </v-col>
104
73
  </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>
74
+ <template v-if="hasScaleByDistance">
75
+ <v-row no-gutters class="pb-2">
76
+ <v-col
77
+ v-for="(_, index) in localValue.scaleByDistance"
78
+ :key="index"
79
+ >
80
+ <VcsTextField
81
+ v-model="localValue.scaleByDistance[index]"
82
+ :hide-spin-buttons="true"
83
+ type="number"
84
+ :unit="index % 2 === 0 ? 'm' : ''"
85
+ :disabled="!localValue.scaleByDistance"
86
+ :placeholder="String(scaleByDistanceDefault[index])"
87
+ :rules="[
88
+ (v) =>
89
+ !hasScaleByDistance ||
90
+ !isNaN(v) ||
91
+ 'components.validation.required',
92
+ ]"
93
+ />
94
+ </v-col>
95
+ </v-row>
96
+ </template>
97
+ </template>
98
+ <template v-if="visibleProperties.has('eyeOffset')">
99
+ <v-row no-gutters>
100
+ <v-col>
101
+ <VcsCheckbox
102
+ label="components.vectorProperties.eyeOffset"
103
+ v-model="hasEyeOffset"
104
+ />
105
+ </v-col>
106
+ </v-row>
107
+ <template v-if="hasEyeOffset">
108
+ <v-row no-gutters class="pb-2">
109
+ <v-col v-for="(_, index) in localValue.eyeOffset" :key="index">
110
+ <VcsTextField
111
+ v-model.number="localValue.eyeOffset[index]"
112
+ unit="m"
113
+ :hide-spin-buttons="true"
114
+ type="number"
115
+ :disabled="!hasEyeOffset"
116
+ :prefix="dimensionsUpperCase[index]"
117
+ :rules="[
118
+ (v) =>
119
+ !hasEyeOffset ||
120
+ !isNaN(v) ||
121
+ 'components.validation.required',
122
+ ]"
123
+ :placeholder="String(eyeOffsetDefault[index])"
124
+ />
125
+ </v-col>
126
+ </v-row>
127
+ </template>
128
+ </template>
129
+ </template>
135
130
  <v-row v-if="visibleProperties.has('allowPicking')" no-gutters>
136
131
  <v-col>
137
132
  <VcsCheckbox
138
133
  label="components.vectorProperties.allowPicking"
139
- v-model="allowPicking"
134
+ v-model="localValue.allowPicking"
135
+ :true-value="true"
136
+ :false-value="false"
140
137
  />
141
138
  </v-col>
142
139
  </v-row>
@@ -145,336 +142,329 @@
145
142
  no-gutters
146
143
  >
147
144
  <v-col>
148
- <VcsLabel html-for="vp-classification-type" :dense="true">
145
+ <VcsLabel html-for="vp-classification-type">
149
146
  {{ $t('components.vectorProperties.classificationType') }}
150
147
  </VcsLabel>
151
148
  </v-col>
152
149
  <v-col>
153
150
  <VcsSelect
154
151
  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
- ]"
152
+ :items="availableClassificationTypes"
164
153
  v-model="classificationType"
165
- dense
166
154
  />
167
155
  </v-col>
168
156
  </v-row>
169
157
  </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
158
+ <template v-if="show3DProperties">
159
+ <v-divider
186
160
  v-if="
187
- visibleProperties.has('storeysAboveGround') ||
188
- visibleProperties.has('storeyHeightsAboveGround')
161
+ showDividers &&
162
+ [
163
+ 'extrudedHeight',
164
+ 'skirt',
165
+ 'storeysAboveGround',
166
+ 'storeysBelowGround',
167
+ 'storeyHeightsAboveGround',
168
+ 'storeyHeightsBelowGround',
169
+ ].some((prop) => visibleProperties.has(prop))
189
170
  "
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
171
+ />
172
+ <v-container class="px-1 py-0">
173
+ <v-row
174
+ v-if="
175
+ visibleProperties.has('storeysAboveGround') ||
176
+ visibleProperties.has('storeyHeightsAboveGround')
177
+ "
178
+ no-gutters
179
+ >
180
+ <v-col>
181
+ <VcsLabel>{{
182
+ $t('components.vectorProperties.aboveGround')
183
+ }}</VcsLabel>
184
+ </v-col>
185
+ </v-row>
186
+ <v-row v-if="visibleProperties.has('extrudedHeight')" no-gutters>
187
+ <v-col>
188
+ <VcsLabel
189
+ html-for="vp-extruded-height"
190
+ :class="{
191
+ 'px-4':
192
+ visibleProperties.has('storeysAboveGround') ||
193
+ visibleProperties.has('storeyHeightsAboveGround'),
194
+ }"
195
+ >{{ $t('components.vectorProperties.extrudedHeight') }}</VcsLabel
196
+ >
197
+ </v-col>
198
+ <v-col>
199
+ <VcsTextField
200
+ id="vp-extruded-height"
201
+ v-model.number="localValue.extrudedHeight"
202
+ :hide-spin-buttons="true"
203
+ type="number"
204
+ unit="m"
205
+ :placeholder="'extrudedHeight' in localValue ? '0' : ''"
206
+ clearable
207
+ :rules="[
208
+ (v) => v >= 0 || isNaN(v) || 'components.validation.notValid',
209
+ ]"
210
+ />
211
+ </v-col>
212
+ </v-row>
213
+ <v-row v-if="visibleProperties.has('storeysAboveGround')" no-gutters>
214
+ <v-col>
215
+ <VcsLabel html-for="vp-storeys-above" class="px-4">{{
216
+ $t('components.vectorProperties.storeys')
217
+ }}</VcsLabel>
218
+ </v-col>
219
+ <v-col>
220
+ <VcsTextField
221
+ id="vp-storeys-above"
222
+ v-model.number="localValue.storeysAboveGround"
223
+ :hide-spin-buttons="true"
224
+ type="number"
225
+ :placeholder="'storeysAboveGround' in localValue ? '0' : ''"
226
+ clearable
227
+ :rules="[
228
+ (v) => v >= 0 || isNaN(v) || 'components.validation.notValid',
229
+ ]"
230
+ />
231
+ </v-col>
232
+ </v-row>
233
+ <v-row
234
+ v-if="visibleProperties.has('storeyHeightsAboveGround')"
235
+ no-gutters
236
+ >
237
+ <v-col>
238
+ <VcsLabel :html-for="'vp-storey-heights-above'" class="px-4">{{
239
+ $t('components.vectorProperties.storeyHeights')
240
+ }}</VcsLabel>
241
+ </v-col>
242
+ <v-col>
243
+ <VcsChipArrayInput
244
+ id="vp-storey-heights-above"
245
+ column
246
+ type="number"
247
+ v-model="storeyHeights.storeyHeightsAboveGround.value"
248
+ placeholder="3"
249
+ :rules="[(v) => !(v <= 0) || 'components.validation.notValid']"
250
+ />
251
+ </v-col>
252
+ </v-row>
253
+ <v-row
254
+ v-if="
255
+ visibleProperties.has('storeysBelowGround') ||
256
+ visibleProperties.has('storeyHeightsBelowGround')
257
+ "
258
+ no-gutters
259
+ >
260
+ <v-col>
261
+ <VcsLabel>{{
262
+ $t('components.vectorProperties.belowGround')
263
+ }}</VcsLabel>
264
+ </v-col>
265
+ </v-row>
266
+ <v-row v-if="visibleProperties.has('skirt')" no-gutters>
267
+ <v-col>
268
+ <VcsLabel
269
+ html-for="vp-skirt"
270
+ :class="{
271
+ 'px-4':
272
+ visibleProperties.has('storeysBelowGround') ||
273
+ visibleProperties.has('storeyHeightsBelowGround'),
274
+ }"
275
+ >{{ $t('components.vectorProperties.skirt') }}</VcsLabel
276
+ >
277
+ </v-col>
278
+ <v-col>
279
+ <VcsTextField
280
+ id="vp-skirt"
281
+ v-model.number="localValue.skirt"
282
+ :hide-spin-buttons="true"
283
+ type="number"
284
+ unit="m"
285
+ :placeholder="'skirt' in localValue ? '0' : ''"
286
+ clearable
287
+ :rules="[
288
+ (v) => v >= 0 || isNaN(v) || 'components.validation.notValid',
289
+ ]"
290
+ />
291
+ </v-col>
292
+ </v-row>
293
+ <v-row v-if="visibleProperties.has('storeysBelowGround')" no-gutters>
294
+ <v-col>
295
+ <VcsLabel html-for="vp-storeys-below" class="px-4">{{
296
+ $t('components.vectorProperties.storeys')
297
+ }}</VcsLabel>
298
+ </v-col>
299
+ <v-col>
300
+ <VcsTextField
301
+ id="vp-storeys-below"
302
+ v-model.number="localValue.storeysBelowGround"
303
+ :hide-spin-buttons="true"
304
+ type="number"
305
+ :placeholder="'storeysBelowGround' in localValue ? '0' : ''"
306
+ clearable
307
+ :rules="[
308
+ (v) => v >= 0 || isNaN(v) || 'components.validation.notValid',
309
+ ]"
310
+ />
311
+ </v-col>
312
+ </v-row>
313
+ <v-row
314
+ v-if="visibleProperties.has('storeyHeightsBelowGround')"
315
+ no-gutters
316
+ >
317
+ <v-col>
318
+ <VcsLabel :html-for="'vp-storey-heights-below'" class="px-4">{{
319
+ $t('components.vectorProperties.storeyHeights')
320
+ }}</VcsLabel>
321
+ </v-col>
322
+ <v-col>
323
+ <VcsChipArrayInput
324
+ :id="'vp-storey-heights-below'"
325
+ column
326
+ type="number"
327
+ v-model="storeyHeights.storeyHeightsBelowGround.value"
328
+ placeholder="3"
329
+ />
330
+ </v-col>
331
+ </v-row>
332
+ </v-container>
333
+ <v-divider
267
334
  v-if="
268
- visibleProperties.has('storeysBelowGround') ||
269
- visibleProperties.has('storeyHeightsBelowGround')
335
+ showDividers &&
336
+ [
337
+ 'modelUrl',
338
+ 'modelScaleX',
339
+ 'modelScaleY',
340
+ 'modelScaleZ',
341
+ 'modelHeading',
342
+ 'modelPitch',
343
+ 'modelRoll',
344
+ 'baseUrl',
345
+ ].some((prop) => visibleProperties.has(prop))
270
346
  "
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>
347
+ />
348
+ <v-container class="px-1 py-0">
349
+ <v-row v-if="visibleProperties.has('modelUrl')" no-gutters>
350
+ <v-col>
351
+ <VcsLabel html-for="vp-model-url">
352
+ {{ $t('components.vectorProperties.modelUrl') }}
353
+ </VcsLabel>
354
+ </v-col>
355
+ <v-col>
356
+ <VcsTextField
357
+ id="vp-model-url"
358
+ v-model="localValue.modelUrl"
359
+ clearable
360
+ :placeholder="'modelUrl' in localValue ? 'example.glb' : ''"
361
+ />
362
+ </v-col>
363
+ </v-row>
364
+ <template v-if="Object.keys(modelScale).length">
365
+ <v-row no-gutters>
366
+ <v-col cols="6">
367
+ <VcsLabel>{{
368
+ $t('components.vectorProperties.modelScale')
369
+ }}</VcsLabel>
370
+ </v-col>
371
+ </v-row>
372
+ <v-row no-gutters class="pb-2">
373
+ <v-col v-for="(dimension, key) in modelScale" :key="key">
374
+ <VcsTextField
375
+ v-model.number="dimension.value"
376
+ :hide-spin-buttons="true"
377
+ type="number"
378
+ :placeholder="`modelScale${key}` in localValue ? '1' : ''"
379
+ :prefix="key"
380
+ :rules="[(v) => v > 0 || 'components.validation.notValid']"
381
+ />
382
+ </v-col>
383
+ </v-row>
384
+ </template>
385
+ <v-row v-if="visibleProperties.has('modelHeading')" no-gutters>
386
+ <v-col cols="6">
387
+ <VcsLabel>{{
388
+ $t('components.vectorProperties.modelHeading')
389
+ }}</VcsLabel>
390
+ </v-col>
391
+ <v-col>
392
+ <VcsTextField
393
+ v-model.number="localValue.modelHeading"
394
+ :hide-spin-buttons="true"
395
+ type="number"
396
+ :placeholder="'modelHeading' in localValue ? '0' : ''"
397
+ unit="°"
398
+ clearable
399
+ />
400
+ </v-col>
401
+ </v-row>
402
+ <v-row v-if="visibleProperties.has('modelPitch')" no-gutters>
403
+ <v-col cols="6">
404
+ <VcsLabel>{{
405
+ $t('components.vectorProperties.modelPitch')
406
+ }}</VcsLabel>
407
+ </v-col>
408
+ <v-col>
409
+ <VcsTextField
410
+ v-model.number="localValue.modelPitch"
411
+ :hide-spin-buttons="true"
412
+ type="number"
413
+ :placeholder="'modelPitch' in localValue ? '0' : ''"
414
+ unit="°"
415
+ clearable
416
+ />
417
+ </v-col>
418
+ </v-row>
419
+ <v-row v-if="visibleProperties.has('modelRoll')" no-gutters>
420
+ <v-col cols="6">
421
+ <VcsLabel>{{
422
+ $t('components.vectorProperties.modelRoll')
423
+ }}</VcsLabel>
424
+ </v-col>
425
+ <v-col>
426
+ <VcsTextField
427
+ v-model.number="localValue.modelRoll"
428
+ :hide-spin-buttons="true"
429
+ type="number"
430
+ :placeholder="'modelRoll' in localValue ? '0' : ''"
431
+ unit="°"
432
+ clearable
433
+ />
434
+ </v-col>
435
+ </v-row>
436
+ <v-row v-if="visibleProperties.has('baseUrl')" no-gutters>
437
+ <v-col>
438
+ <VcsLabel html-for="vp-base-url">{{
439
+ $t('components.vectorProperties.baseUrl')
440
+ }}</VcsLabel>
441
+ </v-col>
442
+ <v-col>
443
+ <VcsTextField
444
+ id="vp-base-url"
445
+ clearable
446
+ v-model="localValue.baseUrl"
447
+ :placeholder="'baseUrl' in localValue ? 'path/to/files/' : ''"
448
+ />
449
+ </v-col>
450
+ </v-row>
451
+ </v-container>
452
+ </template>
463
453
  </VcsFormSection>
464
454
  </template>
465
455
  <script>
466
456
  import { computed } from 'vue';
467
457
  import { VContainer, VRow, VCol, VDivider } from 'vuetify/components';
468
- import VcsFormSection from '../form-inputs-controls/VcsFormSection.vue';
458
+ import { VectorProperties } from '@vcmap/core';
459
+ import {
460
+ useProxiedComplexModel,
461
+ useModelHasProperty,
462
+ } from '../modelHelper.js';
463
+ import VcsFormSection from '../section/VcsFormSection.vue';
469
464
  import VcsLabel from '../form-inputs-controls/VcsLabel.vue';
470
465
  import VcsTextField from '../form-inputs-controls/VcsTextField.vue';
471
466
  import VcsSelect from '../form-inputs-controls/VcsSelect.vue';
472
467
  import VcsCheckbox from '../form-inputs-controls/VcsCheckbox.vue';
473
- import {
474
- usePrimitiveProperty,
475
- useArrayProperty,
476
- useHasProperty,
477
- } from './composables.js';
478
468
  import VcsChipArrayInput from '../form-inputs-controls/VcsChipArrayInput.vue';
479
469
 
480
470
  export const genericVectorProperties = [
@@ -533,6 +523,7 @@
533
523
  */
534
524
  export default {
535
525
  name: 'VcsVectorPropertiesComponent',
526
+ methods: { computed },
536
527
  components: {
537
528
  VcsFormSection,
538
529
  VcsLabel,
@@ -548,7 +539,7 @@
548
539
  props: {
549
540
  modelValue: {
550
541
  type: Object,
551
- default: () => {},
542
+ default: () => VectorProperties.getDefaultOptions(),
552
543
  },
553
544
  valueDefault: {
554
545
  type: Object,
@@ -579,162 +570,99 @@
579
570
  default: true,
580
571
  },
581
572
  },
573
+ emits: ['update:modelValue'],
582
574
  setup(props, { emit }) {
575
+ /**
576
+ * @type {import("vue").Ref<import("vue").UnwrapRef<import("@vcmap/core").VectorProperties>>}
577
+ */
578
+ const localValue = useProxiedComplexModel(props, 'modelValue', emit);
579
+
583
580
  const visibleProperties = computed(() => {
584
581
  return new Set(props.properties);
585
582
  });
586
583
 
587
- const altitudeMode = usePrimitiveProperty(
588
- () => props.modelValue,
589
- 'altitudeMode',
590
- emit,
591
- );
592
-
593
584
  const availableAltitudeModes = computed(() => {
594
585
  const altitudeModes = [
595
586
  {
596
587
  value: 'clampToGround',
597
- text: 'components.vectorProperties.clampToGround',
588
+ title: 'components.vectorProperties.clampToGround',
598
589
  },
599
590
  {
600
591
  value: 'absolute',
601
- text: 'components.vectorProperties.absolute',
592
+ title: 'components.vectorProperties.absolute',
602
593
  },
603
594
  ];
604
595
 
605
596
  if (visibleProperties.value.has('heightAboveGround')) {
606
597
  altitudeModes.push({
607
598
  value: 'relativeToGround',
608
- text: 'components.vectorProperties.relativeToGround',
599
+ title: 'components.vectorProperties.relativeToGround',
609
600
  });
610
601
  }
611
602
 
612
603
  return altitudeModes;
613
604
  });
614
605
 
615
- const heightAboveGround = usePrimitiveProperty(
616
- () => props.modelValue,
617
- 'heightAboveGround',
618
- emit,
619
- );
620
- const allowPicking = computed({
621
- get() {
622
- return props.modelValue.allowPicking;
623
- },
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
- }
606
+ const availableClassificationTypes = [
607
+ { value: 'none', title: 'components.vectorProperties.none' },
608
+ { value: 'both', title: 'components.vectorProperties.both' },
609
+ {
610
+ value: 'cesium3DTile',
611
+ title: 'components.vectorProperties.cesium3DTile',
631
612
  },
632
- });
613
+ { value: 'terrain', title: 'components.vectorProperties.terrain' },
614
+ ];
615
+
633
616
  const classificationType = computed({
634
617
  get() {
635
- if ('classificationType' in props.modelValue) {
636
- return props.modelValue.classificationType || 'none';
618
+ if ('classificationType' in localValue.value) {
619
+ return localValue.value.classificationType || 'none';
637
620
  } else {
638
621
  return undefined;
639
622
  }
640
623
  },
641
624
  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);
625
+ const v = value === 'none' ? undefined : value;
626
+ if (localValue.value.classificationType !== v) {
627
+ localValue.value.classificationType = v;
649
628
  }
650
629
  },
651
630
  });
652
- const scaleByDistance = useArrayProperty(
653
- () => props.modelValue,
654
- 'scaleByDistance',
655
- emit,
656
- 4,
657
- );
658
- const hasScaleByDistance = useHasProperty(
659
- () => props.modelValue,
631
+
632
+ const hasScaleByDistance = useModelHasProperty(
633
+ localValue,
660
634
  'scaleByDistance',
661
- emit,
662
635
  scaleByDistanceDefault,
663
636
  );
664
637
 
665
- const eyeOffset = useArrayProperty(
666
- () => props.modelValue,
638
+ const hasEyeOffset = useModelHasProperty(
639
+ localValue,
667
640
  'eyeOffset',
668
- emit,
669
- 3,
670
- );
671
- const hasEyeOffset = useHasProperty(
672
- () => props.modelValue,
673
- 'eyeOffset',
674
- emit,
675
641
  eyeOffsetDefault,
676
642
  );
677
643
 
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
644
  const storeyHeights = computed(() => {
701
645
  return ['storeyHeightsAboveGround', 'storeyHeightsBelowGround']
702
646
  .filter((key) => visibleProperties.value.has(key))
703
647
  .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
- };
648
+ acc[key] = computed({
649
+ get() {
650
+ if (Array.isArray(localValue.value[key])) {
651
+ return localValue.value[key];
652
+ } else if (localValue.value[key] > 0) {
653
+ return [localValue.value[key]];
654
+ } else {
655
+ return [];
656
+ }
657
+ },
658
+ set(value) {
659
+ localValue.value[key] = value;
660
+ },
661
+ });
662
+ return acc;
729
663
  }, {});
730
664
  });
731
665
 
732
- const modelUrl = usePrimitiveProperty(
733
- () => props.modelValue,
734
- 'modelUrl',
735
- emit,
736
- );
737
-
738
666
  const modelScale = computed(() => {
739
667
  return dimensionsUpperCase
740
668
  .filter((dimension) =>
@@ -743,43 +671,18 @@
743
671
  .reduce((acc, dimension) => {
744
672
  return {
745
673
  ...acc,
746
- [dimension]: usePrimitiveProperty(
747
- () => props.modelValue,
748
- `modelScale${dimension}`,
749
- emit,
750
- ),
674
+ [dimension]: computed({
675
+ get() {
676
+ return localValue.value[`modelScale${dimension}`];
677
+ },
678
+ set(value) {
679
+ localValue.value[`modelScale${dimension}`] = value;
680
+ },
681
+ }),
751
682
  };
752
683
  }, {});
753
684
  });
754
685
 
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
686
  const headerActions = computed(() =>
784
687
  props.showReset
785
688
  ? [
@@ -788,7 +691,7 @@
788
691
  title: 'components.style.reset',
789
692
  icon: '$vcsReturn',
790
693
  callback: () => {
791
- reset();
694
+ localValue.value = props.valueDefault;
792
695
  },
793
696
  },
794
697
  ]
@@ -796,32 +699,18 @@
796
699
  );
797
700
 
798
701
  return {
702
+ localValue,
799
703
  headerActions,
800
704
  visibleProperties,
801
- altitudeMode,
802
705
  availableAltitudeModes,
803
- heightAboveGround,
804
- allowPicking,
706
+ availableClassificationTypes,
805
707
  classificationType,
806
- scaleByDistance,
807
708
  hasScaleByDistance,
808
709
  scaleByDistanceDefault,
809
- eyeOffset,
810
710
  hasEyeOffset,
811
711
  eyeOffsetDefault,
812
- groundLevel,
813
- extrudedHeight,
814
- skirt,
815
- storeysAboveGround,
816
- storeysBelowGround,
817
712
  storeyHeights,
818
- modelUrl,
819
713
  modelScale,
820
- modelHeading,
821
- modelPitch,
822
- modelRoll,
823
- baseUrl,
824
- reset,
825
714
  dimensionsUpperCase,
826
715
  };
827
716
  },