@vcmap/ui 5.0.0-rc.6 → 5.0.0-rc.7

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 (121) hide show
  1. package/README.md +3 -0
  2. package/config/aerowest.config.json +2 -1
  3. package/config/base.config.json +7 -7
  4. package/dist/assets/cesium/Workers/{AttributeCompression-27507afe.js → AttributeCompression-80665726.js} +1 -1
  5. package/dist/assets/cesium/Workers/{AxisAlignedBoundingBox-7565c1e8.js → AxisAlignedBoundingBox-a655a4bc.js} +1 -1
  6. package/dist/assets/cesium/Workers/{BoundingRectangle-9d707275.js → BoundingRectangle-c3b79029.js} +1 -1
  7. package/dist/assets/cesium/Workers/{BoxGeometry-fb31d3b5.js → BoxGeometry-f8f9c981.js} +1 -1
  8. package/dist/assets/cesium/Workers/{Color-56bb5728.js → Color-de06a177.js} +1 -1
  9. package/dist/assets/cesium/Workers/{CoplanarPolygonGeometryLibrary-72143c19.js → CoplanarPolygonGeometryLibrary-48cdc26d.js} +1 -1
  10. package/dist/assets/cesium/Workers/{CorridorGeometryLibrary-7bae1712.js → CorridorGeometryLibrary-ddc027d3.js} +1 -1
  11. package/dist/assets/cesium/Workers/{CylinderGeometry-331891fe.js → CylinderGeometry-82a8cbe6.js} +1 -1
  12. package/dist/assets/cesium/Workers/{EllipseGeometry-5e3f67b6.js → EllipseGeometry-32d55454.js} +1 -1
  13. package/dist/assets/cesium/Workers/{EllipseGeometryLibrary-dbc15162.js → EllipseGeometryLibrary-b2ae188a.js} +1 -1
  14. package/dist/assets/cesium/Workers/{EllipseOutlineGeometry-21191fce.js → EllipseOutlineGeometry-f05a5a27.js} +1 -1
  15. package/dist/assets/cesium/Workers/{EllipsoidGeodesic-cc3bace8.js → EllipsoidGeodesic-19e75e11.js} +1 -1
  16. package/dist/assets/cesium/Workers/{EllipsoidGeometry-8bfa24a9.js → EllipsoidGeometry-7c99fc81.js} +1 -1
  17. package/dist/assets/cesium/Workers/{EllipsoidOutlineGeometry-48d9c023.js → EllipsoidOutlineGeometry-21c243df.js} +1 -1
  18. package/dist/assets/cesium/Workers/{EllipsoidRhumbLine-125a8b72.js → EllipsoidRhumbLine-6145377b.js} +1 -1
  19. package/dist/assets/cesium/Workers/EllipsoidTangentPlane-a01286f6.js +1 -0
  20. package/dist/assets/cesium/Workers/{EncodedCartesian3-96fdc0ef.js → EncodedCartesian3-d9f5c4a4.js} +1 -1
  21. package/dist/assets/cesium/Workers/{FrustumGeometry-9ab86004.js → FrustumGeometry-17776af8.js} +1 -1
  22. package/dist/assets/cesium/Workers/GeometryAttribute-89a520b9.js +1 -0
  23. package/dist/assets/cesium/Workers/{GeometryInstance-13e4ff38.js → GeometryInstance-4fbf16ba.js} +1 -1
  24. package/dist/assets/cesium/Workers/{GeometryPipeline-e0eb4567.js → GeometryPipeline-309fad76.js} +1 -1
  25. package/dist/assets/cesium/Workers/IntersectionTests-58aa8f80.js +1 -0
  26. package/dist/assets/cesium/Workers/{Matrix2-37e55508.js → Matrix2-47e98d76.js} +0 -0
  27. package/dist/assets/cesium/Workers/{OrientedBoundingBox-e9c07538.js → OrientedBoundingBox-fcb5b750.js} +1 -1
  28. package/dist/assets/cesium/Workers/{Plane-6ee42cab.js → Plane-3f01019d.js} +1 -1
  29. package/dist/assets/cesium/Workers/{PolygonGeometryLibrary-b408c688.js → PolygonGeometryLibrary-0b29eb16.js} +1 -1
  30. package/dist/assets/cesium/Workers/{PolygonPipeline-7b8e4643.js → PolygonPipeline-a934c4dd.js} +1 -1
  31. package/dist/assets/cesium/Workers/{PolylinePipeline-6757400c.js → PolylinePipeline-8095c9bc.js} +1 -1
  32. package/dist/assets/cesium/Workers/{PolylineVolumeGeometryLibrary-eb972210.js → PolylineVolumeGeometryLibrary-67d12fff.js} +1 -1
  33. package/dist/assets/cesium/Workers/{PrimitivePipeline-f244975e.js → PrimitivePipeline-980e44c5.js} +1 -1
  34. package/dist/assets/cesium/Workers/{RectangleGeometryLibrary-1bd6152a.js → RectangleGeometryLibrary-621c6de8.js} +1 -1
  35. package/dist/assets/cesium/Workers/{TerrainEncoding-5a21a97f.js → TerrainEncoding-f96552d5.js} +1 -1
  36. package/dist/assets/cesium/Workers/{Transforms-eb5c1a84.js → Transforms-c8cb8f43.js} +3 -3
  37. package/dist/assets/cesium/Workers/{WallGeometryLibrary-a6b6a368.js → WallGeometryLibrary-c03d8479.js} +1 -1
  38. package/dist/assets/cesium/Workers/{WebMercatorProjection-2839e524.js → WebMercatorProjection-79b3214e.js} +1 -1
  39. package/dist/assets/cesium/Workers/combineGeometry.js +1 -1
  40. package/dist/assets/cesium/Workers/createBoxGeometry.js +1 -1
  41. package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +1 -1
  42. package/dist/assets/cesium/Workers/createCircleGeometry.js +1 -1
  43. package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +1 -1
  44. package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +1 -1
  45. package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +1 -1
  46. package/dist/assets/cesium/Workers/createCorridorGeometry.js +1 -1
  47. package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +1 -1
  48. package/dist/assets/cesium/Workers/createCylinderGeometry.js +1 -1
  49. package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +1 -1
  50. package/dist/assets/cesium/Workers/createEllipseGeometry.js +1 -1
  51. package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +1 -1
  52. package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +1 -1
  53. package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +1 -1
  54. package/dist/assets/cesium/Workers/createFrustumGeometry.js +1 -1
  55. package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +1 -1
  56. package/dist/assets/cesium/Workers/createGeometry.js +1 -1
  57. package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +1 -1
  58. package/dist/assets/cesium/Workers/createPlaneGeometry.js +1 -1
  59. package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +1 -1
  60. package/dist/assets/cesium/Workers/createPolygonGeometry.js +1 -1
  61. package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +1 -1
  62. package/dist/assets/cesium/Workers/createPolylineGeometry.js +1 -1
  63. package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +1 -1
  64. package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +1 -1
  65. package/dist/assets/cesium/Workers/createRectangleGeometry.js +1 -1
  66. package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +1 -1
  67. package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +1 -1
  68. package/dist/assets/cesium/Workers/createSphereGeometry.js +1 -1
  69. package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +1 -1
  70. package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +1 -1
  71. package/dist/assets/cesium/Workers/createVectorTileGeometries.js +1 -1
  72. package/dist/assets/cesium/Workers/createVectorTilePoints.js +1 -1
  73. package/dist/assets/cesium/Workers/createVectorTilePolygons.js +1 -1
  74. package/dist/assets/cesium/Workers/createVectorTilePolylines.js +1 -1
  75. package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
  76. package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +1 -1
  77. package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +1 -1
  78. package/dist/assets/cesium/Workers/createWallGeometry.js +1 -1
  79. package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +1 -1
  80. package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +1 -1
  81. package/dist/assets/{cesium.fba8ca.js → cesium.2a963a.js} +955 -968
  82. package/dist/assets/cesium.js +1 -1
  83. package/dist/assets/core.ba64c8.js +4 -0
  84. package/dist/assets/core.js +1 -1
  85. package/dist/assets/{index.6a83278e.js → index.83d29643.js} +1 -1
  86. package/dist/assets/{ol.abea3a.js → ol.5c9201.js} +0 -0
  87. package/dist/assets/ol.js +1 -1
  88. package/dist/assets/ui.c4abb7.css +1 -0
  89. package/dist/assets/ui.c4abb7.js +39 -0
  90. package/dist/assets/ui.js +1 -1
  91. package/dist/assets/uicomponents.5e36c1.css +1 -0
  92. package/dist/assets/uicomponents.5e36c1.js +32 -0
  93. package/dist/assets/uicomponents.js +1 -1
  94. package/dist/assets/{vue-composition-api.7051d7.js → vue-composition-api.ff8a0e.js} +1 -1
  95. package/dist/assets/vue-composition-api.js +2 -2
  96. package/dist/assets/{vue.9fd7f6.js → vue.f0d3bf.js} +0 -0
  97. package/dist/assets/vue.js +1 -1
  98. package/dist/assets/{vuetify.33dafc.css → vuetify.69b350.css} +1 -1
  99. package/dist/assets/{vuetify.33dafc.js → vuetify.69b350.js} +1 -1
  100. package/dist/assets/vuetify.js +2 -2
  101. package/dist/index.html +1 -1
  102. package/package.json +4 -4
  103. package/src/actions/actionHelper.js +39 -0
  104. package/src/application/Navbar.vue +32 -3
  105. package/src/application/VcsApp.vue +3 -1
  106. package/src/application/VcsMap.vue +1 -20
  107. package/src/manager/buttonManager.js +2 -1
  108. package/src/manager/window/WindowComponent.vue +27 -20
  109. package/src/manager/window/WindowComponentHeader.vue +13 -6
  110. package/src/navigation/mapNavigation.vue +26 -1
  111. package/src/navigation/overviewMap.js +616 -0
  112. package/src/navigation/overviewMapClickedInteraction.js +38 -0
  113. package/src/vcsUiApp.js +14 -0
  114. package/dist/assets/cesium/Workers/EllipsoidTangentPlane-678e34e4.js +0 -1
  115. package/dist/assets/cesium/Workers/GeometryAttribute-3915ea0b.js +0 -1
  116. package/dist/assets/cesium/Workers/IntersectionTests-ac2459de.js +0 -1
  117. package/dist/assets/core.d5ed0f.js +0 -4
  118. package/dist/assets/ui.ad1ec9.css +0 -1
  119. package/dist/assets/ui.ad1ec9.js +0 -39
  120. package/dist/assets/uicomponents.161461.css +0 -1
  121. package/dist/assets/uicomponents.161461.js +0 -31
@@ -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.33dafc.css');var Qr=Object.defineProperty,Jr=Object.defineProperties;var ta=Object.getOwnPropertyDescriptors;var ae=Object.getOwnPropertySymbols;var Xi=Object.prototype.hasOwnProperty,Ki=Object.prototype.propertyIsEnumerable;var Ui=(t,e,i)=>e in t?Qr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,l=(t,e)=>{for(var i in e||(e={}))Xi.call(e,i)&&Ui(t,i,e[i]);if(ae)for(var i of ae(e))Ki.call(e,i)&&Ui(t,i,e[i]);return t},p=(t,e)=>Jr(t,ta(e));var Z=(t,e)=>{var i={};for(var s in t)Xi.call(t,s)&&e.indexOf(s)<0&&(i[s]=t[s]);if(t!=null&&ae)for(var s of ae(t))e.indexOf(s)<0&&Ki.call(t,s)&&(i[s]=t[s]);return i};import $ from"./vue.9fd7f6.js";var qu="";const Ye=$.extend().extend({name:"themeable",provide(){return{theme:this.themeableProvide}},inject:{theme:{default:{isDark:!1}}},props:{dark:{type:Boolean,default:null},light:{type:Boolean,default:null}},data(){return{themeableProvide:{isDark:!1}}},computed:{appIsDark(){return this.$vuetify.theme.dark||!1},isDark(){return this.dark===!0?!0:this.light===!0?!1:this.theme.isDark},themeClasses(){return{"theme--dark":this.isDark,"theme--light":!this.isDark}},rootIsDark(){return this.dark===!0?!0:this.light===!0?!1:this.appIsDark},rootThemeClasses(){return{"theme--dark":this.rootIsDark,"theme--light":!this.rootIsDark}}},watch:{isDark:{handler(t,e){t!==e&&(this.themeableProvide.isDark=this.isDark)},immediate:!0}}});var S=Ye;function qi(t){const e=l(l({},t.props),t.injections),i=Ye.options.computed.isDark.call(e);return Ye.options.computed.themeClasses.call({isDark:i})}function f(...t){return $.extend({mixins:t})}var ea=f(S).extend({name:"v-app",props:{dark:{type:Boolean,default:void 0},id:{type:String,default:"app"},light:{type:Boolean,default:void 0}},computed:{isDark(){return this.$vuetify.theme.dark}},beforeCreate(){if(!this.$vuetify||this.$vuetify===this.$root)throw new Error("Vuetify is not properly initialized, see https://vuetifyjs.com/getting-started/quick-start#bootstrapping-the-vuetify-object")},render(t){const e=t("div",{staticClass:"v-application--wrap"},this.$slots.default);return t("div",{staticClass:"v-application",class:l({"v-application--is-rtl":this.$vuetify.rtl,"v-application--is-ltr":!this.$vuetify.rtl},this.themeClasses),attrs:{"data-app":!0},domProps:{id:this.id}},[e])}}),Zu="",Qu="",Ju="";function Zi(t){return function(e,i){for(const s in i)Object.prototype.hasOwnProperty.call(e,s)||this.$delete(this.$data[t],s);for(const s in e)this.$set(this.$data[t],s,e[s])}}var wt=$.extend({data:()=>({attrs$:{},listeners$:{}}),created(){this.$watch("$attrs",Zi("attrs$"),{immediate:!0}),this.$watch("$listeners",Zi("listeners$"),{immediate:!0})}});function je(t,e={}){if(je.installed)return;je.installed=!0,$!==t&&X(`Multiple instances of Vue detected
13
+ } await loadCss('./assets/vuetify.69b350.css');var Qr=Object.defineProperty,Jr=Object.defineProperties;var ta=Object.getOwnPropertyDescriptors;var ae=Object.getOwnPropertySymbols;var Xi=Object.prototype.hasOwnProperty,Ki=Object.prototype.propertyIsEnumerable;var Ui=(t,e,i)=>e in t?Qr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,l=(t,e)=>{for(var i in e||(e={}))Xi.call(e,i)&&Ui(t,i,e[i]);if(ae)for(var i of ae(e))Ki.call(e,i)&&Ui(t,i,e[i]);return t},p=(t,e)=>Jr(t,ta(e));var Z=(t,e)=>{var i={};for(var s in t)Xi.call(t,s)&&e.indexOf(s)<0&&(i[s]=t[s]);if(t!=null&&ae)for(var s of ae(t))e.indexOf(s)<0&&Ki.call(t,s)&&(i[s]=t[s]);return i};import $ from"./vue.f0d3bf.js";var qu="";const Ye=$.extend().extend({name:"themeable",provide(){return{theme:this.themeableProvide}},inject:{theme:{default:{isDark:!1}}},props:{dark:{type:Boolean,default:null},light:{type:Boolean,default:null}},data(){return{themeableProvide:{isDark:!1}}},computed:{appIsDark(){return this.$vuetify.theme.dark||!1},isDark(){return this.dark===!0?!0:this.light===!0?!1:this.theme.isDark},themeClasses(){return{"theme--dark":this.isDark,"theme--light":!this.isDark}},rootIsDark(){return this.dark===!0?!0:this.light===!0?!1:this.appIsDark},rootThemeClasses(){return{"theme--dark":this.rootIsDark,"theme--light":!this.rootIsDark}}},watch:{isDark:{handler(t,e){t!==e&&(this.themeableProvide.isDark=this.isDark)},immediate:!0}}});var S=Ye;function qi(t){const e=l(l({},t.props),t.injections),i=Ye.options.computed.isDark.call(e);return Ye.options.computed.themeClasses.call({isDark:i})}function f(...t){return $.extend({mixins:t})}var ea=f(S).extend({name:"v-app",props:{dark:{type:Boolean,default:void 0},id:{type:String,default:"app"},light:{type:Boolean,default:void 0}},computed:{isDark(){return this.$vuetify.theme.dark}},beforeCreate(){if(!this.$vuetify||this.$vuetify===this.$root)throw new Error("Vuetify is not properly initialized, see https://vuetifyjs.com/getting-started/quick-start#bootstrapping-the-vuetify-object")},render(t){const e=t("div",{staticClass:"v-application--wrap"},this.$slots.default);return t("div",{staticClass:"v-application",class:l({"v-application--is-rtl":this.$vuetify.rtl,"v-application--is-ltr":!this.$vuetify.rtl},this.themeClasses),attrs:{"data-app":!0},domProps:{id:this.id}},[e])}}),Zu="",Qu="",Ju="";function Zi(t){return function(e,i){for(const s in i)Object.prototype.hasOwnProperty.call(e,s)||this.$delete(this.$data[t],s);for(const s in e)this.$set(this.$data[t],s,e[s])}}var wt=$.extend({data:()=>({attrs$:{},listeners$:{}}),created(){this.$watch("$attrs",Zi("attrs$"),{immediate:!0}),this.$watch("$listeners",Zi("listeners$"),{immediate:!0})}});function je(t,e={}){if(je.installed)return;je.installed=!0,$!==t&&X(`Multiple instances of Vue detected
14
14
  See https://github.com/vuetifyjs/vuetify/issues/4068
15
15
 
16
16
  If you're seeing "$attrs is readonly", it's caused by this`);const i=e.components||{},s=e.directives||{};for(const n in s){const r=s[n];t.directive(n,r)}(function n(r){if(r){for(const a in r){const o=r[a];o&&!n(o.$_vuetify_subcomponents)&&t.component(a,o)}return!0}return!1})(i),!t.$_vuetify_installed&&(t.$_vuetify_installed=!0,t.mixin({beforeCreate(){const n=this.$options;n.vuetify?(n.vuetify.init(this,this.$ssrContext),this.$vuetify=t.observable(n.vuetify.framework)):this.$vuetify=n.parent&&n.parent.$vuetify||this},beforeMount(){this.$options.vuetify&&this.$el&&this.$el.hasAttribute("data-server-rendered")&&(this.$vuetify.isHydrating=!0,this.$vuetify.breakpoint.update(!0))},mounted(){this.$options.vuetify&&this.$vuetify.isHydrating&&(this.$vuetify.isHydrating=!1,this.$vuetify.breakpoint.update())}}))}class mt{constructor(){this.framework={}}init(e,i){}}class Qi extends mt{constructor(){super(...arguments);this.bar=0,this.top=0,this.left=0,this.insetFooter=0,this.right=0,this.bottom=0,this.footer=0,this.application={bar:{},top:{},left:{},insetFooter:{},right:{},bottom:{},footer:{}}}register(e,i,s){this.application[i][e]=s,this.update(i)}unregister(e,i){this.application[i][e]!=null&&(delete this.application[i][e],this.update(i))}update(e){this[e]=Object.values(this.application[e]).reduce((i,s)=>i+s,0)}}Qi.property="application";class Ne extends mt{constructor(e){super();this.xs=!1,this.sm=!1,this.md=!1,this.lg=!1,this.xl=!1,this.xsOnly=!1,this.smOnly=!1,this.smAndDown=!1,this.smAndUp=!1,this.mdOnly=!1,this.mdAndDown=!1,this.mdAndUp=!1,this.lgOnly=!1,this.lgAndDown=!1,this.lgAndUp=!1,this.xlOnly=!1,this.name="xs",this.height=0,this.width=0,this.mobile=!0,this.resizeTimeout=0;const{mobileBreakpoint:i,scrollBarWidth:s,thresholds:n}=e[Ne.property];this.mobileBreakpoint=i,this.scrollBarWidth=s,this.thresholds=n}init(){this.update(),typeof window!="undefined"&&window.addEventListener("resize",this.onResize.bind(this),{passive:!0})}update(e=!1){const i=e?0:this.getClientHeight(),s=e?0:this.getClientWidth(),n=s<this.thresholds.xs,r=s<this.thresholds.sm&&!n,a=s<this.thresholds.md-this.scrollBarWidth&&!(r||n),o=s<this.thresholds.lg-this.scrollBarWidth&&!(a||r||n),h=s>=this.thresholds.lg-this.scrollBarWidth;switch(this.height=i,this.width=s,this.xs=n,this.sm=r,this.md=a,this.lg=o,this.xl=h,this.xsOnly=n,this.smOnly=r,this.smAndDown=(n||r)&&!(a||o||h),this.smAndUp=!n&&(r||a||o||h),this.mdOnly=a,this.mdAndDown=(n||r||a)&&!(o||h),this.mdAndUp=!(n||r)&&(a||o||h),this.lgOnly=o,this.lgAndDown=(n||r||a||o)&&!h,this.lgAndUp=!(n||r||a)&&(o||h),this.xlOnly=h,!0){case n:this.name="xs";break;case r:this.name="sm";break;case a:this.name="md";break;case o:this.name="lg";break;default:this.name="xl";break}if(typeof this.mobileBreakpoint=="number"){this.mobile=s<parseInt(this.mobileBreakpoint,10);return}const c={xs:0,sm:1,md:2,lg:3,xl:4},u=c[this.name],d=c[this.mobileBreakpoint];this.mobile=u<=d}onResize(){clearTimeout(this.resizeTimeout),this.resizeTimeout=window.setTimeout(this.update.bind(this),200)}getClientWidth(){return typeof document=="undefined"?0:Math.max(document.documentElement.clientWidth,window.innerWidth||0)}getClientHeight(){return typeof document=="undefined"?0:Math.max(document.documentElement.clientHeight,window.innerHeight||0)}}Ne.property="breakpoint";const ia=t=>t,sa=t=>t**2,na=t=>t*(2-t),ra=t=>t<.5?2*t**2:-1+(4-2*t)*t,aa=t=>t**3,oa=t=>--t**3+1,Ji=t=>t<.5?4*t**3:(t-1)*(2*t-2)*(2*t-2)+1,la=t=>t**4,ha=t=>1- --t**4,ca=t=>t<.5?8*t*t*t*t:1-8*--t*t*t*t,ua=t=>t**5,da=t=>1+--t**5,pa=t=>t<.5?16*t**5:1+16*--t**5;var fa=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",linear:ia,easeInQuad:sa,easeOutQuad:na,easeInOutQuad:ra,easeInCubic:aa,easeOutCubic:oa,easeInOutCubic:Ji,easeInQuart:la,easeOutQuart:ha,easeInOutQuart:ca,easeInQuint:ua,easeOutQuint:da,easeInOutQuint:pa});function Ge(t){if(typeof t=="number")return t;let e=es(t);if(!e)throw typeof t=="string"?new Error(`Target element "${t}" not found.`):new TypeError(`Target must be a Number/Selector/HTMLElement/VueComponent, received ${ts(t)} instead.`);let i=0;for(;e;)i+=e.offsetTop,e=e.offsetParent;return i}function ma(t){const e=es(t);if(e)return e;throw typeof t=="string"?new Error(`Container element "${t}" not found.`):new TypeError(`Container must be a Selector/HTMLElement/VueComponent, received ${ts(t)} instead.`)}function ts(t){return t==null?t:t.constructor.name}function es(t){return typeof t=="string"?document.querySelector(t):t&&t._isVue?t.$el:t instanceof HTMLElement?t:null}function gt(t,e={}){const i=l({container:document.scrollingElement||document.body||document.documentElement,duration:500,offset:0,easing:"easeInOutCubic",appOffset:!0},e),s=ma(i.container);if(i.appOffset&&gt.framework.application){const h=s.classList.contains("v-navigation-drawer"),c=s.classList.contains("v-navigation-drawer--clipped"),{bar:u,top:d}=gt.framework.application;i.offset+=u,(!h||c)&&(i.offset+=d)}const n=performance.now();let r;typeof t=="number"?r=Ge(t)-i.offset:r=Ge(t)-Ge(s)-i.offset;const a=s.scrollTop;if(r===a)return Promise.resolve(r);const o=typeof i.easing=="function"?i.easing:fa[i.easing];if(!o)throw new TypeError(`Easing function "${i.easing}" not found.`);return new Promise(h=>requestAnimationFrame(function c(u){const d=u-n,g=Math.abs(i.duration?Math.min(d/i.duration,1):1);s.scrollTop=Math.floor(a+(r-a)*o(g));const b=(s===document.body?document.documentElement.clientHeight:s.clientHeight)+s.scrollTop>=s.scrollHeight;if(g===1||r>s.scrollTop&&b)return h(r);requestAnimationFrame(c)}))}gt.framework={},gt.init=()=>{};class is extends mt{constructor(){super();return gt}}is.property="goTo";function N(t,e="div",i){return $.extend({name:i||t.replace(/__/g,"-"),functional:!0,props:{tag:{type:String,default:e}},render(s,{data:n,props:r,children:a}){return n.staticClass=`${t} ${n.staticClass||""}`.trim(),s(r.tag,n,a)}})}function Ue(t,e,i,s=!1){const n=r=>{i(r),t.removeEventListener(e,n,s)};t.addEventListener(e,n,s)}let vt=!1;try{if(typeof window!="undefined"){const t=Object.defineProperty({},"passive",{get:()=>{vt=!0}});window.addEventListener("testListener",t,t),window.removeEventListener("testListener",t,t)}}catch(t){console.warn(t)}function ga(t,e,i,s){t.addEventListener(e,i,vt?s:!1)}function Xe(t,e,i){const s=e.length-1;if(s<0)return t===void 0?i:t;for(let n=0;n<s;n++){if(t==null)return i;t=t[e[n]]}return t==null||t[e[s]]===void 0?i:t[e[s]]}function A(t,e){if(t===e)return!0;if(t instanceof Date&&e instanceof Date&&t.getTime()!==e.getTime()||t!==Object(t)||e!==Object(e))return!1;const i=Object.keys(t);return i.length!==Object.keys(e).length?!1:i.every(s=>A(t[s],e[s]))}function y(t,e,i){return t==null||!e||typeof e!="string"?i:t[e]!==void 0?t[e]:(e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,""),Xe(t,e.split("."),i))}function ot(t,e,i){if(e==null)return t===void 0?i:t;if(t!==Object(t))return i===void 0?t:i;if(typeof e=="string")return y(t,e,i);if(Array.isArray(e))return Xe(t,e,i);if(typeof e!="function")return i;const s=e(t,i);return typeof s=="undefined"?i:s}function et(t){return Array.from({length:t},(e,i)=>i)}function Ht(t){if(!t||t.nodeType!==Node.ELEMENT_NODE)return 0;const e=+window.getComputedStyle(t).getPropertyValue("z-index");return e||Ht(t.parentNode)}const va={"&":"&amp;","<":"&lt;",">":"&gt;"};function Ft(t){return t.replace(/[&<>]/g,e=>va[e]||e)}function ya(t,e){const i={};for(let s=0;s<e.length;s++){const n=e[s];typeof t[n]!="undefined"&&(i[n]=t[n])}return i}function m(t,e="px"){if(!(t==null||t===""))return isNaN(+t)?String(t):`${Number(t)}${e}`}function oe(t){return(t||"").replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function ss(t){return t!==null&&typeof t=="object"}const v=Object.freeze({enter:13,tab:9,delete:46,esc:27,space:32,up:38,down:40,left:37,right:39,end:35,home:36,del:46,backspace:8,insert:45,pageup:33,pagedown:34,shift:16});function ba(t,e){const i=t.$vuetify.icons.component;if(e.startsWith("$")){const s=`$vuetify.icons.values.${e.split("$").pop().split(".").pop()}`,n=y(t,s,e);if(typeof n=="string")e=n;else return n}return i==null?e:{component:i,props:{icon:e}}}function le(t){return Object.keys(t)}const $a=/-(\w)/g,ns=t=>t.replace($a,(e,i)=>i?i.toUpperCase():"");function Sa(t,e){const i=[];for(let s=0;s<e.length;s++)t.indexOf(e[s])<0&&i.push(e[s]);return i}function he(t){return t.charAt(0).toUpperCase()+t.slice(1)}function xa(t,e,i){const s=e[0],n=[];let r;for(let a=0;a<t.length;a++){const o=t[a],h=y(o,s,null);r!==h&&(r=h,n.push({name:h!=null?h:"",items:[]})),n[n.length-1].items.push(o)}return n}function O(t){return t!=null?Array.isArray(t)?t:[t]:[]}function Ca(t,e,i,s,n){if(e===null||!e.length)return t;const r=new Intl.Collator(s,{sensitivity:"accent",usage:"sort"});return t.sort((a,o)=>{for(let h=0;h<e.length;h++){const c=e[h];let u=y(a,c),d=y(o,c);if(i[h]&&([u,d]=[d,u]),n&&n[c]){const g=n[c](u,d);if(!g)continue;return g}if(!(u===null&&d===null)){if(u instanceof Date&&d instanceof Date)return u.getTime()-d.getTime();if([u,d]=[u,d].map(g=>(g||"").toString().toLocaleLowerCase()),u!==d)return!isNaN(u)&&!isNaN(d)?Number(u)-Number(d):r.compare(u,d)}}return 0})}function Ke(t,e,i){return t!=null&&e!=null&&typeof t!="boolean"&&t.toString().toLocaleLowerCase().indexOf(e.toLocaleLowerCase())!==-1}function wa(t,e){return!e||(e=e.toString().toLowerCase(),e.trim()==="")?t:t.filter(i=>Object.keys(i).some(s=>Ke(y(i,s),e)))}function rs(t,e,i){if(t.$slots.hasOwnProperty(e)&&t.$scopedSlots.hasOwnProperty(e)&&t.$scopedSlots[e].name)return i?"v-slot":"scoped";if(t.$slots.hasOwnProperty(e))return"normal";if(t.$scopedSlots.hasOwnProperty(e))return"scoped"}function ka(t,e){let i=0;return(...s)=>{clearTimeout(i),i=setTimeout(()=>t(...s),e)}}function Ia(t,e){let i=!1;return(...s)=>{if(!i)return i=!0,setTimeout(()=>i=!1,e),t(...s)}}function ce(t,e){return Object.keys(e).filter(i=>i.startsWith(t)).reduce((i,s)=>(i[s.replace(t,"")]=e[s],i),{})}function x(t,e="default",i,s=!1){if(t.$scopedSlots.hasOwnProperty(e))return t.$scopedSlots[e](i instanceof Function?i():i);if(t.$slots.hasOwnProperty(e)&&(!i||s))return t.$slots[e]}function qe(t,e=0,i=1){return Math.max(e,Math.min(i,t))}function Ze(t,e,i="0"){return t+i.repeat(Math.max(0,e-t.length))}function Ta(t,e=1){const i=[];let s=0;for(;s<t.length;)i.push(t.substr(s,e)),s+=e;return i}function as(t,e=!1){const i=e?1024:1e3;if(t<i)return`${t} B`;const s=e?["Ki","Mi","Gi"]:["k","M","G"];let n=-1;for(;Math.abs(t)>=i&&n<s.length-1;)t/=i,++n;return`${t.toFixed(1)} ${s[n]}B`}function os(t){return t?Object.keys(t).reduce((e,i)=>(e[ns(i)]=t[i],e),{}):{}}function Nt(t={},e={}){for(const i in e){const s=t[i],n=e[i];if(ss(s)&&ss(n)){t[i]=Nt(s,n);continue}t[i]=n}return t}function ls(t,e){return Array(t).fill(e)}function hs(t){if(t.composedPath)return t.composedPath();const e=[];let i=t.target;for(;i;){if(e.push(i),i.tagName==="HTML")return e.push(document),e.push(window),e;i=i.parentElement}return e}const _a={complete:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z",cancel:"M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z",close:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z",delete:"M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z",clear:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z",success:"M12,2C17.52,2 22,6.48 22,12C22,17.52 17.52,22 12,22C6.48,22 2,17.52 2,12C2,6.48 6.48,2 12,2M11,16.5L18,9.5L16.59,8.09L11,13.67L7.91,10.59L6.5,12L11,16.5Z",info:"M13,9H11V7H13M13,17H11V11H13M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z",warning:"M11,4.5H13V15.5H11V4.5M13,17.5V19.5H11V17.5H13Z",error:"M13,14H11V10H13M13,18H11V16H13M1,21H23L12,2L1,21Z",prev:"M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z",next:"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z",checkboxOn:"M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3Z",checkboxOff:"M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z",checkboxIndeterminate:"M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3Z",delimiter:"M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z",sort:"M13,20H11V8L5.5,13.5L4.08,12.08L12,4.16L19.92,12.08L18.5,13.5L13,8V20Z",expand:"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z",menu:"M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z",subgroup:"M7,10L12,15L17,10H7Z",dropdown:"M7,10L12,15L17,10H7Z",radioOn:"M12,20C7.58,20 4,16.42 4,12C4,7.58 7.58,4 12,4C16.42,4 20,7.58 20,12C20,16.42 16.42,20 12,20M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2M12,7C9.24,7 7,9.24 7,12C7,14.76 9.24,17 12,17C14.76,17 17,14.76 17,12C17,9.24 14.76,7 12,7Z",radioOff:"M12,20C7.58,20 4,16.42 4,12C4,7.58 7.58,4 12,4C16.42,4 20,7.58 20,12C20,16.42 16.42,20 12,20M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z",edit:"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z",ratingEmpty:"M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z",ratingFull:"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z",ratingHalf:"M12,15.4V6.1L13.71,10.13L18.09,10.5L14.77,13.39L15.76,17.67M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z",loading:"M19,8L15,12H18C18,15.31 15.31,18 12,18C11,18 10.03,17.75 9.2,17.3L7.74,18.76C8.97,19.54 10.43,20 12,20C16.42,20 20,16.42 20,12H23M6,12C6,8.69 8.69,6 12,6C13,6 13.97,6.25 14.8,6.7L16.26,5.24C15.03,4.46 13.57,4 12,4C7.58,4 4,7.58 4,12H1L5,16L9,12",first:"M18.41,16.59L13.82,12L18.41,7.41L17,6L11,12L17,18L18.41,16.59M6,6H8V18H6V6Z",last:"M5.59,7.41L10.18,12L5.59,16.59L7,18L13,12L7,6L5.59,7.41M16,6H18V18H16V6Z",unfold:"M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z",file:"M16.5,6V17.5C16.5,19.71 14.71,21.5 12.5,21.5C10.29,21.5 8.5,19.71 8.5,17.5V5C8.5,3.62 9.62,2.5 11,2.5C12.38,2.5 13.5,3.62 13.5,5V15.5C13.5,16.05 13.05,16.5 12.5,16.5C11.95,16.5 11.5,16.05 11.5,15.5V6H10V15.5C10,16.88 11.12,18 12.5,18C13.88,18 15,16.88 15,15.5V5C15,2.79 13.21,1 11,1C8.79,1 7,2.79 7,5V17.5C7,20.54 9.46,23 12.5,23C15.54,23 18,20.54 18,17.5V6H16.5Z",plus:"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z",minus:"M19,13H5V11H19V13Z"};var Aa=_a;const Da={complete:"check",cancel:"cancel",close:"close",delete:"cancel",clear:"clear",success:"check_circle",info:"info",warning:"priority_high",error:"warning",prev:"chevron_left",next:"chevron_right",checkboxOn:"check_box",checkboxOff:"check_box_outline_blank",checkboxIndeterminate:"indeterminate_check_box",delimiter:"fiber_manual_record",sort:"arrow_upward",expand:"keyboard_arrow_down",menu:"menu",subgroup:"arrow_drop_down",dropdown:"arrow_drop_down",radioOn:"radio_button_checked",radioOff:"radio_button_unchecked",edit:"edit",ratingEmpty:"star_border",ratingFull:"star",ratingHalf:"star_half",loading:"cached",first:"first_page",last:"last_page",unfold:"unfold_more",file:"attach_file",plus:"add",minus:"remove"};var Ba=Da;const Ea={complete:"mdi-check",cancel:"mdi-close-circle",close:"mdi-close",delete:"mdi-close-circle",clear:"mdi-close",success:"mdi-check-circle",info:"mdi-information",warning:"mdi-exclamation",error:"mdi-alert",prev:"mdi-chevron-left",next:"mdi-chevron-right",checkboxOn:"mdi-checkbox-marked",checkboxOff:"mdi-checkbox-blank-outline",checkboxIndeterminate:"mdi-minus-box",delimiter:"mdi-circle",sort:"mdi-arrow-up",expand:"mdi-chevron-down",menu:"mdi-menu",subgroup:"mdi-menu-down",dropdown:"mdi-menu-down",radioOn:"mdi-radiobox-marked",radioOff:"mdi-radiobox-blank",edit:"mdi-pencil",ratingEmpty:"mdi-star-outline",ratingFull:"mdi-star",ratingHalf:"mdi-star-half-full",loading:"mdi-cached",first:"mdi-page-first",last:"mdi-page-last",unfold:"mdi-unfold-more-horizontal",file:"mdi-paperclip",plus:"mdi-plus",minus:"mdi-minus"};var Ma=Ea;const Va={complete:"fas fa-check",cancel:"fas fa-times-circle",close:"fas fa-times",delete:"fas fa-times-circle",clear:"fas fa-times-circle",success:"fas fa-check-circle",info:"fas fa-info-circle",warning:"fas fa-exclamation",error:"fas fa-exclamation-triangle",prev:"fas fa-chevron-left",next:"fas fa-chevron-right",checkboxOn:"fas fa-check-square",checkboxOff:"far fa-square",checkboxIndeterminate:"fas fa-minus-square",delimiter:"fas fa-circle",sort:"fas fa-sort-up",expand:"fas fa-chevron-down",menu:"fas fa-bars",subgroup:"fas fa-caret-down",dropdown:"fas fa-caret-down",radioOn:"far fa-dot-circle",radioOff:"far fa-circle",edit:"fas fa-edit",ratingEmpty:"far fa-star",ratingFull:"fas fa-star",ratingHalf:"fas fa-star-half",loading:"fas fa-sync",first:"fas fa-step-backward",last:"fas fa-step-forward",unfold:"fas fa-arrows-alt-v",file:"fas fa-paperclip",plus:"fas fa-plus",minus:"fas fa-minus"};var cs=Va;const La={complete:"fa fa-check",cancel:"fa fa-times-circle",close:"fa fa-times",delete:"fa fa-times-circle",clear:"fa fa-times-circle",success:"fa fa-check-circle",info:"fa fa-info-circle",warning:"fa fa-exclamation",error:"fa fa-exclamation-triangle",prev:"fa fa-chevron-left",next:"fa fa-chevron-right",checkboxOn:"fa fa-check-square",checkboxOff:"fa fa-square-o",checkboxIndeterminate:"fa fa-minus-square",delimiter:"fa fa-circle",sort:"fa fa-sort-up",expand:"fa fa-chevron-down",menu:"fa fa-bars",subgroup:"fa fa-caret-down",dropdown:"fa fa-caret-down",radioOn:"fa fa-dot-circle-o",radioOff:"fa fa-circle-o",edit:"fa fa-pencil",ratingEmpty:"fa fa-star-o",ratingFull:"fa fa-star",ratingHalf:"fa fa-star-half-o",loading:"fa fa-refresh",first:"fa fa-step-backward",last:"fa fa-step-forward",unfold:"fa fa-angle-double-down",file:"fa fa-paperclip",plus:"fa fa-plus",minus:"fa fa-minus"};var Oa=La;function Pa(t,e){const i={};for(const s in e)i[s]={component:t,props:{icon:e[s].split(" fa-")}};return i}var Ha=Pa("font-awesome-icon",cs),Fa=Object.freeze({mdiSvg:Aa,md:Ba,mdi:Ma,fa:cs,fa4:Oa,faSvg:Ha});class We extends mt{constructor(e){super();const{iconfont:i,values:s,component:n}=e[We.property];this.component=n,this.iconfont=i,this.values=Nt(Fa[i],s)}}We.property="icons";const us="$vuetify.",ds=Symbol("Lang fallback");function ps(t,e,i=!1,s){const n=e.replace(us,"");let r=y(t,n,ds);return r===ds&&(i?(X(`Translation key "${n}" not found in fallback`),r=e):(V(`Translation key "${n}" not found, falling back to default`),r=ps(s,e,!0,s))),r}class ze extends mt{constructor(e){super();this.defaultLocale="en";const{current:i,locales:s,t:n}=e[ze.property];this.current=i,this.locales=s,this.translator=n||this.defaultTranslator}currentLocale(e){const i=this.locales[this.current],s=this.locales[this.defaultLocale];return ps(i,e,!1,s)}t(e,...i){return e.startsWith(us)?this.translator(e,...i):this.replace(e,i)}defaultTranslator(e,...i){return this.replace(this.currentLocale(e),i)}replace(e,i){return e.replace(/\{(\d+)\}/g,(s,n)=>String(i[+n]))}}ze.property="lang";var td="",Na={badge:"Badge",close:"Close",dataIterator:{noResultsText:"No matching records found",loadingText:"Loading items..."},dataTable:{itemsPerPageText:"Rows per page:",ariaLabel:{sortDescending:"Sorted descending.",sortAscending:"Sorted ascending.",sortNone:"Not sorted.",activateNone:"Activate to remove sorting.",activateDescending:"Activate to sort descending.",activateAscending:"Activate to sort ascending."},sortBy:"Sort by"},dataFooter:{itemsPerPageText:"Items per page:",itemsPerPageAll:"All",nextPage:"Next page",prevPage:"Previous page",firstPage:"First page",lastPage:"Last page",pageText:"{0}-{1} of {2}"},datePicker:{itemsSelected:"{0} selected",nextMonthAriaLabel:"Next month",nextYearAriaLabel:"Next year",prevMonthAriaLabel:"Previous month",prevYearAriaLabel:"Previous year"},noDataText:"No data available",carousel:{prev:"Previous visual",next:"Next visual",ariaLabel:{delimiter:"Carousel slide {0} of {1}"}},calendar:{moreEvents:"{0} more"},fileInput:{counter:"{0} files",counterSize:"{0} files ({1} in total)"},timePicker:{am:"AM",pm:"PM"},pagination:{ariaLabel:{wrapper:"Pagination Navigation",next:"Next page",previous:"Previous page",page:"Goto Page {0}",currentPage:"Current Page, Page {0}"}},rating:{ariaLabel:{icon:"Rating {0} of {1}"}}};const Wa={breakpoint:{mobileBreakpoint:1264,scrollBarWidth:16,thresholds:{xs:600,sm:960,md:1280,lg:1920}},icons:{iconfont:"mdi",values:{}},lang:{current:"en",locales:{en:Na},t:void 0},rtl:!1,theme:{dark:!1,default:"light",disable:!1,options:{cspNonce:void 0,customProperties:void 0,minifyTheme:void 0,themeCache:void 0,variations:!0},themes:{light:{primary:"#1976D2",secondary:"#424242",accent:"#82B1FF",error:"#FF5252",info:"#2196F3",success:"#4CAF50",warning:"#FB8C00"},dark:{primary:"#2196F3",secondary:"#424242",accent:"#FF4081",error:"#FF5252",info:"#2196F3",success:"#4CAF50",warning:"#FB8C00"}}}};class fs extends mt{constructor(e,i){super();const s=Nt({},Wa),{userPreset:n}=i,o=n,{preset:r={}}=o,a=Z(o,["preset"]);r.preset!=null&&V("Global presets do not support the **preset** option, it can be safely omitted"),i.preset=Nt(Nt(s,r),a)}}fs.property="presets";const za=[[3.2406,-1.5372,-.4986],[-.9689,1.8758,.0415],[.0557,-.204,1.057]],Ra=t=>t<=.0031308?t*12.92:1.055*t**(1/2.4)-.055,Ya=[[.4124,.3576,.1805],[.2126,.7152,.0722],[.0193,.1192,.9505]],ja=t=>t<=.04045?t/12.92:((t+.055)/1.055)**2.4;function ms(t){const e=Array(3),i=Ra,s=za;for(let n=0;n<3;++n)e[n]=Math.round(qe(i(s[n][0]*t[0]+s[n][1]*t[1]+s[n][2]*t[2]))*255);return(e[0]<<16)+(e[1]<<8)+(e[2]<<0)}function ue(t){const e=[0,0,0],i=ja,s=Ya,n=i((t>>16&255)/255),r=i((t>>8&255)/255),a=i((t>>0&255)/255);for(let o=0;o<3;++o)e[o]=s[o][0]*n+s[o][1]*r+s[o][2]*a;return e}function gs(t){return!!t&&!!t.match(/^(#|var\(--|(rgb|hsl)a?\()/)}function Qe(t){let e;if(typeof t=="number")e=t;else if(typeof t=="string"){let i=t[0]==="#"?t.substring(1):t;i.length===3&&(i=i.split("").map(s=>s+s).join("")),i.length!==6&&V(`'${t}' is not a valid rgb color`),e=parseInt(i,16)}else throw new TypeError(`Colors can only be numbers or strings, recieved ${t==null?t:t.constructor.name} instead`);return e<0?(V(`Colors cannot be negative: '${t}'`),e=0):(e>16777215||isNaN(e))&&(V(`'${t}' is not a valid rgb color`),e=16777215),e}function Wt(t){let e=t.toString(16);return e.length<6&&(e="0".repeat(6-e.length)+e),"#"+e}function Ga(t){return Wt(Qe(t))}function de(t){const{h:e,s:i,v:s,a:n}=t,r=o=>{const h=(o+e/60)%6;return s-s*i*Math.max(Math.min(h,4-h,1),0)},a=[r(5),r(3),r(1)].map(o=>Math.round(o*255));return{r:a[0],g:a[1],b:a[2],a:n}}function vs(t){if(!t)return{h:0,s:1,v:1,a:1};const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),r=Math.min(e,i,s);let a=0;n!==r&&(n===e?a=60*(0+(i-s)/(n-r)):n===i?a=60*(2+(s-e)/(n-r)):n===s&&(a=60*(4+(e-i)/(n-r)))),a<0&&(a=a+360);const o=n===0?0:(n-r)/n,h=[a,o,n];return{h:h[0],s:h[1],v:h[2],a:t.a}}function Je(t){const{h:e,s:i,v:s,a:n}=t,r=s-s*i/2,a=r===1||r===0?0:(s-r)/Math.min(r,1-r);return{h:e,s:a,l:r,a:n}}function Ua(t){const{h:e,s:i,l:s,a:n}=t,r=s+i*Math.min(s,1-s),a=r===0?0:2-2*s/r;return{h:e,s:a,v:r,a:n}}function ys(t){return`rgba(${t.r}, ${t.g}, ${t.b}, ${t.a})`}function Xa(t){return ys(p(l({},t),{a:1}))}function bs(t){const e=i=>{const s=Math.round(i).toString(16);return("00".substr(0,2-s.length)+s).toUpperCase()};return`#${[e(t.r),e(t.g),e(t.b),e(Math.round(t.a*255))].join("")}`}function Ka(t){const e=Ta(t.slice(1),2).map(i=>parseInt(i,16));return{r:e[0],g:e[1],b:e[2],a:Math.round(e[3]/255*100)/100}}function qa(t){const e=Ka(t);return vs(e)}function $s(t){return bs(de(t))}function ti(t){return t.startsWith("#")&&(t=t.slice(1)),t=t.replace(/([^0-9a-f])/gi,"F"),(t.length===3||t.length===4)&&(t=t.split("").map(e=>e+e).join("")),t.length===6?t=Ze(t,8,"F"):t=Ze(Ze(t,6),8,"F"),`#${t}`.toUpperCase().substr(0,9)}function Ss(t){return(t.r<<16)+(t.g<<8)+t.b}function xs(t,e){const[,i]=ue(Ss(t)),[,s]=ue(Ss(e));return(Math.max(i,s)+.05)/(Math.min(i,s)+.05)}const pe=.20689655172413793,Za=t=>t>pe**3?Math.cbrt(t):t/(3*pe**2)+4/29,Qa=t=>t>pe?t**3:3*pe**2*(t-4/29);function Cs(t){const e=Za,i=e(t[1]);return[116*i-16,500*(e(t[0]/.95047)-i),200*(i-e(t[2]/1.08883))]}function ws(t){const e=Qa,i=(t[0]+16)/116;return[e(i+t[1]/500)*.95047,e(i),e(i-t[2]/200)*1.08883]}function ks(t,e=!1,i=!0){const o=t,{anchor:s}=o,n=Z(o,["anchor"]),r=Object.keys(n),a={};for(let h=0;h<r.length;++h){const c=r[h],u=t[c];u!=null&&(i?e?(c==="base"||c.startsWith("lighten")||c.startsWith("darken"))&&(a[c]=Ga(u)):typeof u=="object"?a[c]=ks(u,!0,i):a[c]=io(c,Qe(u)):a[c]={base:Wt(Qe(u))})}return e||(a.anchor=s||a.base||a.primary.base),a}const Ja=(t,e)=>`
@@ -1,2 +1,2 @@
1
- export * from "./vuetify.33dafc.js";
2
- export { default } from "./vuetify.33dafc.js";
1
+ export * from "./vuetify.69b350.js";
2
+ export { default } from "./vuetify.69b350.js";
package/dist/index.html CHANGED
@@ -7,7 +7,7 @@
7
7
  rel="stylesheet"
8
8
  href="https://fonts.googleapis.com/css?family=Titillium+Web"
9
9
  />
10
- <script type="module" crossorigin src="./assets/index.6a83278e.js"></script>
10
+ <script type="module" crossorigin src="./assets/index.83d29643.js"></script>
11
11
  <link rel="stylesheet" href="./assets/index.60dea538.css">
12
12
  </head>
13
13
  <body style="height: 100vH;">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vcmap/ui",
3
- "version": "5.0.0-rc.6",
3
+ "version": "5.0.0-rc.7",
4
4
  "author": "Virtual City Systems",
5
5
  "license": "MIT",
6
6
  "scripts": {
@@ -41,9 +41,9 @@
41
41
  "vue-i18n": "^8.24.1"
42
42
  },
43
43
  "peerDependencies": {
44
- "@vcmap/cesium": "~1.92.1",
45
- "@vcmap/core": "^5.0.0-rc.10",
46
- "@vcsuite/ui-components": "~0.1.13",
44
+ "@vcmap/cesium": "~1.93.1",
45
+ "@vcmap/core": "^5.0.0-rc.11",
46
+ "@vcsuite/ui-components": "~0.1.15",
47
47
  "@vue/composition-api": "~1.4.5",
48
48
  "ol": "~6.13.0",
49
49
  "vue": "~2.6.14",
@@ -87,6 +87,45 @@ export function createToggleAction(actionOptions, windowComponent, windowManager
87
87
  return { action, destroy };
88
88
  }
89
89
 
90
+ /**
91
+ * Creates an action which will toggle the overview map (opening & closing the window and activating/ deactivating the overview map).
92
+ * @param {OverviewMap} overviewMap
93
+ * @param {WindowComponentOptions} windowComponent
94
+ * @param {WindowManager} windowManager
95
+ * @returns {(function(): void)|*}
96
+ */
97
+ export function createOverviewMapAction(overviewMap, windowComponent, windowManager) {
98
+ const { action, destroy } = createToggleAction(
99
+ {
100
+ name: 'overviewMapToggle',
101
+ icon: '$vcsMap',
102
+ title: 'Overview Map',
103
+ },
104
+ windowComponent,
105
+ windowManager,
106
+ vcsAppSymbol,
107
+ );
108
+
109
+ const listeners = [
110
+ windowManager.added.addEventListener(async ({ id }) => {
111
+ if (id === windowComponent.id) {
112
+ await overviewMap.activate();
113
+ }
114
+ }),
115
+ windowManager.removed.addEventListener(({ id }) => {
116
+ if (id === windowComponent.id) {
117
+ overviewMap.deactivate();
118
+ }
119
+ }),
120
+ ];
121
+
122
+ const destroyAction = () => {
123
+ destroy();
124
+ listeners.forEach((cb) => { cb(); });
125
+ };
126
+ return { action, destroy: destroyAction };
127
+ }
128
+
90
129
  /**
91
130
  * Creates a header less window which will close if anything outside of the window is clicked. The window will open
92
131
  * at the clicked position (the actions position) by default, unless the window component already has a position set.
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <v-app-bar app absolute dense>
2
+ <v-app-bar app absolute dense elevation="0" color="var(--v-basic-base)">
3
3
  <v-container fluid class="pa-0">
4
4
  <v-row no-gutters>
5
5
  <v-col>
@@ -12,6 +12,7 @@
12
12
  />
13
13
  <v-divider
14
14
  v-if="mapActions.length > 0 && (contentActions.length > 0 || toolActions.length > 0)"
15
+ class="mx-2"
15
16
  vertical
16
17
  inset
17
18
  />
@@ -21,6 +22,7 @@
21
22
  />
22
23
  <v-divider
23
24
  v-if="contentActions.length > 0 && toolActions.length > 0"
25
+ class="mx-2"
24
26
  vertical
25
27
  inset
26
28
  />
@@ -45,7 +47,27 @@
45
47
  v-if="projectActions.length > 0 && menuActions.length > 0"
46
48
  vertical
47
49
  inset
50
+ class="mx-2"
48
51
  />
52
+ <v-menu
53
+ offset-y
54
+ v-if="shareActions.length > 0"
55
+ >
56
+ <template #activator="{ on, attrs }">
57
+ <VcsButton
58
+ v-bind="attrs"
59
+ v-on="on"
60
+ large
61
+ tooltip="Share current view of the map."
62
+ icon="$vcsShare"
63
+ />
64
+ </template>
65
+ <VcsActionList
66
+ :actions="shareActions"
67
+ tooltip-position="left"
68
+ :show-icon="true"
69
+ />
70
+ </v-menu>
49
71
  <VcsActionButtonList
50
72
  :actions="menuActions"
51
73
  :overflow-count="3"
@@ -59,15 +81,21 @@
59
81
  </v-app-bar>
60
82
  </template>
61
83
 
84
+ <style lang="scss" scoped>
85
+ .v-toolbar__items > div{
86
+ gap: 8px;
87
+ }
88
+ </style>
89
+
62
90
  <script>
63
91
 
64
- import { VcsActionButtonList } from '@vcsuite/ui-components';
92
+ import { VcsActionButtonList, VcsActionList, VcsButton } from '@vcsuite/ui-components';
65
93
  import { inject, ref, computed } from '@vue/composition-api';
66
94
  import { ButtonLocation, getActionsByLocation } from '../manager/buttonManager.js';
67
95
 
68
96
  export default {
69
97
  name: 'VcsNavbar',
70
- components: { VcsActionButtonList },
98
+ components: { VcsActionButtonList, VcsActionList, VcsButton },
71
99
  setup() {
72
100
  const app = inject('vcsApp');
73
101
 
@@ -82,6 +110,7 @@
82
110
  contentActions: getActions(ButtonLocation.CONTENT),
83
111
  toolActions: getActions(ButtonLocation.TOOL),
84
112
  projectActions: getActions(ButtonLocation.PROJECT),
113
+ shareActions: getActions(ButtonLocation.SHARE),
85
114
  menuActions: getActions(ButtonLocation.MENU),
86
115
  };
87
116
  },
@@ -53,6 +53,7 @@
53
53
  },
54
54
  setup(props) {
55
55
  const id = uuid();
56
+ const mapId = `mapCollection-${id}`;
56
57
  const app = getVcsAppById(props.appId);
57
58
  provide('vcsApp', app);
58
59
 
@@ -115,6 +116,7 @@
115
116
  plugin.onVcsAppMounted(app);
116
117
  }
117
118
  });
119
+ app.maps.setTarget(mapId);
118
120
  });
119
121
 
120
122
  onUnmounted(() => {
@@ -134,7 +136,7 @@
134
136
  });
135
137
 
136
138
  return {
137
- mapId: `mapCollection-${id}`,
139
+ mapId,
138
140
  toolboxManagerVisible: app.toolboxManager.state.visible,
139
141
  };
140
142
  },
@@ -25,33 +25,14 @@
25
25
  </style>
26
26
 
27
27
  <script >
28
- import { inject, onMounted, isReactive } from '@vue/composition-api';
29
- import { getLogger as getLoggerByName } from '@vcsuite/logger';
30
-
31
- /**
32
- * @returns {Logger}
33
- */
34
- function getLogger() {
35
- return getLoggerByName('VcsMap');
36
- }
37
-
38
28
 
39
29
  export default {
30
+ name: 'VcsMap',
40
31
  props: {
41
32
  mapId: {
42
33
  type: String,
43
34
  required: true,
44
35
  },
45
36
  },
46
- setup(props) {
47
- const app = inject('vcsApp');
48
-
49
- onMounted(async () => {
50
- app.maps.setTarget(props.mapId);
51
- if (isReactive(app.maps.activeMap)) {
52
- getLogger().error('Map is reactive, PLEASE FIX');
53
- }
54
- });
55
- },
56
37
  };
57
38
  </script>
@@ -41,7 +41,8 @@ export const ButtonLocation = {
41
41
  CONTENT: 1,
42
42
  TOOL: 2,
43
43
  PROJECT: 3,
44
- MENU: 4,
44
+ SHARE: 4,
45
+ MENU: 5,
45
46
  };
46
47
 
47
48
  /**
@@ -1,36 +1,43 @@
1
1
  <template>
2
- <div
2
+ <v-sheet
3
3
  :id="`window-component--${windowState.id}`"
4
- class="vsc-window v-sheet elevation-0 position-absolute"
4
+ class="elevation-3 position-absolute d-flex flex-column"
5
5
  ref="windowComponentRef"
6
6
  @click="clicked"
7
+ :class="{
8
+ 'rounded': !isDocked,
9
+ 'marginToTop': isDocked
10
+ }"
7
11
  >
8
- <v-sheet
12
+ <div
9
13
  v-if="!windowState.hideHeader"
10
14
  ref="draggableHeaderRef"
11
- class="v-sheet elevation-3 pa-2 transition-color-100-ease"
15
+ class="pa-2"
12
16
  :class="{
13
17
  'cursor-grab': isDynamic,
14
18
  'grey--text': !isOnTop,
15
- 'rounded-tl': !isDocked,
16
- 'rounded-tr': !isDocked,
17
19
  }"
18
20
  :draggable="isDynamic"
19
21
  >
20
22
  <slot name="headerComponent" />
21
- </v-sheet>
22
- <v-sheet
23
- class="v-sheet elevation-3 overflow-y-auto overflow-x-hidden w-full h-full"
24
- :class="{
25
- 'rounded-br': !isDocked,
26
- 'rounded-bl': !isDocked,
27
- }"
23
+ </div>
24
+ <v-divider />
25
+ <div
26
+ class="overflow-x-hidden"
28
27
  >
29
28
  <slot />
30
- </v-sheet>
31
- </div>
29
+ </div>
30
+ </v-sheet>
32
31
  </template>
33
32
 
33
+ <style scoped>
34
+
35
+ .marginToTop {
36
+ margin-top: 2px;
37
+ }
38
+
39
+ </style>
40
+
34
41
  <script>
35
42
  import {
36
43
  onMounted, onUnmounted, computed, ref, nextTick,
@@ -58,8 +65,8 @@
58
65
  setup({ windowState, slotWindow }, { emit }) {
59
66
  const draggableHeaderRef = ref(null);
60
67
  const windowComponentRef = ref(null);
61
- const isDynamic = computed(() => slotWindow !== WindowSlot.STATIC);
62
- const isDocked = computed(() => slotWindow !== WindowSlot.DETACHED);
68
+ const isDynamic = computed(() => slotWindow.value !== WindowSlot.STATIC);
69
+ const isDocked = computed(() => slotWindow.value !== WindowSlot.DETACHED);
63
70
  const clicked = (e) => {
64
71
  emit('click', e);
65
72
  };
@@ -69,8 +76,7 @@
69
76
  onMounted(() => {
70
77
  if (!windowState.hideHeader && slotWindow.value !== WindowSlot.STATIC) {
71
78
  nextTick(() => {
72
- // To get to the Root Element of a Custom Component .$el is used here.
73
- const dragStart = fromEvent(draggableHeaderRef.value.$el, 'dragstart');
79
+ const dragStart = fromEvent(draggableHeaderRef.value, 'dragstart');
74
80
  const dragOver = fromEvent(document.body, 'dragover');
75
81
  const drop = fromEvent(document.body, 'drop');
76
82
  const dragThenDrop = dragStart.pipe(
@@ -82,7 +88,8 @@
82
88
  });
83
89
  }),
84
90
  switchMap((startEvent) => {
85
- const style = window.getComputedStyle(windowComponentRef.value, null);
91
+ // To get to the Root Element of a Custom Component .$el is used here.
92
+ const style = window.getComputedStyle(windowComponentRef.value.$el, null);
86
93
  const windowPosition = {
87
94
  top: parseInt(style.getPropertyValue('top'), 10),
88
95
  left: parseInt(style.getPropertyValue('left'), 10),
@@ -1,27 +1,34 @@
1
1
  <template>
2
- <span class="d-flex justify-space-between">
2
+ <span class="d-flex justify-space-between align-center window-component-header">
3
3
  <span>
4
4
  <v-icon
5
5
  v-if="windowState.headerIcon"
6
6
  class="mr-2 primary--text"
7
7
  v-text="windowState.headerIcon"
8
8
  />
9
- <h3 class="font-size-14 d-inline-block user-select-none">
9
+ <h3 class="font-size-14 d-inline-block user-select-none font-weight-bold">
10
10
  {{ windowState.headerTitle | translate }}
11
11
  </h3>
12
12
  </span>
13
- <v-icon
14
- class=".float-right"
13
+ <VcsButton
15
14
  @click.stop="close"
16
- size="16"
17
- v-text="'mdi-close-thick'"
15
+ small
16
+ icon="mdi-close-thick"
18
17
  />
19
18
  </span>
20
19
  </template>
21
20
 
21
+ <style>
22
+ .window-component-header{
23
+ max-height: 16px;
24
+ }
25
+ </style>
26
+
22
27
  <script>
28
+ import { VcsButton } from '@vcsuite/ui-components';
23
29
 
24
30
  export default {
31
+ components: { VcsButton },
25
32
  props: {
26
33
  windowState: {
27
34
  type: Object,
@@ -22,17 +22,28 @@
22
22
  <v-row v-if="is3D" justify="center">
23
23
  <TiltSlider v-model="tilt" />
24
24
  </v-row>
25
+ <v-row justify="center">
26
+ <OrientationToolsButton
27
+ :icon="overviewAction.icon"
28
+ :tooltip="overviewAction.title"
29
+ :color="overviewAction.active ? 'primary' : undefined"
30
+ @click.stop="overviewAction.callback($event)"
31
+ />
32
+ </v-row>
25
33
  </v-container>
26
34
  </template>
27
35
 
28
36
  <script>
29
- import { computed, inject, ref } from '@vue/composition-api';
37
+ import { computed, inject, ref, onUnmounted } from '@vue/composition-api';
30
38
  import { ObliqueMap, CesiumMap, OpenlayersMap } from '@vcmap/core';
31
39
  import { unByKey } from 'ol/Observable.js';
40
+ import { createOverviewMapAction } from '../actions/actionHelper.js';
41
+ import { getWindowComponentOptions } from './overviewMap.js';
32
42
  import VcsCompass from './vcsCompass.vue';
33
43
  import VcsZoomButton from './vcsZoomButton.vue';
34
44
  import TiltSlider from './tiltSlider.vue';
35
45
  import ObliqueRotation from './obliqueRotation.vue';
46
+ import OrientationToolsButton from './orientationToolsButton.vue';
36
47
 
37
48
  /**
38
49
  * @enum {string}
@@ -99,6 +110,7 @@
99
110
 
100
111
  export default {
101
112
  components: {
113
+ OrientationToolsButton,
102
114
  ObliqueRotation,
103
115
  TiltSlider,
104
116
  VcsZoomButton,
@@ -145,6 +157,18 @@
145
157
  },
146
158
  });
147
159
 
160
+ const { action, destroy } = createOverviewMapAction(
161
+ app.overviewMap,
162
+ getWindowComponentOptions(),
163
+ app.windowManager,
164
+ );
165
+
166
+ onUnmounted(() => {
167
+ if (destroy) {
168
+ destroy();
169
+ }
170
+ });
171
+
148
172
  return {
149
173
  viewMode,
150
174
  heading,
@@ -155,6 +179,7 @@
155
179
  zoomOut() { zoom(app.maps.activeMap, true); },
156
180
  left: () => {},
157
181
  right: () => {},
182
+ overviewAction: ref(action),
158
183
  };
159
184
  },
160
185
  };