@vcmap/ui 6.3.0-rc.5 → 6.3.0

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 (143) hide show
  1. package/config/base.config.json +1 -0
  2. package/config/cluster.config.json +9 -2
  3. package/config/dev.config.json +22 -577
  4. package/config/dynamic-layer.config.json +1 -0
  5. package/config/guided-tour.config.json +12 -0
  6. package/config/i3s.config.json +31 -30
  7. package/config/mapbox.config.json +174 -0
  8. package/config/projects.config.json +4 -1
  9. package/config/solar.config.json +1 -0
  10. package/config/theming.config.json +1 -0
  11. package/config/vectorTile.config.json +1 -0
  12. package/config/wms-layers.config.json +716 -0
  13. package/dist/assets/cesium/Workers/{chunk-LJKPRFUK.js → chunk-4OZXCGBJ.js} +1 -1
  14. package/dist/assets/cesium/Workers/{chunk-AMEDKAYK.js → chunk-4RHLCJR2.js} +10 -10
  15. package/dist/assets/cesium/Workers/{chunk-PDKWOUHF.js → chunk-54FRV62W.js} +14 -14
  16. package/dist/assets/cesium/Workers/{chunk-LIFTAXGR.js → chunk-5CNZEOPA.js} +4 -4
  17. package/dist/assets/cesium/Workers/{chunk-GRDHZCD6.js → chunk-5INFB3ST.js} +13 -13
  18. package/dist/assets/cesium/Workers/{chunk-VQYUZREJ.js → chunk-5WF776PO.js} +13 -13
  19. package/dist/assets/cesium/Workers/{chunk-BN6F7MQW.js → chunk-673DKAYZ.js} +9 -9
  20. package/dist/assets/cesium/Workers/{chunk-WLWCBEFY.js → chunk-7XCBLPDB.js} +7 -7
  21. package/dist/assets/cesium/Workers/{chunk-3ZPY2PK4.js → chunk-A67BB5UX.js} +6 -6
  22. package/dist/assets/cesium/Workers/{chunk-VUJ3TQNO.js → chunk-BHUWF3N5.js} +10 -10
  23. package/dist/assets/cesium/Workers/{chunk-7EAUBVJK.js → chunk-BJJTPQZB.js} +2 -2
  24. package/dist/assets/cesium/Workers/{chunk-AH5XCS4U.js → chunk-DHUNXVK2.js} +7 -7
  25. package/dist/assets/cesium/Workers/{chunk-J6TQEGIR.js → chunk-DJ3ZQW5L.js} +1 -1
  26. package/dist/assets/cesium/Workers/{chunk-25GKYUTE.js → chunk-DMAUZK44.js} +6 -6
  27. package/dist/assets/cesium/Workers/{chunk-4PGWOP4B.js → chunk-EGAGTCTF.js} +6 -6
  28. package/dist/assets/cesium/Workers/{chunk-M23OMI5J.js → chunk-F4TYWTLA.js} +2 -2
  29. package/dist/assets/cesium/Workers/{chunk-Y73YBNAE.js → chunk-F4WHV7BO.js} +7 -7
  30. package/dist/assets/cesium/Workers/{chunk-5WJMERAN.js → chunk-FLGO2ZQM.js} +2 -2
  31. package/dist/assets/cesium/Workers/{chunk-GEEF6IDX.js → chunk-GKC6HHRY.js} +4 -4
  32. package/dist/assets/cesium/Workers/{chunk-VE7FK6UD.js → chunk-GULESHYV.js} +5 -5
  33. package/dist/assets/cesium/Workers/{chunk-F2G2I7PT.js → chunk-H2KIQCJW.js} +2 -2
  34. package/dist/assets/cesium/Workers/{chunk-BIO5WQ45.js → chunk-H7MDD63F.js} +5 -5
  35. package/dist/assets/cesium/Workers/{chunk-N5MOVBVQ.js → chunk-HCHTH3IB.js} +7 -7
  36. package/dist/assets/cesium/Workers/{chunk-FH6FGFJI.js → chunk-I5ZGV4B2.js} +11 -11
  37. package/dist/assets/cesium/Workers/{chunk-HOOXVR67.js → chunk-J66MKJOE.js} +7 -7
  38. package/dist/assets/cesium/Workers/{chunk-BVGZUFZD.js → chunk-JWBBMXMY.js} +2 -2
  39. package/dist/assets/cesium/Workers/{chunk-WI2ZYGUU.js → chunk-KQZETAD4.js} +7 -7
  40. package/dist/assets/cesium/Workers/{chunk-FRMRYV7K.js → chunk-KULZY3XN.js} +13 -13
  41. package/dist/assets/cesium/Workers/{chunk-YZULEYZE.js → chunk-L7QP6H72.js} +5 -5
  42. package/dist/assets/cesium/Workers/{chunk-YDK3NLYN.js → chunk-MMU6M3F4.js} +6 -6
  43. package/dist/assets/cesium/Workers/{chunk-JRBLIH2L.js → chunk-MYEQIKJN.js} +1 -1
  44. package/dist/assets/cesium/Workers/{chunk-VP7D4KWF.js → chunk-NCBLZFLY.js} +1 -1
  45. package/dist/assets/cesium/Workers/{chunk-X5IAGLZL.js → chunk-O6F3JX5O.js} +15 -15
  46. package/dist/assets/cesium/Workers/{chunk-ZS6GCNNC.js → chunk-OBMU3A6A.js} +12 -12
  47. package/dist/assets/cesium/Workers/{chunk-EZ2SSNRV.js → chunk-OGDIC2F5.js} +17 -17
  48. package/dist/assets/cesium/Workers/{chunk-IOCRO2KQ.js → chunk-PD7IJVPU.js} +6 -6
  49. package/dist/assets/cesium/Workers/{chunk-4ZK2KYL4.js → chunk-PMC3FYPH.js} +2 -2
  50. package/dist/assets/cesium/Workers/{chunk-ASFMJYED.js → chunk-PSCX6XFR.js} +17 -17
  51. package/dist/assets/cesium/Workers/{chunk-WFO5SEFF.js → chunk-QEMZBTFR.js} +4 -4
  52. package/dist/assets/cesium/Workers/{chunk-7HYVKUHW.js → chunk-QKMMP2KM.js} +5 -5
  53. package/dist/assets/cesium/Workers/{chunk-DBI7V7P2.js → chunk-QLQFHFQC.js} +9 -9
  54. package/dist/assets/cesium/Workers/{chunk-DHZDKW7K.js → chunk-QXFWOWFX.js} +5 -5
  55. package/dist/assets/cesium/Workers/{chunk-AOHTVYLZ.js → chunk-R5LP2OED.js} +13 -13
  56. package/dist/assets/cesium/Workers/{chunk-H26IFUMX.js → chunk-RXELAPHQ.js} +6 -6
  57. package/dist/assets/cesium/Workers/{chunk-2YLFEJBO.js → chunk-TLDJYDQA.js} +4 -4
  58. package/dist/assets/cesium/Workers/{chunk-7GYG7GFP.js → chunk-TYFDCGJA.js} +7 -7
  59. package/dist/assets/cesium/Workers/{chunk-377PQSNI.js → chunk-TYWP45EB.js} +7 -7
  60. package/dist/assets/cesium/Workers/{chunk-PW5HRVFO.js → chunk-UFCLCDXI.js} +11 -11
  61. package/dist/assets/cesium/Workers/{chunk-XFGR3WAP.js → chunk-UJWE4G4I.js} +10 -10
  62. package/dist/assets/cesium/Workers/{chunk-EGKAEYOR.js → chunk-XWGO36ZG.js} +1 -1
  63. package/dist/assets/cesium/Workers/{chunk-J3GRKF4N.js → chunk-YEONE7RH.js} +4 -4
  64. package/dist/assets/cesium/Workers/{chunk-CPFEKTJZ.js → chunk-ZHRYASLR.js} +6 -6
  65. package/dist/assets/cesium/Workers/combineGeometry.js +22 -22
  66. package/dist/assets/cesium/Workers/createBoxGeometry.js +16 -16
  67. package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +14 -14
  68. package/dist/assets/cesium/Workers/createCircleGeometry.js +24 -24
  69. package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +17 -17
  70. package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +31 -31
  71. package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +29 -29
  72. package/dist/assets/cesium/Workers/createCorridorGeometry.js +27 -27
  73. package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +26 -26
  74. package/dist/assets/cesium/Workers/createCylinderGeometry.js +18 -18
  75. package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +16 -16
  76. package/dist/assets/cesium/Workers/createEllipseGeometry.js +24 -24
  77. package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +17 -17
  78. package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +17 -17
  79. package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +16 -16
  80. package/dist/assets/cesium/Workers/createFrustumGeometry.js +16 -16
  81. package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +16 -16
  82. package/dist/assets/cesium/Workers/createGeometry.js +22 -22
  83. package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +20 -20
  84. package/dist/assets/cesium/Workers/createPlaneGeometry.js +14 -14
  85. package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +13 -13
  86. package/dist/assets/cesium/Workers/createPolygonGeometry.js +30 -30
  87. package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +28 -28
  88. package/dist/assets/cesium/Workers/createPolylineGeometry.js +23 -23
  89. package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +29 -29
  90. package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +25 -25
  91. package/dist/assets/cesium/Workers/createRectangleGeometry.js +25 -25
  92. package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +18 -18
  93. package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +21 -21
  94. package/dist/assets/cesium/Workers/createSphereGeometry.js +17 -17
  95. package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +16 -16
  96. package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +3 -3
  97. package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +13 -13
  98. package/dist/assets/cesium/Workers/createVectorTileGeometries.js +22 -22
  99. package/dist/assets/cesium/Workers/createVectorTilePoints.js +12 -12
  100. package/dist/assets/cesium/Workers/createVectorTilePolygons.js +20 -20
  101. package/dist/assets/cesium/Workers/createVectorTilePolylines.js +13 -13
  102. package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +20 -20
  103. package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +20 -20
  104. package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +17 -17
  105. package/dist/assets/cesium/Workers/createWallGeometry.js +22 -22
  106. package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +21 -21
  107. package/dist/assets/cesium/Workers/decodeDraco.js +11 -11
  108. package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  109. package/dist/assets/cesium/Workers/decodeI3S.js +10 -10
  110. package/dist/assets/cesium/Workers/transcodeKTX2.js +7 -7
  111. package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -1
  112. package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +20 -20
  113. package/dist/assets/{cesium-2c8fbb1c.js → cesium-48a47447.js} +153974 -153974
  114. package/dist/assets/cesium.js +1 -1
  115. package/dist/assets/{core-c619c3cb.js → core-c1f34d11.js} +23920 -15065
  116. package/dist/assets/core-workers/panoramaImageWorker.js +1 -1
  117. package/dist/assets/core.js +1 -1
  118. package/dist/assets/{ol-ec143a2b.js → ol-8c8fc88f.js} +8907 -9579
  119. package/dist/assets/ol.js +1 -1
  120. package/dist/assets/ui-0e17681d.css +1 -0
  121. package/dist/assets/{ui-1477acda.js → ui-0e17681d.js} +7719 -7945
  122. package/dist/assets/ui.js +1 -1
  123. package/dist/assets/vue.js +1 -1
  124. package/dist/assets/{vuetify-fdf20bf9.js → vuetify-61912396.js} +30 -31
  125. package/dist/assets/vuetify.js +1 -1
  126. package/index.d.ts +2 -0
  127. package/index.js +1 -0
  128. package/package.json +4 -4
  129. package/plugins/@vcmap-show-case/form-inputs-example/src/FormInputsExample.vue +21 -0
  130. package/plugins/package.json +4 -3
  131. package/src/components/form-inputs-controls/VcsLabeledSlider.vue +113 -0
  132. package/src/components/form-inputs-controls/VcsLabeledSlider.vue.d.ts +54 -0
  133. package/src/components/lists/VcsGroupedList.vue +1 -1
  134. package/src/components/viewpoint/VcsViewpointComponent.vue +14 -37
  135. package/src/featureInfo/balloonHelper.js +3 -8
  136. package/src/featureInfo/featureInfo.js +10 -5
  137. package/src/featureInfo/iframeWmsFeatureInfoView.js +17 -4
  138. package/src/manager/window/windowHelper.d.ts +10 -1
  139. package/src/manager/window/windowHelper.js +19 -4
  140. package/dist/assets/ui-1477acda.css +0 -1
  141. /package/dist/assets/core-workers/{panoramaImageWorker.js-d20b3c02.js → panoramaImageWorker.js-d8e953c7.js} +0 -0
  142. /package/dist/assets/{vue-1a3ae885.js → vue-3cd62695.js} +0 -0
  143. /package/dist/assets/{vuetify-fdf20bf9.css → vuetify-61912396.css} +0 -0
package/dist/assets/ui.js CHANGED
@@ -1 +1 @@
1
- export * from "./ui-1477acda.js";
1
+ export * from "./ui-0e17681d.js";
@@ -1 +1 @@
1
- export * from "./vue-1a3ae885.js";
1
+ export * from "./vue-3cd62695.js";
@@ -10,7 +10,7 @@ function loadCss(href) {
10
10
  elem.onerror = reject;
11
11
  document.head.appendChild(elem);
12
12
  });
13
- } await loadCss('./assets/vuetify-fdf20bf9.css');import { watch as Q, onScopeDispose as Ze, effectScope as Zl, shallowRef as K, Fragment as ie, reactive as it, computed as b, watchEffect as Fe, toRefs as Yt, capitalize as Nn, isVNode as Rc, Comment as Nc, unref as ot, warn as ja, getCurrentInstance as Hc, ref as j, provide as De, inject as ye, defineComponent as zc, camelize as Ir, h as Gt, toRaw as Be, createVNode as r, mergeProps as O, onBeforeUnmount as Qe, readonly as Ql, onDeactivated as _r, onActivated as Wc, onMounted as Ye, nextTick as we, TransitionGroup as Jl, Transition as jt, isRef as Tn, toRef as $, onBeforeMount as ra, withDirectives as $e, resolveDirective as gt, vShow as Ct, onUpdated as jc, Text as Uc, resolveDynamicComponent as Yc, markRaw as Gc, Teleport as Kc, cloneVNode as qc, createTextVNode as Tt, onUnmounted as Tr, onBeforeUpdate as Xc, withModifiers as Tl, toDisplayString as Zc, vModelText as Qc, resolveComponent as Jc, render as Ar } from "./vue-1a3ae885.js";
13
+ } await loadCss('./assets/vuetify-61912396.css');import { watch as Q, onScopeDispose as Ze, effectScope as Zl, shallowRef as K, reactive as it, computed as b, watchEffect as Fe, toRefs as Yt, capitalize as Nn, unref as ot, Fragment as ie, isVNode as Rc, Comment as Nc, warn as ja, getCurrentInstance as Hc, ref as j, provide as De, inject as ye, defineComponent as zc, h as Gt, camelize as Ir, toRaw as Be, createVNode as r, mergeProps as O, onBeforeUnmount as Qe, readonly as Ql, onMounted as Ye, onDeactivated as _r, onActivated as Wc, nextTick as we, TransitionGroup as Jl, Transition as jt, isRef as Tn, toRef as $, onBeforeMount as ra, withDirectives as $e, resolveDirective as gt, vShow as Ct, onUpdated as jc, Text as Uc, resolveDynamicComponent as Yc, markRaw as Gc, Teleport as Kc, cloneVNode as qc, createTextVNode as Tt, onUnmounted as Tr, onBeforeUpdate as Xc, withModifiers as Tl, toDisplayString as Zc, vModelText as Qc, resolveComponent as Jc, render as Ar } from "./vue-3cd62695.js";
14
14
  function rt(e, n) {
15
15
  let t;
16
16
  function a() {
@@ -154,7 +154,7 @@ function Bt(e, n) {
154
154
  function Dl(e, n, t) {
155
155
  const a = /* @__PURE__ */ Object.create(null), l = /* @__PURE__ */ Object.create(null);
156
156
  for (const i in e)
157
- n.some((o) => o instanceof RegExp ? o.test(i) : o === i) && !(t != null && t.some((o) => o === i)) ? a[i] = e[i] : l[i] = e[i];
157
+ n.some((o) => o instanceof RegExp ? o.test(i) : o === i) ? a[i] = e[i] : l[i] = e[i];
158
158
  return [a, l];
159
159
  }
160
160
  function Ce(e, n) {
@@ -14328,12 +14328,7 @@ function ul(e) {
14328
14328
  return [...new Set(g)];
14329
14329
  }
14330
14330
  return f({
14331
- type: "group",
14332
- items: v,
14333
- id: "dummy",
14334
- key: "dummy",
14335
- value: "dummy",
14336
- depth: 0
14331
+ items: v
14337
14332
  });
14338
14333
  }
14339
14334
  const c = {
@@ -22504,22 +22499,26 @@ const bS = mb(sb, (e) => {
22504
22499
  ...Ec()
22505
22500
  },
22506
22501
  setup(e, n) {
22507
- const t = pt(), a = b(() => {
22508
- const l = t.addMinutes(t.startOfDay(e.day.date), e.intervalDuration * (e.index + e.intervalStart)), i = t.addMinutes(t.startOfDay(e.day.date), e.intervalDuration * (e.index + e.intervalStart + 1) - 1);
22502
+ let {
22503
+ emit: t,
22504
+ slots: a
22505
+ } = n;
22506
+ const l = pt(), i = b(() => {
22507
+ const o = l.addMinutes(l.startOfDay(e.day.date), e.intervalDuration * (e.index + e.intervalStart)), u = l.addMinutes(l.startOfDay(e.day.date), e.intervalDuration * (e.index + e.intervalStart + 1) - 1);
22509
22508
  return {
22510
22509
  ...e.day,
22511
- label: t.format(l, "fullTime24h"),
22512
- start: l,
22513
- end: i,
22514
- events: e.events ? e.events.filter((o) => !o.allDay && (t.isEqual(l, o.start) || t.isWithinRange(o.start, [l, i]) || t.isWithinRange(l, [o.start, o.end]) || t.isEqual(i, o.end))).map((o) => ({
22515
- ...o,
22516
- first: t.isEqual(l, o.start) || t.isWithinRange(o.start, [l, i]),
22517
- last: t.isEqual(i, o.end) || t.isWithinRange(o.end, [l, i])
22510
+ label: l.format(o, "fullTime24h"),
22511
+ start: o,
22512
+ end: u,
22513
+ events: e.events ? e.events.filter((s) => !s.allDay && (l.isEqual(o, s.start) || l.isWithinRange(s.start, [o, u]) || l.isWithinRange(o, [s.start, s.end]) || l.isEqual(u, s.end))).map((s) => ({
22514
+ ...s,
22515
+ first: l.isEqual(o, s.start) || l.isWithinRange(s.start, [o, u]),
22516
+ last: l.isEqual(u, s.end) || l.isWithinRange(s.end, [o, u])
22518
22517
  })) : []
22519
22518
  };
22520
22519
  });
22521
22520
  return N(() => {
22522
- var l, i;
22521
+ var o, u;
22523
22522
  return e.dayIndex === 0 ? r("div", {
22524
22523
  class: "v-calendar-day__row-with-label",
22525
22524
  style: `height: ${J(e.intervalHeight)}`
@@ -22527,17 +22526,17 @@ const bS = mb(sb, (e) => {
22527
22526
  class: "v-calendar-day__row-label"
22528
22527
  }, [r("slot", {
22529
22528
  name: "intervalFormat",
22530
- interval: a.value
22531
- }, [e.index ? e.intervalFormat ? typeof e.intervalFormat == "string" ? t.format(a.value.start, "hours12h") : e.intervalFormat(a.value) : a.value.label : ""])]), r("div", {
22529
+ interval: i.value
22530
+ }, [e.index ? e.intervalFormat ? typeof e.intervalFormat == "string" ? l.format(i.value.start, "hours12h") : e.intervalFormat(i.value) : i.value.label : ""])]), r("div", {
22532
22531
  class: "v-calendar-day__row-hairline"
22533
22532
  }, null), r("div", {
22534
- class: ["v-calendar-day__row-content", a.value.events.some((o) => !o.last) ? "v-calendar-day__row-content-through" : ""]
22533
+ class: ["v-calendar-day__row-content", i.value.events.some((s) => !s.last) ? "v-calendar-day__row-content-through" : ""]
22535
22534
  }, [r("slot", {
22536
22535
  name: "intervalBody",
22537
- interval: a.value
22538
- }, [(l = a.value.events) == null ? void 0 : l.map((o) => r(yr, {
22539
- event: o,
22540
- interval: a.value,
22536
+ interval: i.value
22537
+ }, [(o = i.value.events) == null ? void 0 : o.map((s) => r(yr, {
22538
+ event: s,
22539
+ interval: i.value,
22541
22540
  intervalDivisions: e.intervalDivisions,
22542
22541
  intervalDuration: e.intervalDuration,
22543
22542
  intervalHeight: e.intervalHeight
@@ -22545,19 +22544,19 @@ const bS = mb(sb, (e) => {
22545
22544
  class: "v-calendar-day__row-without-label",
22546
22545
  style: `height: ${J(e.intervalHeight)}`
22547
22546
  }, [r("div", {
22548
- class: ["v-calendar-day__row-content", a.value.events.some((o) => !o.last) ? "v-calendar-day__row-content-through" : ""]
22547
+ class: ["v-calendar-day__row-content", i.value.events.some((s) => !s.last) ? "v-calendar-day__row-content-through" : ""]
22549
22548
  }, [r("slot", {
22550
22549
  name: "intervalBody",
22551
- interval: a.value
22552
- }, [(i = a.value.events) == null ? void 0 : i.filter((o) => !o.allDay).map((o) => r(yr, {
22553
- event: o,
22554
- interval: a.value,
22550
+ interval: i.value
22551
+ }, [(u = i.value.events) == null ? void 0 : u.filter((s) => !s.allDay).map((s) => r(yr, {
22552
+ event: s,
22553
+ interval: i.value,
22555
22554
  intervalDivisions: e.intervalDivisions,
22556
22555
  intervalDuration: e.intervalDuration,
22557
22556
  intervalHeight: e.intervalHeight
22558
22557
  }, null))])])]);
22559
22558
  }), {
22560
- interval: a
22559
+ interval: i
22561
22560
  };
22562
22561
  }
22563
22562
  }), Mc = M({
@@ -1 +1 @@
1
- export * from "./vuetify-fdf20bf9.js";
1
+ export * from "./vuetify-61912396.js";
package/index.d.ts CHANGED
@@ -171,6 +171,8 @@ export { default as VcsDataTable } from "./src/components/tables/VcsDataTable.vu
171
171
  export type * from "./src/components/tables/VcsDataTable.vue.d.ts";
172
172
  export { default as VcsLabel } from "./src/components/form-inputs-controls/VcsLabel.vue";
173
173
  export type * from "./src/components/form-inputs-controls/VcsLabel.vue.d.ts";
174
+ export { default as VcsLabeledSlider } from "./src/components/form-inputs-controls/VcsLabeledSlider.vue";
175
+ export type * from "./src/components/form-inputs-controls/VcsLabeledSlider.vue.d.ts";
174
176
  export { default as VcsCheckbox } from "./src/components/form-inputs-controls/VcsCheckbox.vue";
175
177
  export type * from "./src/components/form-inputs-controls/VcsCheckbox.vue.d.ts";
176
178
  export { default as VcsRadio } from "./src/components/form-inputs-controls/VcsRadio.vue";
package/index.js CHANGED
@@ -295,6 +295,7 @@ export { default as VcsHelpTooltip } from './src/components/notification/VcsHelp
295
295
  export { default as VcsTable } from './src/components/tables/VcsTable.vue';
296
296
  export { default as VcsDataTable } from './src/components/tables/VcsDataTable.vue';
297
297
  export { default as VcsLabel } from './src/components/form-inputs-controls/VcsLabel.vue';
298
+ export { default as VcsLabeledSlider } from './src/components/form-inputs-controls/VcsLabeledSlider.vue';
298
299
  export { default as VcsCheckbox } from './src/components/form-inputs-controls/VcsCheckbox.vue';
299
300
  export { default as VcsRadio } from './src/components/form-inputs-controls/VcsRadio.vue';
300
301
  export { default as VcsFormSection } from './src/components/section/VcsFormSection.vue';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vcmap/ui",
3
- "version": "6.3.0-rc.5",
3
+ "version": "6.3.0",
4
4
  "author": "Virtual City Systems",
5
5
  "license": "MIT",
6
6
  "scripts": {
@@ -49,7 +49,7 @@
49
49
  "@vcsuite/check": "^3.0.0",
50
50
  "@vcsuite/logger": "^1.0.1",
51
51
  "@vcsuite/parsers": "^2.0.1",
52
- "dompurify": "^3.2.4",
52
+ "dompurify": "^3.3.3",
53
53
  "fast-deep-equal": "^3.1.3",
54
54
  "marked": "^15.0.7",
55
55
  "semver": "^7.6.3",
@@ -57,8 +57,8 @@
57
57
  "vue-i18n": "^9.13.1"
58
58
  },
59
59
  "peerDependencies": {
60
- "@vcmap-cesium/engine": "^11.0.4",
61
- "@vcmap/core": "^6.3.0-rc.3",
60
+ "@vcmap-cesium/engine": "^11.0.5",
61
+ "@vcmap/core": "^6.3.1",
62
62
  "ol": "^10.4.0",
63
63
  "vue": "~3.4.38",
64
64
  "vuetify": "~3.7.14"
@@ -225,6 +225,25 @@
225
225
  />
226
226
  </v-col>
227
227
  </v-row>
228
+ <VcsLabeledSlider
229
+ label="Labeled Slider"
230
+ v-model.number="state.numberInput"
231
+ :disabled="disabled"
232
+ unit="cm"
233
+ :min="0"
234
+ :max="100"
235
+ :step="0.001"
236
+ />
237
+ <VcsLabeledSlider
238
+ label="Labeled Slider with Input"
239
+ v-model.number="state.numberInput"
240
+ :disabled="disabled"
241
+ unit="cm"
242
+ :min="0"
243
+ :max="100"
244
+ :step="0.001"
245
+ allow-text-input
246
+ />
228
247
  <v-row no-gutters>
229
248
  <v-col>
230
249
  <VcsLabel :disabled="disabled" html-for="formattedNumber">
@@ -498,6 +517,7 @@
498
517
  VcsFormattedNumber,
499
518
  VcsFormSection,
500
519
  VcsLabel,
520
+ VcsLabeledSlider,
501
521
  VcsTextArea,
502
522
  VcsDatePicker,
503
523
  VcsSlider,
@@ -524,6 +544,7 @@
524
544
  VcsFormattedNumber,
525
545
  VcsFormSection,
526
546
  VcsLabel,
547
+ VcsLabeledSlider,
527
548
  VcsTextArea,
528
549
  VcsChipArrayInput,
529
550
  VcsCoordinate,
@@ -8,12 +8,12 @@
8
8
  "@vcmap/flight": "^3.0.0",
9
9
  "@vcmap/swipe-tool": "^4.0.0",
10
10
  "@vcmap/export": "^2.0.0",
11
- "@vcmap/viewshed": "^3.0.0",
11
+ "@vcmap/viewshed": "^4.0.0",
12
12
  "@vcmap/measurement": "^5.0.0",
13
13
  "@vcmap/multi-view": "^3.0.0",
14
14
  "@vcmap/draw": "^5.0.0",
15
15
  "@vcmap/shadow": "^3.0.0",
16
- "@vcmap/search-wfs": "^2.0.0",
16
+ "@vcmap/search-wfs": "^2.1.0",
17
17
  "@vcmap/search-esri": "^2.0.0",
18
18
  "@vcmap/search-coordinate": "^2.0.0",
19
19
  "@vcmap/link-button": "^2.0.0",
@@ -30,12 +30,13 @@
30
30
  "@vcmap/sensorthings": "^1.0.0",
31
31
  "@vcmap/cesium-inspector": "^2.0.0",
32
32
  "@vcmap/event-control": "^1.0.1",
33
- "@vcmap/dynamic-layer": "^2.0.0",
33
+ "@vcmap/dynamic-layer": "^3.0.0",
34
34
  "@vcmap/geofence": "^1.0.2",
35
35
  "@vcmap/panorama": "^1.0.0",
36
36
  "@vcmap/layer-settings": "^1.0.1"
37
37
  },
38
38
  "optionalDependencies": {
39
+ "@vcmap/guided-tour": "^1.0.5",
39
40
  "@vcmap/planning": "^7.0.0"
40
41
  }
41
42
  }
@@ -0,0 +1,113 @@
1
+ <template>
2
+ <div class="vcs-labeled-slider">
3
+ <v-row no-gutters class="px-1">
4
+ <v-col>
5
+ <VcsLabel
6
+ :html-for="`${cid}-${label}`"
7
+ v-bind="$attrs"
8
+ :help-text="tooltip"
9
+ class="pt-1 gc-2"
10
+ >
11
+ {{ $t(label) }}
12
+ </VcsLabel>
13
+ </v-col>
14
+ <v-col :cols="textInputCols">
15
+ <VcsTextField
16
+ v-if="allowTextInput"
17
+ type="number"
18
+ v-bind="$attrs"
19
+ v-model.number="localValue"
20
+ />
21
+ <div
22
+ v-else
23
+ class="visible-value pt-1"
24
+ :class="{ 'vcs-disabled': $attrs.disabled }"
25
+ >
26
+ {{ getVisibleValue(localValue) }}
27
+ </div>
28
+ </v-col>
29
+ </v-row>
30
+ <v-row no-gutters class="slider-container">
31
+ <VcsSlider
32
+ :id="`${cid}-${label}`"
33
+ v-bind="$attrs"
34
+ v-model.number="localValue"
35
+ />
36
+ </v-row>
37
+ </div>
38
+ </template>
39
+
40
+ <script>
41
+ import { VCol, VRow } from 'vuetify/components';
42
+ import VcsTextField from './VcsTextField.vue';
43
+ import VcsLabel from './VcsLabel.vue';
44
+ import VcsSlider from './VcsSlider.vue';
45
+ import { useProxiedAtomicModel } from '../modelHelper.js';
46
+ import { useComponentId } from '../composables.js';
47
+
48
+ /**
49
+ * @description stylized component, rendering a row with a label and an inputfield, and another with a slider.
50
+ * @vue-prop {number} modelValue - The value modeled by the slider and inputfield.
51
+ * @vue-prop {string} label - The title of the value to be modeled. Will be translated.
52
+ * @vue-prop {string} [tooltip] - An optional tooltip for the label.
53
+ * @vue-prop {boolean} [allowTextInput=false] - Whether to allow the value to be manually set in an inputfield.
54
+ * @vue-prop {number} [textInputCols=6] - The number of columns the text input should take (out of 12).
55
+ * All other props will be forwarded to the slider and inputfield (if allowTextInput is true). E.g. min, max, step, disabled and unit can be provided to the component.
56
+ */
57
+ export default {
58
+ name: 'VcsLabeledSlider',
59
+ components: {
60
+ VCol,
61
+ VRow,
62
+ VcsLabel,
63
+ VcsSlider,
64
+ VcsTextField,
65
+ },
66
+ props: {
67
+ modelValue: { type: Number, required: true },
68
+ label: { type: String, required: true },
69
+ tooltip: { type: String, default: undefined },
70
+ allowTextInput: { type: Boolean, default: false },
71
+ textInputCols: { type: Number, default: 6 },
72
+ },
73
+ emits: ['update:modelValue'],
74
+ setup(props, { attrs, emit }) {
75
+ const cid = useComponentId();
76
+ const localValue = useProxiedAtomicModel(props, 'modelValue', emit);
77
+
78
+ function getVisibleValue(value) {
79
+ if (Number.isFinite(value)) {
80
+ const unitText = attrs.unit ? ` ${attrs.unit}` : '';
81
+ return `${value}${unitText}`;
82
+ }
83
+ return '';
84
+ }
85
+
86
+ return {
87
+ cid,
88
+ localValue,
89
+ getVisibleValue,
90
+ };
91
+ },
92
+ };
93
+ </script>
94
+
95
+ <style lang="scss" scoped>
96
+ .slider-container {
97
+ padding-inline: 2px;
98
+ overflow: hidden;
99
+ :deep(.vcs-slider) {
100
+ overflow: visible !important;
101
+ }
102
+ }
103
+ .visible-value {
104
+ box-sizing: content-box;
105
+ display: flex;
106
+ align-items: center;
107
+ justify-content: flex-end;
108
+ height: calc(var(--v-vcs-font-size) * 2 - 2px);
109
+ }
110
+ .vcs-disabled {
111
+ opacity: var(--v-disabled-opacity);
112
+ }
113
+ </style>
@@ -0,0 +1,54 @@
1
+ declare const _default: import("vue").DefineComponent<{
2
+ modelValue: {
3
+ type: NumberConstructor;
4
+ required: true;
5
+ };
6
+ label: {
7
+ type: StringConstructor;
8
+ required: true;
9
+ };
10
+ tooltip: {
11
+ type: StringConstructor;
12
+ default: undefined;
13
+ };
14
+ allowTextInput: {
15
+ type: BooleanConstructor;
16
+ default: boolean;
17
+ };
18
+ textInputCols: {
19
+ type: NumberConstructor;
20
+ default: number;
21
+ };
22
+ }, {
23
+ cid: string;
24
+ localValue: import("vue").Ref<any>;
25
+ getVisibleValue: (value: any) => string;
26
+ }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
27
+ modelValue: {
28
+ type: NumberConstructor;
29
+ required: true;
30
+ };
31
+ label: {
32
+ type: StringConstructor;
33
+ required: true;
34
+ };
35
+ tooltip: {
36
+ type: StringConstructor;
37
+ default: undefined;
38
+ };
39
+ allowTextInput: {
40
+ type: BooleanConstructor;
41
+ default: boolean;
42
+ };
43
+ textInputCols: {
44
+ type: NumberConstructor;
45
+ default: number;
46
+ };
47
+ }>> & {
48
+ "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
49
+ }, {
50
+ tooltip: string;
51
+ allowTextInput: boolean;
52
+ textInputCols: number;
53
+ }, {}>;
54
+ export default _default;
@@ -20,7 +20,7 @@
20
20
  */
21
21
 
22
22
  /**
23
- * @typedef {import("./VcsListItemComponent.vue").VcsListItem & { group: string } VcsGroupedListItem
23
+ * @typedef {import("./VcsListItemComponent.vue").VcsListItem & { group: string }} VcsGroupedListItem
24
24
  * @property {string} group
25
25
  */
26
26
 
@@ -125,41 +125,18 @@
125
125
  </template>
126
126
  <template v-if="isCesiumMap">
127
127
  <div v-for="key in ['heading', 'pitch', 'roll']" :key="key">
128
- <v-row no-gutters>
129
- <v-col cols="9">
130
- <VcsLabel :html-for="`${cid}-${key}`">
131
- {{ $st(`components.viewpoint.${key}`) }}
132
- </VcsLabel>
133
- </v-col>
134
- <v-col cols="3">
135
- <VcsTextField
136
- :id="`${cid}-${key}`"
137
- :hide-spin-buttons="true"
138
- type="number"
139
- unit="°"
140
- :disabled="editAction.active"
141
- :decimals="0"
142
- v-model.number="localValue[key]"
143
- @blur="gotoViewpoint"
144
- @update:model-value="gotoViewpoint"
145
- :rules="[isFiniteNumber]"
146
- class="pr-0 ml-6"
147
- />
148
- </v-col>
149
- </v-row>
150
- <v-row no-gutters>
151
- <v-col cols="12">
152
- <VcsSlider
153
- height="32"
154
- hide-details
155
- :step="0.1"
156
- :disabled="editAction.active"
157
- v-bind="hprSliderOptions[key]"
158
- v-model="localValue[key]"
159
- @update:model-value="gotoViewpoint"
160
- />
161
- </v-col>
162
- </v-row>
128
+ <VcsLabeledSlider
129
+ :disabled="editAction.active"
130
+ :label="`components.viewpoint.${key}`"
131
+ unit="°"
132
+ allow-text-input
133
+ text-input-cols="3"
134
+ hide-spin-buttons
135
+ v-bind="hprSliderOptions[key]"
136
+ v-model="localValue[key]"
137
+ @blur="gotoViewpoint"
138
+ @update:model-value="gotoViewpoint"
139
+ />
163
140
  </div>
164
141
  </template>
165
142
  </v-container>
@@ -185,7 +162,7 @@
185
162
  import VcsTextField from '../form-inputs-controls/VcsTextField.vue';
186
163
  import VcsCheckbox from '../form-inputs-controls/VcsCheckbox.vue';
187
164
  import VcsCoordinate from '../form-inputs-controls/VcsCoordinate.vue';
188
- import VcsSlider from '../form-inputs-controls/VcsSlider.vue';
165
+ import VcsLabeledSlider from '../form-inputs-controls/VcsLabeledSlider.vue';
189
166
  import { useProxiedComplexModel } from '../modelHelper.js';
190
167
  import { useComponentId } from '../composables.js';
191
168
 
@@ -348,7 +325,7 @@
348
325
  VcsTextField,
349
326
  VcsCoordinate,
350
327
  VcsCheckbox,
351
- VcsSlider,
328
+ VcsLabeledSlider,
352
329
  },
353
330
  props: {
354
331
  modelValue: {
@@ -31,7 +31,7 @@ import {
31
31
  * balloon offset from location or click position in pixel
32
32
  * @type {{x: number, y: number}}
33
33
  */
34
- export const balloonOffset = { x: 55, y: 25 };
34
+ export const balloonOffset = { x: 50, y: 20 };
35
35
 
36
36
  /**
37
37
  * @param {import("@vcmap-cesium/engine").Scene} scene
@@ -92,15 +92,10 @@ export function setBalloonPosition(windowManager, id, windowPosition, target) {
92
92
 
93
93
  const { width, height, maxWidth, maxHeight } = windowManager.get(id).position;
94
94
 
95
- // Get the actual map target bounding rect to account for panel offsets
96
- const targetRect = target?.getBoundingClientRect();
97
- const offsetX = targetRect ? targetRect.left : 0;
98
- const offsetY = targetRect ? targetRect.top : 0;
99
-
100
95
  const mapWindowPosition = getWindowPositionOptionsFromMapEvent(
101
96
  new Cartesian2(
102
- windowPosition.x - balloonOffset.x + offsetX,
103
- windowPosition.y - balloonOffset.y + offsetY,
97
+ windowPosition.x - balloonOffset.x,
98
+ windowPosition.y - balloonOffset.y,
104
99
  ),
105
100
  target,
106
101
  WindowAlignment.BOTTOM_LEFT,
@@ -195,8 +195,13 @@ export function getFeatureInfoViewForFeature(app, feature) {
195
195
  export function getGroupedFeatureList(app, features, position = undefined) {
196
196
  const groups = {};
197
197
  const items = features.map((f) => {
198
- const oFeature = f[originalFeatureSymbol] ?? f;
199
198
  let actions;
199
+ const oFeature = f[originalFeatureSymbol] ?? f;
200
+ const layerName = oFeature[vcsLayerName];
201
+ const attributes = oFeature.getAttributes();
202
+ const layer = app.layers.getByKey(layerName);
203
+ const titlePropName = layer?.properties?.clusterFeatureTitleProperty;
204
+
200
205
  if (oFeature instanceof Feature) {
201
206
  actions = [
202
207
  createZoomToFeatureAction(
@@ -210,8 +215,9 @@ export function getGroupedFeatureList(app, features, position = undefined) {
210
215
  const listItem = reactive({
211
216
  name: oFeature.getId(),
212
217
  title:
213
- oFeature.getAttributes()?.title ||
214
- oFeature.getAttributes()?.name ||
218
+ attributes?.[titlePropName] ||
219
+ attributes?.title ||
220
+ attributes?.name ||
215
221
  oFeature.getId(),
216
222
  disabled: !getFeatureInfoViewForFeature(app, oFeature),
217
223
  selectionChanged: (value) => {
@@ -225,10 +231,9 @@ export function getGroupedFeatureList(app, features, position = undefined) {
225
231
  },
226
232
  actions,
227
233
  });
228
- const layerName = oFeature[vcsLayerName];
229
234
  if (layerName) {
230
235
  if (!groups[layerName]) {
231
- const title = app.layers.getByKey(layerName)?.properties?.title;
236
+ const title = layer?.properties?.title;
232
237
  groups[layerName] = { name: layerName, title: title || layerName };
233
238
  }
234
239
  listItem.group = layerName;
@@ -1,4 +1,8 @@
1
- import { get as getOlProj } from 'ol/proj.js';
1
+ import {
2
+ getMetersPerDegreeAtCoordinate,
3
+ mercatorProjection,
4
+ } from '@vcmap/core';
5
+ import { get as getOlProj, getTransform } from 'ol/proj.js';
2
6
  import AbstractFeatureInfoView from './abstractFeatureInfoView.js';
3
7
  import IframeComponent from './IframeComponent.vue';
4
8
  import { getBalloonPositionFromFeature } from './balloonHelper.js';
@@ -68,11 +72,20 @@ class IframeWmsFeatureInfoView extends AbstractFeatureInfoView {
68
72
  const resolution = app.maps.activeMap.getCurrentResolution(
69
73
  position.position,
70
74
  );
75
+
76
+ let res = resolution;
77
+ const projection = layer.featureProvider.wmsSource.getProjection();
78
+ const transform = getTransform(mercatorProjection.proj, projection);
79
+ const coords = transform(position.position.slice());
80
+ if (projection.getUnits() === 'degrees') {
81
+ const metersPerDegree = getMetersPerDegreeAtCoordinate(coords);
82
+ res = resolution / metersPerDegree;
83
+ }
71
84
  componentOptions.props.src =
72
85
  layer.featureProvider.wmsSource.getFeatureInfoUrl(
73
- position.position,
74
- resolution,
75
- getOlProj('EPSG:3857'),
86
+ coords,
87
+ res,
88
+ projection,
76
89
  { INFO_FORMAT: this.infoFormat },
77
90
  );
78
91
  return componentOptions;
@@ -1,6 +1,15 @@
1
1
  /**
2
2
  *
3
- * @param {HTMLElement} target
3
+ * returns the targetSize of the div element of the panel where the Map is rendered.
4
+ * This is the base for calculating the position of the windows on the map, as the window position is relative to this element.
5
+ * @param {HTMLElement} target The map Target of the mapCollection
6
+ * @returns {DOMRect|null}
7
+ */
8
+ export function getPanelTargetSize(target: HTMLElement): DOMRect | null;
9
+ /**
10
+ *
11
+ * returns the targetSize of the windowManager div element.
12
+ * @param {HTMLElement} target The map Target of the mapCollection
4
13
  * @returns {DOMRect|null}
5
14
  */
6
15
  export function getTargetSize(target: HTMLElement): DOMRect | null;