realchart 1.4.12 → 1.4.13

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "realchart",
3
- "version": "1.4.12",
3
+ "version": "1.4.13",
4
4
  "description": "Wooritech charting library",
5
5
  "main": "./index.js",
6
6
  "module": "./index.mjs",
package/pictogram.js CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  /**
3
- * RealChart Pictogram v1.4.12
3
+ * RealChart Pictogram v1.4.13
4
4
  * Copyright (C) 2023-2026 WooriTech Inc.
5
5
  * All Rights Reserved.
6
6
  */
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).RealChartPictogram={},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 r extends t.BasedSeries{_createLegendMarker(e,i){return t.RectElement.create(e,t.Series.LEGEND_MARKER,0,0,i,i,2)}}r.type=t.PictogramSeriesType,r.defaults=t.extend(t.BasedSeries.defaults,{iconGap:2,integral:!1,integralThreshold:.5});class o extends t.RcElement{constructor(e){super(e,t.SeriesView.POINT_CLASS),this.add(this._back=new t.RectElement(e)),this._back.setTransparent(!0)}preppareIcons(e,t,i,s){}layout(e,t,i){const s=this.wPoint,r=this.hPoint;t-=s/2,r<0&&(e=e.map((e=>-e))),this._back.setBounds(t,i-r,s,r)}}class n extends t.BasedSeriesView{constructor(e){super(e,"rct-pictogram-series"),this._bars=new t.ElementPool(this._pointContainer,o)}_getPointPool(){return this._bars}_preparePoints(e,t,i){}_layoutPoint(e,t,i,s,r,o){}}class a extends t.BarSeriesPoint{_readObject(e,i){super._readObject(e,i),this.figure=t.pickProp(e._figureFielder(i),i.figure)}_readArray(e,t){super._readArray(e,t);const i=+e.options.figureField;isNaN(i)||(this.figure=t[i])}}class h extends t.BarSeriesBase{getMode(){return this._mode}getFigure(){return this._figurePath}getImage(e){let t=e.figure;return"number"==typeof t&&(t=this._imageUrls[t]),!t&&this._op.figureByPoint&&(t=this._imageUrls[e.vindex%this._imageUrls.length]),this._imageRoot+(t||this._imageUrls[0])}getFigureWidth(e){return t.calcPercent(this._widthDim,e,e)}getFigureGap(){return this._figureGap}_createPoint(e){return new a(e)}_createLegendMarker(e,i){return t.RectElement.create(e,t.Series.LEGEND_MARKER,0,0,i,i,2)}_doApply(e){super._doApply(e),this._figureFielder=this._createFielder(e.figureField||"figure"),this._figurePath=t.isArray(e.figurePath)?e.figurePath.join(" "):e.figurePath;const i=e.figureImage;t.isArray(i)?this._imageUrls=i.slice(0):t.isString(i)?this._imageUrls=[i]:this._imageUrls=[],this._imageRoot=t.isString(e.figureImageRoot)?e.figureImageRoot:"",this._mode="both"===e.mode||"figure"===e.mode?e.mode:e.figurePath?"both":"figure",this._figureGap=t.pickNum(e.figureGap,0),this._widthDim=t.parsePercentSize(e.figureWidth,!0)}}h.type=t.PictorialBarSeriesType,h.defaults=t.extend(t.BarSeriesBase.defaults,{mode:"auto",figureWidth:"100%"});class l extends t.WidgetSeriesPoint{}class c extends l{constructor(e,t){super(e),this.points=t}}class d extends t.WidgetSeriesLabel{getDistance(){return isNaN(this._op.distance)?"far"===this._op.align?d.ENDED_DIST:d.OUTSIDE_DIST:this._op.distance||0}}d.OUTSIDE_DIST=25,d.ENDED_DIST=10;class u extends t.WidgetSeries{get paths(){return this._paths}getPictorialSize(e,i,s){const r=t.calcPercent(this._sizeDim,1),o=t.minv(i*r/e.width,s*r/e.height);return{width:t.pickNum(t.calcPercent(this._widthDim,i),e.width*o),height:t.pickNum(t.calcPercent(this._heightDim,s),e.height*o)}}get pointLabel(){return this._pointLabel}_createLabel(e){return new d(e)}_createPoint(e){return new l(e)}_createOthersPoint(e,t){return e.y=t.map((e=>e.y)).reduce(((e,t)=>e+t)),new c(e,t)}needClip(e){return!1}getTotal(){const e=super.getSum();return Math.max(e,t.calcPercent(this._totalDim,e))}getSum(){const e=super.getSum(),i=t.calcPercent(this._totalDim,e);return Math.max(e,t.pickNum(i,e))}_doApply(e){super._doApply(e),this._paths=t.isArray(e.figure)?e.figure:[e.figure||""],this._setDims(e,"total","width","height"),this._sizeDim=t.parsePercentSize(e.size||"80%",!1)}_createLegendMarker(e,i){return t.RectElement.create(e,t.Series.LEGEND_MARKER,0,0,i,i,2)}}u.type=t.PictorialSeriesType,u.defaults=t.extend(t.WidgetSeries.defaults,{size:"90%",reversed:!1});class _ extends t.BoxPointElementEx{constructor(e){super(e),this.add(this._figureLayer=new t.RcElement(e,"")),this._figureLayer.add(this._figureView=new t.PathElement(e,"")),this.add(this._imageLayer=new t.RcElement(e,"")),this._imageLayer.add(this._imageView=new t.ImageElement(e,!1,"")),this._imageView.setAttr("preserveAspectRatio","none"),this.add(this._boxView=new t.PathElement(e,"")),this._figureView.setAttr("vector-effect","non-scaling-stroke")}renderSvg(e,t,i,s,r){const o=this._figureView;let n;this._imageLayer.setVis(!1),this._figureLayer.setVis(!0),o.scale(1),o.setPath(s),n=o.getBounds(),e.both?o.scale(r/(e.inverted?n.height:n.width)):e.inverted?o.scale(r/n.height,(e.reversed?-1:1)*this.hPoint/n.width):o.scale(r/n.width,(e.reversed?-1:1)*this.hPoint/n.height),this.$_layoutFigure(e,this._figureLayer,this._figureView,t,i)}renderImage(e,t,i,s,r){const o=this._imageView;this._figureLayer.setVis(!1),this._imageLayer.setVis(!0),o.url=s,o.width=r,o.height=e.both?void 0:Math.abs(this.hPoint),this.$_layoutFigure(e,this._imageLayer,o,t,i)}$_layoutFigure(e,i,s,r,o){const n=s.getBounds(),a=!e.upperClip;let h=this.hPoint,l=!1;e.inverted?e.reversed?a?(s.trans(r+n.height/2,o-h),this._dir="left"):h<0?(s.trans(r+n.height/2,-e.yBase-h),this._dir="left"):(s.trans(r-n.height/2,-e.yBase-h),this._dir="right"):a?(s.trans(r-n.height/2,-h),this._dir="right"):h<0?(s.trans(r+n.height/2,-e.yBase-h),this._dir="left"):(s.trans(r-n.height/2,-e.yBase-h),this._dir="right"):e.reversed?a?(s.trans(r+n.width/2,-h),this._dir="bottom"):h<0?(s.trans(r+n.width/2,e.yLen-e.yBase-h),this._dir="bottom"):(s.trans(r-n.width/2,e.yLen-e.yBase-h),this._dir="top"):a?(s.trans(r-n.width/2,o-h),this._dir="top"):h<0?(s.trans(r+n.width/2,e.yLen-e.yBase-h),this._dir="bottom"):(s.trans(r-n.width/2,e.yLen-e.yBase-h),this._dir="top"),a?(s.rotate(e.reversed?180:0),i.removeAttr("clip-path")):(l=this.point.yValue<e.base,e.reversed&&(l=!l),t.Dom.setClipPath(i.dom,l?e.lowerClip:e.upperClip),s.rotate(l?180:0)),this._boxView.setVis(e.both)&&(l||(l=a&&e.reversed),h-=(l?-1:1)*((e.inverted?n.width:n.height)+e.gap),this.$_layoutBox(e,l,r,o,h))}$_layoutBox(e,i,s,r,o){this._boxView.setVis(i?o<0:o>0)&&this._boxView.setPath(t.SvgShapes.bar(s-this.wPoint/2,r,this.wPoint,-o,e.rTop,e.rBottom))}}class g extends t.BarSeriesViewBase{constructor(e){super(e,"rct-pictorialbar-series")}_createBarPool(e,i){return new t.ElementPool(e,_)}_prepareLayoutPoints(e,i){const s=this.model,r=this._yBase,o=this._baseVal>s._yAxisObj.axisMin();if(this._info={inverted:this._inverted,reversed:this._yReversed,base:this._baseVal,yBase:r,both:"both"===s.getMode(),gap:s.getFigureGap(),yLen:this._yLen,rTop:+s.options.topRadius||0,rBottom:+s.options.bottomRadius||0,upperClip:"",lowerClip:""},o){if(!this._upperClip){const e=this.doc,i=this.dom.querySelector("defs")||e.createElementNS(t.SVGNS,"defs"),s=t.Utils.uniqueKey()+"-";this.insertDom(i,this._pointContainer.dom),i.appendChild(this._upperClip=t.Dom.createClipRect(e,s+"upper")),i.appendChild(this._lowerClip=t.Dom.createClipRect(e,s+"lower"))}const s=this._upperClip.firstElementChild,o=this._lowerClip.firstElementChild;this._inverted?(t.Dom.setBounds(s,0,-e,i,e-r),t.Dom.setBounds(o,0,-r,i,e)):(t.Dom.setBounds(s,0,0,e,i-r),t.Dom.setBounds(o,0,i-r,e,r)),this._info.upperClip=this._upperClip.id,this._info.lowerClip=this._lowerClip.id}}_layoutPoint(e,i,s,r,o,n){const a=e.point,h=this.model.getFigure();this._needMask=h&&this._info.both,e.wPoint=o*t.pickNum(a.width,1),e.hPoint=n,e.x=s,h?e.renderSvg(this._info,s,r,h,this._model.getFigureWidth(o)):e.renderImage(this._info,s,r,this._model.getImage(a),this._model.getFigureWidth(o))}setHoverStyle(e){if(super.setHoverStyle(e),this._needMask){const i=getComputedStyle(e.dom),s="none"!==i.stroke?parseFloat(i.strokeWidth):0;if(this._hoverFigureView.parent.setVis(s>0&&this._info.gap<s)){t.Dom.setImportantStyle(e.dom.style,"stroke-width",t.pixel(s+s/2|0));let i=0,r=0;switch(e._dir){case"top":case"right":r=-s/2;break;case"bottom":case"left":r=s/2}this._hoverBoxView.setAttribute("transform",`translate(${i}, ${r})`)}}}focusPointView(e,t){t&&this._needMask?this.$_showHoverView(this._hoverPoint=e).setVis(!0):this._hoverFigureView&&(this._hoverFigureView.parent.setVis(!1),this._hoverPoint=null)}_renderSeries(e,t){super._renderSeries(e,t),this._hoverPoint&&this._hoverFigureView&&this._hoverFigureView.parent.visible&&this.$_showHoverView(this._hoverPoint)}$_showHoverView(e){let i=this._hoverFigureView;if(!i){const e=this.doc;let s;this.add(new t.RcElement(e,"")).add(i=this._hoverFigureView=new t.RcElement(e,"")),i.parent.dom.style.pointerEvents="none",i.appendDom(s=e.createElementNS(t.SVGNS,"path")),s.style.stroke="none",i.parent.appendDom(s=this._hoverBoxView=e.createElementNS(t.SVGNS,"path")),s.style.stroke="none"}const s=i.dom.firstElementChild,r=this._hoverBoxView;return i.parent.setAttr("clip-path",this._pointContainer.getAttr("clip-path")),i.setAttr("clip-path",e._figureLayer.getAttr("clip-path")),s.setAttribute("d",e._figureView.getAttr("d")),s.style.fill=getComputedStyle(e._figureView.dom).fill,s.setAttribute("transform",e._figureView.getTransform()),t.Dom.setVisible(r,e._boxView.visible)&&(r.setAttribute("d",e._boxView.getAttr("d")),r.style.fill=getComputedStyle(e._boxView.dom).fill),this._inverted&&i.parent.setAttr("transform",`rotate(90) translate(${this.height},0) scale(-1, 1)`),i}}class p extends t.PointElement{getTooltipPos(){return{x:this.point.xPos+this.parent.parent.tx,y:this.point.yPos+this.parent.parent.ty}}}class m extends t.WidgetSeriesView{constructor(e){super(e,"rct-pictorial-series");const i=t.Utils.uniqueKey()+"-",s=i+"figure",r=i+"clip",o=i+"hover";this._figurelView=e.createElementNS(t.SVGNS,"use"),this._figurelView.setAttribute("href",`#${s}`),this._figurelView.setAttribute("class","rct-pictorial-series-figure"),this.insertDom(this._figurelView,this._pointContainer.dom);const n=e.createElementNS(t.SVGNS,"defs");this.insertDom(n,this._figurelView),this._sourceView=new t.PathElement(e),this._sourceView.setAttr("vector-effect","non-scaling-stroke"),this._sourceView.dom.id=s,n.appendChild(this._sourceView.dom);const a=e.createElementNS(t.SVGNS,"use"),h=e.createElementNS(t.SVGNS,"clipPath"),l=e.createElementNS(t.SVGNS,"clipPath");a.setAttribute("href",`#${s}`),h.appendChild(a),h.id=r,n.appendChild(h),l.appendChild(this._hoverRect=e.createElementNS(t.SVGNS,"path")),l.id=o,n.appendChild(l),this._hoverView=e.createElementNS(t.SVGNS,"use"),this._hoverView.setAttribute("href",`#${s}`),this._hoverView.setAttribute("clip-path",`url(#${o}`),this._hoverView.style.stroke="none",this._hoverView.style.fill="none",this.appendDom(this._hoverView),this._pointContainer.add(this._sliceLayer=new t.LayerElement(e,null)),this._pointContainer.setAttr("clip-path",`url(#${r})`),this._slices=new t.ElementPool(this._sliceLayer,p),this.add(this._lineContainer=new t.PointLabelLineContainer(e))}_getPointPool(){return this._slices}getClipContainer(){return null}_prepareSeries(e,t){super._prepareSeries(e,t),this.$_prepareSlices(e,t,this._visPoints),this._lineContainer.prepare(t)}_renderSeries(e,i){this.$_renderFigure(this._sourceView,this._model,e,i);const s=this._visPoints,r=this.model.getCenter(e,i),o=this._figurelView.getBoundingClientRect(),n=r.x-o.width/2,a=r.y-o.height/2,h=`translate(${n},${a})`;t.Dom.hasFill(this._figurelView)||(this._figurelView.style.fill="transparent"),this._figurelView.setAttribute("transform",h),this._hoverView.setAttribute("transform",h),o.x=n,o.y=a,this.$_layoutSlices(s,o,e,i),this._pointContainer.trans(n,a),this._labelContainer.trans(n,a),this._lineContainer.trans(n,a),this.resize(o.width,o.height),this._rSave=o,this._wSave=e,this._hSave=i}_runShowEffect(e){const i=this.model.options.reversed;e&&t.SeriesAnimation.reveal(this,{from:"column"===this.model.options.direction?i?"right":"left":i?"top":"bottom",view:this._sliceLayer})}_refreshZombie(){this.$_layoutSlices(this._visPoints,this._rSave,this._wSave,this._hSave),this._hoverPoint&&!t.Dom.isHidden(this._hoverView)&&this.$_showHoverView(this._hoverPoint)}_animationStarted(e){super._animationStarted(e),this._lineContainer.setVis(this._labelContainer.visible)}setHoverStyle(e){super.setHoverStyle(e);const i=getComputedStyle(e.dom),s="none"!==i.stroke&&parseFloat(i.strokeWidth)>0;t.Dom.setVisible(this._hoverView,s)&&Object.assign(this._hoverView.style,{stroke:i.stroke,strokeWidth:i.strokeWidth,strokeDasharray:i.strokeDasharray})}focusPointView(e,t){this._hoverView.style.display=t?"":"none",t&&this.$_showHoverView(e),this._hoverPoint=t?e:null}$_showHoverView(e){this._hoverRect.setAttribute("d",e.getAttr("d"))}$_prepareSlices(e,t,i){this._slices.prepare(i.length,((s,r)=>{const o=s.point=i[r];this._preparePoint(e,t,o,s)}))}$_renderFigure(e,i,s,r){let o,n;e.setPath(i.paths),o=e.getBBox(),n=i.getPictorialSize(o,s,r),e.scale(n.width/o.width,n.height/o.height),t.isIE&&this.$_prepareOutline(this._sourceView.dom,s,r,n.width/o.width,n.height/o.height)}$_layoutSlices(e,t,i,s){const r=this._model,o=r.pointLabel,n=r.options.reversed;this.$_calcRates(e),this._lineContainer.setStyleOrClass(o.connector.options.style),"column"===r.options.direction?this.$_renderHorz(n,t,s):this.$_renderVert(n,t,i)}$_calcRates(e){const i=this._zombie,s=this._zombieRate,r=e.length;let o=this.model.getTotal();isNaN(o)&&(o=e.filter((e=>(e.visible||e===i)&&!e.isNull)).map((e=>e.yValue*(e===i?s:e._isDeleted()?e._vr:1))).reduce(((e,t)=>e+t),0)),r>1||r>0&&!i?1==r&&e[0]._isDeleted()||1===r&&e[0]._vr<1?e[0].yRate=1:e.forEach((e=>{const r=t.fixnum(e.yValue*(e===i?s:e._isDeleted()?e._vr:1)/o)||0;e.yRate=r})):1==r&&(e[0].yRate=t.fixnum(s))}$_createLabelInfo(e){const{a:t,d:i}=e.getCTM(),{width:s,height:r}=e.getBBox();return{dom:e,sx:t,sy:i,wFigure:s,hFigure:r}}$_renderVert(e,i,s){const r=this.model,o=i.width,n=i.height,a=this._labelViews(),h=r.pointLabel,l="inside"===r.getLabelPos(h),c=h.getOffset(),d=h.getDistance(),u=h.getAlign(),_=null==a?void 0:a.textAlign(),g=[],p=h.options.opposite,m=this._lineContainer.setVis(h.connector.visible)?this._lineContainer:null,f=new t.PathBuilder,y=r.getCenter(s,n).x-i.x,w=o/2;let P=e?0:n;const V=a?a.getWidth(0):0,S=g&&!l&&this.$_createLabelInfo(this._sourceView.dom);let b,v;this._slices.forEach((r=>{const h=r.point;if(r.setVis(!h.isNull)){const x=n*h.yRate;if(e?(r.setPath(t.SvgShapes.rectangle(0,P,o,x)),h.yPos=P+x/2,P+=x):(h.yPos=P-x/2,P-=x,r.setPath(t.SvgShapes.rectangle(0,P,o,x))),h.xPos=w,v=null==m?void 0:m.get(h),a&&(b=a.get(h,0))&&b.visible){if(l){const e=b.isDomAnimating(),t=b.getBBox();!e&&b.layout(_||"center"),null==v||v.setVis(!1),b.trans(h.xPos-t.width/2,h.yPos-t.height/2)}else-1===u?this.$_layoutLabelNearVert(S,r,b,_,p,v,f,o,y,c,d):1==u?this.$_layoutLabelFarVert(S,r,b,_,p,v,f,c,d,V,i,s):this.$_layoutLabelOutVert(S,r,b,_,p,v,f,c,d);b.setContrast(l&&r.dom),g.push(b),b.setPosY(b.ty)}else v&&v.setVis(!1)}}))}$_renderHorz(e,i,s){const r=this.model,o=i.width,n=i.height,a=this._labelViews(),h=r.pointLabel,l="inside"===r.getLabelPos(h),c=h.getOffset(),d=h.getDistance(),u=h.getAlign(),_=null==a?void 0:a.textAlign(),g=[],p=h.options.opposite,m=this._lineContainer.setVis(h.connector.visible)?this._lineContainer:null,f=new t.PathBuilder,y=r.getCenter(o,s).y-i.y,w=n/2,P=a?a.getWidth(0):0,V=g&&!l&&this.$_createLabelInfo(this._sourceView.dom);let S,b,v=e?o:0;this._slices.forEach((r=>{const h=r.point;if(r.setVis(!h.isNull)){const x=o*h.yRate;if(e?(h.xPos=v-x/2,v-=x,r.setPath(t.SvgShapes.rectangle(v,0,x,n))):(h.xPos=v+x/2,r.setPath(t.SvgShapes.rectangle(v,0,x,n)),v+=x),h.yPos=w,b=null==m?void 0:m.get(h),a&&(S=a.get(h,0))&&S.visible){if(l){const e=S.isDomAnimating(),t=S.getBBox();!e&&S.layout(_||"center"),S.trans(h.xPos-t.width/2,h.yPos-t.height/2),null==b||b.setVis(!1)}else-1===u?this.$_layoutLabelNearHorz(V,r,S,_,p,b,f,n,y,c,d):1==u?this.$_layoutLabelFarHorz(V,r,S,_,p,b,f,c,d,P,i,s):this.$_layoutLabelOutHorz(V,r,S,_,p,b,f,c,d);S.setContrast(l&&r.dom),g.push(S),S.setPosY(S.ty)}else b&&b.setVis(!1)}}))}$_prepareOutline(e,i,s,r,o){const n=+new Date,a=this.control.canvasCtx(),h=e.getTotalLength(),l=t.maxv(1,Math.round(h/500));let c;a.setTransform(1,0,0,1,0,0),a.clearRect(0,0,i,s),a.scale(r,o),a.fillStyle="red",a.beginPath(),c=e.getPointAtLength(0),a.moveTo(c.x,c.y);for(let t=0;t<h;t+=l)c=e.getPointAtLength(t),a.lineTo(c.x,c.y);a.closePath(),a.fill(),console.log("canvas",+new Date-n,"ms.")}$_calcLabelPosVert(e,t,i){const s=e.dom,r=s.ownerSVGElement.createSVGPoint(),{wFigure:o,sx:n}=e,a=2*(e.sx<0?1:1/e.sx);let h=i?0:e.wFigure;if(r.y=t.point.yPos/e.sy,i){for(;h<o;h+=a)if(r.x=h,s.isPointInFill(r))return h>0&&(r.x-=a/2,s.isPointInFill(r)&&(h=r.x)),h*n}else for(;h>=0;h-=a)if(r.x=h,s.isPointInFill(r))return h<o&&(r.x+=a/2,s.isPointInFill(r)&&(h=r.x)),h*n;return e.wFigure*e.sx/2}$_calcLabelPosVertIE(e,t,i){const s=this.control.canvasCtx(),r={x:0,y:0},{wFigure:o,sx:n}=e,a=2*(n<0?1:1/n);let h=r.y=t.point.yPos,l=i?0:o*n;if(i){for(const e=o*n;l<e;l+=a)if(r.x=l,s.isPointInPath(r.x,h))return l>0&&(r.x-=a/2,s.isPointInPath(r.x,h)&&(l=r.x)),l}else for(;l>=0;l-=a)if(r.x=l,s.isPointInPath(l,h))return l<o*n&&(r.x+=a/2,s.isPointInPath(r.x,h)&&(l=r.x)),l;return o/2}$_layoutLabelOutVert(e,i,s,r,o,n,a,h,l){const c=i.point,d=s.isDomAnimating(),u=s.getBBox(),_=c.yPos;!d&&s.layout(r||(o?"right":"left"));let g=t.isIE?this.$_calcLabelPosVertIE(e,i,o):this.$_calcLabelPosVert(e,i,o);n&&(o?n.setLine(a.reset(0,0).line(-l,0).end()):n.setLine(a.reset(0,0).line(l,0).end()),n.trans(g,_)),o?g-=l+h+u.width:g+=l+h,s.trans(g,_-u.height/2)}$_layoutLabelNearVert(e,i,s,r,o,n,a,h,l,c,d){const u=i.point,_=s.isDomAnimating(),g=s.getBBox(),p=u.yPos;!_&&s.layout(r||(o?"right":"left"));const m=t.isIE?this.$_calcLabelPosVertIE(e,i,o):this.$_calcLabelPosVert(e,i,o);let f=l;o?f-=h/2:f+=h/2,n&&(o?n.setLine(a.reset(0,0).line(f-m-d,0).end()):n.setLine(a.reset(0,0).line(f+d-m,0).end()),n.trans(m,p)),o?f-=c+d+g.width:f+=d+c,s.trans(f,p-g.height/2)}$_layoutLabelFarVert(e,i,s,r,o,n,a,h,l,c,d,u){const _=i.point,g=s.isDomAnimating(),p=s.getBBox(),m=_.yPos;!g&&s.layout(r||(o?"right":"left"));const f=t.isIE?this.$_calcLabelPosVertIE(e,i,o):this.$_calcLabelPosVert(e,i,o);let y;y=o?l+h+c-d.x:u-d.x-l-c-h,n&&(o?n.setLine(a.reset(0,0).line(y-f-l,0).end()):n.setLine(a.reset(0,0).line(y+l-f,0).end()),n.trans(f,m)),o?y-=h+l+p.width:y+=l+h,s.trans(y,m-p.height/2)}$_calcLabelPosHorz(e,t,i){const s=e.dom,r=s.ownerSVGElement.createSVGPoint(),{hFigure:o,sy:n}=e,a=2*(e.sy<0?1:1/e.sy);let h=i?e.hFigure:0;if(r.x=t.point.xPos/e.sx,i){for(;h>=0;h-=a)if(r.y=h,s.isPointInFill(r))return h<e.hFigure&&(r.y+=a/2,s.isPointInFill(r)&&(h=r.y)),h*n}else for(;h<o;h+=a)if(r.y=h,s.isPointInFill(r))return h>0&&(r.y-=a/2,s.isPointInFill(r)&&(h=r.y)),h*n;return e.hFigure*e.sy/2}$_calcLabelPosHorzIE(e,t,i){const s=this.control.canvasCtx(),r={x:0,y:0},{hFigure:o,sy:n}=e,a=2*(e.sy<0?1:1/e.sy);let h=r.x=t.point.xPos,l=i?o*n:0;if(i){for(;l>=0;l-=a)if(r.y=l,s.isPointInPath(h,r.y))return l<o*n&&(r.y+=a/2,s.isPointInPath(h,r.y)&&(l=r.y)),l}else for(;l<o;l+=a)if(r.y=l,s.isPointInPath(h,r.y))return l>0&&(r.y-=a/2,s.isPointInPath(h,r.y)&&(l=r.y)),l;return e.hFigure*e.sy/2}$_layoutLabelOutHorz(e,i,s,r,o,n,a,h,l){const c=i.point,d=s.isDomAnimating(),u=s.getBBox(),_=c.xPos;!d&&s.layout(r);let g=t.isIE?this.$_calcLabelPosHorzIE(e,i,o):this.$_calcLabelPosHorz(e,i,o);n&&(o?n.setLine(a.reset(0,0).line(0,l).end()):n.setLine(a.reset(0,0).line(0,-l).end()),n.trans(_,g)),o?g+=l+h:g-=l+h,s.trans(_-u.width/2,o?g:g-u.height)}$_layoutLabelNearHorz(e,i,s,r,o,n,a,h,l,c,d){const u=i.point,_=s.isDomAnimating(),g=s.getBBox(),p=u.xPos;!_&&s.layout(r||(o?"right":"left"));let m=t.isIE?this.$_calcLabelPosHorzIE(e,i,o):this.$_calcLabelPosHorz(e,i,o),f=l;o?f+=h/2:f-=h/2,n&&(o?n.setLine(a.reset(0,0).line(0,f+d-m).end()):n.setLine(a.reset(0,0).line(0,f-m-d).end()),n.trans(p,m)),o?f+=d+c:f-=c+d+g.height,s.trans(p-g.width/2,f)}$_layoutLabelFarHorz(e,i,s,r,o,n,a,h,l,c,d,u){const _=i.point,g=s.isDomAnimating(),p=s.getBBox(),m=_.xPos;!g&&s.layout(r||(o?"right":"left"));const f=t.isIE?this.$_calcLabelPosHorzIE(e,i,o):this.$_calcLabelPosHorz(e,i,o);let y;y=o?u-d.y-l-c-h:l+h+c-d.y,n&&(o?n.setLine(a.reset(0,0).line(0,y+l-f).end()):n.setLine(a.reset(0,0).line(0,y-f-l).end()),n.trans(m,f)),o?y+=l+h:y-=h+l+p.height,s.trans(m-p.width/2,y)}}function f(e){(function(e){return e.Series&&e.SeriesView})(e)&&(e.Series.register(r),e.Series.register(h),e.Series.register(u),e.SeriesView.register([r,n]),e.SeriesView.register([h,g]),e.SeriesView.register([u,m]))}f(s),e.PictogramSeries=r,e.PictorialBarSeries=h,e.PictorialSeries=u,e.default=f,Object.defineProperty(e,"__esModule",{value:!0})}));
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).RealChartPictogram={},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 r extends t.BasedSeries{_createLegendMarker(e,i){return t.RectElement.create(e,t.Series.LEGEND_MARKER,0,0,i,i,2)}}r.type=t.PictogramSeriesType,r.defaults=t.extend(t.BasedSeries.defaults,{iconGap:2,integral:!1,integralThreshold:.5});class o extends t.RcElement{constructor(e){super(e,t.SeriesView.POINT_CLASS),this.add(this._back=new t.RectElement(e)),this._back.setTransparent(!0)}preppareIcons(e,t,i,s){}layout(e,t,i){const s=this.wPoint,r=this.hPoint;t-=s/2,r<0&&(e=e.map((e=>-e))),this._back.setBounds(t,i-r,s,r)}}class n extends t.BasedSeriesView{constructor(e){super(e,"rct-pictogram-series"),this._bars=new t.PointViewPool(this._pointContainer,o)}_getPointPool(){return this._bars}_preparePoints(e,t,i){}_shrinkPoint(e){}_layoutPoint(e,t,i,s,r,o){}}class a extends t.BarSeriesPoint{_readObject(e,i){super._readObject(e,i),this.figure=t.pickProp(e._figureFielder(i),i.figure)}_readArray(e,t){super._readArray(e,t);const i=+e.options.figureField;isNaN(i)||(this.figure=t[i])}}class h extends t.BarSeriesBase{getMode(){return this._mode}getFigure(){return this._figurePath}getImage(e){let t=e.figure;return"number"==typeof t&&(t=this._imageUrls[t]),!t&&this._op.figureByPoint&&(t=this._imageUrls[e.vindex%this._imageUrls.length]),this._imageRoot+(t||this._imageUrls[0])}getFigureWidth(e){return t.calcPercent(this._widthDim,e,e)}getFigureGap(){return this._figureGap}_createPoint(e){return new a(e)}_createLegendMarker(e,i){return t.RectElement.create(e,t.Series.LEGEND_MARKER,0,0,i,i,2)}_doApply(e){super._doApply(e),this._figureFielder=this._createFielder(e.figureField||"figure"),this._figurePath=t.isArray(e.figurePath)?e.figurePath.join(" "):e.figurePath;const i=e.figureImage;t.isArray(i)?this._imageUrls=i.slice(0):t.isString(i)?this._imageUrls=[i]:this._imageUrls=[],this._imageRoot=t.isString(e.figureImageRoot)?e.figureImageRoot:"",this._mode="both"===e.mode||"figure"===e.mode?e.mode:e.figurePath?"both":"figure",this._figureGap=t.pickNum(e.figureGap,0),this._widthDim=t.parsePercentSize(e.figureWidth,!0)}}h.type=t.PictorialBarSeriesType,h.defaults=t.extend(t.BarSeriesBase.defaults,{mode:"auto",figureWidth:"100%"});class l extends t.WidgetSeriesPoint{}class c extends l{constructor(e,t){super(e),this.points=t}}class d extends t.WidgetSeriesLabel{getDistance(){return isNaN(this._op.distance)?"far"===this._op.align?d.ENDED_DIST:d.OUTSIDE_DIST:this._op.distance||0}}d.OUTSIDE_DIST=25,d.ENDED_DIST=10;class u extends t.WidgetSeries{get paths(){return this._paths}getPictorialSize(e,i,s){const r=t.calcPercent(this._sizeDim,1),o=t.minv(i*r/e.width,s*r/e.height);return{width:t.pickNum(t.calcPercent(this._widthDim,i),e.width*o),height:t.pickNum(t.calcPercent(this._heightDim,s),e.height*o)}}get pointLabel(){return this._pointLabel}_createLabel(e){return new d(e)}_createPoint(e){return new l(e)}_createOthersPoint(e,t){return e.y=t.map((e=>e.y)).reduce(((e,t)=>e+t)),new c(e,t)}needClip(e){return!1}getTotal(){const e=super.getSum();return Math.max(e,t.calcPercent(this._totalDim,e))}getSum(){const e=super.getSum(),i=t.calcPercent(this._totalDim,e);return Math.max(e,t.pickNum(i,e))}_doApply(e){super._doApply(e),this._paths=t.isArray(e.figure)?e.figure:[e.figure||""],this._setDims(e,"total","width","height"),this._sizeDim=t.parsePercentSize(e.size||"80%",!1)}_createLegendMarker(e,i){return t.RectElement.create(e,t.Series.LEGEND_MARKER,0,0,i,i,2)}}u.type=t.PictorialSeriesType,u.defaults=t.extend(t.WidgetSeries.defaults,{size:"90%",reversed:!1});class _ extends t.BoxPointElementEx{constructor(e){super(e),this.add(this._figureLayer=new t.RcElement(e,"")),this._figureLayer.add(this._figureView=new t.PathElement(e,"")),this.add(this._imageLayer=new t.RcElement(e,"")),this._imageLayer.add(this._imageView=new t.ImageElement(e,!1,"")),this._imageView.setAttr("preserveAspectRatio","none"),this.add(this._boxView=new t.PathElement(e,"")),this._figureView.setAttr("vector-effect","non-scaling-stroke")}renderSvg(e,t,i,s,r){const o=this._figureView;let n;this._imageLayer.setVis(!1),this._figureLayer.setVis(!0),o.scale(1),o.setPath(s),n=o.getBounds(),e.both?o.scale(r/(e.inverted?n.height:n.width)):e.inverted?o.scale(r/n.height,(e.reversed?-1:1)*this.hPoint/n.width):o.scale(r/n.width,(e.reversed?-1:1)*this.hPoint/n.height),this.$_layoutFigure(e,this._figureLayer,this._figureView,t,i)}renderImage(e,t,i,s,r){const o=this._imageView;this._figureLayer.setVis(!1),this._imageLayer.setVis(!0),o.url=s,o.width=r,o.height=e.both?void 0:Math.abs(this.hPoint),this.$_layoutFigure(e,this._imageLayer,o,t,i)}$_layoutFigure(e,i,s,r,o){const n=s.getBounds(),a=!e.upperClip;let h=this.hPoint,l=!1;e.inverted?e.reversed?a?(s.trans(r+n.height/2,o-h),this._dir="left"):h<0?(s.trans(r+n.height/2,-e.yBase-h),this._dir="left"):(s.trans(r-n.height/2,-e.yBase-h),this._dir="right"):a?(s.trans(r-n.height/2,-h),this._dir="right"):h<0?(s.trans(r+n.height/2,-e.yBase-h),this._dir="left"):(s.trans(r-n.height/2,-e.yBase-h),this._dir="right"):e.reversed?a?(s.trans(r+n.width/2,-h),this._dir="bottom"):h<0?(s.trans(r+n.width/2,e.yLen-e.yBase-h),this._dir="bottom"):(s.trans(r-n.width/2,e.yLen-e.yBase-h),this._dir="top"):a?(s.trans(r-n.width/2,o-h),this._dir="top"):h<0?(s.trans(r+n.width/2,e.yLen-e.yBase-h),this._dir="bottom"):(s.trans(r-n.width/2,e.yLen-e.yBase-h),this._dir="top"),a?(s.rotate(e.reversed?180:0),i.removeAttr("clip-path")):(l=this.point.yValue<e.base,e.reversed&&(l=!l),t.Dom.setClipPath(i.dom,l?e.lowerClip:e.upperClip),s.rotate(l?180:0)),this._boxView.setVis(e.both)&&(l||(l=a&&e.reversed),h-=(l?-1:1)*((e.inverted?n.width:n.height)+e.gap),this.$_layoutBox(e,l,r,o,h))}$_layoutBox(e,i,s,r,o){this._boxView.setVis(i?o<0:o>0)&&this._boxView.setPath(t.SvgShapes.bar(s-this.wPoint/2,r,this.wPoint,-o,e.rTop,e.rBottom))}}class g extends t.BarSeriesViewBase{constructor(e){super(e,"rct-pictorialbar-series")}_createBarPool(e,i){return new t.PointViewPool(e,_)}_prepareLayoutPoints(e,i){const s=this.model,r=this._yBase,o=this._baseVal>s._yAxisObj.axisMin();if(this._info={inverted:this._inverted,reversed:this._yReversed,base:this._baseVal,yBase:r,both:"both"===s.getMode(),gap:s.getFigureGap(),yLen:this._yLen,rTop:+s.options.topRadius||0,rBottom:+s.options.bottomRadius||0,upperClip:"",lowerClip:""},o){if(!this._upperClip){const e=this.doc,i=this.dom.querySelector("defs")||e.createElementNS(t.SVGNS,"defs"),s=t.Utils.uniqueKey()+"-";this.insertDom(i,this._pointContainer.dom),i.appendChild(this._upperClip=t.Dom.createClipRect(e,s+"upper")),i.appendChild(this._lowerClip=t.Dom.createClipRect(e,s+"lower"))}const s=this._upperClip.firstElementChild,o=this._lowerClip.firstElementChild;this._inverted?(t.Dom.setBounds(s,0,-e,i,e-r),t.Dom.setBounds(o,0,-r,i,e)):(t.Dom.setBounds(s,0,0,e,i-r),t.Dom.setBounds(o,0,i-r,e,r)),this._info.upperClip=this._upperClip.id,this._info.lowerClip=this._lowerClip.id}}_shrinkPoint(e){}_layoutPoint(e,i,s,r,o,n){const a=e.point,h=this.model.getFigure();this._needMask=h&&this._info.both,e.wPoint=o*t.pickNum(a.width,1),e.hPoint=n,e.x=s,h?e.renderSvg(this._info,s,r,h,this._model.getFigureWidth(o)):e.renderImage(this._info,s,r,this._model.getImage(a),this._model.getFigureWidth(o))}setHoverStyle(e){if(super.setHoverStyle(e),this._needMask){const i=getComputedStyle(e.dom),s="none"!==i.stroke?parseFloat(i.strokeWidth):0;if(this._hoverFigureView.parent.setVis(s>0&&this._info.gap<s)){t.Dom.setImportantStyle(e.dom.style,"stroke-width",t.pixel(s+s/2|0));let i=0,r=0;switch(e._dir){case"top":case"right":r=-s/2;break;case"bottom":case"left":r=s/2}this._hoverBoxView.setAttribute("transform",`translate(${i}, ${r})`)}}}focusPointView(e,t){t&&this._needMask?this.$_showHoverView(this._hoverPoint=e).setVis(!0):this._hoverFigureView&&(this._hoverFigureView.parent.setVis(!1),this._hoverPoint=null)}_renderSeries(e,t){super._renderSeries(e,t),this._hoverPoint&&this._hoverFigureView&&this._hoverFigureView.parent.visible&&this.$_showHoverView(this._hoverPoint)}$_showHoverView(e){let i=this._hoverFigureView;if(!i){const e=this.doc;let s;this.add(new t.RcElement(e,"")).add(i=this._hoverFigureView=new t.RcElement(e,"")),i.parent.dom.style.pointerEvents="none",i.appendDom(s=e.createElementNS(t.SVGNS,"path")),s.style.stroke="none",i.parent.appendDom(s=this._hoverBoxView=e.createElementNS(t.SVGNS,"path")),s.style.stroke="none"}const s=i.dom.firstElementChild,r=this._hoverBoxView;return i.parent.setAttr("clip-path",this._pointContainer.getAttr("clip-path")),i.setAttr("clip-path",e._figureLayer.getAttr("clip-path")),s.setAttribute("d",e._figureView.getAttr("d")),s.style.fill=getComputedStyle(e._figureView.dom).fill,s.setAttribute("transform",e._figureView.getTransform()),t.Dom.setVisible(r,e._boxView.visible)&&(r.setAttribute("d",e._boxView.getAttr("d")),r.style.fill=getComputedStyle(e._boxView.dom).fill),this._inverted&&i.parent.setAttr("transform",`rotate(90) translate(${this.height},0) scale(-1, 1)`),i}}class p extends t.PointElement{getTooltipPos(){return{x:this.point.xPos+this.parent.parent.tx,y:this.point.yPos+this.parent.parent.ty}}}class m extends t.WidgetSeriesView{constructor(e){super(e,"rct-pictorial-series");const i=t.Utils.uniqueKey()+"-",s=i+"figure",r=i+"clip",o=i+"hover";this._figurelView=e.createElementNS(t.SVGNS,"use"),this._figurelView.setAttribute("href",`#${s}`),this._figurelView.setAttribute("class","rct-pictorial-series-figure"),this.insertDom(this._figurelView,this._pointContainer.dom);const n=e.createElementNS(t.SVGNS,"defs");this.insertDom(n,this._figurelView),this._sourceView=new t.PathElement(e),this._sourceView.setAttr("vector-effect","non-scaling-stroke"),this._sourceView.dom.id=s,n.appendChild(this._sourceView.dom);const a=e.createElementNS(t.SVGNS,"use"),h=e.createElementNS(t.SVGNS,"clipPath"),l=e.createElementNS(t.SVGNS,"clipPath");a.setAttribute("href",`#${s}`),h.appendChild(a),h.id=r,n.appendChild(h),l.appendChild(this._hoverRect=e.createElementNS(t.SVGNS,"path")),l.id=o,n.appendChild(l),this._hoverView=e.createElementNS(t.SVGNS,"use"),this._hoverView.setAttribute("href",`#${s}`),this._hoverView.setAttribute("clip-path",`url(#${o}`),this._hoverView.style.stroke="none",this._hoverView.style.fill="none",this.appendDom(this._hoverView),this._pointContainer.add(this._sliceLayer=new t.LayerElement(e,null)),this._pointContainer.setAttr("clip-path",`url(#${r})`),this._slices=new t.PointViewPool(this._sliceLayer,p),this.add(this._lineContainer=new t.PointLabelLineContainer(e))}_getPointPool(){return this._slices}getClipContainer(){return null}_prepareSeries(e,t){super._prepareSeries(e,t),this.$_prepareSlices(e,t,this._visPoints),this._lineContainer.prepare(t)}_renderSeries(e,i){this.$_renderFigure(this._sourceView,this._model,e,i);const s=this._visPoints,r=this.model.getCenter(e,i),o=this._figurelView.getBoundingClientRect(),n=r.x-o.width/2,a=r.y-o.height/2,h=`translate(${n},${a})`;t.Dom.hasFill(this._figurelView)||(this._figurelView.style.fill="transparent"),this._figurelView.setAttribute("transform",h),this._hoverView.setAttribute("transform",h),o.x=n,o.y=a,this.$_layoutSlices(s,o,e,i),this._pointContainer.trans(n,a),this._labelContainer.trans(n,a),this._lineContainer.trans(n,a),this.resize(o.width,o.height),this._rSave=o,this._wSave=e,this._hSave=i}_runShowEffect(e){const i=this.model.options.reversed;e&&t.SeriesAnimation.reveal(this,{from:"column"===this.model.options.direction?i?"right":"left":i?"top":"bottom",view:this._sliceLayer})}_refreshZombie(){this.$_layoutSlices(this._visPoints,this._rSave,this._wSave,this._hSave),this._hoverPoint&&!t.Dom.isHidden(this._hoverView)&&this.$_showHoverView(this._hoverPoint)}_animationStarted(e){super._animationStarted(e),this._lineContainer.setVis(this._labelContainer.visible)}setHoverStyle(e){super.setHoverStyle(e);const i=getComputedStyle(e.dom),s="none"!==i.stroke&&parseFloat(i.strokeWidth)>0;t.Dom.setVisible(this._hoverView,s)&&Object.assign(this._hoverView.style,{stroke:i.stroke,strokeWidth:i.strokeWidth,strokeDasharray:i.strokeDasharray})}focusPointView(e,t){this._hoverView.style.display=t?"":"none",t&&this.$_showHoverView(e),this._hoverPoint=t?e:null}$_showHoverView(e){this._hoverRect.setAttribute("d",e.getAttr("d"))}$_prepareSlices(e,t,i){this._slices.prepare(i.length,((s,r)=>{const o=s.point=i[r];this._preparePoint(e,t,o,s)}))}$_renderFigure(e,i,s,r){let o,n;e.setPath(i.paths),o=e.getBBox(),n=i.getPictorialSize(o,s,r),e.scale(n.width/o.width,n.height/o.height),t.isIE&&this.$_prepareOutline(this._sourceView.dom,s,r,n.width/o.width,n.height/o.height)}$_layoutSlices(e,t,i,s){const r=this._model,o=r.pointLabel,n=r.options.reversed;this.$_calcRates(e),this._lineContainer.setStyleOrClass(o.connector.options.style),"column"===r.options.direction?this.$_renderHorz(n,t,s):this.$_renderVert(n,t,i)}$_calcRates(e){const i=this._zombie,s=this._zombieRate,r=e.length;let o=this.model.getTotal();(isNaN(o)||e.find((e=>e._isDeleted())))&&(o=e.filter((e=>(e.visible||e===i)&&!e.isNull)).map((e=>e.yValue*(e===i?s:e._isDeleted()?e._vr:1))).reduce(((e,t)=>e+t),0)),r>1||r>0&&!i?1==r&&e[0]._isDeleted()||1===r&&e[0]._vr<1?e[0].yRate=1:e.forEach((e=>{const r=t.fixnum(e.yValue*(e===i?s:e._isDeleted()?e._vr:1)/o)||0;e.yRate=r})):1==r&&(e[0].yRate=t.fixnum(s))}$_createLabelInfo(e){const{a:t,d:i}=e.getCTM(),{width:s,height:r}=e.getBBox();return{dom:e,sx:t,sy:i,wFigure:s,hFigure:r}}$_renderVert(e,i,s){const r=this.model,o=i.width,n=i.height,a=this._labelViews(),h=r.pointLabel,l="inside"===r.getLabelPos(h),c=h.getOffset(),d=h.getDistance(),u=h.getAlign(),_=null==a?void 0:a.textAlign(),g=[],p=h.options.opposite,m=this._lineContainer.setVis(h.connector.visible)?this._lineContainer:null,f=new t.PathBuilder,y=r.getCenter(s,n).x-i.x,w=o/2;let P=e?0:n;const V=a?a.getWidth(0):0,S=g&&!l&&this.$_createLabelInfo(this._sourceView.dom);let b,v;this._slices.forEach((r=>{const h=r.point;if(r.setVis(!h.isNull)){const x=n*h.yRate;if(e?(r.setPath(t.SvgShapes.rectangle(0,P,o,x)),h.yPos=P+x/2,P+=x):(h.yPos=P-x/2,P-=x,r.setPath(t.SvgShapes.rectangle(0,P,o,x))),h.xPos=w,v=null==m?void 0:m.get(h),a&&(b=a.get(h,0))&&b.visible){if(l){const e=b.isDomAnimating(),t=b.getBBox();!e&&b.layout(_||"center"),null==v||v.setVis(!1),b.trans(h.xPos-t.width/2,h.yPos-t.height/2)}else-1===u?this.$_layoutLabelNearVert(S,r,b,_,p,v,f,o,y,c,d):1==u?this.$_layoutLabelFarVert(S,r,b,_,p,v,f,c,d,V,i,s):this.$_layoutLabelOutVert(S,r,b,_,p,v,f,c,d);b.setContrast(l&&r.dom),g.push(b),b.setPosY(b.ty)}else v&&v.setVis(!1)}}))}$_renderHorz(e,i,s){const r=this.model,o=i.width,n=i.height,a=this._labelViews(),h=r.pointLabel,l="inside"===r.getLabelPos(h),c=h.getOffset(),d=h.getDistance(),u=h.getAlign(),_=null==a?void 0:a.textAlign(),g=[],p=h.options.opposite,m=this._lineContainer.setVis(h.connector.visible)?this._lineContainer:null,f=new t.PathBuilder,y=r.getCenter(o,s).y-i.y,w=n/2,P=a?a.getWidth(0):0,V=g&&!l&&this.$_createLabelInfo(this._sourceView.dom);let S,b,v=e?o:0;this._slices.forEach((r=>{const h=r.point;if(r.setVis(!h.isNull)){const x=o*h.yRate;if(e?(h.xPos=v-x/2,v-=x,r.setPath(t.SvgShapes.rectangle(v,0,x,n))):(h.xPos=v+x/2,r.setPath(t.SvgShapes.rectangle(v,0,x,n)),v+=x),h.yPos=w,b=null==m?void 0:m.get(h),a&&(S=a.get(h,0))&&S.visible){if(l){const e=S.isDomAnimating(),t=S.getBBox();!e&&S.layout(_||"center"),S.trans(h.xPos-t.width/2,h.yPos-t.height/2),null==b||b.setVis(!1)}else-1===u?this.$_layoutLabelNearHorz(V,r,S,_,p,b,f,n,y,c,d):1==u?this.$_layoutLabelFarHorz(V,r,S,_,p,b,f,c,d,P,i,s):this.$_layoutLabelOutHorz(V,r,S,_,p,b,f,c,d);S.setContrast(l&&r.dom),g.push(S),S.setPosY(S.ty)}else b&&b.setVis(!1)}}))}$_prepareOutline(e,i,s,r,o){const n=+new Date,a=this.control.canvasCtx(),h=e.getTotalLength(),l=t.maxv(1,Math.round(h/500));let c;a.setTransform(1,0,0,1,0,0),a.clearRect(0,0,i,s),a.scale(r,o),a.fillStyle="red",a.beginPath(),c=e.getPointAtLength(0),a.moveTo(c.x,c.y);for(let t=0;t<h;t+=l)c=e.getPointAtLength(t),a.lineTo(c.x,c.y);a.closePath(),a.fill(),console.log("canvas",+new Date-n,"ms.")}$_calcLabelPosVert(e,t,i){const s=e.dom,r=s.ownerSVGElement.createSVGPoint(),{wFigure:o,sx:n}=e,a=2*(e.sx<0?1:1/e.sx);let h=i?0:e.wFigure;if(r.y=t.point.yPos/e.sy,i){for(;h<o;h+=a)if(r.x=h,s.isPointInFill(r))return h>0&&(r.x-=a/2,s.isPointInFill(r)&&(h=r.x)),h*n}else for(;h>=0;h-=a)if(r.x=h,s.isPointInFill(r))return h<o&&(r.x+=a/2,s.isPointInFill(r)&&(h=r.x)),h*n;return e.wFigure*e.sx/2}$_calcLabelPosVertIE(e,t,i){const s=this.control.canvasCtx(),r={x:0,y:0},{wFigure:o,sx:n}=e,a=2*(n<0?1:1/n);let h=r.y=t.point.yPos,l=i?0:o*n;if(i){for(const e=o*n;l<e;l+=a)if(r.x=l,s.isPointInPath(r.x,h))return l>0&&(r.x-=a/2,s.isPointInPath(r.x,h)&&(l=r.x)),l}else for(;l>=0;l-=a)if(r.x=l,s.isPointInPath(l,h))return l<o*n&&(r.x+=a/2,s.isPointInPath(r.x,h)&&(l=r.x)),l;return o/2}$_layoutLabelOutVert(e,i,s,r,o,n,a,h,l){const c=i.point,d=s.isDomAnimating(),u=s.getBBox(),_=c.yPos;!d&&s.layout(r||(o?"right":"left"));let g=t.isIE?this.$_calcLabelPosVertIE(e,i,o):this.$_calcLabelPosVert(e,i,o);n&&(o?n.setLine(a.reset(0,0).line(-l,0).end()):n.setLine(a.reset(0,0).line(l,0).end()),n.trans(g,_)),o?g-=l+h+u.width:g+=l+h,s.trans(g,_-u.height/2)}$_layoutLabelNearVert(e,i,s,r,o,n,a,h,l,c,d){const u=i.point,_=s.isDomAnimating(),g=s.getBBox(),p=u.yPos;!_&&s.layout(r||(o?"right":"left"));const m=t.isIE?this.$_calcLabelPosVertIE(e,i,o):this.$_calcLabelPosVert(e,i,o);let f=l;o?f-=h/2:f+=h/2,n&&(o?n.setLine(a.reset(0,0).line(f-m-d,0).end()):n.setLine(a.reset(0,0).line(f+d-m,0).end()),n.trans(m,p)),o?f-=c+d+g.width:f+=d+c,s.trans(f,p-g.height/2)}$_layoutLabelFarVert(e,i,s,r,o,n,a,h,l,c,d,u){const _=i.point,g=s.isDomAnimating(),p=s.getBBox(),m=_.yPos;!g&&s.layout(r||(o?"right":"left"));const f=t.isIE?this.$_calcLabelPosVertIE(e,i,o):this.$_calcLabelPosVert(e,i,o);let y;y=o?l+h+c-d.x:u-d.x-l-c-h,n&&(o?n.setLine(a.reset(0,0).line(y-f-l,0).end()):n.setLine(a.reset(0,0).line(y+l-f,0).end()),n.trans(f,m)),o?y-=h+l+p.width:y+=l+h,s.trans(y,m-p.height/2)}$_calcLabelPosHorz(e,t,i){const s=e.dom,r=s.ownerSVGElement.createSVGPoint(),{hFigure:o,sy:n}=e,a=2*(e.sy<0?1:1/e.sy);let h=i?e.hFigure:0;if(r.x=t.point.xPos/e.sx,i){for(;h>=0;h-=a)if(r.y=h,s.isPointInFill(r))return h<e.hFigure&&(r.y+=a/2,s.isPointInFill(r)&&(h=r.y)),h*n}else for(;h<o;h+=a)if(r.y=h,s.isPointInFill(r))return h>0&&(r.y-=a/2,s.isPointInFill(r)&&(h=r.y)),h*n;return e.hFigure*e.sy/2}$_calcLabelPosHorzIE(e,t,i){const s=this.control.canvasCtx(),r={x:0,y:0},{hFigure:o,sy:n}=e,a=2*(e.sy<0?1:1/e.sy);let h=r.x=t.point.xPos,l=i?o*n:0;if(i){for(;l>=0;l-=a)if(r.y=l,s.isPointInPath(h,r.y))return l<o*n&&(r.y+=a/2,s.isPointInPath(h,r.y)&&(l=r.y)),l}else for(;l<o;l+=a)if(r.y=l,s.isPointInPath(h,r.y))return l>0&&(r.y-=a/2,s.isPointInPath(h,r.y)&&(l=r.y)),l;return e.hFigure*e.sy/2}$_layoutLabelOutHorz(e,i,s,r,o,n,a,h,l){const c=i.point,d=s.isDomAnimating(),u=s.getBBox(),_=c.xPos;!d&&s.layout(r);let g=t.isIE?this.$_calcLabelPosHorzIE(e,i,o):this.$_calcLabelPosHorz(e,i,o);n&&(o?n.setLine(a.reset(0,0).line(0,l).end()):n.setLine(a.reset(0,0).line(0,-l).end()),n.trans(_,g)),o?g+=l+h:g-=l+h,s.trans(_-u.width/2,o?g:g-u.height)}$_layoutLabelNearHorz(e,i,s,r,o,n,a,h,l,c,d){const u=i.point,_=s.isDomAnimating(),g=s.getBBox(),p=u.xPos;!_&&s.layout(r||(o?"right":"left"));let m=t.isIE?this.$_calcLabelPosHorzIE(e,i,o):this.$_calcLabelPosHorz(e,i,o),f=l;o?f+=h/2:f-=h/2,n&&(o?n.setLine(a.reset(0,0).line(0,f+d-m).end()):n.setLine(a.reset(0,0).line(0,f-m-d).end()),n.trans(p,m)),o?f+=d+c:f-=c+d+g.height,s.trans(p-g.width/2,f)}$_layoutLabelFarHorz(e,i,s,r,o,n,a,h,l,c,d,u){const _=i.point,g=s.isDomAnimating(),p=s.getBBox(),m=_.xPos;!g&&s.layout(r||(o?"right":"left"));const f=t.isIE?this.$_calcLabelPosHorzIE(e,i,o):this.$_calcLabelPosHorz(e,i,o);let y;y=o?u-d.y-l-c-h:l+h+c-d.y,n&&(o?n.setLine(a.reset(0,0).line(0,y+l-f).end()):n.setLine(a.reset(0,0).line(0,y-f-l).end()),n.trans(m,f)),o?y+=l+h:y-=h+l+p.height,s.trans(m-p.width/2,y)}}function f(e){(function(e){return e.Series&&e.SeriesView})(e)&&(e.Series.register(r),e.Series.register(h),e.Series.register(u),e.SeriesView.register([r,n]),e.SeriesView.register([h,g]),e.SeriesView.register([u,m]))}f(s),e.PictogramSeries=r,e.PictorialBarSeries=h,e.PictorialSeries=u,e.default=f,Object.defineProperty(e,"__esModule",{value:!0})}));
package/pictogram.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  /**
3
- * RealChart Pictogram v1.4.12
3
+ * RealChart Pictogram v1.4.13
4
4
  * Copyright (C) 2023-2026 WooriTech Inc.
5
5
  * All Rights Reserved.
6
6
  */
7
- import{PictogramSeriesType as e,extend as t,BasedSeries as i,RectElement as s,Series as r,BasedSeriesView as o,ElementPool as n,RcElement as h,SeriesView as a,PictorialBarSeriesType as l,BarSeriesBase as _,calcPercent as d,isArray as u,isString as g,pickNum as c,parsePercentSize as p,BarSeriesPoint as y,pickProp as f,PictorialSeriesType as w,WidgetSeries as m,WidgetSeriesLabel as P,minv as V,WidgetSeriesPoint as b,BarSeriesViewBase as v,SVGNS as x,Utils as L,Dom as S,pixel as $,BoxPointElementEx as C,PathElement as A,ImageElement as F,SvgShapes as B,WidgetSeriesView as D,LayerElement as E,PointLabelLineContainer as I,SeriesAnimation as N,isIE as R,fixnum as H,PathBuilder as k,maxv as z,PointElement as T}from"./index.mjs";class M extends i{_createLegendMarker(e,t){return s.create(e,r.LEGEND_MARKER,0,0,t,t,2)}}M.type=e,M.defaults=t(i.defaults,{iconGap:2,integral:!1,integralThreshold:.5});class O extends h{constructor(e){super(e,a.POINT_CLASS),this.add(this._back=new s(e)),this._back.setTransparent(!0)}preppareIcons(e,t,i,s){}layout(e,t,i){const s=this.wPoint,r=this.hPoint;t-=s/2,r<0&&(e=e.map((e=>-e))),this._back.setBounds(t,i-r,s,r)}}class G extends o{constructor(e){super(e,"rct-pictogram-series"),this._bars=new n(this._pointContainer,O)}_getPointPool(){return this._bars}_preparePoints(e,t,i){}_layoutPoint(e,t,i,s,r,o){}}class W extends y{_readObject(e,t){super._readObject(e,t),this.figure=f(e._figureFielder(t),t.figure)}_readArray(e,t){super._readArray(e,t);const i=+e.options.figureField;isNaN(i)||(this.figure=t[i])}}class U extends _{getMode(){return this._mode}getFigure(){return this._figurePath}getImage(e){let t=e.figure;return"number"==typeof t&&(t=this._imageUrls[t]),!t&&this._op.figureByPoint&&(t=this._imageUrls[e.vindex%this._imageUrls.length]),this._imageRoot+(t||this._imageUrls[0])}getFigureWidth(e){return d(this._widthDim,e,e)}getFigureGap(){return this._figureGap}_createPoint(e){return new W(e)}_createLegendMarker(e,t){return s.create(e,r.LEGEND_MARKER,0,0,t,t,2)}_doApply(e){super._doApply(e),this._figureFielder=this._createFielder(e.figureField||"figure"),this._figurePath=u(e.figurePath)?e.figurePath.join(" "):e.figurePath;const t=e.figureImage;u(t)?this._imageUrls=t.slice(0):g(t)?this._imageUrls=[t]:this._imageUrls=[],this._imageRoot=g(e.figureImageRoot)?e.figureImageRoot:"",this._mode="both"===e.mode||"figure"===e.mode?e.mode:e.figurePath?"both":"figure",this._figureGap=c(e.figureGap,0),this._widthDim=p(e.figureWidth,!0)}}U.type=l,U.defaults=t(_.defaults,{mode:"auto",figureWidth:"100%"});class j extends b{}class K extends j{constructor(e,t){super(e),this.points=t}}class q extends P{getDistance(){return isNaN(this._op.distance)?"far"===this._op.align?q.ENDED_DIST:q.OUTSIDE_DIST:this._op.distance||0}}q.OUTSIDE_DIST=25,q.ENDED_DIST=10;class Y extends m{get paths(){return this._paths}getPictorialSize(e,t,i){const s=d(this._sizeDim,1),r=V(t*s/e.width,i*s/e.height);return{width:c(d(this._widthDim,t),e.width*r),height:c(d(this._heightDim,i),e.height*r)}}get pointLabel(){return this._pointLabel}_createLabel(e){return new q(e)}_createPoint(e){return new j(e)}_createOthersPoint(e,t){return e.y=t.map((e=>e.y)).reduce(((e,t)=>e+t)),new K(e,t)}needClip(e){return!1}getTotal(){const e=super.getSum();return Math.max(e,d(this._totalDim,e))}getSum(){const e=super.getSum(),t=d(this._totalDim,e);return Math.max(e,c(t,e))}_doApply(e){super._doApply(e),this._paths=u(e.figure)?e.figure:[e.figure||""],this._setDims(e,"total","width","height"),this._sizeDim=p(e.size||"80%",!1)}_createLegendMarker(e,t){return s.create(e,r.LEGEND_MARKER,0,0,t,t,2)}}Y.type=w,Y.defaults=t(m.defaults,{size:"90%",reversed:!1});class Z extends C{constructor(e){super(e),this.add(this._figureLayer=new h(e,"")),this._figureLayer.add(this._figureView=new A(e,"")),this.add(this._imageLayer=new h(e,"")),this._imageLayer.add(this._imageView=new F(e,!1,"")),this._imageView.setAttr("preserveAspectRatio","none"),this.add(this._boxView=new A(e,"")),this._figureView.setAttr("vector-effect","non-scaling-stroke")}renderSvg(e,t,i,s,r){const o=this._figureView;let n;this._imageLayer.setVis(!1),this._figureLayer.setVis(!0),o.scale(1),o.setPath(s),n=o.getBounds(),e.both?o.scale(r/(e.inverted?n.height:n.width)):e.inverted?o.scale(r/n.height,(e.reversed?-1:1)*this.hPoint/n.width):o.scale(r/n.width,(e.reversed?-1:1)*this.hPoint/n.height),this.$_layoutFigure(e,this._figureLayer,this._figureView,t,i)}renderImage(e,t,i,s,r){const o=this._imageView;this._figureLayer.setVis(!1),this._imageLayer.setVis(!0),o.url=s,o.width=r,o.height=e.both?void 0:Math.abs(this.hPoint),this.$_layoutFigure(e,this._imageLayer,o,t,i)}$_layoutFigure(e,t,i,s,r){const o=i.getBounds(),n=!e.upperClip;let h=this.hPoint,a=!1;e.inverted?e.reversed?n?(i.trans(s+o.height/2,r-h),this._dir="left"):h<0?(i.trans(s+o.height/2,-e.yBase-h),this._dir="left"):(i.trans(s-o.height/2,-e.yBase-h),this._dir="right"):n?(i.trans(s-o.height/2,-h),this._dir="right"):h<0?(i.trans(s+o.height/2,-e.yBase-h),this._dir="left"):(i.trans(s-o.height/2,-e.yBase-h),this._dir="right"):e.reversed?n?(i.trans(s+o.width/2,-h),this._dir="bottom"):h<0?(i.trans(s+o.width/2,e.yLen-e.yBase-h),this._dir="bottom"):(i.trans(s-o.width/2,e.yLen-e.yBase-h),this._dir="top"):n?(i.trans(s-o.width/2,r-h),this._dir="top"):h<0?(i.trans(s+o.width/2,e.yLen-e.yBase-h),this._dir="bottom"):(i.trans(s-o.width/2,e.yLen-e.yBase-h),this._dir="top"),n?(i.rotate(e.reversed?180:0),t.removeAttr("clip-path")):(a=this.point.yValue<e.base,e.reversed&&(a=!a),S.setClipPath(t.dom,a?e.lowerClip:e.upperClip),i.rotate(a?180:0)),this._boxView.setVis(e.both)&&(a||(a=n&&e.reversed),h-=(a?-1:1)*((e.inverted?o.width:o.height)+e.gap),this.$_layoutBox(e,a,s,r,h))}$_layoutBox(e,t,i,s,r){this._boxView.setVis(t?r<0:r>0)&&this._boxView.setPath(B.bar(i-this.wPoint/2,s,this.wPoint,-r,e.rTop,e.rBottom))}}class J extends v{constructor(e){super(e,"rct-pictorialbar-series")}_createBarPool(e,t){return new n(e,Z)}_prepareLayoutPoints(e,t){const i=this.model,s=this._yBase,r=this._baseVal>i._yAxisObj.axisMin();if(this._info={inverted:this._inverted,reversed:this._yReversed,base:this._baseVal,yBase:s,both:"both"===i.getMode(),gap:i.getFigureGap(),yLen:this._yLen,rTop:+i.options.topRadius||0,rBottom:+i.options.bottomRadius||0,upperClip:"",lowerClip:""},r){if(!this._upperClip){const e=this.doc,t=this.dom.querySelector("defs")||e.createElementNS(x,"defs"),i=L.uniqueKey()+"-";this.insertDom(t,this._pointContainer.dom),t.appendChild(this._upperClip=S.createClipRect(e,i+"upper")),t.appendChild(this._lowerClip=S.createClipRect(e,i+"lower"))}const i=this._upperClip.firstElementChild,r=this._lowerClip.firstElementChild;this._inverted?(S.setBounds(i,0,-e,t,e-s),S.setBounds(r,0,-s,t,e)):(S.setBounds(i,0,0,e,t-s),S.setBounds(r,0,t-s,e,s)),this._info.upperClip=this._upperClip.id,this._info.lowerClip=this._lowerClip.id}}_layoutPoint(e,t,i,s,r,o){const n=e.point,h=this.model.getFigure();this._needMask=h&&this._info.both,e.wPoint=r*c(n.width,1),e.hPoint=o,e.x=i,h?e.renderSvg(this._info,i,s,h,this._model.getFigureWidth(r)):e.renderImage(this._info,i,s,this._model.getImage(n),this._model.getFigureWidth(r))}setHoverStyle(e){if(super.setHoverStyle(e),this._needMask){const t=getComputedStyle(e.dom),i="none"!==t.stroke?parseFloat(t.strokeWidth):0;if(this._hoverFigureView.parent.setVis(i>0&&this._info.gap<i)){S.setImportantStyle(e.dom.style,"stroke-width",$(i+i/2|0));let t=0,s=0;switch(e._dir){case"top":case"right":s=-i/2;break;case"bottom":case"left":s=i/2}this._hoverBoxView.setAttribute("transform",`translate(${t}, ${s})`)}}}focusPointView(e,t){t&&this._needMask?this.$_showHoverView(this._hoverPoint=e).setVis(!0):this._hoverFigureView&&(this._hoverFigureView.parent.setVis(!1),this._hoverPoint=null)}_renderSeries(e,t){super._renderSeries(e,t),this._hoverPoint&&this._hoverFigureView&&this._hoverFigureView.parent.visible&&this.$_showHoverView(this._hoverPoint)}$_showHoverView(e){let t=this._hoverFigureView;if(!t){const e=this.doc;let i;this.add(new h(e,"")).add(t=this._hoverFigureView=new h(e,"")),t.parent.dom.style.pointerEvents="none",t.appendDom(i=e.createElementNS(x,"path")),i.style.stroke="none",t.parent.appendDom(i=this._hoverBoxView=e.createElementNS(x,"path")),i.style.stroke="none"}const i=t.dom.firstElementChild,s=this._hoverBoxView;return t.parent.setAttr("clip-path",this._pointContainer.getAttr("clip-path")),t.setAttr("clip-path",e._figureLayer.getAttr("clip-path")),i.setAttribute("d",e._figureView.getAttr("d")),i.style.fill=getComputedStyle(e._figureView.dom).fill,i.setAttribute("transform",e._figureView.getTransform()),S.setVisible(s,e._boxView.visible)&&(s.setAttribute("d",e._boxView.getAttr("d")),s.style.fill=getComputedStyle(e._boxView.dom).fill),this._inverted&&t.parent.setAttr("transform",`rotate(90) translate(${this.height},0) scale(-1, 1)`),t}}class Q extends T{getTooltipPos(){return{x:this.point.xPos+this.parent.parent.tx,y:this.point.yPos+this.parent.parent.ty}}}class X extends D{constructor(e){super(e,"rct-pictorial-series");const t=L.uniqueKey()+"-",i=t+"figure",s=t+"clip",r=t+"hover";this._figurelView=e.createElementNS(x,"use"),this._figurelView.setAttribute("href",`#${i}`),this._figurelView.setAttribute("class","rct-pictorial-series-figure"),this.insertDom(this._figurelView,this._pointContainer.dom);const o=e.createElementNS(x,"defs");this.insertDom(o,this._figurelView),this._sourceView=new A(e),this._sourceView.setAttr("vector-effect","non-scaling-stroke"),this._sourceView.dom.id=i,o.appendChild(this._sourceView.dom);const h=e.createElementNS(x,"use"),a=e.createElementNS(x,"clipPath"),l=e.createElementNS(x,"clipPath");h.setAttribute("href",`#${i}`),a.appendChild(h),a.id=s,o.appendChild(a),l.appendChild(this._hoverRect=e.createElementNS(x,"path")),l.id=r,o.appendChild(l),this._hoverView=e.createElementNS(x,"use"),this._hoverView.setAttribute("href",`#${i}`),this._hoverView.setAttribute("clip-path",`url(#${r}`),this._hoverView.style.stroke="none",this._hoverView.style.fill="none",this.appendDom(this._hoverView),this._pointContainer.add(this._sliceLayer=new E(e,null)),this._pointContainer.setAttr("clip-path",`url(#${s})`),this._slices=new n(this._sliceLayer,Q),this.add(this._lineContainer=new I(e))}_getPointPool(){return this._slices}getClipContainer(){return null}_prepareSeries(e,t){super._prepareSeries(e,t),this.$_prepareSlices(e,t,this._visPoints),this._lineContainer.prepare(t)}_renderSeries(e,t){this.$_renderFigure(this._sourceView,this._model,e,t);const i=this._visPoints,s=this.model.getCenter(e,t),r=this._figurelView.getBoundingClientRect(),o=s.x-r.width/2,n=s.y-r.height/2,h=`translate(${o},${n})`;S.hasFill(this._figurelView)||(this._figurelView.style.fill="transparent"),this._figurelView.setAttribute("transform",h),this._hoverView.setAttribute("transform",h),r.x=o,r.y=n,this.$_layoutSlices(i,r,e,t),this._pointContainer.trans(o,n),this._labelContainer.trans(o,n),this._lineContainer.trans(o,n),this.resize(r.width,r.height),this._rSave=r,this._wSave=e,this._hSave=t}_runShowEffect(e){const t=this.model.options.reversed;e&&N.reveal(this,{from:"column"===this.model.options.direction?t?"right":"left":t?"top":"bottom",view:this._sliceLayer})}_refreshZombie(){this.$_layoutSlices(this._visPoints,this._rSave,this._wSave,this._hSave),this._hoverPoint&&!S.isHidden(this._hoverView)&&this.$_showHoverView(this._hoverPoint)}_animationStarted(e){super._animationStarted(e),this._lineContainer.setVis(this._labelContainer.visible)}setHoverStyle(e){super.setHoverStyle(e);const t=getComputedStyle(e.dom),i="none"!==t.stroke&&parseFloat(t.strokeWidth)>0;S.setVisible(this._hoverView,i)&&Object.assign(this._hoverView.style,{stroke:t.stroke,strokeWidth:t.strokeWidth,strokeDasharray:t.strokeDasharray})}focusPointView(e,t){this._hoverView.style.display=t?"":"none",t&&this.$_showHoverView(e),this._hoverPoint=t?e:null}$_showHoverView(e){this._hoverRect.setAttribute("d",e.getAttr("d"))}$_prepareSlices(e,t,i){this._slices.prepare(i.length,((s,r)=>{const o=s.point=i[r];this._preparePoint(e,t,o,s)}))}$_renderFigure(e,t,i,s){let r,o;e.setPath(t.paths),r=e.getBBox(),o=t.getPictorialSize(r,i,s),e.scale(o.width/r.width,o.height/r.height),R&&this.$_prepareOutline(this._sourceView.dom,i,s,o.width/r.width,o.height/r.height)}$_layoutSlices(e,t,i,s){const r=this._model,o=r.pointLabel,n=r.options.reversed;this.$_calcRates(e),this._lineContainer.setStyleOrClass(o.connector.options.style),"column"===r.options.direction?this.$_renderHorz(n,t,s):this.$_renderVert(n,t,i)}$_calcRates(e){const t=this._zombie,i=this._zombieRate,s=e.length;let r=this.model.getTotal();isNaN(r)&&(r=e.filter((e=>(e.visible||e===t)&&!e.isNull)).map((e=>e.yValue*(e===t?i:e._isDeleted()?e._vr:1))).reduce(((e,t)=>e+t),0)),s>1||s>0&&!t?1==s&&e[0]._isDeleted()||1===s&&e[0]._vr<1?e[0].yRate=1:e.forEach((e=>{const s=H(e.yValue*(e===t?i:e._isDeleted()?e._vr:1)/r)||0;e.yRate=s})):1==s&&(e[0].yRate=H(i))}$_createLabelInfo(e){const{a:t,d:i}=e.getCTM(),{width:s,height:r}=e.getBBox();return{dom:e,sx:t,sy:i,wFigure:s,hFigure:r}}$_renderVert(e,t,i){const s=this.model,r=t.width,o=t.height,n=this._labelViews(),h=s.pointLabel,a="inside"===s.getLabelPos(h),l=h.getOffset(),_=h.getDistance(),d=h.getAlign(),u=null==n?void 0:n.textAlign(),g=[],c=h.options.opposite,p=this._lineContainer.setVis(h.connector.visible)?this._lineContainer:null,y=new k,f=s.getCenter(i,o).x-t.x,w=r/2;let m=e?0:o;const P=n?n.getWidth(0):0,V=g&&!a&&this.$_createLabelInfo(this._sourceView.dom);let b,v;this._slices.forEach((s=>{const h=s.point;if(s.setVis(!h.isNull)){const x=o*h.yRate;if(e?(s.setPath(B.rectangle(0,m,r,x)),h.yPos=m+x/2,m+=x):(h.yPos=m-x/2,m-=x,s.setPath(B.rectangle(0,m,r,x))),h.xPos=w,v=null==p?void 0:p.get(h),n&&(b=n.get(h,0))&&b.visible){if(a){const e=b.isDomAnimating(),t=b.getBBox();!e&&b.layout(u||"center"),null==v||v.setVis(!1),b.trans(h.xPos-t.width/2,h.yPos-t.height/2)}else-1===d?this.$_layoutLabelNearVert(V,s,b,u,c,v,y,r,f,l,_):1==d?this.$_layoutLabelFarVert(V,s,b,u,c,v,y,l,_,P,t,i):this.$_layoutLabelOutVert(V,s,b,u,c,v,y,l,_);b.setContrast(a&&s.dom),g.push(b),b.setPosY(b.ty)}else v&&v.setVis(!1)}}))}$_renderHorz(e,t,i){const s=this.model,r=t.width,o=t.height,n=this._labelViews(),h=s.pointLabel,a="inside"===s.getLabelPos(h),l=h.getOffset(),_=h.getDistance(),d=h.getAlign(),u=null==n?void 0:n.textAlign(),g=[],c=h.options.opposite,p=this._lineContainer.setVis(h.connector.visible)?this._lineContainer:null,y=new k,f=s.getCenter(r,i).y-t.y,w=o/2,m=n?n.getWidth(0):0,P=g&&!a&&this.$_createLabelInfo(this._sourceView.dom);let V,b,v=e?r:0;this._slices.forEach((s=>{const h=s.point;if(s.setVis(!h.isNull)){const x=r*h.yRate;if(e?(h.xPos=v-x/2,v-=x,s.setPath(B.rectangle(v,0,x,o))):(h.xPos=v+x/2,s.setPath(B.rectangle(v,0,x,o)),v+=x),h.yPos=w,b=null==p?void 0:p.get(h),n&&(V=n.get(h,0))&&V.visible){if(a){const e=V.isDomAnimating(),t=V.getBBox();!e&&V.layout(u||"center"),V.trans(h.xPos-t.width/2,h.yPos-t.height/2),null==b||b.setVis(!1)}else-1===d?this.$_layoutLabelNearHorz(P,s,V,u,c,b,y,o,f,l,_):1==d?this.$_layoutLabelFarHorz(P,s,V,u,c,b,y,l,_,m,t,i):this.$_layoutLabelOutHorz(P,s,V,u,c,b,y,l,_);V.setContrast(a&&s.dom),g.push(V),V.setPosY(V.ty)}else b&&b.setVis(!1)}}))}$_prepareOutline(e,t,i,s,r){const o=+new Date,n=this.control.canvasCtx(),h=e.getTotalLength(),a=z(1,Math.round(h/500));let l;n.setTransform(1,0,0,1,0,0),n.clearRect(0,0,t,i),n.scale(s,r),n.fillStyle="red",n.beginPath(),l=e.getPointAtLength(0),n.moveTo(l.x,l.y);for(let t=0;t<h;t+=a)l=e.getPointAtLength(t),n.lineTo(l.x,l.y);n.closePath(),n.fill(),console.log("canvas",+new Date-o,"ms.")}$_calcLabelPosVert(e,t,i){const s=e.dom,r=s.ownerSVGElement.createSVGPoint(),{wFigure:o,sx:n}=e,h=2*(e.sx<0?1:1/e.sx);let a=i?0:e.wFigure;if(r.y=t.point.yPos/e.sy,i){for(;a<o;a+=h)if(r.x=a,s.isPointInFill(r))return a>0&&(r.x-=h/2,s.isPointInFill(r)&&(a=r.x)),a*n}else for(;a>=0;a-=h)if(r.x=a,s.isPointInFill(r))return a<o&&(r.x+=h/2,s.isPointInFill(r)&&(a=r.x)),a*n;return e.wFigure*e.sx/2}$_calcLabelPosVertIE(e,t,i){const s=this.control.canvasCtx(),r={x:0,y:0},{wFigure:o,sx:n}=e,h=2*(n<0?1:1/n);let a=r.y=t.point.yPos,l=i?0:o*n;if(i){for(const e=o*n;l<e;l+=h)if(r.x=l,s.isPointInPath(r.x,a))return l>0&&(r.x-=h/2,s.isPointInPath(r.x,a)&&(l=r.x)),l}else for(;l>=0;l-=h)if(r.x=l,s.isPointInPath(l,a))return l<o*n&&(r.x+=h/2,s.isPointInPath(r.x,a)&&(l=r.x)),l;return o/2}$_layoutLabelOutVert(e,t,i,s,r,o,n,h,a){const l=t.point,_=i.isDomAnimating(),d=i.getBBox(),u=l.yPos;!_&&i.layout(s||(r?"right":"left"));let g=R?this.$_calcLabelPosVertIE(e,t,r):this.$_calcLabelPosVert(e,t,r);o&&(r?o.setLine(n.reset(0,0).line(-a,0).end()):o.setLine(n.reset(0,0).line(a,0).end()),o.trans(g,u)),r?g-=a+h+d.width:g+=a+h,i.trans(g,u-d.height/2)}$_layoutLabelNearVert(e,t,i,s,r,o,n,h,a,l,_){const d=t.point,u=i.isDomAnimating(),g=i.getBBox(),c=d.yPos;!u&&i.layout(s||(r?"right":"left"));const p=R?this.$_calcLabelPosVertIE(e,t,r):this.$_calcLabelPosVert(e,t,r);let y=a;r?y-=h/2:y+=h/2,o&&(r?o.setLine(n.reset(0,0).line(y-p-_,0).end()):o.setLine(n.reset(0,0).line(y+_-p,0).end()),o.trans(p,c)),r?y-=l+_+g.width:y+=_+l,i.trans(y,c-g.height/2)}$_layoutLabelFarVert(e,t,i,s,r,o,n,h,a,l,_,d){const u=t.point,g=i.isDomAnimating(),c=i.getBBox(),p=u.yPos;!g&&i.layout(s||(r?"right":"left"));const y=R?this.$_calcLabelPosVertIE(e,t,r):this.$_calcLabelPosVert(e,t,r);let f;f=r?a+h+l-_.x:d-_.x-a-l-h,o&&(r?o.setLine(n.reset(0,0).line(f-y-a,0).end()):o.setLine(n.reset(0,0).line(f+a-y,0).end()),o.trans(y,p)),r?f-=h+a+c.width:f+=a+h,i.trans(f,p-c.height/2)}$_calcLabelPosHorz(e,t,i){const s=e.dom,r=s.ownerSVGElement.createSVGPoint(),{hFigure:o,sy:n}=e,h=2*(e.sy<0?1:1/e.sy);let a=i?e.hFigure:0;if(r.x=t.point.xPos/e.sx,i){for(;a>=0;a-=h)if(r.y=a,s.isPointInFill(r))return a<e.hFigure&&(r.y+=h/2,s.isPointInFill(r)&&(a=r.y)),a*n}else for(;a<o;a+=h)if(r.y=a,s.isPointInFill(r))return a>0&&(r.y-=h/2,s.isPointInFill(r)&&(a=r.y)),a*n;return e.hFigure*e.sy/2}$_calcLabelPosHorzIE(e,t,i){const s=this.control.canvasCtx(),r={x:0,y:0},{hFigure:o,sy:n}=e,h=2*(e.sy<0?1:1/e.sy);let a=r.x=t.point.xPos,l=i?o*n:0;if(i){for(;l>=0;l-=h)if(r.y=l,s.isPointInPath(a,r.y))return l<o*n&&(r.y+=h/2,s.isPointInPath(a,r.y)&&(l=r.y)),l}else for(;l<o;l+=h)if(r.y=l,s.isPointInPath(a,r.y))return l>0&&(r.y-=h/2,s.isPointInPath(a,r.y)&&(l=r.y)),l;return e.hFigure*e.sy/2}$_layoutLabelOutHorz(e,t,i,s,r,o,n,h,a){const l=t.point,_=i.isDomAnimating(),d=i.getBBox(),u=l.xPos;!_&&i.layout(s);let g=R?this.$_calcLabelPosHorzIE(e,t,r):this.$_calcLabelPosHorz(e,t,r);o&&(r?o.setLine(n.reset(0,0).line(0,a).end()):o.setLine(n.reset(0,0).line(0,-a).end()),o.trans(u,g)),r?g+=a+h:g-=a+h,i.trans(u-d.width/2,r?g:g-d.height)}$_layoutLabelNearHorz(e,t,i,s,r,o,n,h,a,l,_){const d=t.point,u=i.isDomAnimating(),g=i.getBBox(),c=d.xPos;!u&&i.layout(s||(r?"right":"left"));let p=R?this.$_calcLabelPosHorzIE(e,t,r):this.$_calcLabelPosHorz(e,t,r),y=a;r?y+=h/2:y-=h/2,o&&(r?o.setLine(n.reset(0,0).line(0,y+_-p).end()):o.setLine(n.reset(0,0).line(0,y-p-_).end()),o.trans(c,p)),r?y+=_+l:y-=l+_+g.height,i.trans(c-g.width/2,y)}$_layoutLabelFarHorz(e,t,i,s,r,o,n,h,a,l,_,d){const u=t.point,g=i.isDomAnimating(),c=i.getBBox(),p=u.xPos;!g&&i.layout(s||(r?"right":"left"));const y=R?this.$_calcLabelPosHorzIE(e,t,r):this.$_calcLabelPosHorz(e,t,r);let f;f=r?d-_.y-a-l-h:a+h+l-_.y,o&&(r?o.setLine(n.reset(0,0).line(0,f+a-y).end()):o.setLine(n.reset(0,0).line(0,f-y-a).end()),o.trans(p,y)),r?f+=a+h:f-=h+a+c.height,i.trans(p-c.width/2,f)}}function ee(e){(function(e){return e.Series&&e.SeriesView})(e)&&(e.Series.register(M),e.Series.register(U),e.Series.register(Y),e.SeriesView.register([M,G]),e.SeriesView.register([U,J]),e.SeriesView.register([Y,X]))}export{M as PictogramSeries,U as PictorialBarSeries,Y as PictorialSeries,ee as default};
7
+ import{PictogramSeriesType as e,extend as t,BasedSeries as i,RectElement as s,Series as r,BasedSeriesView as o,PointViewPool as n,RcElement as h,SeriesView as a,PictorialBarSeriesType as l,BarSeriesBase as _,calcPercent as d,isArray as u,isString as g,pickNum as c,parsePercentSize as p,BarSeriesPoint as y,pickProp as f,PictorialSeriesType as w,WidgetSeries as m,WidgetSeriesLabel as P,minv as V,WidgetSeriesPoint as b,BarSeriesViewBase as v,SVGNS as x,Utils as L,Dom as S,pixel as $,BoxPointElementEx as C,PathElement as A,ImageElement as F,SvgShapes as B,WidgetSeriesView as D,LayerElement as E,PointLabelLineContainer as I,SeriesAnimation as N,isIE as k,fixnum as R,PathBuilder as H,maxv as z,PointElement as T}from"./index.mjs";class M extends i{_createLegendMarker(e,t){return s.create(e,r.LEGEND_MARKER,0,0,t,t,2)}}M.type=e,M.defaults=t(i.defaults,{iconGap:2,integral:!1,integralThreshold:.5});class O extends h{constructor(e){super(e,a.POINT_CLASS),this.add(this._back=new s(e)),this._back.setTransparent(!0)}preppareIcons(e,t,i,s){}layout(e,t,i){const s=this.wPoint,r=this.hPoint;t-=s/2,r<0&&(e=e.map((e=>-e))),this._back.setBounds(t,i-r,s,r)}}class G extends o{constructor(e){super(e,"rct-pictogram-series"),this._bars=new n(this._pointContainer,O)}_getPointPool(){return this._bars}_preparePoints(e,t,i){}_shrinkPoint(e){}_layoutPoint(e,t,i,s,r,o){}}class W extends y{_readObject(e,t){super._readObject(e,t),this.figure=f(e._figureFielder(t),t.figure)}_readArray(e,t){super._readArray(e,t);const i=+e.options.figureField;isNaN(i)||(this.figure=t[i])}}class U extends _{getMode(){return this._mode}getFigure(){return this._figurePath}getImage(e){let t=e.figure;return"number"==typeof t&&(t=this._imageUrls[t]),!t&&this._op.figureByPoint&&(t=this._imageUrls[e.vindex%this._imageUrls.length]),this._imageRoot+(t||this._imageUrls[0])}getFigureWidth(e){return d(this._widthDim,e,e)}getFigureGap(){return this._figureGap}_createPoint(e){return new W(e)}_createLegendMarker(e,t){return s.create(e,r.LEGEND_MARKER,0,0,t,t,2)}_doApply(e){super._doApply(e),this._figureFielder=this._createFielder(e.figureField||"figure"),this._figurePath=u(e.figurePath)?e.figurePath.join(" "):e.figurePath;const t=e.figureImage;u(t)?this._imageUrls=t.slice(0):g(t)?this._imageUrls=[t]:this._imageUrls=[],this._imageRoot=g(e.figureImageRoot)?e.figureImageRoot:"",this._mode="both"===e.mode||"figure"===e.mode?e.mode:e.figurePath?"both":"figure",this._figureGap=c(e.figureGap,0),this._widthDim=p(e.figureWidth,!0)}}U.type=l,U.defaults=t(_.defaults,{mode:"auto",figureWidth:"100%"});class j extends b{}class K extends j{constructor(e,t){super(e),this.points=t}}class q extends P{getDistance(){return isNaN(this._op.distance)?"far"===this._op.align?q.ENDED_DIST:q.OUTSIDE_DIST:this._op.distance||0}}q.OUTSIDE_DIST=25,q.ENDED_DIST=10;class Y extends m{get paths(){return this._paths}getPictorialSize(e,t,i){const s=d(this._sizeDim,1),r=V(t*s/e.width,i*s/e.height);return{width:c(d(this._widthDim,t),e.width*r),height:c(d(this._heightDim,i),e.height*r)}}get pointLabel(){return this._pointLabel}_createLabel(e){return new q(e)}_createPoint(e){return new j(e)}_createOthersPoint(e,t){return e.y=t.map((e=>e.y)).reduce(((e,t)=>e+t)),new K(e,t)}needClip(e){return!1}getTotal(){const e=super.getSum();return Math.max(e,d(this._totalDim,e))}getSum(){const e=super.getSum(),t=d(this._totalDim,e);return Math.max(e,c(t,e))}_doApply(e){super._doApply(e),this._paths=u(e.figure)?e.figure:[e.figure||""],this._setDims(e,"total","width","height"),this._sizeDim=p(e.size||"80%",!1)}_createLegendMarker(e,t){return s.create(e,r.LEGEND_MARKER,0,0,t,t,2)}}Y.type=w,Y.defaults=t(m.defaults,{size:"90%",reversed:!1});class Z extends C{constructor(e){super(e),this.add(this._figureLayer=new h(e,"")),this._figureLayer.add(this._figureView=new A(e,"")),this.add(this._imageLayer=new h(e,"")),this._imageLayer.add(this._imageView=new F(e,!1,"")),this._imageView.setAttr("preserveAspectRatio","none"),this.add(this._boxView=new A(e,"")),this._figureView.setAttr("vector-effect","non-scaling-stroke")}renderSvg(e,t,i,s,r){const o=this._figureView;let n;this._imageLayer.setVis(!1),this._figureLayer.setVis(!0),o.scale(1),o.setPath(s),n=o.getBounds(),e.both?o.scale(r/(e.inverted?n.height:n.width)):e.inverted?o.scale(r/n.height,(e.reversed?-1:1)*this.hPoint/n.width):o.scale(r/n.width,(e.reversed?-1:1)*this.hPoint/n.height),this.$_layoutFigure(e,this._figureLayer,this._figureView,t,i)}renderImage(e,t,i,s,r){const o=this._imageView;this._figureLayer.setVis(!1),this._imageLayer.setVis(!0),o.url=s,o.width=r,o.height=e.both?void 0:Math.abs(this.hPoint),this.$_layoutFigure(e,this._imageLayer,o,t,i)}$_layoutFigure(e,t,i,s,r){const o=i.getBounds(),n=!e.upperClip;let h=this.hPoint,a=!1;e.inverted?e.reversed?n?(i.trans(s+o.height/2,r-h),this._dir="left"):h<0?(i.trans(s+o.height/2,-e.yBase-h),this._dir="left"):(i.trans(s-o.height/2,-e.yBase-h),this._dir="right"):n?(i.trans(s-o.height/2,-h),this._dir="right"):h<0?(i.trans(s+o.height/2,-e.yBase-h),this._dir="left"):(i.trans(s-o.height/2,-e.yBase-h),this._dir="right"):e.reversed?n?(i.trans(s+o.width/2,-h),this._dir="bottom"):h<0?(i.trans(s+o.width/2,e.yLen-e.yBase-h),this._dir="bottom"):(i.trans(s-o.width/2,e.yLen-e.yBase-h),this._dir="top"):n?(i.trans(s-o.width/2,r-h),this._dir="top"):h<0?(i.trans(s+o.width/2,e.yLen-e.yBase-h),this._dir="bottom"):(i.trans(s-o.width/2,e.yLen-e.yBase-h),this._dir="top"),n?(i.rotate(e.reversed?180:0),t.removeAttr("clip-path")):(a=this.point.yValue<e.base,e.reversed&&(a=!a),S.setClipPath(t.dom,a?e.lowerClip:e.upperClip),i.rotate(a?180:0)),this._boxView.setVis(e.both)&&(a||(a=n&&e.reversed),h-=(a?-1:1)*((e.inverted?o.width:o.height)+e.gap),this.$_layoutBox(e,a,s,r,h))}$_layoutBox(e,t,i,s,r){this._boxView.setVis(t?r<0:r>0)&&this._boxView.setPath(B.bar(i-this.wPoint/2,s,this.wPoint,-r,e.rTop,e.rBottom))}}class J extends v{constructor(e){super(e,"rct-pictorialbar-series")}_createBarPool(e,t){return new n(e,Z)}_prepareLayoutPoints(e,t){const i=this.model,s=this._yBase,r=this._baseVal>i._yAxisObj.axisMin();if(this._info={inverted:this._inverted,reversed:this._yReversed,base:this._baseVal,yBase:s,both:"both"===i.getMode(),gap:i.getFigureGap(),yLen:this._yLen,rTop:+i.options.topRadius||0,rBottom:+i.options.bottomRadius||0,upperClip:"",lowerClip:""},r){if(!this._upperClip){const e=this.doc,t=this.dom.querySelector("defs")||e.createElementNS(x,"defs"),i=L.uniqueKey()+"-";this.insertDom(t,this._pointContainer.dom),t.appendChild(this._upperClip=S.createClipRect(e,i+"upper")),t.appendChild(this._lowerClip=S.createClipRect(e,i+"lower"))}const i=this._upperClip.firstElementChild,r=this._lowerClip.firstElementChild;this._inverted?(S.setBounds(i,0,-e,t,e-s),S.setBounds(r,0,-s,t,e)):(S.setBounds(i,0,0,e,t-s),S.setBounds(r,0,t-s,e,s)),this._info.upperClip=this._upperClip.id,this._info.lowerClip=this._lowerClip.id}}_shrinkPoint(e){}_layoutPoint(e,t,i,s,r,o){const n=e.point,h=this.model.getFigure();this._needMask=h&&this._info.both,e.wPoint=r*c(n.width,1),e.hPoint=o,e.x=i,h?e.renderSvg(this._info,i,s,h,this._model.getFigureWidth(r)):e.renderImage(this._info,i,s,this._model.getImage(n),this._model.getFigureWidth(r))}setHoverStyle(e){if(super.setHoverStyle(e),this._needMask){const t=getComputedStyle(e.dom),i="none"!==t.stroke?parseFloat(t.strokeWidth):0;if(this._hoverFigureView.parent.setVis(i>0&&this._info.gap<i)){S.setImportantStyle(e.dom.style,"stroke-width",$(i+i/2|0));let t=0,s=0;switch(e._dir){case"top":case"right":s=-i/2;break;case"bottom":case"left":s=i/2}this._hoverBoxView.setAttribute("transform",`translate(${t}, ${s})`)}}}focusPointView(e,t){t&&this._needMask?this.$_showHoverView(this._hoverPoint=e).setVis(!0):this._hoverFigureView&&(this._hoverFigureView.parent.setVis(!1),this._hoverPoint=null)}_renderSeries(e,t){super._renderSeries(e,t),this._hoverPoint&&this._hoverFigureView&&this._hoverFigureView.parent.visible&&this.$_showHoverView(this._hoverPoint)}$_showHoverView(e){let t=this._hoverFigureView;if(!t){const e=this.doc;let i;this.add(new h(e,"")).add(t=this._hoverFigureView=new h(e,"")),t.parent.dom.style.pointerEvents="none",t.appendDom(i=e.createElementNS(x,"path")),i.style.stroke="none",t.parent.appendDom(i=this._hoverBoxView=e.createElementNS(x,"path")),i.style.stroke="none"}const i=t.dom.firstElementChild,s=this._hoverBoxView;return t.parent.setAttr("clip-path",this._pointContainer.getAttr("clip-path")),t.setAttr("clip-path",e._figureLayer.getAttr("clip-path")),i.setAttribute("d",e._figureView.getAttr("d")),i.style.fill=getComputedStyle(e._figureView.dom).fill,i.setAttribute("transform",e._figureView.getTransform()),S.setVisible(s,e._boxView.visible)&&(s.setAttribute("d",e._boxView.getAttr("d")),s.style.fill=getComputedStyle(e._boxView.dom).fill),this._inverted&&t.parent.setAttr("transform",`rotate(90) translate(${this.height},0) scale(-1, 1)`),t}}class Q extends T{getTooltipPos(){return{x:this.point.xPos+this.parent.parent.tx,y:this.point.yPos+this.parent.parent.ty}}}class X extends D{constructor(e){super(e,"rct-pictorial-series");const t=L.uniqueKey()+"-",i=t+"figure",s=t+"clip",r=t+"hover";this._figurelView=e.createElementNS(x,"use"),this._figurelView.setAttribute("href",`#${i}`),this._figurelView.setAttribute("class","rct-pictorial-series-figure"),this.insertDom(this._figurelView,this._pointContainer.dom);const o=e.createElementNS(x,"defs");this.insertDom(o,this._figurelView),this._sourceView=new A(e),this._sourceView.setAttr("vector-effect","non-scaling-stroke"),this._sourceView.dom.id=i,o.appendChild(this._sourceView.dom);const h=e.createElementNS(x,"use"),a=e.createElementNS(x,"clipPath"),l=e.createElementNS(x,"clipPath");h.setAttribute("href",`#${i}`),a.appendChild(h),a.id=s,o.appendChild(a),l.appendChild(this._hoverRect=e.createElementNS(x,"path")),l.id=r,o.appendChild(l),this._hoverView=e.createElementNS(x,"use"),this._hoverView.setAttribute("href",`#${i}`),this._hoverView.setAttribute("clip-path",`url(#${r}`),this._hoverView.style.stroke="none",this._hoverView.style.fill="none",this.appendDom(this._hoverView),this._pointContainer.add(this._sliceLayer=new E(e,null)),this._pointContainer.setAttr("clip-path",`url(#${s})`),this._slices=new n(this._sliceLayer,Q),this.add(this._lineContainer=new I(e))}_getPointPool(){return this._slices}getClipContainer(){return null}_prepareSeries(e,t){super._prepareSeries(e,t),this.$_prepareSlices(e,t,this._visPoints),this._lineContainer.prepare(t)}_renderSeries(e,t){this.$_renderFigure(this._sourceView,this._model,e,t);const i=this._visPoints,s=this.model.getCenter(e,t),r=this._figurelView.getBoundingClientRect(),o=s.x-r.width/2,n=s.y-r.height/2,h=`translate(${o},${n})`;S.hasFill(this._figurelView)||(this._figurelView.style.fill="transparent"),this._figurelView.setAttribute("transform",h),this._hoverView.setAttribute("transform",h),r.x=o,r.y=n,this.$_layoutSlices(i,r,e,t),this._pointContainer.trans(o,n),this._labelContainer.trans(o,n),this._lineContainer.trans(o,n),this.resize(r.width,r.height),this._rSave=r,this._wSave=e,this._hSave=t}_runShowEffect(e){const t=this.model.options.reversed;e&&N.reveal(this,{from:"column"===this.model.options.direction?t?"right":"left":t?"top":"bottom",view:this._sliceLayer})}_refreshZombie(){this.$_layoutSlices(this._visPoints,this._rSave,this._wSave,this._hSave),this._hoverPoint&&!S.isHidden(this._hoverView)&&this.$_showHoverView(this._hoverPoint)}_animationStarted(e){super._animationStarted(e),this._lineContainer.setVis(this._labelContainer.visible)}setHoverStyle(e){super.setHoverStyle(e);const t=getComputedStyle(e.dom),i="none"!==t.stroke&&parseFloat(t.strokeWidth)>0;S.setVisible(this._hoverView,i)&&Object.assign(this._hoverView.style,{stroke:t.stroke,strokeWidth:t.strokeWidth,strokeDasharray:t.strokeDasharray})}focusPointView(e,t){this._hoverView.style.display=t?"":"none",t&&this.$_showHoverView(e),this._hoverPoint=t?e:null}$_showHoverView(e){this._hoverRect.setAttribute("d",e.getAttr("d"))}$_prepareSlices(e,t,i){this._slices.prepare(i.length,((s,r)=>{const o=s.point=i[r];this._preparePoint(e,t,o,s)}))}$_renderFigure(e,t,i,s){let r,o;e.setPath(t.paths),r=e.getBBox(),o=t.getPictorialSize(r,i,s),e.scale(o.width/r.width,o.height/r.height),k&&this.$_prepareOutline(this._sourceView.dom,i,s,o.width/r.width,o.height/r.height)}$_layoutSlices(e,t,i,s){const r=this._model,o=r.pointLabel,n=r.options.reversed;this.$_calcRates(e),this._lineContainer.setStyleOrClass(o.connector.options.style),"column"===r.options.direction?this.$_renderHorz(n,t,s):this.$_renderVert(n,t,i)}$_calcRates(e){const t=this._zombie,i=this._zombieRate,s=e.length;let r=this.model.getTotal();(isNaN(r)||e.find((e=>e._isDeleted())))&&(r=e.filter((e=>(e.visible||e===t)&&!e.isNull)).map((e=>e.yValue*(e===t?i:e._isDeleted()?e._vr:1))).reduce(((e,t)=>e+t),0)),s>1||s>0&&!t?1==s&&e[0]._isDeleted()||1===s&&e[0]._vr<1?e[0].yRate=1:e.forEach((e=>{const s=R(e.yValue*(e===t?i:e._isDeleted()?e._vr:1)/r)||0;e.yRate=s})):1==s&&(e[0].yRate=R(i))}$_createLabelInfo(e){const{a:t,d:i}=e.getCTM(),{width:s,height:r}=e.getBBox();return{dom:e,sx:t,sy:i,wFigure:s,hFigure:r}}$_renderVert(e,t,i){const s=this.model,r=t.width,o=t.height,n=this._labelViews(),h=s.pointLabel,a="inside"===s.getLabelPos(h),l=h.getOffset(),_=h.getDistance(),d=h.getAlign(),u=null==n?void 0:n.textAlign(),g=[],c=h.options.opposite,p=this._lineContainer.setVis(h.connector.visible)?this._lineContainer:null,y=new H,f=s.getCenter(i,o).x-t.x,w=r/2;let m=e?0:o;const P=n?n.getWidth(0):0,V=g&&!a&&this.$_createLabelInfo(this._sourceView.dom);let b,v;this._slices.forEach((s=>{const h=s.point;if(s.setVis(!h.isNull)){const x=o*h.yRate;if(e?(s.setPath(B.rectangle(0,m,r,x)),h.yPos=m+x/2,m+=x):(h.yPos=m-x/2,m-=x,s.setPath(B.rectangle(0,m,r,x))),h.xPos=w,v=null==p?void 0:p.get(h),n&&(b=n.get(h,0))&&b.visible){if(a){const e=b.isDomAnimating(),t=b.getBBox();!e&&b.layout(u||"center"),null==v||v.setVis(!1),b.trans(h.xPos-t.width/2,h.yPos-t.height/2)}else-1===d?this.$_layoutLabelNearVert(V,s,b,u,c,v,y,r,f,l,_):1==d?this.$_layoutLabelFarVert(V,s,b,u,c,v,y,l,_,P,t,i):this.$_layoutLabelOutVert(V,s,b,u,c,v,y,l,_);b.setContrast(a&&s.dom),g.push(b),b.setPosY(b.ty)}else v&&v.setVis(!1)}}))}$_renderHorz(e,t,i){const s=this.model,r=t.width,o=t.height,n=this._labelViews(),h=s.pointLabel,a="inside"===s.getLabelPos(h),l=h.getOffset(),_=h.getDistance(),d=h.getAlign(),u=null==n?void 0:n.textAlign(),g=[],c=h.options.opposite,p=this._lineContainer.setVis(h.connector.visible)?this._lineContainer:null,y=new H,f=s.getCenter(r,i).y-t.y,w=o/2,m=n?n.getWidth(0):0,P=g&&!a&&this.$_createLabelInfo(this._sourceView.dom);let V,b,v=e?r:0;this._slices.forEach((s=>{const h=s.point;if(s.setVis(!h.isNull)){const x=r*h.yRate;if(e?(h.xPos=v-x/2,v-=x,s.setPath(B.rectangle(v,0,x,o))):(h.xPos=v+x/2,s.setPath(B.rectangle(v,0,x,o)),v+=x),h.yPos=w,b=null==p?void 0:p.get(h),n&&(V=n.get(h,0))&&V.visible){if(a){const e=V.isDomAnimating(),t=V.getBBox();!e&&V.layout(u||"center"),V.trans(h.xPos-t.width/2,h.yPos-t.height/2),null==b||b.setVis(!1)}else-1===d?this.$_layoutLabelNearHorz(P,s,V,u,c,b,y,o,f,l,_):1==d?this.$_layoutLabelFarHorz(P,s,V,u,c,b,y,l,_,m,t,i):this.$_layoutLabelOutHorz(P,s,V,u,c,b,y,l,_);V.setContrast(a&&s.dom),g.push(V),V.setPosY(V.ty)}else b&&b.setVis(!1)}}))}$_prepareOutline(e,t,i,s,r){const o=+new Date,n=this.control.canvasCtx(),h=e.getTotalLength(),a=z(1,Math.round(h/500));let l;n.setTransform(1,0,0,1,0,0),n.clearRect(0,0,t,i),n.scale(s,r),n.fillStyle="red",n.beginPath(),l=e.getPointAtLength(0),n.moveTo(l.x,l.y);for(let t=0;t<h;t+=a)l=e.getPointAtLength(t),n.lineTo(l.x,l.y);n.closePath(),n.fill(),console.log("canvas",+new Date-o,"ms.")}$_calcLabelPosVert(e,t,i){const s=e.dom,r=s.ownerSVGElement.createSVGPoint(),{wFigure:o,sx:n}=e,h=2*(e.sx<0?1:1/e.sx);let a=i?0:e.wFigure;if(r.y=t.point.yPos/e.sy,i){for(;a<o;a+=h)if(r.x=a,s.isPointInFill(r))return a>0&&(r.x-=h/2,s.isPointInFill(r)&&(a=r.x)),a*n}else for(;a>=0;a-=h)if(r.x=a,s.isPointInFill(r))return a<o&&(r.x+=h/2,s.isPointInFill(r)&&(a=r.x)),a*n;return e.wFigure*e.sx/2}$_calcLabelPosVertIE(e,t,i){const s=this.control.canvasCtx(),r={x:0,y:0},{wFigure:o,sx:n}=e,h=2*(n<0?1:1/n);let a=r.y=t.point.yPos,l=i?0:o*n;if(i){for(const e=o*n;l<e;l+=h)if(r.x=l,s.isPointInPath(r.x,a))return l>0&&(r.x-=h/2,s.isPointInPath(r.x,a)&&(l=r.x)),l}else for(;l>=0;l-=h)if(r.x=l,s.isPointInPath(l,a))return l<o*n&&(r.x+=h/2,s.isPointInPath(r.x,a)&&(l=r.x)),l;return o/2}$_layoutLabelOutVert(e,t,i,s,r,o,n,h,a){const l=t.point,_=i.isDomAnimating(),d=i.getBBox(),u=l.yPos;!_&&i.layout(s||(r?"right":"left"));let g=k?this.$_calcLabelPosVertIE(e,t,r):this.$_calcLabelPosVert(e,t,r);o&&(r?o.setLine(n.reset(0,0).line(-a,0).end()):o.setLine(n.reset(0,0).line(a,0).end()),o.trans(g,u)),r?g-=a+h+d.width:g+=a+h,i.trans(g,u-d.height/2)}$_layoutLabelNearVert(e,t,i,s,r,o,n,h,a,l,_){const d=t.point,u=i.isDomAnimating(),g=i.getBBox(),c=d.yPos;!u&&i.layout(s||(r?"right":"left"));const p=k?this.$_calcLabelPosVertIE(e,t,r):this.$_calcLabelPosVert(e,t,r);let y=a;r?y-=h/2:y+=h/2,o&&(r?o.setLine(n.reset(0,0).line(y-p-_,0).end()):o.setLine(n.reset(0,0).line(y+_-p,0).end()),o.trans(p,c)),r?y-=l+_+g.width:y+=_+l,i.trans(y,c-g.height/2)}$_layoutLabelFarVert(e,t,i,s,r,o,n,h,a,l,_,d){const u=t.point,g=i.isDomAnimating(),c=i.getBBox(),p=u.yPos;!g&&i.layout(s||(r?"right":"left"));const y=k?this.$_calcLabelPosVertIE(e,t,r):this.$_calcLabelPosVert(e,t,r);let f;f=r?a+h+l-_.x:d-_.x-a-l-h,o&&(r?o.setLine(n.reset(0,0).line(f-y-a,0).end()):o.setLine(n.reset(0,0).line(f+a-y,0).end()),o.trans(y,p)),r?f-=h+a+c.width:f+=a+h,i.trans(f,p-c.height/2)}$_calcLabelPosHorz(e,t,i){const s=e.dom,r=s.ownerSVGElement.createSVGPoint(),{hFigure:o,sy:n}=e,h=2*(e.sy<0?1:1/e.sy);let a=i?e.hFigure:0;if(r.x=t.point.xPos/e.sx,i){for(;a>=0;a-=h)if(r.y=a,s.isPointInFill(r))return a<e.hFigure&&(r.y+=h/2,s.isPointInFill(r)&&(a=r.y)),a*n}else for(;a<o;a+=h)if(r.y=a,s.isPointInFill(r))return a>0&&(r.y-=h/2,s.isPointInFill(r)&&(a=r.y)),a*n;return e.hFigure*e.sy/2}$_calcLabelPosHorzIE(e,t,i){const s=this.control.canvasCtx(),r={x:0,y:0},{hFigure:o,sy:n}=e,h=2*(e.sy<0?1:1/e.sy);let a=r.x=t.point.xPos,l=i?o*n:0;if(i){for(;l>=0;l-=h)if(r.y=l,s.isPointInPath(a,r.y))return l<o*n&&(r.y+=h/2,s.isPointInPath(a,r.y)&&(l=r.y)),l}else for(;l<o;l+=h)if(r.y=l,s.isPointInPath(a,r.y))return l>0&&(r.y-=h/2,s.isPointInPath(a,r.y)&&(l=r.y)),l;return e.hFigure*e.sy/2}$_layoutLabelOutHorz(e,t,i,s,r,o,n,h,a){const l=t.point,_=i.isDomAnimating(),d=i.getBBox(),u=l.xPos;!_&&i.layout(s);let g=k?this.$_calcLabelPosHorzIE(e,t,r):this.$_calcLabelPosHorz(e,t,r);o&&(r?o.setLine(n.reset(0,0).line(0,a).end()):o.setLine(n.reset(0,0).line(0,-a).end()),o.trans(u,g)),r?g+=a+h:g-=a+h,i.trans(u-d.width/2,r?g:g-d.height)}$_layoutLabelNearHorz(e,t,i,s,r,o,n,h,a,l,_){const d=t.point,u=i.isDomAnimating(),g=i.getBBox(),c=d.xPos;!u&&i.layout(s||(r?"right":"left"));let p=k?this.$_calcLabelPosHorzIE(e,t,r):this.$_calcLabelPosHorz(e,t,r),y=a;r?y+=h/2:y-=h/2,o&&(r?o.setLine(n.reset(0,0).line(0,y+_-p).end()):o.setLine(n.reset(0,0).line(0,y-p-_).end()),o.trans(c,p)),r?y+=_+l:y-=l+_+g.height,i.trans(c-g.width/2,y)}$_layoutLabelFarHorz(e,t,i,s,r,o,n,h,a,l,_,d){const u=t.point,g=i.isDomAnimating(),c=i.getBBox(),p=u.xPos;!g&&i.layout(s||(r?"right":"left"));const y=k?this.$_calcLabelPosHorzIE(e,t,r):this.$_calcLabelPosHorz(e,t,r);let f;f=r?d-_.y-a-l-h:a+h+l-_.y,o&&(r?o.setLine(n.reset(0,0).line(0,f+a-y).end()):o.setLine(n.reset(0,0).line(0,f-y-a).end()),o.trans(p,y)),r?f+=a+h:f-=h+a+c.height,i.trans(p-c.width/2,f)}}function ee(e){(function(e){return e.Series&&e.SeriesView})(e)&&(e.Series.register(M),e.Series.register(U),e.Series.register(Y),e.SeriesView.register([M,G]),e.SeriesView.register([U,J]),e.SeriesView.register([Y,X]))}export{M as PictogramSeries,U as PictorialBarSeries,Y as PictorialSeries,ee as default};
package/split.js CHANGED
@@ -1,6 +1,6 @@
1
1
 
2
2
  /**
3
- * RealChart Split v1.4.12
3
+ * RealChart Split v1.4.13
4
4
  * Copyright (C) 2023-2026 WooriTech Inc.
5
5
  * All Rights Reserved.
6
6
  */
package/split.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
 
2
2
  /**
3
- * RealChart Split v1.4.12
3
+ * RealChart Split v1.4.13
4
4
  * Copyright (C) 2023-2026 WooriTech Inc.
5
5
  * All Rights Reserved.
6
6
  */
package/treemap.js CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  /**
3
- * RealChart Treemap v1.4.12
3
+ * RealChart Treemap v1.4.13
4
4
  * Copyright (C) 2023-2026 WooriTech Inc.
5
5
  * All Rights Reserved.
6
6
  */
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).RealChartTreemap={},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 r extends t.DataPoint{_assignTo(e){return t.assignObj(super._assignTo(e),{id:this.id,group:this.group})}_readArray(e,i){if(i.length<=2)this.isNull=!0;else{const s=i.length>3?1:0;s>0&&(this.x=i[t.pickNum(e.options.xField,0)]),this.y=i[t.pickNum(e.options.yField,0+s)],this.id=t.toStr(i[t.pickNum(e.options.idField,1+s)]),this.group=t.toStr(i[t.pickNum(e.options.groupField,2+s)])}}_readObject(e,i){super._readObject(e,i),this.id=t.toStr(i[e.options.idField]),this.group=t.toStr(i[e.options.groupField])}}class h extends t.ChartItem{constructor(e){super(e.chart),this.level=e,this.floating=!0}}h.defaults=t.extend(t.ChartItem.defaults,{visible:!1});class o{constructor(e){this.point=e}level(){return this.parent?this.parent.level()+1:0}getArea(){return{x:this.x,y:this.y,width:this.width,height:this.height}}setArea(e,t,i,s){this.x=e,this.y=t,this.width=i,this.height=s}getTotal(){return this.children.reduce(((e,t)=>e+t.value),0)}}class n extends t.Series{constructor(){super(...arguments),this._map={},this._levels=1}buildMap(e,i){function s(e){if(e.children){let i=0;e.children.forEach(((e,t)=>{s(e),i+=e.value})),e.value=i,e.children=e.children.sort(((e,t)=>t.value-e.value)),e.children.forEach(((e,t)=>{e.index=t})),o=t.maxv(o,e.level()+1+1)}else h.push(e),e.value=e.point?e.point.yValue:0}const r="vertical"===this._op.startDir||i>e,h=this._leafs=[];let o=1;return this._roots.forEach(((e,t)=>{s(e)})),this._roots=this._roots.sort(((e,t)=>t.value-e.value)),this._roots.forEach(((e,t)=>{e.index=t})),(this[this._op.algorithm]||this.squarify).call(this,this._roots,e,i,r),this._levels=o,{roots:this._roots,leafs:this._leafs}}needAxes(){return!1}canMixWith(e){return!1}_createPoint(e){return new r(e)}_getLabeledPoints(){return this._leafs.map((e=>e.point))}_doPrepareRender(){super._doPrepareRender(),this._roots=this.$_buildTree(this._runPoints)}$_buildTree(e){const t=[],i=[],s=this._map;e.forEach((e=>{if(e.id||!e.isNull){const r=new o(e);e.id&&(s[e.id]=r),e.group?i.push(r):t.push(r)}}));for(let e=i.length-1;e>=0;e--){const r=i[e],h=s[r.point.group];(r.parent=h)?(h.children||(h.children=[]),h.children.push(r),r.children&&i.splice(e,1)):(t.push(r),i.splice(e,1))}return t}$_squarifyRow(e,i,s,r){const h=i.width*i.height,o=i.width,n=i.height;let l=i.x,a=i.y,d=Number.MAX_VALUE,u=0;const c=[];if(2===e.length){return(1===s?o>n:o>=n)?e.forEach((e=>{e.setArea(l,a,o*e.value/r,n),l+=e.width})):e.forEach((e=>{e.setArea(l,a,o,n*e.value/r),a+=e.height})),0}for(;e.length>0;){let p,g,_,f,w;if(p=e.shift(),u+=p.value,f=u*h/r,1===s?(g=f/n,_=n*p.value/u):(_=f/o,g=o*p.value/u),w=t.maxv(g/_,_/g),e.length>0&&w>d)return e.unshift(p),u-=p.value,f=h*u/r,1===s?(_=n,g=f/_):(g=o,_=f/g),c.forEach((e=>{1===s?(e.setArea(l,a,g,n*e.value/u),a+=e.height):(e.setArea(l,a,o*e.value/u,_),l+=e.width)})),1===s?(i.x+=g,i.width-=g):(i.y+=_,i.height-=_),r-u;if(0===e.length)return f=h*u/r,1===s?(_=n,g=f/_):(g=o,_=f/g),c.push(p),c.forEach((e=>{1===s?(e.setArea(l,a,g,n*e.value/u),a+=e.height):(e.setArea(l,a,o*e.value/u,_),l+=e.width)})),0;d=w,c.push(p)}}$_squarify(e,t,i,s){const r=e.slice(0);let h=i?1:0,o=e.reduce(((e,t)=>e+t.value),0);do{o=this.$_squarifyRow(r,t,h,o),s&&(h=1-h)}while(o>0);e.forEach((e=>{e.children&&this.$_squarify(e.children,e.getArea(),!i,!0)}))}squarify(e,t,i,s){this.$_squarify(e,{x:0,y:0,width:t,height:i},s,!0)}strip(e,t,i,s){this.$_squarify(e,{x:0,y:0,width:t,height:i},s,!1)}$_sliceNext(e,t,i,s){if(e.x=t.x,e.y=t.y,1===i){const i=t.height*e.value/s;e.width=t.width,e.height=i,t.y+=i,t.height-=i}else{const i=t.width*e.value/s;e.height=t.height,e.width=i,t.x+=i,t.width-=i}e.children&&this.$_slice(e.children,e.getArea(),0===i,!0)}$_slice(e,t,i,s){let r=e.reduce(((e,t)=>e+t.value),0),h=i?1:0;e.forEach((e=>{this.$_sliceNext(e,t,h,r),r-=e.value,s&&(h=1-h)}))}slice(e,t,i,s){this.$_slice(e,{x:0,y:0,width:t,height:i},s,!1)}sliceDice(e,t,i,s){this.$_slice(e,{x:0,y:0,width:t,height:i},s,!0)}}n.type=t.TreemapSeriesType,n.defaults=t.extend(t.Series.defaults,{idField:"id",groupField:"group",algorithm:"squarify",alternate:!0,groupMode:!0});class l extends t.RectElement{constructor(e){super(e,t.SeriesView.POINT_CLASS)}get point(){return this.node.point}render(e){if(1!==e){const t=Object.assign({},this.node);t.width*=e,t.height*=e,t.x+=(this.node.width-t.width)/2,t.y+=(this.node.height-t.height)/2,this.setRect(t)}else this.setRect(this.node)}}class a extends t.SeriesView{constructor(e){super(e,"rct-treemap-series"),this._nodeViews=new t.ElementPool(this._pointContainer,l)}_lazyPrepareLabels(){return!0}_getPointPool(){return this._nodeViews}_prepareSeries(e,t){}_renderSeries(e,t){this._pointContainer.invert(this._inverted,t),this._rootView?this.$_renderGroups(e,t):this.$_renderLeafs(e,t)}_runShowEffect(e){e&&t.SeriesAnimation.grow(this)}_doViewRateChanged(e){this._rootView?this.$_renderGroups(this.width,this.height):this.$_renderLeafs(this.width,this.height)}$_renderLeafs(e,i){const s=this.model,r=s._xAxisObj,h=s._yAxisObj,o=this._inverted;s.pointLabel;const n=this._getGrowRate(),l=this._labelViews(),a=o?e:i,d=o?i:e,{roots:u,leafs:c}=s.buildMap(d,a),p=new t.Color(s._calcedColor),g=[{fill:""}];let _;null==l||l.prepare(this.doc,this);const f=this._labelContainer._textAlign;this._nodeViews.prepare(c.length,((e,i,u)=>{const w=c[i],y=w.point,x=w.parent;let v=p;x&&(!x._color&&x.point.color?v=x._color=new t.Color(x.point.color):x._color&&(v=x._color)),e.node=w,g[0].fill=v.brighten(w.index/u).toString(),this._setPointStyle(e,s,y,g),r.options.reversed&&(w.x=d-w.x-w.width),h.options.reversed&&(w.y=a-w.y-w.height),o&&(w.y=w.y-a),e.render(n);let b=w.x+w.width/2,m=w.y+w.height/2;if(y.xPos=o?-w.y-w.height/2:b,y.yPos=o?d-w.x-w.width/2:m,l&&(_=l.get(y,0))){_.setContrast(e.dom).layout(f);const t=_.getBBox();_.setVis(w.width>=t.height&&w.height>=t.height)&&(o?(b=-w.y-w.height/2-t.width/2,m=d-w.x-(w.width+t.height)/2):(b-=t.width/2,m-=t.height/2),_.trans(b,m),this._layoutLabelRotation(_))}}))}$_renderGroups(e,t){}}function d(e){(function(e){return e.Series&&e.SeriesView})(e)&&(e.Series.register(n),e.SeriesView.register([n,a]))}d(s),e.TreemapSeries=n,e.default=d,Object.defineProperty(e,"__esModule",{value:!0})}));
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).RealChartTreemap={},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 r extends t.DataPoint{_assignTo(e){return t.assignObj(super._assignTo(e),{id:this.id,group:this.group})}_readArray(e,i){if(i.length<=2)this.isNull=!0;else{const s=i.length>3?1:0;s>0&&(this.x=i[t.pickNum(e.options.xField,0)]),this.y=i[t.pickNum(e.options.yField,0+s)],this.id=t.toStr(i[t.pickNum(e.options.idField,1+s)]),this.group=t.toStr(i[t.pickNum(e.options.groupField,2+s)])}}_readObject(e,i){super._readObject(e,i),this.id=t.toStr(i[e.options.idField]),this.group=t.toStr(i[e.options.groupField])}}class h extends t.ChartItem{constructor(e){super(e.chart),this.level=e,this.floating=!0}}h.defaults=t.extend(t.ChartItem.defaults,{visible:!1});class o{constructor(e){this.point=e}level(){return this.parent?this.parent.level()+1:0}getArea(){return{x:this.x,y:this.y,width:this.width,height:this.height}}setArea(e,t,i,s){this.x=e,this.y=t,this.width=i,this.height=s}getTotal(){return this.children.reduce(((e,t)=>e+t.value),0)}}class n extends t.Series{constructor(){super(...arguments),this._map={},this._levels=1}buildMap(e,i){function s(e){if(e.children){let i=0;e.children.forEach(((e,t)=>{s(e),i+=e.value})),e.value=i,e.children=e.children.sort(((e,t)=>t.value-e.value)),e.children.forEach(((e,t)=>{e.index=t})),o=t.maxv(o,e.level()+1+1)}else h.push(e),e.value=e.point?e.point.yValue:0}const r="vertical"===this._op.startDir||i>e,h=this._leafs=[];let o=1;return this._roots.forEach(((e,t)=>{s(e)})),this._roots=this._roots.sort(((e,t)=>t.value-e.value)),this._roots.forEach(((e,t)=>{e.index=t})),(this[this._op.algorithm]||this.squarify).call(this,this._roots,e,i,r),this._levels=o,{roots:this._roots,leafs:this._leafs}}needAxes(){return!1}canMixWith(e){return!1}_createPoint(e){return new r(e)}_getLabeledPoints(){return this._leafs.map((e=>e.point))}_doPrepareRender(){super._doPrepareRender(),this._roots=this.$_buildTree(this._runPoints)}$_buildTree(e){const t=[],i=[],s=this._map;e.forEach((e=>{if(e.id||!e.isNull){const r=new o(e);e.id&&(s[e.id]=r),e.group?i.push(r):t.push(r)}}));for(let e=i.length-1;e>=0;e--){const r=i[e],h=s[r.point.group];(r.parent=h)?(h.children||(h.children=[]),h.children.push(r),r.children&&i.splice(e,1)):(t.push(r),i.splice(e,1))}return t}$_squarifyRow(e,i,s,r){const h=i.width*i.height,o=i.width,n=i.height;let l=i.x,a=i.y,d=Number.MAX_VALUE,u=0;const c=[];if(2===e.length){return(1===s?o>n:o>=n)?e.forEach((e=>{e.setArea(l,a,o*e.value/r,n),l+=e.width})):e.forEach((e=>{e.setArea(l,a,o,n*e.value/r),a+=e.height})),0}for(;e.length>0;){let p,g,_,f,w;if(p=e.shift(),u+=p.value,f=u*h/r,1===s?(g=f/n,_=n*p.value/u):(_=f/o,g=o*p.value/u),w=t.maxv(g/_,_/g),e.length>0&&w>d)return e.unshift(p),u-=p.value,f=h*u/r,1===s?(_=n,g=f/_):(g=o,_=f/g),c.forEach((e=>{1===s?(e.setArea(l,a,g,n*e.value/u),a+=e.height):(e.setArea(l,a,o*e.value/u,_),l+=e.width)})),1===s?(i.x+=g,i.width-=g):(i.y+=_,i.height-=_),r-u;if(0===e.length)return f=h*u/r,1===s?(_=n,g=f/_):(g=o,_=f/g),c.push(p),c.forEach((e=>{1===s?(e.setArea(l,a,g,n*e.value/u),a+=e.height):(e.setArea(l,a,o*e.value/u,_),l+=e.width)})),0;d=w,c.push(p)}}$_squarify(e,t,i,s){const r=e.slice(0);let h=i?1:0,o=e.reduce(((e,t)=>e+t.value),0);do{o=this.$_squarifyRow(r,t,h,o),s&&(h=1-h)}while(o>0);e.forEach((e=>{e.children&&this.$_squarify(e.children,e.getArea(),!i,!0)}))}squarify(e,t,i,s){this.$_squarify(e,{x:0,y:0,width:t,height:i},s,!0)}strip(e,t,i,s){this.$_squarify(e,{x:0,y:0,width:t,height:i},s,!1)}$_sliceNext(e,t,i,s){if(e.x=t.x,e.y=t.y,1===i){const i=t.height*e.value/s;e.width=t.width,e.height=i,t.y+=i,t.height-=i}else{const i=t.width*e.value/s;e.height=t.height,e.width=i,t.x+=i,t.width-=i}e.children&&this.$_slice(e.children,e.getArea(),0===i,!0)}$_slice(e,t,i,s){let r=e.reduce(((e,t)=>e+t.value),0),h=i?1:0;e.forEach((e=>{this.$_sliceNext(e,t,h,r),r-=e.value,s&&(h=1-h)}))}slice(e,t,i,s){this.$_slice(e,{x:0,y:0,width:t,height:i},s,!1)}sliceDice(e,t,i,s){this.$_slice(e,{x:0,y:0,width:t,height:i},s,!0)}}n.type=t.TreemapSeriesType,n.defaults=t.extend(t.Series.defaults,{idField:"id",groupField:"group",algorithm:"squarify",alternate:!0,groupMode:!0});class l extends t.RectElement{constructor(e){super(e,t.SeriesView.POINT_CLASS)}get point(){return this.node.point}render(e){if(1!==e){const t=Object.assign({},this.node);t.width*=e,t.height*=e,t.x+=(this.node.width-t.width)/2,t.y+=(this.node.height-t.height)/2,this.setRect(t)}else this.setRect(this.node)}}class a extends t.SeriesView{constructor(e){super(e,"rct-treemap-series"),this._nodeViews=new t.PointViewPool(this._pointContainer,l)}_lazyPrepareLabels(){return!0}_getPointPool(){return this._nodeViews}_prepareSeries(e,t){}_renderSeries(e,t){this._pointContainer.invert(this._inverted,t),this._rootView?this.$_renderGroups(e,t):this.$_renderLeafs(e,t)}_runShowEffect(e){e&&t.SeriesAnimation.grow(this)}_doViewRateChanged(e){this._rootView?this.$_renderGroups(this.width,this.height):this.$_renderLeafs(this.width,this.height)}$_renderLeafs(e,i){const s=this.model,r=s._xAxisObj,h=s._yAxisObj,o=this._inverted;s.pointLabel;const n=this._getGrowRate(),l=this._labelViews(),a=o?e:i,d=o?i:e,{roots:u,leafs:c}=s.buildMap(d,a),p=new t.Color(s._calcedColor),g=[{fill:""}];let _;null==l||l.prepare(this.doc,this);const f=this._labelContainer._textAlign;this._nodeViews.prepare(c.length,((e,i,u)=>{const w=c[i],y=w.point,x=w.parent;let v=p;x&&(!x._color&&x.point.color?v=x._color=new t.Color(x.point.color):x._color&&(v=x._color)),e.node=w,g[0].fill=v.brighten(w.index/u).toString(),this._setPointStyle(e,s,y,g),r.options.reversed&&(w.x=d-w.x-w.width),h.options.reversed&&(w.y=a-w.y-w.height),o&&(w.y=w.y-a),e.render(n);let b=w.x+w.width/2,m=w.y+w.height/2;if(y.xPos=o?-w.y-w.height/2:b,y.yPos=o?d-w.x-w.width/2:m,l&&(_=l.get(y,0))){_.setContrast(e.dom).layout(f);const t=_.getBBox();_.setVis(w.width>=t.height&&w.height>=t.height)&&(o?(b=-w.y-w.height/2-t.width/2,m=d-w.x-(w.width+t.height)/2):(b-=t.width/2,m-=t.height/2),_.trans(b,m),this._layoutLabelRotation(_))}}))}$_renderGroups(e,t){}}function d(e){(function(e){return e.Series&&e.SeriesView})(e)&&(e.Series.register(n),e.SeriesView.register([n,a]))}d(s),e.TreemapSeries=n,e.default=d,Object.defineProperty(e,"__esModule",{value:!0})}));
package/treemap.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  /**
3
- * RealChart Treemap v1.4.12
3
+ * RealChart Treemap v1.4.13
4
4
  * Copyright (C) 2023-2026 WooriTech Inc.
5
5
  * All Rights Reserved.
6
6
  */
7
- import{extend as e,ChartItem as t,TreemapSeriesType as i,Series as s,maxv as h,DataPoint as r,assignObj as o,pickNum as n,toStr as l,SeriesView as a,ElementPool as d,SeriesAnimation as u,Color as c,RectElement as p}from"./index.mjs";class _ extends r{_assignTo(e){return o(super._assignTo(e),{id:this.id,group:this.group})}_readArray(e,t){if(t.length<=2)this.isNull=!0;else{const i=t.length>3?1:0;i>0&&(this.x=t[n(e.options.xField,0)]),this.y=t[n(e.options.yField,0+i)],this.id=l(t[n(e.options.idField,1+i)]),this.group=l(t[n(e.options.groupField,2+i)])}}_readObject(e,t){super._readObject(e,t),this.id=l(t[e.options.idField]),this.group=l(t[e.options.groupField])}}(class extends t{constructor(e){super(e.chart),this.level=e,this.floating=!0}}).defaults=e(t.defaults,{visible:!1});class g{constructor(e){this.point=e}level(){return this.parent?this.parent.level()+1:0}getArea(){return{x:this.x,y:this.y,width:this.width,height:this.height}}setArea(e,t,i,s){this.x=e,this.y=t,this.width=i,this.height=s}getTotal(){return this.children.reduce(((e,t)=>e+t.value),0)}}class f extends s{constructor(){super(...arguments),this._map={},this._levels=1}buildMap(e,t){function i(e){if(e.children){let t=0;e.children.forEach(((e,s)=>{i(e),t+=e.value})),e.value=t,e.children=e.children.sort(((e,t)=>t.value-e.value)),e.children.forEach(((e,t)=>{e.index=t})),o=h(o,e.level()+1+1)}else r.push(e),e.value=e.point?e.point.yValue:0}const s="vertical"===this._op.startDir||t>e,r=this._leafs=[];let o=1;return this._roots.forEach(((e,t)=>{i(e)})),this._roots=this._roots.sort(((e,t)=>t.value-e.value)),this._roots.forEach(((e,t)=>{e.index=t})),(this[this._op.algorithm]||this.squarify).call(this,this._roots,e,t,s),this._levels=o,{roots:this._roots,leafs:this._leafs}}needAxes(){return!1}canMixWith(e){return!1}_createPoint(e){return new _(e)}_getLabeledPoints(){return this._leafs.map((e=>e.point))}_doPrepareRender(){super._doPrepareRender(),this._roots=this.$_buildTree(this._runPoints)}$_buildTree(e){const t=[],i=[],s=this._map;e.forEach((e=>{if(e.id||!e.isNull){const h=new g(e);e.id&&(s[e.id]=h),e.group?i.push(h):t.push(h)}}));for(let e=i.length-1;e>=0;e--){const h=i[e],r=s[h.point.group];(h.parent=r)?(r.children||(r.children=[]),r.children.push(h),h.children&&i.splice(e,1)):(t.push(h),i.splice(e,1))}return t}$_squarifyRow(e,t,i,s){const r=t.width*t.height,o=t.width,n=t.height;let l=t.x,a=t.y,d=Number.MAX_VALUE,u=0;const c=[];if(2===e.length){return(1===i?o>n:o>=n)?e.forEach((e=>{e.setArea(l,a,o*e.value/s,n),l+=e.width})):e.forEach((e=>{e.setArea(l,a,o,n*e.value/s),a+=e.height})),0}for(;e.length>0;){let p,_,g,f,w;if(p=e.shift(),u+=p.value,f=u*r/s,1===i?(_=f/n,g=n*p.value/u):(g=f/o,_=o*p.value/u),w=h(_/g,g/_),e.length>0&&w>d)return e.unshift(p),u-=p.value,f=r*u/s,1===i?(g=n,_=f/g):(_=o,g=f/_),c.forEach((e=>{1===i?(e.setArea(l,a,_,n*e.value/u),a+=e.height):(e.setArea(l,a,o*e.value/u,g),l+=e.width)})),1===i?(t.x+=_,t.width-=_):(t.y+=g,t.height-=g),s-u;if(0===e.length)return f=r*u/s,1===i?(g=n,_=f/g):(_=o,g=f/_),c.push(p),c.forEach((e=>{1===i?(e.setArea(l,a,_,n*e.value/u),a+=e.height):(e.setArea(l,a,o*e.value/u,g),l+=e.width)})),0;d=w,c.push(p)}}$_squarify(e,t,i,s){const h=e.slice(0);let r=i?1:0,o=e.reduce(((e,t)=>e+t.value),0);do{o=this.$_squarifyRow(h,t,r,o),s&&(r=1-r)}while(o>0);e.forEach((e=>{e.children&&this.$_squarify(e.children,e.getArea(),!i,!0)}))}squarify(e,t,i,s){this.$_squarify(e,{x:0,y:0,width:t,height:i},s,!0)}strip(e,t,i,s){this.$_squarify(e,{x:0,y:0,width:t,height:i},s,!1)}$_sliceNext(e,t,i,s){if(e.x=t.x,e.y=t.y,1===i){const i=t.height*e.value/s;e.width=t.width,e.height=i,t.y+=i,t.height-=i}else{const i=t.width*e.value/s;e.height=t.height,e.width=i,t.x+=i,t.width-=i}e.children&&this.$_slice(e.children,e.getArea(),0===i,!0)}$_slice(e,t,i,s){let h=e.reduce(((e,t)=>e+t.value),0),r=i?1:0;e.forEach((e=>{this.$_sliceNext(e,t,r,h),h-=e.value,s&&(r=1-r)}))}slice(e,t,i,s){this.$_slice(e,{x:0,y:0,width:t,height:i},s,!1)}sliceDice(e,t,i,s){this.$_slice(e,{x:0,y:0,width:t,height:i},s,!0)}}f.type=i,f.defaults=e(s.defaults,{idField:"id",groupField:"group",algorithm:"squarify",alternate:!0,groupMode:!0});class w extends p{constructor(e){super(e,a.POINT_CLASS)}get point(){return this.node.point}render(e){if(1!==e){const t=Object.assign({},this.node);t.width*=e,t.height*=e,t.x+=(this.node.width-t.width)/2,t.y+=(this.node.height-t.height)/2,this.setRect(t)}else this.setRect(this.node)}}class x extends a{constructor(e){super(e,"rct-treemap-series"),this._nodeViews=new d(this._pointContainer,w)}_lazyPrepareLabels(){return!0}_getPointPool(){return this._nodeViews}_prepareSeries(e,t){}_renderSeries(e,t){this._pointContainer.invert(this._inverted,t),this._rootView?this.$_renderGroups(e,t):this.$_renderLeafs(e,t)}_runShowEffect(e){e&&u.grow(this)}_doViewRateChanged(e){this._rootView?this.$_renderGroups(this.width,this.height):this.$_renderLeafs(this.width,this.height)}$_renderLeafs(e,t){const i=this.model,s=i._xAxisObj,h=i._yAxisObj,r=this._inverted;i.pointLabel;const o=this._getGrowRate(),n=this._labelViews(),l=r?e:t,a=r?t:e,{roots:d,leafs:u}=i.buildMap(a,l),p=new c(i._calcedColor),_=[{fill:""}];let g;null==n||n.prepare(this.doc,this);const f=this._labelContainer._textAlign;this._nodeViews.prepare(u.length,((e,t,d)=>{const w=u[t],x=w.point,y=w.parent;let v=p;y&&(!y._color&&y.point.color?v=y._color=new c(y.point.color):y._color&&(v=y._color)),e.node=w,_[0].fill=v.brighten(w.index/d).toString(),this._setPointStyle(e,i,x,_),s.options.reversed&&(w.x=a-w.x-w.width),h.options.reversed&&(w.y=l-w.y-w.height),r&&(w.y=w.y-l),e.render(o);let $=w.x+w.width/2,b=w.y+w.height/2;if(x.xPos=r?-w.y-w.height/2:$,x.yPos=r?a-w.x-w.width/2:b,n&&(g=n.get(x,0))){g.setContrast(e.dom).layout(f);const t=g.getBBox();g.setVis(w.width>=t.height&&w.height>=t.height)&&(r?($=-w.y-w.height/2-t.width/2,b=a-w.x-(w.width+t.height)/2):($-=t.width/2,b-=t.height/2),g.trans($,b),this._layoutLabelRotation(g))}}))}$_renderGroups(e,t){}}function y(e){(function(e){return e.Series&&e.SeriesView})(e)&&(e.Series.register(f),e.SeriesView.register([f,x]))}export{f as TreemapSeries,y as default};
7
+ import{extend as e,ChartItem as t,TreemapSeriesType as i,Series as s,maxv as h,DataPoint as r,assignObj as o,pickNum as n,toStr as l,SeriesView as a,PointViewPool as d,SeriesAnimation as u,Color as c,RectElement as p}from"./index.mjs";class _ extends r{_assignTo(e){return o(super._assignTo(e),{id:this.id,group:this.group})}_readArray(e,t){if(t.length<=2)this.isNull=!0;else{const i=t.length>3?1:0;i>0&&(this.x=t[n(e.options.xField,0)]),this.y=t[n(e.options.yField,0+i)],this.id=l(t[n(e.options.idField,1+i)]),this.group=l(t[n(e.options.groupField,2+i)])}}_readObject(e,t){super._readObject(e,t),this.id=l(t[e.options.idField]),this.group=l(t[e.options.groupField])}}(class extends t{constructor(e){super(e.chart),this.level=e,this.floating=!0}}).defaults=e(t.defaults,{visible:!1});class g{constructor(e){this.point=e}level(){return this.parent?this.parent.level()+1:0}getArea(){return{x:this.x,y:this.y,width:this.width,height:this.height}}setArea(e,t,i,s){this.x=e,this.y=t,this.width=i,this.height=s}getTotal(){return this.children.reduce(((e,t)=>e+t.value),0)}}class f extends s{constructor(){super(...arguments),this._map={},this._levels=1}buildMap(e,t){function i(e){if(e.children){let t=0;e.children.forEach(((e,s)=>{i(e),t+=e.value})),e.value=t,e.children=e.children.sort(((e,t)=>t.value-e.value)),e.children.forEach(((e,t)=>{e.index=t})),o=h(o,e.level()+1+1)}else r.push(e),e.value=e.point?e.point.yValue:0}const s="vertical"===this._op.startDir||t>e,r=this._leafs=[];let o=1;return this._roots.forEach(((e,t)=>{i(e)})),this._roots=this._roots.sort(((e,t)=>t.value-e.value)),this._roots.forEach(((e,t)=>{e.index=t})),(this[this._op.algorithm]||this.squarify).call(this,this._roots,e,t,s),this._levels=o,{roots:this._roots,leafs:this._leafs}}needAxes(){return!1}canMixWith(e){return!1}_createPoint(e){return new _(e)}_getLabeledPoints(){return this._leafs.map((e=>e.point))}_doPrepareRender(){super._doPrepareRender(),this._roots=this.$_buildTree(this._runPoints)}$_buildTree(e){const t=[],i=[],s=this._map;e.forEach((e=>{if(e.id||!e.isNull){const h=new g(e);e.id&&(s[e.id]=h),e.group?i.push(h):t.push(h)}}));for(let e=i.length-1;e>=0;e--){const h=i[e],r=s[h.point.group];(h.parent=r)?(r.children||(r.children=[]),r.children.push(h),h.children&&i.splice(e,1)):(t.push(h),i.splice(e,1))}return t}$_squarifyRow(e,t,i,s){const r=t.width*t.height,o=t.width,n=t.height;let l=t.x,a=t.y,d=Number.MAX_VALUE,u=0;const c=[];if(2===e.length){return(1===i?o>n:o>=n)?e.forEach((e=>{e.setArea(l,a,o*e.value/s,n),l+=e.width})):e.forEach((e=>{e.setArea(l,a,o,n*e.value/s),a+=e.height})),0}for(;e.length>0;){let p,_,g,f,w;if(p=e.shift(),u+=p.value,f=u*r/s,1===i?(_=f/n,g=n*p.value/u):(g=f/o,_=o*p.value/u),w=h(_/g,g/_),e.length>0&&w>d)return e.unshift(p),u-=p.value,f=r*u/s,1===i?(g=n,_=f/g):(_=o,g=f/_),c.forEach((e=>{1===i?(e.setArea(l,a,_,n*e.value/u),a+=e.height):(e.setArea(l,a,o*e.value/u,g),l+=e.width)})),1===i?(t.x+=_,t.width-=_):(t.y+=g,t.height-=g),s-u;if(0===e.length)return f=r*u/s,1===i?(g=n,_=f/g):(_=o,g=f/_),c.push(p),c.forEach((e=>{1===i?(e.setArea(l,a,_,n*e.value/u),a+=e.height):(e.setArea(l,a,o*e.value/u,g),l+=e.width)})),0;d=w,c.push(p)}}$_squarify(e,t,i,s){const h=e.slice(0);let r=i?1:0,o=e.reduce(((e,t)=>e+t.value),0);do{o=this.$_squarifyRow(h,t,r,o),s&&(r=1-r)}while(o>0);e.forEach((e=>{e.children&&this.$_squarify(e.children,e.getArea(),!i,!0)}))}squarify(e,t,i,s){this.$_squarify(e,{x:0,y:0,width:t,height:i},s,!0)}strip(e,t,i,s){this.$_squarify(e,{x:0,y:0,width:t,height:i},s,!1)}$_sliceNext(e,t,i,s){if(e.x=t.x,e.y=t.y,1===i){const i=t.height*e.value/s;e.width=t.width,e.height=i,t.y+=i,t.height-=i}else{const i=t.width*e.value/s;e.height=t.height,e.width=i,t.x+=i,t.width-=i}e.children&&this.$_slice(e.children,e.getArea(),0===i,!0)}$_slice(e,t,i,s){let h=e.reduce(((e,t)=>e+t.value),0),r=i?1:0;e.forEach((e=>{this.$_sliceNext(e,t,r,h),h-=e.value,s&&(r=1-r)}))}slice(e,t,i,s){this.$_slice(e,{x:0,y:0,width:t,height:i},s,!1)}sliceDice(e,t,i,s){this.$_slice(e,{x:0,y:0,width:t,height:i},s,!0)}}f.type=i,f.defaults=e(s.defaults,{idField:"id",groupField:"group",algorithm:"squarify",alternate:!0,groupMode:!0});class w extends p{constructor(e){super(e,a.POINT_CLASS)}get point(){return this.node.point}render(e){if(1!==e){const t=Object.assign({},this.node);t.width*=e,t.height*=e,t.x+=(this.node.width-t.width)/2,t.y+=(this.node.height-t.height)/2,this.setRect(t)}else this.setRect(this.node)}}class x extends a{constructor(e){super(e,"rct-treemap-series"),this._nodeViews=new d(this._pointContainer,w)}_lazyPrepareLabels(){return!0}_getPointPool(){return this._nodeViews}_prepareSeries(e,t){}_renderSeries(e,t){this._pointContainer.invert(this._inverted,t),this._rootView?this.$_renderGroups(e,t):this.$_renderLeafs(e,t)}_runShowEffect(e){e&&u.grow(this)}_doViewRateChanged(e){this._rootView?this.$_renderGroups(this.width,this.height):this.$_renderLeafs(this.width,this.height)}$_renderLeafs(e,t){const i=this.model,s=i._xAxisObj,h=i._yAxisObj,r=this._inverted;i.pointLabel;const o=this._getGrowRate(),n=this._labelViews(),l=r?e:t,a=r?t:e,{roots:d,leafs:u}=i.buildMap(a,l),p=new c(i._calcedColor),_=[{fill:""}];let g;null==n||n.prepare(this.doc,this);const f=this._labelContainer._textAlign;this._nodeViews.prepare(u.length,((e,t,d)=>{const w=u[t],x=w.point,y=w.parent;let v=p;y&&(!y._color&&y.point.color?v=y._color=new c(y.point.color):y._color&&(v=y._color)),e.node=w,_[0].fill=v.brighten(w.index/d).toString(),this._setPointStyle(e,i,x,_),s.options.reversed&&(w.x=a-w.x-w.width),h.options.reversed&&(w.y=l-w.y-w.height),r&&(w.y=w.y-l),e.render(o);let $=w.x+w.width/2,b=w.y+w.height/2;if(x.xPos=r?-w.y-w.height/2:$,x.yPos=r?a-w.x-w.width/2:b,n&&(g=n.get(x,0))){g.setContrast(e.dom).layout(f);const t=g.getBBox();g.setVis(w.width>=t.height&&w.height>=t.height)&&(r?($=-w.y-w.height/2-t.width/2,b=a-w.x-(w.width+t.height)/2):($-=t.width/2,b-=t.height/2),g.trans($,b),this._layoutLabelRotation(g))}}))}$_renderGroups(e,t){}}function y(e){(function(e){return e.Series&&e.SeriesView})(e)&&(e.Series.register(f),e.SeriesView.register([f,x]))}export{f as TreemapSeries,y as default};
package/vector.js CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  /**
3
- * RealChart Vector v1.4.12
3
+ * RealChart Vector v1.4.13
4
4
  * Copyright (C) 2023-2026 WooriTech Inc.
5
5
  * All Rights Reserved.
6
6
  */
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).RealChartVector={},e.RealChart)}(this,(function(e,t){"use strict";function s(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(s){if("default"!==s){var n=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(t,s,n.get?n:{enumerable:!0,get:function(){return e[s]}})}})),t.default=e,Object.freeze(t)}var n=s(t);class i extends t.DataPoint{_assignTo(e){return t.assignObj(super._assignTo(e),{length:this.length,angle:this.angle,lengthValue:this.lengthValue,angleValue:this.angleValue})}_valuesChangd(e){return this.length!==e.length||this.angle!==e.angle||super._valuesChangd(e)}_readArray(e,s){if(s.length<=2)this.isNull=!0;else{const n=s.length>3?1:0;n>0&&(this.x=s[t.pickNum(e.options.xField,0)]),this.y=s[t.pickNum(e.options.yField,0+n)],this.length=s[t.pickNum(e.options.lengthField,1+n)],this.angle=s[t.pickNum(e.options.angleField,2+n)]}}_readObject(e,s){super._readObject(e,s),this.length=t.pickProp(s[e.options.lengthField],s.length),this.angle=t.pickProp(s[e.options.angleField],s.angle),this.y=t.pickProp3(e._yFielder(s),s.y,s.value)}_readSingle(e){super._readSingle(e),this.length=this.angle=this.y}parse(e){super.parse(e),this.isNull||(this.isNull=isNaN(this.lengthValue)||isNaN(this.angleValue))}initValues(){this.lengthValue=parseFloat(this.length),this.angleValue=parseFloat(this.angle)}initPrev(e,t){t.yValue=this.yValue,t.lengthValue=.001}applyValueRate(e,s){this.lengthValue=t.incv(e.lengthValue,this.lengthValue,s)}}class r extends t.ConnectableSeries{_createPoint(e){return new i(e)}_doPrepareRender(){super._doPrepareRender();const e=this._runPoints;if(e.length>0){const s=this._op.maxLength,n=this._op.origin,i=e.map((e=>e.length)).reduce(((e,s)=>t.maxv(e,s)));e.forEach((e=>{const t=e.length/i;switch(e._len=t*s,n){case"start":e._off=-e._len/2;break;case"end":e._off=e._len/2;break;default:e._off=0}}))}}_createLegendMarker(e,s){const n=.3,i=.7*s,r=[0,-n*s,-.2*s,-n*s,0,-.6*s,.2*s,-n*s,0,-n*s,0,.6*s],a=["M",r[0],r[1]+i];for(let e=2;e<r.length;e+=2)a.push("L",r[e],r[e+1]+i);const o=new t.PathElement(e,t.Series.LEGEND_MARKER).setPath(a);return o.setStyle("strokeWidth","2px"),o.rotation=30,o}}r.type=t.VectorSeriesType,r.defaults=t.extend(t.Series.defaults,{origin:"center",maxLength:20,startAngle:0,arrowHead:"close"});class a extends t.PointElement{layout(e,t,s){const n=this.point._len,i=n*s,r=.5;let a,o=(n-i)/2;switch(e){case"none":a=[0,o-r*i,0,o+r*i];break;case"open":const e=.15,t=.45,s=.2;a=[0,o-t*i,0-e*i,o-s*i,0,o-r*i,0+e*i,o-s*i,0,o-t*i,0,o+r*i];break;default:const n=.1,l=.3;a=[0,o-l*i,0-n*i,o-l*i,0,o-r*i,0+n*i,o-l*i,0,o-l*i,0,o+r*i]}const l=this.point._off*s,h=["M",a[0],a[1]+l];for(let e=2;e<a.length;e+=2)h.push("L",a[e],a[e+1]+l);this.rotation=t,this.setPath(h)}}class o extends t.SeriesView{constructor(e){super(e,"rct-vector-series"),this._arrows=new t.ElementPool(this._pointContainer,a)}_getPointPool(){return this._arrows}_prepareSeries(e,t){this.$_prepareArrows(t,this._visPoints)}_renderSeries(e,t){const s=this.model;let n=s.options.startAngle;const i=s.options.arrowHead,r=s._xAxisObj,a=s._yAxisObj,o=this._inverted,l=o?e:t,h=o?t:e,u=this._getGrowRate(),g=o?0:t,c=r.options.reversed?-1:1,p=a.options.reversed;this._pointContainer.invert(o,t),this._arrows.forEach((e=>{const t=e.point;if(e.setVis(!t.isNull)){const s=r.getPos(h,t.xValue),d=g-a.getPos(l,t.yValue);let _=n+t.angleValue*c;p&&(_=180-_),t.xPos=o?g+a.getPos(l,t.yValue):s,t.yPos=o?h-r.getPos(h,t.xValue):d,e.trans(s,d),e.layout(i,_,u)}}))}_runShowEffect(e){e&&t.SeriesAnimation.grow(this)}_doViewRateChanged(e){this._renderSeries(this.width,this.height)}getPointsAt(e,t){return[]}$_prepareArrows(e,t){this._arrows.prepare(t.length,((s,n)=>{const i=s.point=t[n];this._setPointStyle(s,e,i)}))}}function l(e){(function(e){return e.Series&&e.SeriesView})(e)&&(e.Series.register(r),e.SeriesView.register([r,o]))}l(n),e.VectorSeries=r,e.default=l,Object.defineProperty(e,"__esModule",{value:!0})}));
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).RealChartVector={},e.RealChart)}(this,(function(e,t){"use strict";function s(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(s){if("default"!==s){var n=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(t,s,n.get?n:{enumerable:!0,get:function(){return e[s]}})}})),t.default=e,Object.freeze(t)}var n=s(t);class i extends t.DataPoint{_assignTo(e){return t.assignObj(super._assignTo(e),{length:this.length,angle:this.angle,lengthValue:this.lengthValue,angleValue:this.angleValue})}_valuesChangd(e){return this.length!==e.length||this.angle!==e.angle||super._valuesChangd(e)}_readArray(e,s){if(s.length<=2)this.isNull=!0;else{const n=s.length>3?1:0;n>0&&(this.x=s[t.pickNum(e.options.xField,0)]),this.y=s[t.pickNum(e.options.yField,0+n)],this.length=s[t.pickNum(e.options.lengthField,1+n)],this.angle=s[t.pickNum(e.options.angleField,2+n)]}}_readObject(e,s){super._readObject(e,s),this.length=t.pickProp(s[e.options.lengthField],s.length),this.angle=t.pickProp(s[e.options.angleField],s.angle),this.y=t.pickProp3(e._yFielder(s),s.y,s.value)}_readSingle(e){super._readSingle(e),this.length=this.angle=this.y}parse(e){super.parse(e),this.isNull||(this.isNull=isNaN(this.lengthValue)||isNaN(this.angleValue))}initValues(){this.lengthValue=parseFloat(this.length),this.angleValue=parseFloat(this.angle)}initPrev(e,t){t.yValue=this.yValue,t.lengthValue=.001}applyValueRate(e,s){this.lengthValue=t.incv(e.lengthValue,this.lengthValue,s)}}class r extends t.ConnectableSeries{_createPoint(e){return new i(e)}_doPrepareRender(){super._doPrepareRender();const e=this._runPoints;if(e.length>0){const s=this._op.maxLength,n=this._op.origin,i=e.map((e=>e.length)).reduce(((e,s)=>t.maxv(e,s)));e.forEach((e=>{const t=e.length/i;switch(e._len=t*s,n){case"start":e._off=-e._len/2;break;case"end":e._off=e._len/2;break;default:e._off=0}}))}}_createLegendMarker(e,s){const n=.3,i=.7*s,r=[0,-n*s,-.2*s,-n*s,0,-.6*s,.2*s,-n*s,0,-n*s,0,.6*s],a=["M",r[0],r[1]+i];for(let e=2;e<r.length;e+=2)a.push("L",r[e],r[e+1]+i);const o=new t.PathElement(e,t.Series.LEGEND_MARKER).setPath(a);return o.setStyle("strokeWidth","2px"),o.rotation=30,o}}r.type=t.VectorSeriesType,r.defaults=t.extend(t.Series.defaults,{origin:"center",maxLength:20,startAngle:0,arrowHead:"close"});class a extends t.PointElement{layout(e,t,s){const n=this.point._len,i=n*s,r=.5;let a,o=(n-i)/2;switch(e){case"none":a=[0,o-r*i,0,o+r*i];break;case"open":const e=.15,t=.45,s=.2;a=[0,o-t*i,0-e*i,o-s*i,0,o-r*i,0+e*i,o-s*i,0,o-t*i,0,o+r*i];break;default:const n=.1,l=.3;a=[0,o-l*i,0-n*i,o-l*i,0,o-r*i,0+n*i,o-l*i,0,o-l*i,0,o+r*i]}const l=this.point._off*s,h=["M",a[0],a[1]+l];for(let e=2;e<a.length;e+=2)h.push("L",a[e],a[e+1]+l);this.rotation=t,this.setPath(h)}}class o extends t.SeriesView{constructor(e){super(e,"rct-vector-series"),this._arrows=new t.PointViewPool(this._pointContainer,a)}_getPointPool(){return this._arrows}_prepareSeries(e,t){this.$_prepareArrows(t,this._visPoints)}_renderSeries(e,t){const s=this.model;let n=s.options.startAngle;const i=s.options.arrowHead,r=s._xAxisObj,a=s._yAxisObj,o=this._inverted,l=o?e:t,h=o?t:e,u=this._getGrowRate(),g=o?0:t,c=r.options.reversed?-1:1,p=a.options.reversed;this._pointContainer.invert(o,t),this._arrows.forEach((e=>{const t=e.point;if(e.setVis(!t.isNull)){const s=r.getPos(h,t.xValue),d=g-a.getPos(l,t.yValue);let _=n+t.angleValue*c;p&&(_=180-_),t.xPos=o?g+a.getPos(l,t.yValue):s,t.yPos=o?h-r.getPos(h,t.xValue):d,e.trans(s,d),e.layout(i,_,u)}}))}_runShowEffect(e){e&&t.SeriesAnimation.grow(this)}_doViewRateChanged(e){this._renderSeries(this.width,this.height)}getPointsAt(e,t){return[]}$_prepareArrows(e,t){this._arrows.prepare(t.length,((s,n)=>{const i=s.point=t[n];this._setPointStyle(s,e,i)}))}}function l(e){(function(e){return e.Series&&e.SeriesView})(e)&&(e.Series.register(r),e.SeriesView.register([r,o]))}l(n),e.VectorSeries=r,e.default=l,Object.defineProperty(e,"__esModule",{value:!0})}));
package/vector.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  /**
3
- * RealChart Vector v1.4.12
3
+ * RealChart Vector v1.4.13
4
4
  * Copyright (C) 2023-2026 WooriTech Inc.
5
5
  * All Rights Reserved.
6
6
  */
7
- import{VectorSeriesType as e,extend as t,Series as s,ConnectableSeries as n,maxv as i,PathElement as r,DataPoint as a,assignObj as l,pickNum as o,pickProp as h,pickProp3 as g,incv as u,SeriesView as p,ElementPool as _,SeriesAnimation as d,PointElement as c}from"./index.mjs";class f extends a{_assignTo(e){return l(super._assignTo(e),{length:this.length,angle:this.angle,lengthValue:this.lengthValue,angleValue:this.angleValue})}_valuesChangd(e){return this.length!==e.length||this.angle!==e.angle||super._valuesChangd(e)}_readArray(e,t){if(t.length<=2)this.isNull=!0;else{const s=t.length>3?1:0;s>0&&(this.x=t[o(e.options.xField,0)]),this.y=t[o(e.options.yField,0+s)],this.length=t[o(e.options.lengthField,1+s)],this.angle=t[o(e.options.angleField,2+s)]}}_readObject(e,t){super._readObject(e,t),this.length=h(t[e.options.lengthField],t.length),this.angle=h(t[e.options.angleField],t.angle),this.y=g(e._yFielder(t),t.y,t.value)}_readSingle(e){super._readSingle(e),this.length=this.angle=this.y}parse(e){super.parse(e),this.isNull||(this.isNull=isNaN(this.lengthValue)||isNaN(this.angleValue))}initValues(){this.lengthValue=parseFloat(this.length),this.angleValue=parseFloat(this.angle)}initPrev(e,t){t.yValue=this.yValue,t.lengthValue=.001}applyValueRate(e,t){this.lengthValue=u(e.lengthValue,this.lengthValue,t)}}class V extends n{_createPoint(e){return new f(e)}_doPrepareRender(){super._doPrepareRender();const e=this._runPoints;if(e.length>0){const t=this._op.maxLength,s=this._op.origin,n=e.map((e=>e.length)).reduce(((e,t)=>i(e,t)));e.forEach((e=>{const i=e.length/n;switch(e._len=i*t,s){case"start":e._off=-e._len/2;break;case"end":e._off=e._len/2;break;default:e._off=0}}))}}_createLegendMarker(e,t){const n=.3,i=.7*t,a=[0,-n*t,-.2*t,-n*t,0,-.6*t,.2*t,-n*t,0,-n*t,0,.6*t],l=["M",a[0],a[1]+i];for(let e=2;e<a.length;e+=2)l.push("L",a[e],a[e+1]+i);const o=new r(e,s.LEGEND_MARKER).setPath(l);return o.setStyle("strokeWidth","2px"),o.rotation=30,o}}V.type=e,V.defaults=t(s.defaults,{origin:"center",maxLength:20,startAngle:0,arrowHead:"close"});class w extends c{layout(e,t,s){const n=this.point._len,i=n*s,r=.5;let a,l=(n-i)/2;switch(e){case"none":a=[0,l-r*i,0,l+r*i];break;case"open":const e=.15,t=.45,s=.2;a=[0,l-t*i,0-e*i,l-s*i,0,l-r*i,0+e*i,l-s*i,0,l-t*i,0,l+r*i];break;default:const n=.1,o=.3;a=[0,l-o*i,0-n*i,l-o*i,0,l-r*i,0+n*i,l-o*i,0,l-o*i,0,l+r*i]}const o=this.point._off*s,h=["M",a[0],a[1]+o];for(let e=2;e<a.length;e+=2)h.push("L",a[e],a[e+1]+o);this.rotation=t,this.setPath(h)}}class y extends p{constructor(e){super(e,"rct-vector-series"),this._arrows=new _(this._pointContainer,w)}_getPointPool(){return this._arrows}_prepareSeries(e,t){this.$_prepareArrows(t,this._visPoints)}_renderSeries(e,t){const s=this.model;let n=s.options.startAngle;const i=s.options.arrowHead,r=s._xAxisObj,a=s._yAxisObj,l=this._inverted,o=l?e:t,h=l?t:e,g=this._getGrowRate(),u=l?0:t,p=r.options.reversed?-1:1,_=a.options.reversed;this._pointContainer.invert(l,t),this._arrows.forEach((e=>{const t=e.point;if(e.setVis(!t.isNull)){const s=r.getPos(h,t.xValue),d=u-a.getPos(o,t.yValue);let c=n+t.angleValue*p;_&&(c=180-c),t.xPos=l?u+a.getPos(o,t.yValue):s,t.yPos=l?h-r.getPos(h,t.xValue):d,e.trans(s,d),e.layout(i,c,g)}}))}_runShowEffect(e){e&&d.grow(this)}_doViewRateChanged(e){this._renderSeries(this.width,this.height)}getPointsAt(e,t){return[]}$_prepareArrows(e,t){this._arrows.prepare(t.length,((s,n)=>{const i=s.point=t[n];this._setPointStyle(s,e,i)}))}}function P(e){(function(e){return e.Series&&e.SeriesView})(e)&&(e.Series.register(V),e.SeriesView.register([V,y]))}export{V as VectorSeries,P as default};
7
+ import{VectorSeriesType as e,extend as t,Series as s,ConnectableSeries as n,maxv as i,PathElement as r,DataPoint as a,assignObj as l,pickNum as o,pickProp as h,pickProp3 as g,incv as u,SeriesView as p,PointViewPool as _,SeriesAnimation as d,PointElement as c}from"./index.mjs";class f extends a{_assignTo(e){return l(super._assignTo(e),{length:this.length,angle:this.angle,lengthValue:this.lengthValue,angleValue:this.angleValue})}_valuesChangd(e){return this.length!==e.length||this.angle!==e.angle||super._valuesChangd(e)}_readArray(e,t){if(t.length<=2)this.isNull=!0;else{const s=t.length>3?1:0;s>0&&(this.x=t[o(e.options.xField,0)]),this.y=t[o(e.options.yField,0+s)],this.length=t[o(e.options.lengthField,1+s)],this.angle=t[o(e.options.angleField,2+s)]}}_readObject(e,t){super._readObject(e,t),this.length=h(t[e.options.lengthField],t.length),this.angle=h(t[e.options.angleField],t.angle),this.y=g(e._yFielder(t),t.y,t.value)}_readSingle(e){super._readSingle(e),this.length=this.angle=this.y}parse(e){super.parse(e),this.isNull||(this.isNull=isNaN(this.lengthValue)||isNaN(this.angleValue))}initValues(){this.lengthValue=parseFloat(this.length),this.angleValue=parseFloat(this.angle)}initPrev(e,t){t.yValue=this.yValue,t.lengthValue=.001}applyValueRate(e,t){this.lengthValue=u(e.lengthValue,this.lengthValue,t)}}class V extends n{_createPoint(e){return new f(e)}_doPrepareRender(){super._doPrepareRender();const e=this._runPoints;if(e.length>0){const t=this._op.maxLength,s=this._op.origin,n=e.map((e=>e.length)).reduce(((e,t)=>i(e,t)));e.forEach((e=>{const i=e.length/n;switch(e._len=i*t,s){case"start":e._off=-e._len/2;break;case"end":e._off=e._len/2;break;default:e._off=0}}))}}_createLegendMarker(e,t){const n=.3,i=.7*t,a=[0,-n*t,-.2*t,-n*t,0,-.6*t,.2*t,-n*t,0,-n*t,0,.6*t],l=["M",a[0],a[1]+i];for(let e=2;e<a.length;e+=2)l.push("L",a[e],a[e+1]+i);const o=new r(e,s.LEGEND_MARKER).setPath(l);return o.setStyle("strokeWidth","2px"),o.rotation=30,o}}V.type=e,V.defaults=t(s.defaults,{origin:"center",maxLength:20,startAngle:0,arrowHead:"close"});class w extends c{layout(e,t,s){const n=this.point._len,i=n*s,r=.5;let a,l=(n-i)/2;switch(e){case"none":a=[0,l-r*i,0,l+r*i];break;case"open":const e=.15,t=.45,s=.2;a=[0,l-t*i,0-e*i,l-s*i,0,l-r*i,0+e*i,l-s*i,0,l-t*i,0,l+r*i];break;default:const n=.1,o=.3;a=[0,l-o*i,0-n*i,l-o*i,0,l-r*i,0+n*i,l-o*i,0,l-o*i,0,l+r*i]}const o=this.point._off*s,h=["M",a[0],a[1]+o];for(let e=2;e<a.length;e+=2)h.push("L",a[e],a[e+1]+o);this.rotation=t,this.setPath(h)}}class y extends p{constructor(e){super(e,"rct-vector-series"),this._arrows=new _(this._pointContainer,w)}_getPointPool(){return this._arrows}_prepareSeries(e,t){this.$_prepareArrows(t,this._visPoints)}_renderSeries(e,t){const s=this.model;let n=s.options.startAngle;const i=s.options.arrowHead,r=s._xAxisObj,a=s._yAxisObj,l=this._inverted,o=l?e:t,h=l?t:e,g=this._getGrowRate(),u=l?0:t,p=r.options.reversed?-1:1,_=a.options.reversed;this._pointContainer.invert(l,t),this._arrows.forEach((e=>{const t=e.point;if(e.setVis(!t.isNull)){const s=r.getPos(h,t.xValue),d=u-a.getPos(o,t.yValue);let c=n+t.angleValue*p;_&&(c=180-c),t.xPos=l?u+a.getPos(o,t.yValue):s,t.yPos=l?h-r.getPos(h,t.xValue):d,e.trans(s,d),e.layout(i,c,g)}}))}_runShowEffect(e){e&&d.grow(this)}_doViewRateChanged(e){this._renderSeries(this.width,this.height)}getPointsAt(e,t){return[]}$_prepareArrows(e,t){this._arrows.prepare(t.length,((s,n)=>{const i=s.point=t[n];this._setPointStyle(s,e,i)}))}}function P(e){(function(e){return e.Series&&e.SeriesView})(e)&&(e.Series.register(V),e.SeriesView.register([V,y]))}export{V as VectorSeries,P as default};
package/wordcloud.js CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  /**
3
- * RealChart Wordcloud v1.4.12
3
+ * RealChart Wordcloud v1.4.13
4
4
  * Copyright (C) 2023-2026 WooriTech Inc.
5
5
  * All Rights Reserved.
6
6
  */
7
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("realchart")):"function"==typeof define&&define.amd?define(["exports","realchart"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).RealChartWordCloud={},t.RealChart)}(this,(function(t,e){"use strict";function i(t){var e=Object.create(null);return t&&Object.keys(t).forEach((function(i){if("default"!==i){var s=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,s.get?s:{enumerable:!0,get:function(){return t[i]}})}})),e.default=t,Object.freeze(e)}var s=i(e);class n extends e.WidgetSeriesPoint{}class r extends n{constructor(t,e){super(t),this.points=e}}class o extends e.WidgetSeries{$_denormalizeFontSize(t,i,s){let n,r;return"min"==t?(n=e.calcPercent(e.parsePercentSize(o.MinFontSize,!1),i),r=e.calcPercent(e.parsePercentSize(o.MaxMinFontSize,!1),i)):(n=e.calcPercent(e.parsePercentSize(o.MinMaxFontSize,!1),i),r=e.calcPercent(e.parsePercentSize(o.MaxFontSize,!1),i)),s>1?r:s<0?n:s*(r-n)+n}calcFontRatio(t,i,s,n){return e.calcPercent(i,s,n)}getMinFontSize(t,i){const{fixed:s,size:n}=this._minFontSizeDim,r=s&&n<=1?this.$_denormalizeFontSize("min",t,n):e.calcPercent(this._minFontSizeDim,t,i);return Math.max(e.calcPercent(e.parsePercentSize(o.MinFontSize,!1),t),r)}getMaxFontSize(t,i){const{fixed:s,size:n}=this._maxFontSizeDim,r=s&&n<=1?this.$_denormalizeFontSize("max",t,n):e.calcPercent(this._maxFontSizeDim,t,i);return Math.min(e.calcPercent(e.parsePercentSize(o.MaxFontSize,!1),t),r)}getLogFunc(){const t=this._op.logBase;return t>=2?function(e){return Math.max(Math.log(e)/Math.log(t))}:function(t){return t}}_colorByPoint(){return this._op.colorByPoint}_createPoint(t){return new n(t)}_createOthersPoint(t,e){return t.y=e.map((t=>t.y)).reduce(((t,e)=>t+e)),new r(t,e)}_doApply(t){var i;super._doApply(t),(t.text!==this._text||e.Utils.equalArrays(this._excludes,t.excludes))&&(this._text=t.text,this._excludes=null===(i=t.excludes)||void 0===i?void 0:i.slice(),this._dataSourceDirty=!0),this._setDims(t,"minFontSize","maxFontSize")}_doLoadPoints(t){const i=this._op,s=i.text;let n=[];if(s){const t=Math.max(i.minLength||1,1),e={};let r=i.excludes,o=s.split(/\s+/g);Array.isArray(r)&&r.length>0&&(o=o.filter((t=>r.indexOf(t)<0))),o.forEach((i=>{i.length>=t&&(i in e?e[i]++:e[i]=1)}));for(const t in e)n.push({x:t,y:e[t]})}else if(Array.isArray(t)&&!(t.length>0&&"object"==typeof t[0]&&null!==t[0]))for(let i=0;i<t.length;i+=2)n.push({x:e.toStr(t[i]),y:t[i+1]||0});n.length>0&&(t=n.sort(((t,e)=>e.y-t.y))),super._doLoadPoints(t)}isPointLabelVisible(t){return!1}_prepareRender(){super._prepareRender(),this.collectValues(null,null),this.prepareReferents(null),this.collectRanges(null,null)}}o.type=e.WordCloudSeriesType,o.MinFontSize=8,o.MaxMinFontSize=15,o.MaxFontSize="15%",o.MinMaxFontSize="5%",o.defaults=e.extend(e.WidgetSeries.defaults,{frame:"rectangle",maxCount:100,maxFontSize:1,minFontSize:0,colorByPoint:!0,autoScale:!0,drawTimeout:2e4});const a=Math.floor;class h{constructor(t){this._options=t}start(t,i,s,n,r,o){this._container=t;const a="circle"===s.frame||"ellipse"===s.frame,h=s.autoScale,l=e.pickNum(s.seed,0)*Math.PI*2/360,c=Math.max(0,e.pickNum(s.wordGap,0));let d=n,u=0,_=r,x=0,m=0;this._prepare(s,n,r),this._unit,this._startTime=Date.now(),i.forEach((t=>{const e=t.point;if(this._findPos(t,a,s.shuffle,this._radius,l,c)){const{x:i,y:s,width:n,height:r}=t.box.bounds;this.$_placeWord(t),e.xPos=i+n/2,e.yPos=s,d=Math.min(d,i),u=Math.max(u,i+n),_=Math.min(_,s),x=Math.max(x,s+r),m++}else t.setVis(!1)})),e.Utils.log("Words placed.",m,"of",i.length);const p=u-d,f=x-_,g=n/2,y=r/2,M=h?1/(Math.max(p/n,f/r)+.02):1,w=~~((d+p/2-g)*M),P=~~((_+f/2-y)*M);return this._trans={x:w,y:P,cx:g,cy:y,rate:M},i.forEach((t=>{const e=t.point;e.xPos=g-w+(e.xPos-g)*M,e.yPos=y-P+(e.yPos-y)*M})),this.$_transform(),null==o||o(i),this}stop(){}$_transform(t=1){let{x:i,y:s,cx:n,cy:r,rate:o}=this._trans;if(i=~~(i*t),s=~~(s*t),e.isIE){const e=o*t,a=n*(1-e),h=r*(1-e);this._container.trans(-i+a,-s+h),this._container.scale(e)}else this._container.dom.setAttribute("transform-origin",`${n} ${r}`),this._container.trans(-i,-s),this._container.scale(o*t)}_prepare(t,e,i){const s=this._unit=8;this._grid=[],this._cols=a(e/s),this._rows=a(i/s),this._radius=a(Math.sqrt(this._cols*this._cols+this._rows*this._rows)/2);const n=2*this._radius;this._center={c:this._radius,r:this._radius};for(let t=0;t<n;t++)this._grid.push([]);this._rdPoints=[],this._ellipticity="ellipse"===t.frame||"rectangle"===t.frame?i/e:1}_isOverlapping(t){const e=this._grid;for(let i=t.r1;i<=t.r2;i++)for(let s=t.c1;s<=t.c2;s++)if(e[i]||(e[i]=[]),e[i][s])return!0;return!1}$_placeWord(t){const e=this._grid,i=t.box;for(let s=i.r1;s<=i.r2;s++)for(let n=i.c1;n<=i.c2;n++)e[s][n]=t}_getPoints(t,e,i){if(this._rdPoints[t])return this._rdPoints[t];const s=this._center,n=this._ellipticity,r=Math.min(t*this._unit,64);let o=0,a=[];for(0===t&&a.push([s.c,s.r]);o<r;){const h=o/r*2*Math.PI+i;let l=t*Math.cos(h)/n,c=t*Math.sin(h);if(!e){const t=Math.max(Math.abs(Math.cos(h)),Math.abs(Math.sin(h)));l/=t,c/=t}a.push([~~(s.c+l),~~(s.r+c)]),o++}return this._rdPoints[t]=a}_rotatePoint(t,e,i){const s=e*Math.PI/180,n=Math.cos(s),r=Math.sin(s),{x:o,y:a,width:h,height:l}=t,c=o+h,d=a+l,u=o+h/2,_=a+l/2,x=[{x:o,y:a},{x:c,y:a},{x:o,y:d},{x:c,y:d}].map((t=>({x:u+(t.x-u)*n-(t.y-_)*r,y:_+(t.x-u)*r+(t.y-_)*n}))),m=Math.min(...x.map((t=>t.x))),p=Math.min(...x.map((t=>t.y))),f=Math.max(...x.map((t=>t.x))),g=Math.max(...x.map((t=>t.y))),y=this._unit,M=f-m,w=g-p;return{c1:Math.max(0,~~(m/y)),r1:Math.max(0,~~(p/y)),c2:~~(f/y),r2:~~(g/y)+i,bounds:{x:m,y:p,width:M,height:w}}}_getBox(t,e,i,s,n=0){const r=this._unit,{width:o}=t.getBBox(),a=t.hText,h=o/r,l=a/r,c=Math.ceil(h/2),d=Math.ceil(l/2),u=Math.max(0,e-c),_=Math.max(0,i-d),x=u+Math.ceil(h),m=_+Math.ceil(l),p={x:(e-c)*r,y:(i-d)*r,width:o,height:a};return n?this._rotatePoint(p,n,s):{c1:u,r1:_,c2:x+s,r2:m,bounds:p}}$_drawDebugBox(t,i){const{doc:s}=this._container,{x:n,y:r,width:o,height:a}=t.bounds,h=e.RectElement.create(s,"",n,r,o,a);h.setFill((null==i?void 0:i.fill)||"#ff000055"),h.setStroke((null==i?void 0:i.stroke)||"none"),h.setAttr("stroke-dasharray",(null==i?void 0:i.strokeDashArray)||"4"),this._container.add(h)}_findPos(t,i,s,n,r,o){let a=0,h=0;n=Math.max(n,this._grid.length+1);const l=[0,-90],c=l.length;for(;a<n;){const n=Date.now()-this._startTime;if(n>e.pickNum(this._options.drawTimeout,5e3))throw new Error(`단어배치 시간이 ${n} ms 경과하여 중단합니다.`);const d=this._getPoints(a,i,r+h++%4*(Math.PI/4));s&&e.Utils.shuffle(d);if(d.some(((i,s)=>{let n=this._options.rotation?l[~~(e.Utils.randomLike(s+r)*c)]:0;const a=this._getBox(t,i[0],i[1],o,n);if(!this._isOverlapping(a)){if(a.bounds.x<0||a.bounds.y<0)return!1;const e=this._getBox(t,i[0],i[1],o),{bounds:s}=e,r={x:s.width/2,y:s.height/2};return t.wx=s.x,t.wy=s.y,t.setRotation(r.x,r.y,n),t.box=a,!0}})))return!0;a++}}}class l extends h{_findPos(t,e,i,s,n,r){if(this._getPoints(s,e,i?Math.random()*Math.PI*2:n).some((e=>{const i=this._getBox(t,e[0],e[1],r);if(!this._isOverlapping(i))return t.box=i,!0})))return!0}_getPoints(t,e,i){const s=this._center,n=this._ellipticity,r=2*t*this._unit;let o=-1,a=[];0===t&&a.push([s.c,s.r]);const h=i>Math.PI?1:-1;if(e)for(;++o<r;){const e=o/r,l=i+o*e*h,c=t*e,d=c*Math.cos(l)/n,u=c*Math.sin(l),_=s.c+d,x=s.r+u;a.push([~~_,~~x])}else{let e=this._unit>>1,r=e/n,l=s.c+r*Math.cos(i),c=s.r+e*Math.sin(i);const d=Math.max(1,this._unit>>1),u=d-Math.max(1,d>>1),_=.99;for(;++o>=0;){e=1+u*Math.pow(_,o),r=e/n;switch(3&(h*Math.sqrt(1+8*o)-1)/2){case 0:l+=r;break;case 1:c+=e;break;case 2:l-=r;break;default:c-=e}if(Math.max(Math.abs(l-t),Math.abs(c-t))>t)break;a.push([~~l,~~c])}}return a}_getBox(t,e,i,s){const n=this._unit,r=t.getBBox(),o=t.hText,h=Math.min(2*this._radius,Math.max(0,e-a(r.width/2/n))),l=Math.min(2*this._radius,Math.max(0,i-a(o/2/n)));return{c1:h,r1:l,c2:h+a(r.width/n)+s,r2:l+a(o/n),w:t.width,h:o}}}class c extends e.RcElement{constructor(t){super(t,e.SeriesView.POINT_CLASS),this.add(this.hintView=new e.RectElement(t)),this.hintView.setStyles({stroke:"none",fill:"transparent"}),this.add(this.textView=new e.TextElement(t)),this.textView.setStyle("pointerEvents","none")}getBBox(){return this._bbox?this._bbox:this._bbox=this.textView.getBBox()}layout(){const t=this.getBBox();this.hintView.setRect({x:0,y:this.yText*c.TOP_PAD,width:t.width,height:this.hText-this.yText}),this.textView.transY(-this.yText*c.TOP_PAD)}}c.TOP_PAD=.5;class d extends e.WidgetSeriesView{constructor(t){super(t,"rct-wordcloud-series"),this._pointContainer.add(this._wordContainer=new e.LayerElement(t,null)),this._words=new e.ElementPool(this._wordContainer,c)}_getPointPool(){return this._words}needFronting(){return!1}getClipContainer(){return null}isEmptyView(){return this._empty}_refreshZombie(){}_renderSeries(t,i){const s=this.model.options,n=s.text;if(t!==this._wSave||i!==this._hSave||n!==this._tSave){const r=+new Date;let o=this._visPoints.slice();if(s.minWeight>0&&(o=o.filter((t=>t.yValue>=s.minWeight))),s.minLength>1&&(o=o.filter((t=>t.x.length>=s.minLength))),s.maxCount<o.length&&(o.length=Math.max(0,s.maxCount)),this.$_prepareWords(this.doc,this.model,o),"spiral"===s.placer)this._placer=new l(s).start(this._wordContainer,this._words._internalItems(),s,t,i,(e=>{this.$_layoutWords(t,i)}));else this._placer=new h(s).start(this._wordContainer,this._words._internalItems(),s,t,i,(e=>{this.$_layoutWords(t,i)}));this._wSave=t,this._hSave=i,this._tSave=n,this._empty=o.length<1,e.Utils.log(o.length+" words placed in "+(+new Date-r)+"ms.")}else this.$_layoutWords(t,i)}_runShowEffect(t){t&&e.SeriesAnimation.spread(this,(()=>{}))}_doPosRateChanged(t){this.$_layoutWords(this.width,this.height)}$_prepareWords(t,i,s){const n=i._minY,r=i._maxY,o=r-n,a=this.height,h=i.getMaxFontSize(a,1);let l=Math.min(h,i.getMinFontSize(a,0));const d=n===r||l===h,u=d?NaN:i.options.logBase,_=getComputedStyle(this._wordContainer.dom).fontFamily,x=Math.min(2,Math.max(.1,+i.options.textHeight)),m=isNaN(x)?t.createElement("canvas").getContext("2d"):null,p=1-c.TOP_PAD;let f;this._words.prepare(s.length,((r,a)=>{const c=r.point=s[a],g=r.textView;r._bbox=null;let y=(c.y-n)/o;u>1&&(y=1-(Math.pow(u,1-y)-1)/(u-1));let M=l+(d?(h-l)/2:y*(h-l));const w=c.x;this._preparePoint(t,i,c,r),delete r.box,g.text=w,g.anchor=e.TextAnchor.START,g.setStyles({fontSize:e.pixel(M)}),g.layoutText(),m?(m.font=`${e.pixel(M)} ${_}`,f=m.measureText(w),r.yText=.9*Math.max(0,f.fontBoundingBoxAscent-f.actualBoundingBoxAscent),r.hText=Math.ceil((f.actualBoundingBoxAscent+f.actualBoundingBoxDescent)*(M<=10?1.1:1.08)-.1)+r.yText*p):(r.yText=0,r.hText=r.getBBox().height*x),r.layout(),r.setVis(!0)}))}$_layoutWords(t,e){var i;let s=this._getPosRate();null===(i=this._placer)||void 0===i||i.$_transform(s),s=1-s,this._words.forEach((i=>{const{bounds:n}=i.box,r=n.width,o=n.height,a=(t-r)/2;let h=(e-o)/2;i.trans(i.wx-(i.wx-a)*s,i.wy-(i.wy-h)*s)}))}}function u(t){(function(t){return t.Series&&t.SeriesView})(t)&&(t.Series.register(o),t.SeriesView.register([o,d]))}u(s),t.WordCloudSeries=o,t.default=u,Object.defineProperty(t,"__esModule",{value:!0})}));
7
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("realchart")):"function"==typeof define&&define.amd?define(["exports","realchart"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).RealChartWordCloud={},t.RealChart)}(this,(function(t,e){"use strict";function i(t){var e=Object.create(null);return t&&Object.keys(t).forEach((function(i){if("default"!==i){var s=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,s.get?s:{enumerable:!0,get:function(){return t[i]}})}})),e.default=t,Object.freeze(e)}var s=i(e);class n extends e.WidgetSeriesPoint{}class r extends n{constructor(t,e){super(t),this.points=e}}class o extends e.WidgetSeries{$_denormalizeFontSize(t,i,s){let n,r;return"min"==t?(n=e.calcPercent(e.parsePercentSize(o.MinFontSize,!1),i),r=e.calcPercent(e.parsePercentSize(o.MaxMinFontSize,!1),i)):(n=e.calcPercent(e.parsePercentSize(o.MinMaxFontSize,!1),i),r=e.calcPercent(e.parsePercentSize(o.MaxFontSize,!1),i)),s>1?r:s<0?n:s*(r-n)+n}calcFontRatio(t,i,s,n){return e.calcPercent(i,s,n)}getMinFontSize(t,i){const{fixed:s,size:n}=this._minFontSizeDim,r=s&&n<=1?this.$_denormalizeFontSize("min",t,n):e.calcPercent(this._minFontSizeDim,t,i);return Math.max(e.calcPercent(e.parsePercentSize(o.MinFontSize,!1),t),r)}getMaxFontSize(t,i){const{fixed:s,size:n}=this._maxFontSizeDim,r=s&&n<=1?this.$_denormalizeFontSize("max",t,n):e.calcPercent(this._maxFontSizeDim,t,i);return Math.min(e.calcPercent(e.parsePercentSize(o.MaxFontSize,!1),t),r)}getLogFunc(){const t=this._op.logBase;return t>=2?function(e){return Math.max(Math.log(e)/Math.log(t))}:function(t){return t}}_colorByPoint(){return this._op.colorByPoint}_createPoint(t){return new n(t)}_createOthersPoint(t,e){return t.y=e.map((t=>t.y)).reduce(((t,e)=>t+e)),new r(t,e)}_doApply(t){var i;super._doApply(t),(t.text!==this._text||e.Utils.equalArrays(this._excludes,t.excludes))&&(this._text=t.text,this._excludes=null===(i=t.excludes)||void 0===i?void 0:i.slice(),this._dataSourceDirty=!0),this._setDims(t,"minFontSize","maxFontSize")}_doLoadPoints(t){const i=this._op,s=i.text;let n=[];if(s){const t=Math.max(i.minLength||1,1),e={};let r=i.excludes,o=s.split(/\s+/g);Array.isArray(r)&&r.length>0&&(o=o.filter((t=>r.indexOf(t)<0))),o.forEach((i=>{i.length>=t&&(i in e?e[i]++:e[i]=1)}));for(const t in e)n.push({x:t,y:e[t]})}else if(Array.isArray(t)&&!(t.length>0&&"object"==typeof t[0]&&null!==t[0]))for(let i=0;i<t.length;i+=2)n.push({x:e.toStr(t[i]),y:t[i+1]||0});n.length>0&&(t=n.sort(((t,e)=>e.y-t.y))),super._doLoadPoints(t)}isPointLabelVisible(t){return!1}_prepareRender(){super._prepareRender(),this.collectValues(null,null),this.prepareReferents(null),this.collectRanges(null,null)}}o.type=e.WordCloudSeriesType,o.MinFontSize=8,o.MaxMinFontSize=15,o.MaxFontSize="15%",o.MinMaxFontSize="5%",o.defaults=e.extend(e.WidgetSeries.defaults,{frame:"rectangle",maxCount:100,maxFontSize:1,minFontSize:0,colorByPoint:!0,autoScale:!0,drawTimeout:2e4});const a=Math.floor;class h{constructor(t){this._options=t}start(t,i,s,n,r,o){this._container=t;const a="circle"===s.frame||"ellipse"===s.frame,h=s.autoScale,l=e.pickNum(s.seed,0)*Math.PI*2/360,c=Math.max(0,e.pickNum(s.wordGap,0));let d=n,u=0,_=r,x=0,p=0;this._prepare(s,n,r),this._unit,this._startTime=Date.now(),i.forEach((t=>{const e=t.point;if(this._findPos(t,a,s.shuffle,this._radius,l,c)){const{x:i,y:s,width:n,height:r}=t.box.bounds;this.$_placeWord(t),e.xPos=i+n/2,e.yPos=s,d=Math.min(d,i),u=Math.max(u,i+n),_=Math.min(_,s),x=Math.max(x,s+r),p++}else t.setVis(!1)})),e.Utils.log("Words placed.",p,"of",i.length);const m=u-d,f=x-_,g=n/2,y=r/2,M=h?1/(Math.max(m/n,f/r)+.02):1,w=~~((d+m/2-g)*M),P=~~((_+f/2-y)*M);return this._trans={x:w,y:P,cx:g,cy:y,rate:M},i.forEach((t=>{const e=t.point;e.xPos=g-w+(e.xPos-g)*M,e.yPos=y-P+(e.yPos-y)*M})),this.$_transform(),null==o||o(i),this}stop(){}$_transform(t=1){let{x:i,y:s,cx:n,cy:r,rate:o}=this._trans;if(i=~~(i*t),s=~~(s*t),e.isIE){const e=o*t,a=n*(1-e),h=r*(1-e);this._container.trans(-i+a,-s+h),this._container.scale(e)}else this._container.dom.setAttribute("transform-origin",`${n} ${r}`),this._container.trans(-i,-s),this._container.scale(o*t)}_prepare(t,e,i){const s=this._unit=8;this._grid=[],this._cols=a(e/s),this._rows=a(i/s),this._radius=a(Math.sqrt(this._cols*this._cols+this._rows*this._rows)/2);const n=2*this._radius;this._center={c:this._radius,r:this._radius};for(let t=0;t<n;t++)this._grid.push([]);this._rdPoints=[],this._ellipticity="ellipse"===t.frame||"rectangle"===t.frame?i/e:1}_isOverlapping(t){const e=this._grid;for(let i=t.r1;i<=t.r2;i++)for(let s=t.c1;s<=t.c2;s++)if(e[i]||(e[i]=[]),e[i][s])return!0;return!1}$_placeWord(t){const e=this._grid,i=t.box;for(let s=i.r1;s<=i.r2;s++)for(let n=i.c1;n<=i.c2;n++)e[s][n]=t}_getPoints(t,e,i){if(this._rdPoints[t])return this._rdPoints[t];const s=this._center,n=this._ellipticity,r=Math.min(t*this._unit,64);let o=0,a=[];for(0===t&&a.push([s.c,s.r]);o<r;){const h=o/r*2*Math.PI+i;let l=t*Math.cos(h)/n,c=t*Math.sin(h);if(!e){const t=Math.max(Math.abs(Math.cos(h)),Math.abs(Math.sin(h)));l/=t,c/=t}a.push([~~(s.c+l),~~(s.r+c)]),o++}return this._rdPoints[t]=a}_rotatePoint(t,e,i){const s=e*Math.PI/180,n=Math.cos(s),r=Math.sin(s),{x:o,y:a,width:h,height:l}=t,c=o+h,d=a+l,u=o+h/2,_=a+l/2,x=[{x:o,y:a},{x:c,y:a},{x:o,y:d},{x:c,y:d}].map((t=>({x:u+(t.x-u)*n-(t.y-_)*r,y:_+(t.x-u)*r+(t.y-_)*n}))),p=Math.min(...x.map((t=>t.x))),m=Math.min(...x.map((t=>t.y))),f=Math.max(...x.map((t=>t.x))),g=Math.max(...x.map((t=>t.y))),y=this._unit,M=f-p,w=g-m;return{c1:Math.max(0,~~(p/y)),r1:Math.max(0,~~(m/y)),c2:~~(f/y),r2:~~(g/y)+i,bounds:{x:p,y:m,width:M,height:w}}}_getBox(t,e,i,s,n=0){const r=this._unit,{width:o}=t.getBBox(),a=t.hText,h=o/r,l=a/r,c=Math.ceil(h/2),d=Math.ceil(l/2),u=Math.max(0,e-c),_=Math.max(0,i-d),x=u+Math.ceil(h),p=_+Math.ceil(l),m={x:(e-c)*r,y:(i-d)*r,width:o,height:a};return n?this._rotatePoint(m,n,s):{c1:u,r1:_,c2:x+s,r2:p,bounds:m}}$_drawDebugBox(t,i){const{doc:s}=this._container,{x:n,y:r,width:o,height:a}=t.bounds,h=e.RectElement.create(s,"",n,r,o,a);h.setFill((null==i?void 0:i.fill)||"#ff000055"),h.setStroke((null==i?void 0:i.stroke)||"none"),h.setAttr("stroke-dasharray",(null==i?void 0:i.strokeDashArray)||"4"),this._container.add(h)}_findPos(t,i,s,n,r,o){let a=0,h=0;n=Math.max(n,this._grid.length+1);const l=[0,-90],c=l.length;for(;a<n;){const n=Date.now()-this._startTime;if(n>e.pickNum(this._options.drawTimeout,5e3))throw new Error(`단어배치 시간이 ${n} ms 경과하여 중단합니다.`);const d=this._getPoints(a,i,r+h++%4*(Math.PI/4));s&&e.Utils.shuffle(d);if(d.some(((i,s)=>{let n=this._options.rotation?l[~~(e.Utils.randomLike(s+r)*c)]:0;const a=this._getBox(t,i[0],i[1],o,n);if(!this._isOverlapping(a)){if(a.bounds.x<0||a.bounds.y<0)return!1;const e=this._getBox(t,i[0],i[1],o),{bounds:s}=e,r={x:s.width/2,y:s.height/2};return t.wx=s.x,t.wy=s.y,t.setRotation(r.x,r.y,n),t.box=a,!0}})))return!0;a++}}}class l extends h{_findPos(t,e,i,s,n,r){if(this._getPoints(s,e,i?Math.random()*Math.PI*2:n).some((e=>{const i=this._getBox(t,e[0],e[1],r);if(!this._isOverlapping(i))return t.box=i,!0})))return!0}_getPoints(t,e,i){const s=this._center,n=this._ellipticity,r=2*t*this._unit;let o=-1,a=[];0===t&&a.push([s.c,s.r]);const h=i>Math.PI?1:-1;if(e)for(;++o<r;){const e=o/r,l=i+o*e*h,c=t*e,d=c*Math.cos(l)/n,u=c*Math.sin(l),_=s.c+d,x=s.r+u;a.push([~~_,~~x])}else{let e=this._unit>>1,r=e/n,l=s.c+r*Math.cos(i),c=s.r+e*Math.sin(i);const d=Math.max(1,this._unit>>1),u=d-Math.max(1,d>>1),_=.99;for(;++o>=0;){e=1+u*Math.pow(_,o),r=e/n;switch(3&(h*Math.sqrt(1+8*o)-1)/2){case 0:l+=r;break;case 1:c+=e;break;case 2:l-=r;break;default:c-=e}if(Math.max(Math.abs(l-t),Math.abs(c-t))>t)break;a.push([~~l,~~c])}}return a}_getBox(t,e,i,s){const n=this._unit,r=t.getBBox(),o=t.hText,h=Math.min(2*this._radius,Math.max(0,e-a(r.width/2/n))),l=Math.min(2*this._radius,Math.max(0,i-a(o/2/n)));return{c1:h,r1:l,c2:h+a(r.width/n)+s,r2:l+a(o/n),w:t.width,h:o}}}class c extends e.RcElement{constructor(t){super(t,e.SeriesView.POINT_CLASS),this.add(this.hintView=new e.RectElement(t)),this.hintView.setStyles({stroke:"none",fill:"transparent"}),this.add(this.textView=new e.TextElement(t)),this.textView.setStyle("pointerEvents","none")}getBBox(){return this._bbox?this._bbox:this._bbox=this.textView.getBBox()}layout(){const t=this.getBBox();this.hintView.setRect({x:0,y:this.yText*c.TOP_PAD,width:t.width,height:this.hText-this.yText}),this.textView.transY(-this.yText*c.TOP_PAD)}}c.TOP_PAD=.5;class d extends e.WidgetSeriesView{constructor(t){super(t,"rct-wordcloud-series"),this._pointContainer.add(this._wordContainer=new e.LayerElement(t,null)),this._words=new e.PointViewPool(this._wordContainer,c)}_getPointPool(){return this._words}needFronting(){return!1}getClipContainer(){return null}isEmptyView(){return this._empty}_refreshZombie(){}_renderSeries(t,i){const s=this.model.options,n=s.text;if(t!==this._wSave||i!==this._hSave||n!==this._tSave){const r=+new Date;let o=this._visPoints.slice();if(s.minWeight>0&&(o=o.filter((t=>t.yValue>=s.minWeight))),s.minLength>1&&(o=o.filter((t=>t.x.length>=s.minLength))),s.maxCount<o.length&&(o.length=Math.max(0,s.maxCount)),this.$_prepareWords(this.doc,this.model,o),"spiral"===s.placer)this._placer=new l(s).start(this._wordContainer,this._words._internalItems(),s,t,i,(e=>{this.$_layoutWords(t,i)}));else this._placer=new h(s).start(this._wordContainer,this._words._internalItems(),s,t,i,(e=>{this.$_layoutWords(t,i)}));this._wSave=t,this._hSave=i,this._tSave=n,this._empty=o.length<1,e.Utils.log(o.length+" words placed in "+(+new Date-r)+"ms.")}else this.$_layoutWords(t,i)}_runShowEffect(t){t&&e.SeriesAnimation.spread(this,(()=>{}))}_doPosRateChanged(t){this.$_layoutWords(this.width,this.height)}$_prepareWords(t,i,s){const n=i._minY,r=i._maxY,o=r-n,a=this.height,h=i.getMaxFontSize(a,1);let l=Math.min(h,i.getMinFontSize(a,0));const d=n===r||l===h,u=d?NaN:i.options.logBase,_=getComputedStyle(this._wordContainer.dom).fontFamily,x=Math.min(2,Math.max(.1,+i.options.textHeight)),p=isNaN(x)?t.createElement("canvas").getContext("2d"):null,m=1-c.TOP_PAD;let f;this._words.prepare(s.length,((r,a)=>{const c=r.point=s[a],g=r.textView;r._bbox=null;let y=(c.y-n)/o;u>1&&(y=1-(Math.pow(u,1-y)-1)/(u-1));let M=l+(d?(h-l)/2:y*(h-l));const w=c.x;this._preparePoint(t,i,c,r),delete r.box,g.text=w,g.anchor=e.TextAnchor.START,g.setStyles({fontSize:e.pixel(M)}),g.layoutText(),p?(p.font=`${e.pixel(M)} ${_}`,f=p.measureText(w),r.yText=.9*Math.max(0,f.fontBoundingBoxAscent-f.actualBoundingBoxAscent),r.hText=Math.ceil((f.actualBoundingBoxAscent+f.actualBoundingBoxDescent)*(M<=10?1.1:1.08)-.1)+r.yText*m):(r.yText=0,r.hText=r.getBBox().height*x),r.layout(),r.setVis(!0)}))}$_layoutWords(t,e){var i;let s=this._getPosRate();null===(i=this._placer)||void 0===i||i.$_transform(s),s=1-s,this._words.forEach((i=>{const{bounds:n}=i.box,r=n.width,o=n.height,a=(t-r)/2;let h=(e-o)/2;i.trans(i.wx-(i.wx-a)*s,i.wy-(i.wy-h)*s)}))}}function u(t){(function(t){return t.Series&&t.SeriesView})(t)&&(t.Series.register(o),t.SeriesView.register([o,d]))}u(s),t.WordCloudSeries=o,t.default=u,Object.defineProperty(t,"__esModule",{value:!0})}));
package/wordcloud.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  /**
3
- * RealChart Wordcloud v1.4.12
3
+ * RealChart Wordcloud v1.4.13
4
4
  * Copyright (C) 2023-2026 WooriTech Inc.
5
5
  * All Rights Reserved.
6
6
  */
7
- import{WordCloudSeriesType as t,extend as e,WidgetSeries as i,calcPercent as s,parsePercentSize as n,Utils as o,toStr as r,WidgetSeriesPoint as a,RcElement as h,SeriesView as l,RectElement as c,TextElement as _,WidgetSeriesView as x,LayerElement as d,ElementPool as u,SeriesAnimation as m,TextAnchor as p,pixel as g,pickNum as M,isIE as f}from"./index.mjs";class y extends a{}class w extends y{constructor(t,e){super(t),this.points=e}}class S extends i{$_denormalizeFontSize(t,e,i){let o,r;return"min"==t?(o=s(n(S.MinFontSize,!1),e),r=s(n(S.MaxMinFontSize,!1),e)):(o=s(n(S.MinMaxFontSize,!1),e),r=s(n(S.MaxFontSize,!1),e)),i>1?r:i<0?o:i*(r-o)+o}calcFontRatio(t,e,i,n){return s(e,i,n)}getMinFontSize(t,e){const{fixed:i,size:o}=this._minFontSizeDim,r=i&&o<=1?this.$_denormalizeFontSize("min",t,o):s(this._minFontSizeDim,t,e);return Math.max(s(n(S.MinFontSize,!1),t),r)}getMaxFontSize(t,e){const{fixed:i,size:o}=this._maxFontSizeDim,r=i&&o<=1?this.$_denormalizeFontSize("max",t,o):s(this._maxFontSizeDim,t,e);return Math.min(s(n(S.MaxFontSize,!1),t),r)}getLogFunc(){const t=this._op.logBase;return t>=2?function(e){return Math.max(Math.log(e)/Math.log(t))}:function(t){return t}}_colorByPoint(){return this._op.colorByPoint}_createPoint(t){return new y(t)}_createOthersPoint(t,e){return t.y=e.map((t=>t.y)).reduce(((t,e)=>t+e)),new w(t,e)}_doApply(t){var e;super._doApply(t),(t.text!==this._text||o.equalArrays(this._excludes,t.excludes))&&(this._text=t.text,this._excludes=null===(e=t.excludes)||void 0===e?void 0:e.slice(),this._dataSourceDirty=!0),this._setDims(t,"minFontSize","maxFontSize")}_doLoadPoints(t){const e=this._op,i=e.text;let s=[];if(i){const t=Math.max(e.minLength||1,1),n={};let o=e.excludes,r=i.split(/\s+/g);Array.isArray(o)&&o.length>0&&(r=r.filter((t=>o.indexOf(t)<0))),r.forEach((e=>{e.length>=t&&(e in n?n[e]++:n[e]=1)}));for(const t in n)s.push({x:t,y:n[t]})}else if(Array.isArray(t)&&!(t.length>0&&"object"==typeof t[0]&&null!==t[0]))for(let e=0;e<t.length;e+=2)s.push({x:r(t[e]),y:t[e+1]||0});s.length>0&&(t=s.sort(((t,e)=>e.y-t.y))),super._doLoadPoints(t)}isPointLabelVisible(t){return!1}_prepareRender(){super._prepareRender(),this.collectValues(null,null),this.prepareReferents(null),this.collectRanges(null,null)}}S.type=t,S.MinFontSize=8,S.MaxMinFontSize=15,S.MaxFontSize="15%",S.MinMaxFontSize="5%",S.defaults=e(i.defaults,{frame:"rectangle",maxCount:100,maxFontSize:1,minFontSize:0,colorByPoint:!0,autoScale:!0,drawTimeout:2e4});const P=Math.floor;class b{constructor(t){this._options=t}start(t,e,i,s,n,r){this._container=t;const a="circle"===i.frame||"ellipse"===i.frame,h=i.autoScale,l=M(i.seed,0)*Math.PI*2/360,c=Math.max(0,M(i.wordGap,0));let _=s,x=0,d=n,u=0,m=0;this._prepare(i,s,n),this._unit,this._startTime=Date.now(),e.forEach((t=>{const e=t.point;if(this._findPos(t,a,i.shuffle,this._radius,l,c)){const{x:i,y:s,width:n,height:o}=t.box.bounds;this.$_placeWord(t),e.xPos=i+n/2,e.yPos=s,_=Math.min(_,i),x=Math.max(x,i+n),d=Math.min(d,s),u=Math.max(u,s+o),m++}else t.setVis(!1)})),o.log("Words placed.",m,"of",e.length);const p=x-_,g=u-d,f=s/2,y=n/2,w=h?1/(Math.max(p/s,g/n)+.02):1,S=~~((_+p/2-f)*w),P=~~((d+g/2-y)*w);return this._trans={x:S,y:P,cx:f,cy:y,rate:w},e.forEach((t=>{const e=t.point;e.xPos=f-S+(e.xPos-f)*w,e.yPos=y-P+(e.yPos-y)*w})),this.$_transform(),null==r||r(e),this}stop(){}$_transform(t=1){let{x:e,y:i,cx:s,cy:n,rate:o}=this._trans;if(e=~~(e*t),i=~~(i*t),f){const r=o*t,a=s*(1-r),h=n*(1-r);this._container.trans(-e+a,-i+h),this._container.scale(r)}else this._container.dom.setAttribute("transform-origin",`${s} ${n}`),this._container.trans(-e,-i),this._container.scale(o*t)}_prepare(t,e,i){const s=this._unit=8;this._grid=[],this._cols=P(e/s),this._rows=P(i/s),this._radius=P(Math.sqrt(this._cols*this._cols+this._rows*this._rows)/2);const n=2*this._radius;this._center={c:this._radius,r:this._radius};for(let t=0;t<n;t++)this._grid.push([]);this._rdPoints=[],this._ellipticity="ellipse"===t.frame||"rectangle"===t.frame?i/e:1}_isOverlapping(t){const e=this._grid;for(let i=t.r1;i<=t.r2;i++)for(let s=t.c1;s<=t.c2;s++)if(e[i]||(e[i]=[]),e[i][s])return!0;return!1}$_placeWord(t){const e=this._grid,i=t.box;for(let s=i.r1;s<=i.r2;s++)for(let n=i.c1;n<=i.c2;n++)e[s][n]=t}_getPoints(t,e,i){if(this._rdPoints[t])return this._rdPoints[t];const s=this._center,n=this._ellipticity,o=Math.min(t*this._unit,64);let r=0,a=[];for(0===t&&a.push([s.c,s.r]);r<o;){const h=r/o*2*Math.PI+i;let l=t*Math.cos(h)/n,c=t*Math.sin(h);if(!e){const t=Math.max(Math.abs(Math.cos(h)),Math.abs(Math.sin(h)));l/=t,c/=t}a.push([~~(s.c+l),~~(s.r+c)]),r++}return this._rdPoints[t]=a}_rotatePoint(t,e,i){const s=e*Math.PI/180,n=Math.cos(s),o=Math.sin(s),{x:r,y:a,width:h,height:l}=t,c=r+h,_=a+l,x=r+h/2,d=a+l/2,u=[{x:r,y:a},{x:c,y:a},{x:r,y:_},{x:c,y:_}].map((t=>({x:x+(t.x-x)*n-(t.y-d)*o,y:d+(t.x-x)*o+(t.y-d)*n}))),m=Math.min(...u.map((t=>t.x))),p=Math.min(...u.map((t=>t.y))),g=Math.max(...u.map((t=>t.x))),M=Math.max(...u.map((t=>t.y))),f=this._unit,y=g-m,w=M-p;return{c1:Math.max(0,~~(m/f)),r1:Math.max(0,~~(p/f)),c2:~~(g/f),r2:~~(M/f)+i,bounds:{x:m,y:p,width:y,height:w}}}_getBox(t,e,i,s,n=0){const o=this._unit,{width:r}=t.getBBox(),a=t.hText,h=r/o,l=a/o,c=Math.ceil(h/2),_=Math.ceil(l/2),x=Math.max(0,e-c),d=Math.max(0,i-_),u=x+Math.ceil(h),m=d+Math.ceil(l),p={x:(e-c)*o,y:(i-_)*o,width:r,height:a};return n?this._rotatePoint(p,n,s):{c1:x,r1:d,c2:u+s,r2:m,bounds:p}}$_drawDebugBox(t,e){const{doc:i}=this._container,{x:s,y:n,width:o,height:r}=t.bounds,a=c.create(i,"",s,n,o,r);a.setFill((null==e?void 0:e.fill)||"#ff000055"),a.setStroke((null==e?void 0:e.stroke)||"none"),a.setAttr("stroke-dasharray",(null==e?void 0:e.strokeDashArray)||"4"),this._container.add(a)}_findPos(t,e,i,s,n,r){let a=0,h=0;s=Math.max(s,this._grid.length+1);const l=[0,-90],c=l.length;for(;a<s;){const s=Date.now()-this._startTime;if(s>M(this._options.drawTimeout,5e3))throw new Error(`단어배치 시간이 ${s} ms 경과하여 중단합니다.`);const _=this._getPoints(a,e,n+h++%4*(Math.PI/4));i&&o.shuffle(_);if(_.some(((e,i)=>{let s=this._options.rotation?l[~~(o.randomLike(i+n)*c)]:0;const a=this._getBox(t,e[0],e[1],r,s);if(!this._isOverlapping(a)){if(a.bounds.x<0||a.bounds.y<0)return!1;const i=this._getBox(t,e[0],e[1],r),{bounds:n}=i,o={x:n.width/2,y:n.height/2};return t.wx=n.x,t.wy=n.y,t.setRotation(o.x,o.y,s),t.box=a,!0}})))return!0;a++}}}class z extends b{_findPos(t,e,i,s,n,o){if(this._getPoints(s,e,i?Math.random()*Math.PI*2:n).some((e=>{const i=this._getBox(t,e[0],e[1],o);if(!this._isOverlapping(i))return t.box=i,!0})))return!0}_getPoints(t,e,i){const s=this._center,n=this._ellipticity,o=2*t*this._unit;let r=-1,a=[];0===t&&a.push([s.c,s.r]);const h=i>Math.PI?1:-1;if(e)for(;++r<o;){const e=r/o,l=i+r*e*h,c=t*e,_=c*Math.cos(l)/n,x=c*Math.sin(l),d=s.c+_,u=s.r+x;a.push([~~d,~~u])}else{let e=this._unit>>1,o=e/n,l=s.c+o*Math.cos(i),c=s.r+e*Math.sin(i);const _=Math.max(1,this._unit>>1),x=_-Math.max(1,_>>1),d=.99;for(;++r>=0;){e=1+x*Math.pow(d,r),o=e/n;switch(3&(h*Math.sqrt(1+8*r)-1)/2){case 0:l+=o;break;case 1:c+=e;break;case 2:l-=o;break;default:c-=e}if(Math.max(Math.abs(l-t),Math.abs(c-t))>t)break;a.push([~~l,~~c])}}return a}_getBox(t,e,i,s){const n=this._unit,o=t.getBBox(),r=t.hText,a=Math.min(2*this._radius,Math.max(0,e-P(o.width/2/n))),h=Math.min(2*this._radius,Math.max(0,i-P(r/2/n)));return{c1:a,r1:h,c2:a+P(o.width/n)+s,r2:h+P(r/n),w:t.width,h:r}}}class B extends h{constructor(t){super(t,l.POINT_CLASS),this.add(this.hintView=new c(t)),this.hintView.setStyles({stroke:"none",fill:"transparent"}),this.add(this.textView=new _(t)),this.textView.setStyle("pointerEvents","none")}getBBox(){return this._bbox?this._bbox:this._bbox=this.textView.getBBox()}layout(){const t=this.getBBox();this.hintView.setRect({x:0,y:this.yText*B.TOP_PAD,width:t.width,height:this.hText-this.yText}),this.textView.transY(-this.yText*B.TOP_PAD)}}B.TOP_PAD=.5;class F extends x{constructor(t){super(t,"rct-wordcloud-series"),this._pointContainer.add(this._wordContainer=new d(t,null)),this._words=new u(this._wordContainer,B)}_getPointPool(){return this._words}needFronting(){return!1}getClipContainer(){return null}isEmptyView(){return this._empty}_refreshZombie(){}_renderSeries(t,e){const i=this.model.options,s=i.text;if(t!==this._wSave||e!==this._hSave||s!==this._tSave){const n=+new Date;let r=this._visPoints.slice();if(i.minWeight>0&&(r=r.filter((t=>t.yValue>=i.minWeight))),i.minLength>1&&(r=r.filter((t=>t.x.length>=i.minLength))),i.maxCount<r.length&&(r.length=Math.max(0,i.maxCount)),this.$_prepareWords(this.doc,this.model,r),"spiral"===i.placer)this._placer=new z(i).start(this._wordContainer,this._words._internalItems(),i,t,e,(i=>{this.$_layoutWords(t,e)}));else this._placer=new b(i).start(this._wordContainer,this._words._internalItems(),i,t,e,(i=>{this.$_layoutWords(t,e)}));this._wSave=t,this._hSave=e,this._tSave=s,this._empty=r.length<1,o.log(r.length+" words placed in "+(+new Date-n)+"ms.")}else this.$_layoutWords(t,e)}_runShowEffect(t){t&&m.spread(this,(()=>{}))}_doPosRateChanged(t){this.$_layoutWords(this.width,this.height)}$_prepareWords(t,e,i){const s=e._minY,n=e._maxY,o=n-s,r=this.height,a=e.getMaxFontSize(r,1);let h=Math.min(a,e.getMinFontSize(r,0));const l=s===n||h===a,c=l?NaN:e.options.logBase,_=getComputedStyle(this._wordContainer.dom).fontFamily,x=Math.min(2,Math.max(.1,+e.options.textHeight)),d=isNaN(x)?t.createElement("canvas").getContext("2d"):null,u=1-B.TOP_PAD;let m;this._words.prepare(i.length,((n,r)=>{const M=n.point=i[r],f=n.textView;n._bbox=null;let y=(M.y-s)/o;c>1&&(y=1-(Math.pow(c,1-y)-1)/(c-1));let w=h+(l?(a-h)/2:y*(a-h));const S=M.x;this._preparePoint(t,e,M,n),delete n.box,f.text=S,f.anchor=p.START,f.setStyles({fontSize:g(w)}),f.layoutText(),d?(d.font=`${g(w)} ${_}`,m=d.measureText(S),n.yText=.9*Math.max(0,m.fontBoundingBoxAscent-m.actualBoundingBoxAscent),n.hText=Math.ceil((m.actualBoundingBoxAscent+m.actualBoundingBoxDescent)*(w<=10?1.1:1.08)-.1)+n.yText*u):(n.yText=0,n.hText=n.getBBox().height*x),n.layout(),n.setVis(!0)}))}$_layoutWords(t,e){var i;let s=this._getPosRate();null===(i=this._placer)||void 0===i||i.$_transform(s),s=1-s,this._words.forEach((i=>{const{bounds:n}=i.box,o=n.width,r=n.height,a=(t-o)/2;let h=(e-r)/2;i.trans(i.wx-(i.wx-a)*s,i.wy-(i.wy-h)*s)}))}}function T(t){(function(t){return t.Series&&t.SeriesView})(t)&&(t.Series.register(S),t.SeriesView.register([S,F]))}export{S as WordCloudSeries,T as default};
7
+ import{WordCloudSeriesType as t,extend as e,WidgetSeries as i,calcPercent as s,parsePercentSize as n,Utils as o,toStr as r,WidgetSeriesPoint as a,RcElement as h,SeriesView as l,RectElement as c,TextElement as _,WidgetSeriesView as x,LayerElement as d,PointViewPool as u,SeriesAnimation as m,TextAnchor as p,pixel as g,pickNum as M,isIE as f}from"./index.mjs";class y extends a{}class w extends y{constructor(t,e){super(t),this.points=e}}class S extends i{$_denormalizeFontSize(t,e,i){let o,r;return"min"==t?(o=s(n(S.MinFontSize,!1),e),r=s(n(S.MaxMinFontSize,!1),e)):(o=s(n(S.MinMaxFontSize,!1),e),r=s(n(S.MaxFontSize,!1),e)),i>1?r:i<0?o:i*(r-o)+o}calcFontRatio(t,e,i,n){return s(e,i,n)}getMinFontSize(t,e){const{fixed:i,size:o}=this._minFontSizeDim,r=i&&o<=1?this.$_denormalizeFontSize("min",t,o):s(this._minFontSizeDim,t,e);return Math.max(s(n(S.MinFontSize,!1),t),r)}getMaxFontSize(t,e){const{fixed:i,size:o}=this._maxFontSizeDim,r=i&&o<=1?this.$_denormalizeFontSize("max",t,o):s(this._maxFontSizeDim,t,e);return Math.min(s(n(S.MaxFontSize,!1),t),r)}getLogFunc(){const t=this._op.logBase;return t>=2?function(e){return Math.max(Math.log(e)/Math.log(t))}:function(t){return t}}_colorByPoint(){return this._op.colorByPoint}_createPoint(t){return new y(t)}_createOthersPoint(t,e){return t.y=e.map((t=>t.y)).reduce(((t,e)=>t+e)),new w(t,e)}_doApply(t){var e;super._doApply(t),(t.text!==this._text||o.equalArrays(this._excludes,t.excludes))&&(this._text=t.text,this._excludes=null===(e=t.excludes)||void 0===e?void 0:e.slice(),this._dataSourceDirty=!0),this._setDims(t,"minFontSize","maxFontSize")}_doLoadPoints(t){const e=this._op,i=e.text;let s=[];if(i){const t=Math.max(e.minLength||1,1),n={};let o=e.excludes,r=i.split(/\s+/g);Array.isArray(o)&&o.length>0&&(r=r.filter((t=>o.indexOf(t)<0))),r.forEach((e=>{e.length>=t&&(e in n?n[e]++:n[e]=1)}));for(const t in n)s.push({x:t,y:n[t]})}else if(Array.isArray(t)&&!(t.length>0&&"object"==typeof t[0]&&null!==t[0]))for(let e=0;e<t.length;e+=2)s.push({x:r(t[e]),y:t[e+1]||0});s.length>0&&(t=s.sort(((t,e)=>e.y-t.y))),super._doLoadPoints(t)}isPointLabelVisible(t){return!1}_prepareRender(){super._prepareRender(),this.collectValues(null,null),this.prepareReferents(null),this.collectRanges(null,null)}}S.type=t,S.MinFontSize=8,S.MaxMinFontSize=15,S.MaxFontSize="15%",S.MinMaxFontSize="5%",S.defaults=e(i.defaults,{frame:"rectangle",maxCount:100,maxFontSize:1,minFontSize:0,colorByPoint:!0,autoScale:!0,drawTimeout:2e4});const P=Math.floor;class b{constructor(t){this._options=t}start(t,e,i,s,n,r){this._container=t;const a="circle"===i.frame||"ellipse"===i.frame,h=i.autoScale,l=M(i.seed,0)*Math.PI*2/360,c=Math.max(0,M(i.wordGap,0));let _=s,x=0,d=n,u=0,m=0;this._prepare(i,s,n),this._unit,this._startTime=Date.now(),e.forEach((t=>{const e=t.point;if(this._findPos(t,a,i.shuffle,this._radius,l,c)){const{x:i,y:s,width:n,height:o}=t.box.bounds;this.$_placeWord(t),e.xPos=i+n/2,e.yPos=s,_=Math.min(_,i),x=Math.max(x,i+n),d=Math.min(d,s),u=Math.max(u,s+o),m++}else t.setVis(!1)})),o.log("Words placed.",m,"of",e.length);const p=x-_,g=u-d,f=s/2,y=n/2,w=h?1/(Math.max(p/s,g/n)+.02):1,S=~~((_+p/2-f)*w),P=~~((d+g/2-y)*w);return this._trans={x:S,y:P,cx:f,cy:y,rate:w},e.forEach((t=>{const e=t.point;e.xPos=f-S+(e.xPos-f)*w,e.yPos=y-P+(e.yPos-y)*w})),this.$_transform(),null==r||r(e),this}stop(){}$_transform(t=1){let{x:e,y:i,cx:s,cy:n,rate:o}=this._trans;if(e=~~(e*t),i=~~(i*t),f){const r=o*t,a=s*(1-r),h=n*(1-r);this._container.trans(-e+a,-i+h),this._container.scale(r)}else this._container.dom.setAttribute("transform-origin",`${s} ${n}`),this._container.trans(-e,-i),this._container.scale(o*t)}_prepare(t,e,i){const s=this._unit=8;this._grid=[],this._cols=P(e/s),this._rows=P(i/s),this._radius=P(Math.sqrt(this._cols*this._cols+this._rows*this._rows)/2);const n=2*this._radius;this._center={c:this._radius,r:this._radius};for(let t=0;t<n;t++)this._grid.push([]);this._rdPoints=[],this._ellipticity="ellipse"===t.frame||"rectangle"===t.frame?i/e:1}_isOverlapping(t){const e=this._grid;for(let i=t.r1;i<=t.r2;i++)for(let s=t.c1;s<=t.c2;s++)if(e[i]||(e[i]=[]),e[i][s])return!0;return!1}$_placeWord(t){const e=this._grid,i=t.box;for(let s=i.r1;s<=i.r2;s++)for(let n=i.c1;n<=i.c2;n++)e[s][n]=t}_getPoints(t,e,i){if(this._rdPoints[t])return this._rdPoints[t];const s=this._center,n=this._ellipticity,o=Math.min(t*this._unit,64);let r=0,a=[];for(0===t&&a.push([s.c,s.r]);r<o;){const h=r/o*2*Math.PI+i;let l=t*Math.cos(h)/n,c=t*Math.sin(h);if(!e){const t=Math.max(Math.abs(Math.cos(h)),Math.abs(Math.sin(h)));l/=t,c/=t}a.push([~~(s.c+l),~~(s.r+c)]),r++}return this._rdPoints[t]=a}_rotatePoint(t,e,i){const s=e*Math.PI/180,n=Math.cos(s),o=Math.sin(s),{x:r,y:a,width:h,height:l}=t,c=r+h,_=a+l,x=r+h/2,d=a+l/2,u=[{x:r,y:a},{x:c,y:a},{x:r,y:_},{x:c,y:_}].map((t=>({x:x+(t.x-x)*n-(t.y-d)*o,y:d+(t.x-x)*o+(t.y-d)*n}))),m=Math.min(...u.map((t=>t.x))),p=Math.min(...u.map((t=>t.y))),g=Math.max(...u.map((t=>t.x))),M=Math.max(...u.map((t=>t.y))),f=this._unit,y=g-m,w=M-p;return{c1:Math.max(0,~~(m/f)),r1:Math.max(0,~~(p/f)),c2:~~(g/f),r2:~~(M/f)+i,bounds:{x:m,y:p,width:y,height:w}}}_getBox(t,e,i,s,n=0){const o=this._unit,{width:r}=t.getBBox(),a=t.hText,h=r/o,l=a/o,c=Math.ceil(h/2),_=Math.ceil(l/2),x=Math.max(0,e-c),d=Math.max(0,i-_),u=x+Math.ceil(h),m=d+Math.ceil(l),p={x:(e-c)*o,y:(i-_)*o,width:r,height:a};return n?this._rotatePoint(p,n,s):{c1:x,r1:d,c2:u+s,r2:m,bounds:p}}$_drawDebugBox(t,e){const{doc:i}=this._container,{x:s,y:n,width:o,height:r}=t.bounds,a=c.create(i,"",s,n,o,r);a.setFill((null==e?void 0:e.fill)||"#ff000055"),a.setStroke((null==e?void 0:e.stroke)||"none"),a.setAttr("stroke-dasharray",(null==e?void 0:e.strokeDashArray)||"4"),this._container.add(a)}_findPos(t,e,i,s,n,r){let a=0,h=0;s=Math.max(s,this._grid.length+1);const l=[0,-90],c=l.length;for(;a<s;){const s=Date.now()-this._startTime;if(s>M(this._options.drawTimeout,5e3))throw new Error(`단어배치 시간이 ${s} ms 경과하여 중단합니다.`);const _=this._getPoints(a,e,n+h++%4*(Math.PI/4));i&&o.shuffle(_);if(_.some(((e,i)=>{let s=this._options.rotation?l[~~(o.randomLike(i+n)*c)]:0;const a=this._getBox(t,e[0],e[1],r,s);if(!this._isOverlapping(a)){if(a.bounds.x<0||a.bounds.y<0)return!1;const i=this._getBox(t,e[0],e[1],r),{bounds:n}=i,o={x:n.width/2,y:n.height/2};return t.wx=n.x,t.wy=n.y,t.setRotation(o.x,o.y,s),t.box=a,!0}})))return!0;a++}}}class z extends b{_findPos(t,e,i,s,n,o){if(this._getPoints(s,e,i?Math.random()*Math.PI*2:n).some((e=>{const i=this._getBox(t,e[0],e[1],o);if(!this._isOverlapping(i))return t.box=i,!0})))return!0}_getPoints(t,e,i){const s=this._center,n=this._ellipticity,o=2*t*this._unit;let r=-1,a=[];0===t&&a.push([s.c,s.r]);const h=i>Math.PI?1:-1;if(e)for(;++r<o;){const e=r/o,l=i+r*e*h,c=t*e,_=c*Math.cos(l)/n,x=c*Math.sin(l),d=s.c+_,u=s.r+x;a.push([~~d,~~u])}else{let e=this._unit>>1,o=e/n,l=s.c+o*Math.cos(i),c=s.r+e*Math.sin(i);const _=Math.max(1,this._unit>>1),x=_-Math.max(1,_>>1),d=.99;for(;++r>=0;){e=1+x*Math.pow(d,r),o=e/n;switch(3&(h*Math.sqrt(1+8*r)-1)/2){case 0:l+=o;break;case 1:c+=e;break;case 2:l-=o;break;default:c-=e}if(Math.max(Math.abs(l-t),Math.abs(c-t))>t)break;a.push([~~l,~~c])}}return a}_getBox(t,e,i,s){const n=this._unit,o=t.getBBox(),r=t.hText,a=Math.min(2*this._radius,Math.max(0,e-P(o.width/2/n))),h=Math.min(2*this._radius,Math.max(0,i-P(r/2/n)));return{c1:a,r1:h,c2:a+P(o.width/n)+s,r2:h+P(r/n),w:t.width,h:r}}}class B extends h{constructor(t){super(t,l.POINT_CLASS),this.add(this.hintView=new c(t)),this.hintView.setStyles({stroke:"none",fill:"transparent"}),this.add(this.textView=new _(t)),this.textView.setStyle("pointerEvents","none")}getBBox(){return this._bbox?this._bbox:this._bbox=this.textView.getBBox()}layout(){const t=this.getBBox();this.hintView.setRect({x:0,y:this.yText*B.TOP_PAD,width:t.width,height:this.hText-this.yText}),this.textView.transY(-this.yText*B.TOP_PAD)}}B.TOP_PAD=.5;class F extends x{constructor(t){super(t,"rct-wordcloud-series"),this._pointContainer.add(this._wordContainer=new d(t,null)),this._words=new u(this._wordContainer,B)}_getPointPool(){return this._words}needFronting(){return!1}getClipContainer(){return null}isEmptyView(){return this._empty}_refreshZombie(){}_renderSeries(t,e){const i=this.model.options,s=i.text;if(t!==this._wSave||e!==this._hSave||s!==this._tSave){const n=+new Date;let r=this._visPoints.slice();if(i.minWeight>0&&(r=r.filter((t=>t.yValue>=i.minWeight))),i.minLength>1&&(r=r.filter((t=>t.x.length>=i.minLength))),i.maxCount<r.length&&(r.length=Math.max(0,i.maxCount)),this.$_prepareWords(this.doc,this.model,r),"spiral"===i.placer)this._placer=new z(i).start(this._wordContainer,this._words._internalItems(),i,t,e,(i=>{this.$_layoutWords(t,e)}));else this._placer=new b(i).start(this._wordContainer,this._words._internalItems(),i,t,e,(i=>{this.$_layoutWords(t,e)}));this._wSave=t,this._hSave=e,this._tSave=s,this._empty=r.length<1,o.log(r.length+" words placed in "+(+new Date-n)+"ms.")}else this.$_layoutWords(t,e)}_runShowEffect(t){t&&m.spread(this,(()=>{}))}_doPosRateChanged(t){this.$_layoutWords(this.width,this.height)}$_prepareWords(t,e,i){const s=e._minY,n=e._maxY,o=n-s,r=this.height,a=e.getMaxFontSize(r,1);let h=Math.min(a,e.getMinFontSize(r,0));const l=s===n||h===a,c=l?NaN:e.options.logBase,_=getComputedStyle(this._wordContainer.dom).fontFamily,x=Math.min(2,Math.max(.1,+e.options.textHeight)),d=isNaN(x)?t.createElement("canvas").getContext("2d"):null,u=1-B.TOP_PAD;let m;this._words.prepare(i.length,((n,r)=>{const M=n.point=i[r],f=n.textView;n._bbox=null;let y=(M.y-s)/o;c>1&&(y=1-(Math.pow(c,1-y)-1)/(c-1));let w=h+(l?(a-h)/2:y*(a-h));const S=M.x;this._preparePoint(t,e,M,n),delete n.box,f.text=S,f.anchor=p.START,f.setStyles({fontSize:g(w)}),f.layoutText(),d?(d.font=`${g(w)} ${_}`,m=d.measureText(S),n.yText=.9*Math.max(0,m.fontBoundingBoxAscent-m.actualBoundingBoxAscent),n.hText=Math.ceil((m.actualBoundingBoxAscent+m.actualBoundingBoxDescent)*(w<=10?1.1:1.08)-.1)+n.yText*u):(n.yText=0,n.hText=n.getBBox().height*x),n.layout(),n.setVis(!0)}))}$_layoutWords(t,e){var i;let s=this._getPosRate();null===(i=this._placer)||void 0===i||i.$_transform(s),s=1-s,this._words.forEach((i=>{const{bounds:n}=i.box,o=n.width,r=n.height,a=(t-o)/2;let h=(e-r)/2;i.trans(i.wx-(i.wx-a)*s,i.wy-(i.wy-h)*s)}))}}function T(t){(function(t){return t.Series&&t.SeriesView})(t)&&(t.Series.register(S),t.SeriesView.register([S,F]))}export{S as WordCloudSeries,T as default};