@visactor/vchart-extension 1.13.3-alpha.6 → 1.13.3-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/index.js CHANGED
@@ -644,6 +644,7 @@
644
644
  ];
645
645
  }
646
646
  generateBarBackground(spec) {
647
+ var _a;
647
648
  const totalDuration = spec.animation.duration;
648
649
  return {
649
650
  type: spec.barBackground.type,
@@ -651,6 +652,7 @@
651
652
  visible: true,
652
653
  dataKey: DATA_KEY,
653
654
  zIndex: -99,
655
+ state: (_a = spec.barBackground) === null || _a === void 0 ? void 0 : _a.state,
654
656
  style: Object.assign(Object.assign({ x: (datum, ctx) => spec.barBackground.type === 'symbol' ? ctx.getRegion().getLayoutRect().width / 2 : 0, y: (datum, ctx) => {
655
657
  return (ctx.valueToY([datum[spec.yField]]) +
656
658
  ctx.yBandwidth() / 2 -
@@ -675,7 +677,11 @@
675
677
  dataId: 'data',
676
678
  visible: true,
677
679
  dataKey: DATA_KEY,
680
+ state: decorateHaloIcon === null || decorateHaloIcon === void 0 ? void 0 : decorateHaloIcon.state,
678
681
  style: Object.assign(Object.assign({ x: (datum, ctx) => {
682
+ if (datum[spec.xField] === undefined || datum[spec.xField] === null) {
683
+ return undefined;
684
+ }
679
685
  return ctx.valueToX([datum[spec.xField]]);
680
686
  }, y: (datum, ctx) => {
681
687
  return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;
@@ -699,6 +705,7 @@
699
705
  dataId: 'data',
700
706
  visible: true,
701
707
  dataKey: DATA_KEY,
708
+ state: spec.rankingIcon.state,
702
709
  style: Object.assign(Object.assign({ x: (datum) => {
703
710
  if (spec.labelLayout === 'bothEnd') {
704
711
  return -(NAME_LABEL_PADDING_RIGHT +
@@ -733,11 +740,13 @@
733
740
  };
734
741
  }
735
742
  generateNameLabel(spec) {
743
+ var _a;
736
744
  const totalDuration = spec.animation.duration;
737
745
  return {
738
746
  type: 'text',
739
747
  dataId: 'data',
740
748
  dataKey: DATA_KEY,
749
+ state: (_a = spec.nameLabel) === null || _a === void 0 ? void 0 : _a.state,
741
750
  style: Object.assign(Object.assign({ text: (datum) => this.formatDatum(spec.yField, datum), x: () => {
742
751
  var _a;
743
752
  if (spec.labelLayout === 'bothEnd') {
@@ -765,11 +774,13 @@
765
774
  };
766
775
  }
767
776
  generateOrderLabel(spec) {
777
+ var _a;
768
778
  const totalDuration = spec.animation.duration;
769
779
  return {
770
780
  type: 'text',
771
781
  dataId: 'data',
772
782
  dataKey: DATA_KEY,
783
+ state: (_a = spec.orderLabel) === null || _a === void 0 ? void 0 : _a.state,
773
784
  style: Object.assign(Object.assign({ text: (datum) => this.formatDatum(ORDER_KEY, datum), x: (datum) => {
774
785
  var _a;
775
786
  if (spec.labelLayout === 'bothEnd') {
@@ -804,6 +815,11 @@
804
815
  dataId: 'data',
805
816
  visible: true,
806
817
  dataKey: DATA_KEY,
818
+ state: {
819
+ blur: {
820
+ opacity: 0.2
821
+ }
822
+ },
807
823
  style: Object.assign(Object.assign({ text: (datum) => this.formatDatum(spec.xField, datum), x: (datum, ctx) => {
808
824
  if (spec.labelLayout === 'bothEnd') {
809
825
  return (ctx.getRegion().getLayoutRect().width +
@@ -832,6 +848,7 @@
832
848
  }
833
849
  transformPaddingSpec(spec) {
834
850
  var _a;
851
+ const maxHaloIconSize = Math.max(...spec.decorateHaloIcons.map((icon) => { var _a; return (_a = icon.style.size) !== null && _a !== void 0 ? _a : 18; }));
835
852
  spec.padding = Object.assign({ left: spec.labelLayout === 'bothEnd'
836
853
  ? NAME_LABEL_PADDING_RIGHT +
837
854
  this.getMaxDataLabelLens(spec, spec.yField, this.nameLabelTextMeasure) +
@@ -840,7 +857,7 @@
840
857
  : 0) +
841
858
  (spec.rankingIcon.style.visible ? NAME_SYMBOL_PADDING_RIGHT + ((_a = spec.rankingIcon.style.size) !== null && _a !== void 0 ? _a : 10) : 0) +
842
859
  CHART_PADDING_LEFT
843
- : CHART_PADDING_LEFT, right: spec.labelLayout === 'bothEnd'
860
+ : CHART_PADDING_LEFT + maxHaloIconSize / 2, right: spec.labelLayout === 'bothEnd'
844
861
  ? VALUE_LABEL_PADDING_LEFT +
845
862
  this.getMaxDataLabelLens(spec, spec.yField, this.valueLabelTextMeasure) +
846
863
  CHART_PADDING_RIGHT
@@ -1,4 +1,4 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@visactor/vchart"),require("@visactor/vutils")):"function"==typeof define&&define.amd?define(["exports","@visactor/vchart","@visactor/vutils"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).VChartExtension={},t.VChart,t.VUtils)}(this,(function(t,e,i){"use strict";class n extends e.BaseChartSpecTransformer{transformSpec(t){const{timeData:e,timeNodes:n}=function(t){const{xField:e,yField:n,timeField:s,data:r,topN:a=10,icon:o}=t,l=new Set,h=new Map;return r.sort(((t,i)=>Number(i[e])-Number(t[e]))),r.forEach((t=>{const e=t[s];i.isValid(e)&&l.add(e),h.has(e)||h.set(e,[]);const r=h.get(e);if(r.length<a){const e=Object.assign({},t);o&&o[e[n]]&&(e.icon=o[e[n]]),r.push(e)}})),{timeData:h,timeNodes:Array.from(l).sort()}}(t),{interval:a,xField:o,yField:l,color:h,icon:c,iconPosition:d,iconShape:u,timeLabel:p,label:f,nameLabel:g,xAxis:m,yAxis:y}=t,b=a||1e3,v=Math.min(b,500);if(t.type="common",t.data=[{id:"timeData",values:e.get(n[0])},{id:"time",values:[{time:n[0]}]}],t.color={specified:Object.assign({},h)},t.region=[{clip:!0}],t.series=[{type:"bar",id:"ranking-bar",dataId:"timeData",direction:"horizontal",yField:l,xField:o,seriesField:l,extensionMark:[],label:s(f,Object.assign(Object.assign({},g),{yField:l}))}],t.axes=function(t={},e={}){const i={orient:"left",type:"band",inverse:!0,label:{style:e.label},domainLine:{style:e.domainLine},grid:{style:e.grid}},n={orient:"bottom",type:"linear",nice:!1,animation:!0,label:{style:t.label},domainLine:{style:t.domainLine},grid:{style:t.grid},innerOffset:{right:"10%"}};t.label&&(n.label=t.label);return[i,n]}(m,y),t.player={type:"continuous",auto:!0,loop:!1,interval:b,specs:n.map((t=>({data:[{id:"timeData",values:e.get(t)},{id:"time",values:[{time:t}]}]})))},t.tooltip={visible:!1},t.customMark=[],function(t,{interval:e,exchangeDuration:i}){t.animationAppear=!1,t.animationUpdate={bar:[{type:"update",options:{excludeChannels:["y"]},easing:"linear",duration:e},{channel:["y"],easing:"circInOut",duration:i}],axis:{duration:e,easing:"linear"}},t.animationEnter={bar:[{type:"moveIn",duration:i,easing:"cubicInOut",options:{direction:"y",orient:"negative",point:(t,e,i)=>({y:i.groupHeight+e.getBounds().height()})}}]},t.animationExit={bar:[{type:"moveOut",duration:i,easing:"cubicInOut",options:{direction:"y",orient:"negative"}}]}}(t,{interval:b,exchangeDuration:v}),p&&!1===p.visible||t.customMark.push(function(t={}){return{type:"text",dataId:"time",style:Object.assign({textBaseline:"bottom",fontSize:200,textAlign:"end",fontWeight:600,text:t=>t.time,x:(t,e)=>{var i;return(null===(i=e.vchart.getChart().getCanvasRect())||void 0===i?void 0:i.width)-50},y:(t,e)=>{var i;return(null===(i=e.vchart.getChart().getCanvasRect())||void 0===i?void 0:i.height)-80},fill:"grey",fillOpacity:.5},t)}}(p.style)),c){const e=function(t="bar-end",e="circle",{interval:i,exchangeDuration:n}){return{type:"symbol",dataId:"timeData",style:{symbolType:e,stroke:"white",lineWidth:1,size:(t,e)=>{var i,n;const s=e.vchart,r=null===(i=s.getChart())||void 0===i?void 0:i.getSeriesInIndex(0)[0];if(s&&r){const t=null!==(n=r.getYAxisHelper().getBandwidth(0))&&void 0!==n?n:0;return Math.max(t-4,0)}return 10},background:t=>t.icon,x:(e,i)=>{var n,s;const r=i.vchart,a=null===(n=r.getChart())||void 0===n?void 0:n.getSeriesInIndex(0)[0];if(r&&a){const i=null!==(s=a.getYAxisHelper().getBandwidth(0))&&void 0!==s?s:0;return"bar-start"===t?i/2:"axis"===t?-i/2:a.dataToPositionX(e)-i/2}},y:(t,e)=>{var i,n;const s=e.vchart,r=null===(i=s.getChart())||void 0===i?void 0:i.getSeriesInIndex(0)[0];if(s&&r){const e=null!==(n=r.getYAxisHelper().getBandwidth(0))&&void 0!==n?n:0;return r.dataToPositionY(t)+e/2}},scaleY:"rect"===e?1.2:1},animationUpdate:r(i,n),animationEnter:[{type:"moveIn",duration:n,easing:"cubicInOut",options:{direction:"y",orient:"negative",point:(t,e,i)=>({y:i.groupHeight+e.getBounds().height()})}}],animationExit:[{type:"moveOut",duration:n,easing:"cubicInOut",options:{direction:"y",orient:"negative"}}]}}(d,u,{interval:b,exchangeDuration:v});t.series[0].extensionMark.push(e)}super.transformSpec(t)}}function s(t={},e){var i,n,s,r;const a=[];return!1!==t.visible&&a.push({visible:!0,overlap:!1,style:Object.assign({fill:"rgb(64, 64, 64)"},t.style),smartInvert:{fillStrategy:(null===(i=t.style)||void 0===i?void 0:i.fill)?"null":void 0,strokeStrategy:(null===(n=t.style)||void 0===n?void 0:n.stroke)?"null":void 0}}),e.visible&&a.push({visible:!0,overlap:!1,style:Object.assign({},e.style),smartInvert:{fillStrategy:(null===(s=e.style)||void 0===s?void 0:s.fill)?"null":void 0,strokeStrategy:(null===(r=e.style)||void 0===r?void 0:r.stroke)?"null":void 0},position:"bar-end"===e.position?"inside-right":"inside-left",formatter:`{${e.yField}}`}),a}function r(t,e){return[{duration:e,easing:"cubicInOut",channel:["y"]},{options:{excludeChannels:["y"]},channel:["x","x2","x1"],easing:"linear",duration:t}]}class a extends e.BaseChart{constructor(){super(...arguments),this.type="rankingBar",this.transformerConstructor=n}init(){this.isValid()&&super.init()}isValid(){var t,e,i,n;const{xField:s,yField:r,timeField:a,data:o}=this._spec;return s&&r&&a?!!o||(null===(n=(i=this._option).onError)||void 0===n||n.call(i,"Data is required"),!1):(null===(e=(t=this._option).onError)||void 0===e||e.call(t,"Missing Required Config: `xField`, `yField`, `timeField` "),!1)}}a.type="rankingBar",a.view="singleDefault",a.transformerConstructor=n;const o={width:400,height:225,labelLayout:"top",bar:{height:100,style:{cornerRadius:5}},barBackground:{type:"rect",style:{fill:"rgba(255,255,255,0.1)",cornerRadius:5}},rankingIcon:{visible:!0,style:{fill:"rgba(253,253,253,0.5)",size:12}},nameLabel:{visible:!0,style:{fontSize:20,fontWeight:"normal",fill:"rgba(255,255,255,0.7)",textBaseline:"middle"}},orderLabel:{visible:!0,style:{fontSize:20,fontWeight:"normal",fill:"rgba(255,255,255,0.7)",textBaseline:"middle"}},valueLabel:{visible:!0,style:{fontSize:14,fontWeight:"normal",fill:"rgba(255,255,255,1)",textBaseline:"middle"}},pageSize:5,scrollSize:1,animation:{type:"both",interval:4e3,duration:2e3,easing:"linear"}},l="dataKey",h="VCHART_ORDER",c="SUPPLY_DATA_KEY";class d extends e.CommonChartSpecTransformer{constructor(){super(...arguments),this.formatMap={},this.paginateDataArr=t=>{const{data:e,scrollSize:i=1,pageSize:n=5}=t,s={};let r=0;for(let a=0;a<e.length;a+=i)if(r++,s[`page${r}`]=e.slice(a,a+n),a+n-1>=e.length-1){e.push(...Array.from({length:a+n-e.length},(e=>({[t.yField]:100*Math.random(),[t.xField]:null,[c]:!0}))));break}return{orderCount:r,result:s}},this.processRankingData=t=>{const e=[];t.data.forEach(((t,e)=>t[h]=e+1<10?`0${e+1}`:e+1));const i=this.paginateDataArr(t).result,n=this.paginateDataArr(t).orderCount,s=t.pageSize-i[`page${n}`].length;return i[`page${n}`].push(...Array.from({length:s},(e=>({[t.yField]:100*Math.random(),[t.xField]:null,[c]:!0})))),Object.keys(i).forEach((t=>{e.push({data:[{id:"datas",values:i[t].map(((e,i)=>Object.assign(Object.assign({},e),{[l]:t+"_"+i+"_"+(new Date).getTime()})))},{id:"order",values:[{order:t}]}]})})),1===e.length&&e.push({data:[{id:"datas",values:i.page1.map(((t,e)=>Object.assign(Object.assign({},t),{[l]:"page2_"+e+"_"+(new Date).getTime()})))},{id:"order",values:[{order:"page2"}]}]}),e}}transformSpec(t){super.transformSpec(t),this.normalizeSpec(t),this.upgradeTextMeasure(t),this.upgradeFormatMap(t),this.processData(t),this.transformBaseSpec(t),this.transformAnimationSpec(t),this.transformAxesSpec(t),t.extensionMark=[this.generateBarBackground(t),...this.generateDecorateHaloIcons(t),this.generateRankingIcon(t),this.generateNameLabel(t),this.generateOrderLabel(t),this.generateValueLabel(t)],this.transformPaddingSpec(t),super.transformSpec(t)}normalizeSpec(t){(function t(e,i){for(const n in i)"object"==typeof i[n]&&null!==i[n]?(e.hasOwnProperty(n)||(e[n]=Array.isArray(i[n])?[]:{}),t(e[n],i[n])):e.hasOwnProperty(n)||"object"!=typeof e||(e[n]=i[n]);return e})(t,o),((t,e)=>{e.forEach((e=>{var i,n,s,r,a,o;t[e]=Object.assign(Object.assign({},t[e]),{style:Object.assign(Object.assign({},null===(i=t[e])||void 0===i?void 0:i.style),{visible:null===(o=null!==(r=null===(s=null===(n=t[e])||void 0===n?void 0:n.style)||void 0===s?void 0:s.visible)&&void 0!==r?r:null===(a=t[e])||void 0===a?void 0:a.visible)||void 0===o||o})})}))})(t,["barBackground","rankingIcon","decorateHaloIcon","orderLabel","nameLabel","valueLabel"])}upgradeTextMeasure(t){var e,n,s,r,a,o,l,h,c;null===(e=this.nameLabelTextMeasure)||void 0===e||e.release(),null===(n=this.valueLabelTextMeasure)||void 0===n||n.release(),null===(s=this.orderLabelTextMeasure)||void 0===s||s.release(),this.nameLabelTextMeasure=new i.TextMeasure({defaultFontParams:null!==(a=null===(r=t.nameLabel)||void 0===r?void 0:r.style)&&void 0!==a?a:{}}),this.valueLabelTextMeasure=new i.TextMeasure({defaultFontParams:null!==(l=null===(o=t.valueLabel)||void 0===o?void 0:o.style)&&void 0!==l?l:{}}),this.orderLabelTextMeasure=new i.TextMeasure({defaultFontParams:null!==(c=null===(h=t.orderLabel)||void 0===h?void 0:h.style)&&void 0!==c?c:{}})}upgradeFormatMap(t){this.formatMap[t.yField]=t.nameLabel.formatMethod,this.formatMap[t.xField]=t.valueLabel.formatMethod,this.formatMap[h]=t.orderLabel.formatMethod}processData(t){var e;(null===(e=t.data[0])||void 0===e?void 0:e.values)||(this.dataSpecs=this.processRankingData(t),this.originalData=t.data,t.data=this.dataSpecs[0].data)}transformBaseSpec(t){var e,i,n;t.type="common",t.dataKey=l,t.series=[{type:"bar",direction:"horizontal",xField:t.xField,yField:t.yField,barWidth:null!==(i=null===(e=t.bar)||void 0===e?void 0:e.height)&&void 0!==i?i:10,bar:Object.assign(Object.assign({},t.bar),{style:Object.assign(Object.assign({},null===(n=t.bar)||void 0===n?void 0:n.style),{x1:0,visible:e=>{var i,n;return!e[c]&&(null===(n=null===(i=t.bar)||void 0===i?void 0:i.style)||void 0===n||n)}})})}]}transformAnimationSpec(t){const e=t.animation.duration;t.animation&&(t.player=Object.assign(Object.assign({},t.player),{specs:this.dataSpecs,auto:!0,visible:!1,interval:t.animation.interval+t.animation.duration/2,loop:!0}),t.animationExit=this.getAnimationExit(t,e),t.animationAppear=this.getAnimationEnter(t,"rect",e),t.animationEnter=this.getAnimationEnter(t,"rect",e))}transformAxesSpec(t){const{min:e,max:i}=((t,e)=>{let i,n;const s=t.map((t=>t[e])).filter((t=>null!=t));if(0===s.length)i=0,n=1;else{i=Math.min(...s)-(Math.max(...s)-Math.min(...s))/3,n=(Math.max(...s)-i)/.8+i;const t=10,e=i;i===n&&(i=e-t,n=(4*e+t)/4)}return{min:i,max:n}})(this.originalData,t.xField);t.axes=[{orient:"left",type:"band",visible:!1,inverse:!0},{orient:"bottom",label:{visible:!0},type:"linear",visible:!1,min:e,max:i}]}generateBarBackground(t){const e=t.animation.duration;return{type:t.barBackground.type,dataId:"data",visible:!0,dataKey:l,zIndex:-99,style:Object.assign(Object.assign({x:(e,i)=>"symbol"===t.barBackground.type?i.getRegion().getLayoutRect().width/2:0,y:(e,i)=>i.valueToY([e[t.yField]])+i.yBandwidth()/2-("symbol"===t.barBackground.type?0:t.bar.height/2),size:(e,i)=>[i.getRegion().getLayoutRect().width,t.bar.height],width:(t,e)=>e.getRegion().getLayoutRect().width,height:t.bar.height},t.barBackground.style),{visible:e=>!e[c]&&t.barBackground.style.visible}),animation:Boolean(t.animation),animationEnter:this.getAnimationEnter(t,"barBack",e),animationExit:this.getAnimationExit(t,e),animationAppear:this.getAnimationEnter(t,"barBack",e)}}generateDecorateHaloIcons(t){const e=t.animation.duration;return t.decorateHaloIcons.map((i=>({type:"symbol",dataId:"data",visible:!0,dataKey:l,style:Object.assign(Object.assign({x:(e,i)=>i.valueToX([e[t.xField]]),y:(e,i)=>i.valueToY([e[t.yField]])+i.yBandwidth()/2},i.style),{visible:t=>!t[c]&&i.style.visible}),animation:Boolean(t.animation),animationEnter:this.getAnimationEnter(t,"symbol",e),animationExit:this.getAnimationExit(t,e),animationAppear:this.getAnimationEnter(t,"symbol",e)})))}generateRankingIcon(t){const e=t.animation.duration;return{type:"symbol",dataId:"data",visible:!0,dataKey:l,style:Object.assign(Object.assign({x:e=>"bothEnd"===t.labelLayout?-(10+this.nameLabelTextMeasure.fullMeasure(this.formatDatum(t.yField,e)).width+(t.orderLabel.style.visible?5+this.orderLabelTextMeasure.fullMeasure(this.formatDatum(h,e)).width:0)+8):5,y:(e,i)=>"bothEnd"===t.labelLayout?i.valueToY([e[t.yField]])+i.yBandwidth()/2:i.valueToY([e[t.yField]])+i.yBandwidth()/2-t.bar.height/2-5-Math.max(this.nameLabelTextMeasure.fullMeasure(this.formatDatum(t.yField,e)).height,this.orderLabelTextMeasure.fullMeasure(this.formatDatum(h,e)).height)/2},t.rankingIcon.style),{lineWidth:0,stroke:null,visible:e=>!e[c]&&t.rankingIcon.style.visible}),animation:Boolean(t.animation),animationEnter:this.getAnimationEnter(t,"text",e),animationExit:this.getAnimationExit(t,e),animationAppear:this.getAnimationEnter(t,"text",e)}}generateNameLabel(t){const e=t.animation.duration;return{type:"text",dataId:"data",dataKey:l,style:Object.assign(Object.assign({text:e=>this.formatDatum(t.yField,e),x:()=>{var e;return"bothEnd"===t.labelLayout?-10:(t.rankingIcon.style.visible?8+(null!==(e=t.rankingIcon.style.size)&&void 0!==e?e:10):0)+(t.orderLabel.style.visible?5+this.getMaxDataLabelLens(t,h,this.orderLabelTextMeasure):0)},y:(e,i)=>"bothEnd"===t.labelLayout?i.valueToY([e[t.yField]])+i.yBandwidth()/2:i.valueToY([e[t.yField]])+i.yBandwidth()/2-t.bar.height/2-5},t.nameLabel.style),{textAlign:"bothEnd"===t.labelLayout?"right":"left",textBaseline:"bothEnd"===t.labelLayout?"middle":"bottom",visible:e=>!e[c]&&t.nameLabel.style.visible}),animation:Boolean(t.animation),animationEnter:this.getAnimationEnter(t,"text",e),animationExit:this.getAnimationExit(t,e),animationAppear:this.getAnimationEnter(t,"text",e)}}generateOrderLabel(t){const e=t.animation.duration;return{type:"text",dataId:"data",dataKey:l,style:Object.assign(Object.assign({text:t=>this.formatDatum(h,t),x:e=>{var i;return"bothEnd"===t.labelLayout?-(10+this.nameLabelTextMeasure.fullMeasure(this.formatDatum(t.yField,e)).width+5):t.rankingIcon.style.visible?8+(null!==(i=t.rankingIcon.style.size)&&void 0!==i?i:10):0},y:(e,i)=>"bothEnd"===t.labelLayout?i.valueToY([e[t.yField]])+i.yBandwidth()/2:i.valueToY([e[t.yField]])+i.yBandwidth()/2-t.bar.height/2-5},t.orderLabel.style),{textAlign:"bothEnd"===t.labelLayout?"right":"left",textBaseline:"bothEnd"===t.labelLayout?"middle":"bottom",visible:e=>!e[c]&&t.orderLabel.style.visible}),animation:Boolean(t.animation),animationEnter:this.getAnimationEnter(t,"text",e),animationExit:this.getAnimationExit(t,e),animationAppear:this.getAnimationEnter(t,"text",e)}}generateValueLabel(t){const e=t.animation.duration;return{type:"text",dataId:"data",visible:!0,dataKey:l,style:Object.assign(Object.assign({text:e=>this.formatDatum(t.xField,e),x:(e,i)=>"bothEnd"===t.labelLayout?i.getRegion().getLayoutRect().width+this.getMaxDataLabelLens(t,t.xField,this.nameLabelTextMeasure)+5:i.getRegion().getLayoutRect().width,y:(e,i)=>"bothEnd"===t.labelLayout?i.valueToY([e[t.yField]])+i.yBandwidth()/2:i.valueToY([e[t.yField]])+i.yBandwidth()/2-t.bar.height/2-5},t.valueLabel.style),{textAlign:"right",textBaseline:"bothEnd"===t.labelLayout?"middle":"bottom",visible:e=>!e[c]&&t.valueLabel.style.visible}),animation:Boolean(t.animation),animationEnter:this.getAnimationEnter(t,"text",e),animationExit:this.getAnimationExit(t,e),animationAppear:this.getAnimationEnter(t,"text",e)}}transformPaddingSpec(t){var e;t.padding=Object.assign({left:"bothEnd"===t.labelLayout?10+this.getMaxDataLabelLens(t,t.yField,this.nameLabelTextMeasure)+(t.orderLabel.style.visible?5+this.getMaxDataLabelLens(t,h,this.orderLabelTextMeasure):0)+(t.rankingIcon.style.visible?8+(null!==(e=t.rankingIcon.style.size)&&void 0!==e?e:10):0)+5:5,right:"bothEnd"===t.labelLayout?5+this.getMaxDataLabelLens(t,t.yField,this.valueLabelTextMeasure)+5:15,top:0,bottom:0},t.padding)}getMaxDataLabelLens(t,e,i){const n=this.originalData.map((t=>t[c]?0:i.fullMeasure(this.formatDatum(e,t)).width));return Math.max(...n)}formatDatum(t,e){var i;return(null===(i=this.formatMap)||void 0===i?void 0:i[t])?this.formatMap[t](e[t],e):e[t]}getLabelWidth(t,e){return e+t}getAnimationExit(t,e){return"grow"===t.animation.type?{}:{type:"moveOut",options:{direction:"y",orient:"negative",point:(e,i,n)=>{const s=i.getGraphicAttribute("y"),r=(t.height/t.pageSize-t.bar.height)/2;return{y:s-n.height+r}}},duration:"both"===t.animation.type?e/2:e,easing:t.animation.easing}}getAnimationEnter(t,e,i){const{animation:n}=t,{type:s,easing:r}=n,a="both"===s?i/2:i,o="grow"===s?i:i/2,l=[];return"scroll"!==s&&"both"!==s||l.push({type:"moveIn",options:{direction:"y",orient:"negative",excludeChannels:["y"],point:(e,i,n)=>{const s=i.getGraphicAttribute("y"),r=(t.height/t.pageSize-t.bar.height)/2;return{y:s+n.height-r}}},duration:a,easing:r}),"grow"!==s&&"both"!==s||"text"===e||"barBack"===e||l.push({channel:{x:{from:0,to:(t,e)=>e.getGraphicItem().attribute.x}},duration:o,delay:"both"===s?a:0,easing:r}),l}}class u extends e.BaseChart{constructor(){super(...arguments),this.type="rankingList",this.transformerConstructor=d}init(){this.isValid()&&super.init()}isValid(){var t,e,i,n;const{xField:s,yField:r,data:a}=this._spec;return s&&r?!!a||(null===(n=(i=this._option).onError)||void 0===n||n.call(i,"Data is required"),!1):(null===(e=(t=this._option).onError)||void 0===e||e.call(t,"Missing Required Config: `xField`, `yField` "),!1)}}u.type="rankingList",u.view="singleDefault",u.transformerConstructor=d;const p=(t,e)=>{var i,n;if(!(null==e?void 0:e.fields))return t;if(0===t.length)return t;const s=e.fields,r=t[0],a={},o=[];for(const e in s)if(Object.prototype.hasOwnProperty.call(s,e)){const l=s[e];if(!l.type){let n=r;e in r||(n=null!==(i=t.find((t=>e in t)))&&void 0!==i?i:r),l.type="number"==typeof n[e]?"linear":"ordinal"}let h;if("number"==typeof l.sortIndex&&(h={key:e,type:l.type,index:l.sortIndex,sortIndex:{},sortIndexCount:0,sortReverse:!0===l.sortReverse},o.push(h)),(null===(n=l.domain)||void 0===n?void 0:n.length)>0)if("ordinal"===l.type){l._domainCache={},a[e]=l;const t={};l.domain.forEach(((e,i)=>{t[e]=i,l._domainCache[e]=i})),h&&(h.sortIndex=t,h.sortIndexCount=l.domain.length)}else l.domain.length>=2&&(a[e]=l)}return Object.keys(a).length>0&&(t=t.filter((t=>{for(const e in a){const i=a[e];if("ordinal"===i.type){if(!(t[e]in i._domainCache))return!1}else if(i.domain[0]>t[e]||i.domain[1]<t[e])return!1}return!0}))),o.sort(((t,e)=>t.index-e.index)),t.sort(((t,e)=>function(t,e,i){for(let n=0;n<i.length;n++){const s=i[n];let r=0;if("ordinal"===s.type?(void 0===s.sortIndex[e[s.key]]&&(s.sortIndex[e[s.key]]=s.sortIndexCount++),void 0===s.sortIndex[t[s.key]]&&(s.sortIndex[t[s.key]]=s.sortIndexCount++),r=s.sortIndex[t[s.key]]-s.sortIndex[e[s.key]]):"linear"===s.type&&(r=t[s.key]-e[s.key]),s.sortReverse&&(r=-r),0!==r)return r}return 0}(t,e,o))),t};let f=0;const g="_data-view-diff-rank";class m{constructor(t,e){var n=this;let s;this.dataSet=t,this.options=e,this.isDataView=!0,this.target=new i.EventEmitter,this.parseOption=null,this.transformsArr=[],this.isRunning=!1,this.rawData={},this.history=!1,this.parserData={},this.latestData={},this._fields=null,this.reRunAllTransform=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{pushHistory:!0,emitMessage:!0};return n.isRunning=!0,n.resetTransformData(),n.transformsArr.forEach((e=>{n.executeTransform(e,{pushHistory:t.pushHistory,emitMessage:!1}),n.isLastTransform(e)&&n.diffLastData()})),n.isRunning=!1,!1!==t.emitMessage&&n.target.emit("change",[]),n},this.markRunning=()=>{this.isRunning=!0,this.target.emit("markRunning",[])},s=(null==e?void 0:e.name)?e.name:function(){return f>1e8&&(f=0),(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"dataset")+"_"+f++}("dataview"),this.name=s,(null==e?void 0:e.history)&&(this.history=e.history,this.historyData=[]),this.dataSet.setDataView(s,this),this.setFields(null==e?void 0:e.fields)}parse(t,e){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];var n;this.isRunning=!0,i&&this.target.emit("beforeParse",[]),e&&(this.parseOption=e);const s=this.cloneParseData(t,e);if(null==e?void 0:e.type){const t=(null!==(n=this.dataSet.getParser(e.type))&&void 0!==n?n:this.dataSet.getParser("bytejson"))(s,e.options,this);this.rawData=s,this.parserData=t,this.history&&this.historyData.push(s,t),this.latestData=t}else this.parserData=s,this.rawData=s,this.history&&this.historyData.push(s),this.latestData=s;return this.isRunning=!1,i&&this.target.emit("afterParse",[]),this}transform(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.isRunning=!0,t&&t.type){let i=!0;if("fields"===t.type){this._fields=t.options.fields;const e=this.transformsArr.findIndex((e=>e.type===t.type));e>=0&&(i=!1,this.transformsArr[e].options.fields=this._fields)}if(i&&this.transformsArr.push(t),e){const e=this.isLastTransform(t);this.executeTransform(t),e&&this.diffLastData()}}return this.sortTransform(),this.isRunning=!1,this}isLastTransform(t){return this.transformsArr[this.transformsArr.length-1]===t}sortTransform(){this.transformsArr.length>=2&&this.transformsArr.sort(((t,e)=>{var i,n;return(null!==(i=t.level)&&void 0!==i?i:0)-(null!==(n=e.level)&&void 0!==n?n:0)}))}executeTransform(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{pushHistory:!0,emitMessage:!0};const{pushHistory:i,emitMessage:n}=e,s=this.dataSet.getTransform(t.type)(this.latestData,t.options);this.history&&!1!==i&&this.historyData.push(s),this.latestData=s,!1!==n&&this.target.emit("change",[])}resetTransformData(){this.latestData=this.parserData,this.history&&(this.historyData.length=0,this.historyData.push(this.rawData,this.parserData))}enableDiff(t){this._diffData=!0,this._diffKeys=t,this._diffMap=new Map,this._diffRank=0}disableDiff(){this._diffData=!1,this._diffMap=null,this._diffRank=null}resetDiff(){this._diffMap=new Map,this._diffRank=0}diffLastData(){var t;if(!this._diffData)return;if(!this.latestData.forEach)return;if(!(null===(t=this._diffKeys)||void 0===t?void 0:t.length))return;const e=this._diffRank+1;if(0===this._diffRank)this.latestData.forEach((t=>{t[g]=e,this._diffMap.set(this._diffKeys.reduce(((e,i)=>e+t[i]),""),t)})),this.latestDataAUD={add:Array.from(this.latestData),del:[],update:[]};else{let t;this.latestDataAUD={add:[],del:[],update:[]},this.latestData.forEach((i=>{i[g]=e,t=this._diffKeys.reduce(((t,e)=>t+i[e]),""),this._diffMap.get(t)?this.latestDataAUD.update.push(i):this.latestDataAUD.add.push(i),this._diffMap.set(t,i)})),this._diffMap.forEach(((t,i)=>{t[g]<e&&(this.latestDataAUD.del.push(t),this._diffMap.delete(i))}))}this._diffRank=e}cloneParseData(t,e){let n=!1;return t instanceof m||!0!==(null==e?void 0:e.clone)||(n=!0),n?i.cloneDeep(t):t}parseNewData(t,e){this.parse(t,e||this.parseOption),this.reRunAllTransform()}updateRawData(t,e){const i=this.cloneParseData(t,e);this.rawData=i,this.parserData=i,this.latestData=i,this.reRunAllTransform()}getFields(){var t;return this._fields?this._fields:"dataview"===(null===(t=this.parseOption)||void 0===t?void 0:t.type)&&1===this.rawData.length&&this.rawData[0].getFields?this.rawData[0].getFields():null}setFields(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this._fields=t&&e?i.merge({},this._fields,t):t;const n=this.transformsArr.find((t=>"fields"===t.type));!i.isNil(this._fields)&&i.isNil(n)?(this.dataSet.registerTransform("fields",p),this.transform({type:"fields",options:{fields:this._fields}},!1)):n&&(n.options.fields=this._fields)}destroy(){this.dataSet.removeDataView(this.name),this._diffMap=null,this._diffRank=null,this.latestData=null,this.rawData=null,this.parserData=null,this.transformsArr=null,this.target=null}}
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@visactor/vchart"),require("@visactor/vutils")):"function"==typeof define&&define.amd?define(["exports","@visactor/vchart","@visactor/vutils"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).VChartExtension={},t.VChart,t.VUtils)}(this,(function(t,e,i){"use strict";class n extends e.BaseChartSpecTransformer{transformSpec(t){const{timeData:e,timeNodes:n}=function(t){const{xField:e,yField:n,timeField:s,data:r,topN:a=10,icon:o}=t,l=new Set,h=new Map;return r.sort(((t,i)=>Number(i[e])-Number(t[e]))),r.forEach((t=>{const e=t[s];i.isValid(e)&&l.add(e),h.has(e)||h.set(e,[]);const r=h.get(e);if(r.length<a){const e=Object.assign({},t);o&&o[e[n]]&&(e.icon=o[e[n]]),r.push(e)}})),{timeData:h,timeNodes:Array.from(l).sort()}}(t),{interval:a,xField:o,yField:l,color:h,icon:c,iconPosition:d,iconShape:u,timeLabel:p,label:f,nameLabel:g,xAxis:m,yAxis:y}=t,b=a||1e3,v=Math.min(b,500);if(t.type="common",t.data=[{id:"timeData",values:e.get(n[0])},{id:"time",values:[{time:n[0]}]}],t.color={specified:Object.assign({},h)},t.region=[{clip:!0}],t.series=[{type:"bar",id:"ranking-bar",dataId:"timeData",direction:"horizontal",yField:l,xField:o,seriesField:l,extensionMark:[],label:s(f,Object.assign(Object.assign({},g),{yField:l}))}],t.axes=function(t={},e={}){const i={orient:"left",type:"band",inverse:!0,label:{style:e.label},domainLine:{style:e.domainLine},grid:{style:e.grid}},n={orient:"bottom",type:"linear",nice:!1,animation:!0,label:{style:t.label},domainLine:{style:t.domainLine},grid:{style:t.grid},innerOffset:{right:"10%"}};t.label&&(n.label=t.label);return[i,n]}(m,y),t.player={type:"continuous",auto:!0,loop:!1,interval:b,specs:n.map((t=>({data:[{id:"timeData",values:e.get(t)},{id:"time",values:[{time:t}]}]})))},t.tooltip={visible:!1},t.customMark=[],function(t,{interval:e,exchangeDuration:i}){t.animationAppear=!1,t.animationUpdate={bar:[{type:"update",options:{excludeChannels:["y"]},easing:"linear",duration:e},{channel:["y"],easing:"circInOut",duration:i}],axis:{duration:e,easing:"linear"}},t.animationEnter={bar:[{type:"moveIn",duration:i,easing:"cubicInOut",options:{direction:"y",orient:"negative",point:(t,e,i)=>({y:i.groupHeight+e.getBounds().height()})}}]},t.animationExit={bar:[{type:"moveOut",duration:i,easing:"cubicInOut",options:{direction:"y",orient:"negative"}}]}}(t,{interval:b,exchangeDuration:v}),p&&!1===p.visible||t.customMark.push(function(t={}){return{type:"text",dataId:"time",style:Object.assign({textBaseline:"bottom",fontSize:200,textAlign:"end",fontWeight:600,text:t=>t.time,x:(t,e)=>{var i;return(null===(i=e.vchart.getChart().getCanvasRect())||void 0===i?void 0:i.width)-50},y:(t,e)=>{var i;return(null===(i=e.vchart.getChart().getCanvasRect())||void 0===i?void 0:i.height)-80},fill:"grey",fillOpacity:.5},t)}}(p.style)),c){const e=function(t="bar-end",e="circle",{interval:i,exchangeDuration:n}){return{type:"symbol",dataId:"timeData",style:{symbolType:e,stroke:"white",lineWidth:1,size:(t,e)=>{var i,n;const s=e.vchart,r=null===(i=s.getChart())||void 0===i?void 0:i.getSeriesInIndex(0)[0];if(s&&r){const t=null!==(n=r.getYAxisHelper().getBandwidth(0))&&void 0!==n?n:0;return Math.max(t-4,0)}return 10},background:t=>t.icon,x:(e,i)=>{var n,s;const r=i.vchart,a=null===(n=r.getChart())||void 0===n?void 0:n.getSeriesInIndex(0)[0];if(r&&a){const i=null!==(s=a.getYAxisHelper().getBandwidth(0))&&void 0!==s?s:0;return"bar-start"===t?i/2:"axis"===t?-i/2:a.dataToPositionX(e)-i/2}},y:(t,e)=>{var i,n;const s=e.vchart,r=null===(i=s.getChart())||void 0===i?void 0:i.getSeriesInIndex(0)[0];if(s&&r){const e=null!==(n=r.getYAxisHelper().getBandwidth(0))&&void 0!==n?n:0;return r.dataToPositionY(t)+e/2}},scaleY:"rect"===e?1.2:1},animationUpdate:r(i,n),animationEnter:[{type:"moveIn",duration:n,easing:"cubicInOut",options:{direction:"y",orient:"negative",point:(t,e,i)=>({y:i.groupHeight+e.getBounds().height()})}}],animationExit:[{type:"moveOut",duration:n,easing:"cubicInOut",options:{direction:"y",orient:"negative"}}]}}(d,u,{interval:b,exchangeDuration:v});t.series[0].extensionMark.push(e)}super.transformSpec(t)}}function s(t={},e){var i,n,s,r;const a=[];return!1!==t.visible&&a.push({visible:!0,overlap:!1,style:Object.assign({fill:"rgb(64, 64, 64)"},t.style),smartInvert:{fillStrategy:(null===(i=t.style)||void 0===i?void 0:i.fill)?"null":void 0,strokeStrategy:(null===(n=t.style)||void 0===n?void 0:n.stroke)?"null":void 0}}),e.visible&&a.push({visible:!0,overlap:!1,style:Object.assign({},e.style),smartInvert:{fillStrategy:(null===(s=e.style)||void 0===s?void 0:s.fill)?"null":void 0,strokeStrategy:(null===(r=e.style)||void 0===r?void 0:r.stroke)?"null":void 0},position:"bar-end"===e.position?"inside-right":"inside-left",formatter:`{${e.yField}}`}),a}function r(t,e){return[{duration:e,easing:"cubicInOut",channel:["y"]},{options:{excludeChannels:["y"]},channel:["x","x2","x1"],easing:"linear",duration:t}]}class a extends e.BaseChart{constructor(){super(...arguments),this.type="rankingBar",this.transformerConstructor=n}init(){this.isValid()&&super.init()}isValid(){var t,e,i,n;const{xField:s,yField:r,timeField:a,data:o}=this._spec;return s&&r&&a?!!o||(null===(n=(i=this._option).onError)||void 0===n||n.call(i,"Data is required"),!1):(null===(e=(t=this._option).onError)||void 0===e||e.call(t,"Missing Required Config: `xField`, `yField`, `timeField` "),!1)}}a.type="rankingBar",a.view="singleDefault",a.transformerConstructor=n;const o={width:400,height:225,labelLayout:"top",bar:{height:100,style:{cornerRadius:5}},barBackground:{type:"rect",style:{fill:"rgba(255,255,255,0.1)",cornerRadius:5}},rankingIcon:{visible:!0,style:{fill:"rgba(253,253,253,0.5)",size:12}},nameLabel:{visible:!0,style:{fontSize:20,fontWeight:"normal",fill:"rgba(255,255,255,0.7)",textBaseline:"middle"}},orderLabel:{visible:!0,style:{fontSize:20,fontWeight:"normal",fill:"rgba(255,255,255,0.7)",textBaseline:"middle"}},valueLabel:{visible:!0,style:{fontSize:14,fontWeight:"normal",fill:"rgba(255,255,255,1)",textBaseline:"middle"}},pageSize:5,scrollSize:1,animation:{type:"both",interval:4e3,duration:2e3,easing:"linear"}},l="dataKey",h="VCHART_ORDER",c="SUPPLY_DATA_KEY";class d extends e.CommonChartSpecTransformer{constructor(){super(...arguments),this.formatMap={},this.paginateDataArr=t=>{const{data:e,scrollSize:i=1,pageSize:n=5}=t,s={};let r=0;for(let a=0;a<e.length;a+=i)if(r++,s[`page${r}`]=e.slice(a,a+n),a+n-1>=e.length-1){e.push(...Array.from({length:a+n-e.length},(e=>({[t.yField]:100*Math.random(),[t.xField]:null,[c]:!0}))));break}return{orderCount:r,result:s}},this.processRankingData=t=>{const e=[];t.data.forEach(((t,e)=>t[h]=e+1<10?`0${e+1}`:e+1));const i=this.paginateDataArr(t).result,n=this.paginateDataArr(t).orderCount,s=t.pageSize-i[`page${n}`].length;return i[`page${n}`].push(...Array.from({length:s},(e=>({[t.yField]:100*Math.random(),[t.xField]:null,[c]:!0})))),Object.keys(i).forEach((t=>{e.push({data:[{id:"datas",values:i[t].map(((e,i)=>Object.assign(Object.assign({},e),{[l]:t+"_"+i+"_"+(new Date).getTime()})))},{id:"order",values:[{order:t}]}]})})),1===e.length&&e.push({data:[{id:"datas",values:i.page1.map(((t,e)=>Object.assign(Object.assign({},t),{[l]:"page2_"+e+"_"+(new Date).getTime()})))},{id:"order",values:[{order:"page2"}]}]}),e}}transformSpec(t){super.transformSpec(t),this.normalizeSpec(t),this.upgradeTextMeasure(t),this.upgradeFormatMap(t),this.processData(t),this.transformBaseSpec(t),this.transformAnimationSpec(t),this.transformAxesSpec(t),t.extensionMark=[this.generateBarBackground(t),...this.generateDecorateHaloIcons(t),this.generateRankingIcon(t),this.generateNameLabel(t),this.generateOrderLabel(t),this.generateValueLabel(t)],this.transformPaddingSpec(t),super.transformSpec(t)}normalizeSpec(t){(function t(e,i){for(const n in i)"object"==typeof i[n]&&null!==i[n]?(e.hasOwnProperty(n)||(e[n]=Array.isArray(i[n])?[]:{}),t(e[n],i[n])):e.hasOwnProperty(n)||"object"!=typeof e||(e[n]=i[n]);return e})(t,o),((t,e)=>{e.forEach((e=>{var i,n,s,r,a,o;t[e]=Object.assign(Object.assign({},t[e]),{style:Object.assign(Object.assign({},null===(i=t[e])||void 0===i?void 0:i.style),{visible:null===(o=null!==(r=null===(s=null===(n=t[e])||void 0===n?void 0:n.style)||void 0===s?void 0:s.visible)&&void 0!==r?r:null===(a=t[e])||void 0===a?void 0:a.visible)||void 0===o||o})})}))})(t,["barBackground","rankingIcon","decorateHaloIcon","orderLabel","nameLabel","valueLabel"])}upgradeTextMeasure(t){var e,n,s,r,a,o,l,h,c;null===(e=this.nameLabelTextMeasure)||void 0===e||e.release(),null===(n=this.valueLabelTextMeasure)||void 0===n||n.release(),null===(s=this.orderLabelTextMeasure)||void 0===s||s.release(),this.nameLabelTextMeasure=new i.TextMeasure({defaultFontParams:null!==(a=null===(r=t.nameLabel)||void 0===r?void 0:r.style)&&void 0!==a?a:{}}),this.valueLabelTextMeasure=new i.TextMeasure({defaultFontParams:null!==(l=null===(o=t.valueLabel)||void 0===o?void 0:o.style)&&void 0!==l?l:{}}),this.orderLabelTextMeasure=new i.TextMeasure({defaultFontParams:null!==(c=null===(h=t.orderLabel)||void 0===h?void 0:h.style)&&void 0!==c?c:{}})}upgradeFormatMap(t){this.formatMap[t.yField]=t.nameLabel.formatMethod,this.formatMap[t.xField]=t.valueLabel.formatMethod,this.formatMap[h]=t.orderLabel.formatMethod}processData(t){var e;(null===(e=t.data[0])||void 0===e?void 0:e.values)||(this.dataSpecs=this.processRankingData(t),this.originalData=t.data,t.data=this.dataSpecs[0].data)}transformBaseSpec(t){var e,i,n;t.type="common",t.dataKey=l,t.series=[{type:"bar",direction:"horizontal",xField:t.xField,yField:t.yField,barWidth:null!==(i=null===(e=t.bar)||void 0===e?void 0:e.height)&&void 0!==i?i:10,bar:Object.assign(Object.assign({},t.bar),{style:Object.assign(Object.assign({},null===(n=t.bar)||void 0===n?void 0:n.style),{x1:0,visible:e=>{var i,n;return!e[c]&&(null===(n=null===(i=t.bar)||void 0===i?void 0:i.style)||void 0===n||n)}})})}]}transformAnimationSpec(t){const e=t.animation.duration;t.animation&&(t.player=Object.assign(Object.assign({},t.player),{specs:this.dataSpecs,auto:!0,visible:!1,interval:t.animation.interval+t.animation.duration/2,loop:!0}),t.animationExit=this.getAnimationExit(t,e),t.animationAppear=this.getAnimationEnter(t,"rect",e),t.animationEnter=this.getAnimationEnter(t,"rect",e))}transformAxesSpec(t){const{min:e,max:i}=((t,e)=>{let i,n;const s=t.map((t=>t[e])).filter((t=>null!=t));if(0===s.length)i=0,n=1;else{i=Math.min(...s)-(Math.max(...s)-Math.min(...s))/3,n=(Math.max(...s)-i)/.8+i;const t=10,e=i;i===n&&(i=e-t,n=(4*e+t)/4)}return{min:i,max:n}})(this.originalData,t.xField);t.axes=[{orient:"left",type:"band",visible:!1,inverse:!0},{orient:"bottom",label:{visible:!0},type:"linear",visible:!1,min:e,max:i}]}generateBarBackground(t){var e;const i=t.animation.duration;return{type:t.barBackground.type,dataId:"data",visible:!0,dataKey:l,zIndex:-99,state:null===(e=t.barBackground)||void 0===e?void 0:e.state,style:Object.assign(Object.assign({x:(e,i)=>"symbol"===t.barBackground.type?i.getRegion().getLayoutRect().width/2:0,y:(e,i)=>i.valueToY([e[t.yField]])+i.yBandwidth()/2-("symbol"===t.barBackground.type?0:t.bar.height/2),size:(e,i)=>[i.getRegion().getLayoutRect().width,t.bar.height],width:(t,e)=>e.getRegion().getLayoutRect().width,height:t.bar.height},t.barBackground.style),{visible:e=>!e[c]&&t.barBackground.style.visible}),animation:Boolean(t.animation),animationEnter:this.getAnimationEnter(t,"barBack",i),animationExit:this.getAnimationExit(t,i),animationAppear:this.getAnimationEnter(t,"barBack",i)}}generateDecorateHaloIcons(t){const e=t.animation.duration;return t.decorateHaloIcons.map((i=>({type:"symbol",dataId:"data",visible:!0,dataKey:l,state:null==i?void 0:i.state,style:Object.assign(Object.assign({x:(e,i)=>{if(void 0!==e[t.xField]&&null!==e[t.xField])return i.valueToX([e[t.xField]])},y:(e,i)=>i.valueToY([e[t.yField]])+i.yBandwidth()/2},i.style),{visible:t=>!t[c]&&i.style.visible}),animation:Boolean(t.animation),animationEnter:this.getAnimationEnter(t,"symbol",e),animationExit:this.getAnimationExit(t,e),animationAppear:this.getAnimationEnter(t,"symbol",e)})))}generateRankingIcon(t){const e=t.animation.duration;return{type:"symbol",dataId:"data",visible:!0,dataKey:l,state:t.rankingIcon.state,style:Object.assign(Object.assign({x:e=>"bothEnd"===t.labelLayout?-(10+this.nameLabelTextMeasure.fullMeasure(this.formatDatum(t.yField,e)).width+(t.orderLabel.style.visible?5+this.orderLabelTextMeasure.fullMeasure(this.formatDatum(h,e)).width:0)+8):5,y:(e,i)=>"bothEnd"===t.labelLayout?i.valueToY([e[t.yField]])+i.yBandwidth()/2:i.valueToY([e[t.yField]])+i.yBandwidth()/2-t.bar.height/2-5-Math.max(this.nameLabelTextMeasure.fullMeasure(this.formatDatum(t.yField,e)).height,this.orderLabelTextMeasure.fullMeasure(this.formatDatum(h,e)).height)/2},t.rankingIcon.style),{lineWidth:0,stroke:null,visible:e=>!e[c]&&t.rankingIcon.style.visible}),animation:Boolean(t.animation),animationEnter:this.getAnimationEnter(t,"text",e),animationExit:this.getAnimationExit(t,e),animationAppear:this.getAnimationEnter(t,"text",e)}}generateNameLabel(t){var e;const i=t.animation.duration;return{type:"text",dataId:"data",dataKey:l,state:null===(e=t.nameLabel)||void 0===e?void 0:e.state,style:Object.assign(Object.assign({text:e=>this.formatDatum(t.yField,e),x:()=>{var e;return"bothEnd"===t.labelLayout?-10:(t.rankingIcon.style.visible?8+(null!==(e=t.rankingIcon.style.size)&&void 0!==e?e:10):0)+(t.orderLabel.style.visible?5+this.getMaxDataLabelLens(t,h,this.orderLabelTextMeasure):0)},y:(e,i)=>"bothEnd"===t.labelLayout?i.valueToY([e[t.yField]])+i.yBandwidth()/2:i.valueToY([e[t.yField]])+i.yBandwidth()/2-t.bar.height/2-5},t.nameLabel.style),{textAlign:"bothEnd"===t.labelLayout?"right":"left",textBaseline:"bothEnd"===t.labelLayout?"middle":"bottom",visible:e=>!e[c]&&t.nameLabel.style.visible}),animation:Boolean(t.animation),animationEnter:this.getAnimationEnter(t,"text",i),animationExit:this.getAnimationExit(t,i),animationAppear:this.getAnimationEnter(t,"text",i)}}generateOrderLabel(t){var e;const i=t.animation.duration;return{type:"text",dataId:"data",dataKey:l,state:null===(e=t.orderLabel)||void 0===e?void 0:e.state,style:Object.assign(Object.assign({text:t=>this.formatDatum(h,t),x:e=>{var i;return"bothEnd"===t.labelLayout?-(10+this.nameLabelTextMeasure.fullMeasure(this.formatDatum(t.yField,e)).width+5):t.rankingIcon.style.visible?8+(null!==(i=t.rankingIcon.style.size)&&void 0!==i?i:10):0},y:(e,i)=>"bothEnd"===t.labelLayout?i.valueToY([e[t.yField]])+i.yBandwidth()/2:i.valueToY([e[t.yField]])+i.yBandwidth()/2-t.bar.height/2-5},t.orderLabel.style),{textAlign:"bothEnd"===t.labelLayout?"right":"left",textBaseline:"bothEnd"===t.labelLayout?"middle":"bottom",visible:e=>!e[c]&&t.orderLabel.style.visible}),animation:Boolean(t.animation),animationEnter:this.getAnimationEnter(t,"text",i),animationExit:this.getAnimationExit(t,i),animationAppear:this.getAnimationEnter(t,"text",i)}}generateValueLabel(t){const e=t.animation.duration;return{type:"text",dataId:"data",visible:!0,dataKey:l,state:{blur:{opacity:.2}},style:Object.assign(Object.assign({text:e=>this.formatDatum(t.xField,e),x:(e,i)=>"bothEnd"===t.labelLayout?i.getRegion().getLayoutRect().width+this.getMaxDataLabelLens(t,t.xField,this.nameLabelTextMeasure)+5:i.getRegion().getLayoutRect().width,y:(e,i)=>"bothEnd"===t.labelLayout?i.valueToY([e[t.yField]])+i.yBandwidth()/2:i.valueToY([e[t.yField]])+i.yBandwidth()/2-t.bar.height/2-5},t.valueLabel.style),{textAlign:"right",textBaseline:"bothEnd"===t.labelLayout?"middle":"bottom",visible:e=>!e[c]&&t.valueLabel.style.visible}),animation:Boolean(t.animation),animationEnter:this.getAnimationEnter(t,"text",e),animationExit:this.getAnimationExit(t,e),animationAppear:this.getAnimationEnter(t,"text",e)}}transformPaddingSpec(t){var e;const i=Math.max(...t.decorateHaloIcons.map((t=>{var e;return null!==(e=t.style.size)&&void 0!==e?e:18})));t.padding=Object.assign({left:"bothEnd"===t.labelLayout?10+this.getMaxDataLabelLens(t,t.yField,this.nameLabelTextMeasure)+(t.orderLabel.style.visible?5+this.getMaxDataLabelLens(t,h,this.orderLabelTextMeasure):0)+(t.rankingIcon.style.visible?8+(null!==(e=t.rankingIcon.style.size)&&void 0!==e?e:10):0)+5:5+i/2,right:"bothEnd"===t.labelLayout?5+this.getMaxDataLabelLens(t,t.yField,this.valueLabelTextMeasure)+5:15,top:0,bottom:0},t.padding)}getMaxDataLabelLens(t,e,i){const n=this.originalData.map((t=>t[c]?0:i.fullMeasure(this.formatDatum(e,t)).width));return Math.max(...n)}formatDatum(t,e){var i;return(null===(i=this.formatMap)||void 0===i?void 0:i[t])?this.formatMap[t](e[t],e):e[t]}getLabelWidth(t,e){return e+t}getAnimationExit(t,e){return"grow"===t.animation.type?{}:{type:"moveOut",options:{direction:"y",orient:"negative",point:(e,i,n)=>{const s=i.getGraphicAttribute("y"),r=(t.height/t.pageSize-t.bar.height)/2;return{y:s-n.height+r}}},duration:"both"===t.animation.type?e/2:e,easing:t.animation.easing}}getAnimationEnter(t,e,i){const{animation:n}=t,{type:s,easing:r}=n,a="both"===s?i/2:i,o="grow"===s?i:i/2,l=[];return"scroll"!==s&&"both"!==s||l.push({type:"moveIn",options:{direction:"y",orient:"negative",excludeChannels:["y"],point:(e,i,n)=>{const s=i.getGraphicAttribute("y"),r=(t.height/t.pageSize-t.bar.height)/2;return{y:s+n.height-r}}},duration:a,easing:r}),"grow"!==s&&"both"!==s||"text"===e||"barBack"===e||l.push({channel:{x:{from:0,to:(t,e)=>e.getGraphicItem().attribute.x}},duration:o,delay:"both"===s?a:0,easing:r}),l}}class u extends e.BaseChart{constructor(){super(...arguments),this.type="rankingList",this.transformerConstructor=d}init(){this.isValid()&&super.init()}isValid(){var t,e,i,n;const{xField:s,yField:r,data:a}=this._spec;return s&&r?!!a||(null===(n=(i=this._option).onError)||void 0===n||n.call(i,"Data is required"),!1):(null===(e=(t=this._option).onError)||void 0===e||e.call(t,"Missing Required Config: `xField`, `yField` "),!1)}}u.type="rankingList",u.view="singleDefault",u.transformerConstructor=d;const p=(t,e)=>{var i,n;if(!(null==e?void 0:e.fields))return t;if(0===t.length)return t;const s=e.fields,r=t[0],a={},o=[];for(const e in s)if(Object.prototype.hasOwnProperty.call(s,e)){const l=s[e];if(!l.type){let n=r;e in r||(n=null!==(i=t.find((t=>e in t)))&&void 0!==i?i:r),l.type="number"==typeof n[e]?"linear":"ordinal"}let h;if("number"==typeof l.sortIndex&&(h={key:e,type:l.type,index:l.sortIndex,sortIndex:{},sortIndexCount:0,sortReverse:!0===l.sortReverse},o.push(h)),(null===(n=l.domain)||void 0===n?void 0:n.length)>0)if("ordinal"===l.type){l._domainCache={},a[e]=l;const t={};l.domain.forEach(((e,i)=>{t[e]=i,l._domainCache[e]=i})),h&&(h.sortIndex=t,h.sortIndexCount=l.domain.length)}else l.domain.length>=2&&(a[e]=l)}return Object.keys(a).length>0&&(t=t.filter((t=>{for(const e in a){const i=a[e];if("ordinal"===i.type){if(!(t[e]in i._domainCache))return!1}else if(i.domain[0]>t[e]||i.domain[1]<t[e])return!1}return!0}))),o.sort(((t,e)=>t.index-e.index)),t.sort(((t,e)=>function(t,e,i){for(let n=0;n<i.length;n++){const s=i[n];let r=0;if("ordinal"===s.type?(void 0===s.sortIndex[e[s.key]]&&(s.sortIndex[e[s.key]]=s.sortIndexCount++),void 0===s.sortIndex[t[s.key]]&&(s.sortIndex[t[s.key]]=s.sortIndexCount++),r=s.sortIndex[t[s.key]]-s.sortIndex[e[s.key]]):"linear"===s.type&&(r=t[s.key]-e[s.key]),s.sortReverse&&(r=-r),0!==r)return r}return 0}(t,e,o))),t};let f=0;const g="_data-view-diff-rank";class m{constructor(t,e){var n=this;let s;this.dataSet=t,this.options=e,this.isDataView=!0,this.target=new i.EventEmitter,this.parseOption=null,this.transformsArr=[],this.isRunning=!1,this.rawData={},this.history=!1,this.parserData={},this.latestData={},this._fields=null,this.reRunAllTransform=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{pushHistory:!0,emitMessage:!0};return n.isRunning=!0,n.resetTransformData(),n.transformsArr.forEach((e=>{n.executeTransform(e,{pushHistory:t.pushHistory,emitMessage:!1}),n.isLastTransform(e)&&n.diffLastData()})),n.isRunning=!1,!1!==t.emitMessage&&n.target.emit("change",[]),n},this.markRunning=()=>{this.isRunning=!0,this.target.emit("markRunning",[])},s=(null==e?void 0:e.name)?e.name:function(){return f>1e8&&(f=0),(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"dataset")+"_"+f++}("dataview"),this.name=s,(null==e?void 0:e.history)&&(this.history=e.history,this.historyData=[]),this.dataSet.setDataView(s,this),this.setFields(null==e?void 0:e.fields)}parse(t,e){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];var n;this.isRunning=!0,i&&this.target.emit("beforeParse",[]),e&&(this.parseOption=e);const s=this.cloneParseData(t,e);if(null==e?void 0:e.type){const t=(null!==(n=this.dataSet.getParser(e.type))&&void 0!==n?n:this.dataSet.getParser("bytejson"))(s,e.options,this);this.rawData=s,this.parserData=t,this.history&&this.historyData.push(s,t),this.latestData=t}else this.parserData=s,this.rawData=s,this.history&&this.historyData.push(s),this.latestData=s;return this.isRunning=!1,i&&this.target.emit("afterParse",[]),this}transform(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.isRunning=!0,t&&t.type){let i=!0;if("fields"===t.type){this._fields=t.options.fields;const e=this.transformsArr.findIndex((e=>e.type===t.type));e>=0&&(i=!1,this.transformsArr[e].options.fields=this._fields)}if(i&&this.transformsArr.push(t),e){const e=this.isLastTransform(t);this.executeTransform(t),e&&this.diffLastData()}}return this.sortTransform(),this.isRunning=!1,this}isLastTransform(t){return this.transformsArr[this.transformsArr.length-1]===t}sortTransform(){this.transformsArr.length>=2&&this.transformsArr.sort(((t,e)=>{var i,n;return(null!==(i=t.level)&&void 0!==i?i:0)-(null!==(n=e.level)&&void 0!==n?n:0)}))}executeTransform(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{pushHistory:!0,emitMessage:!0};const{pushHistory:i,emitMessage:n}=e,s=this.dataSet.getTransform(t.type)(this.latestData,t.options);this.history&&!1!==i&&this.historyData.push(s),this.latestData=s,!1!==n&&this.target.emit("change",[])}resetTransformData(){this.latestData=this.parserData,this.history&&(this.historyData.length=0,this.historyData.push(this.rawData,this.parserData))}enableDiff(t){this._diffData=!0,this._diffKeys=t,this._diffMap=new Map,this._diffRank=0}disableDiff(){this._diffData=!1,this._diffMap=null,this._diffRank=null}resetDiff(){this._diffMap=new Map,this._diffRank=0}diffLastData(){var t;if(!this._diffData)return;if(!this.latestData.forEach)return;if(!(null===(t=this._diffKeys)||void 0===t?void 0:t.length))return;const e=this._diffRank+1;if(0===this._diffRank)this.latestData.forEach((t=>{t[g]=e,this._diffMap.set(this._diffKeys.reduce(((e,i)=>e+t[i]),""),t)})),this.latestDataAUD={add:Array.from(this.latestData),del:[],update:[]};else{let t;this.latestDataAUD={add:[],del:[],update:[]},this.latestData.forEach((i=>{i[g]=e,t=this._diffKeys.reduce(((t,e)=>t+i[e]),""),this._diffMap.get(t)?this.latestDataAUD.update.push(i):this.latestDataAUD.add.push(i),this._diffMap.set(t,i)})),this._diffMap.forEach(((t,i)=>{t[g]<e&&(this.latestDataAUD.del.push(t),this._diffMap.delete(i))}))}this._diffRank=e}cloneParseData(t,e){let n=!1;return t instanceof m||!0!==(null==e?void 0:e.clone)||(n=!0),n?i.cloneDeep(t):t}parseNewData(t,e){this.parse(t,e||this.parseOption),this.reRunAllTransform()}updateRawData(t,e){const i=this.cloneParseData(t,e);this.rawData=i,this.parserData=i,this.latestData=i,this.reRunAllTransform()}getFields(){var t;return this._fields?this._fields:"dataview"===(null===(t=this.parseOption)||void 0===t?void 0:t.type)&&1===this.rawData.length&&this.rawData[0].getFields?this.rawData[0].getFields():null}setFields(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this._fields=t&&e?i.merge({},this._fields,t):t;const n=this.transformsArr.find((t=>"fields"===t.type));!i.isNil(this._fields)&&i.isNil(n)?(this.dataSet.registerTransform("fields",p),this.transform({type:"fields",options:{fields:this._fields}},!1)):n&&(n.options.fields=this._fields)}destroy(){this.dataSet.removeDataView(this.name),this._diffMap=null,this._diffRank=null,this.latestData=null,this.rawData=null,this.parserData=null,this.transformsArr=null,this.target=null}}
2
2
  /*! *****************************************************************************
3
3
  Copyright (c) Microsoft Corporation.
4
4
 
@@ -1,3 +1,5 @@
1
+ import { IMarkStateSpec, IMarkStateStyleSpec } from '@visactor/vchart';
2
+ import { StateValue } from '@visactor/vchart/src/compile/mark';
1
3
  import { Datum } from '@visactor/vchart/src/typings/common';
2
4
  import { ITextGraphicAttribute, ISymbolGraphicAttribute, IRectGraphicAttribute, EasingType } from '@visactor/vrender-core';
3
5
  type IRankingListData = Datum[];
@@ -12,36 +14,43 @@ export interface IRankingListSpec {
12
14
  bar?: {
13
15
  height?: number;
14
16
  style?: IRectGraphicAttribute;
17
+ state?: Record<StateValue, IMarkStateSpec<IRectGraphicAttribute> | IMarkStateStyleSpec<IRectGraphicAttribute>>;
15
18
  };
16
19
  barBackground?: {
17
20
  visible?: boolean;
18
21
  type?: string;
19
22
  style?: ISymbolGraphicAttribute | IRectGraphicAttribute;
23
+ state?: Record<StateValue, IMarkStateSpec<ISymbolGraphicAttribute | IRectGraphicAttribute> | IMarkStateStyleSpec<ISymbolGraphicAttribute | IRectGraphicAttribute>>;
20
24
  };
21
25
  rankingIcon?: {
22
26
  visible?: boolean;
23
27
  style?: ISymbolGraphicAttribute;
28
+ state?: Record<StateValue, IMarkStateSpec<ISymbolGraphicAttribute> | IMarkStateStyleSpec<ISymbolGraphicAttribute>>;
24
29
  };
25
30
  decorateHaloIcons?: [
26
31
  {
27
32
  visible?: boolean;
28
33
  style?: ISymbolGraphicAttribute;
34
+ state?: Record<StateValue, IMarkStateSpec<ISymbolGraphicAttribute> | IMarkStateStyleSpec<ISymbolGraphicAttribute>>;
29
35
  }
30
36
  ];
31
37
  orderLabel?: {
32
38
  visible?: boolean;
33
39
  style?: ITextGraphicAttribute;
34
40
  formatMethod?: (text: string, datum: Datum) => string;
41
+ state?: Record<StateValue, IMarkStateSpec<ITextGraphicAttribute> | IMarkStateStyleSpec<ITextGraphicAttribute>>;
35
42
  };
36
43
  nameLabel?: {
37
44
  visible?: boolean;
38
45
  style?: ITextGraphicAttribute;
39
46
  formatMethod?: (text: string, datum: Datum) => string;
47
+ state?: Record<StateValue, IMarkStateSpec<ITextGraphicAttribute> | IMarkStateStyleSpec<ITextGraphicAttribute>>;
40
48
  };
41
49
  valueLabel?: {
42
50
  visible?: boolean;
43
51
  style?: ITextGraphicAttribute;
44
52
  formatMethod?: (text: string, datum: Datum) => string;
53
+ state?: Record<StateValue, IMarkStateSpec<ITextGraphicAttribute> | IMarkStateStyleSpec<ITextGraphicAttribute>>;
45
54
  };
46
55
  pageSize?: number;
47
56
  scrollSize?: number;
@@ -1 +1 @@
1
- {"version":3,"sources":["charts/ranking-list/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import { Datum } from '@visactor/vchart/src/typings/common';\nimport {\n ITextGraphicAttribute,\n ISymbolGraphicAttribute,\n IRectGraphicAttribute,\n EasingType\n} from '@visactor/vrender-core';\n\ntype IRankingListData = Datum[];\n\nexport interface IRankingListSpec {\n /**\n * 图表类型\n */\n type: 'rankingList';\n /**\n * 数据\n */\n data: IRankingListData;\n /**\n * x轴字段\n */\n xField: string;\n /**\n * y轴字段\n */\n yField: string;\n width?: number;\n height?: number;\n /**\n * 标签布局\n * @default 'top'\n */\n labelLayout?: 'top' | 'bothEnd';\n /**\n * 柱样式\n */\n bar?: {\n height?: number;\n style?: IRectGraphicAttribute;\n };\n /**\n * 柱图背景\n */\n barBackground?: {\n visible?: boolean;\n type?: string;\n style?: ISymbolGraphicAttribute | IRectGraphicAttribute;\n };\n /**\n * 排名图标\n */\n rankingIcon?: {\n visible?: boolean;\n style?: ISymbolGraphicAttribute;\n };\n /**\n * 装饰图元\n */\n decorateHaloIcons?: [\n {\n visible?: boolean;\n // type?: 'circle' | 'square' | 'emptyCircle' | 'diamond' | 'halo' | 'concentric' | 'custom';\n style?: ISymbolGraphicAttribute;\n }\n ];\n /**\n * 排名序号\n */\n orderLabel?: {\n visible?: boolean;\n style?: ITextGraphicAttribute;\n formatMethod?: (text: string, datum: Datum) => string;\n };\n /**\n * 名称标签(yField对应的标签)\n */\n nameLabel?: {\n visible?: boolean;\n style?: ITextGraphicAttribute;\n formatMethod?: (text: string, datum: Datum) => string;\n };\n /**\n * 值标签(xField对应的标签)\n */\n valueLabel?: {\n visible?: boolean;\n style?: ITextGraphicAttribute;\n formatMethod?: (text: string, datum: Datum) => string;\n };\n /**\n * 每页行数\n */\n pageSize?: number;\n /**\n * 滚动行数\n */\n scrollSize?: number;\n /**\n * 动画\n */\n animation?: {\n /**\n * 动画类型\n * @default 'both'\n * 'scroll' 滚动\n * 'grow' 伸展\n */\n type?: 'scroll' | 'grow' | 'both';\n /**\n * 动画间隔\n */\n interval?: number;\n /**\n * 动画时长\n */\n duration?: number;\n /**\n * 动画缓动效果\n */\n easing?: EasingType;\n };\n}\n"]}
1
+ {"version":3,"sources":["charts/ranking-list/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import { IMarkStateSpec, IMarkStateStyleSpec } from '@visactor/vchart';\nimport { StateValue } from '@visactor/vchart/src/compile/mark';\nimport { Datum } from '@visactor/vchart/src/typings/common';\nimport {\n ITextGraphicAttribute,\n ISymbolGraphicAttribute,\n IRectGraphicAttribute,\n EasingType\n} from '@visactor/vrender-core';\n\ntype IRankingListData = Datum[];\n\nexport interface IRankingListSpec {\n /**\n * 图表类型\n */\n type: 'rankingList';\n /**\n * 数据\n */\n data: IRankingListData;\n /**\n * x轴字段\n */\n xField: string;\n /**\n * y轴字段\n */\n yField: string;\n width?: number;\n height?: number;\n /**\n * 标签布局\n * @default 'top'\n */\n labelLayout?: 'top' | 'bothEnd';\n /**\n * 柱样式\n */\n bar?: {\n height?: number;\n style?: IRectGraphicAttribute;\n state?: Record<StateValue, IMarkStateSpec<IRectGraphicAttribute> | IMarkStateStyleSpec<IRectGraphicAttribute>>;\n };\n /**\n * 柱图背景\n */\n barBackground?: {\n visible?: boolean;\n type?: string;\n style?: ISymbolGraphicAttribute | IRectGraphicAttribute;\n state?: Record<\n StateValue,\n | IMarkStateSpec<ISymbolGraphicAttribute | IRectGraphicAttribute>\n | IMarkStateStyleSpec<ISymbolGraphicAttribute | IRectGraphicAttribute>\n >;\n };\n /**\n * 排名图标\n */\n rankingIcon?: {\n visible?: boolean;\n style?: ISymbolGraphicAttribute;\n state?: Record<StateValue, IMarkStateSpec<ISymbolGraphicAttribute> | IMarkStateStyleSpec<ISymbolGraphicAttribute>>;\n };\n /**\n * 装饰图元\n */\n decorateHaloIcons?: [\n {\n visible?: boolean;\n // type?: 'circle' | 'square' | 'emptyCircle' | 'diamond' | 'halo' | 'concentric' | 'custom';\n style?: ISymbolGraphicAttribute;\n state?: Record<\n StateValue,\n IMarkStateSpec<ISymbolGraphicAttribute> | IMarkStateStyleSpec<ISymbolGraphicAttribute>\n >;\n }\n ];\n /**\n * 排名序号\n */\n orderLabel?: {\n visible?: boolean;\n style?: ITextGraphicAttribute;\n formatMethod?: (text: string, datum: Datum) => string;\n state?: Record<StateValue, IMarkStateSpec<ITextGraphicAttribute> | IMarkStateStyleSpec<ITextGraphicAttribute>>;\n };\n /**\n * 名称标签(yField对应的标签)\n */\n nameLabel?: {\n visible?: boolean;\n style?: ITextGraphicAttribute;\n formatMethod?: (text: string, datum: Datum) => string;\n state?: Record<StateValue, IMarkStateSpec<ITextGraphicAttribute> | IMarkStateStyleSpec<ITextGraphicAttribute>>;\n };\n /**\n * 值标签(xField对应的标签)\n */\n valueLabel?: {\n visible?: boolean;\n style?: ITextGraphicAttribute;\n formatMethod?: (text: string, datum: Datum) => string;\n state?: Record<StateValue, IMarkStateSpec<ITextGraphicAttribute> | IMarkStateStyleSpec<ITextGraphicAttribute>>;\n };\n /**\n * 每页行数\n */\n pageSize?: number;\n /**\n * 滚动行数\n */\n scrollSize?: number;\n /**\n * 动画\n */\n animation?: {\n /**\n * 动画类型\n * @default 'both'\n * 'scroll' 滚动\n * 'grow' 伸展\n */\n type?: 'scroll' | 'grow' | 'both';\n /**\n * 动画间隔\n */\n interval?: number;\n /**\n * 动画时长\n */\n duration?: number;\n /**\n * 动画缓动效果\n */\n easing?: EasingType;\n };\n}\n"]}
@@ -25,6 +25,7 @@ export declare class RankingListChartSpecTransformer extends CommonChartSpecTran
25
25
  visible: boolean;
26
26
  dataKey: string;
27
27
  zIndex: number;
28
+ state: any;
28
29
  style: any;
29
30
  animation: boolean;
30
31
  animationEnter: ({
@@ -105,6 +106,7 @@ export declare class RankingListChartSpecTransformer extends CommonChartSpecTran
105
106
  dataId: string;
106
107
  visible: boolean;
107
108
  dataKey: string;
109
+ state: any;
108
110
  style: any;
109
111
  animation: boolean;
110
112
  animationEnter: ({
@@ -183,6 +185,7 @@ export declare class RankingListChartSpecTransformer extends CommonChartSpecTran
183
185
  type: string;
184
186
  dataId: string;
185
187
  dataKey: string;
188
+ state: any;
186
189
  style: any;
187
190
  animation: boolean;
188
191
  animationEnter: ({
@@ -261,6 +264,7 @@ export declare class RankingListChartSpecTransformer extends CommonChartSpecTran
261
264
  type: string;
262
265
  dataId: string;
263
266
  dataKey: string;
267
+ state: any;
264
268
  style: any;
265
269
  animation: boolean;
266
270
  animationEnter: ({
@@ -340,6 +344,11 @@ export declare class RankingListChartSpecTransformer extends CommonChartSpecTran
340
344
  dataId: string;
341
345
  visible: boolean;
342
346
  dataKey: string;
347
+ state: {
348
+ blur: {
349
+ opacity: number;
350
+ };
351
+ };
343
352
  style: any;
344
353
  animation: boolean;
345
354
  animationEnter: ({
@@ -143,6 +143,7 @@ class RankingListChartSpecTransformer extends vchart_1.CommonChartSpecTransforme
143
143
  } ];
144
144
  }
145
145
  generateBarBackground(spec) {
146
+ var _a;
146
147
  const totalDuration = spec.animation.duration;
147
148
  return {
148
149
  type: spec.barBackground.type,
@@ -150,6 +151,7 @@ class RankingListChartSpecTransformer extends vchart_1.CommonChartSpecTransforme
150
151
  visible: !0,
151
152
  dataKey: DATA_KEY,
152
153
  zIndex: -99,
154
+ state: null === (_a = spec.barBackground) || void 0 === _a ? void 0 : _a.state,
153
155
  style: Object.assign(Object.assign({
154
156
  x: (datum, ctx) => "symbol" === spec.barBackground.type ? ctx.getRegion().getLayoutRect().width / 2 : 0,
155
157
  y: (datum, ctx) => ctx.valueToY([ datum[spec.yField] ]) + ctx.yBandwidth() / 2 - ("symbol" === spec.barBackground.type ? 0 : spec.bar.height / 2),
@@ -172,8 +174,11 @@ class RankingListChartSpecTransformer extends vchart_1.CommonChartSpecTransforme
172
174
  dataId: "data",
173
175
  visible: !0,
174
176
  dataKey: DATA_KEY,
177
+ state: null == decorateHaloIcon ? void 0 : decorateHaloIcon.state,
175
178
  style: Object.assign(Object.assign({
176
- x: (datum, ctx) => ctx.valueToX([ datum[spec.xField] ]),
179
+ x: (datum, ctx) => {
180
+ if (void 0 !== datum[spec.xField] && null !== datum[spec.xField]) return ctx.valueToX([ datum[spec.xField] ]);
181
+ },
177
182
  y: (datum, ctx) => ctx.valueToY([ datum[spec.yField] ]) + ctx.yBandwidth() / 2
178
183
  }, decorateHaloIcon.style), {
179
184
  visible: datum => !datum[SUPPLY_DATA_KEY] && decorateHaloIcon.style.visible
@@ -191,6 +196,7 @@ class RankingListChartSpecTransformer extends vchart_1.CommonChartSpecTransforme
191
196
  dataId: "data",
192
197
  visible: !0,
193
198
  dataKey: DATA_KEY,
199
+ state: spec.rankingIcon.state,
194
200
  style: Object.assign(Object.assign({
195
201
  x: datum => "bothEnd" === spec.labelLayout ? -(10 + this.nameLabelTextMeasure.fullMeasure(this.formatDatum(spec.yField, datum)).width + (spec.orderLabel.style.visible ? 5 + this.orderLabelTextMeasure.fullMeasure(this.formatDatum(ORDER_KEY, datum)).width : 0) + 8) : 5,
196
202
  y: (datum, ctx) => "bothEnd" === spec.labelLayout ? ctx.valueToY([ datum[spec.yField] ]) + ctx.yBandwidth() / 2 : ctx.valueToY([ datum[spec.yField] ]) + ctx.yBandwidth() / 2 - spec.bar.height / 2 - 5 - Math.max(this.nameLabelTextMeasure.fullMeasure(this.formatDatum(spec.yField, datum)).height, this.orderLabelTextMeasure.fullMeasure(this.formatDatum(ORDER_KEY, datum)).height) / 2
@@ -206,11 +212,13 @@ class RankingListChartSpecTransformer extends vchart_1.CommonChartSpecTransforme
206
212
  };
207
213
  }
208
214
  generateNameLabel(spec) {
215
+ var _a;
209
216
  const totalDuration = spec.animation.duration;
210
217
  return {
211
218
  type: "text",
212
219
  dataId: "data",
213
220
  dataKey: DATA_KEY,
221
+ state: null === (_a = spec.nameLabel) || void 0 === _a ? void 0 : _a.state,
214
222
  style: Object.assign(Object.assign({
215
223
  text: datum => this.formatDatum(spec.yField, datum),
216
224
  x: () => {
@@ -230,11 +238,13 @@ class RankingListChartSpecTransformer extends vchart_1.CommonChartSpecTransforme
230
238
  };
231
239
  }
232
240
  generateOrderLabel(spec) {
241
+ var _a;
233
242
  const totalDuration = spec.animation.duration;
234
243
  return {
235
244
  type: "text",
236
245
  dataId: "data",
237
246
  dataKey: DATA_KEY,
247
+ state: null === (_a = spec.orderLabel) || void 0 === _a ? void 0 : _a.state,
238
248
  style: Object.assign(Object.assign({
239
249
  text: datum => this.formatDatum(ORDER_KEY, datum),
240
250
  x: datum => {
@@ -260,6 +270,11 @@ class RankingListChartSpecTransformer extends vchart_1.CommonChartSpecTransforme
260
270
  dataId: "data",
261
271
  visible: !0,
262
272
  dataKey: DATA_KEY,
273
+ state: {
274
+ blur: {
275
+ opacity: .2
276
+ }
277
+ },
263
278
  style: Object.assign(Object.assign({
264
279
  text: datum => this.formatDatum(spec.xField, datum),
265
280
  x: (datum, ctx) => "bothEnd" === spec.labelLayout ? ctx.getRegion().getLayoutRect().width + this.getMaxDataLabelLens(spec, spec.xField, this.nameLabelTextMeasure) + 5 : ctx.getRegion().getLayoutRect().width,
@@ -277,8 +292,12 @@ class RankingListChartSpecTransformer extends vchart_1.CommonChartSpecTransforme
277
292
  }
278
293
  transformPaddingSpec(spec) {
279
294
  var _a;
295
+ const maxHaloIconSize = Math.max(...spec.decorateHaloIcons.map((icon => {
296
+ var _a;
297
+ return null !== (_a = icon.style.size) && void 0 !== _a ? _a : 18;
298
+ })));
280
299
  spec.padding = Object.assign({
281
- left: "bothEnd" === spec.labelLayout ? 10 + this.getMaxDataLabelLens(spec, spec.yField, this.nameLabelTextMeasure) + (spec.orderLabel.style.visible ? 5 + this.getMaxDataLabelLens(spec, ORDER_KEY, this.orderLabelTextMeasure) : 0) + (spec.rankingIcon.style.visible ? 8 + (null !== (_a = spec.rankingIcon.style.size) && void 0 !== _a ? _a : 10) : 0) + 5 : 5,
300
+ left: "bothEnd" === spec.labelLayout ? 10 + this.getMaxDataLabelLens(spec, spec.yField, this.nameLabelTextMeasure) + (spec.orderLabel.style.visible ? 5 + this.getMaxDataLabelLens(spec, ORDER_KEY, this.orderLabelTextMeasure) : 0) + (spec.rankingIcon.style.visible ? 8 + (null !== (_a = spec.rankingIcon.style.size) && void 0 !== _a ? _a : 10) : 0) + 5 : 5 + maxHaloIconSize / 2,
282
301
  right: "bothEnd" === spec.labelLayout ? 5 + this.getMaxDataLabelLens(spec, spec.yField, this.valueLabelTextMeasure) + 5 : 15,
283
302
  top: 0,
284
303
  bottom: 0
@@ -1 +1 @@
1
- {"version":3,"sources":["charts/ranking-list/ranking-list-transformer.ts"],"names":[],"mappings":"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","file":"ranking-list-transformer.js","sourcesContent":["import { Datum } from '@visactor/vchart/src/typings';\nimport type { IRankingListSpec } from './interface';\nimport { CommonChartSpecTransformer } from '@visactor/vchart';\nimport { TextMeasure } from '@visactor/vutils';\nimport { defaultSpec } from './constant';\nimport { applyVisible, computeDataRange, mergeObjects } from './utils';\nimport { IAnimationParameters, IElement } from '@visactor/vgammar-core';\n\nconst DATA_KEY = 'dataKey';\nconst ORDER_KEY = 'VCHART_ORDER';\nconst SUPPLY_DATA_KEY = 'SUPPLY_DATA_KEY';\nconst NAME_LABEL_PADDING_RIGHT = 10;\nconst NAME_ORDER_PADDING_RIGHT = 5;\nconst NAME_SYMBOL_PADDING_RIGHT = 8;\nconst CHART_PADDING_LEFT = 5;\nconst CHART_PADDING_RIGHT = 5;\nconst VALUE_LABEL_PADDING_LEFT = 5;\n\nconst LABEL_PADDING_BOTTOM = 5;\n\nexport class RankingListChartSpecTransformer extends CommonChartSpecTransformer {\n protected nameLabelTextMeasure: TextMeasure<any>;\n protected valueLabelTextMeasure: TextMeasure<any>;\n protected orderLabelTextMeasure: TextMeasure<any>;\n protected originalData: Datum[];\n protected dataSpecs: any[];\n protected formatMap: { [key: string]: (text: string, ctx: any) => string } = {};\n\n transformSpec(spec: any): void {\n super.transformSpec(spec);\n this.normalizeSpec(spec);\n this.upgradeTextMeasure(spec);\n this.upgradeFormatMap(spec);\n this.processData(spec);\n\n // rankingList spec -> vchart spec\n this.transformBaseSpec(spec);\n this.transformAnimationSpec(spec);\n this.transformAxesSpec(spec);\n\n spec.extensionMark = [\n // 柱图背景\n this.generateBarBackground(spec),\n // 辅助图标\n ...this.generateDecorateHaloIcons(spec),\n // 左侧图标\n this.generateRankingIcon(spec),\n // 左侧label\n this.generateNameLabel(spec),\n // 左侧序号label\n this.generateOrderLabel(spec),\n // 右侧label\n this.generateValueLabel(spec)\n ];\n\n this.transformPaddingSpec(spec);\n\n super.transformSpec(spec);\n }\n\n normalizeSpec(spec: any) {\n // 处理配置\n mergeObjects(spec, defaultSpec);\n applyVisible(spec, [\n 'barBackground',\n 'rankingIcon',\n 'decorateHaloIcon',\n 'orderLabel',\n 'nameLabel',\n 'valueLabel'\n // 'bar'\n ]);\n }\n\n upgradeTextMeasure(spec: any) {\n // 初始化文字测量\n this.nameLabelTextMeasure?.release();\n this.valueLabelTextMeasure?.release();\n this.orderLabelTextMeasure?.release();\n this.nameLabelTextMeasure = new TextMeasure({\n defaultFontParams: spec.nameLabel?.style ?? {}\n });\n this.valueLabelTextMeasure = new TextMeasure({\n defaultFontParams: spec.valueLabel?.style ?? {}\n });\n this.orderLabelTextMeasure = new TextMeasure({\n defaultFontParams: spec.orderLabel?.style ?? {}\n });\n }\n\n upgradeFormatMap(spec: any) {\n this.formatMap[spec.yField] = spec.nameLabel.formatMethod;\n this.formatMap[spec.xField] = spec.valueLabel.formatMethod;\n this.formatMap[ORDER_KEY] = spec.orderLabel.formatMethod;\n }\n\n processData(spec: any) {\n // ps: 如果updateSpec后, 同时执行2次processData会有问题, 在这里用比较hack的方式绕过第2次\n if (!spec.data[0]?.values) {\n this.dataSpecs = this.processRankingData(spec as unknown as IRankingListSpec);\n this.originalData = spec.data;\n spec.data = this.dataSpecs[0].data;\n // console.log('processdata');\n }\n }\n\n transformBaseSpec(spec: any) {\n spec.type = 'common';\n spec.dataKey = DATA_KEY;\n spec.series = [\n {\n type: 'bar',\n direction: 'horizontal',\n xField: spec.xField,\n yField: spec.yField,\n barWidth: spec.bar?.height ?? 10,\n bar: {\n ...spec.bar,\n style: {\n ...spec.bar?.style,\n x1: 0,\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.bar?.style ?? true;\n }\n }\n }\n }\n ];\n }\n\n transformAnimationSpec(spec: any) {\n const totalDuration = spec.animation.duration;\n\n if (spec.animation) {\n spec.player = {\n ...spec.player,\n specs: this.dataSpecs,\n auto: true,\n visible: false,\n interval: spec.animation.interval + spec.animation.duration / 2,\n loop: true\n };\n\n spec.animationExit = this.getAnimationExit(spec, totalDuration);\n spec.animationAppear = this.getAnimationEnter(spec, 'rect', totalDuration);\n spec.animationEnter = this.getAnimationEnter(spec, 'rect', totalDuration);\n }\n }\n\n transformAxesSpec(spec: any) {\n const { min, max } = computeDataRange(this.originalData, spec.xField);\n spec.axes = [\n {\n orient: 'left',\n type: 'band',\n visible: false,\n inverse: true\n },\n {\n orient: 'bottom',\n label: { visible: true },\n type: 'linear',\n visible: false,\n min,\n max\n }\n ];\n }\n\n generateBarBackground(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: spec.barBackground.type,\n dataId: 'data',\n visible: true,\n dataKey: DATA_KEY,\n zIndex: -99,\n style: {\n x: (datum: Datum, ctx: any) =>\n spec.barBackground.type === 'symbol' ? ctx.getRegion().getLayoutRect().width / 2 : 0,\n y: (datum: Datum, ctx: any) => {\n return (\n ctx.valueToY([datum[spec.yField]]) +\n ctx.yBandwidth() / 2 -\n (spec.barBackground.type === 'symbol' ? 0 : spec.bar.height / 2)\n );\n },\n size: (datum: Datum, ctx: any) => [ctx.getRegion().getLayoutRect().width, spec.bar.height],\n width: (datum: Datum, ctx: any) => ctx.getRegion().getLayoutRect().width,\n height: spec.bar.height,\n ...spec.barBackground.style,\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.barBackground.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'barBack', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'barBack', totalDuration)\n };\n }\n\n generateDecorateHaloIcons(spec: any) {\n const totalDuration = spec.animation.duration;\n return spec.decorateHaloIcons.map((decorateHaloIcon: any) => {\n return {\n type: 'symbol',\n dataId: 'data',\n visible: true,\n dataKey: DATA_KEY,\n style: {\n x: (datum: Datum, ctx: any) => {\n return ctx.valueToX([datum[spec.xField]]);\n },\n y: (datum: Datum, ctx: any) => {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n },\n ...decorateHaloIcon.style,\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return decorateHaloIcon.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'symbol', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'symbol', totalDuration)\n };\n });\n }\n\n generateRankingIcon(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: 'symbol',\n dataId: 'data',\n visible: true,\n dataKey: DATA_KEY,\n style: {\n x: (datum: Datum) => {\n if (spec.labelLayout === 'bothEnd') {\n return -(\n NAME_LABEL_PADDING_RIGHT +\n this.nameLabelTextMeasure.fullMeasure(this.formatDatum(spec.yField, datum)).width +\n (spec.orderLabel.style.visible\n ? NAME_ORDER_PADDING_RIGHT +\n this.orderLabelTextMeasure.fullMeasure(this.formatDatum(ORDER_KEY, datum)).width\n : 0) +\n NAME_SYMBOL_PADDING_RIGHT\n );\n }\n return CHART_PADDING_LEFT;\n },\n y: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n }\n return (\n ctx.valueToY([datum[spec.yField]]) +\n ctx.yBandwidth() / 2 -\n spec.bar.height / 2 -\n LABEL_PADDING_BOTTOM -\n Math.max(\n this.nameLabelTextMeasure.fullMeasure(this.formatDatum(spec.yField, datum)).height,\n this.orderLabelTextMeasure.fullMeasure(this.formatDatum(ORDER_KEY, datum)).height\n ) /\n 2\n );\n },\n ...spec.rankingIcon.style,\n lineWidth: 0,\n stroke: null,\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.rankingIcon.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'text', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'text', totalDuration)\n };\n }\n\n generateNameLabel(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: 'text',\n dataId: 'data',\n dataKey: DATA_KEY,\n style: {\n text: (datum: Datum) => this.formatDatum(spec.yField, datum),\n x: () => {\n if (spec.labelLayout === 'bothEnd') {\n return -NAME_LABEL_PADDING_RIGHT;\n }\n return (\n (spec.rankingIcon.style.visible ? NAME_SYMBOL_PADDING_RIGHT + (spec.rankingIcon.style.size ?? 10) : 0) +\n (spec.orderLabel.style.visible\n ? NAME_ORDER_PADDING_RIGHT + this.getMaxDataLabelLens(spec, ORDER_KEY, this.orderLabelTextMeasure)\n : 0)\n );\n },\n y: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n }\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2 - spec.bar.height / 2 - LABEL_PADDING_BOTTOM;\n },\n ...spec.nameLabel.style,\n textAlign: spec.labelLayout === 'bothEnd' ? 'right' : 'left',\n textBaseline: spec.labelLayout === 'bothEnd' ? 'middle' : 'bottom',\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.nameLabel.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'text', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'text', totalDuration)\n };\n }\n\n generateOrderLabel(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: 'text',\n dataId: 'data',\n dataKey: DATA_KEY,\n style: {\n text: (datum: Datum) => this.formatDatum(ORDER_KEY, datum),\n x: (datum: Datum) => {\n if (spec.labelLayout === 'bothEnd') {\n return -(\n NAME_LABEL_PADDING_RIGHT +\n this.nameLabelTextMeasure.fullMeasure(this.formatDatum(spec.yField, datum)).width +\n NAME_ORDER_PADDING_RIGHT\n );\n } else {\n return spec.rankingIcon.style.visible ? NAME_SYMBOL_PADDING_RIGHT + (spec.rankingIcon.style.size ?? 10) : 0;\n }\n },\n y: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n }\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2 - spec.bar.height / 2 - LABEL_PADDING_BOTTOM;\n },\n ...spec.orderLabel.style,\n textAlign: spec.labelLayout === 'bothEnd' ? 'right' : 'left',\n textBaseline: spec.labelLayout === 'bothEnd' ? 'middle' : 'bottom',\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.orderLabel.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'text', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'text', totalDuration)\n };\n }\n\n generateValueLabel(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: 'text',\n dataId: 'data',\n visible: true,\n dataKey: DATA_KEY,\n style: {\n text: (datum: Datum) => this.formatDatum(spec.xField, datum),\n x: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return (\n ctx.getRegion().getLayoutRect().width +\n this.getMaxDataLabelLens(spec, spec.xField, this.nameLabelTextMeasure) +\n VALUE_LABEL_PADDING_LEFT\n );\n } else {\n return ctx.getRegion().getLayoutRect().width;\n }\n },\n y: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n }\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2 - spec.bar.height / 2 - LABEL_PADDING_BOTTOM;\n },\n ...spec.valueLabel.style,\n textAlign: 'right',\n textBaseline: spec.labelLayout === 'bothEnd' ? 'middle' : 'bottom',\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.valueLabel.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'text', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'text', totalDuration)\n };\n }\n\n transformPaddingSpec(spec: any) {\n spec.padding = {\n left:\n spec.labelLayout === 'bothEnd'\n ? NAME_LABEL_PADDING_RIGHT +\n this.getMaxDataLabelLens(spec, spec.yField, this.nameLabelTextMeasure) +\n (spec.orderLabel.style.visible\n ? NAME_ORDER_PADDING_RIGHT + this.getMaxDataLabelLens(spec, ORDER_KEY, this.orderLabelTextMeasure)\n : 0) +\n (spec.rankingIcon.style.visible ? NAME_SYMBOL_PADDING_RIGHT + (spec.rankingIcon.style.size ?? 10) : 0) +\n CHART_PADDING_LEFT\n : CHART_PADDING_LEFT,\n right:\n spec.labelLayout === 'bothEnd'\n ? VALUE_LABEL_PADDING_LEFT +\n this.getMaxDataLabelLens(spec, spec.yField, this.valueLabelTextMeasure) +\n CHART_PADDING_RIGHT\n : CHART_PADDING_RIGHT + 10,\n top: 0,\n bottom: 0,\n ...spec.padding\n };\n }\n\n paginateDataArr = (spec: IRankingListSpec) => {\n const { data: arr, scrollSize = 1, pageSize = 5 } = spec;\n const result: { [key: string]: Datum[] } = {};\n let pageOrder = 0;\n for (let i = 0; i < arr.length; i += scrollSize) {\n pageOrder++;\n result[`page${pageOrder}`] = arr.slice(i, i + pageSize);\n if (i + pageSize - 1 >= arr.length - 1) {\n arr.push(\n ...Array.from({ length: i + pageSize - arr.length }, _ => {\n return {\n [spec.yField]: Math.random() * 100,\n [spec.xField]: null,\n [SUPPLY_DATA_KEY]: true\n };\n })\n );\n break;\n }\n }\n return {\n orderCount: pageOrder,\n result: result\n };\n };\n\n processRankingData = (spec: IRankingListSpec) => {\n const result: any[] = [];\n spec.data.forEach((datum, index) => (datum[ORDER_KEY] = index + 1 < 10 ? `0${index + 1}` : index + 1));\n const pagerData = this.paginateDataArr(spec).result;\n const orderCount = this.paginateDataArr(spec).orderCount;\n const supplyCount = spec.pageSize - pagerData[`page${orderCount}`].length;\n pagerData[`page${orderCount}`].push(\n ...Array.from({ length: supplyCount }, _ => {\n return {\n [spec.yField]: Math.random() * 100,\n [spec.xField]: null,\n [SUPPLY_DATA_KEY]: true\n };\n })\n );\n\n Object.keys(pagerData).forEach(order => {\n result.push({\n data: [\n {\n id: 'datas',\n values: pagerData[order].map((d, i) => {\n return { ...d, [DATA_KEY]: order + '_' + i + '_' + new Date().getTime() };\n })\n },\n {\n id: 'order',\n values: [\n {\n order\n }\n ]\n }\n ]\n });\n });\n\n // 只有1页时, player循环播放时, prePage和curPage data一致, 导致没有动画效果\n // 在此手动复制1页, 且prePage和curPage dataKey不一致, 保证动画效果\n if (result.length === 1) {\n result.push({\n data: [\n {\n id: 'datas',\n values: pagerData['page1'].map((d, i) => {\n return { ...d, [DATA_KEY]: 'page2' + '_' + i + '_' + new Date().getTime() };\n })\n },\n {\n id: 'order',\n values: [\n {\n order: 'page2'\n }\n ]\n }\n ]\n });\n }\n return result;\n };\n\n getMaxDataLabelLens(spec: IRankingListSpec, field: string, textMeasure: TextMeasure<any>) {\n const textWidths = this.originalData.map(datum =>\n datum[SUPPLY_DATA_KEY] ? 0 : textMeasure.fullMeasure(this.formatDatum(field, datum)).width\n );\n return Math.max(...textWidths);\n }\n\n formatDatum(field: string, datum: Datum) {\n // console.log('field', field, datum);\n if (this.formatMap?.[field]) {\n return this.formatMap[field](datum[field], datum);\n } else {\n return datum[field];\n }\n }\n\n getLabelWidth(padding: number, width: number) {\n return width + padding;\n }\n\n getAnimationExit(spec: IRankingListSpec, duration: number) {\n if (spec.animation.type === 'grow') {\n return {};\n }\n return {\n type: 'moveOut',\n options: {\n direction: 'y',\n orient: 'negative',\n point: (datum: Datum, element: IElement, opt: IAnimationParameters) => {\n const channelAttr = element.getGraphicAttribute('y');\n const barSpace = (spec.height / spec.pageSize - spec.bar.height) / 2;\n return { y: channelAttr - opt.height + barSpace };\n }\n },\n duration: spec.animation.type === 'both' ? duration / 2 : duration,\n easing: spec.animation.easing\n };\n }\n\n getAnimationEnter(spec: IRankingListSpec, markType: 'rect' | 'text' | 'symbol' | 'barBack', totalDuration: number) {\n const { animation } = spec;\n const { type: animationType, easing } = animation;\n const scrollDuration = animationType === 'both' ? totalDuration / 2 : totalDuration;\n const growDuration = animationType === 'grow' ? totalDuration : totalDuration / 2;\n const result = [];\n if (animationType === 'scroll' || animationType === 'both') {\n result.push({\n type: 'moveIn',\n options: {\n direction: 'y',\n orient: 'negative',\n excludeChannels: ['y'],\n point: (datum: Datum, element: IElement, opt: IAnimationParameters) => {\n const channelAttr = element.getGraphicAttribute('y');\n const barSpace = (spec.height / spec.pageSize - spec.bar.height) / 2;\n return { y: channelAttr + opt.height - barSpace };\n }\n },\n duration: scrollDuration,\n easing\n });\n }\n if ((animationType === 'grow' || animationType === 'both') && markType !== 'text' && markType !== 'barBack') {\n result.push({\n channel: {\n x: {\n from: 0,\n to: (datum: Datum, element: IElement) => {\n return element.getGraphicItem().attribute.x;\n }\n }\n },\n duration: growDuration,\n delay: animationType === 'both' ? scrollDuration : 0,\n easing\n });\n }\n return result;\n }\n}\n"]}
1
+ {"version":3,"sources":["charts/ranking-list/ranking-list-transformer.ts"],"names":[],"mappings":"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","file":"ranking-list-transformer.js","sourcesContent":["import { Datum } from '@visactor/vchart/src/typings';\nimport type { IRankingListSpec } from './interface';\nimport { CommonChartSpecTransformer } from '@visactor/vchart';\nimport { TextMeasure } from '@visactor/vutils';\nimport { defaultSpec } from './constant';\nimport { applyVisible, computeDataRange, mergeObjects } from './utils';\nimport { IAnimationParameters, IElement } from '@visactor/vgammar-core';\n\nconst DATA_KEY = 'dataKey';\nconst ORDER_KEY = 'VCHART_ORDER';\nconst SUPPLY_DATA_KEY = 'SUPPLY_DATA_KEY';\nconst NAME_LABEL_PADDING_RIGHT = 10;\nconst NAME_ORDER_PADDING_RIGHT = 5;\nconst NAME_SYMBOL_PADDING_RIGHT = 8;\nconst CHART_PADDING_LEFT = 5;\nconst CHART_PADDING_RIGHT = 5;\nconst VALUE_LABEL_PADDING_LEFT = 5;\n\nconst LABEL_PADDING_BOTTOM = 5;\n\nexport class RankingListChartSpecTransformer extends CommonChartSpecTransformer {\n protected nameLabelTextMeasure: TextMeasure<any>;\n protected valueLabelTextMeasure: TextMeasure<any>;\n protected orderLabelTextMeasure: TextMeasure<any>;\n protected originalData: Datum[];\n protected dataSpecs: any[];\n protected formatMap: { [key: string]: (text: string, ctx: any) => string } = {};\n\n transformSpec(spec: any): void {\n super.transformSpec(spec);\n this.normalizeSpec(spec);\n this.upgradeTextMeasure(spec);\n this.upgradeFormatMap(spec);\n this.processData(spec);\n\n // rankingList spec -> vchart spec\n this.transformBaseSpec(spec);\n this.transformAnimationSpec(spec);\n this.transformAxesSpec(spec);\n\n spec.extensionMark = [\n // 柱图背景\n this.generateBarBackground(spec),\n // 辅助图标\n ...this.generateDecorateHaloIcons(spec),\n // 左侧图标\n this.generateRankingIcon(spec),\n // 左侧label\n this.generateNameLabel(spec),\n // 左侧序号label\n this.generateOrderLabel(spec),\n // 右侧label\n this.generateValueLabel(spec)\n ];\n\n this.transformPaddingSpec(spec);\n\n super.transformSpec(spec);\n }\n\n normalizeSpec(spec: any) {\n // 处理配置\n mergeObjects(spec, defaultSpec);\n applyVisible(spec, [\n 'barBackground',\n 'rankingIcon',\n 'decorateHaloIcon',\n 'orderLabel',\n 'nameLabel',\n 'valueLabel'\n // 'bar'\n ]);\n }\n\n upgradeTextMeasure(spec: any) {\n // 初始化文字测量\n this.nameLabelTextMeasure?.release();\n this.valueLabelTextMeasure?.release();\n this.orderLabelTextMeasure?.release();\n this.nameLabelTextMeasure = new TextMeasure({\n defaultFontParams: spec.nameLabel?.style ?? {}\n });\n this.valueLabelTextMeasure = new TextMeasure({\n defaultFontParams: spec.valueLabel?.style ?? {}\n });\n this.orderLabelTextMeasure = new TextMeasure({\n defaultFontParams: spec.orderLabel?.style ?? {}\n });\n }\n\n upgradeFormatMap(spec: any) {\n this.formatMap[spec.yField] = spec.nameLabel.formatMethod;\n this.formatMap[spec.xField] = spec.valueLabel.formatMethod;\n this.formatMap[ORDER_KEY] = spec.orderLabel.formatMethod;\n }\n\n processData(spec: any) {\n // ps: 如果updateSpec后, 同时执行2次processData会有问题, 在这里用比较hack的方式绕过第2次\n if (!spec.data[0]?.values) {\n this.dataSpecs = this.processRankingData(spec as unknown as IRankingListSpec);\n this.originalData = spec.data;\n spec.data = this.dataSpecs[0].data;\n // console.log('processdata');\n }\n }\n\n transformBaseSpec(spec: any) {\n spec.type = 'common';\n spec.dataKey = DATA_KEY;\n spec.series = [\n {\n type: 'bar',\n direction: 'horizontal',\n xField: spec.xField,\n yField: spec.yField,\n barWidth: spec.bar?.height ?? 10,\n bar: {\n ...spec.bar,\n style: {\n ...spec.bar?.style,\n x1: 0,\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.bar?.style ?? true;\n }\n }\n }\n }\n ];\n }\n\n transformAnimationSpec(spec: any) {\n const totalDuration = spec.animation.duration;\n\n if (spec.animation) {\n spec.player = {\n ...spec.player,\n specs: this.dataSpecs,\n auto: true,\n visible: false,\n interval: spec.animation.interval + spec.animation.duration / 2,\n loop: true\n };\n\n spec.animationExit = this.getAnimationExit(spec, totalDuration);\n spec.animationAppear = this.getAnimationEnter(spec, 'rect', totalDuration);\n spec.animationEnter = this.getAnimationEnter(spec, 'rect', totalDuration);\n }\n }\n\n transformAxesSpec(spec: any) {\n const { min, max } = computeDataRange(this.originalData, spec.xField);\n spec.axes = [\n {\n orient: 'left',\n type: 'band',\n visible: false,\n inverse: true\n },\n {\n orient: 'bottom',\n label: { visible: true },\n type: 'linear',\n visible: false,\n min,\n max\n }\n ];\n }\n\n generateBarBackground(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: spec.barBackground.type,\n dataId: 'data',\n visible: true,\n dataKey: DATA_KEY,\n zIndex: -99,\n state: spec.barBackground?.state,\n style: {\n x: (datum: Datum, ctx: any) =>\n spec.barBackground.type === 'symbol' ? ctx.getRegion().getLayoutRect().width / 2 : 0,\n y: (datum: Datum, ctx: any) => {\n return (\n ctx.valueToY([datum[spec.yField]]) +\n ctx.yBandwidth() / 2 -\n (spec.barBackground.type === 'symbol' ? 0 : spec.bar.height / 2)\n );\n },\n size: (datum: Datum, ctx: any) => [ctx.getRegion().getLayoutRect().width, spec.bar.height],\n width: (datum: Datum, ctx: any) => ctx.getRegion().getLayoutRect().width,\n height: spec.bar.height,\n ...spec.barBackground.style,\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.barBackground.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'barBack', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'barBack', totalDuration)\n };\n }\n\n generateDecorateHaloIcons(spec: any) {\n const totalDuration = spec.animation.duration;\n return spec.decorateHaloIcons.map((decorateHaloIcon: any) => {\n return {\n type: 'symbol',\n dataId: 'data',\n visible: true,\n dataKey: DATA_KEY,\n state: decorateHaloIcon?.state,\n style: {\n x: (datum: Datum, ctx: any) => {\n if (datum[spec.xField] === undefined || datum[spec.xField] === null) {\n return undefined;\n }\n return ctx.valueToX([datum[spec.xField]]);\n },\n y: (datum: Datum, ctx: any) => {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n },\n ...decorateHaloIcon.style,\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return decorateHaloIcon.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'symbol', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'symbol', totalDuration)\n };\n });\n }\n\n generateRankingIcon(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: 'symbol',\n dataId: 'data',\n visible: true,\n dataKey: DATA_KEY,\n state: spec.rankingIcon.state,\n style: {\n x: (datum: Datum) => {\n if (spec.labelLayout === 'bothEnd') {\n return -(\n NAME_LABEL_PADDING_RIGHT +\n this.nameLabelTextMeasure.fullMeasure(this.formatDatum(spec.yField, datum)).width +\n (spec.orderLabel.style.visible\n ? NAME_ORDER_PADDING_RIGHT +\n this.orderLabelTextMeasure.fullMeasure(this.formatDatum(ORDER_KEY, datum)).width\n : 0) +\n NAME_SYMBOL_PADDING_RIGHT\n );\n }\n return CHART_PADDING_LEFT;\n },\n y: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n }\n return (\n ctx.valueToY([datum[spec.yField]]) +\n ctx.yBandwidth() / 2 -\n spec.bar.height / 2 -\n LABEL_PADDING_BOTTOM -\n Math.max(\n this.nameLabelTextMeasure.fullMeasure(this.formatDatum(spec.yField, datum)).height,\n this.orderLabelTextMeasure.fullMeasure(this.formatDatum(ORDER_KEY, datum)).height\n ) /\n 2\n );\n },\n ...spec.rankingIcon.style,\n lineWidth: 0,\n stroke: null,\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.rankingIcon.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'text', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'text', totalDuration)\n };\n }\n\n generateNameLabel(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: 'text',\n dataId: 'data',\n dataKey: DATA_KEY,\n state: spec.nameLabel?.state,\n style: {\n text: (datum: Datum) => this.formatDatum(spec.yField, datum),\n x: () => {\n if (spec.labelLayout === 'bothEnd') {\n return -NAME_LABEL_PADDING_RIGHT;\n }\n return (\n (spec.rankingIcon.style.visible ? NAME_SYMBOL_PADDING_RIGHT + (spec.rankingIcon.style.size ?? 10) : 0) +\n (spec.orderLabel.style.visible\n ? NAME_ORDER_PADDING_RIGHT + this.getMaxDataLabelLens(spec, ORDER_KEY, this.orderLabelTextMeasure)\n : 0)\n );\n },\n y: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n }\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2 - spec.bar.height / 2 - LABEL_PADDING_BOTTOM;\n },\n ...spec.nameLabel.style,\n textAlign: spec.labelLayout === 'bothEnd' ? 'right' : 'left',\n textBaseline: spec.labelLayout === 'bothEnd' ? 'middle' : 'bottom',\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.nameLabel.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'text', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'text', totalDuration)\n };\n }\n\n generateOrderLabel(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: 'text',\n dataId: 'data',\n dataKey: DATA_KEY,\n state: spec.orderLabel?.state,\n style: {\n text: (datum: Datum) => this.formatDatum(ORDER_KEY, datum),\n x: (datum: Datum) => {\n if (spec.labelLayout === 'bothEnd') {\n return -(\n NAME_LABEL_PADDING_RIGHT +\n this.nameLabelTextMeasure.fullMeasure(this.formatDatum(spec.yField, datum)).width +\n NAME_ORDER_PADDING_RIGHT\n );\n } else {\n return spec.rankingIcon.style.visible ? NAME_SYMBOL_PADDING_RIGHT + (spec.rankingIcon.style.size ?? 10) : 0;\n }\n },\n y: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n }\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2 - spec.bar.height / 2 - LABEL_PADDING_BOTTOM;\n },\n ...spec.orderLabel.style,\n textAlign: spec.labelLayout === 'bothEnd' ? 'right' : 'left',\n textBaseline: spec.labelLayout === 'bothEnd' ? 'middle' : 'bottom',\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.orderLabel.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'text', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'text', totalDuration)\n };\n }\n\n generateValueLabel(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: 'text',\n dataId: 'data',\n visible: true,\n dataKey: DATA_KEY,\n state: {\n blur: {\n opacity: 0.2\n }\n },\n style: {\n text: (datum: Datum) => this.formatDatum(spec.xField, datum),\n x: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return (\n ctx.getRegion().getLayoutRect().width +\n this.getMaxDataLabelLens(spec, spec.xField, this.nameLabelTextMeasure) +\n VALUE_LABEL_PADDING_LEFT\n );\n } else {\n return ctx.getRegion().getLayoutRect().width;\n }\n },\n y: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n }\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2 - spec.bar.height / 2 - LABEL_PADDING_BOTTOM;\n },\n ...spec.valueLabel.style,\n textAlign: 'right',\n textBaseline: spec.labelLayout === 'bothEnd' ? 'middle' : 'bottom',\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.valueLabel.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'text', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'text', totalDuration)\n };\n }\n\n transformPaddingSpec(spec: any) {\n const maxHaloIconSize = Math.max(...spec.decorateHaloIcons.map((icon: any) => icon.style.size ?? 18));\n spec.padding = {\n left:\n spec.labelLayout === 'bothEnd'\n ? NAME_LABEL_PADDING_RIGHT +\n this.getMaxDataLabelLens(spec, spec.yField, this.nameLabelTextMeasure) +\n (spec.orderLabel.style.visible\n ? NAME_ORDER_PADDING_RIGHT + this.getMaxDataLabelLens(spec, ORDER_KEY, this.orderLabelTextMeasure)\n : 0) +\n (spec.rankingIcon.style.visible ? NAME_SYMBOL_PADDING_RIGHT + (spec.rankingIcon.style.size ?? 10) : 0) +\n CHART_PADDING_LEFT\n : CHART_PADDING_LEFT + maxHaloIconSize / 2,\n right:\n spec.labelLayout === 'bothEnd'\n ? VALUE_LABEL_PADDING_LEFT +\n this.getMaxDataLabelLens(spec, spec.yField, this.valueLabelTextMeasure) +\n CHART_PADDING_RIGHT\n : CHART_PADDING_RIGHT + 10,\n top: 0,\n bottom: 0,\n ...spec.padding\n };\n }\n\n paginateDataArr = (spec: IRankingListSpec) => {\n const { data: arr, scrollSize = 1, pageSize = 5 } = spec;\n const result: { [key: string]: Datum[] } = {};\n let pageOrder = 0;\n for (let i = 0; i < arr.length; i += scrollSize) {\n pageOrder++;\n result[`page${pageOrder}`] = arr.slice(i, i + pageSize);\n if (i + pageSize - 1 >= arr.length - 1) {\n arr.push(\n ...Array.from({ length: i + pageSize - arr.length }, _ => {\n return {\n [spec.yField]: Math.random() * 100,\n [spec.xField]: null,\n [SUPPLY_DATA_KEY]: true\n };\n })\n );\n break;\n }\n }\n return {\n orderCount: pageOrder,\n result: result\n };\n };\n\n processRankingData = (spec: IRankingListSpec) => {\n const result: any[] = [];\n spec.data.forEach((datum, index) => (datum[ORDER_KEY] = index + 1 < 10 ? `0${index + 1}` : index + 1));\n const pagerData = this.paginateDataArr(spec).result;\n const orderCount = this.paginateDataArr(spec).orderCount;\n const supplyCount = spec.pageSize - pagerData[`page${orderCount}`].length;\n pagerData[`page${orderCount}`].push(\n ...Array.from({ length: supplyCount }, _ => {\n return {\n [spec.yField]: Math.random() * 100,\n [spec.xField]: null,\n [SUPPLY_DATA_KEY]: true\n };\n })\n );\n\n Object.keys(pagerData).forEach(order => {\n result.push({\n data: [\n {\n id: 'datas',\n values: pagerData[order].map((d, i) => {\n return { ...d, [DATA_KEY]: order + '_' + i + '_' + new Date().getTime() };\n })\n },\n {\n id: 'order',\n values: [\n {\n order\n }\n ]\n }\n ]\n });\n });\n\n // 只有1页时, player循环播放时, prePage和curPage data一致, 导致没有动画效果\n // 在此手动复制1页, 且prePage和curPage dataKey不一致, 保证动画效果\n if (result.length === 1) {\n result.push({\n data: [\n {\n id: 'datas',\n values: pagerData['page1'].map((d, i) => {\n return { ...d, [DATA_KEY]: 'page2' + '_' + i + '_' + new Date().getTime() };\n })\n },\n {\n id: 'order',\n values: [\n {\n order: 'page2'\n }\n ]\n }\n ]\n });\n }\n return result;\n };\n\n getMaxDataLabelLens(spec: IRankingListSpec, field: string, textMeasure: TextMeasure<any>) {\n const textWidths = this.originalData.map(datum =>\n datum[SUPPLY_DATA_KEY] ? 0 : textMeasure.fullMeasure(this.formatDatum(field, datum)).width\n );\n return Math.max(...textWidths);\n }\n\n formatDatum(field: string, datum: Datum) {\n // console.log('field', field, datum);\n if (this.formatMap?.[field]) {\n return this.formatMap[field](datum[field], datum);\n } else {\n return datum[field];\n }\n }\n\n getLabelWidth(padding: number, width: number) {\n return width + padding;\n }\n\n getAnimationExit(spec: IRankingListSpec, duration: number) {\n if (spec.animation.type === 'grow') {\n return {};\n }\n return {\n type: 'moveOut',\n options: {\n direction: 'y',\n orient: 'negative',\n point: (datum: Datum, element: IElement, opt: IAnimationParameters) => {\n const channelAttr = element.getGraphicAttribute('y');\n const barSpace = (spec.height / spec.pageSize - spec.bar.height) / 2;\n return { y: channelAttr - opt.height + barSpace };\n }\n },\n duration: spec.animation.type === 'both' ? duration / 2 : duration,\n easing: spec.animation.easing\n };\n }\n\n getAnimationEnter(spec: IRankingListSpec, markType: 'rect' | 'text' | 'symbol' | 'barBack', totalDuration: number) {\n const { animation } = spec;\n const { type: animationType, easing } = animation;\n const scrollDuration = animationType === 'both' ? totalDuration / 2 : totalDuration;\n const growDuration = animationType === 'grow' ? totalDuration : totalDuration / 2;\n const result = [];\n if (animationType === 'scroll' || animationType === 'both') {\n result.push({\n type: 'moveIn',\n options: {\n direction: 'y',\n orient: 'negative',\n excludeChannels: ['y'],\n point: (datum: Datum, element: IElement, opt: IAnimationParameters) => {\n const channelAttr = element.getGraphicAttribute('y');\n const barSpace = (spec.height / spec.pageSize - spec.bar.height) / 2;\n return { y: channelAttr + opt.height - barSpace };\n }\n },\n duration: scrollDuration,\n easing\n });\n }\n if ((animationType === 'grow' || animationType === 'both') && markType !== 'text' && markType !== 'barBack') {\n result.push({\n channel: {\n x: {\n from: 0,\n to: (datum: Datum, element: IElement) => {\n return element.getGraphicItem().attribute.x;\n }\n }\n },\n duration: growDuration,\n delay: animationType === 'both' ? scrollDuration : 0,\n easing\n });\n }\n return result;\n }\n}\n"]}
@@ -1,3 +1,5 @@
1
+ import { IMarkStateSpec, IMarkStateStyleSpec } from '@visactor/vchart';
2
+ import { StateValue } from '@visactor/vchart/src/compile/mark';
1
3
  import { Datum } from '@visactor/vchart/src/typings/common';
2
4
  import { ITextGraphicAttribute, ISymbolGraphicAttribute, IRectGraphicAttribute, EasingType } from '@visactor/vrender-core';
3
5
  type IRankingListData = Datum[];
@@ -12,36 +14,43 @@ export interface IRankingListSpec {
12
14
  bar?: {
13
15
  height?: number;
14
16
  style?: IRectGraphicAttribute;
17
+ state?: Record<StateValue, IMarkStateSpec<IRectGraphicAttribute> | IMarkStateStyleSpec<IRectGraphicAttribute>>;
15
18
  };
16
19
  barBackground?: {
17
20
  visible?: boolean;
18
21
  type?: string;
19
22
  style?: ISymbolGraphicAttribute | IRectGraphicAttribute;
23
+ state?: Record<StateValue, IMarkStateSpec<ISymbolGraphicAttribute | IRectGraphicAttribute> | IMarkStateStyleSpec<ISymbolGraphicAttribute | IRectGraphicAttribute>>;
20
24
  };
21
25
  rankingIcon?: {
22
26
  visible?: boolean;
23
27
  style?: ISymbolGraphicAttribute;
28
+ state?: Record<StateValue, IMarkStateSpec<ISymbolGraphicAttribute> | IMarkStateStyleSpec<ISymbolGraphicAttribute>>;
24
29
  };
25
30
  decorateHaloIcons?: [
26
31
  {
27
32
  visible?: boolean;
28
33
  style?: ISymbolGraphicAttribute;
34
+ state?: Record<StateValue, IMarkStateSpec<ISymbolGraphicAttribute> | IMarkStateStyleSpec<ISymbolGraphicAttribute>>;
29
35
  }
30
36
  ];
31
37
  orderLabel?: {
32
38
  visible?: boolean;
33
39
  style?: ITextGraphicAttribute;
34
40
  formatMethod?: (text: string, datum: Datum) => string;
41
+ state?: Record<StateValue, IMarkStateSpec<ITextGraphicAttribute> | IMarkStateStyleSpec<ITextGraphicAttribute>>;
35
42
  };
36
43
  nameLabel?: {
37
44
  visible?: boolean;
38
45
  style?: ITextGraphicAttribute;
39
46
  formatMethod?: (text: string, datum: Datum) => string;
47
+ state?: Record<StateValue, IMarkStateSpec<ITextGraphicAttribute> | IMarkStateStyleSpec<ITextGraphicAttribute>>;
40
48
  };
41
49
  valueLabel?: {
42
50
  visible?: boolean;
43
51
  style?: ITextGraphicAttribute;
44
52
  formatMethod?: (text: string, datum: Datum) => string;
53
+ state?: Record<StateValue, IMarkStateSpec<ITextGraphicAttribute> | IMarkStateStyleSpec<ITextGraphicAttribute>>;
45
54
  };
46
55
  pageSize?: number;
47
56
  scrollSize?: number;
@@ -1 +1 @@
1
- {"version":3,"sources":["charts/ranking-list/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import { Datum } from '@visactor/vchart/src/typings/common';\nimport {\n ITextGraphicAttribute,\n ISymbolGraphicAttribute,\n IRectGraphicAttribute,\n EasingType\n} from '@visactor/vrender-core';\n\ntype IRankingListData = Datum[];\n\nexport interface IRankingListSpec {\n /**\n * 图表类型\n */\n type: 'rankingList';\n /**\n * 数据\n */\n data: IRankingListData;\n /**\n * x轴字段\n */\n xField: string;\n /**\n * y轴字段\n */\n yField: string;\n width?: number;\n height?: number;\n /**\n * 标签布局\n * @default 'top'\n */\n labelLayout?: 'top' | 'bothEnd';\n /**\n * 柱样式\n */\n bar?: {\n height?: number;\n style?: IRectGraphicAttribute;\n };\n /**\n * 柱图背景\n */\n barBackground?: {\n visible?: boolean;\n type?: string;\n style?: ISymbolGraphicAttribute | IRectGraphicAttribute;\n };\n /**\n * 排名图标\n */\n rankingIcon?: {\n visible?: boolean;\n style?: ISymbolGraphicAttribute;\n };\n /**\n * 装饰图元\n */\n decorateHaloIcons?: [\n {\n visible?: boolean;\n // type?: 'circle' | 'square' | 'emptyCircle' | 'diamond' | 'halo' | 'concentric' | 'custom';\n style?: ISymbolGraphicAttribute;\n }\n ];\n /**\n * 排名序号\n */\n orderLabel?: {\n visible?: boolean;\n style?: ITextGraphicAttribute;\n formatMethod?: (text: string, datum: Datum) => string;\n };\n /**\n * 名称标签(yField对应的标签)\n */\n nameLabel?: {\n visible?: boolean;\n style?: ITextGraphicAttribute;\n formatMethod?: (text: string, datum: Datum) => string;\n };\n /**\n * 值标签(xField对应的标签)\n */\n valueLabel?: {\n visible?: boolean;\n style?: ITextGraphicAttribute;\n formatMethod?: (text: string, datum: Datum) => string;\n };\n /**\n * 每页行数\n */\n pageSize?: number;\n /**\n * 滚动行数\n */\n scrollSize?: number;\n /**\n * 动画\n */\n animation?: {\n /**\n * 动画类型\n * @default 'both'\n * 'scroll' 滚动\n * 'grow' 伸展\n */\n type?: 'scroll' | 'grow' | 'both';\n /**\n * 动画间隔\n */\n interval?: number;\n /**\n * 动画时长\n */\n duration?: number;\n /**\n * 动画缓动效果\n */\n easing?: EasingType;\n };\n}\n"]}
1
+ {"version":3,"sources":["charts/ranking-list/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import { IMarkStateSpec, IMarkStateStyleSpec } from '@visactor/vchart';\nimport { StateValue } from '@visactor/vchart/src/compile/mark';\nimport { Datum } from '@visactor/vchart/src/typings/common';\nimport {\n ITextGraphicAttribute,\n ISymbolGraphicAttribute,\n IRectGraphicAttribute,\n EasingType\n} from '@visactor/vrender-core';\n\ntype IRankingListData = Datum[];\n\nexport interface IRankingListSpec {\n /**\n * 图表类型\n */\n type: 'rankingList';\n /**\n * 数据\n */\n data: IRankingListData;\n /**\n * x轴字段\n */\n xField: string;\n /**\n * y轴字段\n */\n yField: string;\n width?: number;\n height?: number;\n /**\n * 标签布局\n * @default 'top'\n */\n labelLayout?: 'top' | 'bothEnd';\n /**\n * 柱样式\n */\n bar?: {\n height?: number;\n style?: IRectGraphicAttribute;\n state?: Record<StateValue, IMarkStateSpec<IRectGraphicAttribute> | IMarkStateStyleSpec<IRectGraphicAttribute>>;\n };\n /**\n * 柱图背景\n */\n barBackground?: {\n visible?: boolean;\n type?: string;\n style?: ISymbolGraphicAttribute | IRectGraphicAttribute;\n state?: Record<\n StateValue,\n | IMarkStateSpec<ISymbolGraphicAttribute | IRectGraphicAttribute>\n | IMarkStateStyleSpec<ISymbolGraphicAttribute | IRectGraphicAttribute>\n >;\n };\n /**\n * 排名图标\n */\n rankingIcon?: {\n visible?: boolean;\n style?: ISymbolGraphicAttribute;\n state?: Record<StateValue, IMarkStateSpec<ISymbolGraphicAttribute> | IMarkStateStyleSpec<ISymbolGraphicAttribute>>;\n };\n /**\n * 装饰图元\n */\n decorateHaloIcons?: [\n {\n visible?: boolean;\n // type?: 'circle' | 'square' | 'emptyCircle' | 'diamond' | 'halo' | 'concentric' | 'custom';\n style?: ISymbolGraphicAttribute;\n state?: Record<\n StateValue,\n IMarkStateSpec<ISymbolGraphicAttribute> | IMarkStateStyleSpec<ISymbolGraphicAttribute>\n >;\n }\n ];\n /**\n * 排名序号\n */\n orderLabel?: {\n visible?: boolean;\n style?: ITextGraphicAttribute;\n formatMethod?: (text: string, datum: Datum) => string;\n state?: Record<StateValue, IMarkStateSpec<ITextGraphicAttribute> | IMarkStateStyleSpec<ITextGraphicAttribute>>;\n };\n /**\n * 名称标签(yField对应的标签)\n */\n nameLabel?: {\n visible?: boolean;\n style?: ITextGraphicAttribute;\n formatMethod?: (text: string, datum: Datum) => string;\n state?: Record<StateValue, IMarkStateSpec<ITextGraphicAttribute> | IMarkStateStyleSpec<ITextGraphicAttribute>>;\n };\n /**\n * 值标签(xField对应的标签)\n */\n valueLabel?: {\n visible?: boolean;\n style?: ITextGraphicAttribute;\n formatMethod?: (text: string, datum: Datum) => string;\n state?: Record<StateValue, IMarkStateSpec<ITextGraphicAttribute> | IMarkStateStyleSpec<ITextGraphicAttribute>>;\n };\n /**\n * 每页行数\n */\n pageSize?: number;\n /**\n * 滚动行数\n */\n scrollSize?: number;\n /**\n * 动画\n */\n animation?: {\n /**\n * 动画类型\n * @default 'both'\n * 'scroll' 滚动\n * 'grow' 伸展\n */\n type?: 'scroll' | 'grow' | 'both';\n /**\n * 动画间隔\n */\n interval?: number;\n /**\n * 动画时长\n */\n duration?: number;\n /**\n * 动画缓动效果\n */\n easing?: EasingType;\n };\n}\n"]}
@@ -25,6 +25,7 @@ export declare class RankingListChartSpecTransformer extends CommonChartSpecTran
25
25
  visible: boolean;
26
26
  dataKey: string;
27
27
  zIndex: number;
28
+ state: any;
28
29
  style: any;
29
30
  animation: boolean;
30
31
  animationEnter: ({
@@ -105,6 +106,7 @@ export declare class RankingListChartSpecTransformer extends CommonChartSpecTran
105
106
  dataId: string;
106
107
  visible: boolean;
107
108
  dataKey: string;
109
+ state: any;
108
110
  style: any;
109
111
  animation: boolean;
110
112
  animationEnter: ({
@@ -183,6 +185,7 @@ export declare class RankingListChartSpecTransformer extends CommonChartSpecTran
183
185
  type: string;
184
186
  dataId: string;
185
187
  dataKey: string;
188
+ state: any;
186
189
  style: any;
187
190
  animation: boolean;
188
191
  animationEnter: ({
@@ -261,6 +264,7 @@ export declare class RankingListChartSpecTransformer extends CommonChartSpecTran
261
264
  type: string;
262
265
  dataId: string;
263
266
  dataKey: string;
267
+ state: any;
264
268
  style: any;
265
269
  animation: boolean;
266
270
  animationEnter: ({
@@ -340,6 +344,11 @@ export declare class RankingListChartSpecTransformer extends CommonChartSpecTran
340
344
  dataId: string;
341
345
  visible: boolean;
342
346
  dataKey: string;
347
+ state: {
348
+ blur: {
349
+ opacity: number;
350
+ };
351
+ };
343
352
  style: any;
344
353
  animation: boolean;
345
354
  animationEnter: ({
@@ -145,6 +145,7 @@ export class RankingListChartSpecTransformer extends CommonChartSpecTransformer
145
145
  } ];
146
146
  }
147
147
  generateBarBackground(spec) {
148
+ var _a;
148
149
  const totalDuration = spec.animation.duration;
149
150
  return {
150
151
  type: spec.barBackground.type,
@@ -152,6 +153,7 @@ export class RankingListChartSpecTransformer extends CommonChartSpecTransformer
152
153
  visible: !0,
153
154
  dataKey: DATA_KEY,
154
155
  zIndex: -99,
156
+ state: null === (_a = spec.barBackground) || void 0 === _a ? void 0 : _a.state,
155
157
  style: Object.assign(Object.assign({
156
158
  x: (datum, ctx) => "symbol" === spec.barBackground.type ? ctx.getRegion().getLayoutRect().width / 2 : 0,
157
159
  y: (datum, ctx) => ctx.valueToY([ datum[spec.yField] ]) + ctx.yBandwidth() / 2 - ("symbol" === spec.barBackground.type ? 0 : spec.bar.height / 2),
@@ -174,8 +176,11 @@ export class RankingListChartSpecTransformer extends CommonChartSpecTransformer
174
176
  dataId: "data",
175
177
  visible: !0,
176
178
  dataKey: DATA_KEY,
179
+ state: null == decorateHaloIcon ? void 0 : decorateHaloIcon.state,
177
180
  style: Object.assign(Object.assign({
178
- x: (datum, ctx) => ctx.valueToX([ datum[spec.xField] ]),
181
+ x: (datum, ctx) => {
182
+ if (void 0 !== datum[spec.xField] && null !== datum[spec.xField]) return ctx.valueToX([ datum[spec.xField] ]);
183
+ },
179
184
  y: (datum, ctx) => ctx.valueToY([ datum[spec.yField] ]) + ctx.yBandwidth() / 2
180
185
  }, decorateHaloIcon.style), {
181
186
  visible: datum => !datum[SUPPLY_DATA_KEY] && decorateHaloIcon.style.visible
@@ -193,6 +198,7 @@ export class RankingListChartSpecTransformer extends CommonChartSpecTransformer
193
198
  dataId: "data",
194
199
  visible: !0,
195
200
  dataKey: DATA_KEY,
201
+ state: spec.rankingIcon.state,
196
202
  style: Object.assign(Object.assign({
197
203
  x: datum => "bothEnd" === spec.labelLayout ? -(10 + this.nameLabelTextMeasure.fullMeasure(this.formatDatum(spec.yField, datum)).width + (spec.orderLabel.style.visible ? 5 + this.orderLabelTextMeasure.fullMeasure(this.formatDatum(ORDER_KEY, datum)).width : 0) + 8) : 5,
198
204
  y: (datum, ctx) => "bothEnd" === spec.labelLayout ? ctx.valueToY([ datum[spec.yField] ]) + ctx.yBandwidth() / 2 : ctx.valueToY([ datum[spec.yField] ]) + ctx.yBandwidth() / 2 - spec.bar.height / 2 - 5 - Math.max(this.nameLabelTextMeasure.fullMeasure(this.formatDatum(spec.yField, datum)).height, this.orderLabelTextMeasure.fullMeasure(this.formatDatum(ORDER_KEY, datum)).height) / 2
@@ -208,11 +214,13 @@ export class RankingListChartSpecTransformer extends CommonChartSpecTransformer
208
214
  };
209
215
  }
210
216
  generateNameLabel(spec) {
217
+ var _a;
211
218
  const totalDuration = spec.animation.duration;
212
219
  return {
213
220
  type: "text",
214
221
  dataId: "data",
215
222
  dataKey: DATA_KEY,
223
+ state: null === (_a = spec.nameLabel) || void 0 === _a ? void 0 : _a.state,
216
224
  style: Object.assign(Object.assign({
217
225
  text: datum => this.formatDatum(spec.yField, datum),
218
226
  x: () => {
@@ -232,11 +240,13 @@ export class RankingListChartSpecTransformer extends CommonChartSpecTransformer
232
240
  };
233
241
  }
234
242
  generateOrderLabel(spec) {
243
+ var _a;
235
244
  const totalDuration = spec.animation.duration;
236
245
  return {
237
246
  type: "text",
238
247
  dataId: "data",
239
248
  dataKey: DATA_KEY,
249
+ state: null === (_a = spec.orderLabel) || void 0 === _a ? void 0 : _a.state,
240
250
  style: Object.assign(Object.assign({
241
251
  text: datum => this.formatDatum(ORDER_KEY, datum),
242
252
  x: datum => {
@@ -262,6 +272,11 @@ export class RankingListChartSpecTransformer extends CommonChartSpecTransformer
262
272
  dataId: "data",
263
273
  visible: !0,
264
274
  dataKey: DATA_KEY,
275
+ state: {
276
+ blur: {
277
+ opacity: .2
278
+ }
279
+ },
265
280
  style: Object.assign(Object.assign({
266
281
  text: datum => this.formatDatum(spec.xField, datum),
267
282
  x: (datum, ctx) => "bothEnd" === spec.labelLayout ? ctx.getRegion().getLayoutRect().width + this.getMaxDataLabelLens(spec, spec.xField, this.nameLabelTextMeasure) + 5 : ctx.getRegion().getLayoutRect().width,
@@ -279,8 +294,12 @@ export class RankingListChartSpecTransformer extends CommonChartSpecTransformer
279
294
  }
280
295
  transformPaddingSpec(spec) {
281
296
  var _a;
297
+ const maxHaloIconSize = Math.max(...spec.decorateHaloIcons.map((icon => {
298
+ var _a;
299
+ return null !== (_a = icon.style.size) && void 0 !== _a ? _a : 18;
300
+ })));
282
301
  spec.padding = Object.assign({
283
- left: "bothEnd" === spec.labelLayout ? 10 + this.getMaxDataLabelLens(spec, spec.yField, this.nameLabelTextMeasure) + (spec.orderLabel.style.visible ? 5 + this.getMaxDataLabelLens(spec, ORDER_KEY, this.orderLabelTextMeasure) : 0) + (spec.rankingIcon.style.visible ? 8 + (null !== (_a = spec.rankingIcon.style.size) && void 0 !== _a ? _a : 10) : 0) + 5 : 5,
302
+ left: "bothEnd" === spec.labelLayout ? 10 + this.getMaxDataLabelLens(spec, spec.yField, this.nameLabelTextMeasure) + (spec.orderLabel.style.visible ? 5 + this.getMaxDataLabelLens(spec, ORDER_KEY, this.orderLabelTextMeasure) : 0) + (spec.rankingIcon.style.visible ? 8 + (null !== (_a = spec.rankingIcon.style.size) && void 0 !== _a ? _a : 10) : 0) + 5 : 5 + maxHaloIconSize / 2,
284
303
  right: "bothEnd" === spec.labelLayout ? 5 + this.getMaxDataLabelLens(spec, spec.yField, this.valueLabelTextMeasure) + 5 : 15,
285
304
  top: 0,
286
305
  bottom: 0
@@ -1 +1 @@
1
- {"version":3,"sources":["charts/ranking-list/ranking-list-transformer.ts"],"names":[],"mappings":"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","file":"ranking-list-transformer.js","sourcesContent":["import { Datum } from '@visactor/vchart/src/typings';\nimport type { IRankingListSpec } from './interface';\nimport { CommonChartSpecTransformer } from '@visactor/vchart';\nimport { TextMeasure } from '@visactor/vutils';\nimport { defaultSpec } from './constant';\nimport { applyVisible, computeDataRange, mergeObjects } from './utils';\nimport { IAnimationParameters, IElement } from '@visactor/vgammar-core';\n\nconst DATA_KEY = 'dataKey';\nconst ORDER_KEY = 'VCHART_ORDER';\nconst SUPPLY_DATA_KEY = 'SUPPLY_DATA_KEY';\nconst NAME_LABEL_PADDING_RIGHT = 10;\nconst NAME_ORDER_PADDING_RIGHT = 5;\nconst NAME_SYMBOL_PADDING_RIGHT = 8;\nconst CHART_PADDING_LEFT = 5;\nconst CHART_PADDING_RIGHT = 5;\nconst VALUE_LABEL_PADDING_LEFT = 5;\n\nconst LABEL_PADDING_BOTTOM = 5;\n\nexport class RankingListChartSpecTransformer extends CommonChartSpecTransformer {\n protected nameLabelTextMeasure: TextMeasure<any>;\n protected valueLabelTextMeasure: TextMeasure<any>;\n protected orderLabelTextMeasure: TextMeasure<any>;\n protected originalData: Datum[];\n protected dataSpecs: any[];\n protected formatMap: { [key: string]: (text: string, ctx: any) => string } = {};\n\n transformSpec(spec: any): void {\n super.transformSpec(spec);\n this.normalizeSpec(spec);\n this.upgradeTextMeasure(spec);\n this.upgradeFormatMap(spec);\n this.processData(spec);\n\n // rankingList spec -> vchart spec\n this.transformBaseSpec(spec);\n this.transformAnimationSpec(spec);\n this.transformAxesSpec(spec);\n\n spec.extensionMark = [\n // 柱图背景\n this.generateBarBackground(spec),\n // 辅助图标\n ...this.generateDecorateHaloIcons(spec),\n // 左侧图标\n this.generateRankingIcon(spec),\n // 左侧label\n this.generateNameLabel(spec),\n // 左侧序号label\n this.generateOrderLabel(spec),\n // 右侧label\n this.generateValueLabel(spec)\n ];\n\n this.transformPaddingSpec(spec);\n\n super.transformSpec(spec);\n }\n\n normalizeSpec(spec: any) {\n // 处理配置\n mergeObjects(spec, defaultSpec);\n applyVisible(spec, [\n 'barBackground',\n 'rankingIcon',\n 'decorateHaloIcon',\n 'orderLabel',\n 'nameLabel',\n 'valueLabel'\n // 'bar'\n ]);\n }\n\n upgradeTextMeasure(spec: any) {\n // 初始化文字测量\n this.nameLabelTextMeasure?.release();\n this.valueLabelTextMeasure?.release();\n this.orderLabelTextMeasure?.release();\n this.nameLabelTextMeasure = new TextMeasure({\n defaultFontParams: spec.nameLabel?.style ?? {}\n });\n this.valueLabelTextMeasure = new TextMeasure({\n defaultFontParams: spec.valueLabel?.style ?? {}\n });\n this.orderLabelTextMeasure = new TextMeasure({\n defaultFontParams: spec.orderLabel?.style ?? {}\n });\n }\n\n upgradeFormatMap(spec: any) {\n this.formatMap[spec.yField] = spec.nameLabel.formatMethod;\n this.formatMap[spec.xField] = spec.valueLabel.formatMethod;\n this.formatMap[ORDER_KEY] = spec.orderLabel.formatMethod;\n }\n\n processData(spec: any) {\n // ps: 如果updateSpec后, 同时执行2次processData会有问题, 在这里用比较hack的方式绕过第2次\n if (!spec.data[0]?.values) {\n this.dataSpecs = this.processRankingData(spec as unknown as IRankingListSpec);\n this.originalData = spec.data;\n spec.data = this.dataSpecs[0].data;\n // console.log('processdata');\n }\n }\n\n transformBaseSpec(spec: any) {\n spec.type = 'common';\n spec.dataKey = DATA_KEY;\n spec.series = [\n {\n type: 'bar',\n direction: 'horizontal',\n xField: spec.xField,\n yField: spec.yField,\n barWidth: spec.bar?.height ?? 10,\n bar: {\n ...spec.bar,\n style: {\n ...spec.bar?.style,\n x1: 0,\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.bar?.style ?? true;\n }\n }\n }\n }\n ];\n }\n\n transformAnimationSpec(spec: any) {\n const totalDuration = spec.animation.duration;\n\n if (spec.animation) {\n spec.player = {\n ...spec.player,\n specs: this.dataSpecs,\n auto: true,\n visible: false,\n interval: spec.animation.interval + spec.animation.duration / 2,\n loop: true\n };\n\n spec.animationExit = this.getAnimationExit(spec, totalDuration);\n spec.animationAppear = this.getAnimationEnter(spec, 'rect', totalDuration);\n spec.animationEnter = this.getAnimationEnter(spec, 'rect', totalDuration);\n }\n }\n\n transformAxesSpec(spec: any) {\n const { min, max } = computeDataRange(this.originalData, spec.xField);\n spec.axes = [\n {\n orient: 'left',\n type: 'band',\n visible: false,\n inverse: true\n },\n {\n orient: 'bottom',\n label: { visible: true },\n type: 'linear',\n visible: false,\n min,\n max\n }\n ];\n }\n\n generateBarBackground(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: spec.barBackground.type,\n dataId: 'data',\n visible: true,\n dataKey: DATA_KEY,\n zIndex: -99,\n style: {\n x: (datum: Datum, ctx: any) =>\n spec.barBackground.type === 'symbol' ? ctx.getRegion().getLayoutRect().width / 2 : 0,\n y: (datum: Datum, ctx: any) => {\n return (\n ctx.valueToY([datum[spec.yField]]) +\n ctx.yBandwidth() / 2 -\n (spec.barBackground.type === 'symbol' ? 0 : spec.bar.height / 2)\n );\n },\n size: (datum: Datum, ctx: any) => [ctx.getRegion().getLayoutRect().width, spec.bar.height],\n width: (datum: Datum, ctx: any) => ctx.getRegion().getLayoutRect().width,\n height: spec.bar.height,\n ...spec.barBackground.style,\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.barBackground.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'barBack', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'barBack', totalDuration)\n };\n }\n\n generateDecorateHaloIcons(spec: any) {\n const totalDuration = spec.animation.duration;\n return spec.decorateHaloIcons.map((decorateHaloIcon: any) => {\n return {\n type: 'symbol',\n dataId: 'data',\n visible: true,\n dataKey: DATA_KEY,\n style: {\n x: (datum: Datum, ctx: any) => {\n return ctx.valueToX([datum[spec.xField]]);\n },\n y: (datum: Datum, ctx: any) => {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n },\n ...decorateHaloIcon.style,\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return decorateHaloIcon.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'symbol', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'symbol', totalDuration)\n };\n });\n }\n\n generateRankingIcon(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: 'symbol',\n dataId: 'data',\n visible: true,\n dataKey: DATA_KEY,\n style: {\n x: (datum: Datum) => {\n if (spec.labelLayout === 'bothEnd') {\n return -(\n NAME_LABEL_PADDING_RIGHT +\n this.nameLabelTextMeasure.fullMeasure(this.formatDatum(spec.yField, datum)).width +\n (spec.orderLabel.style.visible\n ? NAME_ORDER_PADDING_RIGHT +\n this.orderLabelTextMeasure.fullMeasure(this.formatDatum(ORDER_KEY, datum)).width\n : 0) +\n NAME_SYMBOL_PADDING_RIGHT\n );\n }\n return CHART_PADDING_LEFT;\n },\n y: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n }\n return (\n ctx.valueToY([datum[spec.yField]]) +\n ctx.yBandwidth() / 2 -\n spec.bar.height / 2 -\n LABEL_PADDING_BOTTOM -\n Math.max(\n this.nameLabelTextMeasure.fullMeasure(this.formatDatum(spec.yField, datum)).height,\n this.orderLabelTextMeasure.fullMeasure(this.formatDatum(ORDER_KEY, datum)).height\n ) /\n 2\n );\n },\n ...spec.rankingIcon.style,\n lineWidth: 0,\n stroke: null,\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.rankingIcon.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'text', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'text', totalDuration)\n };\n }\n\n generateNameLabel(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: 'text',\n dataId: 'data',\n dataKey: DATA_KEY,\n style: {\n text: (datum: Datum) => this.formatDatum(spec.yField, datum),\n x: () => {\n if (spec.labelLayout === 'bothEnd') {\n return -NAME_LABEL_PADDING_RIGHT;\n }\n return (\n (spec.rankingIcon.style.visible ? NAME_SYMBOL_PADDING_RIGHT + (spec.rankingIcon.style.size ?? 10) : 0) +\n (spec.orderLabel.style.visible\n ? NAME_ORDER_PADDING_RIGHT + this.getMaxDataLabelLens(spec, ORDER_KEY, this.orderLabelTextMeasure)\n : 0)\n );\n },\n y: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n }\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2 - spec.bar.height / 2 - LABEL_PADDING_BOTTOM;\n },\n ...spec.nameLabel.style,\n textAlign: spec.labelLayout === 'bothEnd' ? 'right' : 'left',\n textBaseline: spec.labelLayout === 'bothEnd' ? 'middle' : 'bottom',\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.nameLabel.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'text', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'text', totalDuration)\n };\n }\n\n generateOrderLabel(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: 'text',\n dataId: 'data',\n dataKey: DATA_KEY,\n style: {\n text: (datum: Datum) => this.formatDatum(ORDER_KEY, datum),\n x: (datum: Datum) => {\n if (spec.labelLayout === 'bothEnd') {\n return -(\n NAME_LABEL_PADDING_RIGHT +\n this.nameLabelTextMeasure.fullMeasure(this.formatDatum(spec.yField, datum)).width +\n NAME_ORDER_PADDING_RIGHT\n );\n } else {\n return spec.rankingIcon.style.visible ? NAME_SYMBOL_PADDING_RIGHT + (spec.rankingIcon.style.size ?? 10) : 0;\n }\n },\n y: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n }\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2 - spec.bar.height / 2 - LABEL_PADDING_BOTTOM;\n },\n ...spec.orderLabel.style,\n textAlign: spec.labelLayout === 'bothEnd' ? 'right' : 'left',\n textBaseline: spec.labelLayout === 'bothEnd' ? 'middle' : 'bottom',\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.orderLabel.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'text', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'text', totalDuration)\n };\n }\n\n generateValueLabel(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: 'text',\n dataId: 'data',\n visible: true,\n dataKey: DATA_KEY,\n style: {\n text: (datum: Datum) => this.formatDatum(spec.xField, datum),\n x: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return (\n ctx.getRegion().getLayoutRect().width +\n this.getMaxDataLabelLens(spec, spec.xField, this.nameLabelTextMeasure) +\n VALUE_LABEL_PADDING_LEFT\n );\n } else {\n return ctx.getRegion().getLayoutRect().width;\n }\n },\n y: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n }\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2 - spec.bar.height / 2 - LABEL_PADDING_BOTTOM;\n },\n ...spec.valueLabel.style,\n textAlign: 'right',\n textBaseline: spec.labelLayout === 'bothEnd' ? 'middle' : 'bottom',\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.valueLabel.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'text', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'text', totalDuration)\n };\n }\n\n transformPaddingSpec(spec: any) {\n spec.padding = {\n left:\n spec.labelLayout === 'bothEnd'\n ? NAME_LABEL_PADDING_RIGHT +\n this.getMaxDataLabelLens(spec, spec.yField, this.nameLabelTextMeasure) +\n (spec.orderLabel.style.visible\n ? NAME_ORDER_PADDING_RIGHT + this.getMaxDataLabelLens(spec, ORDER_KEY, this.orderLabelTextMeasure)\n : 0) +\n (spec.rankingIcon.style.visible ? NAME_SYMBOL_PADDING_RIGHT + (spec.rankingIcon.style.size ?? 10) : 0) +\n CHART_PADDING_LEFT\n : CHART_PADDING_LEFT,\n right:\n spec.labelLayout === 'bothEnd'\n ? VALUE_LABEL_PADDING_LEFT +\n this.getMaxDataLabelLens(spec, spec.yField, this.valueLabelTextMeasure) +\n CHART_PADDING_RIGHT\n : CHART_PADDING_RIGHT + 10,\n top: 0,\n bottom: 0,\n ...spec.padding\n };\n }\n\n paginateDataArr = (spec: IRankingListSpec) => {\n const { data: arr, scrollSize = 1, pageSize = 5 } = spec;\n const result: { [key: string]: Datum[] } = {};\n let pageOrder = 0;\n for (let i = 0; i < arr.length; i += scrollSize) {\n pageOrder++;\n result[`page${pageOrder}`] = arr.slice(i, i + pageSize);\n if (i + pageSize - 1 >= arr.length - 1) {\n arr.push(\n ...Array.from({ length: i + pageSize - arr.length }, _ => {\n return {\n [spec.yField]: Math.random() * 100,\n [spec.xField]: null,\n [SUPPLY_DATA_KEY]: true\n };\n })\n );\n break;\n }\n }\n return {\n orderCount: pageOrder,\n result: result\n };\n };\n\n processRankingData = (spec: IRankingListSpec) => {\n const result: any[] = [];\n spec.data.forEach((datum, index) => (datum[ORDER_KEY] = index + 1 < 10 ? `0${index + 1}` : index + 1));\n const pagerData = this.paginateDataArr(spec).result;\n const orderCount = this.paginateDataArr(spec).orderCount;\n const supplyCount = spec.pageSize - pagerData[`page${orderCount}`].length;\n pagerData[`page${orderCount}`].push(\n ...Array.from({ length: supplyCount }, _ => {\n return {\n [spec.yField]: Math.random() * 100,\n [spec.xField]: null,\n [SUPPLY_DATA_KEY]: true\n };\n })\n );\n\n Object.keys(pagerData).forEach(order => {\n result.push({\n data: [\n {\n id: 'datas',\n values: pagerData[order].map((d, i) => {\n return { ...d, [DATA_KEY]: order + '_' + i + '_' + new Date().getTime() };\n })\n },\n {\n id: 'order',\n values: [\n {\n order\n }\n ]\n }\n ]\n });\n });\n\n // 只有1页时, player循环播放时, prePage和curPage data一致, 导致没有动画效果\n // 在此手动复制1页, 且prePage和curPage dataKey不一致, 保证动画效果\n if (result.length === 1) {\n result.push({\n data: [\n {\n id: 'datas',\n values: pagerData['page1'].map((d, i) => {\n return { ...d, [DATA_KEY]: 'page2' + '_' + i + '_' + new Date().getTime() };\n })\n },\n {\n id: 'order',\n values: [\n {\n order: 'page2'\n }\n ]\n }\n ]\n });\n }\n return result;\n };\n\n getMaxDataLabelLens(spec: IRankingListSpec, field: string, textMeasure: TextMeasure<any>) {\n const textWidths = this.originalData.map(datum =>\n datum[SUPPLY_DATA_KEY] ? 0 : textMeasure.fullMeasure(this.formatDatum(field, datum)).width\n );\n return Math.max(...textWidths);\n }\n\n formatDatum(field: string, datum: Datum) {\n // console.log('field', field, datum);\n if (this.formatMap?.[field]) {\n return this.formatMap[field](datum[field], datum);\n } else {\n return datum[field];\n }\n }\n\n getLabelWidth(padding: number, width: number) {\n return width + padding;\n }\n\n getAnimationExit(spec: IRankingListSpec, duration: number) {\n if (spec.animation.type === 'grow') {\n return {};\n }\n return {\n type: 'moveOut',\n options: {\n direction: 'y',\n orient: 'negative',\n point: (datum: Datum, element: IElement, opt: IAnimationParameters) => {\n const channelAttr = element.getGraphicAttribute('y');\n const barSpace = (spec.height / spec.pageSize - spec.bar.height) / 2;\n return { y: channelAttr - opt.height + barSpace };\n }\n },\n duration: spec.animation.type === 'both' ? duration / 2 : duration,\n easing: spec.animation.easing\n };\n }\n\n getAnimationEnter(spec: IRankingListSpec, markType: 'rect' | 'text' | 'symbol' | 'barBack', totalDuration: number) {\n const { animation } = spec;\n const { type: animationType, easing } = animation;\n const scrollDuration = animationType === 'both' ? totalDuration / 2 : totalDuration;\n const growDuration = animationType === 'grow' ? totalDuration : totalDuration / 2;\n const result = [];\n if (animationType === 'scroll' || animationType === 'both') {\n result.push({\n type: 'moveIn',\n options: {\n direction: 'y',\n orient: 'negative',\n excludeChannels: ['y'],\n point: (datum: Datum, element: IElement, opt: IAnimationParameters) => {\n const channelAttr = element.getGraphicAttribute('y');\n const barSpace = (spec.height / spec.pageSize - spec.bar.height) / 2;\n return { y: channelAttr + opt.height - barSpace };\n }\n },\n duration: scrollDuration,\n easing\n });\n }\n if ((animationType === 'grow' || animationType === 'both') && markType !== 'text' && markType !== 'barBack') {\n result.push({\n channel: {\n x: {\n from: 0,\n to: (datum: Datum, element: IElement) => {\n return element.getGraphicItem().attribute.x;\n }\n }\n },\n duration: growDuration,\n delay: animationType === 'both' ? scrollDuration : 0,\n easing\n });\n }\n return result;\n }\n}\n"]}
1
+ {"version":3,"sources":["charts/ranking-list/ranking-list-transformer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvE,MAAM,QAAQ,GAAG,SAAS,CAAC;AAC3B,MAAM,SAAS,GAAG,cAAc,CAAC;AACjC,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAC1C,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACpC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACnC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AACpC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAEnC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B,MAAM,OAAO,+BAAgC,SAAQ,0BAA0B;IAA/E;;QAMY,cAAS,GAA0D,EAAE,CAAC;QAibhF,oBAAe,GAAG,CAAC,IAAsB,EAAE,EAAE;YAC3C,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;YACzD,MAAM,MAAM,GAA+B,EAAE,CAAC;YAC9C,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE;gBAC/C,SAAS,EAAE,CAAC;gBACZ,MAAM,CAAC,OAAO,SAAS,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC;gBACxD,IAAI,CAAC,GAAG,QAAQ,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;oBACtC,GAAG,CAAC,IAAI,CACN,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE;wBACvD,OAAO;4BACL,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG;4BAClC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI;4BACnB,CAAC,eAAe,CAAC,EAAE,IAAI;yBACxB,CAAC;oBACJ,CAAC,CAAC,CACH,CAAC;oBACF,MAAM;iBACP;aACF;YACD,OAAO;gBACL,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE,MAAM;aACf,CAAC;QACJ,CAAC,CAAC;QAEF,uBAAkB,GAAG,CAAC,IAAsB,EAAE,EAAE;YAC9C,MAAM,MAAM,GAAU,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACvG,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YACpD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;YACzD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YAC1E,SAAS,CAAC,OAAO,UAAU,EAAE,CAAC,CAAC,IAAI,CACjC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE;gBACzC,OAAO;oBACL,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG;oBAClC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI;oBACnB,CAAC,eAAe,CAAC,EAAE,IAAI;iBACxB,CAAC;YACJ,CAAC,CAAC,CACH,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACrC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE;wBACJ;4BACE,EAAE,EAAE,OAAO;4BACX,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gCACpC,uCAAY,CAAC,KAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,IAAG;4BAC5E,CAAC,CAAC;yBACH;wBACD;4BACE,EAAE,EAAE,OAAO;4BACX,MAAM,EAAE;gCACN;oCACE,KAAK;iCACN;6BACF;yBACF;qBACF;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAIH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvB,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE;wBACJ;4BACE,EAAE,EAAE,OAAO;4BACX,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gCACtC,uCAAY,CAAC,KAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,IAAG;4BAC9E,CAAC,CAAC;yBACH;wBACD;4BACE,EAAE,EAAE,OAAO;4BACX,MAAM,EAAE;gCACN;oCACE,KAAK,EAAE,OAAO;iCACf;6BACF;yBACF;qBACF;iBACF,CAAC,CAAC;aACJ;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IAkFJ,CAAC;IAvlBC,aAAa,CAAC,IAAS;QACrB,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAGvB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE7B,IAAI,CAAC,aAAa,GAAG;YAEnB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAEhC,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;YAEvC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAE9B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAE5B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAE7B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;SAC9B,CAAC;QAEF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAEhC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,aAAa,CAAC,IAAS;QAErB,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAChC,YAAY,CAAC,IAAI,EAAE;YACjB,eAAe;YACf,aAAa;YACb,kBAAkB;YAClB,YAAY;YACZ,WAAW;YACX,YAAY;SAEb,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,IAAS;;QAE1B,MAAA,IAAI,CAAC,oBAAoB,0CAAE,OAAO,EAAE,CAAC;QACrC,MAAA,IAAI,CAAC,qBAAqB,0CAAE,OAAO,EAAE,CAAC;QACtC,MAAA,IAAI,CAAC,qBAAqB,0CAAE,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,oBAAoB,GAAG,IAAI,WAAW,CAAC;YAC1C,iBAAiB,EAAE,MAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,KAAK,mCAAI,EAAE;SAC/C,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,GAAG,IAAI,WAAW,CAAC;YAC3C,iBAAiB,EAAE,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,KAAK,mCAAI,EAAE;SAChD,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,GAAG,IAAI,WAAW,CAAC;YAC3C,iBAAiB,EAAE,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,KAAK,mCAAI,EAAE;SAChD,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB,CAAC,IAAS;QACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;QAC1D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAC3D,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;IAC3D,CAAC;IAED,WAAW,CAAC,IAAS;;QAEnB,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,0CAAE,MAAM,CAAA,EAAE;YACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAmC,CAAC,CAAC;YAC9E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;YAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;SAEpC;IACH,CAAC;IAED,iBAAiB,CAAC,IAAS;;QACzB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG;YACZ;gBACE,IAAI,EAAE,KAAK;gBACX,SAAS,EAAE,YAAY;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,MAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,MAAM,mCAAI,EAAE;gBAChC,GAAG,kCACE,IAAI,CAAC,GAAG,KACX,KAAK,kCACA,MAAA,IAAI,CAAC,GAAG,0CAAE,KAAK,KAClB,EAAE,EAAE,CAAC,EACL,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;;4BACxB,IAAI,KAAK,CAAC,eAAe,CAAC,EAAE;gCAC1B,OAAO,KAAK,CAAC;6BACd;4BACD,OAAO,MAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,KAAK,mCAAI,IAAI,CAAC;wBACjC,CAAC,MAEJ;aACF;SACF,CAAC;IACJ,CAAC;IAED,sBAAsB,CAAC,IAAS;QAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAE9C,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,MAAM,mCACN,IAAI,CAAC,MAAM,KACd,KAAK,EAAE,IAAI,CAAC,SAAS,EACrB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,KAAK,EACd,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,EAC/D,IAAI,EAAE,IAAI,GACX,CAAC;YAEF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YAChE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;YAC3E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;SAC3E;IACH,CAAC;IAED,iBAAiB,CAAC,IAAS;QACzB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACtE,IAAI,CAAC,IAAI,GAAG;YACV;gBACE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,IAAI;aACd;YACD;gBACE,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;gBACxB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,KAAK;gBACd,GAAG;gBACH,GAAG;aACJ;SACF,CAAC;IACJ,CAAC;IAED,qBAAqB,CAAC,IAAS;;QAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC9C,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;YAC7B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,QAAQ;YACjB,MAAM,EAAE,CAAC,EAAE;YACX,KAAK,EAAE,MAAA,IAAI,CAAC,aAAa,0CAAE,KAAK;YAChC,KAAK,gCACH,CAAC,EAAE,CAAC,KAAY,EAAE,GAAQ,EAAE,EAAE,CAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EACtF,CAAC,EAAE,CAAC,KAAY,EAAE,GAAQ,EAAE,EAAE;oBAC5B,OAAO,CACL,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;wBAClC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC;wBACpB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CACjE,CAAC;gBACJ,CAAC,EACD,IAAI,EAAE,CAAC,KAAY,EAAE,GAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAC1F,KAAK,EAAE,CAAC,KAAY,EAAE,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK,EACxE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,IACpB,IAAI,CAAC,aAAa,CAAC,KAAK,KAC3B,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;oBACxB,IAAI,KAAK,CAAC,eAAe,CAAC,EAAE;wBAC1B,OAAO,KAAK,CAAC;qBACd;oBACD,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC1C,CAAC,GACF;YACD,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAClC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC;YACtE,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC;YACzD,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC;SACxE,CAAC;IACJ,CAAC;IAED,yBAAyB,CAAC,IAAS;QACjC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC9C,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,gBAAqB,EAAE,EAAE;YAC1D,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,QAAQ;gBACjB,KAAK,EAAE,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,KAAK;gBAC9B,KAAK,gCACH,CAAC,EAAE,CAAC,KAAY,EAAE,GAAQ,EAAE,EAAE;wBAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;4BACnE,OAAO,SAAS,CAAC;yBAClB;wBACD,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC5C,CAAC,EACD,CAAC,EAAE,CAAC,KAAY,EAAE,GAAQ,EAAE,EAAE;wBAC5B,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;oBACnE,CAAC,IACE,gBAAgB,CAAC,KAAK,KACzB,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;wBACxB,IAAI,KAAK,CAAC,eAAe,CAAC,EAAE;4BAC1B,OAAO,KAAK,CAAC;yBACd;wBACD,OAAO,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC;oBACxC,CAAC,GACF;gBACD,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;gBAClC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC;gBACrE,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC;gBACzD,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC;aACvE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB,CAAC,IAAS;QAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC9C,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;YAC7B,KAAK,gCACH,CAAC,EAAE,CAAC,KAAY,EAAE,EAAE;oBAClB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;wBAClC,OAAO,CAAC,CACN,wBAAwB;4BACxB,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK;4BACjF,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO;gCAC5B,CAAC,CAAC,wBAAwB;oCACxB,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK;gCAClF,CAAC,CAAC,CAAC,CAAC;4BACN,yBAAyB,CAC1B,CAAC;qBACH;oBACD,OAAO,kBAAkB,CAAC;gBAC5B,CAAC,EACD,CAAC,EAAE,CAAC,KAAY,EAAE,GAAQ,EAAE,EAAE;oBAC5B,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;wBAClC,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;qBAClE;oBACD,OAAO,CACL,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;wBAClC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC;wBACpB,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;wBACnB,oBAAoB;wBACpB,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,EAClF,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAClF;4BACC,CAAC,CACJ,CAAC;gBACJ,CAAC,IACE,IAAI,CAAC,WAAW,CAAC,KAAK,KACzB,SAAS,EAAE,CAAC,EACZ,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;oBACxB,IAAI,KAAK,CAAC,eAAe,CAAC,EAAE;wBAC1B,OAAO,KAAK,CAAC;qBACd;oBACD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;gBACxC,CAAC,GACF;YACD,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAClC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC;YACnE,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC;YACzD,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC;SACrE,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,IAAS;;QACzB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC9C,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,MAAA,IAAI,CAAC,SAAS,0CAAE,KAAK;YAC5B,KAAK,gCACH,IAAI,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAC5D,CAAC,EAAE,GAAG,EAAE;;oBACN,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;wBAClC,OAAO,CAAC,wBAAwB,CAAC;qBAClC;oBACD,OAAO,CACL,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,GAAG,CAAC,MAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,mCAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACtG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO;4BAC5B,CAAC,CAAC,wBAAwB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC;4BAClG,CAAC,CAAC,CAAC,CAAC,CACP,CAAC;gBACJ,CAAC,EACD,CAAC,EAAE,CAAC,KAAY,EAAE,GAAQ,EAAE,EAAE;oBAC5B,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;wBAClC,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;qBAClE;oBACD,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,oBAAoB,CAAC;gBAChH,CAAC,IACE,IAAI,CAAC,SAAS,CAAC,KAAK,KACvB,SAAS,EAAE,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAC5D,YAAY,EAAE,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAClE,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;oBACxB,IAAI,KAAK,CAAC,eAAe,CAAC,EAAE;wBAC1B,OAAO,KAAK,CAAC;qBACd;oBACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;gBACtC,CAAC,GACF;YACD,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAClC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC;YACnE,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC;YACzD,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC;SACrE,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,IAAS;;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC9C,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,MAAA,IAAI,CAAC,UAAU,0CAAE,KAAK;YAC7B,KAAK,gCACH,IAAI,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,EAC1D,CAAC,EAAE,CAAC,KAAY,EAAE,EAAE;;oBAClB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;wBAClC,OAAO,CAAC,CACN,wBAAwB;4BACxB,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK;4BACjF,wBAAwB,CACzB,CAAC;qBACH;yBAAM;wBACL,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,GAAG,CAAC,MAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,mCAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBAC7G;gBACH,CAAC,EACD,CAAC,EAAE,CAAC,KAAY,EAAE,GAAQ,EAAE,EAAE;oBAC5B,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;wBAClC,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;qBAClE;oBACD,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,oBAAoB,CAAC;gBAChH,CAAC,IACE,IAAI,CAAC,UAAU,CAAC,KAAK,KACxB,SAAS,EAAE,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAC5D,YAAY,EAAE,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAClE,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;oBACxB,IAAI,KAAK,CAAC,eAAe,CAAC,EAAE;wBAC1B,OAAO,KAAK,CAAC;qBACd;oBACD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;gBACvC,CAAC,GACF;YACD,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAClC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC;YACnE,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC;YACzD,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC;SACrE,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,IAAS;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC9C,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE;gBACL,IAAI,EAAE;oBACJ,OAAO,EAAE,GAAG;iBACb;aACF;YACD,KAAK,gCACH,IAAI,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAC5D,CAAC,EAAE,CAAC,KAAY,EAAE,GAAQ,EAAE,EAAE;oBAC5B,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;wBAClC,OAAO,CACL,GAAG,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK;4BACrC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC;4BACtE,wBAAwB,CACzB,CAAC;qBACH;yBAAM;wBACL,OAAO,GAAG,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC;qBAC9C;gBACH,CAAC,EACD,CAAC,EAAE,CAAC,KAAY,EAAE,GAAQ,EAAE,EAAE;oBAC5B,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;wBAClC,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;qBAClE;oBACD,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,oBAAoB,CAAC;gBAChH,CAAC,IACE,IAAI,CAAC,UAAU,CAAC,KAAK,KACxB,SAAS,EAAE,OAAO,EAClB,YAAY,EAAE,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAClE,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;oBACxB,IAAI,KAAK,CAAC,eAAe,CAAC,EAAE;wBAC1B,OAAO,KAAK,CAAC;qBACd;oBACD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;gBACvC,CAAC,GACF;YACD,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAClC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC;YACnE,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC;YACzD,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC;SACrE,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,IAAS;;QAC5B,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,KAAK,CAAC,IAAI,mCAAI,EAAE,CAAA,EAAA,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,OAAO,mBACV,IAAI,EACF,IAAI,CAAC,WAAW,KAAK,SAAS;gBAC5B,CAAC,CAAC,wBAAwB;oBACxB,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC;oBACtE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO;wBAC5B,CAAC,CAAC,wBAAwB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC;wBAClG,CAAC,CAAC,CAAC,CAAC;oBACN,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,GAAG,CAAC,MAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,mCAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtG,kBAAkB;gBACpB,CAAC,CAAC,kBAAkB,GAAG,eAAe,GAAG,CAAC,EAC9C,KAAK,EACH,IAAI,CAAC,WAAW,KAAK,SAAS;gBAC5B,CAAC,CAAC,wBAAwB;oBACxB,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC;oBACvE,mBAAmB;gBACrB,CAAC,CAAC,mBAAmB,GAAG,EAAE,EAC9B,GAAG,EAAE,CAAC,EACN,MAAM,EAAE,CAAC,IACN,IAAI,CAAC,OAAO,CAChB,CAAC;IACJ,CAAC;IA0FD,mBAAmB,CAAC,IAAsB,EAAE,KAAa,EAAE,WAA6B;QACtF,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAC/C,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAC3F,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;IACjC,CAAC;IAED,WAAW,CAAC,KAAa,EAAE,KAAY;;QAErC,IAAI,MAAA,IAAI,CAAC,SAAS,0CAAG,KAAK,CAAC,EAAE;YAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;SACnD;aAAM;YACL,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;SACrB;IACH,CAAC;IAED,aAAa,CAAC,OAAe,EAAE,KAAa;QAC1C,OAAO,KAAK,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,gBAAgB,CAAC,IAAsB,EAAE,QAAgB;QACvD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE;YAClC,OAAO,EAAE,CAAC;SACX;QACD,OAAO;YACL,IAAI,EAAE,SAAS;YACf,OAAO,EAAE;gBACP,SAAS,EAAE,GAAG;gBACd,MAAM,EAAE,UAAU;gBAClB,KAAK,EAAE,CAAC,KAAY,EAAE,OAAiB,EAAE,GAAyB,EAAE,EAAE;oBACpE,MAAM,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;oBACrD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACrE,OAAO,EAAE,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;gBACpD,CAAC;aACF;YACD,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ;YAClE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;SAC9B,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,IAAsB,EAAE,QAAgD,EAAE,aAAqB;QAC/G,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAC3B,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAClD,MAAM,cAAc,GAAG,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;QACpF,MAAM,YAAY,GAAG,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,IAAI,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,MAAM,EAAE;YAC1D,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE;oBACP,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,UAAU;oBAClB,eAAe,EAAE,CAAC,GAAG,CAAC;oBACtB,KAAK,EAAE,CAAC,KAAY,EAAE,OAAiB,EAAE,GAAyB,EAAE,EAAE;wBACpE,MAAM,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;wBACrD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBACrE,OAAO,EAAE,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;oBACpD,CAAC;iBACF;gBACD,QAAQ,EAAE,cAAc;gBACxB,MAAM;aACP,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,aAAa,KAAK,MAAM,IAAI,aAAa,KAAK,MAAM,CAAC,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC3G,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE;oBACP,CAAC,EAAE;wBACD,IAAI,EAAE,CAAC;wBACP,EAAE,EAAE,CAAC,KAAY,EAAE,OAAiB,EAAE,EAAE;4BACtC,OAAO,OAAO,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;wBAC9C,CAAC;qBACF;iBACF;gBACD,QAAQ,EAAE,YAAY;gBACtB,KAAK,EAAE,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBACpD,MAAM;aACP,CAAC,CAAC;SACJ;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF","file":"ranking-list-transformer.js","sourcesContent":["import { Datum } from '@visactor/vchart/src/typings';\nimport type { IRankingListSpec } from './interface';\nimport { CommonChartSpecTransformer } from '@visactor/vchart';\nimport { TextMeasure } from '@visactor/vutils';\nimport { defaultSpec } from './constant';\nimport { applyVisible, computeDataRange, mergeObjects } from './utils';\nimport { IAnimationParameters, IElement } from '@visactor/vgammar-core';\n\nconst DATA_KEY = 'dataKey';\nconst ORDER_KEY = 'VCHART_ORDER';\nconst SUPPLY_DATA_KEY = 'SUPPLY_DATA_KEY';\nconst NAME_LABEL_PADDING_RIGHT = 10;\nconst NAME_ORDER_PADDING_RIGHT = 5;\nconst NAME_SYMBOL_PADDING_RIGHT = 8;\nconst CHART_PADDING_LEFT = 5;\nconst CHART_PADDING_RIGHT = 5;\nconst VALUE_LABEL_PADDING_LEFT = 5;\n\nconst LABEL_PADDING_BOTTOM = 5;\n\nexport class RankingListChartSpecTransformer extends CommonChartSpecTransformer {\n protected nameLabelTextMeasure: TextMeasure<any>;\n protected valueLabelTextMeasure: TextMeasure<any>;\n protected orderLabelTextMeasure: TextMeasure<any>;\n protected originalData: Datum[];\n protected dataSpecs: any[];\n protected formatMap: { [key: string]: (text: string, ctx: any) => string } = {};\n\n transformSpec(spec: any): void {\n super.transformSpec(spec);\n this.normalizeSpec(spec);\n this.upgradeTextMeasure(spec);\n this.upgradeFormatMap(spec);\n this.processData(spec);\n\n // rankingList spec -> vchart spec\n this.transformBaseSpec(spec);\n this.transformAnimationSpec(spec);\n this.transformAxesSpec(spec);\n\n spec.extensionMark = [\n // 柱图背景\n this.generateBarBackground(spec),\n // 辅助图标\n ...this.generateDecorateHaloIcons(spec),\n // 左侧图标\n this.generateRankingIcon(spec),\n // 左侧label\n this.generateNameLabel(spec),\n // 左侧序号label\n this.generateOrderLabel(spec),\n // 右侧label\n this.generateValueLabel(spec)\n ];\n\n this.transformPaddingSpec(spec);\n\n super.transformSpec(spec);\n }\n\n normalizeSpec(spec: any) {\n // 处理配置\n mergeObjects(spec, defaultSpec);\n applyVisible(spec, [\n 'barBackground',\n 'rankingIcon',\n 'decorateHaloIcon',\n 'orderLabel',\n 'nameLabel',\n 'valueLabel'\n // 'bar'\n ]);\n }\n\n upgradeTextMeasure(spec: any) {\n // 初始化文字测量\n this.nameLabelTextMeasure?.release();\n this.valueLabelTextMeasure?.release();\n this.orderLabelTextMeasure?.release();\n this.nameLabelTextMeasure = new TextMeasure({\n defaultFontParams: spec.nameLabel?.style ?? {}\n });\n this.valueLabelTextMeasure = new TextMeasure({\n defaultFontParams: spec.valueLabel?.style ?? {}\n });\n this.orderLabelTextMeasure = new TextMeasure({\n defaultFontParams: spec.orderLabel?.style ?? {}\n });\n }\n\n upgradeFormatMap(spec: any) {\n this.formatMap[spec.yField] = spec.nameLabel.formatMethod;\n this.formatMap[spec.xField] = spec.valueLabel.formatMethod;\n this.formatMap[ORDER_KEY] = spec.orderLabel.formatMethod;\n }\n\n processData(spec: any) {\n // ps: 如果updateSpec后, 同时执行2次processData会有问题, 在这里用比较hack的方式绕过第2次\n if (!spec.data[0]?.values) {\n this.dataSpecs = this.processRankingData(spec as unknown as IRankingListSpec);\n this.originalData = spec.data;\n spec.data = this.dataSpecs[0].data;\n // console.log('processdata');\n }\n }\n\n transformBaseSpec(spec: any) {\n spec.type = 'common';\n spec.dataKey = DATA_KEY;\n spec.series = [\n {\n type: 'bar',\n direction: 'horizontal',\n xField: spec.xField,\n yField: spec.yField,\n barWidth: spec.bar?.height ?? 10,\n bar: {\n ...spec.bar,\n style: {\n ...spec.bar?.style,\n x1: 0,\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.bar?.style ?? true;\n }\n }\n }\n }\n ];\n }\n\n transformAnimationSpec(spec: any) {\n const totalDuration = spec.animation.duration;\n\n if (spec.animation) {\n spec.player = {\n ...spec.player,\n specs: this.dataSpecs,\n auto: true,\n visible: false,\n interval: spec.animation.interval + spec.animation.duration / 2,\n loop: true\n };\n\n spec.animationExit = this.getAnimationExit(spec, totalDuration);\n spec.animationAppear = this.getAnimationEnter(spec, 'rect', totalDuration);\n spec.animationEnter = this.getAnimationEnter(spec, 'rect', totalDuration);\n }\n }\n\n transformAxesSpec(spec: any) {\n const { min, max } = computeDataRange(this.originalData, spec.xField);\n spec.axes = [\n {\n orient: 'left',\n type: 'band',\n visible: false,\n inverse: true\n },\n {\n orient: 'bottom',\n label: { visible: true },\n type: 'linear',\n visible: false,\n min,\n max\n }\n ];\n }\n\n generateBarBackground(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: spec.barBackground.type,\n dataId: 'data',\n visible: true,\n dataKey: DATA_KEY,\n zIndex: -99,\n state: spec.barBackground?.state,\n style: {\n x: (datum: Datum, ctx: any) =>\n spec.barBackground.type === 'symbol' ? ctx.getRegion().getLayoutRect().width / 2 : 0,\n y: (datum: Datum, ctx: any) => {\n return (\n ctx.valueToY([datum[spec.yField]]) +\n ctx.yBandwidth() / 2 -\n (spec.barBackground.type === 'symbol' ? 0 : spec.bar.height / 2)\n );\n },\n size: (datum: Datum, ctx: any) => [ctx.getRegion().getLayoutRect().width, spec.bar.height],\n width: (datum: Datum, ctx: any) => ctx.getRegion().getLayoutRect().width,\n height: spec.bar.height,\n ...spec.barBackground.style,\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.barBackground.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'barBack', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'barBack', totalDuration)\n };\n }\n\n generateDecorateHaloIcons(spec: any) {\n const totalDuration = spec.animation.duration;\n return spec.decorateHaloIcons.map((decorateHaloIcon: any) => {\n return {\n type: 'symbol',\n dataId: 'data',\n visible: true,\n dataKey: DATA_KEY,\n state: decorateHaloIcon?.state,\n style: {\n x: (datum: Datum, ctx: any) => {\n if (datum[spec.xField] === undefined || datum[spec.xField] === null) {\n return undefined;\n }\n return ctx.valueToX([datum[spec.xField]]);\n },\n y: (datum: Datum, ctx: any) => {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n },\n ...decorateHaloIcon.style,\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return decorateHaloIcon.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'symbol', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'symbol', totalDuration)\n };\n });\n }\n\n generateRankingIcon(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: 'symbol',\n dataId: 'data',\n visible: true,\n dataKey: DATA_KEY,\n state: spec.rankingIcon.state,\n style: {\n x: (datum: Datum) => {\n if (spec.labelLayout === 'bothEnd') {\n return -(\n NAME_LABEL_PADDING_RIGHT +\n this.nameLabelTextMeasure.fullMeasure(this.formatDatum(spec.yField, datum)).width +\n (spec.orderLabel.style.visible\n ? NAME_ORDER_PADDING_RIGHT +\n this.orderLabelTextMeasure.fullMeasure(this.formatDatum(ORDER_KEY, datum)).width\n : 0) +\n NAME_SYMBOL_PADDING_RIGHT\n );\n }\n return CHART_PADDING_LEFT;\n },\n y: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n }\n return (\n ctx.valueToY([datum[spec.yField]]) +\n ctx.yBandwidth() / 2 -\n spec.bar.height / 2 -\n LABEL_PADDING_BOTTOM -\n Math.max(\n this.nameLabelTextMeasure.fullMeasure(this.formatDatum(spec.yField, datum)).height,\n this.orderLabelTextMeasure.fullMeasure(this.formatDatum(ORDER_KEY, datum)).height\n ) /\n 2\n );\n },\n ...spec.rankingIcon.style,\n lineWidth: 0,\n stroke: null,\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.rankingIcon.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'text', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'text', totalDuration)\n };\n }\n\n generateNameLabel(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: 'text',\n dataId: 'data',\n dataKey: DATA_KEY,\n state: spec.nameLabel?.state,\n style: {\n text: (datum: Datum) => this.formatDatum(spec.yField, datum),\n x: () => {\n if (spec.labelLayout === 'bothEnd') {\n return -NAME_LABEL_PADDING_RIGHT;\n }\n return (\n (spec.rankingIcon.style.visible ? NAME_SYMBOL_PADDING_RIGHT + (spec.rankingIcon.style.size ?? 10) : 0) +\n (spec.orderLabel.style.visible\n ? NAME_ORDER_PADDING_RIGHT + this.getMaxDataLabelLens(spec, ORDER_KEY, this.orderLabelTextMeasure)\n : 0)\n );\n },\n y: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n }\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2 - spec.bar.height / 2 - LABEL_PADDING_BOTTOM;\n },\n ...spec.nameLabel.style,\n textAlign: spec.labelLayout === 'bothEnd' ? 'right' : 'left',\n textBaseline: spec.labelLayout === 'bothEnd' ? 'middle' : 'bottom',\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.nameLabel.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'text', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'text', totalDuration)\n };\n }\n\n generateOrderLabel(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: 'text',\n dataId: 'data',\n dataKey: DATA_KEY,\n state: spec.orderLabel?.state,\n style: {\n text: (datum: Datum) => this.formatDatum(ORDER_KEY, datum),\n x: (datum: Datum) => {\n if (spec.labelLayout === 'bothEnd') {\n return -(\n NAME_LABEL_PADDING_RIGHT +\n this.nameLabelTextMeasure.fullMeasure(this.formatDatum(spec.yField, datum)).width +\n NAME_ORDER_PADDING_RIGHT\n );\n } else {\n return spec.rankingIcon.style.visible ? NAME_SYMBOL_PADDING_RIGHT + (spec.rankingIcon.style.size ?? 10) : 0;\n }\n },\n y: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n }\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2 - spec.bar.height / 2 - LABEL_PADDING_BOTTOM;\n },\n ...spec.orderLabel.style,\n textAlign: spec.labelLayout === 'bothEnd' ? 'right' : 'left',\n textBaseline: spec.labelLayout === 'bothEnd' ? 'middle' : 'bottom',\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.orderLabel.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'text', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'text', totalDuration)\n };\n }\n\n generateValueLabel(spec: any) {\n const totalDuration = spec.animation.duration;\n return {\n type: 'text',\n dataId: 'data',\n visible: true,\n dataKey: DATA_KEY,\n state: {\n blur: {\n opacity: 0.2\n }\n },\n style: {\n text: (datum: Datum) => this.formatDatum(spec.xField, datum),\n x: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return (\n ctx.getRegion().getLayoutRect().width +\n this.getMaxDataLabelLens(spec, spec.xField, this.nameLabelTextMeasure) +\n VALUE_LABEL_PADDING_LEFT\n );\n } else {\n return ctx.getRegion().getLayoutRect().width;\n }\n },\n y: (datum: Datum, ctx: any) => {\n if (spec.labelLayout === 'bothEnd') {\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2;\n }\n return ctx.valueToY([datum[spec.yField]]) + ctx.yBandwidth() / 2 - spec.bar.height / 2 - LABEL_PADDING_BOTTOM;\n },\n ...spec.valueLabel.style,\n textAlign: 'right',\n textBaseline: spec.labelLayout === 'bothEnd' ? 'middle' : 'bottom',\n visible: (datum: Datum) => {\n if (datum[SUPPLY_DATA_KEY]) {\n return false;\n }\n return spec.valueLabel.style.visible;\n }\n },\n animation: Boolean(spec.animation),\n animationEnter: this.getAnimationEnter(spec, 'text', totalDuration),\n animationExit: this.getAnimationExit(spec, totalDuration),\n animationAppear: this.getAnimationEnter(spec, 'text', totalDuration)\n };\n }\n\n transformPaddingSpec(spec: any) {\n const maxHaloIconSize = Math.max(...spec.decorateHaloIcons.map((icon: any) => icon.style.size ?? 18));\n spec.padding = {\n left:\n spec.labelLayout === 'bothEnd'\n ? NAME_LABEL_PADDING_RIGHT +\n this.getMaxDataLabelLens(spec, spec.yField, this.nameLabelTextMeasure) +\n (spec.orderLabel.style.visible\n ? NAME_ORDER_PADDING_RIGHT + this.getMaxDataLabelLens(spec, ORDER_KEY, this.orderLabelTextMeasure)\n : 0) +\n (spec.rankingIcon.style.visible ? NAME_SYMBOL_PADDING_RIGHT + (spec.rankingIcon.style.size ?? 10) : 0) +\n CHART_PADDING_LEFT\n : CHART_PADDING_LEFT + maxHaloIconSize / 2,\n right:\n spec.labelLayout === 'bothEnd'\n ? VALUE_LABEL_PADDING_LEFT +\n this.getMaxDataLabelLens(spec, spec.yField, this.valueLabelTextMeasure) +\n CHART_PADDING_RIGHT\n : CHART_PADDING_RIGHT + 10,\n top: 0,\n bottom: 0,\n ...spec.padding\n };\n }\n\n paginateDataArr = (spec: IRankingListSpec) => {\n const { data: arr, scrollSize = 1, pageSize = 5 } = spec;\n const result: { [key: string]: Datum[] } = {};\n let pageOrder = 0;\n for (let i = 0; i < arr.length; i += scrollSize) {\n pageOrder++;\n result[`page${pageOrder}`] = arr.slice(i, i + pageSize);\n if (i + pageSize - 1 >= arr.length - 1) {\n arr.push(\n ...Array.from({ length: i + pageSize - arr.length }, _ => {\n return {\n [spec.yField]: Math.random() * 100,\n [spec.xField]: null,\n [SUPPLY_DATA_KEY]: true\n };\n })\n );\n break;\n }\n }\n return {\n orderCount: pageOrder,\n result: result\n };\n };\n\n processRankingData = (spec: IRankingListSpec) => {\n const result: any[] = [];\n spec.data.forEach((datum, index) => (datum[ORDER_KEY] = index + 1 < 10 ? `0${index + 1}` : index + 1));\n const pagerData = this.paginateDataArr(spec).result;\n const orderCount = this.paginateDataArr(spec).orderCount;\n const supplyCount = spec.pageSize - pagerData[`page${orderCount}`].length;\n pagerData[`page${orderCount}`].push(\n ...Array.from({ length: supplyCount }, _ => {\n return {\n [spec.yField]: Math.random() * 100,\n [spec.xField]: null,\n [SUPPLY_DATA_KEY]: true\n };\n })\n );\n\n Object.keys(pagerData).forEach(order => {\n result.push({\n data: [\n {\n id: 'datas',\n values: pagerData[order].map((d, i) => {\n return { ...d, [DATA_KEY]: order + '_' + i + '_' + new Date().getTime() };\n })\n },\n {\n id: 'order',\n values: [\n {\n order\n }\n ]\n }\n ]\n });\n });\n\n // 只有1页时, player循环播放时, prePage和curPage data一致, 导致没有动画效果\n // 在此手动复制1页, 且prePage和curPage dataKey不一致, 保证动画效果\n if (result.length === 1) {\n result.push({\n data: [\n {\n id: 'datas',\n values: pagerData['page1'].map((d, i) => {\n return { ...d, [DATA_KEY]: 'page2' + '_' + i + '_' + new Date().getTime() };\n })\n },\n {\n id: 'order',\n values: [\n {\n order: 'page2'\n }\n ]\n }\n ]\n });\n }\n return result;\n };\n\n getMaxDataLabelLens(spec: IRankingListSpec, field: string, textMeasure: TextMeasure<any>) {\n const textWidths = this.originalData.map(datum =>\n datum[SUPPLY_DATA_KEY] ? 0 : textMeasure.fullMeasure(this.formatDatum(field, datum)).width\n );\n return Math.max(...textWidths);\n }\n\n formatDatum(field: string, datum: Datum) {\n // console.log('field', field, datum);\n if (this.formatMap?.[field]) {\n return this.formatMap[field](datum[field], datum);\n } else {\n return datum[field];\n }\n }\n\n getLabelWidth(padding: number, width: number) {\n return width + padding;\n }\n\n getAnimationExit(spec: IRankingListSpec, duration: number) {\n if (spec.animation.type === 'grow') {\n return {};\n }\n return {\n type: 'moveOut',\n options: {\n direction: 'y',\n orient: 'negative',\n point: (datum: Datum, element: IElement, opt: IAnimationParameters) => {\n const channelAttr = element.getGraphicAttribute('y');\n const barSpace = (spec.height / spec.pageSize - spec.bar.height) / 2;\n return { y: channelAttr - opt.height + barSpace };\n }\n },\n duration: spec.animation.type === 'both' ? duration / 2 : duration,\n easing: spec.animation.easing\n };\n }\n\n getAnimationEnter(spec: IRankingListSpec, markType: 'rect' | 'text' | 'symbol' | 'barBack', totalDuration: number) {\n const { animation } = spec;\n const { type: animationType, easing } = animation;\n const scrollDuration = animationType === 'both' ? totalDuration / 2 : totalDuration;\n const growDuration = animationType === 'grow' ? totalDuration : totalDuration / 2;\n const result = [];\n if (animationType === 'scroll' || animationType === 'both') {\n result.push({\n type: 'moveIn',\n options: {\n direction: 'y',\n orient: 'negative',\n excludeChannels: ['y'],\n point: (datum: Datum, element: IElement, opt: IAnimationParameters) => {\n const channelAttr = element.getGraphicAttribute('y');\n const barSpace = (spec.height / spec.pageSize - spec.bar.height) / 2;\n return { y: channelAttr + opt.height - barSpace };\n }\n },\n duration: scrollDuration,\n easing\n });\n }\n if ((animationType === 'grow' || animationType === 'both') && markType !== 'text' && markType !== 'barBack') {\n result.push({\n channel: {\n x: {\n from: 0,\n to: (datum: Datum, element: IElement) => {\n return element.getGraphicItem().attribute.x;\n }\n }\n },\n duration: growDuration,\n delay: animationType === 'both' ? scrollDuration : 0,\n easing\n });\n }\n return result;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vchart-extension",
3
- "version": "1.13.3-alpha.6",
3
+ "version": "1.13.3-alpha.7",
4
4
  "description": "vchart extension package, including extension plugins and components",
5
5
  "sideEffects": false,
6
6
  "main": "cjs/index.js",
@@ -18,7 +18,7 @@
18
18
  "@visactor/vgrammar-core": "0.15.2",
19
19
  "@visactor/vutils": "~0.19.2",
20
20
  "@visactor/vdataset": "~0.19.2",
21
- "@visactor/vchart": "1.13.3-alpha.6"
21
+ "@visactor/vchart": "1.13.3-alpha.7"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@rushstack/eslint-patch": "~1.1.4",
@@ -43,9 +43,9 @@
43
43
  "rollup-plugin-sizes": "1.0.5",
44
44
  "rollup": "3.20.5",
45
45
  "lil-gui": "^0.17.0",
46
- "@internal/bundler": "0.0.1",
46
+ "@internal/ts-config": "0.0.1",
47
47
  "@internal/eslint-config": "0.0.1",
48
- "@internal/ts-config": "0.0.1"
48
+ "@internal/bundler": "0.0.1"
49
49
  },
50
50
  "publishConfig": {
51
51
  "access": "public",