UNPKG

@progress/kendo-vue-gauges

Version:
9 lines (8 loc) 3.52 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("vue"),g=require("@progress/kendo-vue-intl"),l=require("./theming/theme-service.js"),p=require("./store/store.js"),v=require("./store/reducer.js"),a=require("@progress/kendo-vue-common"),f=require("./package-metadata.js"),m=o.defineComponent({name:"KendoBaseGauge",props:{dir:String,renderAs:{type:String,default:"svg",validator:function(e){return["svg","canvas"].includes(e)}},scale:Object,value:Number,pointer:{type:[Object,Array],default:function(){}},gaugeConstructor:[Object,Function],deriveOptionsFromParent:Function,transitions:{type:Boolean,default:void 0},getTarget:Function,onRender:Function},created(){a.validatePackage(f.packageMetadata),this.gaugeInstance=null,this.themeStore={},this._prevRenderAs=this.renderAs,this._prevDir=this.dir,this._prevScale=this.scale,this.themeStore=p.default(v.themeReducer)},mounted(){l.loadTheme(this.themeStore,this.instantiateCoreGauge.bind(this),this.$el),this.themeUnsubscriber=this.themeStore.subscribe(this.refresh.bind(this)),window.addEventListener("resize",this.onWindowResize)},watch:{dir:function(e,t){this._prevDir=t},renderAs:function(e,t){this._prevRenderAs=t},scale:function(e,t){this._prevScale=t}},updated(){const{dir:e,getTarget:t,gaugeConstructor:n,className:s,renderAs:u,scale:h,...r}=this.$props;if(this.gaugeInstance!==null){const c=this._prevDir!==e||this._prevRenderAs!==u||this._prevScale!==h,i=r;c||this.gaugeInstance.noTransitionsRedraw(),c||(u||"svg")!==(this._prevRenderAs||"svg")?this.refresh():Object.keys(r).indexOf("pointer")>-1&&r.pointer?Array.isArray(i.pointer)?this.refreshAllValues(i.pointer.map(d=>d.value)):this.refreshValue((i.pointer||{}).value):this.refreshValue(i.value),this._prevDir!==e&&this.gaugeInstance.setDirection(this.getDirection(e)),this.$emit("render",{sender:this})}},destroyed(){this.themeUnsubscriber(),this.gaugeInstance!==null&&(this.gaugeInstance.destroy(),this.gaugeInstance=null),window.removeEventListener("resize",this.onWindowResize)},setup:function(){return{kendoIntlService:o.inject("kendoIntlService",{})}},render(){const e=a.getDefaultSlots(this),t=Object.assign({},{position:"relative"});return this._intl=g.provideIntlService(this),o.createVNode("div",{style:t},[e])},methods:{instantiateCoreGauge(){const{dir:e,gaugeConstructor:t}=this.$props,n=this.getGaugeOptions();this.gaugeInstance=new t(this.$el,n,this.themeStore.getState(),{rtl:this.getDirection(e),intlService:this._intl,sender:this})},refresh(){if(this.gaugeInstance!==null){const e=this.themeStore.getState(),t=this.getGaugeOptions();this.gaugeInstance.setOptions(t,e)}},refreshValue(e){this.gaugeInstance.value(e)},refreshAllValues(e){this.gaugeInstance.allValues(e)},getDirection(e){return(e!==void 0?e:a.canUseDOM&&window.getComputedStyle(this.$el).direction||"ltr")==="rtl"},getGaugeOptions(){const{renderAs:e,transitions:t,deriveOptionsFromParent:n}=this.$props;let s=Object.assign({renderAs:e,transitions:t});return n&&(s=n(s)),s},onWindowResize(){this.gaugeInstance!==null&&(this.gaugeInstance.resize(),this.$emit("render",{sender:this}))}}});exports.BaseGauge=m;