{"version":3,"sources":["webpack:///./src/components/dashboards/revenue/top_5_articles.vue","webpack:///src/components/dashboards/revenue/top_5_articles.vue","webpack:///./src/components/dashboards/revenue/top_5_articles.vue?c881","webpack:///./src/components/dashboards/revenue/top_5_articles.vue?4879","webpack:///./node_modules/echarts/lib/chart/helper/createSeriesDataSimply.js","webpack:///./node_modules/echarts/lib/chart/pie/pieLayout.js","webpack:///./node_modules/echarts/lib/processor/dataFilter.js","webpack:///./node_modules/echarts/lib/label/labelGuideHelper.js","webpack:///./node_modules/echarts/lib/chart/pie/labelLayout.js","webpack:///./node_modules/echarts/lib/chart/pie/PieView.js","webpack:///./node_modules/echarts/lib/visual/LegendVisualProvider.js","webpack:///./node_modules/echarts/lib/chart/pie/PieSeries.js","webpack:///./node_modules/echarts/lib/processor/negativeDataFilter.js","webpack:///./node_modules/echarts/lib/chart/pie/install.js","webpack:///../../../src/components/VBtn/index.ts","webpack:///./src/components/dashboards/revenue/top_5_articles.vue?906b"],"names":["attrs","_c","_v","scopedSlots","fn","staticClass","model","value","selected_year","callback","expression","staticStyle","chart_id","_vm","items","key","item","staticRenderFns","render","component","createSeriesDataSimply","seriesModel","opt","nameList","coordDimensions","encodeDefine","getEncode","source","getSource","dimensions","list","initData","PI2","Math","PI","RADIAN","getViewRect","api","getBoxLayoutParams","width","getWidth","height","getHeight","getBasicPieLayout","viewRect","center","get","radius","cx","cy","size","min","r0","r","coordSys","coordinateSystem","point","dataToPoint","x","y","pieLayout","seriesType","ecModel","eachSeriesByType","data","getData","valueDim","mapDimension","_a","startAngle","endAngle","padAngle","minAngle","minAndPadAngle","validDataCount","each","isNaN","sum","getSum","unitRadian","clockwise","roseType","stillShowZeroSum","extent","getDataExtent","dir","angles","halfPadAngle","layoutData","getSeriesLayoutData","angleRange","abs","restAngle","valueSumLargerThanMinAngle","currentAngle","setLayout","idx","angle","setItemLayout","NaN","actualStartAngle","actualEndAngle","angle_1","layout_1","getItemLayout","layout_2","dataFilter","reset","legendModels","findComponents","mainType","length","filterSelf","name","getName","i","isSelected","PathProxy","CMD","projectPointToLine","x1","y1","x2","y2","out","limitToEnds","dx","dy","dx1","dy1","lineLen","sqrt","projectedLen","t","max","ox","oy","pt0","Point","pt1","pt2","dir2","tmpArr","tmpProjPoint","limitTurnAngle","linePoints","minTurnAngle","fromArray","sub","len1","len","len2","scale","angleCos","dot","minTurnAngleCos","cos","d","scaleAndAdd","tan","copy","toArray","limitSurfaceAngle","surfaceNormal","maxSurfaceAngle","maxSurfaceAngleCos","HALF_PI","angle2","acos","newAngle","setLabelLineState","labelLine","ignore","stateName","stateModel","isNormal","stateObj","ensureState","smooth","shape","styleObj","getModel","getLineStyle","useStyle","style","buildLabelLinePath","path","points","moveTo","vector","lineTo","moveLen","midPoint0","midPoint2","midPoint1","bezierCurveTo","setLabelLineStyle","targetEl","statesModels","defaultStyle","getTextGuideLine","label","getTextContent","normalModel","normal","showNormal","labelIgnoreNormal","stateShow","isLabelIgnored","states","Polyline","setTextGuideLine","stateProxy","fill","showAbove","labelLineConfig","textGuideLineConfig","buildPath","removeTextGuideLine","getLabelLineStatesModels","itemModel","labelLineName","adjustSingleSide","viewWidth","viewHeight","viewLeft","viewTop","farthestX","position","labelAlignTo","recalculateX","recalculateXOnSemiToAlignOnEllipseCurve","semi","rB","rB2","rA","rA2","newX","deltaX","newTargetWidth","targetTextWidth","constrainTextWidth","topSemi","maxY","bottomSemi","push","avoidOverlap","labelLayoutList","leftList","rightList","leftmostX","Number","MAX_VALUE","rightmostX","isPositionCenter","layout","labelStyleWidth","labelDistance","edgeDistance","bleedMargin","isAlignToEdge","padding","paddingH","extraPaddingH","backgroundColor","realTextWidth","rect","dist","availableWidth","forceRecalculate","textRect","bgColor","overflow","oldOuterWidth","oldHeight","match","setStyle","innerRect","getBoundingRect","ceil","availableInnerWidth","newWidth","unconstrainedWidth","newRect","margin","sectorShape","pieLabelLayout","hasLabelRotate","minShowLabelRadian","getLayout","setNotShow","el","isLabelShown","sector","getItemGraphicEl","getItemModel","labelModel","labelPosition","labelLineModel","labelLineLen","labelLineLen2","textX","textY","textAlign","midAngle","nx","ny","sin","isLabelInside","x3","y3","labelRotate","rotate","radialAngle","rad","atan2","isDown","rotation","verticalAlign","align","selectState","select","clone","applyTransform","getComputedTransform","setTextConfig","inside","notShowLabel","setShape","__hostTarget","anchor","_super","PiePiece","_this","call","this","z2","text","setTextContent","updateData","prototype","firstCreate","hostModel","emphasisModel","animationType","getShallow","ssr","scaleX","scaleY","dataIndex","isFrom","originX","originY","getItemVisual","offset","cursorStyle","attr","_updateLabel","labelText","visualColor","visualOpacity","opacity","labelFetcher","labelDataIndex","inheritColor","defaultOpacity","defaultText","getFormattedLabel","polyline","stroke","PieView","apply","arguments","ignoreLabelLineUpdate","payload","oldData","_data","group","count","s","_emptyCircleSector","remove","getItemStyle","add","diff","piePiece","setItemGraphicEl","update","newIdx","oldIdx","off","execute","dispose","containPoint","itemLayout","type","Chart","LegendVisualProvider","getDataWithEncodedVisual","getRawData","_getDataWithEncodedVisual","_getRawData","getAllNames","rawData","mapArray","containName","indexOfName","dataWithEncodedVisual","innerData","PieSeriesModel","init","option","legendVisualProvider","_defaultLabelLine","mergeOption","getInitialData","encodeDefaulter","getDataParams","dataInner","seats","valueList_1","params","percent","$vars","labelLineNormalOpt","labelLineEmphasisOpt","emphasis","show","defaultOption","z","legendHoverLink","colorBy","minShowLabelAngle","selectedOffset","percentPrecision","left","top","right","bottom","alignTo","distanceToLabelLine","length2","lineStyle","itemStyle","borderWidth","borderJoin","showEmptyCircle","emptyCircleStyle","color","labelLayout","hideOverlap","scaleSize","avoidLabelOverlap","animationDuration","animationTypeUpdate","animationEasingUpdate","animationDurationUpdate","animationEasing","Series","PieSeries","negativeDataFilter","curValue","install","registers","registerChartView","registerSeriesModel","registerAction","registerLayout","registerProcessor"],"mappings":"0PAAuI,EAAK,W,IAAaA,EAAM,K,EAAC,EAAM,MAAG,G,OAAC,SAAQ,CAAE,aAAIC,gBAAG,QAA6C,MAAMC,CAAmDF,KAAM,K,CAAe,SAAS,C,MAAC,CAAa,QAAsB,WAAgCG,UAAmB,C,YAAM,e,CAAYC,EAAG,uBAAS,oB,MAAI,C,WAAEJ,GAAM,KAAE,G,QAASC,G,kBAAsC,E,0BAAkB,G,YAAY,EAAO,GAAE,E,6BAAmB,G,EAAE,MAAC,I,MAAqD,GAAM,OAAC,WAAO,wBAAG,MAAK,UAAG,QAAO,MAAM,GAACI,KAAY,KAA6B,QAAU,GAAM,wBAAC,MAAQ,CAAQ,KAAc,YAAc,SAA8GA,SAAW,CAAQ,YAAK,gBAAYL,YAAM,CAAC,QAAU,OAAC,cAAe,eAAQ,S,CAA2B,QAAU,C,YAAI,qCAAkB,mDAACM,YAAM,Q,CAACC,SAAWC,C,MAAeC,C,MAA6BD,GAAiB,UAAC,GAACE,eAA0B,cAAI,SAAW,GAAmBL,eAAY,IAAmBM,OAAa,QAAU,cAAO,qBAA0C,gBAAc,GAAYV,WAAY,oBAAsBD,QAAM,a,YAAC,Q,CAAgB,QAASY,C,YAAkBC,CAAU,eAAIZ,wBAAkB,kBAACU,cAAY,YAAuC,aAACX,YAAM,Q,MAAC,CAAW,WAAYc,GAAM,KAAS,SAAa,mBAAmF,UAACX,YAAYU,CAASE,WAAK,0B,MAA2BC,CAAK,MAAE,G,MAAQ,EAAI,MAAyD,kBAAG,sBAAU,GAAI,eAAO,4CAEjsDC,cAAe,GAAK,EAExB,IAASC,c,6MCyET,gBACA,OACA,OACA,OACA,OACA,SAGA,OACA,YACA,cACA,6DAEA,OACA,OACA,cACA,SACA,0CACA,uCACA,QACA,yBACA,2BACA,2BACA,2BACA,2BACA,2BAEA,QACA,yBACA,MACA,SACA,OACA,SAEA,OACA,UACA,cACA,SAEA,OACA,eACA,aAEA,SACA,YACA,aACA,sBACA,IAGA,YACA,gBACA,cACA,MACA,MACA,YACA,YAEA,OACA,YACA,cAIA,WACA,SACA,UACA,oBAEA,QACA,oBACA,QACA,YACA,QACA,UACA,WACA,UACA,WACA,aAEA,WACA,gBAGA,SACA,eACA,6BACA,eACA,WACA,cAGA,WAEA,SACA,CACA,gBACA,cACA,cAEA,CACA,cACA,eACA,cACA,cAKA,OACA,eACA,UACA,iBAEA,cAEA,uBACA,UACA,2DACA,OACA,OACA,4DACA,OACA,OACA,4DACA,OACA,QAEA,eAGA,SACA,WACA,oBACA,CACA,8BACA,WACA,gBACA,qBACA,qBACA,QACA,WACA,SAEA,WACA,mBACA,eAEA,UACA,OACA,QACA,cACA,wBAKA,YACA,cACA,sCACA,MACA,wBACA,kDAEA,SACA,kBACA,mDACA,8CACA,CACA,eACA,gBAGA,kCACA,kCACA,mDAKA,UACA,kBClQqX,I,wBCQjXC,EAAY,eACd,EACA,EACAF,GACA,EACA,KACA,WACA,MAIa,aAAAE,E,uHCqCA,SAASC,EAAuBC,EAAaC,EAAKC,GAC/DD,EAAM,eAAQA,IAAQ,CACpBE,gBAAiBF,IACd,eAAO,CACVG,aAAcJ,EAAYK,aACzBJ,GACH,IAAIK,EAASN,EAAYO,YACrBC,EAAa,eAAwBF,EAAQL,GAAKO,WAClDC,EAAO,IAAI,OAAWD,EAAYR,GAEtC,OADAS,EAAKC,SAASJ,EAAQJ,GACfO,I,mJClBLE,EAAgB,EAAVC,KAAKC,GACXC,EAASF,KAAKC,GAAK,IACvB,SAASE,EAAYf,EAAagB,GAChC,OAAO,OAAqBhB,EAAYiB,qBAAsB,CAC5DC,MAAOF,EAAIG,WACXC,OAAQJ,EAAIK,cAGT,SAASC,EAAkBtB,EAAagB,GAC7C,IAAIO,EAAWR,EAAYf,EAAagB,GAEpCQ,EAASxB,EAAYyB,IAAI,UACzBC,EAAS1B,EAAYyB,IAAI,UACxB,OAAeC,KAClBA,EAAS,CAAC,EAAGA,IAEf,IAKIC,EACAC,EANAV,EAAQ,eAAaK,EAASL,MAAOF,EAAIG,YACzCC,EAAS,eAAaG,EAASH,OAAQJ,EAAIK,aAC3CQ,EAAOjB,KAAKkB,IAAIZ,EAAOE,GACvBW,EAAK,eAAaL,EAAO,GAAIG,EAAO,GACpCG,EAAI,eAAaN,EAAO,GAAIG,EAAO,GAGnCI,EAAWjC,EAAYkC,iBAC3B,GAAID,EAAU,CAEZ,IAAIE,EAAQF,EAASG,YAAYZ,GACjCG,EAAKQ,EAAM,IAAM,EACjBP,EAAKO,EAAM,IAAM,OAEZ,OAAeX,KAClBA,EAAS,CAACA,EAAQA,IAEpBG,EAAK,eAAaH,EAAO,GAAIN,GAASK,EAASc,EAC/CT,EAAK,eAAaJ,EAAO,GAAIJ,GAAUG,EAASe,EAElD,MAAO,CACLX,GAAIA,EACJC,GAAIA,EACJG,GAAIA,EACJC,EAAGA,GAGQ,SAASO,EAAUC,EAAYC,EAASzB,GACrDyB,EAAQC,iBAAiBF,GAAY,SAAUxC,GAC7C,IAAI2C,EAAO3C,EAAY4C,UACnBC,EAAWF,EAAKG,aAAa,SAC7BvB,EAAWR,EAAYf,EAAagB,GACpC+B,EAAKzB,EAAkBtB,EAAagB,GACtCW,EAAKoB,EAAGpB,GACRC,EAAKmB,EAAGnB,GACRI,EAAIe,EAAGf,EACPD,EAAKgB,EAAGhB,GACNiB,GAAchD,EAAYyB,IAAI,cAAgBX,EAC9CmC,EAAWjD,EAAYyB,IAAI,YAC3ByB,EAAWlD,EAAYyB,IAAI,YAAcX,EAC7CmC,EAAwB,SAAbA,EAAsBD,EAAarC,GAAOsC,EAAWnC,EAChE,IAAIqC,EAAWnD,EAAYyB,IAAI,YAAcX,EACzCsC,EAAiBD,EAAWD,EAC5BG,EAAiB,EACrBV,EAAKW,KAAKT,GAAU,SAAU3D,IAC3BqE,MAAMrE,IAAUmE,OAEnB,IAAIG,EAAMb,EAAKc,OAAOZ,GAElBa,EAAa9C,KAAKC,IAAM2C,GAAOH,GAAkB,EACjDM,EAAY3D,EAAYyB,IAAI,aAC5BmC,EAAW5D,EAAYyB,IAAI,YAC3BoC,EAAmB7D,EAAYyB,IAAI,oBAEnCqC,EAASnB,EAAKoB,cAAclB,GAChCiB,EAAO,GAAK,EACZ,IAAIE,EAAML,EAAY,GAAK,EACvBM,EAAS,CAACjB,EAAYC,GACtBiB,EAAeF,EAAMd,EAAW,EACpC,eAAmBe,GAASN,GAC5BX,EAAaiB,EAAO,GAAIhB,EAAWgB,EAAO,GAC1C,IAAIE,EAAaC,EAAoBpE,GACrCmE,EAAWnB,WAAaA,EACxBmB,EAAWlB,SAAWA,EACtBkB,EAAWR,UAAYA,EACvB,IAAIU,EAAazD,KAAK0D,IAAIrB,EAAWD,GAEjCuB,EAAYF,EACZG,EAA6B,EAC7BC,EAAezB,EAyDnB,GAxDAL,EAAK+B,UAAU,CACbnD,SAAUA,EACVS,EAAGA,IAELW,EAAKW,KAAKT,GAAU,SAAU3D,EAAOyF,GACnC,IAAIC,EACJ,GAAIrB,MAAMrE,GACRyD,EAAKkC,cAAcF,EAAK,CACtBC,MAAOE,IACP9B,WAAY8B,IACZ7B,SAAU6B,IACVnB,UAAWA,EACXhC,GAAIA,EACJC,GAAIA,EACJG,GAAIA,EACJC,EAAG4B,EAAWkB,IAAM9C,QATxB,CAeE4C,EADe,SAAbhB,EACc,IAARJ,GAAaK,EAAmBH,EAAaxE,EAAQwE,EAErDW,EAAahB,EAEnBuB,EAAQxB,GACVwB,EAAQxB,EACRmB,GAAanB,GAEboB,GAA8BtF,EAEhC,IAAI+D,EAAWwB,EAAeT,EAAMY,EAEhCG,EAAmB,EACnBC,EAAiB,EACjB9B,EAAW0B,GACbG,EAAmBN,EAAeT,EAAMY,EAAQ,EAChDI,EAAiBD,IAEjBA,EAAmBN,EAAeP,EAClCc,EAAiB/B,EAAWiB,GAE9BvB,EAAKkC,cAAcF,EAAK,CACtBC,MAAOA,EACP5B,WAAY+B,EACZ9B,SAAU+B,EACVrB,UAAWA,EACXhC,GAAIA,EACJC,GAAIA,EACJG,GAAIA,EACJC,EAAG4B,EAAW,eAAU1E,EAAO4E,EAAQ,CAAC/B,EAAIC,IAAMA,IAEpDyC,EAAexB,MAIbsB,EAAY5D,GAAO0C,EAGrB,GAAIkB,GAAa,KAAM,CACrB,IAAIU,EAAUZ,EAAahB,EAC3BV,EAAKW,KAAKT,GAAU,SAAU3D,EAAOyF,GACnC,IAAKpB,MAAMrE,GAAQ,CACjB,IAAIgG,EAAWvC,EAAKwC,cAAcR,GAClCO,EAASN,MAAQK,EACjB,IAAIF,EAAmB,EACnBC,EAAiB,EACjBC,EAAU/B,GACZ6B,EAAmB/B,EAAagB,GAAOW,EAAM,IAASM,EACtDD,EAAiBD,IAEjBA,EAAmB/B,EAAagB,EAAMW,EAAMM,EAAUf,EACtDc,EAAiBhC,EAAagB,GAAOW,EAAM,GAAKM,EAAUf,GAE5DgB,EAASlC,WAAa+B,EACtBG,EAASjC,SAAW+B,WAIxBtB,EAAaa,EAAYC,EACzBC,EAAezB,EACfL,EAAKW,KAAKT,GAAU,SAAU3D,EAAOyF,GACnC,IAAKpB,MAAMrE,GAAQ,CACjB,IAAIkG,EAAWzC,EAAKwC,cAAcR,GAC9BC,EAAQQ,EAASR,QAAUxB,EAAiBA,EAAiBlE,EAAQwE,EACrEqB,EAAmB,EACnBC,EAAiB,EACjBJ,EAAQ1B,GACV6B,EAAmBN,EAAeT,EAAMY,EAAQ,EAChDI,EAAiBD,IAEjBA,EAAmBN,EAAeP,EAClCc,EAAiBP,EAAeT,EAAMY,EAAQV,GAEhDkB,EAASpC,WAAa+B,EACtBK,EAASnC,SAAW+B,EACpBP,GAAgBT,EAAMY,SAO3B,IAAIR,EAAsB,iBClMlB,SAASiB,EAAW7C,GACjC,MAAO,CACLA,WAAYA,EACZ8C,MAAO,SAAUtF,EAAayC,GAC5B,IAAI8C,EAAe9C,EAAQ+C,eAAe,CACxCC,SAAU,WAEZ,GAAKF,GAAiBA,EAAaG,OAAnC,CAGA,IAAI/C,EAAO3C,EAAY4C,UACvBD,EAAKgD,YAAW,SAAUhB,GAGxB,IAFA,IAAIiB,EAAOjD,EAAKkD,QAAQlB,GAEfmB,EAAI,EAAGA,EAAIP,EAAaG,OAAQI,IAEvC,IAAKP,EAAaO,GAAGC,WAAWH,GAC9B,OAAO,EAGX,OAAO,Q,0JCZLhF,KAAKC,GACLmF,EAAA,KAAUC,IA4EpB,SAASC,EAAmBC,EAAIC,EAAIC,EAAIC,EAAIjE,EAAGC,EAAGiE,EAAKC,GACrD,IAAIC,EAAKpE,EAAI8D,EACTO,EAAKpE,EAAI8D,EACTO,EAAMN,EAAKF,EACXS,EAAMN,EAAKF,EACXS,EAAUjG,KAAKkG,KAAKH,EAAMA,EAAMC,EAAMA,GAC1CD,GAAOE,EACPD,GAAOC,EAEP,IAAIE,EAAeN,EAAKE,EAAMD,EAAKE,EAC/BI,EAAID,EAAeF,EACnBL,IACFQ,EAAIpG,KAAKkB,IAAIlB,KAAKqG,IAAID,EAAG,GAAI,IAE/BA,GAAKH,EACL,IAAIK,EAAKX,EAAI,GAAKJ,EAAKa,EAAIL,EACvBQ,EAAKZ,EAAI,GAAKH,EAAKY,EAAIJ,EAC3B,OAAOhG,KAAKkG,MAAMI,EAAK7E,IAAM6E,EAAK7E,IAAM8E,EAAK7E,IAAM6E,EAAK7E,IAqH1D,IAAI8E,EAAM,IAAIC,EAAA,KACVC,EAAM,IAAID,EAAA,KACVE,EAAM,IAAIF,EAAA,KACV,EAAM,IAAIA,EAAA,KACVG,EAAO,IAAIH,EAAA,KAyDf,IAAII,EAAS,GACTC,EAAe,IAAIL,EAAA,KAMhB,SAASM,EAAeC,EAAYC,GACzC,GAAMA,GAAgB,KAAOA,EAAe,EAA5C,CAGAA,EAAeA,EAAe,IAAMjH,KAAKC,GAKzCuG,EAAIU,UAAUF,EAAW,IACzBN,EAAIQ,UAAUF,EAAW,IACzBL,EAAIO,UAAUF,EAAW,IACzBP,EAAA,KAAMU,IAAI,EAAKX,EAAKE,GACpBD,EAAA,KAAMU,IAAIP,EAAMD,EAAKD,GACrB,IAAIU,EAAO,EAAIC,MACXC,EAAOV,EAAKS,MAChB,KAAID,EAAO,MAAQE,EAAO,MAA1B,CAGA,EAAIC,MAAM,EAAIH,GACdR,EAAKW,MAAM,EAAID,GACf,IAAIE,EAAW,EAAIC,IAAIb,GACnBc,EAAkB1H,KAAK2H,IAAIV,GAC/B,GAAIS,EAAkBF,EAAU,CAG9B,IAAII,EAAItC,EAAmBoB,EAAIjF,EAAGiF,EAAIhF,EAAGiF,EAAIlF,EAAGkF,EAAIjF,EAAG8E,EAAI/E,EAAG+E,EAAI9E,EAAGmF,GAAQ,GAC7EC,EAAaI,UAAUL,GAEvBC,EAAae,YAAYjB,EAAMgB,EAAI5H,KAAK8H,IAAI9H,KAAKC,GAAKgH,IAEtD,IAAIb,EAAIO,EAAIlF,IAAMiF,EAAIjF,GAAKqF,EAAarF,EAAIiF,EAAIjF,IAAMkF,EAAIlF,EAAIiF,EAAIjF,IAAMqF,EAAapF,EAAIgF,EAAIhF,IAAMiF,EAAIjF,EAAIgF,EAAIhF,GAC/G,GAAIiB,MAAMyD,GACR,OAEEA,EAAI,EACNK,EAAA,KAAMsB,KAAKjB,EAAcJ,GAChBN,EAAI,GACbK,EAAA,KAAMsB,KAAKjB,EAAcH,GAE3BG,EAAakB,QAAQhB,EAAW,OAO7B,SAASiB,EAAkBjB,EAAYkB,EAAeC,GAC3D,GAAMA,GAAmB,KAAOA,EAAkB,EAAlD,CAGAA,EAAkBA,EAAkB,IAAMnI,KAAKC,GAC/CuG,EAAIU,UAAUF,EAAW,IACzBN,EAAIQ,UAAUF,EAAW,IACzBL,EAAIO,UAAUF,EAAW,IACzBP,EAAA,KAAMU,IAAI,EAAKT,EAAKF,GACpBC,EAAA,KAAMU,IAAIP,EAAMD,EAAKD,GACrB,IAAIU,EAAO,EAAIC,MACXC,EAAOV,EAAKS,MAChB,KAAID,EAAO,MAAQE,EAAO,MAA1B,CAGA,EAAIC,MAAM,EAAIH,GACdR,EAAKW,MAAM,EAAID,GACf,IAAIE,EAAW,EAAIC,IAAIS,GACnBE,EAAqBpI,KAAK2H,IAAIQ,GAClC,GAAIX,EAAWY,EAAoB,CAEjC,IAAIR,EAAItC,EAAmBoB,EAAIjF,EAAGiF,EAAIhF,EAAGiF,EAAIlF,EAAGkF,EAAIjF,EAAG8E,EAAI/E,EAAG+E,EAAI9E,EAAGmF,GAAQ,GAC7EC,EAAaI,UAAUL,GACvB,IAAIwB,EAAUrI,KAAKC,GAAK,EACpBqI,EAAStI,KAAKuI,KAAK3B,EAAKa,IAAIS,IAC5BM,EAAWH,EAAUC,EAASH,EAClC,GAAIK,GAAYH,EAEd5B,EAAA,KAAMsB,KAAKjB,EAAcH,OACpB,CAELG,EAAae,YAAYjB,EAAMgB,EAAI5H,KAAK8H,IAAI9H,KAAKC,GAAK,EAAIuI,IAE1D,IAAIpC,EAAIO,EAAIlF,IAAMiF,EAAIjF,GAAKqF,EAAarF,EAAIiF,EAAIjF,IAAMkF,EAAIlF,EAAIiF,EAAIjF,IAAMqF,EAAapF,EAAIgF,EAAIhF,IAAMiF,EAAIjF,EAAIgF,EAAIhF,GAC/G,GAAIiB,MAAMyD,GACR,OAEEA,EAAI,EACNK,EAAA,KAAMsB,KAAKjB,EAAcJ,GAChBN,EAAI,GACbK,EAAA,KAAMsB,KAAKjB,EAAcH,GAG7BG,EAAakB,QAAQhB,EAAW,OAGpC,SAASyB,EAAkBC,EAAWC,EAAQC,EAAWC,GACvD,IAAIC,EAAyB,WAAdF,EACXG,EAAWD,EAAWJ,EAAYA,EAAUM,YAAYJ,GAE5DG,EAASJ,OAASA,EAElB,IAAIM,EAASJ,EAAWhI,IAAI,UACxBoI,IAAqB,IAAXA,IACZA,EAAS,IAEXF,EAASG,MAAQH,EAASG,OAAS,GAC/BD,EAAS,IACXF,EAASG,MAAMD,OAASA,GAE1B,IAAIE,EAAWN,EAAWO,SAAS,aAAaC,eAChDP,EAAWJ,EAAUY,SAASH,GAAYJ,EAASQ,MAAQJ,EAE7D,SAASK,EAAmBC,EAAMP,GAChC,IAAID,EAASC,EAAMD,OACfS,EAASR,EAAMQ,OACnB,GAAKA,EAIL,GADAD,EAAKE,OAAOD,EAAO,GAAG,GAAIA,EAAO,GAAG,IAChCT,EAAS,GAAKS,EAAO5E,QAAU,EAAG,CACpC,IAAIsC,EAAOwC,EAAA,KAAYF,EAAO,GAAIA,EAAO,IACrCpC,EAAOsC,EAAA,KAAYF,EAAO,GAAIA,EAAO,IACzC,IAAKtC,IAASE,EAGZ,OAFAmC,EAAKI,OAAOH,EAAO,GAAG,GAAIA,EAAO,GAAG,SACpCD,EAAKI,OAAOH,EAAO,GAAG,GAAIA,EAAO,GAAG,IAGtC,IAAII,EAAU9J,KAAKkB,IAAIkG,EAAME,GAAQ2B,EACjCc,EAAYH,EAAA,KAAY,GAAIF,EAAO,GAAIA,EAAO,GAAII,EAAU1C,GAC5D4C,EAAYJ,EAAA,KAAY,GAAIF,EAAO,GAAIA,EAAO,GAAII,EAAUxC,GAC5D2C,EAAYL,EAAA,KAAY,GAAIG,EAAWC,EAAW,IACtDP,EAAKS,cAAcH,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIE,EAAU,GAAIA,EAAU,IACnGR,EAAKS,cAAcF,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIN,EAAO,GAAG,GAAIA,EAAO,GAAG,SAEnG,IAAK,IAAIxE,EAAI,EAAGA,EAAIwE,EAAO5E,OAAQI,IACjCuE,EAAKI,OAAOH,EAAOxE,GAAG,GAAIwE,EAAOxE,GAAG,IAOnC,SAASiF,EAAkBC,EAAUC,EAAcC,GACxD,IAAI5B,EAAY0B,EAASG,mBACrBC,EAAQJ,EAASK,iBACrB,GAAKD,EAAL,CAUA,IAHA,IAAIE,EAAcL,EAAaM,OAC3BC,EAAaF,EAAY7J,IAAI,QAC7BgK,EAAoBL,EAAM7B,OACrBzD,EAAI,EAAGA,EAAI,OAAeJ,OAAQI,IAAK,CAC9C,IAAI0D,EAAY,OAAe1D,GAC3B2D,EAAawB,EAAazB,GAC1BE,EAAyB,WAAdF,EACf,GAAIC,EAAY,CACd,IAAIiC,EAAYjC,EAAWhI,IAAI,QAC3BkK,EAAiBjC,EAAW+B,EAAoB,eAAUL,EAAMQ,OAAOpC,IAAc4B,EAAMQ,OAAOpC,GAAWD,OAAQkC,GACzH,GAAIE,IACA,eAAUD,EAAWF,GACvB,CACA,IAAI7B,EAAWD,EAAWJ,EAAYA,GAAaA,EAAUsC,OAAOpC,GAChEG,IACFA,EAASJ,QAAS,GAEdD,GACJD,EAAkBC,GAAW,EAAME,EAAWC,GAEhD,SAGGH,IACHA,EAAY,IAAIuC,EAAA,KAChBb,EAASc,iBAAiBxC,GAGrBI,IAAa+B,GAAsBD,GACtCnC,EAAkBC,GAAW,EAAM,SAAU2B,EAAaM,QAGxDP,EAASe,aACXzC,EAAUyC,WAAaf,EAASe,aAGpC1C,EAAkBC,GAAW,EAAOE,EAAWC,IAGnD,GAAIH,EAAW,CACb,eAASA,EAAUa,MAAOe,GAE1B5B,EAAUa,MAAM6B,KAAO,KACvB,IAAIC,EAAYX,EAAY7J,IAAI,aAC5ByK,EAAkBlB,EAASmB,oBAAsBnB,EAASmB,qBAAuB,GACrFD,EAAgBD,UAAYA,IAAa,EAEzC3C,EAAU8C,UAAYhC,QApDlBd,GACF0B,EAASqB,sBAsDR,SAASC,EAAyBC,EAAWC,GAClDA,EAAgBA,GAAiB,YAIjC,IAHA,IAAIvB,EAAe,CACjBM,OAAQgB,EAAUvC,SAASwC,IAEpB1G,EAAI,EAAGA,EAAI,OAAeJ,OAAQI,IAAK,CAC9C,IAAI0D,EAAY,OAAe1D,GAC/BmF,EAAazB,GAAa+C,EAAUvC,SAAS,CAACR,EAAWgD,IAE3D,OAAOvB,E,gBC1eL,EAASrK,KAAKC,GAAK,IACvB,SAAS4L,EAAiBhM,EAAMkB,EAAIC,EAAII,EAAGgC,EAAK0I,EAAWC,EAAYC,EAAUC,EAASC,GACxF,KAAIrM,EAAKiF,OAAS,GAAlB,CAwDA,IADA,IAAIuC,EAAMxH,EAAKiF,OACNI,EAAI,EAAGA,EAAImC,EAAKnC,IACvB,GAAyB,UAArBrF,EAAKqF,GAAGiH,UAAiD,cAAzBtM,EAAKqF,GAAGkH,aAA8B,CACxE,IAAIvG,EAAKhG,EAAKqF,GAAGsF,MAAM/I,EAAIyK,EAC3BrM,EAAKqF,GAAG8B,WAAW,GAAG,IAAMnB,EAC5BhG,EAAKqF,GAAGsF,MAAM/I,EAAIyK,EAGlB,eAAerM,EAAMoM,EAASA,EAAUF,IAC1CM,EAAaxM,GA5Df,SAASyM,EAAwCC,GAG/C,IAFA,IAAIC,EAAKD,EAAKC,GACVC,EAAMD,EAAKA,EACNtH,EAAI,EAAGA,EAAIqH,EAAK1M,KAAKiF,OAAQI,IAAK,CACzC,IAAInG,EAAOwN,EAAK1M,KAAKqF,GACjBY,EAAK9F,KAAK0D,IAAI3E,EAAKyL,MAAM9I,EAAIV,GAE7B0L,EAAKtL,EAAIrC,EAAKsI,IACdsF,EAAMD,EAAKA,EAEX7G,EAAK7F,KAAKkG,MAAM,EAAIlG,KAAK0D,IAAIoC,EAAKA,EAAK2G,IAAQE,GAC/CC,EAAO7L,GAAM8E,EAAK9G,EAAKuI,MAAQlE,EAC/ByJ,EAASD,EAAO7N,EAAKyL,MAAM/I,EAC3BqL,EAAiB/N,EAAKgO,gBAAkBF,EAASzJ,EAErD4J,EAAmBjO,EAAM+N,GAAgB,GACzC/N,EAAKyL,MAAM/I,EAAImL,GAInB,SAASP,EAAaxN,GAUpB,IARA,IAAIoO,EAAU,CACZpN,KAAM,GACNqN,KAAM,GAEJC,EAAa,CACftN,KAAM,GACNqN,KAAM,GAEChI,EAAI,EAAGA,EAAIrG,EAAMiG,OAAQI,IAChC,GAA8B,SAA1BrG,EAAMqG,GAAGkH,aAAb,CAGA,IAAIrN,EAAOF,EAAMqG,GACbqH,EAAOxN,EAAKyL,MAAM9I,EAAIV,EAAKmM,EAAaF,EACxCnH,EAAK9F,KAAK0D,IAAI3E,EAAKyL,MAAM9I,EAAIV,GACjC,GAAI8E,GAAMyG,EAAKW,KAAM,CACnB,IAAIrH,EAAK9G,EAAKyL,MAAM/I,EAAIV,EAAKhC,EAAKuI,KAAOlE,EAErCsJ,EAAKtL,EAAIrC,EAAKsI,IAEdmF,EAAKxM,KAAK0D,IAAImC,GAAM6G,EAAK1M,KAAKkG,KAAKJ,EAAKA,GAAM,EAAID,EAAKA,EAAK6G,EAAKA,IAAOA,EAC5EH,EAAKC,GAAKA,EACVD,EAAKW,KAAOpH,EAEdyG,EAAK1M,KAAKuN,KAAKrO,GAEjBuN,EAAwCW,GACxCX,EAAwCa,IAc5C,SAASE,EAAaC,EAAiBvM,EAAIC,EAAII,EAAG0K,EAAWC,EAAYC,EAAUC,GAKjF,IAJA,IAAIsB,EAAW,GACXC,EAAY,GACZC,EAAYC,OAAOC,UACnBC,GAAcF,OAAOC,UAChBzI,EAAI,EAAGA,EAAIoI,EAAgBxI,OAAQI,IAAK,CAC/C,IAAIsF,EAAQ8C,EAAgBpI,GAAGsF,MAC3BqD,EAAiBP,EAAgBpI,MAGjCsF,EAAM/I,EAAIV,GACZ0M,EAAYzN,KAAKkB,IAAIuM,EAAWjD,EAAM/I,GACtC8L,EAASH,KAAKE,EAAgBpI,MAE9B0I,EAAa5N,KAAKqG,IAAIuH,EAAYpD,EAAM/I,GACxC+L,EAAUJ,KAAKE,EAAgBpI,MAGnC,IAASA,EAAI,EAAGA,EAAIoI,EAAgBxI,OAAQI,IAAK,CAC/C,IAAI4I,EAASR,EAAgBpI,GAC7B,IAAK2I,EAAiBC,IAAWA,EAAO9G,WAAY,CAClD,GAA8B,MAA1B8G,EAAOC,gBACT,SAEEvD,EAAQsD,EAAOtD,MAAnB,IACIxD,EAAa8G,EAAO9G,WACpB+F,OAAkB,EAGlBA,EAFwB,SAAxBe,EAAO1B,aACL5B,EAAM/I,EAAIV,EACMiG,EAAW,GAAG,GAAK8G,EAAOE,cAAgBhC,EAAW8B,EAAOG,aAE5DjC,EAAWF,EAAYgC,EAAOG,aAAejH,EAAW,GAAG,GAAK8G,EAAOE,cAE1D,cAAxBF,EAAO1B,aACZ5B,EAAM/I,EAAIV,EACM0M,EAAYzB,EAAW8B,EAAOI,YAE9BlC,EAAWF,EAAY8B,EAAaE,EAAOI,YAG3D1D,EAAM/I,EAAIV,EACMyJ,EAAM/I,EAAIuK,EAAW8B,EAAOI,YAE5BlC,EAAWF,EAAYtB,EAAM/I,EAAIqM,EAAOI,YAG9DJ,EAAOf,gBAAkBA,EACzBC,EAAmBc,EAAQf,IAG/BlB,EAAiB2B,EAAWzM,EAAIC,EAAII,EAAG,EAAG0K,EAAWC,EAAYC,EAAUC,EAAS2B,GACpF/B,EAAiB0B,EAAUxM,EAAIC,EAAII,GAAI,EAAG0K,EAAWC,EAAYC,EAAUC,EAASwB,GACpF,IAASvI,EAAI,EAAGA,EAAIoI,EAAgBxI,OAAQI,IAAK,CAC3C4I,EAASR,EAAgBpI,GAC7B,IAAK2I,EAAiBC,IAAWA,EAAO9G,WAAY,CAC9CwD,EAAQsD,EAAOtD,MACfxD,EAAa8G,EAAO9G,WADxB,IAEImH,EAAwC,SAAxBL,EAAO1B,aACvBgC,EAAU5D,EAAMjB,MAAM6E,QACtBC,EAAWD,EAAUA,EAAQ,GAAKA,EAAQ,GAAK,EAE/CE,EAAgB9D,EAAMjB,MAAMgF,gBAAkB,EAAIF,EAClDG,EAAgBV,EAAOW,KAAKnO,MAAQgO,EACpCI,EAAO1H,EAAW,GAAG,GAAKA,EAAW,GAAG,GACxCmH,EACE3D,EAAM/I,EAAIV,EACZiG,EAAW,GAAG,GAAKgF,EAAW8B,EAAOG,aAAeO,EAAgBV,EAAOE,cAE3EhH,EAAW,GAAG,GAAKgF,EAAWF,EAAYgC,EAAOG,aAAeO,EAAgBV,EAAOE,eAGrFxD,EAAM/I,EAAIV,EACZiG,EAAW,GAAG,GAAKwD,EAAM/I,EAAIqM,EAAOE,cAEpChH,EAAW,GAAG,GAAKwD,EAAM/I,EAAIqM,EAAOE,cAEtChH,EAAW,GAAG,GAAKA,EAAW,GAAG,GAAK0H,GAExC1H,EAAW,GAAG,GAAKA,EAAW,GAAG,GAAKwD,EAAM9I,IAclD,SAASsL,EAAmBc,EAAQa,EAAgBC,GAIlD,QAHyB,IAArBA,IACFA,GAAmB,GAES,MAA1Bd,EAAOC,gBAAX,CAIA,IAAIvD,EAAQsD,EAAOtD,MACfjB,EAAQiB,EAAMjB,MACdsF,EAAWf,EAAOW,KAClBK,EAAUvF,EAAMgF,gBAChBH,EAAU7E,EAAM6E,QAChBC,EAAWD,EAAUA,EAAQ,GAAKA,EAAQ,GAAK,EAC/CW,EAAWxF,EAAMwF,SAEjBC,EAAgBH,EAASvO,OAASwO,EAAU,EAAIT,GACpD,GAAIM,EAAiBK,GAAiBJ,EAAkB,CACtD,IAAIK,EAAYJ,EAASrO,OACzB,GAAIuO,GAAYA,EAASG,MAAM,SAAU,CAGvC1E,EAAM2E,SAAS,kBAAmB,MAElC3E,EAAM2E,SAAS,QAASR,EAAiBN,GAEzC,IAAIe,EAAY5E,EAAM6E,kBACtB7E,EAAM2E,SAAS,QAASnP,KAAKsP,KAAKF,EAAU9O,QAC5CkK,EAAM2E,SAAS,kBAAmBL,OAC7B,CACL,IAAIS,EAAsBZ,EAAiBN,EACvCmB,EAAWb,EAAiBK,EAE9BO,EAGFX,EAAmBW,EAAsBzB,EAAO2B,mBAI9C,KAIAF,EAGA,KACF/E,EAAM2E,SAAS,QAASK,GAE1B,IAAIE,EAAUlF,EAAM6E,kBACpBR,EAASvO,MAAQoP,EAAQpP,MACzB,IAAIqP,GAAUnF,EAAMjB,MAAMoG,QAAU,GAAK,IACzCd,EAASrO,OAASkP,EAAQlP,OAASmP,EACnCd,EAASnN,IAAMmN,EAASrO,OAASyO,GAAa,IAGlD,SAASpB,EAAiB+B,GAExB,MAAgC,WAAzBA,EAAYzD,SAEN,SAAS0D,EAAezQ,GACrC,IAEI2B,EACAC,EAHAe,EAAO3C,EAAY4C,UACnBsL,EAAkB,GAGlBwC,GAAiB,EACjBC,GAAsB3Q,EAAYyB,IAAI,sBAAwB,GAAK,EACnEF,EAAWoB,EAAKiO,UAAU,YAC1B5O,EAAIW,EAAKiO,UAAU,KACnBlE,EAAYnL,EAASL,MACrB0L,EAAWrL,EAASc,EACpBwK,EAAUtL,EAASe,EACnBqK,EAAapL,EAASH,OAC1B,SAASyP,EAAWC,GAClBA,EAAGvH,QAAS,EAEd,SAASwH,EAAa3F,GACpB,IAAKA,EAAM7B,OACT,OAAO,EAET,IAAK,IAAI7J,KAAO0L,EAAMQ,OACpB,IAAiC,IAA7BR,EAAMQ,OAAOlM,GAAK6J,OACpB,OAAO,EAGX,OAAO,EAET5G,EAAKW,MAAK,SAAUqB,GAClB,IAAIqM,EAASrO,EAAKsO,iBAAiBtM,GAC/B6L,EAAcQ,EAAOlH,MACrBsB,EAAQ4F,EAAO3F,iBACf/B,EAAY0H,EAAO7F,mBACnBoB,EAAY5J,EAAKuO,aAAavM,GAC9BwM,EAAa5E,EAAUvC,SAAS,SAEhCoH,EAAgBD,EAAW1P,IAAI,aAAe8K,EAAU9K,IAAI,CAAC,WAAY,QAAS,aAClFmN,EAAgBuC,EAAW1P,IAAI,uBAC/BuL,EAAemE,EAAW1P,IAAI,WAC9BoN,EAAe,eAAasC,EAAW1P,IAAI,gBAAiBiL,GAC5DoC,EAAcqC,EAAW1P,IAAI,eAC7B4P,EAAiB9E,EAAUvC,SAAS,aACpCsH,EAAeD,EAAe5P,IAAI,UACtC6P,EAAe,eAAaA,EAAc5E,GAC1C,IAAI6E,EAAgBF,EAAe5P,IAAI,WAEvC,GADA8P,EAAgB,eAAaA,EAAe7E,GACxC9L,KAAK0D,IAAIkM,EAAYvN,SAAWuN,EAAYxN,YAAc2N,EAO5D,OANA,eAAKvF,EAAMQ,OAAQiF,GACnBzF,EAAM7B,QAAS,OACXD,IACF,eAAKA,EAAUsC,OAAQiF,GACvBvH,EAAUC,QAAS,IAIvB,GAAKwH,EAAa3F,GAAlB,CAGA,IAGIoG,EACAC,EACA7J,EACA8J,EANAC,GAAYnB,EAAYxN,WAAawN,EAAYvN,UAAY,EAC7D2O,EAAKhR,KAAK2H,IAAIoJ,GACdE,EAAKjR,KAAKkR,IAAIH,GAKlBhQ,EAAK6O,EAAY7O,GACjBC,EAAK4O,EAAY5O,GACjB,IAAImQ,EAAkC,WAAlBX,GAAgD,UAAlBA,EAClD,GAAsB,WAAlBA,EACFI,EAAQhB,EAAY7O,GACpB8P,EAAQjB,EAAY5O,GACpB8P,EAAY,aACP,CACL,IAAIvL,GAAM4L,GAAiBvB,EAAYxO,EAAIwO,EAAYzO,IAAM,EAAI6P,EAAKpB,EAAYxO,EAAI4P,GAAMjQ,EACxFyE,GAAM2L,GAAiBvB,EAAYxO,EAAIwO,EAAYzO,IAAM,EAAI8P,EAAKrB,EAAYxO,EAAI6P,GAAMjQ,EAG5F,GAFA4P,EAAQrL,EAAU,EAALyL,EACbH,EAAQrL,EAAU,EAALyL,GACRE,EAAe,CAElB,IAAI1L,EAAKF,EAAKyL,GAAMN,EAAetP,EAAIwO,EAAYxO,GAC/CsE,EAAKF,EAAKyL,GAAMP,EAAetP,EAAIwO,EAAYxO,GAC/CgQ,EAAK3L,GAAMuL,EAAK,GAAK,EAAI,GAAKL,EAC9BU,EAAK3L,EAGPkL,EAFmB,SAAjBxE,EAEM4E,EAAK,EAAIhF,EAAWiC,EAAejC,EAAWF,EAAYmC,EAE1DmD,GAAMJ,EAAK,GAAKhD,EAAgBA,GAE1C6C,EAAQQ,EACRrK,EAAa,CAAC,CAACzB,EAAIC,GAAK,CAACC,EAAIC,GAAK,CAAC0L,EAAIC,IAEzCP,EAAYK,EAAgB,SAA4B,SAAjB/E,EAA0B4E,EAAK,EAAI,QAAU,OAASA,EAAK,EAAI,OAAS,QAEjH,IAAI/Q,EAAKD,KAAKC,GACVqR,EAAc,EACdC,EAAShB,EAAW1P,IAAI,UAC5B,GAAI,eAAS0Q,GACXD,EAAcC,GAAUtR,EAAK,UACxB,GAAsB,WAAlBuQ,EACTc,EAAc,OACT,GAAe,WAAXC,IAAkC,IAAXA,EAAiB,CACjD,IAAIC,EAAcR,EAAK,GAAKD,EAAW9Q,GAAM8Q,EAC7CO,EAAcE,OACT,GAAe,eAAXD,GAA6C,YAAlBf,GAAiD,UAAlBA,EAA2B,CAC9F,IAAIiB,EAAMzR,KAAK0R,MAAMV,EAAIC,GACrBQ,EAAM,IACRA,EAAW,EAALxR,EAASwR,GAEjB,IAAIE,EAASV,EAAK,EACdU,IACFF,EAAMxR,EAAKwR,GAEbH,EAAcG,EAAMxR,EAUtB,GARA6P,IAAmBwB,EACnB9G,EAAM/I,EAAImP,EACVpG,EAAM9I,EAAImP,EACVrG,EAAMoH,SAAWN,EACjB9G,EAAM2E,SAAS,CACb0C,cAAe,WAGZV,EA0BE,CACL3G,EAAM2E,SAAS,CACb2C,MAAOhB,IAET,IAAIiB,EAAcvH,EAAMQ,OAAOgH,OAC3BD,IACFA,EAAYtQ,GAAK+I,EAAM/I,EACvBsQ,EAAYrQ,GAAK8I,EAAM9I,OAjCP,CAClB,IAAImN,EAAWrE,EAAM6E,kBAAkB4C,QACvCpD,EAASqD,eAAe1H,EAAM2H,wBAE9B,IAAIxC,GAAUnF,EAAMjB,MAAMoG,QAAU,GAAK,IACzCd,EAASnN,GAAKiO,EAAS,EACvBd,EAASrO,QAAUmP,EACnBrC,EAAgBF,KAAK,CACnB5C,MAAOA,EACP9B,UAAWA,EACXyD,SAAUqE,EACVnJ,IAAKqJ,EACLpJ,KAAMqJ,EACN1J,aAAcwJ,EAAe5P,IAAI,gBACjCsH,gBAAiBsI,EAAe5P,IAAI,mBACpCqH,cAAe,IAAIzB,EAAA,KAAMuK,EAAIC,GAC7BjK,WAAYA,EACZ8J,UAAWA,EACX9C,cAAeA,EACf5B,aAAcA,EACd6B,aAAcA,EACdC,YAAaA,EACbO,KAAMI,EACNY,mBAAoBZ,EAASvO,MAC7ByN,gBAAiBvD,EAAMjB,MAAMjJ,QAYjC8P,EAAOgC,cAAc,CACnBC,OAAQlB,SAGPrB,GAAkB1Q,EAAYyB,IAAI,sBACrCwM,EAAaC,EAAiBvM,EAAIC,EAAII,EAAG0K,EAAWC,EAAYC,EAAUC,GAE5E,IAAK,IAAI/G,EAAI,EAAGA,EAAIoI,EAAgBxI,OAAQI,IAAK,CAC/C,IAAI4I,EAASR,EAAgBpI,GACzBsF,EAAQsD,EAAOtD,MACf9B,EAAYoF,EAAOpF,UACnB4J,EAAe3P,MAAM6H,EAAM/I,IAAMkB,MAAM6H,EAAM9I,GACjD,GAAI8I,EAAO,CACTA,EAAM2E,SAAS,CACb2C,MAAOhE,EAAOgD,YAEZwB,IACF,eAAK9H,EAAMQ,OAAQiF,GACnBzF,EAAM7B,QAAS,GAEjB,IAAIoJ,EAAcvH,EAAMQ,OAAOgH,OAC3BD,IACFA,EAAYtQ,GAAK+I,EAAM/I,EACvBsQ,EAAYrQ,GAAK8I,EAAM9I,GAG3B,GAAIgH,EAAW,CACb,IAAI1B,EAAa8G,EAAO9G,WACpBsL,IAAiBtL,GACnB,eAAK0B,EAAUsC,OAAQiF,GACvBvH,EAAUC,QAAS,IAEnB5B,EAAeC,EAAY8G,EAAO7G,cAClCgB,EAAkBjB,EAAY8G,EAAO5F,cAAe4F,EAAO3F,iBAC3DO,EAAU6J,SAAS,CACjB7I,OAAQ1C,IAGVwD,EAAMgI,aAAajH,oBAAsB,CACvCkH,OAAQ,IAAIhM,EAAA,KAAMO,EAAW,GAAG,GAAIA,EAAW,GAAG,Q,4BC3ZxD,EAAwB,SAAU0L,GAEpC,SAASC,EAAS5Q,EAAMgC,EAAK3B,GAC3B,IAAIwQ,EAAQF,EAAOG,KAAKC,OAASA,KACjCF,EAAMG,GAAK,EACX,IAAIC,EAAO,IAAI,OAGf,OAFAJ,EAAMK,eAAeD,GACrBJ,EAAMM,WAAWnR,EAAMgC,EAAK3B,GAAY,GACjCwQ,EAgJT,OAvJA,eAAUD,EAAUD,GASpBC,EAASQ,UAAUD,WAAa,SAAUnR,EAAMgC,EAAK3B,EAAYgR,GAC/D,IAAIhD,EAAS0C,KACT1T,EAAc2C,EAAKsR,UACnB1H,EAAY5J,EAAKuO,aAAavM,GAC9BuP,EAAgB3H,EAAUvC,SAAS,YACnC0E,EAAS/L,EAAKwC,cAAcR,GAG5B6L,EAAc,eAAO,eAAsBjE,EAAUvC,SAAS,aAAc0E,GAAQ,GAAOA,GAE/F,GAAInL,MAAMiN,EAAYxN,YAEpBgO,EAAOmC,SAAS3C,OAFlB,CAKA,GAAIwD,EAAa,CACfhD,EAAOmC,SAAS3C,GAChB,IAAI2D,EAAgBnU,EAAYoU,WAAW,iBACvCpU,EAAYyC,QAAQ4R,KAGtB,OAAkBrD,EAAQ,CACxBsD,OAAQ,EACRC,OAAQ,GACPvU,EAAa,CACdwU,UAAW7P,EACX8P,QAAQ,IAEVzD,EAAO0D,QAAUlE,EAAY7O,GAC7BqP,EAAO2D,QAAUnE,EAAY5O,IACF,UAAlBuS,GACTnD,EAAOlH,MAAM9H,EAAI0M,EAAO3M,GACxB,OAAkBiP,EAAQ,CACxBlH,MAAO,CACL9H,EAAG0M,EAAO1M,IAEXhC,EAAa2E,IAIE,MAAd3B,GACFgO,EAAOmC,SAAS,CACdnQ,WAAYA,EACZC,SAAUD,IAEZ,OAAkBgO,EAAQ,CACxBlH,MAAO,CACL9G,WAAY0L,EAAO1L,WACnBC,SAAUyL,EAAOzL,WAElBjD,EAAa2E,KAEhBqM,EAAOlH,MAAM7G,SAAWyL,EAAO1L,WAC/B,OAAoBgO,EAAQ,CAC1BlH,MAAO,CACL7G,SAAUyL,EAAOzL,WAElBjD,EAAa2E,SAIpB,eAAaqM,GAEb,OAAoBA,EAAQ,CAC1BlH,MAAO0G,GACNxQ,EAAa2E,GAElBqM,EAAO9G,SAASvH,EAAKiS,cAAcjQ,EAAK,UACxC,eAAyBqM,EAAQzE,GACjC,IAAIoF,GAAYjD,EAAO1L,WAAa0L,EAAOzL,UAAY,EACnD4R,EAAS7U,EAAYyB,IAAI,kBACzBgF,EAAK7F,KAAK2H,IAAIoJ,GAAYkD,EAC1BnO,EAAK9F,KAAKkR,IAAIH,GAAYkD,EAC1BC,EAAcvI,EAAU6H,WAAW,UACvCU,GAAe9D,EAAO+D,KAAK,SAAUD,GACrCpB,KAAKsB,aAAahV,EAAa2C,EAAMgC,GACrCqM,EAAOpH,YAAY,YAAYE,MAAQ,eAAO,CAC5C9H,EAAG0M,EAAO1M,GAAKkS,EAAczS,IAAI,UAAWyS,EAAczS,IAAI,cAAoB,IACjF,eAAsByS,EAAclK,SAAS,aAAc0E,IAC9D,eAAOsC,EAAOpH,YAAY,UAAW,CACnCvH,EAAGoE,EACHnE,EAAGoE,EACHoD,MAAO,eAAsByC,EAAUvC,SAAS,CAAC,SAAU,cAAe0E,KAE5E,eAAOsC,EAAOpH,YAAY,QAAS,CACjCE,MAAO,eAAsByC,EAAUvC,SAAS,CAAC,OAAQ,cAAe0E,KAE1E,IAAIpF,EAAY0H,EAAO7F,mBACnB8J,EAAYjE,EAAO3F,iBACvB/B,GAAa,eAAOA,EAAUM,YAAY,UAAW,CACnDvH,EAAGoE,EACHnE,EAAGoE,IAGL,eAAOuO,EAAUrL,YAAY,UAAW,CACtCvH,EAAGoE,EACHnE,EAAGoE,IAEL,eAAoBgN,KAAMQ,EAAczS,IAAI,SAAUyS,EAAczS,IAAI,aAAcyS,EAAczS,IAAI,eAE1G8R,EAASQ,UAAUiB,aAAe,SAAUhV,EAAa2C,EAAMgC,GAC7D,IAAIqM,EAAS0C,KACTnH,EAAY5J,EAAKuO,aAAavM,GAC9B0M,EAAiB9E,EAAUvC,SAAS,aACpCG,EAAQxH,EAAKiS,cAAcjQ,EAAK,SAChCuQ,EAAc/K,GAASA,EAAM6B,KAC7BmJ,EAAgBhL,GAASA,EAAMiL,QACnC,eAAcpE,EAAQ,eAAqBzE,GAAY,CACrD8I,aAAc1S,EAAKsR,UACnBqB,eAAgB3Q,EAChB4Q,aAAcL,EACdM,eAAgBL,EAChBM,YAAazV,EAAY0V,kBAAkB/Q,EAAK,WAAahC,EAAKkD,QAAQlB,KAE5E,IAAIsQ,EAAYjE,EAAO3F,iBAEvB2F,EAAOgC,cAAc,CAEnBjG,SAAU,KACVyF,SAAU,OAIZyC,EAAUF,KAAK,CACbpB,GAAI,KAEN,IAAIvC,EAAgBpR,EAAYyB,IAAI,CAAC,QAAS,aAC9C,GAAsB,YAAlB2P,GAAiD,UAAlBA,EACjCJ,EAAO3E,0BACF,CACL,IAAIsJ,EAAWjC,KAAKvI,mBACfwK,IACHA,EAAW,IAAI,OACfjC,KAAK5H,iBAAiB6J,IAGxB5K,EAAkB2I,KAAMpH,EAAyBC,GAAY,CAC3DqJ,OAAQV,EACRE,QAAS,eAAU/D,EAAe5P,IAAI,CAAC,YAAa,YAAa0T,EAAe,OAI/E5B,EAxJmB,CAyJ1B,QAEE,EAAuB,SAAUD,GAEnC,SAASuC,IACP,IAAIrC,EAAmB,OAAXF,GAAmBA,EAAOwC,MAAMpC,KAAMqC,YAAcrC,KAEhE,OADAF,EAAMwC,uBAAwB,EACvBxC,EA+DT,OAnEA,eAAUqC,EAASvC,GAMnBuC,EAAQ9B,UAAUlU,OAAS,SAAUG,EAAayC,EAASzB,EAAKiV,GAC9D,IAGIjT,EAHAL,EAAO3C,EAAY4C,UACnBsT,EAAUxC,KAAKyC,MACfC,EAAQ1C,KAAK0C,MAGjB,IAAKF,GAAWvT,EAAK0T,QAAU,EAAG,CAEhC,IADA,IAAIvM,EAAQnH,EAAKwC,cAAc,GACtBmR,EAAI,EAAG/S,MAAMuG,GAASA,EAAM9G,aAAesT,EAAI3T,EAAK0T,UAAWC,EACtExM,EAAQnH,EAAKwC,cAAcmR,GAEzBxM,IACF9G,EAAa8G,EAAM9G,YAQvB,GAJI0Q,KAAK6C,oBACPH,EAAMI,OAAO9C,KAAK6C,oBAGC,IAAjB5T,EAAK0T,SAAiBrW,EAAYyB,IAAI,mBAAoB,CAC5D,IAAI0C,EAAaC,EAAoBpE,GACjCgR,EAAS,IAAI,OAAe,CAC9BlH,MAAO,eAAOxI,EAAkBtB,EAAagB,GAAMmD,KAErD6M,EAAO9G,SAASlK,EAAYgK,SAAS,oBAAoByM,gBACzD/C,KAAK6C,mBAAqBvF,EAC1BoF,EAAMM,IAAI1F,GAEZrO,EAAKgU,KAAKT,GAASQ,KAAI,SAAU/R,GAC/B,IAAIiS,EAAW,IAAI,EAASjU,EAAMgC,EAAK3B,GACvCL,EAAKkU,iBAAiBlS,EAAKiS,GAC3BR,EAAMM,IAAIE,MACTE,QAAO,SAAUC,EAAQC,GAC1B,IAAIJ,EAAWV,EAAQjF,iBAAiB+F,GACxCJ,EAAS9C,WAAWnR,EAAMoU,EAAQ/T,GAClC4T,EAASK,IAAI,SACbb,EAAMM,IAAIE,GACVjU,EAAKkU,iBAAiBE,EAAQH,MAC7BJ,QAAO,SAAU7R,GAClB,IAAIiS,EAAWV,EAAQjF,iBAAiBtM,GACxC,OAAiCiS,EAAU5W,EAAa2E,MACvDuS,UACH,EAAYlX,GAEmC,cAA3CA,EAAYyB,IAAI,yBAClBiS,KAAKyC,MAAQxT,IAGjBkT,EAAQ9B,UAAUoD,QAAU,aAC5BtB,EAAQ9B,UAAUqD,aAAe,SAAUjV,EAAOnC,GAChD,IAAI2C,EAAO3C,EAAY4C,UACnByU,EAAa1U,EAAKwC,cAAc,GACpC,GAAIkS,EAAY,CACd,IAAI5Q,EAAKtE,EAAM,GAAKkV,EAAW1V,GAC3B+E,EAAKvE,EAAM,GAAKkV,EAAWzV,GAC3BF,EAASd,KAAKkG,KAAKL,EAAKA,EAAKC,EAAKA,GACtC,OAAOhF,GAAU2V,EAAWrV,GAAKN,GAAU2V,EAAWtV,KAG1D8T,EAAQyB,KAAO,MACRzB,EApEkB,CAqEzB0B,EAAA,MACa,I,wBC3OXC,EAAoC,WACtC,SAASA,EAETC,EAEAC,GACEhE,KAAKiE,0BAA4BF,EACjC/D,KAAKkE,YAAcF,EAwBrB,OAtBAF,EAAqBzD,UAAU8D,YAAc,WAC3C,IAAIC,EAAUpE,KAAKkE,cAGnB,OAAOE,EAAQC,SAASD,EAAQjS,UAElC2R,EAAqBzD,UAAUiE,YAAc,SAAUpS,GACrD,IAAIkS,EAAUpE,KAAKkE,cACnB,OAAOE,EAAQG,YAAYrS,IAAS,GAEtC4R,EAAqBzD,UAAUkE,YAAc,SAAUrS,GAIrD,IAAIsS,EAAwBxE,KAAKiE,4BACjC,OAAOO,EAAsBD,YAAYrS,IAE3C4R,EAAqBzD,UAAUa,cAAgB,SAAUJ,EAAW9U,GAElE,IAAIwY,EAAwBxE,KAAKiE,4BACjC,OAAOO,EAAsBtD,cAAcJ,EAAW9U,IAEjD8X,EA/B+B,GAiCzB,K,aC7BXW,GAAYlZ,EAAA,OACZ,GAA8B,SAAUqU,GAE1C,SAAS8E,IACP,OAAkB,OAAX9E,GAAmBA,EAAOwC,MAAMpC,KAAMqC,YAAcrC,KA8J7D,OAhKA,eAAU0E,EAAgB9E,GAO1B8E,EAAerE,UAAUsE,KAAO,SAAUC,GACxChF,EAAOS,UAAUsE,KAAKvC,MAAMpC,KAAMqC,WAGlCrC,KAAK6E,qBAAuB,IAAI,GAAqB,OAAY7E,KAAK9Q,QAAS8Q,MAAO,OAAYA,KAAKgE,WAAYhE,OACnHA,KAAK8E,kBAAkBF,IAKzBF,EAAerE,UAAU0E,YAAc,WACrCnF,EAAOS,UAAU0E,YAAY3C,MAAMpC,KAAMqC,YAK3CqC,EAAerE,UAAU2E,eAAiB,WACxC,OAAO,OAAA3Y,EAAA,MAAuB2T,KAAM,CAClCvT,gBAAiB,CAAC,SAClBwY,gBAAiB,OAAa,OAA8BjF,SAMhE0E,EAAerE,UAAU6E,cAAgB,SAAUpE,GACjD,IAAI7R,EAAO+Q,KAAK9Q,UAEZiW,EAAYV,GAAUxV,GACtBmW,EAAQD,EAAUC,MACtB,IAAKA,EAAO,CACV,IAAIC,EAAc,GAClBpW,EAAKW,KAAKX,EAAKG,aAAa,UAAU,SAAU5D,GAC9C6Z,EAAY/K,KAAK9O,MAEnB4Z,EAAQD,EAAUC,MAAQ,eAAgBC,EAAapW,EAAKsR,UAAUxS,IAAI,qBAE5E,IAAIuX,EAAS1F,EAAOS,UAAU6E,cAAcnF,KAAKC,KAAMc,GAIvD,OAFAwE,EAAOC,QAAUH,EAAMtE,IAAc,EACrCwE,EAAOE,MAAMlL,KAAK,WACXgL,GAETZ,EAAerE,UAAUyE,kBAAoB,SAAUF,GAErDrZ,EAAA,KAA0BqZ,EAAQ,YAAa,CAAC,SAChD,IAAIa,EAAqBb,EAAOhP,UAC5B8P,EAAuBd,EAAOe,SAAS/P,UAE3C6P,EAAmBG,KAAOH,EAAmBG,MAAQhB,EAAOlN,MAAMkO,KAClEF,EAAqBE,KAAOF,EAAqBE,MAAQhB,EAAOe,SAASjO,MAAMkO,MAEjFlB,EAAed,KAAO,aACtBc,EAAemB,cAAgB,CAE7BC,EAAG,EACHC,iBAAiB,EACjBC,QAAS,OAETlY,OAAQ,CAAC,MAAO,OAChBE,OAAQ,CAAC,EAAG,OAEZiC,WAAW,EACXX,WAAY,GACZC,SAAU,OACVC,SAAU,EAEVC,SAAU,EAGVwW,kBAAmB,EAEnBC,eAAgB,GAKhBC,iBAAkB,EAElBhW,kBAAkB,EAElBiW,KAAM,EACNC,IAAK,EACLC,MAAO,EACPC,OAAQ,EACR/Y,MAAO,KACPE,OAAQ,KACRgK,MAAO,CAGL+G,OAAQ,EACRmH,MAAM,EACN3J,SAAU,WAEV5C,SAAU,QAEVmN,QAAS,OAGTrL,aAAc,MAEdC,YAAa,GAEbqL,oBAAqB,GAOvB7Q,UAAW,CACTgQ,MAAM,EAEN5T,OAAQ,GAER0U,QAAS,GACTvQ,QAAQ,EACRhC,aAAc,GACdkB,gBAAiB,GACjBsR,UAAW,CAETnZ,MAAO,EACPoW,KAAM,UAGVgD,UAAW,CACTC,YAAa,EACbC,WAAY,SAEdC,iBAAiB,EACjBC,iBAAkB,CAChBC,MAAO,YACPvF,QAAS,GAEXwF,YAAa,CAEXC,aAAa,GAEfxB,SAAU,CACRlR,OAAO,EACP2S,UAAW,GAGbC,mBAAmB,EAEnB5G,cAAe,YACf6G,kBAAmB,IAEnBC,oBAAqB,aACrBC,sBAAuB,aACvBC,wBAAyB,IACzBC,gBAAiB,cAEZhD,EAjKyB,CAkKhCiD,GAAA,MACaC,GAAA,GC3KA,SAASC,GAAmB/Y,GACzC,MAAO,CACLA,WAAYA,EACZ8C,MAAO,SAAUtF,EAAayC,GAC5B,IAAIE,EAAO3C,EAAY4C,UACvBD,EAAKgD,YAAW,SAAUhB,GAExB,IAAI9B,EAAWF,EAAKG,aAAa,SAC7B0Y,EAAW7Y,EAAKlB,IAAIoB,EAAU8B,GAClC,QAAI,eAAS6W,KAAcjY,MAAMiY,IAAaA,EAAW,QCH1D,SAASC,GAAQC,GACtBA,EAAUC,kBAAkB,GAC5BD,EAAUE,oBAAoBN,IAC9B,eAA6B,MAAOI,EAAUG,gBAC9CH,EAAUI,eAAe,eAAMvZ,EAAW,QAC1CmZ,EAAUK,kBAAkB1W,EAAW,QACvCqW,EAAUK,kBAAkBR,GAAmB,U,yDCxDjD,gBAGe,e,kCCHf","file":"js/chunk-0779e8b8.1fc9ae46.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',{staticStyle:{\"border-radius\":\"1rem\"},attrs:{\"flat\":\"\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"dense\":\"\"}},[_c('v-toolbar-title',{staticClass:\"chart_title\"},[_vm._v(\"Top 5 artikala\")]),_c('v-spacer'),_c('v-menu',{attrs:{\"offset-y\":\"\",\"left\":\"\",\"rounded\":\"\",\"close-on-click\":true,\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"ma-0 pa-0\",attrs:{\"plain\":\"\",\"icon\":\"\",\"small\":\"\",\"dark\":\"\"}},'v-btn',attrs,false),on),[_c('sabira_icon',{attrs:{\"icon\":\"3dots\"}})],1)]}}])},[_c('div',{staticClass:\"pa-0 tertiary\",staticStyle:{\"display\":\"grid\",\"width\":\"10rem\",\"grid-row-gap\":\"0rem\"}},[_c('div',{staticClass:\"body-1 pa-2 secondary white--text\"},[_vm._v(\"\\n Postavke\\n \")]),_c('div',{staticClass:\"pa-2\"},[_c('v-select',{attrs:{\"dense\":\"\",\"mandatory\":\"\",\"label\":\"Godina\",\"items\":_vm.years,\"outlined\":\"\",\"hide-details\":\"\"},model:{value:(_vm.selected_year),callback:function ($$v) {_vm.selected_year=$$v},expression:\"selected_year\"}})],1)])])],1),_c('v-card-text',{staticClass:\"pt-0\"},[_c('div',{staticStyle:{\"display\":\"grid\",\"grid-template-columns\":\"1fr max-content\",\"align-items\":\"center\"}}),_c('v-chart',{staticClass:\"chart\",attrs:{\"autoresize\":\"\",\"id\":_vm.chart_id,\"option\":_vm.option}}),_c('v-data-table',{staticStyle:{\"background\":\"transparent !important\"},attrs:{\"dense\":\"\",\"items\":_vm.items,\"headers\":_vm.headers,\"hide-default-footer\":\"\",\"no-data-text\":\"Podaci ne postoje za odabranu kategoriju\"},scopedSlots:_vm._u([{key:`item.ukupno`,fn:function({ item }){return [_vm._v(\"\\n \"+_vm._s(_vm.$n(item.ukupno))+\"\\n \")]}}],null,true)})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n Top 5 artikala\n \n \n \n \n \n \n \n \n
\n Postavke\n
\n
\n \n \n
\n
\n \n \n \n \n \n \n \n {{ $n(item.ukupno) }}\n \n \n \n \n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./top_5_articles.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./top_5_articles.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./top_5_articles.vue?vue&type=template&id=3352d234&scoped=true\"\nimport script from \"./top_5_articles.vue?vue&type=script&lang=js\"\nexport * from \"./top_5_articles.vue?vue&type=script&lang=js\"\nimport style0 from \"./top_5_articles.vue?vue&type=style&index=0&id=3352d234&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3352d234\",\n null\n \n)\n\nexport default component.exports","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport prepareSeriesDataSchema from '../../data/helper/createDimensions.js';\nimport SeriesData from '../../data/SeriesData.js';\nimport { extend, isArray } from 'zrender/lib/core/util.js';\n/**\n * [Usage]:\n * (1)\n * createListSimply(seriesModel, ['value']);\n * (2)\n * createListSimply(seriesModel, {\n * coordDimensions: ['value'],\n * dimensionsCount: 5\n * });\n */\nexport default function createSeriesDataSimply(seriesModel, opt, nameList) {\n opt = isArray(opt) && {\n coordDimensions: opt\n } || extend({\n encodeDefine: seriesModel.getEncode()\n }, opt);\n var source = seriesModel.getSource();\n var dimensions = prepareSeriesDataSchema(source, opt).dimensions;\n var list = new SeriesData(dimensions, seriesModel);\n list.initData(source, nameList);\n return list;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { parsePercent, linearMap } from '../../util/number.js';\nimport * as layout from '../../util/layout.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { normalizeArcAngles } from 'zrender/lib/core/PathProxy.js';\nimport { makeInner } from '../../util/model.js';\nvar PI2 = Math.PI * 2;\nvar RADIAN = Math.PI / 180;\nfunction getViewRect(seriesModel, api) {\n return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\nexport function getBasicPieLayout(seriesModel, api) {\n var viewRect = getViewRect(seriesModel, api);\n // center can be string or number when coordinateSystem is specified\n var center = seriesModel.get('center');\n var radius = seriesModel.get('radius');\n if (!zrUtil.isArray(radius)) {\n radius = [0, radius];\n }\n var width = parsePercent(viewRect.width, api.getWidth());\n var height = parsePercent(viewRect.height, api.getHeight());\n var size = Math.min(width, height);\n var r0 = parsePercent(radius[0], size / 2);\n var r = parsePercent(radius[1], size / 2);\n var cx;\n var cy;\n var coordSys = seriesModel.coordinateSystem;\n if (coordSys) {\n // percentage is not allowed when coordinate system is specified\n var point = coordSys.dataToPoint(center);\n cx = point[0] || 0;\n cy = point[1] || 0;\n } else {\n if (!zrUtil.isArray(center)) {\n center = [center, center];\n }\n cx = parsePercent(center[0], width) + viewRect.x;\n cy = parsePercent(center[1], height) + viewRect.y;\n }\n return {\n cx: cx,\n cy: cy,\n r0: r0,\n r: r\n };\n}\nexport default function pieLayout(seriesType, ecModel, api) {\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n var data = seriesModel.getData();\n var valueDim = data.mapDimension('value');\n var viewRect = getViewRect(seriesModel, api);\n var _a = getBasicPieLayout(seriesModel, api),\n cx = _a.cx,\n cy = _a.cy,\n r = _a.r,\n r0 = _a.r0;\n var startAngle = -seriesModel.get('startAngle') * RADIAN;\n var endAngle = seriesModel.get('endAngle');\n var padAngle = seriesModel.get('padAngle') * RADIAN;\n endAngle = endAngle === 'auto' ? startAngle - PI2 : -endAngle * RADIAN;\n var minAngle = seriesModel.get('minAngle') * RADIAN;\n var minAndPadAngle = minAngle + padAngle;\n var validDataCount = 0;\n data.each(valueDim, function (value) {\n !isNaN(value) && validDataCount++;\n });\n var sum = data.getSum(valueDim);\n // Sum may be 0\n var unitRadian = Math.PI / (sum || validDataCount) * 2;\n var clockwise = seriesModel.get('clockwise');\n var roseType = seriesModel.get('roseType');\n var stillShowZeroSum = seriesModel.get('stillShowZeroSum');\n // [0...max]\n var extent = data.getDataExtent(valueDim);\n extent[0] = 0;\n var dir = clockwise ? 1 : -1;\n var angles = [startAngle, endAngle];\n var halfPadAngle = dir * padAngle / 2;\n normalizeArcAngles(angles, !clockwise);\n startAngle = angles[0], endAngle = angles[1];\n var layoutData = getSeriesLayoutData(seriesModel);\n layoutData.startAngle = startAngle;\n layoutData.endAngle = endAngle;\n layoutData.clockwise = clockwise;\n var angleRange = Math.abs(endAngle - startAngle);\n // In the case some sector angle is smaller than minAngle\n var restAngle = angleRange;\n var valueSumLargerThanMinAngle = 0;\n var currentAngle = startAngle;\n data.setLayout({\n viewRect: viewRect,\n r: r\n });\n data.each(valueDim, function (value, idx) {\n var angle;\n if (isNaN(value)) {\n data.setItemLayout(idx, {\n angle: NaN,\n startAngle: NaN,\n endAngle: NaN,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: r0,\n r: roseType ? NaN : r\n });\n return;\n }\n // FIXME 兼容 2.0 但是 roseType 是 area 的时候才是这样?\n if (roseType !== 'area') {\n angle = sum === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;\n } else {\n angle = angleRange / validDataCount;\n }\n if (angle < minAndPadAngle) {\n angle = minAndPadAngle;\n restAngle -= minAndPadAngle;\n } else {\n valueSumLargerThanMinAngle += value;\n }\n var endAngle = currentAngle + dir * angle;\n // calculate display angle\n var actualStartAngle = 0;\n var actualEndAngle = 0;\n if (padAngle > angle) {\n actualStartAngle = currentAngle + dir * angle / 2;\n actualEndAngle = actualStartAngle;\n } else {\n actualStartAngle = currentAngle + halfPadAngle;\n actualEndAngle = endAngle - halfPadAngle;\n }\n data.setItemLayout(idx, {\n angle: angle,\n startAngle: actualStartAngle,\n endAngle: actualEndAngle,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: r0,\n r: roseType ? linearMap(value, extent, [r0, r]) : r\n });\n currentAngle = endAngle;\n });\n // Some sector is constrained by minAngle and padAngle\n // Rest sectors needs recalculate angle\n if (restAngle < PI2 && validDataCount) {\n // Average the angle if rest angle is not enough after all angles is\n // Constrained by minAngle and padAngle\n if (restAngle <= 1e-3) {\n var angle_1 = angleRange / validDataCount;\n data.each(valueDim, function (value, idx) {\n if (!isNaN(value)) {\n var layout_1 = data.getItemLayout(idx);\n layout_1.angle = angle_1;\n var actualStartAngle = 0;\n var actualEndAngle = 0;\n if (angle_1 < padAngle) {\n actualStartAngle = startAngle + dir * (idx + 1 / 2) * angle_1;\n actualEndAngle = actualStartAngle;\n } else {\n actualStartAngle = startAngle + dir * idx * angle_1 + halfPadAngle;\n actualEndAngle = startAngle + dir * (idx + 1) * angle_1 - halfPadAngle;\n }\n layout_1.startAngle = actualStartAngle;\n layout_1.endAngle = actualEndAngle;\n }\n });\n } else {\n unitRadian = restAngle / valueSumLargerThanMinAngle;\n currentAngle = startAngle;\n data.each(valueDim, function (value, idx) {\n if (!isNaN(value)) {\n var layout_2 = data.getItemLayout(idx);\n var angle = layout_2.angle === minAndPadAngle ? minAndPadAngle : value * unitRadian;\n var actualStartAngle = 0;\n var actualEndAngle = 0;\n if (angle < padAngle) {\n actualStartAngle = currentAngle + dir * angle / 2;\n actualEndAngle = actualStartAngle;\n } else {\n actualStartAngle = currentAngle + halfPadAngle;\n actualEndAngle = currentAngle + dir * angle - halfPadAngle;\n }\n layout_2.startAngle = actualStartAngle;\n layout_2.endAngle = actualEndAngle;\n currentAngle += dir * angle;\n }\n });\n }\n }\n });\n}\nexport var getSeriesLayoutData = makeInner();","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nexport default function dataFilter(seriesType) {\n return {\n seriesType: seriesType,\n reset: function (seriesModel, ecModel) {\n var legendModels = ecModel.findComponents({\n mainType: 'legend'\n });\n if (!legendModels || !legendModels.length) {\n return;\n }\n var data = seriesModel.getData();\n data.filterSelf(function (idx) {\n var name = data.getName(idx);\n // If in any legend component the status is not selected.\n for (var i = 0; i < legendModels.length; i++) {\n // @ts-ignore FIXME: LegendModel\n if (!legendModels[i].isSelected(name)) {\n return false;\n }\n }\n return true;\n });\n }\n };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { Point, Path, Polyline } from '../util/graphic.js';\nimport PathProxy from 'zrender/lib/core/PathProxy.js';\nimport { normalizeRadian } from 'zrender/lib/contain/util.js';\nimport { cubicProjectPoint, quadraticProjectPoint } from 'zrender/lib/core/curve.js';\nimport { defaults, retrieve2 } from 'zrender/lib/core/util.js';\nimport { invert } from 'zrender/lib/core/matrix.js';\nimport * as vector from 'zrender/lib/core/vector.js';\nimport { DISPLAY_STATES, SPECIAL_STATES } from '../util/states.js';\nvar PI2 = Math.PI * 2;\nvar CMD = PathProxy.CMD;\nvar DEFAULT_SEARCH_SPACE = ['top', 'right', 'bottom', 'left'];\nfunction getCandidateAnchor(pos, distance, rect, outPt, outDir) {\n var width = rect.width;\n var height = rect.height;\n switch (pos) {\n case 'top':\n outPt.set(rect.x + width / 2, rect.y - distance);\n outDir.set(0, -1);\n break;\n case 'bottom':\n outPt.set(rect.x + width / 2, rect.y + height + distance);\n outDir.set(0, 1);\n break;\n case 'left':\n outPt.set(rect.x - distance, rect.y + height / 2);\n outDir.set(-1, 0);\n break;\n case 'right':\n outPt.set(rect.x + width + distance, rect.y + height / 2);\n outDir.set(1, 0);\n break;\n }\n}\nfunction projectPointToArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y, out) {\n x -= cx;\n y -= cy;\n var d = Math.sqrt(x * x + y * y);\n x /= d;\n y /= d;\n // Intersect point.\n var ox = x * r + cx;\n var oy = y * r + cy;\n if (Math.abs(startAngle - endAngle) % PI2 < 1e-4) {\n // Is a circle\n out[0] = ox;\n out[1] = oy;\n return d - r;\n }\n if (anticlockwise) {\n var tmp = startAngle;\n startAngle = normalizeRadian(endAngle);\n endAngle = normalizeRadian(tmp);\n } else {\n startAngle = normalizeRadian(startAngle);\n endAngle = normalizeRadian(endAngle);\n }\n if (startAngle > endAngle) {\n endAngle += PI2;\n }\n var angle = Math.atan2(y, x);\n if (angle < 0) {\n angle += PI2;\n }\n if (angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle) {\n // Project point is on the arc.\n out[0] = ox;\n out[1] = oy;\n return d - r;\n }\n var x1 = r * Math.cos(startAngle) + cx;\n var y1 = r * Math.sin(startAngle) + cy;\n var x2 = r * Math.cos(endAngle) + cx;\n var y2 = r * Math.sin(endAngle) + cy;\n var d1 = (x1 - x) * (x1 - x) + (y1 - y) * (y1 - y);\n var d2 = (x2 - x) * (x2 - x) + (y2 - y) * (y2 - y);\n if (d1 < d2) {\n out[0] = x1;\n out[1] = y1;\n return Math.sqrt(d1);\n } else {\n out[0] = x2;\n out[1] = y2;\n return Math.sqrt(d2);\n }\n}\nfunction projectPointToLine(x1, y1, x2, y2, x, y, out, limitToEnds) {\n var dx = x - x1;\n var dy = y - y1;\n var dx1 = x2 - x1;\n var dy1 = y2 - y1;\n var lineLen = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n dx1 /= lineLen;\n dy1 /= lineLen;\n // dot product\n var projectedLen = dx * dx1 + dy * dy1;\n var t = projectedLen / lineLen;\n if (limitToEnds) {\n t = Math.min(Math.max(t, 0), 1);\n }\n t *= lineLen;\n var ox = out[0] = x1 + t * dx1;\n var oy = out[1] = y1 + t * dy1;\n return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\n}\nfunction projectPointToRect(x1, y1, width, height, x, y, out) {\n if (width < 0) {\n x1 = x1 + width;\n width = -width;\n }\n if (height < 0) {\n y1 = y1 + height;\n height = -height;\n }\n var x2 = x1 + width;\n var y2 = y1 + height;\n var ox = out[0] = Math.min(Math.max(x, x1), x2);\n var oy = out[1] = Math.min(Math.max(y, y1), y2);\n return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\n}\nvar tmpPt = [];\nfunction nearestPointOnRect(pt, rect, out) {\n var dist = projectPointToRect(rect.x, rect.y, rect.width, rect.height, pt.x, pt.y, tmpPt);\n out.set(tmpPt[0], tmpPt[1]);\n return dist;\n}\n/**\n * Calculate min distance corresponding point.\n * This method won't evaluate if point is in the path.\n */\nfunction nearestPointOnPath(pt, path, out) {\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n var x1;\n var y1;\n var minDist = Infinity;\n var data = path.data;\n var x = pt.x;\n var y = pt.y;\n for (var i = 0; i < data.length;) {\n var cmd = data[i++];\n if (i === 1) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n var d = minDist;\n switch (cmd) {\n case CMD.M:\n // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n // 在 closePath 的时候使用\n x0 = data[i++];\n y0 = data[i++];\n xi = x0;\n yi = y0;\n break;\n case CMD.L:\n d = projectPointToLine(xi, yi, data[i], data[i + 1], x, y, tmpPt, true);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.C:\n d = cubicProjectPoint(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.Q:\n d = quadraticProjectPoint(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.A:\n // TODO Arc 判断的开销比较大\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var theta = data[i++];\n var dTheta = data[i++];\n // TODO Arc 旋转\n i += 1;\n var anticlockwise = !!(1 - data[i++]);\n x1 = Math.cos(theta) * rx + cx;\n y1 = Math.sin(theta) * ry + cy;\n // 不是直接使用 arc 命令\n if (i <= 1) {\n // 第一个命令起点还未定义\n x0 = x1;\n y0 = y1;\n }\n // zr 使用scale来模拟椭圆, 这里也对x做一定的缩放\n var _x = (x - cx) * ry / rx + cx;\n d = projectPointToArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y, tmpPt);\n xi = Math.cos(theta + dTheta) * rx + cx;\n yi = Math.sin(theta + dTheta) * ry + cy;\n break;\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n d = projectPointToRect(x0, y0, width, height, x, y, tmpPt);\n break;\n case CMD.Z:\n d = projectPointToLine(xi, yi, x0, y0, x, y, tmpPt, true);\n xi = x0;\n yi = y0;\n break;\n }\n if (d < minDist) {\n minDist = d;\n out.set(tmpPt[0], tmpPt[1]);\n }\n }\n return minDist;\n}\n// Temporal variable for intermediate usage.\nvar pt0 = new Point();\nvar pt1 = new Point();\nvar pt2 = new Point();\nvar dir = new Point();\nvar dir2 = new Point();\n/**\n * Calculate a proper guide line based on the label position and graphic element definition\n * @param label\n * @param labelRect\n * @param target\n * @param targetRect\n */\nexport function updateLabelLinePoints(target, labelLineModel) {\n if (!target) {\n return;\n }\n var labelLine = target.getTextGuideLine();\n var label = target.getTextContent();\n // Needs to create text guide in each charts.\n if (!(label && labelLine)) {\n return;\n }\n var labelGuideConfig = target.textGuideLineConfig || {};\n var points = [[0, 0], [0, 0], [0, 0]];\n var searchSpace = labelGuideConfig.candidates || DEFAULT_SEARCH_SPACE;\n var labelRect = label.getBoundingRect().clone();\n labelRect.applyTransform(label.getComputedTransform());\n var minDist = Infinity;\n var anchorPoint = labelGuideConfig.anchor;\n var targetTransform = target.getComputedTransform();\n var targetInversedTransform = targetTransform && invert([], targetTransform);\n var len = labelLineModel.get('length2') || 0;\n if (anchorPoint) {\n pt2.copy(anchorPoint);\n }\n for (var i = 0; i < searchSpace.length; i++) {\n var candidate = searchSpace[i];\n getCandidateAnchor(candidate, 0, labelRect, pt0, dir);\n Point.scaleAndAdd(pt1, pt0, dir, len);\n // Transform to target coord space.\n pt1.transform(targetInversedTransform);\n // Note: getBoundingRect will ensure the `path` being created.\n var boundingRect = target.getBoundingRect();\n var dist = anchorPoint ? anchorPoint.distance(pt1) : target instanceof Path ? nearestPointOnPath(pt1, target.path, pt2) : nearestPointOnRect(pt1, boundingRect, pt2);\n // TODO pt2 is in the path\n if (dist < minDist) {\n minDist = dist;\n // Transform back to global space.\n pt1.transform(targetTransform);\n pt2.transform(targetTransform);\n pt2.toArray(points[0]);\n pt1.toArray(points[1]);\n pt0.toArray(points[2]);\n }\n }\n limitTurnAngle(points, labelLineModel.get('minTurnAngle'));\n labelLine.setShape({\n points: points\n });\n}\n// Temporal variable for the limitTurnAngle function\nvar tmpArr = [];\nvar tmpProjPoint = new Point();\n/**\n * Reduce the line segment attached to the label to limit the turn angle between two segments.\n * @param linePoints\n * @param minTurnAngle Radian of minimum turn angle. 0 - 180\n */\nexport function limitTurnAngle(linePoints, minTurnAngle) {\n if (!(minTurnAngle <= 180 && minTurnAngle > 0)) {\n return;\n }\n minTurnAngle = minTurnAngle / 180 * Math.PI;\n // The line points can be\n // /pt1----pt2 (label)\n // /\n // pt0/\n pt0.fromArray(linePoints[0]);\n pt1.fromArray(linePoints[1]);\n pt2.fromArray(linePoints[2]);\n Point.sub(dir, pt0, pt1);\n Point.sub(dir2, pt2, pt1);\n var len1 = dir.len();\n var len2 = dir2.len();\n if (len1 < 1e-3 || len2 < 1e-3) {\n return;\n }\n dir.scale(1 / len1);\n dir2.scale(1 / len2);\n var angleCos = dir.dot(dir2);\n var minTurnAngleCos = Math.cos(minTurnAngle);\n if (minTurnAngleCos < angleCos) {\n // Smaller than minTurnAngle\n // Calculate project point of pt0 on pt1-pt2\n var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);\n tmpProjPoint.fromArray(tmpArr);\n // Calculate new projected length with limited minTurnAngle and get the new connect point\n tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI - minTurnAngle));\n // Limit the new calculated connect point between pt1 and pt2.\n var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\n if (isNaN(t)) {\n return;\n }\n if (t < 0) {\n Point.copy(tmpProjPoint, pt1);\n } else if (t > 1) {\n Point.copy(tmpProjPoint, pt2);\n }\n tmpProjPoint.toArray(linePoints[1]);\n }\n}\n/**\n * Limit the angle of line and the surface\n * @param maxSurfaceAngle Radian of minimum turn angle. 0 - 180. 0 is same direction to normal. 180 is opposite\n */\nexport function limitSurfaceAngle(linePoints, surfaceNormal, maxSurfaceAngle) {\n if (!(maxSurfaceAngle <= 180 && maxSurfaceAngle > 0)) {\n return;\n }\n maxSurfaceAngle = maxSurfaceAngle / 180 * Math.PI;\n pt0.fromArray(linePoints[0]);\n pt1.fromArray(linePoints[1]);\n pt2.fromArray(linePoints[2]);\n Point.sub(dir, pt1, pt0);\n Point.sub(dir2, pt2, pt1);\n var len1 = dir.len();\n var len2 = dir2.len();\n if (len1 < 1e-3 || len2 < 1e-3) {\n return;\n }\n dir.scale(1 / len1);\n dir2.scale(1 / len2);\n var angleCos = dir.dot(surfaceNormal);\n var maxSurfaceAngleCos = Math.cos(maxSurfaceAngle);\n if (angleCos < maxSurfaceAngleCos) {\n // Calculate project point of pt0 on pt1-pt2\n var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);\n tmpProjPoint.fromArray(tmpArr);\n var HALF_PI = Math.PI / 2;\n var angle2 = Math.acos(dir2.dot(surfaceNormal));\n var newAngle = HALF_PI + angle2 - maxSurfaceAngle;\n if (newAngle >= HALF_PI) {\n // parallel\n Point.copy(tmpProjPoint, pt2);\n } else {\n // Calculate new projected length with limited minTurnAngle and get the new connect point\n tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI / 2 - newAngle));\n // Limit the new calculated connect point between pt1 and pt2.\n var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\n if (isNaN(t)) {\n return;\n }\n if (t < 0) {\n Point.copy(tmpProjPoint, pt1);\n } else if (t > 1) {\n Point.copy(tmpProjPoint, pt2);\n }\n }\n tmpProjPoint.toArray(linePoints[1]);\n }\n}\nfunction setLabelLineState(labelLine, ignore, stateName, stateModel) {\n var isNormal = stateName === 'normal';\n var stateObj = isNormal ? labelLine : labelLine.ensureState(stateName);\n // Make sure display.\n stateObj.ignore = ignore;\n // Set smooth\n var smooth = stateModel.get('smooth');\n if (smooth && smooth === true) {\n smooth = 0.3;\n }\n stateObj.shape = stateObj.shape || {};\n if (smooth > 0) {\n stateObj.shape.smooth = smooth;\n }\n var styleObj = stateModel.getModel('lineStyle').getLineStyle();\n isNormal ? labelLine.useStyle(styleObj) : stateObj.style = styleObj;\n}\nfunction buildLabelLinePath(path, shape) {\n var smooth = shape.smooth;\n var points = shape.points;\n if (!points) {\n return;\n }\n path.moveTo(points[0][0], points[0][1]);\n if (smooth > 0 && points.length >= 3) {\n var len1 = vector.dist(points[0], points[1]);\n var len2 = vector.dist(points[1], points[2]);\n if (!len1 || !len2) {\n path.lineTo(points[1][0], points[1][1]);\n path.lineTo(points[2][0], points[2][1]);\n return;\n }\n var moveLen = Math.min(len1, len2) * smooth;\n var midPoint0 = vector.lerp([], points[1], points[0], moveLen / len1);\n var midPoint2 = vector.lerp([], points[1], points[2], moveLen / len2);\n var midPoint1 = vector.lerp([], midPoint0, midPoint2, 0.5);\n path.bezierCurveTo(midPoint0[0], midPoint0[1], midPoint0[0], midPoint0[1], midPoint1[0], midPoint1[1]);\n path.bezierCurveTo(midPoint2[0], midPoint2[1], midPoint2[0], midPoint2[1], points[2][0], points[2][1]);\n } else {\n for (var i = 1; i < points.length; i++) {\n path.lineTo(points[i][0], points[i][1]);\n }\n }\n}\n/**\n * Create a label line if necessary and set it's style.\n */\nexport function setLabelLineStyle(targetEl, statesModels, defaultStyle) {\n var labelLine = targetEl.getTextGuideLine();\n var label = targetEl.getTextContent();\n if (!label) {\n // Not show label line if there is no label.\n if (labelLine) {\n targetEl.removeTextGuideLine();\n }\n return;\n }\n var normalModel = statesModels.normal;\n var showNormal = normalModel.get('show');\n var labelIgnoreNormal = label.ignore;\n for (var i = 0; i < DISPLAY_STATES.length; i++) {\n var stateName = DISPLAY_STATES[i];\n var stateModel = statesModels[stateName];\n var isNormal = stateName === 'normal';\n if (stateModel) {\n var stateShow = stateModel.get('show');\n var isLabelIgnored = isNormal ? labelIgnoreNormal : retrieve2(label.states[stateName] && label.states[stateName].ignore, labelIgnoreNormal);\n if (isLabelIgnored // Not show when label is not shown in this state.\n || !retrieve2(stateShow, showNormal) // Use normal state by default if not set.\n ) {\n var stateObj = isNormal ? labelLine : labelLine && labelLine.states[stateName];\n if (stateObj) {\n stateObj.ignore = true;\n }\n if (!!labelLine) {\n setLabelLineState(labelLine, true, stateName, stateModel);\n }\n continue;\n }\n // Create labelLine if not exists\n if (!labelLine) {\n labelLine = new Polyline();\n targetEl.setTextGuideLine(labelLine);\n // Reset state of normal because it's new created.\n // NOTE: NORMAL should always been the first!\n if (!isNormal && (labelIgnoreNormal || !showNormal)) {\n setLabelLineState(labelLine, true, 'normal', statesModels.normal);\n }\n // Use same state proxy.\n if (targetEl.stateProxy) {\n labelLine.stateProxy = targetEl.stateProxy;\n }\n }\n setLabelLineState(labelLine, false, stateName, stateModel);\n }\n }\n if (labelLine) {\n defaults(labelLine.style, defaultStyle);\n // Not fill.\n labelLine.style.fill = null;\n var showAbove = normalModel.get('showAbove');\n var labelLineConfig = targetEl.textGuideLineConfig = targetEl.textGuideLineConfig || {};\n labelLineConfig.showAbove = showAbove || false;\n // Custom the buildPath.\n labelLine.buildPath = buildLabelLinePath;\n }\n}\nexport function getLabelLineStatesModels(itemModel, labelLineName) {\n labelLineName = labelLineName || 'labelLine';\n var statesModels = {\n normal: itemModel.getModel(labelLineName)\n };\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\n var stateName = SPECIAL_STATES[i];\n statesModels[stateName] = itemModel.getModel([stateName, labelLineName]);\n }\n return statesModels;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME emphasis label position is not same with normal label position\nimport { parsePercent } from '../../util/number.js';\nimport { Point } from '../../util/graphic.js';\nimport { each, isNumber } from 'zrender/lib/core/util.js';\nimport { limitTurnAngle, limitSurfaceAngle } from '../../label/labelGuideHelper.js';\nimport { shiftLayoutOnY } from '../../label/labelLayoutHelper.js';\nvar RADIAN = Math.PI / 180;\nfunction adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight, viewLeft, viewTop, farthestX) {\n if (list.length < 2) {\n return;\n }\n ;\n function recalculateXOnSemiToAlignOnEllipseCurve(semi) {\n var rB = semi.rB;\n var rB2 = rB * rB;\n for (var i = 0; i < semi.list.length; i++) {\n var item = semi.list[i];\n var dy = Math.abs(item.label.y - cy);\n // horizontal r is always same with original r because x is not changed.\n var rA = r + item.len;\n var rA2 = rA * rA;\n // Use ellipse implicit function to calculate x\n var dx = Math.sqrt((1 - Math.abs(dy * dy / rB2)) * rA2);\n var newX = cx + (dx + item.len2) * dir;\n var deltaX = newX - item.label.x;\n var newTargetWidth = item.targetTextWidth - deltaX * dir;\n // text x is changed, so need to recalculate width.\n constrainTextWidth(item, newTargetWidth, true);\n item.label.x = newX;\n }\n }\n // Adjust X based on the shifted y. Make tight labels aligned on an ellipse curve.\n function recalculateX(items) {\n // Extremes of\n var topSemi = {\n list: [],\n maxY: 0\n };\n var bottomSemi = {\n list: [],\n maxY: 0\n };\n for (var i = 0; i < items.length; i++) {\n if (items[i].labelAlignTo !== 'none') {\n continue;\n }\n var item = items[i];\n var semi = item.label.y > cy ? bottomSemi : topSemi;\n var dy = Math.abs(item.label.y - cy);\n if (dy >= semi.maxY) {\n var dx = item.label.x - cx - item.len2 * dir;\n // horizontal r is always same with original r because x is not changed.\n var rA = r + item.len;\n // Canculate rB based on the topest / bottemest label.\n var rB = Math.abs(dx) < rA ? Math.sqrt(dy * dy / (1 - dx * dx / rA / rA)) : rA;\n semi.rB = rB;\n semi.maxY = dy;\n }\n semi.list.push(item);\n }\n recalculateXOnSemiToAlignOnEllipseCurve(topSemi);\n recalculateXOnSemiToAlignOnEllipseCurve(bottomSemi);\n }\n var len = list.length;\n for (var i = 0; i < len; i++) {\n if (list[i].position === 'outer' && list[i].labelAlignTo === 'labelLine') {\n var dx = list[i].label.x - farthestX;\n list[i].linePoints[1][0] += dx;\n list[i].label.x = farthestX;\n }\n }\n if (shiftLayoutOnY(list, viewTop, viewTop + viewHeight)) {\n recalculateX(list);\n }\n}\nfunction avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) {\n var leftList = [];\n var rightList = [];\n var leftmostX = Number.MAX_VALUE;\n var rightmostX = -Number.MAX_VALUE;\n for (var i = 0; i < labelLayoutList.length; i++) {\n var label = labelLayoutList[i].label;\n if (isPositionCenter(labelLayoutList[i])) {\n continue;\n }\n if (label.x < cx) {\n leftmostX = Math.min(leftmostX, label.x);\n leftList.push(labelLayoutList[i]);\n } else {\n rightmostX = Math.max(rightmostX, label.x);\n rightList.push(labelLayoutList[i]);\n }\n }\n for (var i = 0; i < labelLayoutList.length; i++) {\n var layout = labelLayoutList[i];\n if (!isPositionCenter(layout) && layout.linePoints) {\n if (layout.labelStyleWidth != null) {\n continue;\n }\n var label = layout.label;\n var linePoints = layout.linePoints;\n var targetTextWidth = void 0;\n if (layout.labelAlignTo === 'edge') {\n if (label.x < cx) {\n targetTextWidth = linePoints[2][0] - layout.labelDistance - viewLeft - layout.edgeDistance;\n } else {\n targetTextWidth = viewLeft + viewWidth - layout.edgeDistance - linePoints[2][0] - layout.labelDistance;\n }\n } else if (layout.labelAlignTo === 'labelLine') {\n if (label.x < cx) {\n targetTextWidth = leftmostX - viewLeft - layout.bleedMargin;\n } else {\n targetTextWidth = viewLeft + viewWidth - rightmostX - layout.bleedMargin;\n }\n } else {\n if (label.x < cx) {\n targetTextWidth = label.x - viewLeft - layout.bleedMargin;\n } else {\n targetTextWidth = viewLeft + viewWidth - label.x - layout.bleedMargin;\n }\n }\n layout.targetTextWidth = targetTextWidth;\n constrainTextWidth(layout, targetTextWidth);\n }\n }\n adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX);\n adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX);\n for (var i = 0; i < labelLayoutList.length; i++) {\n var layout = labelLayoutList[i];\n if (!isPositionCenter(layout) && layout.linePoints) {\n var label = layout.label;\n var linePoints = layout.linePoints;\n var isAlignToEdge = layout.labelAlignTo === 'edge';\n var padding = label.style.padding;\n var paddingH = padding ? padding[1] + padding[3] : 0;\n // textRect.width already contains paddingH if bgColor is set\n var extraPaddingH = label.style.backgroundColor ? 0 : paddingH;\n var realTextWidth = layout.rect.width + extraPaddingH;\n var dist = linePoints[1][0] - linePoints[2][0];\n if (isAlignToEdge) {\n if (label.x < cx) {\n linePoints[2][0] = viewLeft + layout.edgeDistance + realTextWidth + layout.labelDistance;\n } else {\n linePoints[2][0] = viewLeft + viewWidth - layout.edgeDistance - realTextWidth - layout.labelDistance;\n }\n } else {\n if (label.x < cx) {\n linePoints[2][0] = label.x + layout.labelDistance;\n } else {\n linePoints[2][0] = label.x - layout.labelDistance;\n }\n linePoints[1][0] = linePoints[2][0] + dist;\n }\n linePoints[1][1] = linePoints[2][1] = label.y;\n }\n }\n}\n/**\n * Set max width of each label, and then wrap each label to the max width.\n *\n * @param layout label layout\n * @param availableWidth max width for the label to display\n * @param forceRecalculate recaculate the text layout even if the current width\n * is smaller than `availableWidth`. This is useful when the text was previously\n * wrapped by calling `constrainTextWidth` but now `availableWidth` changed, in\n * which case, previous wrapping should be redo.\n */\nfunction constrainTextWidth(layout, availableWidth, forceRecalculate) {\n if (forceRecalculate === void 0) {\n forceRecalculate = false;\n }\n if (layout.labelStyleWidth != null) {\n // User-defined style.width has the highest priority.\n return;\n }\n var label = layout.label;\n var style = label.style;\n var textRect = layout.rect;\n var bgColor = style.backgroundColor;\n var padding = style.padding;\n var paddingH = padding ? padding[1] + padding[3] : 0;\n var overflow = style.overflow;\n // textRect.width already contains paddingH if bgColor is set\n var oldOuterWidth = textRect.width + (bgColor ? 0 : paddingH);\n if (availableWidth < oldOuterWidth || forceRecalculate) {\n var oldHeight = textRect.height;\n if (overflow && overflow.match('break')) {\n // Temporarily set background to be null to calculate\n // the bounding box without background.\n label.setStyle('backgroundColor', null);\n // Set constraining width\n label.setStyle('width', availableWidth - paddingH);\n // This is the real bounding box of the text without padding.\n var innerRect = label.getBoundingRect();\n label.setStyle('width', Math.ceil(innerRect.width));\n label.setStyle('backgroundColor', bgColor);\n } else {\n var availableInnerWidth = availableWidth - paddingH;\n var newWidth = availableWidth < oldOuterWidth\n // Current text is too wide, use `availableWidth` as max width.\n ? availableInnerWidth :\n // Current available width is enough, but the text may have\n // already been wrapped with a smaller available width.\n forceRecalculate ? availableInnerWidth > layout.unconstrainedWidth\n // Current available is larger than text width,\n // so don't constrain width (otherwise it may have\n // empty space in the background).\n ? null\n // Current available is smaller than text width, so\n // use the current available width as constraining\n // width.\n : availableInnerWidth\n // Current available width is enough, so no need to\n // constrain.\n : null;\n label.setStyle('width', newWidth);\n }\n var newRect = label.getBoundingRect();\n textRect.width = newRect.width;\n var margin = (label.style.margin || 0) + 2.1;\n textRect.height = newRect.height + margin;\n textRect.y -= (textRect.height - oldHeight) / 2;\n }\n}\nfunction isPositionCenter(sectorShape) {\n // Not change x for center label\n return sectorShape.position === 'center';\n}\nexport default function pieLabelLayout(seriesModel) {\n var data = seriesModel.getData();\n var labelLayoutList = [];\n var cx;\n var cy;\n var hasLabelRotate = false;\n var minShowLabelRadian = (seriesModel.get('minShowLabelAngle') || 0) * RADIAN;\n var viewRect = data.getLayout('viewRect');\n var r = data.getLayout('r');\n var viewWidth = viewRect.width;\n var viewLeft = viewRect.x;\n var viewTop = viewRect.y;\n var viewHeight = viewRect.height;\n function setNotShow(el) {\n el.ignore = true;\n }\n function isLabelShown(label) {\n if (!label.ignore) {\n return true;\n }\n for (var key in label.states) {\n if (label.states[key].ignore === false) {\n return true;\n }\n }\n return false;\n }\n data.each(function (idx) {\n var sector = data.getItemGraphicEl(idx);\n var sectorShape = sector.shape;\n var label = sector.getTextContent();\n var labelLine = sector.getTextGuideLine();\n var itemModel = data.getItemModel(idx);\n var labelModel = itemModel.getModel('label');\n // Use position in normal or emphasis\n var labelPosition = labelModel.get('position') || itemModel.get(['emphasis', 'label', 'position']);\n var labelDistance = labelModel.get('distanceToLabelLine');\n var labelAlignTo = labelModel.get('alignTo');\n var edgeDistance = parsePercent(labelModel.get('edgeDistance'), viewWidth);\n var bleedMargin = labelModel.get('bleedMargin');\n var labelLineModel = itemModel.getModel('labelLine');\n var labelLineLen = labelLineModel.get('length');\n labelLineLen = parsePercent(labelLineLen, viewWidth);\n var labelLineLen2 = labelLineModel.get('length2');\n labelLineLen2 = parsePercent(labelLineLen2, viewWidth);\n if (Math.abs(sectorShape.endAngle - sectorShape.startAngle) < minShowLabelRadian) {\n each(label.states, setNotShow);\n label.ignore = true;\n if (labelLine) {\n each(labelLine.states, setNotShow);\n labelLine.ignore = true;\n }\n return;\n }\n if (!isLabelShown(label)) {\n return;\n }\n var midAngle = (sectorShape.startAngle + sectorShape.endAngle) / 2;\n var nx = Math.cos(midAngle);\n var ny = Math.sin(midAngle);\n var textX;\n var textY;\n var linePoints;\n var textAlign;\n cx = sectorShape.cx;\n cy = sectorShape.cy;\n var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner';\n if (labelPosition === 'center') {\n textX = sectorShape.cx;\n textY = sectorShape.cy;\n textAlign = 'center';\n } else {\n var x1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * nx : sectorShape.r * nx) + cx;\n var y1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * ny : sectorShape.r * ny) + cy;\n textX = x1 + nx * 3;\n textY = y1 + ny * 3;\n if (!isLabelInside) {\n // For roseType\n var x2 = x1 + nx * (labelLineLen + r - sectorShape.r);\n var y2 = y1 + ny * (labelLineLen + r - sectorShape.r);\n var x3 = x2 + (nx < 0 ? -1 : 1) * labelLineLen2;\n var y3 = y2;\n if (labelAlignTo === 'edge') {\n // Adjust textX because text align of edge is opposite\n textX = nx < 0 ? viewLeft + edgeDistance : viewLeft + viewWidth - edgeDistance;\n } else {\n textX = x3 + (nx < 0 ? -labelDistance : labelDistance);\n }\n textY = y3;\n linePoints = [[x1, y1], [x2, y2], [x3, y3]];\n }\n textAlign = isLabelInside ? 'center' : labelAlignTo === 'edge' ? nx > 0 ? 'right' : 'left' : nx > 0 ? 'left' : 'right';\n }\n var PI = Math.PI;\n var labelRotate = 0;\n var rotate = labelModel.get('rotate');\n if (isNumber(rotate)) {\n labelRotate = rotate * (PI / 180);\n } else if (labelPosition === 'center') {\n labelRotate = 0;\n } else if (rotate === 'radial' || rotate === true) {\n var radialAngle = nx < 0 ? -midAngle + PI : -midAngle;\n labelRotate = radialAngle;\n } else if (rotate === 'tangential' && labelPosition !== 'outside' && labelPosition !== 'outer') {\n var rad = Math.atan2(nx, ny);\n if (rad < 0) {\n rad = PI * 2 + rad;\n }\n var isDown = ny > 0;\n if (isDown) {\n rad = PI + rad;\n }\n labelRotate = rad - PI;\n }\n hasLabelRotate = !!labelRotate;\n label.x = textX;\n label.y = textY;\n label.rotation = labelRotate;\n label.setStyle({\n verticalAlign: 'middle'\n });\n // Not sectorShape the inside label\n if (!isLabelInside) {\n var textRect = label.getBoundingRect().clone();\n textRect.applyTransform(label.getComputedTransform());\n // Text has a default 1px stroke. Exclude this.\n var margin = (label.style.margin || 0) + 2.1;\n textRect.y -= margin / 2;\n textRect.height += margin;\n labelLayoutList.push({\n label: label,\n labelLine: labelLine,\n position: labelPosition,\n len: labelLineLen,\n len2: labelLineLen2,\n minTurnAngle: labelLineModel.get('minTurnAngle'),\n maxSurfaceAngle: labelLineModel.get('maxSurfaceAngle'),\n surfaceNormal: new Point(nx, ny),\n linePoints: linePoints,\n textAlign: textAlign,\n labelDistance: labelDistance,\n labelAlignTo: labelAlignTo,\n edgeDistance: edgeDistance,\n bleedMargin: bleedMargin,\n rect: textRect,\n unconstrainedWidth: textRect.width,\n labelStyleWidth: label.style.width\n });\n } else {\n label.setStyle({\n align: textAlign\n });\n var selectState = label.states.select;\n if (selectState) {\n selectState.x += label.x;\n selectState.y += label.y;\n }\n }\n sector.setTextConfig({\n inside: isLabelInside\n });\n });\n if (!hasLabelRotate && seriesModel.get('avoidLabelOverlap')) {\n avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop);\n }\n for (var i = 0; i < labelLayoutList.length; i++) {\n var layout = labelLayoutList[i];\n var label = layout.label;\n var labelLine = layout.labelLine;\n var notShowLabel = isNaN(label.x) || isNaN(label.y);\n if (label) {\n label.setStyle({\n align: layout.textAlign\n });\n if (notShowLabel) {\n each(label.states, setNotShow);\n label.ignore = true;\n }\n var selectState = label.states.select;\n if (selectState) {\n selectState.x += label.x;\n selectState.y += label.y;\n }\n }\n if (labelLine) {\n var linePoints = layout.linePoints;\n if (notShowLabel || !linePoints) {\n each(labelLine.states, setNotShow);\n labelLine.ignore = true;\n } else {\n limitTurnAngle(linePoints, layout.minTurnAngle);\n limitSurfaceAngle(linePoints, layout.surfaceNormal, layout.maxSurfaceAngle);\n labelLine.setShape({\n points: linePoints\n });\n // Set the anchor to the midpoint of sector\n label.__hostTarget.textGuideLineConfig = {\n anchor: new Point(linePoints[0][0], linePoints[0][1])\n };\n }\n }\n }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport { extend, retrieve3 } from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport { setStatesStylesFromModel, toggleHoverEmphasis } from '../../util/states.js';\nimport ChartView from '../../view/Chart.js';\nimport labelLayout from './labelLayout.js';\nimport { setLabelLineStyle, getLabelLineStatesModels } from '../../label/labelGuideHelper.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\nimport { getSectorCornerRadius } from '../helper/sectorHelper.js';\nimport { saveOldStyle } from '../../animation/basicTransition.js';\nimport { getBasicPieLayout, getSeriesLayoutData } from './pieLayout.js';\n/**\n * Piece of pie including Sector, Label, LabelLine\n */\nvar PiePiece = /** @class */function (_super) {\n __extends(PiePiece, _super);\n function PiePiece(data, idx, startAngle) {\n var _this = _super.call(this) || this;\n _this.z2 = 2;\n var text = new graphic.Text();\n _this.setTextContent(text);\n _this.updateData(data, idx, startAngle, true);\n return _this;\n }\n PiePiece.prototype.updateData = function (data, idx, startAngle, firstCreate) {\n var sector = this;\n var seriesModel = data.hostModel;\n var itemModel = data.getItemModel(idx);\n var emphasisModel = itemModel.getModel('emphasis');\n var layout = data.getItemLayout(idx);\n // cornerRadius & innerCornerRadius doesn't exist in the item layout. Use `0` if null value is specified.\n // see `setItemLayout` in `pieLayout.ts`.\n var sectorShape = extend(getSectorCornerRadius(itemModel.getModel('itemStyle'), layout, true), layout);\n // Ignore NaN data.\n if (isNaN(sectorShape.startAngle)) {\n // Use NaN shape to avoid drawing shape.\n sector.setShape(sectorShape);\n return;\n }\n if (firstCreate) {\n sector.setShape(sectorShape);\n var animationType = seriesModel.getShallow('animationType');\n if (seriesModel.ecModel.ssr) {\n // Use scale animation in SSR mode(opacity?)\n // Because CSS SVG animation doesn't support very customized shape animation.\n graphic.initProps(sector, {\n scaleX: 0,\n scaleY: 0\n }, seriesModel, {\n dataIndex: idx,\n isFrom: true\n });\n sector.originX = sectorShape.cx;\n sector.originY = sectorShape.cy;\n } else if (animationType === 'scale') {\n sector.shape.r = layout.r0;\n graphic.initProps(sector, {\n shape: {\n r: layout.r\n }\n }, seriesModel, idx);\n }\n // Expansion\n else {\n if (startAngle != null) {\n sector.setShape({\n startAngle: startAngle,\n endAngle: startAngle\n });\n graphic.initProps(sector, {\n shape: {\n startAngle: layout.startAngle,\n endAngle: layout.endAngle\n }\n }, seriesModel, idx);\n } else {\n sector.shape.endAngle = layout.startAngle;\n graphic.updateProps(sector, {\n shape: {\n endAngle: layout.endAngle\n }\n }, seriesModel, idx);\n }\n }\n } else {\n saveOldStyle(sector);\n // Transition animation from the old shape\n graphic.updateProps(sector, {\n shape: sectorShape\n }, seriesModel, idx);\n }\n sector.useStyle(data.getItemVisual(idx, 'style'));\n setStatesStylesFromModel(sector, itemModel);\n var midAngle = (layout.startAngle + layout.endAngle) / 2;\n var offset = seriesModel.get('selectedOffset');\n var dx = Math.cos(midAngle) * offset;\n var dy = Math.sin(midAngle) * offset;\n var cursorStyle = itemModel.getShallow('cursor');\n cursorStyle && sector.attr('cursor', cursorStyle);\n this._updateLabel(seriesModel, data, idx);\n sector.ensureState('emphasis').shape = extend({\n r: layout.r + (emphasisModel.get('scale') ? emphasisModel.get('scaleSize') || 0 : 0)\n }, getSectorCornerRadius(emphasisModel.getModel('itemStyle'), layout));\n extend(sector.ensureState('select'), {\n x: dx,\n y: dy,\n shape: getSectorCornerRadius(itemModel.getModel(['select', 'itemStyle']), layout)\n });\n extend(sector.ensureState('blur'), {\n shape: getSectorCornerRadius(itemModel.getModel(['blur', 'itemStyle']), layout)\n });\n var labelLine = sector.getTextGuideLine();\n var labelText = sector.getTextContent();\n labelLine && extend(labelLine.ensureState('select'), {\n x: dx,\n y: dy\n });\n // TODO: needs dx, dy in zrender?\n extend(labelText.ensureState('select'), {\n x: dx,\n y: dy\n });\n toggleHoverEmphasis(this, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled'));\n };\n PiePiece.prototype._updateLabel = function (seriesModel, data, idx) {\n var sector = this;\n var itemModel = data.getItemModel(idx);\n var labelLineModel = itemModel.getModel('labelLine');\n var style = data.getItemVisual(idx, 'style');\n var visualColor = style && style.fill;\n var visualOpacity = style && style.opacity;\n setLabelStyle(sector, getLabelStatesModels(itemModel), {\n labelFetcher: data.hostModel,\n labelDataIndex: idx,\n inheritColor: visualColor,\n defaultOpacity: visualOpacity,\n defaultText: seriesModel.getFormattedLabel(idx, 'normal') || data.getName(idx)\n });\n var labelText = sector.getTextContent();\n // Set textConfig on sector.\n sector.setTextConfig({\n // reset position, rotation\n position: null,\n rotation: null\n });\n // Make sure update style on labelText after setLabelStyle.\n // Because setLabelStyle will replace a new style on it.\n labelText.attr({\n z2: 10\n });\n var labelPosition = seriesModel.get(['label', 'position']);\n if (labelPosition !== 'outside' && labelPosition !== 'outer') {\n sector.removeTextGuideLine();\n } else {\n var polyline = this.getTextGuideLine();\n if (!polyline) {\n polyline = new graphic.Polyline();\n this.setTextGuideLine(polyline);\n }\n // Default use item visual color\n setLabelLineStyle(this, getLabelLineStatesModels(itemModel), {\n stroke: visualColor,\n opacity: retrieve3(labelLineModel.get(['lineStyle', 'opacity']), visualOpacity, 1)\n });\n }\n };\n return PiePiece;\n}(graphic.Sector);\n// Pie view\nvar PieView = /** @class */function (_super) {\n __extends(PieView, _super);\n function PieView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ignoreLabelLineUpdate = true;\n return _this;\n }\n PieView.prototype.render = function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var oldData = this._data;\n var group = this.group;\n var startAngle;\n // First render\n if (!oldData && data.count() > 0) {\n var shape = data.getItemLayout(0);\n for (var s = 1; isNaN(shape && shape.startAngle) && s < data.count(); ++s) {\n shape = data.getItemLayout(s);\n }\n if (shape) {\n startAngle = shape.startAngle;\n }\n }\n // remove empty-circle if it exists\n if (this._emptyCircleSector) {\n group.remove(this._emptyCircleSector);\n }\n // when all data are filtered, show lightgray empty circle\n if (data.count() === 0 && seriesModel.get('showEmptyCircle')) {\n var layoutData = getSeriesLayoutData(seriesModel);\n var sector = new graphic.Sector({\n shape: extend(getBasicPieLayout(seriesModel, api), layoutData)\n });\n sector.useStyle(seriesModel.getModel('emptyCircleStyle').getItemStyle());\n this._emptyCircleSector = sector;\n group.add(sector);\n }\n data.diff(oldData).add(function (idx) {\n var piePiece = new PiePiece(data, idx, startAngle);\n data.setItemGraphicEl(idx, piePiece);\n group.add(piePiece);\n }).update(function (newIdx, oldIdx) {\n var piePiece = oldData.getItemGraphicEl(oldIdx);\n piePiece.updateData(data, newIdx, startAngle);\n piePiece.off('click');\n group.add(piePiece);\n data.setItemGraphicEl(newIdx, piePiece);\n }).remove(function (idx) {\n var piePiece = oldData.getItemGraphicEl(idx);\n graphic.removeElementWithFadeOut(piePiece, seriesModel, idx);\n }).execute();\n labelLayout(seriesModel);\n // Always use initial animation.\n if (seriesModel.get('animationTypeUpdate') !== 'expansion') {\n this._data = data;\n }\n };\n PieView.prototype.dispose = function () {};\n PieView.prototype.containPoint = function (point, seriesModel) {\n var data = seriesModel.getData();\n var itemLayout = data.getItemLayout(0);\n if (itemLayout) {\n var dx = point[0] - itemLayout.cx;\n var dy = point[1] - itemLayout.cy;\n var radius = Math.sqrt(dx * dx + dy * dy);\n return radius <= itemLayout.r && radius >= itemLayout.r0;\n }\n };\n PieView.type = 'pie';\n return PieView;\n}(ChartView);\nexport default PieView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n/**\n * LegendVisualProvider is an bridge that pick encoded color from data and\n * provide to the legend component.\n */\nvar LegendVisualProvider = /** @class */function () {\n function LegendVisualProvider(\n // Function to get data after filtered. It stores all the encoding info\n getDataWithEncodedVisual,\n // Function to get raw data before filtered.\n getRawData) {\n this._getDataWithEncodedVisual = getDataWithEncodedVisual;\n this._getRawData = getRawData;\n }\n LegendVisualProvider.prototype.getAllNames = function () {\n var rawData = this._getRawData();\n // We find the name from the raw data. In case it's filtered by the legend component.\n // Normally, the name can be found in rawData, but can't be found in filtered data will display as gray.\n return rawData.mapArray(rawData.getName);\n };\n LegendVisualProvider.prototype.containName = function (name) {\n var rawData = this._getRawData();\n return rawData.indexOfName(name) >= 0;\n };\n LegendVisualProvider.prototype.indexOfName = function (name) {\n // Only get data when necessary.\n // Because LegendVisualProvider constructor may be new in the stage that data is not prepared yet.\n // Invoking Series#getData immediately will throw an error.\n var dataWithEncodedVisual = this._getDataWithEncodedVisual();\n return dataWithEncodedVisual.indexOfName(name);\n };\n LegendVisualProvider.prototype.getItemVisual = function (dataIndex, key) {\n // Get encoded visual properties from final filtered data.\n var dataWithEncodedVisual = this._getDataWithEncodedVisual();\n return dataWithEncodedVisual.getItemVisual(dataIndex, key);\n };\n return LegendVisualProvider;\n}();\nexport default LegendVisualProvider;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport createSeriesDataSimply from '../helper/createSeriesDataSimply.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as modelUtil from '../../util/model.js';\nimport { getPercentSeats } from '../../util/number.js';\nimport { makeSeriesEncodeForNameBased } from '../../data/helper/sourceHelper.js';\nimport LegendVisualProvider from '../../visual/LegendVisualProvider.js';\nimport SeriesModel from '../../model/Series.js';\nvar innerData = modelUtil.makeInner();\nvar PieSeriesModel = /** @class */function (_super) {\n __extends(PieSeriesModel, _super);\n function PieSeriesModel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @overwrite\n */\n PieSeriesModel.prototype.init = function (option) {\n _super.prototype.init.apply(this, arguments);\n // Enable legend selection for each data item\n // Use a function instead of direct access because data reference may changed\n this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));\n this._defaultLabelLine(option);\n };\n /**\n * @overwrite\n */\n PieSeriesModel.prototype.mergeOption = function () {\n _super.prototype.mergeOption.apply(this, arguments);\n };\n /**\n * @overwrite\n */\n PieSeriesModel.prototype.getInitialData = function () {\n return createSeriesDataSimply(this, {\n coordDimensions: ['value'],\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n });\n };\n /**\n * @overwrite\n */\n PieSeriesModel.prototype.getDataParams = function (dataIndex) {\n var data = this.getData();\n // update seats when data is changed\n var dataInner = innerData(data);\n var seats = dataInner.seats;\n if (!seats) {\n var valueList_1 = [];\n data.each(data.mapDimension('value'), function (value) {\n valueList_1.push(value);\n });\n seats = dataInner.seats = getPercentSeats(valueList_1, data.hostModel.get('percentPrecision'));\n }\n var params = _super.prototype.getDataParams.call(this, dataIndex);\n // seats may be empty when sum is 0\n params.percent = seats[dataIndex] || 0;\n params.$vars.push('percent');\n return params;\n };\n PieSeriesModel.prototype._defaultLabelLine = function (option) {\n // Extend labelLine emphasis\n modelUtil.defaultEmphasis(option, 'labelLine', ['show']);\n var labelLineNormalOpt = option.labelLine;\n var labelLineEmphasisOpt = option.emphasis.labelLine;\n // Not show label line if `label.normal.show = false`\n labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;\n labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;\n };\n PieSeriesModel.type = 'series.pie';\n PieSeriesModel.defaultOption = {\n // zlevel: 0,\n z: 2,\n legendHoverLink: true,\n colorBy: 'data',\n // 默认全局居中\n center: ['50%', '50%'],\n radius: [0, '75%'],\n // 默认顺时针\n clockwise: true,\n startAngle: 90,\n endAngle: 'auto',\n padAngle: 0,\n // 最小角度改为0\n minAngle: 0,\n // If the angle of a sector less than `minShowLabelAngle`,\n // the label will not be displayed.\n minShowLabelAngle: 0,\n // 选中时扇区偏移量\n selectedOffset: 10,\n // 选择模式,默认关闭,可选single,multiple\n // selectedMode: false,\n // 南丁格尔玫瑰图模式,'radius'(半径) | 'area'(面积)\n // roseType: null,\n percentPrecision: 2,\n // If still show when all data zero.\n stillShowZeroSum: true,\n // cursor: null,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n width: null,\n height: null,\n label: {\n // color: 'inherit',\n // If rotate around circle\n rotate: 0,\n show: true,\n overflow: 'truncate',\n // 'outer', 'inside', 'center'\n position: 'outer',\n // 'none', 'labelLine', 'edge'. Works only when position is 'outer'\n alignTo: 'none',\n // Closest distance between label and chart edge.\n // Works only position is 'outer' and alignTo is 'edge'.\n edgeDistance: '25%',\n // Works only position is 'outer' and alignTo is not 'edge'.\n bleedMargin: 10,\n // Distance between text and label line.\n distanceToLabelLine: 5\n // formatter: 标签文本格式器,同 tooltip.formatter,不支持异步回调\n // 默认使用全局文本样式,详见 textStyle\n // distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数\n },\n\n // Enabled when label.normal.position is 'outer'\n labelLine: {\n show: true,\n // 引导线两段中的第一段长度\n length: 15,\n // 引导线两段中的第二段长度\n length2: 15,\n smooth: false,\n minTurnAngle: 90,\n maxSurfaceAngle: 90,\n lineStyle: {\n // color: 各异,\n width: 1,\n type: 'solid'\n }\n },\n itemStyle: {\n borderWidth: 1,\n borderJoin: 'round'\n },\n showEmptyCircle: true,\n emptyCircleStyle: {\n color: 'lightgray',\n opacity: 1\n },\n labelLayout: {\n // Hide the overlapped label.\n hideOverlap: true\n },\n emphasis: {\n scale: true,\n scaleSize: 5\n },\n // If use strategy to avoid label overlapping\n avoidLabelOverlap: true,\n // Animation type. Valid values: expansion, scale\n animationType: 'expansion',\n animationDuration: 1000,\n // Animation type when update. Valid values: transition, expansion\n animationTypeUpdate: 'transition',\n animationEasingUpdate: 'cubicInOut',\n animationDurationUpdate: 500,\n animationEasing: 'cubicInOut'\n };\n return PieSeriesModel;\n}(SeriesModel);\nexport default PieSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { isNumber } from 'zrender/lib/core/util.js';\nexport default function negativeDataFilter(seriesType) {\n return {\n seriesType: seriesType,\n reset: function (seriesModel, ecModel) {\n var data = seriesModel.getData();\n data.filterSelf(function (idx) {\n // handle negative value condition\n var valueDim = data.mapDimension('value');\n var curValue = data.get(valueDim, idx);\n if (isNumber(curValue) && !isNaN(curValue) && curValue < 0) {\n return false;\n }\n return true;\n });\n }\n };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { createLegacyDataSelectAction } from '../../legacy/dataSelectAction.js';\nimport pieLayout from '../pie/pieLayout.js';\nimport dataFilter from '../../processor/dataFilter.js';\nimport { curry } from 'zrender/lib/core/util.js';\nimport PieView from './PieView.js';\nimport PieSeriesModel from './PieSeries.js';\nimport negativeDataFilter from '../../processor/negativeDataFilter.js';\nexport function install(registers) {\n registers.registerChartView(PieView);\n registers.registerSeriesModel(PieSeriesModel);\n createLegacyDataSelectAction('pie', registers.registerAction);\n registers.registerLayout(curry(pieLayout, 'pie'));\n registers.registerProcessor(dataFilter('pie'));\n registers.registerProcessor(negativeDataFilter('pie'));\n}","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./top_5_articles.vue?vue&type=style&index=0&id=3352d234&prod&scoped=true&lang=css\""],"sourceRoot":""}