realchart 1.2.4 → 1.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.
package/gauge.js CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  /**
3
- * RealChart Gauge v1.2.4
4
- * Copyright (C) 2023-2024 WooriTech Inc.
3
+ * RealChart Gauge v1.3.0
4
+ * Copyright (C) 2023-2025 WooriTech Inc.
5
5
  * All Rights Reserved.
6
6
  */
7
7
  !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("realchart")):"function"==typeof define&&define.amd?define(["exports","realchart"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).RealChartGauge={},e.RealChart)}(this,(function(e,t){"use strict";function i(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(i){if("default"!==i){var s=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,s.get?s:{enumerable:!0,get:function(){return e[i]}})}})),t.default=e,Object.freeze(t)}var s=i(t);class a extends t.GaugeItem{getRange(e,t){const i=this.$_internalRanges(e);if(i)for(const e of i)if(t>=e.fromValue&&t<e.toValue)return e}_doApply(e){const t=this;var i;super._doApply(e),(i=e.ranges)!==t._ranges&&(t._ranges=i,t._runRanges=null)}$_internalRanges(e){return this._runRanges||(this._runRanges=t.buildValueRanges(this._ranges,e.minValue,e.maxValue,this._op.rangeInclusive)),this._runRanges}}a.defaults=t.extend(t.ChartItem.defaults,{rangeInclusive:!0});class n extends a{getSegmentThickness(e){return t.calcPercent(this._segmentThicknessDim,e,e)}_doApply(e){super._doApply(e),this._setDim(e,"segmentThickness")}}n.defaults=t.extend(a.defaults,{segmentGap:0});class l extends a{getThickness(e){return t.calcPercent(this._thicknessDim,e,e)}_doApply(e){super._doApply(e),this._setDim(e,"thickness")}}l.defaults=t.extend(a.defaults,{thickness:"100%",stroked:!1});class r extends t.GaugeItem{}r.defaults=t.extend(t.ChartItem.defaults,{visible:!1});class h extends t.GaugeItem{getExtents(e){return{radius:t.calcPercent(this._radiusDim,e,0),length:t.calcPercent(this._lengthDim,e,0),offset:t.calcPercent(this._offsetDim,e,0)}}_doApply(e){super._doApply(e),this._setDims(e,"radius","length","offset")}}h.defaults=t.extend(t.ChartItem.defaults,{visible:!1,radius:3,length:"100%",offset:0});class o extends t.GaugeItem{getRadius(e){return t.calcPercent(this._radiusDim,e,0)}_doApply(e){super._doApply(e),this._setDim(e,"radius")}}o.defaults=t.extend(t.ChartItem.defaults,{visible:!1,radius:5});class c extends t.GaugeScale{_getStepMultiples(e){return[1,2,2.5,5,10]}}c.defaults=t.extend(t.GaugeScale.defaults,{visible:!1,stepPixels:72});class d extends t.CircularGauge{_doInitChildren(e){super._doInitChildren(e),e.band=(this._band=new t.GaugeRangeBand(this)).init(),e.scale=(this._scale=new c(this)).init(),e.rim=(this._rim=new n(this)).init(),e.valueRim=(this._valueRim=new l(this)).init(),e.hand=(this._hand=new h(this)).init(),e.pin=(this._pin=new o(this)).init()}get band(){return this._band}get scale(){return this._scale}get rim(){return this._rim}get valueRim(){return this._valueRim}get hand(){return this._hand}get pin(){return this._pin}getExtents(e){const i=super.getExtents(e),s=this.scale,a=this.band;let n=i.radius;const l=n-i.inner;if(a.visible)switch(i.bandThick=a.getThickness(l),a.options.position){case"inside":i.band=n-(l-i.bandThick)/2;break;case"opposite":i.band=i.inner-a.options.gap,i.inner=i.band-i.bandThick;break;default:i.band=n+=i.bandThick+a.options.gap}if(i.scaleTick=t.maxv(1,s.tick.options.length||0),i.scaleLabel=16,"opposite"===s.options.position)i.scale=i.inner-s.options.gap,i.inner=i.scale-i.scaleTick-i.scaleLabel;else i.scale=n+s.options.gap;return i}}d.type=t.CircleGaugeType;class u extends t.CircularGaugeGroup{_gaugesType(){return"circle"}}u.type=t.CircleGaugeGroupType,u.gaugeType=t.CircleGaugeType,u.defaults=t.extend(t.CircularGaugeGroup.defaults,{innerRadius:"50%"});class _ extends t.ValueGaugeView{}class g extends t.ScaleView{setExtents(e,t){this._center=e,this._exts=t}_createLine(e,i){return new t.ArcElement(e,i)}_doMeasure(e,t,i,s,a){const n=t._steps.length-(360===t.gauge.options.sweepAngle?1:0);return this._line.setVis(t.line.visible)&&this._line.internalSetStyleOrClass(t.line._style),this._tickContainer.setVis(t.tick.visible)&&(this._tickContainer.internalSetStyleOrClass(t.tick._style),this._ticks.prepare(n)),this._labelContainer.setVis(t.label.visible)&&(this._labelContainer.internalSetStyleOrClass(t.label._style),this._labels.prepare(n,(e=>{}))),{width:i,height:s}}_doLayout(e){const i=this.model,s=i._steps,a=i.gauge,n=a.options,l="opposite"===i.options.position?-1:1,r=a._props,h=this._center.x,o=this._center.y,c=this._exts.scale,d=c+this.model.tick.options.length*l,u=r._sweepRad,_=r._startRad,g=n.maxValue-n.minValue,p=n.clockwise;let b,w,m,x;if(this._line.visible&&this._line.setArc(h,o,c,_,p?u:-u,p),this._tickContainer.visible&&this._ticks.forEach(((e,a,n)=>{const l=i.getRate(s[a])*(p?u:-u)+_;b=h+t.cos(l)*c,w=o+t.sin(l)*c,m=h+t.cos(l)*d,x=o+t.sin(l)*d,e.setLine(b,w,m,x)})),this._labelContainer.visible){this._labels.get(0).setText(String(n.maxValue));const e=d+.2*this._labels.get(0).getBBox().height*l;this._labels.forEach(((a,r,c)=>{const d=i.getRate(s[r])*(p?u:-u)+_;a.setText(String(t.fixnum(n.minValue+i.getRate(s[r])*g)));const b=a.getBBox();m=h+t.cos(d)*(e+b.width/2*l)-b.width/2,x=o+t.sin(d)*(e+b.height/2*l)-b.height/2,a.trans(m,x)}))}}}let p=class extends t.ChartElement{constructor(e){super(e,"rct-circle-gauge-band"),this._sectorViews=new t.ElementPool(this,t.SectorElement),this.add(this._labelContainer=new t.LayerElement(e,"rct-circle-gauge-band-tick-labels")),this._labels=new t.ElementPool(this._labelContainer,t.TextElement)}setExtends(e,t){this._center=e,this._exts=t}_doLayout(e){const t=this.model,i=t.gauge,s=i.scale,a=i._props,n=this._center.x,l=this._center.y,r=this._exts.band,h=i.options.clockwise,o=1-this._exts.bandThick/r,c=t.getRanges(),d=a._sweepRad;i.options.maxValue,i.options.minValue;let u=a._startRad;this._sectorViews.prepare(c.length).forEach(((e,t)=>{const i=s.getRate(c[t].toValue-c[t].fromValue)*d;e.setSector({cx:n,cy:l,rx:r,ry:r,innerRadius:o,start:u,angle:i,clockwise:h}),e.internalClearStyleAndClass(),e.setFill(c[t].color),c[t].style&&e.addStyleOrClass(c[t].style),u+=h?i:-i}))}};class b extends t.PathElement{render(e,i){const s=e.getRadius(i);return s!==this._radius&&(this._radius=s,this.setPath((new t.PathBuilder).circle(0,0,s).end())),this.internalSetStyleOrClass(e._style),this}}class w extends t.PathElement{render(e,i){const s=e.getExtents(i);if(s.radius!==this._radius||s.length!==this._length||s.offset!==this._offset){const e=this._radius=s.radius,i=this._offset=s.offset;if(this._length=s.length,this._radius>0&&this._length>0){const s=new t.PathBuilder;s.move(-e,i).line(0,-this._length+i).line(e,i),this.setPath(s.end())}else this.setPath("")}return this.internalSetStyleOrClass(e._style),this}}class m extends _{constructor(e){super(e,"rct-circle-gauge")}_doInitContents(e,i){i.add(this._rimView=new t.SectorElement(e,"rct-circle-gauge-rim")),i.add(this._valueView=new t.SectorElement(e,"rct-circle-gauge-value")),i.add(this._innerView=new t.SectorElement(e,"rct-circle-gauge-inner")),i.add(this._textView=new t.TextElement(e,"rct-circle-gauge-label")),i.add(this._handContainer=new t.LayerElement(e,void 0)),i.add(this._scaleView=new g(e)),i.add(this._bandView=new p(e))}_backgroundView(){return this._rimView}_prepareGauge(e,t){this._rimView.setVis(t.rim.visible),this._scaleView.setVis(t.scale.visible),this._bandView.setVis(t.band.visible),this._valueView.setVis(t.valueRim.visible),t.hand.visible?(this._handView||this._handContainer.add(this._handView=new w(e,"rct-circle-gauge-hand")),this._handView.visible=!0):this._handView&&(this._handView.visible=!1),t.pin.visible?(this._pinView||this._handContainer.add(this._pinView=new b(e,"rct-circle-gauge-pin")),this._pinView.visible=!0):this._pinView&&(this._pinView.visible=!1),this._textView.setVis(t.labelVisible())&&this._textView.setStyleOrClass(t.label._style)}_renderGauge(e,i){const s=this.model,a=s.getCenter(e,i),n=s.getExtents(t.minv(e,i));this.$_renderBackground(s,a,n),this._renderValue()}_renderValue(){const e=this.model,i=e.options,s=e.scale,a=e.getProps(),n=this._getValue(e),l=s.getRate(t.pickNum(n,0)),r=this._center,h=this._exts,o=e.valueRim.getThickness(h.radiusThick),c=this._textView;if(this._valueView.visible){const s=e.valueRim,c=s.options,d=s.getRange(i,n),u=h.value+(c.stroked?0:o/2),_=this._valueView;_.setStyleOrClass(s._style),d&&(_.setStyle(c.stroked?"stroke":"fill",d.color),d.style&&_.addStyleOrClass(d.style)),c.stroked&&(_.setFill("none"),_.setStyle("strokeWidth",t.pixel(o))),_.setBoolData("stroked",c.stroked),_.setSectorEx({cx:r.x,cy:r.y,rx:u,ry:u,innerRadius:(u-o)/u,start:a._startRad,angle:a._sweepRad*l,clockwise:i.clockwise},c.stroked)}if(this._handView){const i=(a._handRad+a._sweepRad*l)*t.RAD_DEG;this._handView.render(e.hand,h.radius).transp(r).rotate(e.options.clockwise?i:-i)}if(c.visible){const t=e.label;if(t.setText(e.getLabel(t,t.options.animatable?n:i.value)),c.text=t.options.text,t.buildSvg(c,null,NaN,NaN,e,t._domain),c.setBoolData("grouped",!!e._group),e._group)this.$_layoutGroupedLabel(e,c,h);else{const e=c.getBBox(),i=t.getOffset(this.width,this.height);c.trans(r.x+i.x,r.y-e.height/2+i.y)}}}$_renderBackground(e,t,i){const s=e.getProps(),a=s._startRad;this._center=t,this._exts=i,e.scale.buildSteps(i.scale*s._sweepRad,NaN),this._rimView.visible&&(this._rimView.internalSetStyleOrClass(e.rim._style),this._rimView.setSector({cx:t.x,cy:t.y,rx:i.radius,ry:i.radius,innerRadius:1-i.radiusThick/i.radius,start:a,angle:s._sweepRad,clockwise:e.options.clockwise})),this._scaleView.visible&&(this._scaleView.setStyleOrClass(e.scale._style),this._scaleView.measure(this.doc,e.scale,this.width,this.height,0),this._scaleView.setExtents(t,i),this._scaleView.layout()),this._bandView.visible&&(this._bandView.setStyleOrClass(e.band._style),this._bandView.measure(this.doc,e.band,this.width,this.height,0),this._bandView.setExtends(t,i),this._bandView.layout()),this._innerView.setStyleOrClass(e.options.innerStyle);let n=i.inner;const l=getComputedStyle(this._innerView.dom),r=parseFloat(l.strokeWidth);r>1&&(n-=r/2),this._innerView.setSector({cx:t.x,cy:t.y,rx:n,ry:n,innerRadius:0,start:0,angle:2*Math.PI,clockwise:!0}),this._pinView&&this._pinView.render(e.pin,n).trans(t.x,t.y)}$_layoutGroupedLabel(e,i,s){const a=i.getBBox(),n=this._rimView.getBBox(),l=+e._group.options.labelGap||0;i.anchor=t.TextAnchor.END,i.trans(n.x+n.width/2-l,n.y+(s.radius-s.inner-a.height)/2)}}class x extends t.GaugeGroupView{constructor(e){super(e,"rct-circle-gauge-group")}_createPool(e){return new t.ElementPool(e,m)}_doRenderGauges(e,i,s,a){const n=this.doc,l=this.model,r=l.props.getCenter(s,a),h=l.props.getExtents(t.minv(s,a));l.setChildExtents(h),s=a=2*h.radius,i.forEach(((e,t)=>{e.measure(n,l.getVisible(t),s,a,0),e.resize(s,a),e.layout()})),e.trans(r.x-h.radius,r.y-h.radius)}}class y extends t.GaugeScale{}class V extends t.GaugeLabel{getWidth(e){return t.calcPercent(this._widthDim,e)}getHeight(e){return t.calcPercent(this._heightDim,e)}getMaxWidth(e){return t.calcPercent(this._maxWidthDim,e)}getMaxHeight(e){return t.calcPercent(this._maxHeightDim,e)}getGap(e){return t.calcPercent(this._gapDim,e,0)}_doApply(e){super._doApply(e),this._setDims(e,"width","height","maxWidth","maxHeight","gap")}}V.defaults=t.extend(t.GaugeLabel.defaults,{maxWidth:"30%",maxHeight:"30%",gap:10});class v extends t.ValueGauge{_doInitChildren(e){super._doInitChildren(e),e.label=(this._label=new V(this.chart)).init(),e.scale=(this._scale=new y(this)).init()}get label(){return this._label}get scale(){return this._scale}isVertical(){return this._group?this._group.options.vertical:this._op.vertical}scaleVisible(){return!this._group&&this._scale.visible}calcedMinMax(){return this._scale.range()}_doPrepareRender(e){super._doPrepareRender(e),this._label._prepareRender()}}v.defaults=t.extend(t.ValueGauge.defaults,{reversed:!1});class f extends t.GaugeItem{constructor(){super(...arguments),this._args={gauge:null,value:NaN}}getStyle(e,t){if(this._op.styleCallback){this._args.gauge=e,this._args.value=t;return this._op.styleCallback(this._args)}}}class k extends v{_doInitChildren(e){super._doInitChildren(e),e.valueBar=(this._valueBar=new f(this)).init(),e.band=(this._band=new t.GaugeRangeBand(this)).init()}get valueBar(){return this._valueBar}get band(){return this._band}}k.type=t.LinearGaugeType;class C extends t.ChartItem{}C.defaults=t.extend(t.ChartItem.defaults,{opposite:!1,gap:10});class S extends V{}S.defaults=t.extend(V.defaults,{gap:10});class E extends t.GaugeGroup{_doInitChildren(e){super._doInitChildren(e),e.label=(this._label=new S(this.chart)).init(),e.itemLabel=(this._itemLabel=new C(this.chart)).init(),e.scale=(this._scale=new y(this)).init()}get label(){return this._label}get itemLabel(){return this._itemLabel}get scale(){return this._scale}calcedMinMax(){return this.scale.range()}}E.defaults=t.extend(t.GaugeGroup.defaults,{vertical:!1,itemGap:10});class R extends E{_doInitChildren(e){super._doInitChildren(e),e.band=(this._band=new t.GaugeRangeBand(this)).init()}get band(){return this._band}_gaugesType(){return"linear"}_doPrepareRender(e){super._doPrepareRender(e),this.band.visible&&this.band._prepareRender()}}R.type=t.LinearGaugeGroupType,R.gaugeType=t.LinearGaugeType;class G extends t.ScaleView{_createLine(e,i){return new t.LineElement(e,i)}_doMeasure(e,i,s,a,n){const l=i.options,r=i._reversed,h=i._vertical,o=i.label,c=i.tick,d=i._steps,u=d.length;let _=h?l.gap:s,g=h?a:l.gap;if(this._tickContainer.setVis(c.visible)&&(this._tickContainer.setStyleOrClass(c._style),this._ticks.prepare(u)),h?_+=c.options.length:g+=c.options.length,this._labelContainer.setVis(o.visible)&&(this._labelContainer.setStyleOrClass(o._style),this._labels.prepare(u,(t=>{t.setModel(e,o,null,null)})),u>0))if(h){let e=0;this._labels.forEach(((i,s)=>{i.setText(o.getText(d[r?s:u-1-s])),e=t.maxv(i.getBBox().width)})),_+=e}else{let e=0;this._labels.forEach(((i,s)=>{i.setText(o.getText(d[r?u-1-s:s])),e=t.maxv(i.getBBox().height)})),g+=e}return{width:_,height:g}}_doLayout(){const e=this.model;e._vertical?this.$_layoutVert(e,this.width,this.height):this.$_layoutHorz(e,this.width,this.height)}$_layoutHorz(e,t,i){const s=e.options,a=this._line,n=e.tick,l=e._steps;l.length;const r="opposite"===s.position,h=r?-n.options.length:n.options.length;let o,c=r?i-s.gap:s.gap;if(a.setVis(e.line.visible)&&(a.setStyleOrClass(e.line._style),a.setHLine(c,0,t)),this._tickContainer.setVis(n.visible)&&this._ticks.forEach(((i,s)=>{o=e.getRate(l[s])*t,i.setVLine(o,c,c+h)})),this._labelContainer.visible){const i=this._labelContainer.textAlign()||"center";let s=Number.MIN_SAFE_INTEGER;c=r?0:c+h,this._labels.forEach(((a,n)=>{a.layout(i);const r=a.getBBox();o=e.getRate(l[n])*t,a.setVis(o-r.width/2>s)&&(a.trans(o-r.width/2,c),s=o+r.width/2)}))}}$_layoutVert(e,t,i){const s=e.options,a=this._line,n=e.tick,l=e._steps;this.height,l.length;const r="opposite"===s.position,h=r?n.options.length:-n.options.length;let o,c=r?s.gap:t-s.gap;if(a.setVis(e.line.visible)&&(a.setStyleOrClass(e.line._style),a.setVLine(c,0,i)),this._tickContainer.setVis(n.visible)&&this._ticks.forEach(((t,s)=>{o=e.getRate(l[s])*i,t.setHLine(o,c,c+h)})),this._labelContainer.visible){const a=this._labelContainer.textAlign()||(r?"left":"right");c=r?c+h:t-s.gap+h,this._labels.forEach(((t,s)=>{t.layout(a);const n=t.getBBox(),h=r?c:c-n.width;o=e.getRate(l[s])*i,t.trans(h,o-n.height/2)}))}}}class B extends t.ValueGaugeView{_measureLabelSize(e,i,s){const a=e.label,n=this.labelView();return a.setText(e.getLabel(a,e.options.value)),n.text=a.options.text,a.buildSvg(n,null,i,s,e,a._domain),t.rectToSize(n.getBBox())}_renderGauge(e,i){const s=this.model,a=t.pickNum(this._runValue,s.options.value);this._measureGauge(s,s.label,this.labelView(),a,s.isVertical(),e,i),this._renderValue()}_renderValue(){const e=this.model,i=e.label,s=e.scale,a=this.labelView(),n=t.pickNum(this._runValue,e.options.value),l=t.assignObj({},this._rBand);if(this._renderScale(l),this.background().setRect(l),l.height>0&&this._renderBand(e,l,n),"top"!==i._runPos&&"bottom"!==i._runPos||(this._rLabel.height=l.height),this._renderLabel(e,i,a,n),!this._vertical&&("left"===i._runPos||"right"===i._runPos)&&s.visible&&"opposite"===s.options.position){const e=a.getBBox();a.ty+e.height>this.height&&a.transY(t.maxv(0,this.height-e.height))}}_measureGauge(e,i,s,a,n,l,r){const h=this._rBand=t.createRect(0,0,l,r);if(this._vertical=e._group instanceof E?e._group.options.vertical:n,i.visible){const n=i._runPos=t.pickProp(i.options.position,this._vertical?"top":"left"),o=i._runVert="top"===n||"bottom"===n,c=e._group?e._group.itemLabel.options.gap:i._runGap=i.getGap(o?r:l);let d=o?l:i.getWidth(l),u=o?i.getHeight(r):r;const _=o?l:i.getMaxWidth(l),g=o?i.getMaxHeight(r):r,p=this._rLabel=t.createRect(0,0,l,r);s.setStyleOrClass(i._style),i.setText(e.getLabel(i,i.options.animatable?a:e.options.value)),s.text=i.options.text,i.buildSvg(s,null,t.pickNum(d,_),t.pickNum(u,g),e,i._domain);const b=s.getBBox();switch(o?(p.height=t.pickNum(u,b.height),h.height=t.maxv(0,h.height-(p.height+c))):(p.width=t.pickNum(d,b.width),this._wLabel=e._group?e._group._labelWidth:p.width,h.width=t.maxv(0,h.width-(this._wLabel+c))),n){case"top":h.y=p.height+c;break;case"bottom":p.y=h.height+c;break;case"right":p.x=h.width+c;break;default:h.x=this._wLabel+c}}else this._rLabel=null}_renderLabel(e,i,s,a){if(s.visible){const e=this._rLabel,a=s.getBBox();let n=e.x,l=e.y;switch(i._runPos){case"top":case"bottom":n+=e.width/2;break;case"right":n=this.width-e.width,s.anchor=t.TextAnchor.START,l+=t.maxv(0,(e.height-a.height)/2);break;default:s.anchor=t.TextAnchor.END,n+=this._wLabel,l+=t.maxv(0,(e.height-a.height)/2)}s.trans(n,l)}}_renderScale(e){const i=this.model,s=i.label,a=i.scale,n=this.scaleView(),l=this._vertical?e.height:e.width;let r,h;if(a._vertical=this._vertical,a._reversed=i.options.reversed,isNaN(this._runValue)&&a.buildSteps(l,i.options.value),n.setVis(i.scaleVisible())){const i=n.measure(this.doc,a,e.width,e.height,1);this._vertical?(r=0,h=e.y,e.width=t.maxv(0,e.width-i.width),"opposite"===a.options.position?r=e.x+e.width:(s._runVert||(r=e.x),e.x+=i.width)):(r=e.x,e.height=t.maxv(0,e.height-i.height),"opposite"===a.options.position?s._runVert?(h=e.y,e.y+=i.height):(this._rLabel.y=e.y+=i.height,h=e.y-i.height):h=e.y+e.height),n.resizeByMeasured().layout().trans(r,h)}}}class T extends t.ChartElement{constructor(e){super(e,"rct-linear-gauge-band"),this._thick=0,this._gap=0,this._labelGap=3,this._barViews=new t.ElementPool(this,t.RectElement),this.add(this._labelContainer=new t.LayerElement(e,"rct-linear-gauge-band-tick-labels")),this._labels=new t.ElementPool(this._labelContainer,t.TextElement)}_doMeasure(e,i,s,a,n){const l=i.gauge,r=this._vertical=l instanceof k?l.isVertical():l.options.vertical,h="inside"===i.options.position,o=this._thick=h?r?s:a:i.getThickness(r?s:a)+(this._gap=t.pickNum(i.options.gap,0));let c=r?o:s,d=r?a:o;const u=this._ranges=i.getRanges();if(this._labelContainer.setVis(i.tickLabel.visible&&u.length>0)){const e=[u[0].fromValue].concat(u.map((e=>e.toValue)));if(this._labelContainer.setStyleOrClass(i.tickLabel._style),this._labels.prepare(u.length+1),r){let i=0;this._labels.forEach(((s,a)=>{s.text=String(e[a]),i=t.maxv(s.getBBox().width)})),c+=i+this._labelGap}else{let i=0;this._labels.forEach(((s,a)=>{s.text=String(e[a]),i=t.maxv(s.getBBox().height)})),d+=i}}return{width:c,height:d}}_doLayout(e){const t=this.model,i=t.gauge,s=i.scale,a=s._max-s._min;this._labelContainer.setVis(this.$_layoutBars(i,a,this._ranges)&&this._labelContainer.visible&&"inside"!==t.options.position)&&this.$_layoutLabels(i,a,this._ranges)}$_layoutBars(e,t,i){if(this._barViews.prepare(i.length),!this._barViews.isEmpty&&t>0){const e=this._vertical,s="inside"===this.model.options.position,a="opposite"===this.model.options.position,n=this.width,l=this.height,r=e?l:n,h=this._thick;let o=0;return this._barViews.prepare(i.length).forEach(((c,d)=>{const u=i[d],_=r*(u.toValue-u.fromValue)/t;if(e){const e=s||a?0:n-h;c.setBounds(e,l-o-_,h,_)}else{const e=a?l-h:0;c.setBounds(o,e,_,this._thick)}c.internalClearStyleAndClass(),c.setFill(u.color),u.style&&c.addStyleOrClass(u.style),o+=_})),!0}}$_layoutLabels(e,i,s){const a="opposite"===this.model.options.position;if(this._vertical){const e=this.height,n=a?t.TextAnchor.START:t.TextAnchor.END,l=a?this._thick+this._labelGap:this.width-this._thick-this._labelGap;let r=this._labels.get(0);r.anchor=n,r.trans(l,e-r.getBBox().height/2);for(let t=1;t<=s.length;t++){const a=e-e*s[t-1].toValue/i;r=this._labels.get(t),r.anchor=n,r.trans(l,a-r.getBBox().height/2)}}else{const e=this.width,t=a?0:this._thick;this._labels.get(0).trans(0,t);for(let a=1;a<=s.length;a++){const n=e*s[a-1].toValue/i;this._labels.get(a).trans(n,t)}}}}class L extends B{constructor(e){super(e,"rct-linear-gauge")}_doInitContents(e,i){i.add(this._background=new t.RectElement(e,"rct-linear-gauge-background")),i.add(this._bandView=new T(e)),i.add(this._scaleView=new G(e)),i.add(this._valueView=new t.RectElement(e,"rct-linear-gauge-value")),i.add(this._labelView=new t.TextElement(e))}_backgroundView(){return this._background}labelView(){return this._labelView}scaleView(){return this._scaleView}background(){return this._background}_prepareGauge(e,t){}_renderScale(e){const t=this.model.band,i=this._bandView;if(super._renderScale(e),i.setVis(t.visible)){const s=+t.options.gap||0,a=i.measure(this.doc,t,e.width,e.height,1);i.resizeByMeasured().layout(),this._vertical?"inside"===t.options.position?i.trans(e.x,e.y):"opposite"===t.options.position?(i.trans(e.x+e.width-a.width,e.y),e.width-=a.width+s):(i.trans(e.x,e.y),e.width-=a.width+s,e.x+=a.width+s):"inside"===t.options.position?i.trans(e.x,e.y):"opposite"===t.options.position?(i.trans(e.x,e.y),e.height-=a.height+s,e.y+=a.height+s):(i.trans(e.x,e.y+e.height-a.height),e.height-=a.height+s)}}_renderBand(e,i,s){const a=this._valueView,n=e.options.reversed,l=e.valueBar,r=e._group?e._group.scale:e.scale;if(a.setVis(!t.isEmptyRect(i)&&l.visible&&!r.isEmpty()&&!isNaN(e.options.value)))if(a.setStyleOrClass(l._style),a.internalSetStyleOrClass(l.getStyle(e,s)),this._vertical){const e=i.height*r.getRate(s),t=n?i.y:i.y+i.height-e;a.setBounds(i.x,t,i.width,e)}else{const e=i.width*r.getRate(s),t=n?i.x+i.width-e:i.x;a.setBounds(t,i.y,e,i.height)}}}class P extends t.GaugeGroupView{constructor(e,t){super(e,t)}_doInitContents(e,i){super._doInitContents(e,i),i.insertFirst(this._scaleView=new G(e)),i.insertFirst(this._textView=new t.TextElement(e,"rct-linear-gauge-group-label"))}_prepareGauge(e,t){this._textView.setVis(t.label.visible)&&this._textView.setStyleOrClass(t.label._style),this._scaleView.setVis(t.scale.visible)&&this._scaleView.setStyleOrClass(t.scale._style),super._prepareGauge(e,t)}_doRenderGauges(e,i,s,a){const n=this.model,l=n.options,r=this._textView,h=t.createRect(0,0,s,a);if(r.visible){r.text=n.label.options.text,n.label.buildSvg(r,null,NaN,NaN,n,null);const e=this._textView.getBBox().height+n.label.getGap(a);h.y+=e,h.height-=e,r.trans(this.width/2,0)}n._labelWidth=n._labelHeight=0,this._gaugeViews.forEach(((e,i)=>{const l=e._measureLabelSize(n.get(i),s,a);n._labelWidth=t.maxv(n._labelWidth,l.width),n._labelHeight=t.maxv(n._labelHeight,l.height)}));const o=t.copyObj(h),c=n.itemLabel.options.gap;l.vertical?(o.height-=n._labelHeight+c,n.itemLabel.options.opposite||(o.y+=n._labelHeight+c)):(o.width-=n._labelWidth+c,n.itemLabel.options.opposite||(o.x+=n._labelWidth+c)),this._renderScale(n,h,o),l.vertical?this.$_layoutVert(this.doc,n,i,h):this.$_layoutHorz(this.doc,n,i,h)}_renderScale(e,i,s){const a=this._scaleView,n=e.scale,l=e.options.vertical,r=l?i.height:i.width,h=[];let o,c;if(this._gaugeViews.forEach(((i,s)=>{h.push(t.pickNum(i._runValue,e.get(s).options.value))})),n.buildGroupSteps(r,h),n._vertical=l,a.setVis(n.visible)){const e=a.measure(this.doc,n,s.width,s.height,1);if(l){const t=e.width;s.width-=t,i.width-=t,c=s.y,"opposite"===n.options.position?o=s.x+s.width:(o=s.x,s.x+=t,i.x+=t)}else{const t=e.height;s.height-=t,i.height-=t,o=s.x,"opposite"===n.options.position?(c=s.y,s.y+=t,i.y+=t):c=s.y+s.height}a.resizeByMeasured().layout().trans(o,c)}}$_layoutVert(e,t,i,s){const a=s.height,n=(s.width-t.options.itemGap*(i.count-1))/i.count,l=s.y;let r=s.x;i.forEach(((i,s)=>{i.measure(e,t.get(s),n,a,0),i.resize(n,a),i.layout(),i.trans(r,l),r+=n+t.options.itemGap}))}$_layoutHorz(e,t,i,s){const a=t.options.itemGap,n=s.width,l=(s.height-a*(i.count-1))/i.count,r=s.x;let h=s.y;i.forEach(((i,s)=>{i.measure(e,t.get(s),n,l,0),i.resize(n,l),i.layout(),i.trans(r,h),h+=l+a}))}}class I extends P{constructor(e){super(e,"rct-linear-gauge-group")}_doInitContents(e,t){super._doInitContents(e,t),t.insertChild(this._bandView=new T(e),this._scaleView)}_createPool(e){return new t.ElementPool(e,L)}_renderScale(e,t,i){super._renderScale(e,t,i);const s=this._bandView,a=e.band;let n,l;if(s.setVis(a.visible)){const r=+a.options.gap||0,h=s.measure(this.doc,a,i.width,i.height,1);if(e.options.vertical){const e=h.width+r;i.width-=e,t.width-=e,l=i.y,"opposite"===a.options.position?n=i.x+i.width+r:(n=i.x,i.x+=e,t.x+=e)}else{const e=h.height+r;i.height-=e,t.height-=e,n=i.x,"opposite"===a.options.position?(l=i.y,i.y+=e,t.y+=e):l=i.y+i.height+r}s.resizeByMeasured().layout().trans(n,l)}}}class D extends t.ChartItem{constructor(e){super(e.chart),this.gauge=e}getRanges(){var e;return null===(e=this.$_internalRanges())||void 0===e?void 0:e.slice(0)}_doApply(e){const t=this;var i;super._doApply(e),(i=e.ranges)!==t._ranges&&(t._ranges=i,t._runRanges=null)}$_internalRanges(){if(!this._runRanges){const e=this.gauge.options;this._runRanges=t.buildValueRanges(this._ranges,e.minValue,e.maxValue,this._op.rangeInclusive)}return this._runRanges}}D.defaults=t.extend(t.ChartItem.defaults,{vertical:!0,rangeInclusive:!0});class O extends t.GaugeItem{}O.defaults=t.extend(t.ChartItem.defaults,{visible:!0});class N extends f{}class A extends v{_doInitChildren(e){super._doInitChildren(e),e.band=(this._band=new D(this)).init(),e.targetBar=(this._targetBar=new O(this)).init(),e.valueBar=(this._valueBar=new N(this)).init()}get band(){return this._band}get targetBar(){return this._targetBar}get valueBar(){return this._valueBar}getRanges(e,i,s){return t.buildValueRanges(this._op.ranges,e,i,t.pickProp(s,this._op.rangeInclusive))}}A.type=t.BulletGaugeType,A.defaults=t.extend(v.defaults,{rangeInclusive:!0});class H extends E{getRanges(e,i,s){return t.buildValueRanges(this._op.ranges,e,i,t.pickProp(s,this._op.rangeInclusive))}_gaugesType(){return"bullet"}}H.type=t.BulletGaugeGroupType,H.gaugeType=t.BulletGaugeType,H.defaults=t.extend(E.defaults,{rangeInclusive:!0});class $ extends B{constructor(e){super(e,"rct-bullet-gage")}_doInitContents(e,i){i.add(this._background=new t.RectElement(e,"rct-bullet-gauge-background")),i.add(this._barContainer=new t.LayerElement(e,void 0)),this._barViews=new t.ElementPool(this._barContainer,t.RectElement),i.add(this._valueView=new t.RectElement(e,"rct-bullet-gauge-value")),i.add(this._targetView=new t.RectElement(e,"rct-bullet-gauge-target")),i.add(this._scaleView=new G(e)),i.add(this._labelView=new t.TextElement(e))}_backgroundView(){return this._background}labelView(){return this._labelView}scaleView(){return this._scaleView}background(){return this._background}_prepareGauge(e,t){}_renderBand(e,i,s){const a=e.options,n=e._group,l=e.options.reversed,r=this._vertical,h=n?n.scale:e.scale,o=this._valueView,c=this._targetView;if(this._barContainer.setVis(!t.isEmptyRect(i)&&!h.isEmpty())){const t=e.getRanges(h._min,h._max,!1)||(null==n?void 0:n.getRanges(h._min,h._max,!1));t&&(this._barContainer.setRect(i),this._barViews.prepare(t.length),r?this._barViews.forEach(((e,s)=>{const a=t[s],n=i.height*h.getRate(a.toValue-a.fromValue),r=i.height*h.getRate(a.fromValue);e.setBounds(0,l?r:i.height-r-n,i.width,n),e.internalClearStyleAndClass(),e.setFill(a.color),a.style&&e.addStyleOrClass(a.style)})):this._barViews.forEach(((e,s)=>{const a=t[s],n=i.width*h.getRate(a.toValue-a.fromValue),r=i.width*h.getRate(a.fromValue);e.setBounds(l?i.width-n-r:r,0,n,i.height),e.internalClearStyleAndClass(),e.setFill(a.color),a.style&&e.addStyleOrClass(a.style)})))}if(o.setVis(e.valueBar.visible&&!h.isEmpty()&&!isNaN(s)))if(o.setStyleOrClass(e.valueBar._style),s<a.targetValue&&e.valueBar.options.belowStyle&&o.internalSetStyleOrClass(e.valueBar.options.belowStyle),o.internalSetStyleOrClass(e.valueBar.getStyle(e,s)),r){const e=i.height*h.getRate(s),t=l?i.y:i.y+i.height-e;o.setBounds(i.x+i.width/3,t,i.width/3,e)}else{const e=i.width*h.getRate(s),t=l?i.x+i.width-e:i.x;o.setBounds(t,i.y+i.height/3,e,i.height/3)}if(c.setVis(e.targetBar.visible&&!h.isEmpty()&&!isNaN(a.targetValue)))if(c.setStyleOrClass(e.targetBar._style),r&&i.width>10){let e=i.height*h.getRate(a.targetValue);e=l?i.y+e:i.y+i.height-e,c.setBounds(i.x+5,e-1,i.width-10,3)}else if(!r&&i.height>10){let e=i.width*h.getRate(a.targetValue);e=l?i.x+i.width-e:i.x+e,c.setBounds(e-1,i.y+5,3,i.height-10)}}}class M extends P{constructor(e){super(e,"rct-bullet-gauge-group")}_createPool(e){return new t.ElementPool(e,$)}}class z extends t.GaugeItem{getThickness(e){return t.calcPercent(this._thicknessDim,e,e)}_doApply(e){super._doApply(e),this._setDim(e,"thickness")}}z.defaults=t.extend(t.ChartItem.defaults,{thickness:7});class W extends t.GaugeItem{getLength(e){return t.calcPercent(this._lengthDim,e,e)}_doApply(e){super._doApply(e),this._setDim(e,"length")}}W.defaults=t.extend(t.ChartItem.defaults,{thickness:7,length:"60%"});class F extends W{}F.defaults=t.extend(W.defaults,{thickness:5,length:"85%"});class j extends W{}j.defaults=t.extend(W.defaults,{thickness:2,length:"95%",animatable:!1,duration:200});class Y extends t.GaugeItem{constructor(e,t){super(e),this.length=t}}class X extends t.GaugeItem{}X.defaults=t.extend(t.ChartItem.defaults,{step:1,offset:1});class U extends t.GaugeItem{constructor(e,t){super(e),this.raidus=t}}class q extends t.ChartText{constructor(e){super(e.chart)}}q.defaults=t.extend(t.ChartText.defaults,{text:"RealChart Clock<br>ver1.0",position:"top"});class J extends t.Gauge{_doInitChildren(e){super._doInitChildren(e),e.rim=(this.rim=new z(this)).init(),e.hourHand=(this.hourHand=new W(this)).init(),e.minuteHand=(this.minuteHand=new F(this)).init(),e.secondHand=(this.secondHand=new j(this)).init(),e.tick=(this.tick=new Y(this,10)).init(),e.minorTick=(this.minorTick=new Y(this,5)).init(),e.tickLabel=(this.tickLabel=new X(this)).init(),e.pin=(this.pin=new U(this,5)).init(),e.label=(this.label=new q(this)).init()}getTime(){const e=this._op;return e.time instanceof Date?e.time:t.isString(e.time)?new Date(e.time):isNaN(e.time)?void 0:new Date(e.time)}getExtents(e,i){const s=t.minv(e,i);return{cx:t.calcPercent(this._centerXDim,e,e/2),cy:t.calcPercent(this._centerYDim,i,i/3),rd:t.calcPercent(this._radiusDim,s,s/2)}}_doApply(e){const i=this;var s,a,n;super._doApply(e),s=e.centerX,a=e.centerY,n=e.radius,(i._centerXDim||s!==i._centerX)&&(i._centerXDim=t.parsePercentSize(t.pickProp(i._centerX=s,t.CircularGauge.DEF_CENTER),!0)),i._centerYDim&&a===i._centerY||(i._centerYDim=t.parsePercentSize(t.pickProp(i._centerY=a,t.CircularGauge.DEF_CENTER),!0)),i._radiusDim&&n===i._radius||(i._radiusDim=t.parsePercentSize(t.pickProp(i._radius=n,t.CircularGauge.DEF_RADIUS),!0))}}J.type=t.ClockGaugeType,J.defaults=t.extend(t.Gauge.defaults,{centerX:"50%",centerY:"50%",radius:"40%",active:!0});class K extends t.RcAnimation{constructor(e){super(),this.view=e}_doUpdate(e){return this.view._secRate=e,this.view.$_renderHands(this.view.model,this.view._exts),!0}}class Q extends t.GaugeView{constructor(e){super(e,"rct-clock-gauge"),this._rimThick=0,this._secRate=1}_doInitContents(e,i){i.add(this._faceView=new t.CircleElement(e,"rct-clock-gauge-face")),i.add(this._rimView=new t.SectorElement(e,"rct-clock-gauge-rim")),i.add(this._labelView=new t.TextElement(e,"rct-clock-gauge-label")),this._labelView.layout=t.TextLayout.MIDDLE,i.add(this._tickContainer=new t.LayerElement(e,"rct-clock-gauge-ticks")),i.add(this._tickLabelContainer=new t.LayerElement(e,"rct-clock-gauge-tick-labels")),i.add(this._hourView=new t.PathElement(e,"rct-clock-gauge-hour")),i.add(this._minuteView=new t.PathElement(e,"rct-clock-gauge-minute")),i.add(this._secondView=new t.PathElement(e,"rct-clock-gauge-second")),i.add(this._pinView=new t.CircleElement(e,"rct-clock-gauge-pin")),this._tickViews=new t.ElementPool(this._tickContainer,t.LineElement,"rct-clock-gauge-tick"),this._minorTickViews=new t.ElementPool(this._tickContainer,t.LineElement,"rct-clock-gauge-minor-tick"),this._tickLabelViews=new t.ElementPool(this._tickLabelContainer,t.TextElement,"rct-clock-gauge-tick-label")}_prepareGauge(e,i){this._tickViews.prepare(i.tick.visible?12:0),this._minorTickViews.prepare(i.minorTick.visible?48:0);const s=Math.round(12/t.maxv(1,Math.floor(i.tickLabel.options.step)||1));this._tickLabelViews.prepare(i.tickLabel.visible?s:0,(e=>{e.layout=t.TextLayout.MIDDLE}))}_renderGauge(e,i){const s=this.model,a=this._exts=s.getExtents(e,i);this._secRate=1,this.$_renderFace(s,a),this.$_renderHands(s,a),s.options.active&&!s.getTime()?this._runner||(this._runner=setInterval((()=>{const e=this._prevSec;this.$_renderHands(this.model,this._exts),t.absv(e-this._prevSec)>=1&&this._secondView.visible&&s.chart.animatable()&&s.secondHand.options.animatable&&this.$_moveSecond(e)}),1e3)):this._runner&&(clearInterval(this._runner),this._runner=void 0)}$_renderFace(e,i){const s=this._labelView,a=this._rimView,n=this._minorTickViews,l=this._tickLabelViews,r=this._pinView,{cx:h,cy:o,rd:c}=i,d=this._rimThick=a.visible?e.rim.getThickness(c):0;this._faceView.setCircle(h,o,c),a.setVis(e.rim.visible)&&(a.internalSetStyleOrClass(e.rim._style),a.setSector({cx:h,cy:o,rx:c,ry:c,innerRadius:1-d/c,start:0,angle:2*Math.PI,clockwise:!0}));const u=c-d;let _=u-e.tick.length,g=t.ORG_ANGLE,p=t.PI_2/12;if(this._tickViews.forEach(((i,s)=>{i.setLine(h+t.cos(g)*u,o+t.sin(g)*u,h+t.cos(g)*_,o+t.sin(g)*_),i.internalSetStyleOrClass(e.tick._style),g+=p})),!n.isEmpty){let i=0;_=u-e.minorTick.length,g=t.ORG_ANGLE,p=t.PI_2/60,n.forEach((s=>{i%5==0&&(g+=p,i++),s.setLine(h+t.cos(g)*u,o+t.sin(g)*u,h+t.cos(g)*_,o+t.sin(g)*_),s.internalSetStyleOrClass(e.minorTick._style),g+=p,i++}))}if(!l.isEmpty){const i=12/l.count,s=t.PI_2/12*i;g=t.ORG_ANGLE,l.get(0).text="12",_=u-(e.tick.length+e.tickLabel.options.offset||0),_-=.5*l.get(0).getBBox().height,l.forEach(((a,n,l)=>{a.text=String(0===n?12:n*i),a.trans(h+t.cos(g)*_,o+t.sin(g)*_),a.internalSetStyleOrClass(e.tickLabel._style),g+=s}))}r.setVis(e.pin.visible)&&(r.setCircle(h,o,e.pin.raidus),r.setStyleOrClass(e.pin._style)),s.setVis(e.label.visible)&&(s.internalSetStyleOrClass(e.label._style),e.label.buildSvg(s,null,NaN,NaN,null,null),"bottom"===e.label.options.position?s.trans(h,o+_/2):s.trans(h,o-_/2))}$_getNow(){const e=this.model.options.timezone;let t=this.model.getTime()||new Date;if(!isNaN(e)){const i=t.getMinutes()+(t.getTimezoneOffset()+e);t.setMinutes(i)}return t}$_renderHands(e,i){const s=this.$_getNow(),a=s.getHours(),n=s.getMinutes(),l=s.getSeconds(),{cx:r,cy:h,rd:o}=i,c=new t.PathBuilder;let d,u,_,g;d=e.hourHand,u=this._hourView,u.setVis(d.visible)&&(g=t.PI_2*(a/12+n/60/12+l/60/60/12),_=d.getLength(o-this._rimThick),c.rect(-d.options.thickness/2,-_,d.options.thickness,_),u.internalSetStyleOrClass(d._style),u.setPath(c.close(!0)).trans(r,h).rotate(g*t.RAD_DEG)),d=e.minuteHand,u=this._minuteView,u.setVis(d.visible)&&(g=t.PI_2*(n/60+l/60/60),_=d.getLength(o-this._rimThick),c.rect(-d.options.thickness/2,-_,d.options.thickness,_),u.internalSetStyleOrClass(d._style),u.setPath(c.close(!0)).trans(r,h).rotate(g*t.RAD_DEG)),d=e.secondHand,u=this._secondView,u.setVis(d.visible)&&(g=this._secRate<1?t.PI_2*(this._aniSec+this._secRate)/60:t.PI_2*l/60,_=d.getLength(o-this._rimThick),c.rect(-d.options.thickness/2,-_,d.options.thickness,_),u.internalSetStyleOrClass(d._style),u.setPath(c.close(!0)).trans(r,h).rotate(g*t.RAD_DEG),this._prevSec=l)}$_moveSecond(e){if(!isNaN(e)){this._aniSec=e;const t=new K(this);t.duration=this.model.secondHand.options.duration||200,t.start()}}}function Z(e){(function(e){return e.Series&&e.SeriesView})(e)&&(e.Gauge.register(A,d,J,k),e.GaugeGroup.register(H,u,R),e.GaugeView.register([d,m],[k,L],[A,$],[J,Q],[u,x],[R,I],[H,M]))}Z(s),e.BulletGauge=A,e.CircleGauge=d,e.ClockGauge=J,e.LinearGauge=k,e.default=Z,Object.defineProperty(e,"__esModule",{value:!0})}));
package/gauge.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  /**
3
- * RealChart Gauge v1.2.4
4
- * Copyright (C) 2023-2024 WooriTech Inc.
3
+ * RealChart Gauge v1.3.0
4
+ * Copyright (C) 2023-2025 WooriTech Inc.
5
5
  * All Rights Reserved.
6
6
  */
7
7
  import{extend as e,ChartItem as t,GaugeScale as s,CircleGaugeType as i,CircleGaugeGroupType as a,CircularGaugeGroup as n,GaugeItem as l,buildValueRanges as r,calcPercent as h,CircularGauge as o,GaugeRangeBand as c,maxv as d,SectorElement as _,TextElement as u,LayerElement as g,minv as p,pickNum as b,pixel as w,RAD_DEG as y,TextAnchor as V,GaugeGroupView as x,ElementPool as m,ValueGaugeView as v,ScaleView as f,ArcElement as k,cos as C,sin as S,fixnum as R,ChartElement as B,PathElement as L,PathBuilder as E,GaugeLabel as T,ValueGauge as D,LinearGaugeType as O,GaugeGroup as N,LinearGaugeGroupType as I,RectElement as G,isEmptyRect as H,LineElement as A,rectToSize as $,assignObj as M,createRect as P,pickProp as z,copyObj as W,BulletGaugeType as F,BulletGaugeGroupType as Y,ChartText as X,ClockGaugeType as U,Gauge as j,isString as q,parsePercentSize as J,GaugeView as K,CircleElement as Q,TextLayout as Z,absv as ee,ORG_ANGLE as te,PI_2 as se,RcAnimation as ie}from"./index.mjs";class ae extends l{getRange(e,t){const s=this.$_internalRanges(e);if(s)for(const e of s)if(t>=e.fromValue&&t<e.toValue)return e}_doApply(e){const t=this;var s;super._doApply(e),(s=e.ranges)!==t._ranges&&(t._ranges=s,t._runRanges=null)}$_internalRanges(e){return this._runRanges||(this._runRanges=r(this._ranges,e.minValue,e.maxValue,this._op.rangeInclusive)),this._runRanges}}ae.defaults=e(t.defaults,{rangeInclusive:!0});class ne extends ae{getSegmentThickness(e){return h(this._segmentThicknessDim,e,e)}_doApply(e){super._doApply(e),this._setDim(e,"segmentThickness")}}ne.defaults=e(ae.defaults,{segmentGap:0});class le extends ae{getThickness(e){return h(this._thicknessDim,e,e)}_doApply(e){super._doApply(e),this._setDim(e,"thickness")}}le.defaults=e(ae.defaults,{thickness:"100%",stroked:!1});(class extends l{}).defaults=e(t.defaults,{visible:!1});class re extends l{getExtents(e){return{radius:h(this._radiusDim,e,0),length:h(this._lengthDim,e,0),offset:h(this._offsetDim,e,0)}}_doApply(e){super._doApply(e),this._setDims(e,"radius","length","offset")}}re.defaults=e(t.defaults,{visible:!1,radius:3,length:"100%",offset:0});class he extends l{getRadius(e){return h(this._radiusDim,e,0)}_doApply(e){super._doApply(e),this._setDim(e,"radius")}}he.defaults=e(t.defaults,{visible:!1,radius:5});class oe extends s{_getStepMultiples(e){return[1,2,2.5,5,10]}}oe.defaults=e(s.defaults,{visible:!1,stepPixels:72});class ce extends o{_doInitChildren(e){super._doInitChildren(e),e.band=(this._band=new c(this)).init(),e.scale=(this._scale=new oe(this)).init(),e.rim=(this._rim=new ne(this)).init(),e.valueRim=(this._valueRim=new le(this)).init(),e.hand=(this._hand=new re(this)).init(),e.pin=(this._pin=new he(this)).init()}get band(){return this._band}get scale(){return this._scale}get rim(){return this._rim}get valueRim(){return this._valueRim}get hand(){return this._hand}get pin(){return this._pin}getExtents(e){const t=super.getExtents(e),s=this.scale,i=this.band;let a=t.radius;const n=a-t.inner;if(i.visible)switch(t.bandThick=i.getThickness(n),i.options.position){case"inside":t.band=a-(n-t.bandThick)/2;break;case"opposite":t.band=t.inner-i.options.gap,t.inner=t.band-t.bandThick;break;default:t.band=a+=t.bandThick+i.options.gap}if(t.scaleTick=d(1,s.tick.options.length||0),t.scaleLabel=16,"opposite"===s.options.position)t.scale=t.inner-s.options.gap,t.inner=t.scale-t.scaleTick-t.scaleLabel;else t.scale=a+s.options.gap;return t}}ce.type=i;class de extends n{_gaugesType(){return"circle"}}de.type=a,de.gaugeType=i,de.defaults=e(n.defaults,{innerRadius:"50%"});class _e extends v{}class ue extends f{setExtents(e,t){this._center=e,this._exts=t}_createLine(e,t){return new k(e,t)}_doMeasure(e,t,s,i,a){const n=t._steps.length-(360===t.gauge.options.sweepAngle?1:0);return this._line.setVis(t.line.visible)&&this._line.internalSetStyleOrClass(t.line._style),this._tickContainer.setVis(t.tick.visible)&&(this._tickContainer.internalSetStyleOrClass(t.tick._style),this._ticks.prepare(n)),this._labelContainer.setVis(t.label.visible)&&(this._labelContainer.internalSetStyleOrClass(t.label._style),this._labels.prepare(n,(e=>{}))),{width:s,height:i}}_doLayout(e){const t=this.model,s=t._steps,i=t.gauge,a=i.options,n="opposite"===t.options.position?-1:1,l=i._props,r=this._center.x,h=this._center.y,o=this._exts.scale,c=o+this.model.tick.options.length*n,d=l._sweepRad,_=l._startRad,u=a.maxValue-a.minValue,g=a.clockwise;let p,b,w,y;if(this._line.visible&&this._line.setArc(r,h,o,_,g?d:-d,g),this._tickContainer.visible&&this._ticks.forEach(((e,i,a)=>{const n=t.getRate(s[i])*(g?d:-d)+_;p=r+C(n)*o,b=h+S(n)*o,w=r+C(n)*c,y=h+S(n)*c,e.setLine(p,b,w,y)})),this._labelContainer.visible){this._labels.get(0).setText(String(a.maxValue));const e=c+.2*this._labels.get(0).getBBox().height*n;this._labels.forEach(((i,l,o)=>{const c=t.getRate(s[l])*(g?d:-d)+_;i.setText(String(R(a.minValue+t.getRate(s[l])*u)));const p=i.getBBox();w=r+C(c)*(e+p.width/2*n)-p.width/2,y=h+S(c)*(e+p.height/2*n)-p.height/2,i.trans(w,y)}))}}}let ge=class extends B{constructor(e){super(e,"rct-circle-gauge-band"),this._sectorViews=new m(this,_),this.add(this._labelContainer=new g(e,"rct-circle-gauge-band-tick-labels")),this._labels=new m(this._labelContainer,u)}setExtends(e,t){this._center=e,this._exts=t}_doLayout(e){const t=this.model,s=t.gauge,i=s.scale,a=s._props,n=this._center.x,l=this._center.y,r=this._exts.band,h=s.options.clockwise,o=1-this._exts.bandThick/r,c=t.getRanges(),d=a._sweepRad;s.options.maxValue,s.options.minValue;let _=a._startRad;this._sectorViews.prepare(c.length).forEach(((e,t)=>{const s=i.getRate(c[t].toValue-c[t].fromValue)*d;e.setSector({cx:n,cy:l,rx:r,ry:r,innerRadius:o,start:_,angle:s,clockwise:h}),e.internalClearStyleAndClass(),e.setFill(c[t].color),c[t].style&&e.addStyleOrClass(c[t].style),_+=h?s:-s}))}};class pe extends L{render(e,t){const s=e.getRadius(t);return s!==this._radius&&(this._radius=s,this.setPath((new E).circle(0,0,s).end())),this.internalSetStyleOrClass(e._style),this}}class be extends L{render(e,t){const s=e.getExtents(t);if(s.radius!==this._radius||s.length!==this._length||s.offset!==this._offset){const e=this._radius=s.radius,t=this._offset=s.offset;if(this._length=s.length,this._radius>0&&this._length>0){const s=new E;s.move(-e,t).line(0,-this._length+t).line(e,t),this.setPath(s.end())}else this.setPath("")}return this.internalSetStyleOrClass(e._style),this}}class we extends _e{constructor(e){super(e,"rct-circle-gauge")}_doInitContents(e,t){t.add(this._rimView=new _(e,"rct-circle-gauge-rim")),t.add(this._valueView=new _(e,"rct-circle-gauge-value")),t.add(this._innerView=new _(e,"rct-circle-gauge-inner")),t.add(this._textView=new u(e,"rct-circle-gauge-label")),t.add(this._handContainer=new g(e,void 0)),t.add(this._scaleView=new ue(e)),t.add(this._bandView=new ge(e))}_backgroundView(){return this._rimView}_prepareGauge(e,t){this._rimView.setVis(t.rim.visible),this._scaleView.setVis(t.scale.visible),this._bandView.setVis(t.band.visible),this._valueView.setVis(t.valueRim.visible),t.hand.visible?(this._handView||this._handContainer.add(this._handView=new be(e,"rct-circle-gauge-hand")),this._handView.visible=!0):this._handView&&(this._handView.visible=!1),t.pin.visible?(this._pinView||this._handContainer.add(this._pinView=new pe(e,"rct-circle-gauge-pin")),this._pinView.visible=!0):this._pinView&&(this._pinView.visible=!1),this._textView.setVis(t.labelVisible())&&this._textView.setStyleOrClass(t.label._style)}_renderGauge(e,t){const s=this.model,i=s.getCenter(e,t),a=s.getExtents(p(e,t));this.$_renderBackground(s,i,a),this._renderValue()}_renderValue(){const e=this.model,t=e.options,s=e.scale,i=e.getProps(),a=this._getValue(e),n=s.getRate(b(a,0)),l=this._center,r=this._exts,h=e.valueRim.getThickness(r.radiusThick),o=this._textView;if(this._valueView.visible){const s=e.valueRim,o=s.options,c=s.getRange(t,a),d=r.value+(o.stroked?0:h/2),_=this._valueView;_.setStyleOrClass(s._style),c&&(_.setStyle(o.stroked?"stroke":"fill",c.color),c.style&&_.addStyleOrClass(c.style)),o.stroked&&(_.setFill("none"),_.setStyle("strokeWidth",w(h))),_.setBoolData("stroked",o.stroked),_.setSectorEx({cx:l.x,cy:l.y,rx:d,ry:d,innerRadius:(d-h)/d,start:i._startRad,angle:i._sweepRad*n,clockwise:t.clockwise},o.stroked)}if(this._handView){const t=(i._handRad+i._sweepRad*n)*y;this._handView.render(e.hand,r.radius).transp(l).rotate(e.options.clockwise?t:-t)}if(o.visible){const s=e.label;if(s.setText(e.getLabel(s,s.options.animatable?a:t.value)),o.text=s.options.text,s.buildSvg(o,null,NaN,NaN,e,s._domain),o.setBoolData("grouped",!!e._group),e._group)this.$_layoutGroupedLabel(e,o,r);else{const e=o.getBBox(),t=s.getOffset(this.width,this.height);o.trans(l.x+t.x,l.y-e.height/2+t.y)}}}$_renderBackground(e,t,s){const i=e.getProps(),a=i._startRad;this._center=t,this._exts=s,e.scale.buildSteps(s.scale*i._sweepRad,NaN),this._rimView.visible&&(this._rimView.internalSetStyleOrClass(e.rim._style),this._rimView.setSector({cx:t.x,cy:t.y,rx:s.radius,ry:s.radius,innerRadius:1-s.radiusThick/s.radius,start:a,angle:i._sweepRad,clockwise:e.options.clockwise})),this._scaleView.visible&&(this._scaleView.setStyleOrClass(e.scale._style),this._scaleView.measure(this.doc,e.scale,this.width,this.height,0),this._scaleView.setExtents(t,s),this._scaleView.layout()),this._bandView.visible&&(this._bandView.setStyleOrClass(e.band._style),this._bandView.measure(this.doc,e.band,this.width,this.height,0),this._bandView.setExtends(t,s),this._bandView.layout()),this._innerView.setStyleOrClass(e.options.innerStyle);let n=s.inner;const l=getComputedStyle(this._innerView.dom),r=parseFloat(l.strokeWidth);r>1&&(n-=r/2),this._innerView.setSector({cx:t.x,cy:t.y,rx:n,ry:n,innerRadius:0,start:0,angle:2*Math.PI,clockwise:!0}),this._pinView&&this._pinView.render(e.pin,n).trans(t.x,t.y)}$_layoutGroupedLabel(e,t,s){const i=t.getBBox(),a=this._rimView.getBBox(),n=+e._group.options.labelGap||0;t.anchor=V.END,t.trans(a.x+a.width/2-n,a.y+(s.radius-s.inner-i.height)/2)}}class ye extends x{constructor(e){super(e,"rct-circle-gauge-group")}_createPool(e){return new m(e,we)}_doRenderGauges(e,t,s,i){const a=this.doc,n=this.model,l=n.props.getCenter(s,i),r=n.props.getExtents(p(s,i));n.setChildExtents(r),s=i=2*r.radius,t.forEach(((e,t)=>{e.measure(a,n.getVisible(t),s,i,0),e.resize(s,i),e.layout()})),e.trans(l.x-r.radius,l.y-r.radius)}}class Ve extends s{}class xe extends T{getWidth(e){return h(this._widthDim,e)}getHeight(e){return h(this._heightDim,e)}getMaxWidth(e){return h(this._maxWidthDim,e)}getMaxHeight(e){return h(this._maxHeightDim,e)}getGap(e){return h(this._gapDim,e,0)}_doApply(e){super._doApply(e),this._setDims(e,"width","height","maxWidth","maxHeight","gap")}}xe.defaults=e(T.defaults,{maxWidth:"30%",maxHeight:"30%",gap:10});class me extends D{_doInitChildren(e){super._doInitChildren(e),e.label=(this._label=new xe(this.chart)).init(),e.scale=(this._scale=new Ve(this)).init()}get label(){return this._label}get scale(){return this._scale}isVertical(){return this._group?this._group.options.vertical:this._op.vertical}scaleVisible(){return!this._group&&this._scale.visible}calcedMinMax(){return this._scale.range()}_doPrepareRender(e){super._doPrepareRender(e),this._label._prepareRender()}}me.defaults=e(D.defaults,{reversed:!1});class ve extends l{constructor(){super(...arguments),this._args={gauge:null,value:NaN}}getStyle(e,t){if(this._op.styleCallback){this._args.gauge=e,this._args.value=t;return this._op.styleCallback(this._args)}}}class fe extends me{_doInitChildren(e){super._doInitChildren(e),e.valueBar=(this._valueBar=new ve(this)).init(),e.band=(this._band=new c(this)).init()}get valueBar(){return this._valueBar}get band(){return this._band}}fe.type=O;class ke extends t{}ke.defaults=e(t.defaults,{opposite:!1,gap:10});class Ce extends xe{}Ce.defaults=e(xe.defaults,{gap:10});class Se extends N{_doInitChildren(e){super._doInitChildren(e),e.label=(this._label=new Ce(this.chart)).init(),e.itemLabel=(this._itemLabel=new ke(this.chart)).init(),e.scale=(this._scale=new Ve(this)).init()}get label(){return this._label}get itemLabel(){return this._itemLabel}get scale(){return this._scale}calcedMinMax(){return this.scale.range()}}Se.defaults=e(N.defaults,{vertical:!1,itemGap:10});class Re extends Se{_doInitChildren(e){super._doInitChildren(e),e.band=(this._band=new c(this)).init()}get band(){return this._band}_gaugesType(){return"linear"}_doPrepareRender(e){super._doPrepareRender(e),this.band.visible&&this.band._prepareRender()}}Re.type=I,Re.gaugeType=O;class Be extends f{_createLine(e,t){return new A(e,t)}_doMeasure(e,t,s,i,a){const n=t.options,l=t._reversed,r=t._vertical,h=t.label,o=t.tick,c=t._steps,_=c.length;let u=r?n.gap:s,g=r?i:n.gap;if(this._tickContainer.setVis(o.visible)&&(this._tickContainer.setStyleOrClass(o._style),this._ticks.prepare(_)),r?u+=o.options.length:g+=o.options.length,this._labelContainer.setVis(h.visible)&&(this._labelContainer.setStyleOrClass(h._style),this._labels.prepare(_,(t=>{t.setModel(e,h,null,null)})),_>0))if(r){let e=0;this._labels.forEach(((t,s)=>{t.setText(h.getText(c[l?s:_-1-s])),e=d(t.getBBox().width)})),u+=e}else{let e=0;this._labels.forEach(((t,s)=>{t.setText(h.getText(c[l?_-1-s:s])),e=d(t.getBBox().height)})),g+=e}return{width:u,height:g}}_doLayout(){const e=this.model;e._vertical?this.$_layoutVert(e,this.width,this.height):this.$_layoutHorz(e,this.width,this.height)}$_layoutHorz(e,t,s){const i=e.options,a=this._line,n=e.tick,l=e._steps;l.length;const r="opposite"===i.position,h=r?-n.options.length:n.options.length;let o,c=r?s-i.gap:i.gap;if(a.setVis(e.line.visible)&&(a.setStyleOrClass(e.line._style),a.setHLine(c,0,t)),this._tickContainer.setVis(n.visible)&&this._ticks.forEach(((s,i)=>{o=e.getRate(l[i])*t,s.setVLine(o,c,c+h)})),this._labelContainer.visible){const s=this._labelContainer.textAlign()||"center";let i=Number.MIN_SAFE_INTEGER;c=r?0:c+h,this._labels.forEach(((a,n)=>{a.layout(s);const r=a.getBBox();o=e.getRate(l[n])*t,a.setVis(o-r.width/2>i)&&(a.trans(o-r.width/2,c),i=o+r.width/2)}))}}$_layoutVert(e,t,s){const i=e.options,a=this._line,n=e.tick,l=e._steps;this.height,l.length;const r="opposite"===i.position,h=r?n.options.length:-n.options.length;let o,c=r?i.gap:t-i.gap;if(a.setVis(e.line.visible)&&(a.setStyleOrClass(e.line._style),a.setVLine(c,0,s)),this._tickContainer.setVis(n.visible)&&this._ticks.forEach(((t,i)=>{o=e.getRate(l[i])*s,t.setHLine(o,c,c+h)})),this._labelContainer.visible){const a=this._labelContainer.textAlign()||(r?"left":"right");c=r?c+h:t-i.gap+h,this._labels.forEach(((t,i)=>{t.layout(a);const n=t.getBBox(),h=r?c:c-n.width;o=e.getRate(l[i])*s,t.trans(h,o-n.height/2)}))}}}class Le extends v{_measureLabelSize(e,t,s){const i=e.label,a=this.labelView();return i.setText(e.getLabel(i,e.options.value)),a.text=i.options.text,i.buildSvg(a,null,t,s,e,i._domain),$(a.getBBox())}_renderGauge(e,t){const s=this.model,i=b(this._runValue,s.options.value);this._measureGauge(s,s.label,this.labelView(),i,s.isVertical(),e,t),this._renderValue()}_renderValue(){const e=this.model,t=e.label,s=e.scale,i=this.labelView(),a=b(this._runValue,e.options.value),n=M({},this._rBand);if(this._renderScale(n),this.background().setRect(n),n.height>0&&this._renderBand(e,n,a),"top"!==t._runPos&&"bottom"!==t._runPos||(this._rLabel.height=n.height),this._renderLabel(e,t,i,a),!this._vertical&&("left"===t._runPos||"right"===t._runPos)&&s.visible&&"opposite"===s.options.position){const e=i.getBBox();i.ty+e.height>this.height&&i.transY(d(0,this.height-e.height))}}_measureGauge(e,t,s,i,a,n,l){const r=this._rBand=P(0,0,n,l);if(this._vertical=e._group instanceof Se?e._group.options.vertical:a,t.visible){const a=t._runPos=z(t.options.position,this._vertical?"top":"left"),h=t._runVert="top"===a||"bottom"===a,o=e._group?e._group.itemLabel.options.gap:t._runGap=t.getGap(h?l:n);let c=h?n:t.getWidth(n),_=h?t.getHeight(l):l;const u=h?n:t.getMaxWidth(n),g=h?t.getMaxHeight(l):l,p=this._rLabel=P(0,0,n,l);s.setStyleOrClass(t._style),t.setText(e.getLabel(t,t.options.animatable?i:e.options.value)),s.text=t.options.text,t.buildSvg(s,null,b(c,u),b(_,g),e,t._domain);const w=s.getBBox();switch(h?(p.height=b(_,w.height),r.height=d(0,r.height-(p.height+o))):(p.width=b(c,w.width),this._wLabel=e._group?e._group._labelWidth:p.width,r.width=d(0,r.width-(this._wLabel+o))),a){case"top":r.y=p.height+o;break;case"bottom":p.y=r.height+o;break;case"right":p.x=r.width+o;break;default:r.x=this._wLabel+o}}else this._rLabel=null}_renderLabel(e,t,s,i){if(s.visible){const e=this._rLabel,i=s.getBBox();let a=e.x,n=e.y;switch(t._runPos){case"top":case"bottom":a+=e.width/2;break;case"right":a=this.width-e.width,s.anchor=V.START,n+=d(0,(e.height-i.height)/2);break;default:s.anchor=V.END,a+=this._wLabel,n+=d(0,(e.height-i.height)/2)}s.trans(a,n)}}_renderScale(e){const t=this.model,s=t.label,i=t.scale,a=this.scaleView(),n=this._vertical?e.height:e.width;let l,r;if(i._vertical=this._vertical,i._reversed=t.options.reversed,isNaN(this._runValue)&&i.buildSteps(n,t.options.value),a.setVis(t.scaleVisible())){const t=a.measure(this.doc,i,e.width,e.height,1);this._vertical?(l=0,r=e.y,e.width=d(0,e.width-t.width),"opposite"===i.options.position?l=e.x+e.width:(s._runVert||(l=e.x),e.x+=t.width)):(l=e.x,e.height=d(0,e.height-t.height),"opposite"===i.options.position?s._runVert?(r=e.y,e.y+=t.height):(this._rLabel.y=e.y+=t.height,r=e.y-t.height):r=e.y+e.height),a.resizeByMeasured().layout().trans(l,r)}}}class Ee extends B{constructor(e){super(e,"rct-linear-gauge-band"),this._thick=0,this._gap=0,this._labelGap=3,this._barViews=new m(this,G),this.add(this._labelContainer=new g(e,"rct-linear-gauge-band-tick-labels")),this._labels=new m(this._labelContainer,u)}_doMeasure(e,t,s,i,a){const n=t.gauge,l=this._vertical=n instanceof fe?n.isVertical():n.options.vertical,r="inside"===t.options.position,h=this._thick=r?l?s:i:t.getThickness(l?s:i)+(this._gap=b(t.options.gap,0));let o=l?h:s,c=l?i:h;const _=this._ranges=t.getRanges();if(this._labelContainer.setVis(t.tickLabel.visible&&_.length>0)){const e=[_[0].fromValue].concat(_.map((e=>e.toValue)));if(this._labelContainer.setStyleOrClass(t.tickLabel._style),this._labels.prepare(_.length+1),l){let t=0;this._labels.forEach(((s,i)=>{s.text=String(e[i]),t=d(s.getBBox().width)})),o+=t+this._labelGap}else{let t=0;this._labels.forEach(((s,i)=>{s.text=String(e[i]),t=d(s.getBBox().height)})),c+=t}}return{width:o,height:c}}_doLayout(e){const t=this.model,s=t.gauge,i=s.scale,a=i._max-i._min;this._labelContainer.setVis(this.$_layoutBars(s,a,this._ranges)&&this._labelContainer.visible&&"inside"!==t.options.position)&&this.$_layoutLabels(s,a,this._ranges)}$_layoutBars(e,t,s){if(this._barViews.prepare(s.length),!this._barViews.isEmpty&&t>0){const e=this._vertical,i="inside"===this.model.options.position,a="opposite"===this.model.options.position,n=this.width,l=this.height,r=e?l:n,h=this._thick;let o=0;return this._barViews.prepare(s.length).forEach(((c,d)=>{const _=s[d],u=r*(_.toValue-_.fromValue)/t;if(e){const e=i||a?0:n-h;c.setBounds(e,l-o-u,h,u)}else{const e=a?l-h:0;c.setBounds(o,e,u,this._thick)}c.internalClearStyleAndClass(),c.setFill(_.color),_.style&&c.addStyleOrClass(_.style),o+=u})),!0}}$_layoutLabels(e,t,s){const i="opposite"===this.model.options.position;if(this._vertical){const e=this.height,a=i?V.START:V.END,n=i?this._thick+this._labelGap:this.width-this._thick-this._labelGap;let l=this._labels.get(0);l.anchor=a,l.trans(n,e-l.getBBox().height/2);for(let i=1;i<=s.length;i++){const r=e-e*s[i-1].toValue/t;l=this._labels.get(i),l.anchor=a,l.trans(n,r-l.getBBox().height/2)}}else{const e=this.width,a=i?0:this._thick;this._labels.get(0).trans(0,a);for(let i=1;i<=s.length;i++){const n=e*s[i-1].toValue/t;this._labels.get(i).trans(n,a)}}}}class Te extends Le{constructor(e){super(e,"rct-linear-gauge")}_doInitContents(e,t){t.add(this._background=new G(e,"rct-linear-gauge-background")),t.add(this._bandView=new Ee(e)),t.add(this._scaleView=new Be(e)),t.add(this._valueView=new G(e,"rct-linear-gauge-value")),t.add(this._labelView=new u(e))}_backgroundView(){return this._background}labelView(){return this._labelView}scaleView(){return this._scaleView}background(){return this._background}_prepareGauge(e,t){}_renderScale(e){const t=this.model.band,s=this._bandView;if(super._renderScale(e),s.setVis(t.visible)){const i=+t.options.gap||0,a=s.measure(this.doc,t,e.width,e.height,1);s.resizeByMeasured().layout(),this._vertical?"inside"===t.options.position?s.trans(e.x,e.y):"opposite"===t.options.position?(s.trans(e.x+e.width-a.width,e.y),e.width-=a.width+i):(s.trans(e.x,e.y),e.width-=a.width+i,e.x+=a.width+i):"inside"===t.options.position?s.trans(e.x,e.y):"opposite"===t.options.position?(s.trans(e.x,e.y),e.height-=a.height+i,e.y+=a.height+i):(s.trans(e.x,e.y+e.height-a.height),e.height-=a.height+i)}}_renderBand(e,t,s){const i=this._valueView,a=e.options.reversed,n=e.valueBar,l=e._group?e._group.scale:e.scale;if(i.setVis(!H(t)&&n.visible&&!l.isEmpty()&&!isNaN(e.options.value)))if(i.setStyleOrClass(n._style),i.internalSetStyleOrClass(n.getStyle(e,s)),this._vertical){const e=t.height*l.getRate(s),n=a?t.y:t.y+t.height-e;i.setBounds(t.x,n,t.width,e)}else{const e=t.width*l.getRate(s),n=a?t.x+t.width-e:t.x;i.setBounds(n,t.y,e,t.height)}}}class De extends x{constructor(e,t){super(e,t)}_doInitContents(e,t){super._doInitContents(e,t),t.insertFirst(this._scaleView=new Be(e)),t.insertFirst(this._textView=new u(e,"rct-linear-gauge-group-label"))}_prepareGauge(e,t){this._textView.setVis(t.label.visible)&&this._textView.setStyleOrClass(t.label._style),this._scaleView.setVis(t.scale.visible)&&this._scaleView.setStyleOrClass(t.scale._style),super._prepareGauge(e,t)}_doRenderGauges(e,t,s,i){const a=this.model,n=a.options,l=this._textView,r=P(0,0,s,i);if(l.visible){l.text=a.label.options.text,a.label.buildSvg(l,null,NaN,NaN,a,null);const e=this._textView.getBBox().height+a.label.getGap(i);r.y+=e,r.height-=e,l.trans(this.width/2,0)}a._labelWidth=a._labelHeight=0,this._gaugeViews.forEach(((e,t)=>{const n=e._measureLabelSize(a.get(t),s,i);a._labelWidth=d(a._labelWidth,n.width),a._labelHeight=d(a._labelHeight,n.height)}));const h=W(r),o=a.itemLabel.options.gap;n.vertical?(h.height-=a._labelHeight+o,a.itemLabel.options.opposite||(h.y+=a._labelHeight+o)):(h.width-=a._labelWidth+o,a.itemLabel.options.opposite||(h.x+=a._labelWidth+o)),this._renderScale(a,r,h),n.vertical?this.$_layoutVert(this.doc,a,t,r):this.$_layoutHorz(this.doc,a,t,r)}_renderScale(e,t,s){const i=this._scaleView,a=e.scale,n=e.options.vertical,l=n?t.height:t.width,r=[];let h,o;if(this._gaugeViews.forEach(((t,s)=>{r.push(b(t._runValue,e.get(s).options.value))})),a.buildGroupSteps(l,r),a._vertical=n,i.setVis(a.visible)){const e=i.measure(this.doc,a,s.width,s.height,1);if(n){const i=e.width;s.width-=i,t.width-=i,o=s.y,"opposite"===a.options.position?h=s.x+s.width:(h=s.x,s.x+=i,t.x+=i)}else{const i=e.height;s.height-=i,t.height-=i,h=s.x,"opposite"===a.options.position?(o=s.y,s.y+=i,t.y+=i):o=s.y+s.height}i.resizeByMeasured().layout().trans(h,o)}}$_layoutVert(e,t,s,i){const a=i.height,n=(i.width-t.options.itemGap*(s.count-1))/s.count,l=i.y;let r=i.x;s.forEach(((s,i)=>{s.measure(e,t.get(i),n,a,0),s.resize(n,a),s.layout(),s.trans(r,l),r+=n+t.options.itemGap}))}$_layoutHorz(e,t,s,i){const a=t.options.itemGap,n=i.width,l=(i.height-a*(s.count-1))/s.count,r=i.x;let h=i.y;s.forEach(((s,i)=>{s.measure(e,t.get(i),n,l,0),s.resize(n,l),s.layout(),s.trans(r,h),h+=l+a}))}}class Oe extends De{constructor(e){super(e,"rct-linear-gauge-group")}_doInitContents(e,t){super._doInitContents(e,t),t.insertChild(this._bandView=new Ee(e),this._scaleView)}_createPool(e){return new m(e,Te)}_renderScale(e,t,s){super._renderScale(e,t,s);const i=this._bandView,a=e.band;let n,l;if(i.setVis(a.visible)){const r=+a.options.gap||0,h=i.measure(this.doc,a,s.width,s.height,1);if(e.options.vertical){const e=h.width+r;s.width-=e,t.width-=e,l=s.y,"opposite"===a.options.position?n=s.x+s.width+r:(n=s.x,s.x+=e,t.x+=e)}else{const e=h.height+r;s.height-=e,t.height-=e,n=s.x,"opposite"===a.options.position?(l=s.y,s.y+=e,t.y+=e):l=s.y+s.height+r}i.resizeByMeasured().layout().trans(n,l)}}}class Ne extends t{constructor(e){super(e.chart),this.gauge=e}getRanges(){var e;return null===(e=this.$_internalRanges())||void 0===e?void 0:e.slice(0)}_doApply(e){const t=this;var s;super._doApply(e),(s=e.ranges)!==t._ranges&&(t._ranges=s,t._runRanges=null)}$_internalRanges(){if(!this._runRanges){const e=this.gauge.options;this._runRanges=r(this._ranges,e.minValue,e.maxValue,this._op.rangeInclusive)}return this._runRanges}}Ne.defaults=e(t.defaults,{vertical:!0,rangeInclusive:!0});class Ie extends l{}Ie.defaults=e(t.defaults,{visible:!0});class Ge extends ve{}class He extends me{_doInitChildren(e){super._doInitChildren(e),e.band=(this._band=new Ne(this)).init(),e.targetBar=(this._targetBar=new Ie(this)).init(),e.valueBar=(this._valueBar=new Ge(this)).init()}get band(){return this._band}get targetBar(){return this._targetBar}get valueBar(){return this._valueBar}getRanges(e,t,s){return r(this._op.ranges,e,t,z(s,this._op.rangeInclusive))}}He.type=F,He.defaults=e(me.defaults,{rangeInclusive:!0});class Ae extends Se{getRanges(e,t,s){return r(this._op.ranges,e,t,z(s,this._op.rangeInclusive))}_gaugesType(){return"bullet"}}Ae.type=Y,Ae.gaugeType=F,Ae.defaults=e(Se.defaults,{rangeInclusive:!0});class $e extends Le{constructor(e){super(e,"rct-bullet-gage")}_doInitContents(e,t){t.add(this._background=new G(e,"rct-bullet-gauge-background")),t.add(this._barContainer=new g(e,void 0)),this._barViews=new m(this._barContainer,G),t.add(this._valueView=new G(e,"rct-bullet-gauge-value")),t.add(this._targetView=new G(e,"rct-bullet-gauge-target")),t.add(this._scaleView=new Be(e)),t.add(this._labelView=new u(e))}_backgroundView(){return this._background}labelView(){return this._labelView}scaleView(){return this._scaleView}background(){return this._background}_prepareGauge(e,t){}_renderBand(e,t,s){const i=e.options,a=e._group,n=e.options.reversed,l=this._vertical,r=a?a.scale:e.scale,h=this._valueView,o=this._targetView;if(this._barContainer.setVis(!H(t)&&!r.isEmpty())){const s=e.getRanges(r._min,r._max,!1)||(null==a?void 0:a.getRanges(r._min,r._max,!1));s&&(this._barContainer.setRect(t),this._barViews.prepare(s.length),l?this._barViews.forEach(((e,i)=>{const a=s[i],l=t.height*r.getRate(a.toValue-a.fromValue),h=t.height*r.getRate(a.fromValue);e.setBounds(0,n?h:t.height-h-l,t.width,l),e.internalClearStyleAndClass(),e.setFill(a.color),a.style&&e.addStyleOrClass(a.style)})):this._barViews.forEach(((e,i)=>{const a=s[i],l=t.width*r.getRate(a.toValue-a.fromValue),h=t.width*r.getRate(a.fromValue);e.setBounds(n?t.width-l-h:h,0,l,t.height),e.internalClearStyleAndClass(),e.setFill(a.color),a.style&&e.addStyleOrClass(a.style)})))}if(h.setVis(e.valueBar.visible&&!r.isEmpty()&&!isNaN(s)))if(h.setStyleOrClass(e.valueBar._style),s<i.targetValue&&e.valueBar.options.belowStyle&&h.internalSetStyleOrClass(e.valueBar.options.belowStyle),h.internalSetStyleOrClass(e.valueBar.getStyle(e,s)),l){const e=t.height*r.getRate(s),i=n?t.y:t.y+t.height-e;h.setBounds(t.x+t.width/3,i,t.width/3,e)}else{const e=t.width*r.getRate(s),i=n?t.x+t.width-e:t.x;h.setBounds(i,t.y+t.height/3,e,t.height/3)}if(o.setVis(e.targetBar.visible&&!r.isEmpty()&&!isNaN(i.targetValue)))if(o.setStyleOrClass(e.targetBar._style),l&&t.width>10){let e=t.height*r.getRate(i.targetValue);e=n?t.y+e:t.y+t.height-e,o.setBounds(t.x+5,e-1,t.width-10,3)}else if(!l&&t.height>10){let e=t.width*r.getRate(i.targetValue);e=n?t.x+t.width-e:t.x+e,o.setBounds(e-1,t.y+5,3,t.height-10)}}}class Me extends De{constructor(e){super(e,"rct-bullet-gauge-group")}_createPool(e){return new m(e,$e)}}class Pe extends l{getThickness(e){return h(this._thicknessDim,e,e)}_doApply(e){super._doApply(e),this._setDim(e,"thickness")}}Pe.defaults=e(t.defaults,{thickness:7});class ze extends l{getLength(e){return h(this._lengthDim,e,e)}_doApply(e){super._doApply(e),this._setDim(e,"length")}}ze.defaults=e(t.defaults,{thickness:7,length:"60%"});class We extends ze{}We.defaults=e(ze.defaults,{thickness:5,length:"85%"});class Fe extends ze{}Fe.defaults=e(ze.defaults,{thickness:2,length:"95%",animatable:!1,duration:200});class Ye extends l{constructor(e,t){super(e),this.length=t}}class Xe extends l{}Xe.defaults=e(t.defaults,{step:1,offset:1});class Ue extends l{constructor(e,t){super(e),this.raidus=t}}class je extends X{constructor(e){super(e.chart)}}je.defaults=e(X.defaults,{text:"RealChart Clock<br>ver1.0",position:"top"});class qe extends j{_doInitChildren(e){super._doInitChildren(e),e.rim=(this.rim=new Pe(this)).init(),e.hourHand=(this.hourHand=new ze(this)).init(),e.minuteHand=(this.minuteHand=new We(this)).init(),e.secondHand=(this.secondHand=new Fe(this)).init(),e.tick=(this.tick=new Ye(this,10)).init(),e.minorTick=(this.minorTick=new Ye(this,5)).init(),e.tickLabel=(this.tickLabel=new Xe(this)).init(),e.pin=(this.pin=new Ue(this,5)).init(),e.label=(this.label=new je(this)).init()}getTime(){const e=this._op;return e.time instanceof Date?e.time:q(e.time)?new Date(e.time):isNaN(e.time)?void 0:new Date(e.time)}getExtents(e,t){const s=p(e,t);return{cx:h(this._centerXDim,e,e/2),cy:h(this._centerYDim,t,t/3),rd:h(this._radiusDim,s,s/2)}}_doApply(e){const t=this;var s,i,a;super._doApply(e),s=e.centerX,i=e.centerY,a=e.radius,(t._centerXDim||s!==t._centerX)&&(t._centerXDim=J(z(t._centerX=s,o.DEF_CENTER),!0)),t._centerYDim&&i===t._centerY||(t._centerYDim=J(z(t._centerY=i,o.DEF_CENTER),!0)),t._radiusDim&&a===t._radius||(t._radiusDim=J(z(t._radius=a,o.DEF_RADIUS),!0))}}qe.type=U,qe.defaults=e(j.defaults,{centerX:"50%",centerY:"50%",radius:"40%",active:!0});class Je extends ie{constructor(e){super(),this.view=e}_doUpdate(e){return this.view._secRate=e,this.view.$_renderHands(this.view.model,this.view._exts),!0}}class Ke extends K{constructor(e){super(e,"rct-clock-gauge"),this._rimThick=0,this._secRate=1}_doInitContents(e,t){t.add(this._faceView=new Q(e,"rct-clock-gauge-face")),t.add(this._rimView=new _(e,"rct-clock-gauge-rim")),t.add(this._labelView=new u(e,"rct-clock-gauge-label")),this._labelView.layout=Z.MIDDLE,t.add(this._tickContainer=new g(e,"rct-clock-gauge-ticks")),t.add(this._tickLabelContainer=new g(e,"rct-clock-gauge-tick-labels")),t.add(this._hourView=new L(e,"rct-clock-gauge-hour")),t.add(this._minuteView=new L(e,"rct-clock-gauge-minute")),t.add(this._secondView=new L(e,"rct-clock-gauge-second")),t.add(this._pinView=new Q(e,"rct-clock-gauge-pin")),this._tickViews=new m(this._tickContainer,A,"rct-clock-gauge-tick"),this._minorTickViews=new m(this._tickContainer,A,"rct-clock-gauge-minor-tick"),this._tickLabelViews=new m(this._tickLabelContainer,u,"rct-clock-gauge-tick-label")}_prepareGauge(e,t){this._tickViews.prepare(t.tick.visible?12:0),this._minorTickViews.prepare(t.minorTick.visible?48:0);const s=Math.round(12/d(1,Math.floor(t.tickLabel.options.step)||1));this._tickLabelViews.prepare(t.tickLabel.visible?s:0,(e=>{e.layout=Z.MIDDLE}))}_renderGauge(e,t){const s=this.model,i=this._exts=s.getExtents(e,t);this._secRate=1,this.$_renderFace(s,i),this.$_renderHands(s,i),s.options.active&&!s.getTime()?this._runner||(this._runner=setInterval((()=>{const e=this._prevSec;this.$_renderHands(this.model,this._exts),ee(e-this._prevSec)>=1&&this._secondView.visible&&s.chart.animatable()&&s.secondHand.options.animatable&&this.$_moveSecond(e)}),1e3)):this._runner&&(clearInterval(this._runner),this._runner=void 0)}$_renderFace(e,t){const s=this._labelView,i=this._rimView,a=this._minorTickViews,n=this._tickLabelViews,l=this._pinView,{cx:r,cy:h,rd:o}=t,c=this._rimThick=i.visible?e.rim.getThickness(o):0;this._faceView.setCircle(r,h,o),i.setVis(e.rim.visible)&&(i.internalSetStyleOrClass(e.rim._style),i.setSector({cx:r,cy:h,rx:o,ry:o,innerRadius:1-c/o,start:0,angle:2*Math.PI,clockwise:!0}));const d=o-c;let _=d-e.tick.length,u=te,g=se/12;if(this._tickViews.forEach(((t,s)=>{t.setLine(r+C(u)*d,h+S(u)*d,r+C(u)*_,h+S(u)*_),t.internalSetStyleOrClass(e.tick._style),u+=g})),!a.isEmpty){let t=0;_=d-e.minorTick.length,u=te,g=se/60,a.forEach((s=>{t%5==0&&(u+=g,t++),s.setLine(r+C(u)*d,h+S(u)*d,r+C(u)*_,h+S(u)*_),s.internalSetStyleOrClass(e.minorTick._style),u+=g,t++}))}if(!n.isEmpty){const t=12/n.count,s=se/12*t;u=te,n.get(0).text="12",_=d-(e.tick.length+e.tickLabel.options.offset||0),_-=.5*n.get(0).getBBox().height,n.forEach(((i,a,n)=>{i.text=String(0===a?12:a*t),i.trans(r+C(u)*_,h+S(u)*_),i.internalSetStyleOrClass(e.tickLabel._style),u+=s}))}l.setVis(e.pin.visible)&&(l.setCircle(r,h,e.pin.raidus),l.setStyleOrClass(e.pin._style)),s.setVis(e.label.visible)&&(s.internalSetStyleOrClass(e.label._style),e.label.buildSvg(s,null,NaN,NaN,null,null),"bottom"===e.label.options.position?s.trans(r,h+_/2):s.trans(r,h-_/2))}$_getNow(){const e=this.model.options.timezone;let t=this.model.getTime()||new Date;if(!isNaN(e)){const s=t.getMinutes()+(t.getTimezoneOffset()+e);t.setMinutes(s)}return t}$_renderHands(e,t){const s=this.$_getNow(),i=s.getHours(),a=s.getMinutes(),n=s.getSeconds(),{cx:l,cy:r,rd:h}=t,o=new E;let c,d,_,u;c=e.hourHand,d=this._hourView,d.setVis(c.visible)&&(u=se*(i/12+a/60/12+n/60/60/12),_=c.getLength(h-this._rimThick),o.rect(-c.options.thickness/2,-_,c.options.thickness,_),d.internalSetStyleOrClass(c._style),d.setPath(o.close(!0)).trans(l,r).rotate(u*y)),c=e.minuteHand,d=this._minuteView,d.setVis(c.visible)&&(u=se*(a/60+n/60/60),_=c.getLength(h-this._rimThick),o.rect(-c.options.thickness/2,-_,c.options.thickness,_),d.internalSetStyleOrClass(c._style),d.setPath(o.close(!0)).trans(l,r).rotate(u*y)),c=e.secondHand,d=this._secondView,d.setVis(c.visible)&&(u=this._secRate<1?se*(this._aniSec+this._secRate)/60:se*n/60,_=c.getLength(h-this._rimThick),o.rect(-c.options.thickness/2,-_,c.options.thickness,_),d.internalSetStyleOrClass(c._style),d.setPath(o.close(!0)).trans(l,r).rotate(u*y),this._prevSec=n)}$_moveSecond(e){if(!isNaN(e)){this._aniSec=e;const t=new Je(this);t.duration=this.model.secondHand.options.duration||200,t.start()}}}function Qe(e){(function(e){return e.Series&&e.SeriesView})(e)&&(e.Gauge.register(He,ce,qe,fe),e.GaugeGroup.register(Ae,de,Re),e.GaugeView.register([ce,we],[fe,Te],[He,$e],[qe,Ke],[de,ye],[Re,Oe],[Ae,Me]))}export{He as BulletGauge,ce as CircleGauge,qe as ClockGauge,fe as LinearGauge,Qe as default,Qe as registerGauge};
package/heatmap.js CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  /**
3
- * RealChart Heatmap v1.2.4
4
- * Copyright (C) 2023-2024 WooriTech Inc.
3
+ * RealChart Heatmap v1.3.0
4
+ * Copyright (C) 2023-2025 WooriTech Inc.
5
5
  * All Rights Reserved.
6
6
  */
7
7
  !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("realchart")):"function"==typeof define&&define.amd?define(["exports","realchart"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).RealChartheatmap={},e.RealChart)}(this,(function(e,t){"use strict";function i(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(i){if("default"!==i){var r=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,r.get?r:{enumerable:!0,get:function(){return e[i]}})}})),t.default=e,Object.freeze(t)}var r=i(t);class s extends t.ZValuePoint{}class n extends t.ConnectableSeries{getColor(e){}canMixWith(e){return!1}canCategorized(){return!0}hasZ(){return!0}defYAxisType(){return"category"}_createPoint(e){return new s(e)}_doPrepareRender(){super._doPrepareRender();let e=Number.MAX_VALUE,i=Number.MIN_VALUE;this._runPoints.forEach((r=>{isNaN(r.zValue)||(e=t.minv(e,r.zValue),i=t.maxv(i,r.zValue))})),this._heatMin=e,this._heatMax=i}}n.type=t.HeatmapSeriesType,n.defaults=t.extend(t.Series.defaults,{tooltipText:"x: <b>${x}</b><br>y: <b>${y}</b><br>heat: <b>${z}</b>"});class o extends t.RectElement{constructor(e){super(e,t.SeriesView.POINT_CLASS)}}class a extends t.SeriesView{constructor(e){super(e,"rct-heatmap-series"),this._cells=new t.ElementPool(this._pointContainer,o)}_getPointPool(){return this._cells}_prepareSeries(e,t){this.$_parepareCells(t,this._visPoints)}_renderSeries(e,t){this._pointContainer.invert(this._inverted,t),this.$_layoutCells(e,t)}_runShowEffect(e){e&&t.SeriesAnimation.grow(this)}_doViewRateChanged(e){this.$_layoutCells(this.width,this.height)}$_parepareCells(e,i){const r=new t.Color(e._calcedColor),s=[{fill:void 0}],n=e._heatMin,o=e._heatMax-n;this._cells.prepare(i.length,((t,a)=>{const l=t.point=i[a];s[0].fill=r.brighten(1-(l.zValue-n)/o).toString(),this._setPointStyle(t,e,l,s)}))}$_layoutCells(e,t){const i=this.model,r=this._inverted,s=this._getGrowRate();i.pointLabel;const n=this._labelViews(),o=this._labelContainer._textAlign,a=i._xAxisObj,l=i._yAxisObj,u=r?e:t,h=r?t:e,c=r?0:t;this._cells.forEach((e=>{const t=e.point;if(e.setVis(!t.isNull)){const i=a.getUnitLen(h,t.xValue)*s,_=l.getUnitLen(u,t.yValue)*s;let d,f=a.getPos(h,t.xValue)-i/2,p=c-l.getPos(u,t.yValue)-_/2;if(t.xPos=r?c+l.getPos(u,t.yValue):f+i/2,t.yPos=r?h-a.getPos(h,t.xValue)+i/2:p+_/2,e.setBounds(f,p,i,_),n&&(d=n.get(t,0))){d.layout(o);const e=d.getBBox();r?(p=h-a.getPos(h,t.xValue)-e.height/2,f=c+l.getPos(u,t.yValue)):(f+=i/2,p+=(_-e.height)/2),f-=e.width/2,d.trans(f,p)}}}))}}function l(e){(function(e){return e.Series&&e.SeriesView})(e)&&(e.Series.register(n),e.SeriesView.register([n,a]))}l(r),e.HeatmapSeries=n,e.default=l,Object.defineProperty(e,"__esModule",{value:!0})}));
package/heatmap.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  /**
3
- * RealChart Heatmap v1.2.4
4
- * Copyright (C) 2023-2024 WooriTech Inc.
3
+ * RealChart Heatmap v1.3.0
4
+ * Copyright (C) 2023-2025 WooriTech Inc.
5
5
  * All Rights Reserved.
6
6
  */
7
7
  import{HeatmapSeriesType as e,extend as t,Series as s,ConnectableSeries as i,minv as r,maxv as n,ZValuePoint as o,SeriesView as l,ElementPool as a,SeriesAnimation as h,Color as u,RectElement as _}from"./index.mjs";class c extends o{}class g extends i{getColor(e){}canMixWith(e){return!1}canCategorized(){return!0}hasZ(){return!0}defYAxisType(){return"category"}_createPoint(e){return new c(e)}_doPrepareRender(){super._doPrepareRender();let e=Number.MAX_VALUE,t=Number.MIN_VALUE;this._runPoints.forEach((s=>{isNaN(s.zValue)||(e=r(e,s.zValue),t=n(t,s.zValue))})),this._heatMin=e,this._heatMax=t}}g.type=e,g.defaults=t(s.defaults,{tooltipText:"x: <b>${x}</b><br>y: <b>${y}</b><br>heat: <b>${z}</b>"});class d extends _{constructor(e){super(e,l.POINT_CLASS)}}class p extends l{constructor(e){super(e,"rct-heatmap-series"),this._cells=new a(this._pointContainer,d)}_getPointPool(){return this._cells}_prepareSeries(e,t){this.$_parepareCells(t,this._visPoints)}_renderSeries(e,t){this._pointContainer.invert(this._inverted,t),this.$_layoutCells(e,t)}_runShowEffect(e){e&&h.grow(this)}_doViewRateChanged(e){this.$_layoutCells(this.width,this.height)}$_parepareCells(e,t){const s=new u(e._calcedColor),i=[{fill:void 0}],r=e._heatMin,n=e._heatMax-r;this._cells.prepare(t.length,((o,l)=>{const a=o.point=t[l];i[0].fill=s.brighten(1-(a.zValue-r)/n).toString(),this._setPointStyle(o,e,a,i)}))}$_layoutCells(e,t){const s=this.model,i=this._inverted,r=this._getGrowRate();s.pointLabel;const n=this._labelViews(),o=this._labelContainer._textAlign,l=s._xAxisObj,a=s._yAxisObj,h=i?e:t,u=i?t:e,_=i?0:t;this._cells.forEach((e=>{const t=e.point;if(e.setVis(!t.isNull)){const s=l.getUnitLen(u,t.xValue)*r,c=a.getUnitLen(h,t.yValue)*r;let g,d=l.getPos(u,t.xValue)-s/2,p=_-a.getPos(h,t.yValue)-c/2;if(t.xPos=i?_+a.getPos(h,t.yValue):d+s/2,t.yPos=i?u-l.getPos(u,t.xValue)+s/2:p+c/2,e.setBounds(d,p,s,c),n&&(g=n.get(t,0))){g.layout(o);const e=g.getBBox();i?(p=u-l.getPos(u,t.xValue)-e.height/2,d=_+a.getPos(h,t.yValue)):(d+=s/2,p+=(c-e.height)/2),d-=e.width/2,g.trans(d,p)}}}))}}function x(e){(function(e){return e.Series&&e.SeriesView})(e)&&(e.Series.register(g),e.SeriesView.register([g,p]))}export{g as HeatmapSeries,x as default};
package/index.d.ts CHANGED
@@ -1048,7 +1048,6 @@ declare class RcElement extends RcObject {
1048
1048
  private _y;
1049
1049
  private _width;
1050
1050
  private _height;
1051
- private _zIndex;
1052
1051
  private _tx;
1053
1052
  private _ty;
1054
1053
  private _scaleX;
@@ -1071,8 +1070,6 @@ declare class RcElement extends RcObject {
1071
1070
  get dom(): SVGElement;
1072
1071
  get parent(): RcElement;
1073
1072
  get control(): RcControl;
1074
- get zIndex(): number;
1075
- set zIndex(value: number);
1076
1073
  get x(): number;
1077
1074
  set x(value: number);
1078
1075
  get tx(): number;
@@ -1709,7 +1706,6 @@ declare const _SeriesGroupLayout: {
1709
1706
  * <br>
1710
1707
  * bar 종류의 시리즈인 경우 포인트들을 순서대로 옆으로 배치하고,
1711
1708
  * line 종류인 경우 {@page OVERLAP}과 동일하게 순서대로 표시된다.
1712
- * pie 종류인 경우 {@page FILL}과 동일하다.
1713
1709
  * <br>
1714
1710
  * 기본 값이다.
1715
1711
  * @config
@@ -1735,8 +1731,6 @@ declare const _SeriesGroupLayout: {
1735
1731
  * 각 포인트들은 STACK과 마찬가지로 순서대로 쌓여서 표시된다.
1736
1732
  * SeriesGroup.baseValue 보다 값이 큰 point는 baseValue 위쪽에 작은 값을 가진
1737
1733
  * 포인트들은 baseValue 아래쪽에 표시된다.
1738
- * <br>
1739
- * Pie 시리즈에서는 {@page FILL}과 동일하다.
1740
1734
  * @config
1741
1735
  */
1742
1736
  readonly FILL: "fill";
@@ -1755,6 +1749,7 @@ interface SeriesGroupOptions<T extends SeriesOptions = SeriesOptions> extends Ch
1755
1749
  */
1756
1750
  children?: T[];
1757
1751
  /**
1752
+ * pie 시리즈는 layout을 지원하지 않는다.
1758
1753
  * @default 'default'
1759
1754
  */
1760
1755
  layout?: SeriesGroupLayout;
@@ -3721,6 +3716,120 @@ interface VectorSeriesOptions extends Omit<ConnectableSeriesOptions, 'trendline'
3721
3716
  */
3722
3717
  arrowHead?: ArrowHead;
3723
3718
  }
3719
+ declare const WordCloudSeriesType = "wordcloud";
3720
+ /**
3721
+ * Word cloud 시리즈.<br/>
3722
+ * {@page op.SeriesOptions#type}은 'wordcloud'이다.<br/>
3723
+ * 빈도(weight, 또는 중용도)와 함께 지정된 단어 묶음에 포함된 단어들을 빈도에 따라 텍스트 크기를 비례적으로 표시한다.
3724
+ * 전체 텍스트나 단어 목록 내에서 중요한 용어나 핵심 키워드, 또는 주제 등을 강조하는 용도로 사용된다.
3725
+ * 'tag cloud'로도 불린다.<br/>
3726
+ * {@page data} 대신 {@page text} 속성을 지정하면 단어들을 추출해서 data를 구성한다.
3727
+ *
3728
+ * {@page data}는 아래 형식들로 전달할 수 있다.
3729
+ *
3730
+ * ###### 단일값 또는 단일값 배열
3731
+ * |형식|설명|
3732
+ * |---|---|
3733
+ * |[x, y,]|두 값 이상이면 순서대로 name, value값.<br/>
3734
+ * 또는 {@page xField} 속성이 숫자이면 x값의 index.
3735
+ * {@page yField}는 y값의 index.<br/>{@page colorField}는 color값의 index.|
3736
+ *
3737
+ * ###### json 배열
3738
+ * |Series 속성|설명 |
3739
+ * |---|---|
3740
+ * |{@page xField}|속성 값, 또는 'x', 'name', 'label' 속성들 중 순서대로 값이 설정된 것이 x 값이 된다.|
3741
+ * |{@page yField}|속성 값, 또는 'y', 'value', 속성들 중 순서대로 값이 설정된 것이 y 값이 된다.|
3742
+ * |{@page colorField}|속성 값, 또는 'color' 속성 값으로 데이터포인트의 개별 색상으로 지정된다.|
3743
+ *
3744
+ * // TODO #fiddle series/wordcloud-series WordCloud Series
3745
+ * @css 'rct-wordcloud-series'
3746
+ * @config chart.series[type=wordcloud]
3747
+ */
3748
+ interface WordCloudSeriesOptions extends WidgetSeriesOptions {
3749
+ /**
3750
+ * 표시할 단어들이 포함된 전체 텍스트.<br/>
3751
+ * 이 속성에 비어 있지 않은 문자열이 설정되면 {@page data}는 무시된다.
3752
+ */
3753
+ text?: string;
3754
+ /**
3755
+ * {@page text}에서 단어를 추출할 때 제외할 단어들을 배열로 지정한다.<br/>
3756
+ */
3757
+ excludes?: string[];
3758
+ /**
3759
+ * {@page text}에서 단어를 추출한 후 표시할 단어들의 최대 개수.<br/>
3760
+ * 빈도수가 작은 단어들이 제외된다.
3761
+ *
3762
+ * @default 100
3763
+ */
3764
+ maxCount?: number;
3765
+ /**
3766
+ * 지정한 값을 log base로 한 로그 연산으로 값들을 계산한다.<br>
3767
+ * 2 이상 값으로 지정해야 한다.
3768
+ */
3769
+ logBase?: number;
3770
+ /**
3771
+ * 배치된 전체 영역이 시리즈 영역보다 작은 경우 시리즈 크기에 맞게 확대한다.
3772
+ *
3773
+ * @default true
3774
+ */
3775
+ autoScale?: boolean;
3776
+ /**
3777
+ * {@page text}에서 단어를 추출한 후 표시할 단어들의 최소 빈도수(데이터포인트 y값).<br/>
3778
+ * 이 값 보다 작은 빈도수를 갖는 단어들은 표시되지 않는다.
3779
+ */
3780
+ minWeight?: number;
3781
+ /**
3782
+ * {@page text}에서 단어를 추출한 후 표시할 단어들의 최소 길이.<br/>
3783
+ * 이 값 보다 작은 길이의 단어들은 표시되지 않는다.
3784
+ */
3785
+ minLength?: number;
3786
+ /**
3787
+ * 시리즈 배치 기준이되는 각 단어의 높이 비율로 눈으로 보이는 폰트 높이와 계산되는 높이를 조정한다.<br/>
3788
+ * 'auto'로 지정하면 각 텍스트이 실제 표시 높이를 계산해서 배치한다.
3789
+ * 숫자값은 0.1 ~ 2 사이의 값으로 조정된다.
3790
+ * @default 'auto'
3791
+ */
3792
+ textHeight?: number | 'auto';
3793
+ /**
3794
+ * 가장 작은 빈도수 단어들에 설정되는 픽셀 단위의 폰트 크기.<br/>
3795
+ *
3796
+ * @default 8
3797
+ */
3798
+ minFontSize?: PercentSize;
3799
+ /**
3800
+ * 가장 큰 빈도수 단어들에 설정되는 픽셀 단위의 폰트 크기.<br/>
3801
+ * 지정한 값이 '15%' ~ '50%' 사이의 크기가 되도록 조정된다.
3802
+ *
3803
+ * @default '20%'
3804
+ */
3805
+ maxFontSize?: PercentSize;
3806
+ /**
3807
+ * true로 지정하면 단어 마다 다른 색으로 표시한다.<br/>
3808
+ * 색상들은 {@page palette}나 {@page colors}로 지정할 수 있다.
3809
+ *
3810
+ * @default true
3811
+ */
3812
+ colorByPoint?: boolean;
3813
+ /**
3814
+ * @default 'rectangle'
3815
+ */
3816
+ frame?: 'circle' | 'ellipse' | 'rectangle' | 'square';
3817
+ /**
3818
+ * true로 지정하면 차트가 새로 표시되거나 데이터가 변경될 때, 단어들의 위치가 디르게 표시된다.
3819
+ *
3820
+ * @default false
3821
+ */
3822
+ shuffle?: boolean;
3823
+ /**
3824
+ * 단어 사이의 최소 수평 간격을 시리즈 내부 단위로 표시한다.<br/>
3825
+ */
3826
+ wordGap?: number;
3827
+ /**
3828
+ * 단어 배치 각도와 관련된 random 값<br/>
3829
+ * 0 ~ 360 사이의 값으로 지정한다.
3830
+ */
3831
+ seed?: number;
3832
+ }
3724
3833
  /** @enum */
3725
3834
  declare const CandlestickSeriesTypes: {
3726
3835
  readonly CandlestickSeriesType: "candlestick";
@@ -3982,7 +4091,7 @@ interface ChartOptionsOptions extends ChartItemOptions {
3982
4091
  */
3983
4092
  seriesHovering?: boolean;
3984
4093
  /**
3985
- * 데이터포인트에 마우수가 올라갈 때 처리하는 방식.<br/>
4094
+ * 데이터포인트에 마우스가 올라갈 때 처리하는 방식.<br/>
3986
4095
  *
3987
4096
  */
3988
4097
  pointHovering?: PointHoveringOptions;
@@ -4275,7 +4384,7 @@ declare const _PointHoverScope: {
4275
4384
  };
4276
4385
  type PointHoverScope = typeof _PointHoverScope[keyof typeof _PointHoverScope];
4277
4386
  /**
4278
- * 데이터포인트에 마우수가 올라갈 때 처리하는 방식 설정 옵션.<br/>
4387
+ * 데이터포인트에 마우스가 올라갈 때 처리하는 방식 설정 옵션.<br/>
4279
4388
  */
4280
4389
  interface PointHoveringOptions extends ChartItemOptions {
4281
4390
  /**
@@ -4793,6 +4902,9 @@ declare class TextElement extends RcElement {
4793
4902
  applyStyles(styles: any): void;
4794
4903
  setStyle(prop: string, value: string): boolean;
4795
4904
  getBBox(): IRect;
4905
+ /**
4906
+ * For unit test.
4907
+ */
4796
4908
  getBBoundsTest(): IRect;
4797
4909
  stain(): void;
4798
4910
  }
@@ -5767,6 +5879,7 @@ declare abstract class Series<OP extends SeriesOptions = SeriesOptions> extends
5767
5879
  pointClicked(p: DataPoint): boolean;
5768
5880
  pointHovered(p: DataPoint): void;
5769
5881
  getViewRangeAxis(): 'x' | 'y' | 'z';
5882
+ isLabelsVisible(): boolean;
5770
5883
  isPointLabelVisible(p: DataPoint): boolean;
5771
5884
  /**
5772
5885
  * 지정한 x축 값에 위치한 첫번째 데이터포인트를 리턴한다.<br/>
@@ -5893,6 +6006,7 @@ declare class PlottingItemCollection extends ChartItemCollection<PlottingItem> {
5893
6006
  isEmpty(visibleOnly: boolean): boolean;
5894
6007
  visibles(): PlottingItem[];
5895
6008
  series(): Series[];
6009
+ _internalSeries(): Series<SeriesOptions>[];
5896
6010
  seriesCount(): number;
5897
6011
  needAxes(): boolean;
5898
6012
  /** @internal */
@@ -5903,6 +6017,7 @@ declare class PlottingItemCollection extends ChartItemCollection<PlottingItem> {
5903
6017
  getPaneSeries(row: number, col: number): Series[];
5904
6018
  seriesByPoint(point: DataPoint): Series;
5905
6019
  getLegendSources(): ILegendSource[];
6020
+ canPolar(): boolean;
5906
6021
  load(src: any): void;
5907
6022
  add(source: any): Series;
5908
6023
  remove(series: string | Series): Series;
@@ -6009,7 +6124,6 @@ declare abstract class ClusterableSeries<OP extends ClusterableSeriesOptions = C
6009
6124
  _childPos: number;
6010
6125
  _single: boolean;
6011
6126
  _pointPad: number;
6012
- _minPointWidth: number;
6013
6127
  groupWidth(): number;
6014
6128
  getMinPointWidth(): number;
6015
6129
  getPointWidth(length: number): number;
@@ -6722,7 +6836,13 @@ declare abstract class Axis<OP extends AxisOptions = AxisOptions> extends ChartI
6722
6836
  abstract continuous(): boolean;
6723
6837
  abstract valueAt(length: number, pos: number): number;
6724
6838
  axisValueAt(length: number, pos: number): any;
6839
+ /**
6840
+ * radian으로 리턴한다.
6841
+ */
6725
6842
  getStartAngle(): number;
6843
+ /**
6844
+ * radian으로 리턴한다.
6845
+ */
6726
6846
  getTotalAngle(): number;
6727
6847
  isArced(): boolean;
6728
6848
  getVisibleSeries(): ISeries[];
@@ -7583,7 +7703,8 @@ interface AxisOptions extends ChartItemOptions {
7583
7703
  */
7584
7704
  crosshair?: CrosshairOptions | boolean;
7585
7705
  /**
7586
- * zoom된 축에 표시할 수 있는 스크롤바 옵션.<br/>
7706
+ * zoom된 x축에 표시할 수 있는 스크롤바 옵션.<br/>
7707
+ * y축은 scrollBar가 표시되지 않는다.
7587
7708
  * // TODO #fiddle axis/scrollbar Axis ScrollBar
7588
7709
  */
7589
7710
  scrollBar?: AxisScrollBarOptions | boolean;
@@ -9308,13 +9429,6 @@ declare abstract class GaugeBase<OP extends GaugeBaseOptions = GaugeBaseOptions>
9308
9429
  static defaults: GaugeBaseOptions;
9309
9430
  _row: number;
9310
9431
  _col: number;
9311
- private _size;
9312
- private _width;
9313
- private _height;
9314
- private _left;
9315
- private _right;
9316
- private _top;
9317
- private _bottom;
9318
9432
  private _name;
9319
9433
  index: number;
9320
9434
  private _sizeDim;
@@ -9697,7 +9811,6 @@ declare class Body<OP extends BodyOptions = BodyOptions> extends ChartItem<OP> i
9697
9811
  get zoomButton(): ZoomButton;
9698
9812
  base(): Body;
9699
9813
  canZoom(): boolean;
9700
- isEmpty(): boolean;
9701
9814
  getRadius(width: number, height: number): number;
9702
9815
  setPolar(width: number, height: number): Body;
9703
9816
  getPolar(axis: Axis): IPolar;
@@ -11141,7 +11254,8 @@ declare abstract class SeriesView<T extends Series = Series> extends ContentView
11141
11254
  getPointView(p: DataPoint): RcElement;
11142
11255
  clicked(elt: Element): void;
11143
11256
  protected _doPointClicked(view: IPointView): void;
11144
- prepareSeries(doc: Document, model: T): void;
11257
+ protected _getPointColors(): string;
11258
+ prepareSeries(doc: Document, model: T, polar: boolean): void;
11145
11259
  protected _setModelColor(color: string): void;
11146
11260
  protected _legendColorProp(): string;
11147
11261
  needDecoreateLegend(): boolean;
@@ -11156,13 +11270,14 @@ declare abstract class SeriesView<T extends Series = Series> extends ContentView
11156
11270
  getSiblings(pv: IPointView): IPointView[];
11157
11271
  getSibling(pv: IPointView): IPointView;
11158
11272
  applyAutoRotation(view: PointLabelView, a: number, total: number, totalAngle: number): void;
11273
+ isEmptyView(): boolean;
11159
11274
  protected _doAttached(parent: RcElement): void;
11160
11275
  protected _prepareStyleOrClass(model: T): void;
11161
11276
  protected _prepareViewRanges(model: T): void;
11162
11277
  protected _doMeasure(doc: Document, model: T, hintWidth: number, hintHeight: number, phase: number): Size;
11163
11278
  protected _doLayout(): void;
11164
11279
  protected _doAfterLayout(): void;
11165
- protected abstract _prepareSeries(doc: Document, model: T): void;
11280
+ protected abstract _prepareSeries(doc: Document, model: T, polar: boolean): void;
11166
11281
  protected abstract _renderSeries(width: number, height: number): void;
11167
11282
  protected _collectVisPoints(model: T): DataPoint[];
11168
11283
  private $_setColorIndex;
@@ -11170,6 +11285,7 @@ declare abstract class SeriesView<T extends Series = Series> extends ContentView
11170
11285
  protected _setPointStyle(v: RcElement, model: T, p: DataPoint, styles?: any[]): void;
11171
11286
  protected _labelViews(): PointLabelContainer;
11172
11287
  protected _getGrowRate(): number;
11288
+ protected _getPosRate(): number;
11173
11289
  _animating(): boolean;
11174
11290
  protected _lazyPrepareLabels(): boolean;
11175
11291
  protected _getShowAnimation(): RcAnimation;
@@ -11221,9 +11337,11 @@ declare abstract class WidgetSeriesView<T extends WidgetSeries> extends SeriesVi
11221
11337
  _zombieRate: number;
11222
11338
  _zombieAni: ZombiAnimation;
11223
11339
  togglePointVisible(p: DataPoint): void;
11340
+ needFronting(): boolean;
11224
11341
  isPointLabelVisible(p: WidgetSeriesPoint): boolean;
11225
11342
  protected _collectVisPoints(model: T): DataPoint[];
11226
11343
  protected _prepareSeries(doc: Document, model: T): void;
11344
+ protected _getPointColors(): string;
11227
11345
  _resizeZombie(): void;
11228
11346
  protected _createPointLegendMarker(doc: Document, p: DataPoint, size: number): RcElement;
11229
11347
  protected _preparePoint(doc: Document, model: T, p: WidgetSeriesPoint, pv: RcElement): void;
@@ -11322,7 +11440,7 @@ declare class BodyView extends ChartElement<Body> implements IAnnotationAnchorOw
11322
11440
  private _bodyClip;
11323
11441
  constructor(doc: Document, owner: IPlottingOwner);
11324
11442
  getAnnotationAnchor(model: any): RcElement;
11325
- prepareRender(doc: Document, chart: IChart): void;
11443
+ prepareRender(doc: Document, chart: IChart, polar: boolean): void;
11326
11444
  prepareGuideContainers(): void;
11327
11445
  pointerMoved(p: Point, target: EventTarget): boolean;
11328
11446
  hoverSeries(series: Series): void;
@@ -11347,6 +11465,7 @@ declare class BodyView extends ChartElement<Body> implements IAnnotationAnchorOw
11347
11465
  protected _clipSeries(view: RcElement, view2: RcElement, invertable: boolean): void;
11348
11466
  protected _setImage(w: number, h: number): void;
11349
11467
  protected _doLayout(): void;
11468
+ private $_isEmpty;
11350
11469
  private $_createGaugeView;
11351
11470
  private $_prepareGrids;
11352
11471
  protected _prepareSeries(doc: Document, chart: IChart, series: Series[]): void;
@@ -12376,17 +12495,10 @@ declare class ParetoSeries extends LineSeriesBase<ParetoSeriesOptions> {
12376
12495
  * [x, y]
12377
12496
  */
12378
12497
  declare class PieSeriesPoint extends WidgetSeriesPoint {
12379
- private _thickness;
12380
- private _thickDim;
12381
12498
  sliced: boolean;
12382
12499
  startAngle: number;
12383
12500
  angle: number;
12384
12501
  borderRaidus: number;
12385
- /**
12386
- * 원호 두께.
12387
- */
12388
- get thickness(): PercentSize;
12389
- set thickness(value: PercentSize);
12390
12502
  parse(series: ISeries): void;
12391
12503
  protected _assignTo(proxy: any): any;
12392
12504
  }
@@ -12409,8 +12521,6 @@ declare class PieSeriesLabel extends WidgetSeriesLabel<PieSeriesLabelOptions> {
12409
12521
  declare class PieSeries extends RadialSeries<PieSeriesOptions> {
12410
12522
  static readonly type = "pie";
12411
12523
  static defaults: PieSeriesOptions;
12412
- private _innerRadius;
12413
- private _sliceOffset;
12414
12524
  private _innerText;
12415
12525
  private _innerRadiusDim;
12416
12526
  private _sliceOffsetDim;
@@ -12697,6 +12807,7 @@ declare abstract class GaugeView<T extends GaugeBase = GaugeBase> extends Conten
12697
12807
  clicked(elt: Element): void;
12698
12808
  prepareGauge(doc: Document, model: T): void;
12699
12809
  getPosition(width: number, height: number): Point;
12810
+ isEmptyView(): boolean;
12700
12811
  protected _prepareStyleOrClass(model: T): void;
12701
12812
  protected _doMeasure(doc: Document, model: T, hintWidth: number, hintHeight: number, phase: number): Size;
12702
12813
  protected _doLayout(): void;
@@ -12799,7 +12910,7 @@ declare class Utils {
12799
12910
  static logElapsed(message: string, runner: () => void): void;
12800
12911
  static clamp(v: number, min: number, max: number): number;
12801
12912
  static makeIntArray(from: number, to: number): number[];
12802
- static shuffle(arr: any[]): void;
12913
+ static shuffle(arr: any[]): any[];
12803
12914
  static isDate(v: any): boolean;
12804
12915
  static isValidDate(d: Date): boolean;
12805
12916
  static asFunction(fn: any): any;
@@ -12825,4 +12936,4 @@ declare const configure: typeof Globals.configure;
12825
12936
  declare const createChart: typeof Globals.createChart;
12826
12937
  declare const createData: typeof Globals.createData;
12827
12938
 
12828
- export { Align, Annotation, AnnotationAnimationOptions, AnnotationOptions, AnnotationOptionsType, ArcElement, AreaRangeSeries, AreaRangeSeriesOptions, AreaSeries, AreaSeriesGroup, AreaSeriesGroupOptions, AreaSeriesOptions, ArrowHead, AssetCollection, AssetItemOptions, AssetOptionsType, Axis, AxisBaseLine, AxisBaseLineOptions, AxisBreakOptions, AxisCollection, AxisGrid, AxisGridOptions, AxisGridRowsOptions, AxisGuideLabelOptions, AxisGuideOptions, AxisItem, AxisItemOptions, AxisLabel, AxisLabelArgs, AxisLabelOptions, AxisLine, AxisLineGuideOptions, AxisLineOptions, AxisOptions, AxisOptionsType, AxisRangeGuideOptions, AxisScrollBar, AxisScrollBarOptions, AxisScrollView, AxisSectorLine, AxisSectorLineOptions, AxisTick, AxisTickOptions, AxisTitle, AxisTitleOptions, AxisView, BackgroundImageOptions, BarRangeSeries, BarRangeSeriesOptions, BarSeries, BarSeriesBase, BarSeriesBaseOptions, BarSeriesGroup, BarSeriesGroupBase, BarSeriesGroupBaseOptions, BarSeriesGroupOptions, BarSeriesOptions, BasedSeries, BasedSeriesOptions, BellCurveSeries, BellCurveSeriesOptions, Body, BodyOptions, BodyView, BoxPlotSeries, BoxPlotSeriesOptions, BubbleSeries, BubbleSeriesOptions, BulletGaugeBandOptions, BulletGaugeGroupOptions, BulletGaugeGroupType, BulletGaugeOptions, BulletGaugeType, BulletTargetBarOptions, BulletValueBarOptions, BumpSeriesGroup, BumpSeriesGroupOptions, CandlestickSeries, CandlestickSeriesOptions, CategoryAxis, CategoryAxisGrid, CategoryAxisLabel, CategoryAxisOptions, CategoryAxisTick, CategoryAxisTickOptions, Chart, ChartConfiguration, ChartControl, ChartData, ChartDataCollection, ChartDataOptions, ChartElement, ChartItem, ChartItemOptions, ChartObject, ChartOptions, ChartOptionsOptions, ChartText, ChartTextOptions, ChartView, CircelBarPointLabel, CircleBarPointLabelOptions, CircleBarSeries, CircleBarSeriesGroup, CircleBarSeriesGroupOptions, CircleBarSeriesOptions, CircleElement, CircleGaugeGroupOptions, CircleGaugeGroupType, CircleGaugeHandOptions, CircleGaugeOptions, CircleGaugePinOptions, CircleGaugeRimBaseOptions, CircleGaugeRimOptions, CircleGaugeScaleOptions, CircleGaugeType, CircleGaugeValueMarkerOptions, CircleGaugeValueRimOptions, CircularGauge, CircularGaugeGroup, CircularGaugeGroupOptions, CircularGaugeLabel, CircularGaugeLabelOptions, CircularGaugeOptions, ClockGaugeHandOptions, ClockGaugeLabelOptions, ClockGaugeOptions, ClockGaugePinOptions, ClockGaugeRimOptions, ClockGaugeSecondHandOptions, ClockGaugeTickLabelOptions, ClockGaugeTickOptions, ClockGaugeType, ClusterableSeries, ClusterableSeriesGroup, ClusterableSeriesGroupOptions, ClusterableSeriesOptions, Color, ColorListOptions, ConnectableSeries, ConnectableSeriesOptions, ConstraintSeriesGroup, ContentView, ContinuousAxis, ContinuousAxisGridOptions, ContinuousAxisLabelOptions, ContinuousAxisOptions, ContinuousAxisTickOptions, Credits, CreditsOptions, Crosshair, CrosshairCallbackArgs, CrosshairFlagOptions, CrosshairOptions, DataPoint, DataPointCallbackArgs, DataPointCollection, DataPointLabel, DataPointLabelOptions, DumbbellSeries, DumbbellSeriesMarkerOptions, DumbbellSeriesOptions, ElementPool, EmptyViewOptions, EqualizerSeries, EqualizerSeriesOptions, ErrorBarSeries, ErrorBarSeriesOptions, ExportOptions, Exporter, ExporterOptions, FunnelSeries, FunnelSeriesLabelOptions, FunnelSeriesOptions, Gauge, GaugeBase, GaugeBaseOptions, GaugeGroup, GaugeGroupOptions, GaugeGroupView, GaugeItem, GaugeLabel, GaugeLabelOptions, GaugeOptions, GaugeOptionsType, GaugeRangeBand, GaugeRangeBandOptions, GaugeRangeLabel, GaugeRangeLabelOptions, GaugeScale, GaugeScaleLabelOptions, GaugeScaleOptions, GaugeScaleTickOptions, GaugeView, GradientOptions, GuageScaleTickOptions, HeatmapSeriesOptions, HeatmapSeriesType, HistogramSeries, HistogramSeriesOptions, IAxis, IChart, ICircularGaugeExtents, IMinMax, IPercentSize, IPlottingItem, IPlottingOwner, IPointView, IRect, ISeries, ISplit, IconedText, IconedTextOptions, ImageAnnotation, ImageAnnotationOptions, ImageListOptions, ImageOptions, LayerElement, Legend, LegendOptions, LineElement, LinePointLabel, LinePointLabelOptions, LineSeries, LineSeriesBase, LineSeriesBaseOptions, LineSeriesFlagOptions, LineSeriesGroup, LineSeriesGroupOptions, LineSeriesMarkerOptions, LineSeriesOptions, LineSeriesPoint, LinearAxis, LinearAxisLabelOptions, LinearAxisOptions, LinearGaugeBaseOptions, LinearGaugeChildLabelOptions, LinearGaugeGroupBaseOptions, LinearGaugeGroupLabelOptions, LinearGaugeGroupOptions, LinearGaugeGroupType, LinearGaugeLabelOptions, LinearGaugeOptions, LinearGaugeScaleOptions, LinearGaugeType, LinearGradientOptions, LinearValueBarOptions, LogAxis, LogAxisOptions, LogAxisTickOptions, LollipopSeries, LollipopSeriesMarkerOptions, LollipopSeriesOptions, LowRangedSeries, LowRangedSeriesOptions, MarkerSeries, MarkerSeriesOptions, MarkerSeriesPointView, MarkerSeriesView, NavigatorMask, NavigiatorHandle, NavigiatorHandleOptions, NavigiatorMaskOptions, ORG_ANGLE, OhlcSeries, OhlcSeriesOptions, PI_2, PaneBodyOptions, PaneContainer, PaneOptions, ParetoSeries, ParetoSeriesOptions, PathBuilder, PathElement, PatternOptions, PercentSize, PieSeries, PieSeriesGroup, PieSeriesGroupOptions, PieSeriesLabel, PieSeriesLabelOptions, PieSeriesOptions, PieSeriesText, PieSeriesTextOptions, Point, PointElement, PointHovering, PointHoveringOptions, PointLabelView, RAD_DEG, RadialGradientOptions, RadialSeries, RadialSeriesOptions, RangedSeries, RangedSeriesOptions, RcAnimation, RcControl, RcElement, RcObject, RectElement, SVGStyleOrClass, SVGStyles, ScaleView, ScatterSeries, ScatterSeriesOptions, SectionView, SectorElement, Series, SeriesAnimation, SeriesGroup, SeriesGroupOptions, SeriesMarker, SeriesMarkerOptions, SeriesNavigator, SeriesNavigatorOptions, SeriesOptions, SeriesOptionsType, SeriesView, Shape, ShapeAnnotation, ShapeAnnotationOptions, Size, SplineSeries, SplineSeriesOptions, SplitOptions, StepCallbackArgs, Subtitle, SubtitleOptions, TextAnchor, TextAnnotation, TextAnnotationOptions, TextElement, TextLayout, TimeAxis, TimeAxisLabelOptions, TimeAxisOptions, TimeAxisTickOptions, Title, TitleOptions, Tooltip, TooltipOptions, TreeGroupHeadOptions, TreemapSeriesOptions, TreemapSeriesType, Trendline, TrendlineOptions, Utils, ValueGauge, ValueGaugeOptions, ValueGaugeView, ValueRange, ValueRangeList, VectorSeriesOptions, VectorSeriesType, WaterfallSeries, WaterfallSeriesOptions, Widget, WidgetSeries, WidgetSeriesOptions, WidgetSeriesView, ZValuePoint, ZoomButtonOptions, absv, assignObj, buildValueRanges, calcPercent, configure, copyObj, cos, createChart, createData, createRect, extend, fixnum, getVersion, incv, isArray, isEmptyRect, isObject, isString, maxv, minv, parsePercentSize, pickNum, pickProp, pickProp3, pixel, rectToSize, setAnimatable, setDebugging, setLogging, sin, toStr };
12939
+ export { Align, Annotation, AnnotationAnimationOptions, AnnotationOptions, AnnotationOptionsType, ArcElement, AreaRangeSeries, AreaRangeSeriesOptions, AreaSeries, AreaSeriesGroup, AreaSeriesGroupOptions, AreaSeriesOptions, ArrowHead, AssetCollection, AssetItemOptions, AssetOptionsType, Axis, AxisBaseLine, AxisBaseLineOptions, AxisBreakOptions, AxisCollection, AxisGrid, AxisGridOptions, AxisGridRowsOptions, AxisGuideLabelOptions, AxisGuideOptions, AxisItem, AxisItemOptions, AxisLabel, AxisLabelArgs, AxisLabelOptions, AxisLine, AxisLineGuideOptions, AxisLineOptions, AxisOptions, AxisOptionsType, AxisRangeGuideOptions, AxisScrollBar, AxisScrollBarOptions, AxisScrollView, AxisSectorLine, AxisSectorLineOptions, AxisTick, AxisTickOptions, AxisTitle, AxisTitleOptions, AxisView, BackgroundImageOptions, BarRangeSeries, BarRangeSeriesOptions, BarSeries, BarSeriesBase, BarSeriesBaseOptions, BarSeriesGroup, BarSeriesGroupBase, BarSeriesGroupBaseOptions, BarSeriesGroupOptions, BarSeriesOptions, BasedSeries, BasedSeriesOptions, BellCurveSeries, BellCurveSeriesOptions, Body, BodyOptions, BodyView, BoxPlotSeries, BoxPlotSeriesOptions, BubbleSeries, BubbleSeriesOptions, BulletGaugeBandOptions, BulletGaugeGroupOptions, BulletGaugeGroupType, BulletGaugeOptions, BulletGaugeType, BulletTargetBarOptions, BulletValueBarOptions, BumpSeriesGroup, BumpSeriesGroupOptions, CandlestickSeries, CandlestickSeriesOptions, CategoryAxis, CategoryAxisGrid, CategoryAxisLabel, CategoryAxisOptions, CategoryAxisTick, CategoryAxisTickOptions, Chart, ChartConfiguration, ChartControl, ChartData, ChartDataCollection, ChartDataOptions, ChartElement, ChartItem, ChartItemOptions, ChartObject, ChartOptions, ChartOptionsOptions, ChartText, ChartTextOptions, ChartView, CircelBarPointLabel, CircleBarPointLabelOptions, CircleBarSeries, CircleBarSeriesGroup, CircleBarSeriesGroupOptions, CircleBarSeriesOptions, CircleElement, CircleGaugeGroupOptions, CircleGaugeGroupType, CircleGaugeHandOptions, CircleGaugeOptions, CircleGaugePinOptions, CircleGaugeRimBaseOptions, CircleGaugeRimOptions, CircleGaugeScaleOptions, CircleGaugeType, CircleGaugeValueMarkerOptions, CircleGaugeValueRimOptions, CircularGauge, CircularGaugeGroup, CircularGaugeGroupOptions, CircularGaugeLabel, CircularGaugeLabelOptions, CircularGaugeOptions, ClockGaugeHandOptions, ClockGaugeLabelOptions, ClockGaugeOptions, ClockGaugePinOptions, ClockGaugeRimOptions, ClockGaugeSecondHandOptions, ClockGaugeTickLabelOptions, ClockGaugeTickOptions, ClockGaugeType, ClusterableSeries, ClusterableSeriesGroup, ClusterableSeriesGroupOptions, ClusterableSeriesOptions, Color, ColorListOptions, ConnectableSeries, ConnectableSeriesOptions, ConstraintSeriesGroup, ContentView, ContinuousAxis, ContinuousAxisGridOptions, ContinuousAxisLabelOptions, ContinuousAxisOptions, ContinuousAxisTickOptions, Credits, CreditsOptions, Crosshair, CrosshairCallbackArgs, CrosshairFlagOptions, CrosshairOptions, DataPoint, DataPointCallbackArgs, DataPointCollection, DataPointLabel, DataPointLabelOptions, DumbbellSeries, DumbbellSeriesMarkerOptions, DumbbellSeriesOptions, ElementPool, EmptyViewOptions, EqualizerSeries, EqualizerSeriesOptions, ErrorBarSeries, ErrorBarSeriesOptions, ExportOptions, Exporter, ExporterOptions, FunnelSeries, FunnelSeriesLabelOptions, FunnelSeriesOptions, Gauge, GaugeBase, GaugeBaseOptions, GaugeGroup, GaugeGroupOptions, GaugeGroupView, GaugeItem, GaugeLabel, GaugeLabelOptions, GaugeOptions, GaugeOptionsType, GaugeRangeBand, GaugeRangeBandOptions, GaugeRangeLabel, GaugeRangeLabelOptions, GaugeScale, GaugeScaleLabelOptions, GaugeScaleOptions, GaugeScaleTickOptions, GaugeView, GradientOptions, GuageScaleTickOptions, HeatmapSeriesOptions, HeatmapSeriesType, HistogramSeries, HistogramSeriesOptions, IAxis, IChart, ICircularGaugeExtents, IMinMax, IPercentSize, IPlottingItem, IPlottingOwner, IPointView, IRect, ISeries, ISplit, IconedText, IconedTextOptions, ImageAnnotation, ImageAnnotationOptions, ImageListOptions, ImageOptions, LayerElement, Legend, LegendOptions, LineElement, LinePointLabel, LinePointLabelOptions, LineSeries, LineSeriesBase, LineSeriesBaseOptions, LineSeriesFlagOptions, LineSeriesGroup, LineSeriesGroupOptions, LineSeriesMarkerOptions, LineSeriesOptions, LineSeriesPoint, LinearAxis, LinearAxisLabelOptions, LinearAxisOptions, LinearGaugeBaseOptions, LinearGaugeChildLabelOptions, LinearGaugeGroupBaseOptions, LinearGaugeGroupLabelOptions, LinearGaugeGroupOptions, LinearGaugeGroupType, LinearGaugeLabelOptions, LinearGaugeOptions, LinearGaugeScaleOptions, LinearGaugeType, LinearGradientOptions, LinearValueBarOptions, LogAxis, LogAxisOptions, LogAxisTickOptions, LollipopSeries, LollipopSeriesMarkerOptions, LollipopSeriesOptions, LowRangedSeries, LowRangedSeriesOptions, MarkerSeries, MarkerSeriesOptions, MarkerSeriesPointView, MarkerSeriesView, NavigatorMask, NavigiatorHandle, NavigiatorHandleOptions, NavigiatorMaskOptions, ORG_ANGLE, OhlcSeries, OhlcSeriesOptions, PI_2, PaneBodyOptions, PaneContainer, PaneOptions, ParetoSeries, ParetoSeriesOptions, PathBuilder, PathElement, PatternOptions, PercentSize, PieSeries, PieSeriesGroup, PieSeriesGroupOptions, PieSeriesLabel, PieSeriesLabelOptions, PieSeriesOptions, PieSeriesText, PieSeriesTextOptions, Point, PointElement, PointHovering, PointHoveringOptions, PointLabelView, RAD_DEG, RadialGradientOptions, RadialSeries, RadialSeriesOptions, RangedSeries, RangedSeriesOptions, RcAnimation, RcControl, RcElement, RcObject, RectElement, SVGStyleOrClass, SVGStyles, ScaleView, ScatterSeries, ScatterSeriesOptions, SectionView, SectorElement, Series, SeriesAnimation, SeriesGroup, SeriesGroupOptions, SeriesMarker, SeriesMarkerOptions, SeriesNavigator, SeriesNavigatorOptions, SeriesOptions, SeriesOptionsType, SeriesView, Shape, ShapeAnnotation, ShapeAnnotationOptions, Size, SplineSeries, SplineSeriesOptions, SplitOptions, StepCallbackArgs, Subtitle, SubtitleOptions, TextAnchor, TextAnnotation, TextAnnotationOptions, TextElement, TextLayout, TimeAxis, TimeAxisLabelOptions, TimeAxisOptions, TimeAxisTickOptions, Title, TitleOptions, Tooltip, TooltipOptions, TreeGroupHeadOptions, TreemapSeriesOptions, TreemapSeriesType, Trendline, TrendlineOptions, Utils, ValueGauge, ValueGaugeOptions, ValueGaugeView, ValueRange, ValueRangeList, VectorSeriesOptions, VectorSeriesType, WaterfallSeries, WaterfallSeriesOptions, Widget, WidgetSeries, WidgetSeriesOptions, WidgetSeriesPoint, WidgetSeriesView, WordCloudSeriesOptions, WordCloudSeriesType, ZValuePoint, ZoomButtonOptions, absv, assignObj, buildValueRanges, calcPercent, configure, copyObj, cos, createChart, createData, createRect, extend, fixnum, getVersion, incv, isArray, isEmptyRect, isObject, isString, maxv, minv, parsePercentSize, pickNum, pickProp, pickProp3, pixel, rectToSize, setAnimatable, setDebugging, setLogging, sin, toStr };