vendor.js.map
808.7 KB
{"version":3,"sources":["webpack:///./node_modules/@dcloudio/uni-mp-weixin/dist/index.js","webpack:///./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/@dcloudio/vue-cli-plugin-uni/packages/mp-vue/dist/mp.runtime.esm.js","webpack:///G:/项目/投资管理项目/touzixiaohcengxu/touziprogram/components/u-charts.js","webpack:///G:/项目/投资管理项目/touzixiaohcengxu/touziprogram/common/checker.js","webpack:///(webpack)/buildin/global.js","webpack:///G:/项目/投资管理项目/touzixiaohcengxu/touziprogram/common/help.js","webpack:///./node_modules/@dcloudio/uni-stat/dist/index.js","webpack:///G:/项目/投资管理项目/touzixiaohcengxu/touziprogram/pages.json"],"names":["_toString","Object","prototype","toString","hasOwnProperty","isFn","fn","isStr","str","isPlainObject","obj","call","hasOwn","key","noop","cached","cache","create","cachedFn","hit","camelizeRE","camelize","replace","_","c","toUpperCase","HOOKS","globalInterceptors","scopedInterceptors","mergeHook","parentVal","childVal","res","concat","Array","isArray","dedupeHooks","hooks","i","length","indexOf","push","removeHook","hook","index","splice","mergeInterceptorHook","interceptor","option","keys","forEach","removeInterceptorHook","addInterceptor","method","removeInterceptor","wrapperHook","data","isPromise","then","queue","promise","Promise","resolve","callback","wrapperOptions","options","name","oldCallback","callbackInterceptor","wrapperReturnValue","returnValue","returnValueHooks","getApiInterceptorHooks","slice","scopedInterceptor","invokeApi","api","params","invoke","promiseInterceptor","catch","SYNC_API_RE","CONTEXT_API_RE","CONTEXT_API_RE_EXC","ASYNC_API","CALLBACK_API_RE","isContextApi","test","isSyncApi","isCallbackApi","handlePromise","err","shouldPromise","finally","constructor","value","reason","promisify","promiseApi","success","fail","complete","reject","assign","EPS","BASE_DEVICE_WIDTH","isIOS","deviceWidth","deviceDPR","checkDeviceWidth","wx","getSystemInfoSync","platform","pixelRatio","windowWidth","upx2px","number","newDeviceWidth","Number","result","Math","floor","interceptors","baseApi","freeze","__proto__","previewImage","args","fromArgs","currentIndex","parseInt","current","isNaN","urls","len","filter","item","indicator","loop","addSafeAreaInsets","safeArea","safeAreaInsets","top","left","right","bottom","windowHeight","protocols","getSystemInfo","todos","canIUses","CALLBACKS","processCallback","methodName","processReturnValue","processArgs","argsOption","keepFromArgs","toArgs","keyOption","console","warn","keepReturnValue","wrapper","protocol","error","arg1","arg2","apply","todoApis","TODOS","createTodoApi","todoApi","errMsg","providers","oauth","share","payment","getProvider","service","provider","extraApi","getEmitter","getUniEmitter","Emitter","Vue","ctx","$on","arguments","$off","$once","$emit","eventApi","MPPage","Page","MPComponent","Component","customizeRE","customize","initTriggerEvent","mpInstance","canIUse","oldTriggerEvent","triggerEvent","event","initHook","oldHook","PAGE_EVENT_HOOKS","initMocks","vm","mocks","$mp","mpType","mock","hasHook","vueOptions","default","extendOptions","super","mixins","find","mixin","initHooks","mpOptions","$vm","__call_hook","initVueComponent","VueComponent","extend","initSlots","vueSlots","$slots","slotName","$scopedSlots","initVueIds","vueIds","split","_$vueId","_$vuePid","initData","context","methods","e","process","VUE_APP_DEBUG","JSON","parse","stringify","__lifecycle_hooks__","PROP_TYPES","String","Boolean","createObserver","observer","newVal","oldVal","initBehaviors","initBehavior","vueBehaviors","behaviors","vueExtends","extends","vueMixins","vueProps","props","behavior","type","Date","properties","initProperties","vueMixin","parsePropType","defaultValue","file","isBehavior","vueId","setData","opts","wrapper$1","mp","stopPropagation","preventDefault","target","detail","markerId","getExtraValue","dataPathsArray","dataPathArray","dataPath","propPath","valuePath","vFor","__get_value","isInteger","vForItem","vForKey","processEventExtra","extra","extraObj","getObjByArray","arr","element","processEventArgs","isCustom","isCustomMPEvent","currentTarget","dataset","comType","__args__","ret","arg","ONCE","CUSTOM","isMatchEventType","eventType","optType","handleEvent","eventOpts","eventOpt","eventsArray","charAt","isOnce","eventArray","handlerCtx","$options","generic","$parent","handler","Error","once","parseBaseApp","initRefs","store","$store","mpHost","beforeCreate","$scope","appOptions","onLaunch","app","globalData","_isMounted","findVmByVueId","vuePid","$children","childVm","parentVm","Behavior","isPage","route","initRelation","defineProperty","get","$refs","components","selectAllComponents","component","ref","forComponents","handleLink","parent","parseApp","createApp","App","parseBaseComponent","vueComponentOptions","multipleSlots","addGlobalClass","componentOptions","__file","lifetimes","attached","propsData","$mount","ready","detached","$destroy","pageLifetimes","show","hide","resize","size","__l","__e","wxsCallMethods","callMethod","parseComponent","hooks$1","parseBasePage","vuePageOptions","pageOptions","onLoad","query","parsePage","createPage","createComponent","canIUseApi","apiName","uni","Proxy","set","uni$1","config","yAxisWidth","yAxisSplit","xAxisHeight","xAxisLineHeight","legendHeight","yAxisTitleWidth","padding","rotate","columePadding","fontSize","dataPointShape","colors","pieChartLinePadding","pieChartTextPadding","xAxisTextPadding","titleColor","titleFontSize","subtitleColor","subtitleFontSize","toolTipPadding","toolTipBackground","toolTipOpacity","toolTipLineHeight","radarLabelTextMargin","gaugeLabelTextMargin","varArgs","TypeError","deepAssign","obj1","obj2","val","util","toFixed","num","limit","isFloat","approximatelyEqual","num1","num2","abs","isSameSign","isSameXCoordinateArea","p1","p2","x","isCollision","end","start","width","y","height","flag","getH5Offset","changedTouches","offsetX","offsetY","hexToRgb","hexValue","opc","rgx","hex","m","r","g","b","rgb","exec","findRange","multiple","ceil","calCandleMA","dayArr","nameArr","colorArr","kdata","seriesTemp","k","seriesItem","color","sum","j","calValidDistance","self","distance","chartData","dataChartAreaWidth","area","dataChartWidth","eachSpacing","xAxisData","xAxisPoints","validDistance","trigger","isInAngleRange","angle","startAngle","endAngle","adjust","PI","calRotateTranslate","h","xv","yv","transX","sqrt","transY","createCurveControlPoints","points","isNotMiddlePoint","max","min","a","pAx","pAy","pBx","pBy","last","ctrA","ctrB","convertCoordinateOrigin","center","avoidCollision","fillSeries","series","map","pointShape","legendShape","getDataRange","minData","maxData","range","minRange","maxRange","measureText","text","undefined","dataCombine","reduce","dataCombineStack","getTouches","touches","clientX","pageY","offsetTop","getSeriesDataItem","style","disableLegend","format","getMaxTextListLength","list","lengthList","getRadarCoordinateSeries","eachAngle","CoordinateSeries","getToolTipData","seriesData","calPoints","categories","textList","titleText","validCalPoints","offset","round","getMixToolTipData","getCandleToolTipData","upColor","upFill","downColor","downFill","text0","text1","text2","text3","text4","filterSeries","tempSeries","findCurrentIndex","currentPoints","spacing","xAxis","boundaryGap","isInExactChartArea","findLegendIndex","legendData","isInExactLegendArea","findRadarChartCurrentIndex","radarData","count","eachAngleArea","isInExactPieChartArea","radius","fixAngle","atan2","angleList","rangeStart","rangeEnd","findFunnelChartCurrentIndex","funnelData","funnelArea","findWordChartCurrentIndex","wordData","findMapChartCurrentIndex","cData","mapData","tmp","pointToCoordinate","bounds","scale","xoffset","yoffset","poi","geometry","coordinates","isPoiWithinPoly","findPieChartCurrentIndex","pieData","_start_","_proportion_","pow","splitPoints","newPoints","items","calLegendData","wholeWidth","wholeHeight","widthArr","heightArr","legend","margin","shapeWidth","shapeRight","lineHeight","position","legendList","widthCount","widthCountArr","currentRow","itemWidth","itemGap","legendWidth","float","maxHeight","maxLength","lineNum","temp","maxWidth","calCategoriesData","categoriesTextLenth","maxTextLength","rotateLabel","sin","getXAxisTextList","sorted","subitem","rangeSpan","dataRange","eachRange","splitNumber","calXAxisData","ranges","rangesFormat","xAxisScaleValues","getXAxisPoints","textLength","disabled","getRadarDataPoints","radarOption","radar","each","listItem","proportion","cos","getPieDataPoints","_radius_","getFunnelDataPoints","sort","reverse","getRoseDataPoints","minRadius","dataArr","radiusLength","_rose_proportion_","getArcbarDataPoints","arcbarOption","totalAngle","getGaugeAxisPoints","tempStartAngle","_startAngle_","_endAngle_","getGaugeDataPoints","gaugeOption","pointer","_oldAngle_","oldAngle","oldData","getPieTextMaxLength","fixColumeData","columnLen","column","fixColumeMeterData","border","fixColumeStackData","indexn","spacingValid","dataCount","enableScroll","itemCount","startX","endX","getCandleDataPoints","validHeight","cPoints","indexs","point","getDataPoints","validWidth","xranges","xminRange","xmaxRange","shift","pop","getStackDataPoints","seriesIndex","stackSeries","value0","height0","heightc","y0","getYAxisTextList","stack","yAxis","calYAxisData","columnstyle","YLength","newSeries","rangesArr","rangesFormatArr","yAxisWidthArr","yData","yAxisFontSizes","calibration","yAxisFontSize","calTooltipYAxisData","yAxisData","minAxis","maxVal","minVal","calMarkLineData","yAxisIndex","contextRotate","rotateLock","translate","_rotate_","drawPointShape","shape","beginPath","dataPointShapeType","setStrokeStyle","setFillStyle","background","setLineWidth","moveTo","lineTo","arc","rect","closePath","fill","stroke","drawRingTitle","titlefontSize","title","subtitlefontSize","subtitle","titleFontColor","subtitleFontColor","titleHeight","subtitleHeight","textWidth","startY","setFontSize","fillText","_textWidth","_startX","_startY","drawPointText","textSize","textColor","formatVal","drawGaugeLabel","centerPosition","splitAngle","splitLine","totalNumber","endNumber","startNumber","nowAngle","nowNumber","pos","labelText","labelFormat","labelColor","drawRadarLabel","posRelativeCanvas","drawPieText","lineRadius","textObjectCollection","lastTextObject","seriesConvert","orginX1","orginY1","orginX2","orginY2","orginX3","orginY3","textObject","lineStart","lineEnd","lineStartPoistion","lineEndPoistion","textPosition","curveStartX","textStartX","quadraticCurveTo","drawToolTipSplitLine","toolTipOption","tooltip","gridType","dashLength","endY","setLineDash","gridColor","xAxisLabel","textX","textY","labelBgColor","labelBgOpacity","labelFontColor","fontColor","drawMarkLine","markLineOption","markLine","lineColor","showLabel","bgStartX","bgEndX","bgWidth","drawToolTipHorizentalLine","yAxisLabel","tStartLeft","tStartRight","drawToolTipSplitArea","activeBgColor","activeBgOpacity","drawToolTip","showBox","bgColor","bgOpacity","legendMarginRight","arrowWidth","isOverRightBorder","toolTipWidth","toolTipHeight","_scrollDistance_","fillRect","drawYAxisTitle","save","restore","drawColumnDataPoints","columnOption","meter","fillColor","leftNum","rightNum","eachSeries","tooltipPoints","dataLabel","drawCandleDataPoints","seriesMA","candleOption","average","candle","upLine","downLine","day","leftSpace","rightSpace","splitPointList","startPoint","ctrlPoint","bezierCurveTo","drawAreaDataPoints","areaOption","opacity","addLine","gradient","createLinearGradient","addColorStop","firstPoint","lastPoint","lineType","drawLineDataPoints","lineOption","line","drawMixDataPoints","columnIndex","columnLength","addPoint","drawToolTipBridge","horizentalLine","drawXAxis","scrollShow","scrollY","scrollScreenWidth","scrollTotalWidth","scrollWidth","scrollLeft","setLineCap","scrollBackgroundColor","scrollColor","disableGrid","gridEval","maxXAxisListLength","labelCount","ratio","newCategories","cgLength","xAxisFontSize","_xAxisTextAngle_","scrollHeight","_calRotateTranslate","axisLine","axisLineColor","drawYAxisGrid","xAxiseachSpacing","TotalWidth","drawYAxis","fillEndY","showTitle","drawLegend","legendArea","borderWidth","borderColor","backgroundColor","itemList","listIndex","hiddenColor","fontTrans","drawPieDataPoints","pieOption","activeOpacity","activeRadius","offsetAngle","labelWidth","ringWidth","pie","_pieTextMaxLength_","lineJoin","innerPieWidth","valid","drawRoseDataPoints","roseOption","rose","drawArcbarDataPoints","gap","arcbar","drawGaugeDataPoints","fixRadius","childNumber","childWidth","gauge","innerRadius","pieRadius","childAngle","proc","pointerRadius","gradient3","eachCategories","childendX","drawRadarDataPoints","gridCount","coordinateAngle","_loop","startPos","radarDataPoints","normalInt","iter","random","collisionNew","isIn","getBoundingBox","coords","xMin","xMax","yMin","yMax","coorda","longitude","latitude","coordinateToPoint","pointY","pointX","isRayIntersectsSegment","s_poi","e_poi","xseg","poly","sinsc","epoly","drawMapDataPoints","mapOption","fillOpacity","activeBorderColor","activeFillColor","activeFillOpacity","xScale","yScale","clearRect","centerPoint","centroid","draw","getWordCloudPoint","tHeight","tWidth","breaknum","Spin","isSpin","areav","drawWordCloudDataPoints","wordOption","autoColors","word","wordCloudData","strokeText","drawFunnelDataPoints","funnelOption","activeWidth","labelAlign","funnel","drawFunnelText","drawCanvas","Timing","easeIn","easeOut","easeInOut","linear","Animation","isStop","duration","timing","delay","createAnimationFrame","setTimeout","step","timeStamp","requestAnimationFrame","animationFrame","startTimeStamp","_step","timestamp","onProcess","onAnimationFinish","timingFunction","bind","stop","drawCharts","_this","animation","animationInstance","_series_","_calLegendData","_calYAxisData","maxTitleHeight","rightIndex","leftIndex","_calCategoriesData","categoriesData","scrollAlign","offsetLeft","totalWidth","screenWidth","scrollOption","currentOffset","startTouchX","lastMoveTime","updateData","_drawLineDataPoints","enableMarkLine","_drawMixDataPoints","_drawColumnDataPoints","_drawAreaDataPoints","arcbarData","gaugeData","_drawCandleDataPoints","Event","events","addEventListener","listener","_len","_key","Charts","config$$1","tempWidth","tempHeight","$this","createCanvasContext","canvasId","scrollPosition","_getXAxisPoints0","zoom","log","centerLeft","MaxLeft","stopAnimation","getCurrentDataIndex","_touches$","getLegendDataIndex","touchLegend","showToolTip","_getToolTipData","_getMixToolTipData","scrollStart","scroll","now","Limit","touchMoveLimit","currMoveTime","_distance","scrollEnd","_scrollOption","module","exports","isJSON","isNumber","checkVal","reg","change","counter","STAT_VERSION","version","STAT_URL","STAT_H5_URL","PAGE_PVER_TIME","APP_PVER_TIME","OPERATING_TIME","UUID_KEY","UUID_VALUE","getUuid","uuid","getPlatformName","plus","runtime","getDCloudId","getStorageSync","setStorageSync","getSgin","statData","sortArr","sgin","sginStr","sign","substr","getSplicing","getTime","platformList","getPackName","packName","getAccountInfoSync","miniProgram","appId","getVersion","getChannel","platformName","channel","getScene","scene","getLaunchOptionsSync","First__Visit__Time__KEY","Last__Visit__Time__KEY","getFirstVisitTime","timeStorge","time","removeStorageSync","getLastVisitTime","PAGE_RESIDENCE_TIME","First_Page_residence_time","Last_Page_residence_time","setPageResidenceTime","getPageResidenceTime","TOTAL__VISIT__COUNT","getTotalVisitCount","GetEncodeURIComponentOptions","prop","encodeURIComponent","Set__First__Time","Set__Last__Time","getFirstTime","getLastTime","getResidenceTime","residenceTime","overtime","getRoute","pages","getCurrentPages","page","_self","is","getPageRoute","_query","getPageTypes","eventName","PagesJson","require","statConfig","resultOptions","Util","_retry","_platform","_navigationBarTitle","report","lt","_operatingTime","_reportingRequestData","__prevent_triggering","__licationHide","__licationShow","_lastPageRoute","ut","mpn","ak","appid","usv","v","ch","cn","pn","ct","t","tt","p","brand","md","model","sv","system","mpsdk","SDKVersion","mpv","lang","language","pr","ww","wh","sw","sh","screenHeight","path","sc","_sendReportRequest","_sendHideRequest","urlref","urlref_ts","routepath","titleNView","navigationBarTitleText","_sendPageRequest","url","_sendEventRequest","fvts","lvts","tvc","getProperty","getNetworkInfo","opt","request","e_n","e_v","getNetworkType","net","networkType","getLocation","wgtinfo","geocode","address","country","province","city","lat","lng","ttn","ttpj","ttc","requestData","uniStatData","firstArr","contentArr","lastArr","rd","elm","newData","optionsData","requests","imageRequest","_sendRequest","image","Image","src","Stat","instance","addInterceptorInit","interceptLogin","interceptShare","interceptRequestPayment","_login","_share","_payment","_pageShow","_applicationShow","_pageHide","_applicationHide","em","info","emVal","message","stat","getInstance","isHide","lifecycle","onReady","load","onShareAppMessage","oldShareAppMessage","onShow","onHide","onUnload","onError","main"],"mappings":"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CA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClHA;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,sBAAsB,+BAA+B;AACrD,sBAAsB,iBAAiB;AACvC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iCAAiC,EAAE;AACrF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,cAAc;;AAE3C;;AAEA;AACA;AACA;AACA,6BAA6B,UAAU;;AAEvC;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,aAAoB;;AAErC;AACA;AACA;AACA,YAAY,aAAoB;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG;AACR;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA,oCAAoC;AACpC;;AAEA,IAAI,IAAqC;AACzC;AACA;AACA,iCAAiC;AACjC,uCAAuC,wBAAwB,EAAE;AACjE,0BAA0B;;AAE1B;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,YAAY;AACpC,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,wCAAwC,EAAE;AAC1C;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,+BAA+B,oBAAoB,EAAE;AACrD;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,SAAS,qBAAqB;;AAExD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD,iCAAiC,sBAAsB;AACvD;AACA,kBAAkB;AAClB,MAAM,IAAqC;AAC3C;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAoB;AACtC;AACA;AACA,mBAAmB;AACnB;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,OAAO,UAAU,IAAqC;AACtD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,GAAG,UAAU,IAAqC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,mBAAmB;AACtC,+BAA+B;AAC/B;AACA,GAAG;AACH;AACA;AACA;AACA,kBAAkB,YAAY;AAC9B,WAAW;AACX;AACA,GAAG,UAAU,IAAqC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,oCAAoC;AACpC;AACA,qCAAqC;AACrC;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAEQ;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,6CAA6C,qCAAqC,EAAE;AACpF;;AAEA;AACA;AACA;;AAEA,oCAAoC,yCAAyC,EAAE;AAC/E;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kBAAkB;AAC3C;AACA;AACA,4BAA4B;AAC5B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sDAAsD,EAAE;AACtF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;;AAEA;;AAEA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iCAAiC;AACnE,cAAc,6BAA6B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC,iCAAiC;AACnE,cAAc,6BAA6B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,yBAAyB;AAC1C,GAAG;AACH;AACA;AACA,iBAAiB,+BAA+B;AAChD;AACA;;AAEA;AACA;;AAEA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO,MAAM,EAEN;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,IAAqC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,sBAAsB,mBAAmB;AACzC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,OAAO;AACtC,uCAAuC;AACvC;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB,sCAAsC;AACtC;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,OAAO;AACzC;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,4CAA4C,eAAe;AAC3D,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,kDAAkD;AAClD,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,KAAK;AACL,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA,KAAK,UAAU,KAAqC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,qCAAqC,gEAAgE;AACrG;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,4BAA4B,+BAA+B;AAC3D,4BAA4B,+BAA+B;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C,kDAAkD;AAClD;AACA;AACA,mCAAmC;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sEAAsE;;AAEtE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK,uFAAuF;AAC5F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG,+BAA+B;AAClC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,oBAAoB;AACxC,sBAAsB,4BAA4B;AAClD;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,mBAAmB;AACnB,yBAAyB;AACzB;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,6CAA6C;AAC9E;AACA;AACA,6CAA6C,4CAA4C;;AAEzF;AACA;AACA;;AAEA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,GAAG,MAAM,EAGN;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK,2CAA2C,8BAA8B,EAAE;;AAEhF;AACA,wCAAwC,OAAO;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,KAAqC;AACrD;AACA,oBAAoB,SAAI;AACxB;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,SAAS;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;;AAE1B,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,MAAM,IAAqC;AAC3C;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0BAA0B;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB,EAAE;;AAEpD;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,oBAAoB;AACpB;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,oBAAoB,KAAqC;AACzD;AACA,MAAM,SAAE;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C,qBAAqB,+BAA+B;AACpD;AACA;AACA,GAAG;AACH,yBAAyB;AACzB;AACA,sBAAsB,iCAAiC;AACvD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK,MAAM,EAEN;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK,UAAU,IAAqC;AACpD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,8BAA8B;AAC9B,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA,KAAK,MAAM,EAEN;AACL;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA,sCAAsC;AACtC,8C;;AAEA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;;AAEA;AACA,QAAQ,KAAqC;AAC7C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,YAAY,KAAqC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA,0CAA0C,2BAA2B,EAAE;AACvE,KAAK;AACL;AACA,0CAA0C,4BAA4B,EAAE;AACxE,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,YAAY,gFAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,gCAAgC,EAAE;AAC5E;;AAEA;AACA;AACA;AACA;AACA,WAAW,gFAAW;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,WAAW,gFAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,0CAA0C;;AAE1C;AACA;AACA;AACA,GAAG;AACH;AACA,sCAAsC;AACtC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA,KAAK;AACL;AACA;AACA,UAAU,gFAAW;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,qDAAqD,EAAE,SAAS;AACtH;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAiC,OAAO;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEe,kEAAG,EAAC;;;;;;;;;;;;;;AC14LnB;;;;;;;;;;;;;;;;;AAiBa;;AAEb,IAAIC,MAAM,GAAG;AACXC,YAAU,EA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","file":"common/vendor.js","sourcesContent":["import Vue from 'vue';\r\n\r\nconst _toString = Object.prototype.toString;\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\nfunction isFn (fn) {\r\n return typeof fn === 'function'\r\n}\r\n\r\nfunction isStr (str) {\r\n return typeof str === 'string'\r\n}\r\n\r\nfunction isPlainObject (obj) {\r\n return _toString.call(obj) === '[object Object]'\r\n}\r\n\r\nfunction hasOwn (obj, key) {\r\n return hasOwnProperty.call(obj, key)\r\n}\r\n\r\nfunction noop () {}\r\n\r\n/**\r\n * Create a cached version of a pure function.\r\n */\r\nfunction cached (fn) {\r\n const cache = Object.create(null);\r\n return function cachedFn (str) {\r\n const hit = cache[str];\r\n return hit || (cache[str] = fn(str))\r\n }\r\n}\r\n\r\n/**\r\n * Camelize a hyphen-delimited string.\r\n */\r\nconst camelizeRE = /-(\\w)/g;\r\nconst camelize = cached((str) => {\r\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')\r\n});\r\n\r\nconst HOOKS = [\r\n 'invoke',\r\n 'success',\r\n 'fail',\r\n 'complete',\r\n 'returnValue'\r\n];\r\n\r\nconst globalInterceptors = {};\r\nconst scopedInterceptors = {};\r\n\r\nfunction mergeHook (parentVal, childVal) {\r\n const res = childVal\r\n ? parentVal\r\n ? parentVal.concat(childVal)\r\n : Array.isArray(childVal)\r\n ? childVal : [childVal]\r\n : parentVal;\r\n return res\r\n ? dedupeHooks(res)\r\n : res\r\n}\r\n\r\nfunction dedupeHooks (hooks) {\r\n const res = [];\r\n for (let i = 0; i < hooks.length; i++) {\r\n if (res.indexOf(hooks[i]) === -1) {\r\n res.push(hooks[i]);\r\n }\r\n }\r\n return res\r\n}\r\n\r\nfunction removeHook (hooks, hook) {\r\n const index = hooks.indexOf(hook);\r\n if (index !== -1) {\r\n hooks.splice(index, 1);\r\n }\r\n}\r\n\r\nfunction mergeInterceptorHook (interceptor, option) {\r\n Object.keys(option).forEach(hook => {\r\n if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {\r\n interceptor[hook] = mergeHook(interceptor[hook], option[hook]);\r\n }\r\n });\r\n}\r\n\r\nfunction removeInterceptorHook (interceptor, option) {\r\n if (!interceptor || !option) {\r\n return\r\n }\r\n Object.keys(option).forEach(hook => {\r\n if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {\r\n removeHook(interceptor[hook], option[hook]);\r\n }\r\n });\r\n}\r\n\r\nfunction addInterceptor (method, option) {\r\n if (typeof method === 'string' && isPlainObject(option)) {\r\n mergeInterceptorHook(scopedInterceptors[method] || (scopedInterceptors[method] = {}), option);\r\n } else if (isPlainObject(method)) {\r\n mergeInterceptorHook(globalInterceptors, method);\r\n }\r\n}\r\n\r\nfunction removeInterceptor (method, option) {\r\n if (typeof method === 'string') {\r\n if (isPlainObject(option)) {\r\n removeInterceptorHook(scopedInterceptors[method], option);\r\n } else {\r\n delete scopedInterceptors[method];\r\n }\r\n } else if (isPlainObject(method)) {\r\n removeInterceptorHook(globalInterceptors, method);\r\n }\r\n}\r\n\r\nfunction wrapperHook (hook) {\r\n return function (data) {\r\n return hook(data) || data\r\n }\r\n}\r\n\r\nfunction isPromise (obj) {\r\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'\r\n}\r\n\r\nfunction queue (hooks, data) {\r\n let promise = false;\r\n for (let i = 0; i < hooks.length; i++) {\r\n const hook = hooks[i];\r\n if (promise) {\r\n promise = Promise.then(wrapperHook(hook));\r\n } else {\r\n const res = hook(data);\r\n if (isPromise(res)) {\r\n promise = Promise.resolve(res);\r\n }\r\n if (res === false) {\r\n return {\r\n then () {}\r\n }\r\n }\r\n }\r\n }\r\n return promise || {\r\n then (callback) {\r\n return callback(data)\r\n }\r\n }\r\n}\r\n\r\nfunction wrapperOptions (interceptor, options = {}) {\r\n ['success', 'fail', 'complete'].forEach(name => {\r\n if (Array.isArray(interceptor[name])) {\r\n const oldCallback = options[name];\r\n options[name] = function callbackInterceptor (res) {\r\n queue(interceptor[name], res).then((res) => {\r\n /* eslint-disable no-mixed-operators */\r\n return isFn(oldCallback) && oldCallback(res) || res\r\n });\r\n };\r\n }\r\n });\r\n return options\r\n}\r\n\r\nfunction wrapperReturnValue (method, returnValue) {\r\n const returnValueHooks = [];\r\n if (Array.isArray(globalInterceptors.returnValue)) {\r\n returnValueHooks.push(...globalInterceptors.returnValue);\r\n }\r\n const interceptor = scopedInterceptors[method];\r\n if (interceptor && Array.isArray(interceptor.returnValue)) {\r\n returnValueHooks.push(...interceptor.returnValue);\r\n }\r\n returnValueHooks.forEach(hook => {\r\n returnValue = hook(returnValue) || returnValue;\r\n });\r\n return returnValue\r\n}\r\n\r\nfunction getApiInterceptorHooks (method) {\r\n const interceptor = Object.create(null);\r\n Object.keys(globalInterceptors).forEach(hook => {\r\n if (hook !== 'returnValue') {\r\n interceptor[hook] = globalInterceptors[hook].slice();\r\n }\r\n });\r\n const scopedInterceptor = scopedInterceptors[method];\r\n if (scopedInterceptor) {\r\n Object.keys(scopedInterceptor).forEach(hook => {\r\n if (hook !== 'returnValue') {\r\n interceptor[hook] = (interceptor[hook] || []).concat(scopedInterceptor[hook]);\r\n }\r\n });\r\n }\r\n return interceptor\r\n}\r\n\r\nfunction invokeApi (method, api, options, ...params) {\r\n const interceptor = getApiInterceptorHooks(method);\r\n if (interceptor && Object.keys(interceptor).length) {\r\n if (Array.isArray(interceptor.invoke)) {\r\n const res = queue(interceptor.invoke, options);\r\n return res.then((options) => {\r\n return api(wrapperOptions(interceptor, options), ...params)\r\n })\r\n } else {\r\n return api(wrapperOptions(interceptor, options), ...params)\r\n }\r\n }\r\n return api(options, ...params)\r\n}\r\n\r\nconst promiseInterceptor = {\r\n returnValue (res) {\r\n if (!isPromise(res)) {\r\n return res\r\n }\r\n return res.then(res => {\r\n return res[1]\r\n }).catch(res => {\r\n return res[0]\r\n })\r\n }\r\n};\r\n\r\nconst SYNC_API_RE =\r\n /^\\$|sendNativeEvent|restoreGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64/;\r\n\r\nconst CONTEXT_API_RE = /^create|Manager$/;\r\n\r\n// Context例外情况\r\nconst CONTEXT_API_RE_EXC = ['createBLEConnection'];\r\n\r\n// 同步例外情况\r\nconst ASYNC_API = ['createBLEConnection'];\r\n\r\nconst CALLBACK_API_RE = /^on|^off/;\r\n\r\nfunction isContextApi (name) {\r\n return CONTEXT_API_RE.test(name) && CONTEXT_API_RE_EXC.indexOf(name) === -1\r\n}\r\nfunction isSyncApi (name) {\r\n return SYNC_API_RE.test(name) && ASYNC_API.indexOf(name) === -1\r\n}\r\n\r\nfunction isCallbackApi (name) {\r\n return CALLBACK_API_RE.test(name) && name !== 'onPush'\r\n}\r\n\r\nfunction handlePromise (promise) {\r\n return promise.then(data => {\r\n return [null, data]\r\n })\r\n .catch(err => [err])\r\n}\r\n\r\nfunction shouldPromise (name) {\r\n if (\r\n isContextApi(name) ||\r\n isSyncApi(name) ||\r\n isCallbackApi(name)\r\n ) {\r\n return false\r\n }\r\n return true\r\n}\r\n\r\n/* eslint-disable no-extend-native */\r\nif (!Promise.prototype.finally) {\r\n Promise.prototype.finally = function (callback) {\r\n const promise = this.constructor;\r\n return this.then(\r\n value => promise.resolve(callback()).then(() => value),\r\n reason => promise.resolve(callback()).then(() => {\r\n throw reason\r\n })\r\n )\r\n };\r\n}\r\n\r\nfunction promisify (name, api) {\r\n if (!shouldPromise(name)) {\r\n return api\r\n }\r\n return function promiseApi (options = {}, ...params) {\r\n if (isFn(options.success) || isFn(options.fail) || isFn(options.complete)) {\r\n return wrapperReturnValue(name, invokeApi(name, api, options, ...params))\r\n }\r\n return wrapperReturnValue(name, handlePromise(new Promise((resolve, reject) => {\r\n invokeApi(name, api, Object.assign({}, options, {\r\n success: resolve,\r\n fail: reject\r\n }), ...params);\r\n })))\r\n }\r\n}\r\n\r\nconst EPS = 1e-4;\r\nconst BASE_DEVICE_WIDTH = 750;\r\nlet isIOS = false;\r\nlet deviceWidth = 0;\r\nlet deviceDPR = 0;\r\n\r\nfunction checkDeviceWidth () {\r\n const {\r\n platform,\r\n pixelRatio,\r\n windowWidth\r\n } = wx.getSystemInfoSync(); // uni=>wx runtime 编译目标是 uni 对象,内部不允许直接使用 uni\r\n\r\n deviceWidth = windowWidth;\r\n deviceDPR = pixelRatio;\r\n isIOS = platform === 'ios';\r\n}\r\n\r\nfunction upx2px (number, newDeviceWidth) {\r\n if (deviceWidth === 0) {\r\n checkDeviceWidth();\r\n }\r\n\r\n number = Number(number);\r\n if (number === 0) {\r\n return 0\r\n }\r\n let result = (number / BASE_DEVICE_WIDTH) * (newDeviceWidth || deviceWidth);\r\n if (result < 0) {\r\n result = -result;\r\n }\r\n result = Math.floor(result + EPS);\r\n if (result === 0) {\r\n if (deviceDPR === 1 || !isIOS) {\r\n return 1\r\n } else {\r\n return 0.5\r\n }\r\n }\r\n return number < 0 ? -result : result\r\n}\r\n\r\nconst interceptors = {\r\n promiseInterceptor\r\n};\r\n\r\nvar baseApi = /*#__PURE__*/Object.freeze({\r\n __proto__: null,\r\n upx2px: upx2px,\r\n addInterceptor: addInterceptor,\r\n removeInterceptor: removeInterceptor,\r\n interceptors: interceptors\r\n});\r\n\r\nvar previewImage = {\r\n args (fromArgs) {\r\n let currentIndex = parseInt(fromArgs.current);\r\n if (isNaN(currentIndex)) {\r\n return\r\n }\r\n const urls = fromArgs.urls;\r\n if (!Array.isArray(urls)) {\r\n return\r\n }\r\n const len = urls.length;\r\n if (!len) {\r\n return\r\n }\r\n if (currentIndex < 0) {\r\n currentIndex = 0;\r\n } else if (currentIndex >= len) {\r\n currentIndex = len - 1;\r\n }\r\n if (currentIndex > 0) {\r\n fromArgs.current = urls[currentIndex];\r\n fromArgs.urls = urls.filter(\r\n (item, index) => index < currentIndex ? item !== urls[currentIndex] : true\r\n );\r\n } else {\r\n fromArgs.current = urls[0];\r\n }\r\n return {\r\n indicator: false,\r\n loop: false\r\n }\r\n }\r\n};\r\n\r\nfunction addSafeAreaInsets (result) {\r\n if (result.safeArea) {\r\n const safeArea = result.safeArea;\r\n result.safeAreaInsets = {\r\n top: safeArea.top,\r\n left: safeArea.left,\r\n right: result.windowWidth - safeArea.right,\r\n bottom: result.windowHeight - safeArea.bottom\r\n };\r\n }\r\n}\r\nconst protocols = {\r\n previewImage,\r\n getSystemInfo: {\r\n returnValue: addSafeAreaInsets\r\n },\r\n getSystemInfoSync: {\r\n returnValue: addSafeAreaInsets\r\n }\r\n};\r\nconst todos = [\r\n 'vibrate'\r\n];\r\nconst canIUses = [];\r\n\r\nconst CALLBACKS = ['success', 'fail', 'cancel', 'complete'];\r\n\r\nfunction processCallback (methodName, method, returnValue) {\r\n return function (res) {\r\n return method(processReturnValue(methodName, res, returnValue))\r\n }\r\n}\r\n\r\nfunction processArgs (methodName, fromArgs, argsOption = {}, returnValue = {}, keepFromArgs = false) {\r\n if (isPlainObject(fromArgs)) { // 一般 api 的参数解析\r\n const toArgs = keepFromArgs === true ? fromArgs : {}; // returnValue 为 false 时,说明是格式化返回值,直接在返回值对象上修改赋值\r\n if (isFn(argsOption)) {\r\n argsOption = argsOption(fromArgs, toArgs) || {};\r\n }\r\n for (const key in fromArgs) {\r\n if (hasOwn(argsOption, key)) {\r\n let keyOption = argsOption[key];\r\n if (isFn(keyOption)) {\r\n keyOption = keyOption(fromArgs[key], fromArgs, toArgs);\r\n }\r\n if (!keyOption) { // 不支持的参数\r\n console.warn(`微信小程序 ${methodName}暂不支持${key}`);\r\n } else if (isStr(keyOption)) { // 重写参数 key\r\n toArgs[keyOption] = fromArgs[key];\r\n } else if (isPlainObject(keyOption)) { // {name:newName,value:value}可重新指定参数 key:value\r\n toArgs[keyOption.name ? keyOption.name : key] = keyOption.value;\r\n }\r\n } else if (CALLBACKS.indexOf(key) !== -1) {\r\n toArgs[key] = processCallback(methodName, fromArgs[key], returnValue);\r\n } else {\r\n if (!keepFromArgs) {\r\n toArgs[key] = fromArgs[key];\r\n }\r\n }\r\n }\r\n return toArgs\r\n } else if (isFn(fromArgs)) {\r\n fromArgs = processCallback(methodName, fromArgs, returnValue);\r\n }\r\n return fromArgs\r\n}\r\n\r\nfunction processReturnValue (methodName, res, returnValue, keepReturnValue = false) {\r\n if (isFn(protocols.returnValue)) { // 处理通用 returnValue\r\n res = protocols.returnValue(methodName, res);\r\n }\r\n return processArgs(methodName, res, returnValue, {}, keepReturnValue)\r\n}\r\n\r\nfunction wrapper (methodName, method) {\r\n if (hasOwn(protocols, methodName)) {\r\n const protocol = protocols[methodName];\r\n if (!protocol) { // 暂不支持的 api\r\n return function () {\r\n console.error(`微信小程序 暂不支持${methodName}`);\r\n }\r\n }\r\n return function (arg1, arg2) { // 目前 api 最多两个参数\r\n let options = protocol;\r\n if (isFn(protocol)) {\r\n options = protocol(arg1);\r\n }\r\n\r\n arg1 = processArgs(methodName, arg1, options.args, options.returnValue);\r\n\r\n const args = [arg1];\r\n if (typeof arg2 !== 'undefined') {\r\n args.push(arg2);\r\n }\r\n const returnValue = wx[options.name || methodName].apply(wx, args);\r\n if (isSyncApi(methodName)) { // 同步 api\r\n return processReturnValue(methodName, returnValue, options.returnValue, isContextApi(methodName))\r\n }\r\n return returnValue\r\n }\r\n }\r\n return method\r\n}\r\n\r\nconst todoApis = Object.create(null);\r\n\r\nconst TODOS = [\r\n 'onTabBarMidButtonTap',\r\n 'subscribePush',\r\n 'unsubscribePush',\r\n 'onPush',\r\n 'offPush',\r\n 'share'\r\n];\r\n\r\nfunction createTodoApi (name) {\r\n return function todoApi ({\r\n fail,\r\n complete\r\n }) {\r\n const res = {\r\n errMsg: `${name}:fail:暂不支持 ${name} 方法`\r\n };\r\n isFn(fail) && fail(res);\r\n isFn(complete) && complete(res);\r\n }\r\n}\r\n\r\nTODOS.forEach(function (name) {\r\n todoApis[name] = createTodoApi(name);\r\n});\r\n\r\nvar providers = {\r\n oauth: ['weixin'],\r\n share: ['weixin'],\r\n payment: ['wxpay'],\r\n push: ['weixin']\r\n};\r\n\r\nfunction getProvider ({\r\n service,\r\n success,\r\n fail,\r\n complete\r\n}) {\r\n let res = false;\r\n if (providers[service]) {\r\n res = {\r\n errMsg: 'getProvider:ok',\r\n service,\r\n provider: providers[service]\r\n };\r\n isFn(success) && success(res);\r\n } else {\r\n res = {\r\n errMsg: 'getProvider:fail:服务[' + service + ']不存在'\r\n };\r\n isFn(fail) && fail(res);\r\n }\r\n isFn(complete) && complete(res);\r\n}\r\n\r\nvar extraApi = /*#__PURE__*/Object.freeze({\r\n __proto__: null,\r\n getProvider: getProvider\r\n});\r\n\r\nconst getEmitter = (function () {\r\n if (typeof getUniEmitter === 'function') {\r\n /* eslint-disable no-undef */\r\n return getUniEmitter\r\n }\r\n let Emitter;\r\n return function getUniEmitter () {\r\n if (!Emitter) {\r\n Emitter = new Vue();\r\n }\r\n return Emitter\r\n }\r\n})();\r\n\r\nfunction apply (ctx, method, args) {\r\n return ctx[method].apply(ctx, args)\r\n}\r\n\r\nfunction $on () {\r\n return apply(getEmitter(), '$on', [...arguments])\r\n}\r\nfunction $off () {\r\n return apply(getEmitter(), '$off', [...arguments])\r\n}\r\nfunction $once () {\r\n return apply(getEmitter(), '$once', [...arguments])\r\n}\r\nfunction $emit () {\r\n return apply(getEmitter(), '$emit', [...arguments])\r\n}\r\n\r\nvar eventApi = /*#__PURE__*/Object.freeze({\r\n __proto__: null,\r\n $on: $on,\r\n $off: $off,\r\n $once: $once,\r\n $emit: $emit\r\n});\r\n\r\nvar api = /*#__PURE__*/Object.freeze({\r\n __proto__: null\r\n});\r\n\r\nconst MPPage = Page;\r\nconst MPComponent = Component;\r\n\r\nconst customizeRE = /:/g;\r\n\r\nconst customize = cached((str) => {\r\n return camelize(str.replace(customizeRE, '-'))\r\n});\r\n\r\nfunction initTriggerEvent (mpInstance) {\r\n {\r\n if (!wx.canIUse('nextTick')) {\r\n return\r\n }\r\n }\r\n const oldTriggerEvent = mpInstance.triggerEvent;\r\n mpInstance.triggerEvent = function (event, ...args) {\r\n return oldTriggerEvent.apply(mpInstance, [customize(event), ...args])\r\n };\r\n}\r\n\r\nfunction initHook (name, options) {\r\n const oldHook = options[name];\r\n if (!oldHook) {\r\n options[name] = function () {\r\n initTriggerEvent(this);\r\n };\r\n } else {\r\n options[name] = function (...args) {\r\n initTriggerEvent(this);\r\n return oldHook.apply(this, args)\r\n };\r\n }\r\n}\r\n\r\nPage = function (options = {}) {\r\n initHook('onLoad', options);\r\n return MPPage(options)\r\n};\r\n\r\nComponent = function (options = {}) {\r\n initHook('created', options);\r\n return MPComponent(options)\r\n};\r\n\r\nconst PAGE_EVENT_HOOKS = [\r\n 'onPullDownRefresh',\r\n 'onReachBottom',\r\n 'onShareAppMessage',\r\n 'onPageScroll',\r\n 'onResize',\r\n 'onTabItemTap'\r\n];\r\n\r\nfunction initMocks (vm, mocks) {\r\n const mpInstance = vm.$mp[vm.mpType];\r\n mocks.forEach(mock => {\r\n if (hasOwn(mpInstance, mock)) {\r\n vm[mock] = mpInstance[mock];\r\n }\r\n });\r\n}\r\n\r\nfunction hasHook (hook, vueOptions) {\r\n if (!vueOptions) {\r\n return true\r\n }\r\n\r\n if (Vue.options && Array.isArray(Vue.options[hook])) {\r\n return true\r\n }\r\n\r\n vueOptions = vueOptions.default || vueOptions;\r\n\r\n if (isFn(vueOptions)) {\r\n if (isFn(vueOptions.extendOptions[hook])) {\r\n return true\r\n }\r\n if (vueOptions.super &&\r\n vueOptions.super.options &&\r\n Array.isArray(vueOptions.super.options[hook])) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n if (isFn(vueOptions[hook])) {\r\n return true\r\n }\r\n const mixins = vueOptions.mixins;\r\n if (Array.isArray(mixins)) {\r\n return !!mixins.find(mixin => hasHook(hook, mixin))\r\n }\r\n}\r\n\r\nfunction initHooks (mpOptions, hooks, vueOptions) {\r\n hooks.forEach(hook => {\r\n if (hasHook(hook, vueOptions)) {\r\n mpOptions[hook] = function (args) {\r\n return this.$vm && this.$vm.__call_hook(hook, args)\r\n };\r\n }\r\n });\r\n}\r\n\r\nfunction initVueComponent (Vue, vueOptions) {\r\n vueOptions = vueOptions.default || vueOptions;\r\n let VueComponent;\r\n if (isFn(vueOptions)) {\r\n VueComponent = vueOptions;\r\n vueOptions = VueComponent.extendOptions;\r\n } else {\r\n VueComponent = Vue.extend(vueOptions);\r\n }\r\n return [VueComponent, vueOptions]\r\n}\r\n\r\nfunction initSlots (vm, vueSlots) {\r\n if (Array.isArray(vueSlots) && vueSlots.length) {\r\n const $slots = Object.create(null);\r\n vueSlots.forEach(slotName => {\r\n $slots[slotName] = true;\r\n });\r\n vm.$scopedSlots = vm.$slots = $slots;\r\n }\r\n}\r\n\r\nfunction initVueIds (vueIds, mpInstance) {\r\n vueIds = (vueIds || '').split(',');\r\n const len = vueIds.length;\r\n\r\n if (len === 1) {\r\n mpInstance._$vueId = vueIds[0];\r\n } else if (len === 2) {\r\n mpInstance._$vueId = vueIds[0];\r\n mpInstance._$vuePid = vueIds[1];\r\n }\r\n}\r\n\r\nfunction initData (vueOptions, context) {\r\n let data = vueOptions.data || {};\r\n const methods = vueOptions.methods || {};\r\n\r\n if (typeof data === 'function') {\r\n try {\r\n data = data.call(context); // 支持 Vue.prototype 上挂的数据\r\n } catch (e) {\r\n if (process.env.VUE_APP_DEBUG) {\r\n console.warn('根据 Vue 的 data 函数初始化小程序 data 失败,请尽量确保 data 函数中不访问 vm 对象,否则可能影响首次数据渲染速度。', data);\r\n }\r\n }\r\n } else {\r\n try {\r\n // 对 data 格式化\r\n data = JSON.parse(JSON.stringify(data));\r\n } catch (e) {}\r\n }\r\n\r\n if (!isPlainObject(data)) {\r\n data = {};\r\n }\r\n\r\n Object.keys(methods).forEach(methodName => {\r\n if (context.__lifecycle_hooks__.indexOf(methodName) === -1 && !hasOwn(data, methodName)) {\r\n data[methodName] = methods[methodName];\r\n }\r\n });\r\n\r\n return data\r\n}\r\n\r\nconst PROP_TYPES = [String, Number, Boolean, Object, Array, null];\r\n\r\nfunction createObserver (name) {\r\n return function observer (newVal, oldVal) {\r\n if (this.$vm) {\r\n this.$vm[name] = newVal; // 为了触发其他非 render watcher\r\n }\r\n }\r\n}\r\n\r\nfunction initBehaviors (vueOptions, initBehavior) {\r\n const vueBehaviors = vueOptions.behaviors;\r\n const vueExtends = vueOptions.extends;\r\n const vueMixins = vueOptions.mixins;\r\n\r\n let vueProps = vueOptions.props;\r\n\r\n if (!vueProps) {\r\n vueOptions.props = vueProps = [];\r\n }\r\n\r\n const behaviors = [];\r\n if (Array.isArray(vueBehaviors)) {\r\n vueBehaviors.forEach(behavior => {\r\n behaviors.push(behavior.replace('uni://', `${\"wx\"}://`));\r\n if (behavior === 'uni://form-field') {\r\n if (Array.isArray(vueProps)) {\r\n vueProps.push('name');\r\n vueProps.push('value');\r\n } else {\r\n vueProps.name = {\r\n type: String,\r\n default: ''\r\n };\r\n vueProps.value = {\r\n type: [String, Number, Boolean, Array, Object, Date],\r\n default: ''\r\n };\r\n }\r\n }\r\n });\r\n }\r\n if (isPlainObject(vueExtends) && vueExtends.props) {\r\n behaviors.push(\r\n initBehavior({\r\n properties: initProperties(vueExtends.props, true)\r\n })\r\n );\r\n }\r\n if (Array.isArray(vueMixins)) {\r\n vueMixins.forEach(vueMixin => {\r\n if (isPlainObject(vueMixin) && vueMixin.props) {\r\n behaviors.push(\r\n initBehavior({\r\n properties: initProperties(vueMixin.props, true)\r\n })\r\n );\r\n }\r\n });\r\n }\r\n return behaviors\r\n}\r\n\r\nfunction parsePropType (key, type, defaultValue, file) {\r\n // [String]=>String\r\n if (Array.isArray(type) && type.length === 1) {\r\n return type[0]\r\n }\r\n return type\r\n}\r\n\r\nfunction initProperties (props, isBehavior = false, file = '') {\r\n const properties = {};\r\n if (!isBehavior) {\r\n properties.vueId = {\r\n type: String,\r\n value: ''\r\n };\r\n properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots\r\n type: null,\r\n value: [],\r\n observer: function (newVal, oldVal) {\r\n const $slots = Object.create(null);\r\n newVal.forEach(slotName => {\r\n $slots[slotName] = true;\r\n });\r\n this.setData({\r\n $slots\r\n });\r\n }\r\n };\r\n }\r\n if (Array.isArray(props)) { // ['title']\r\n props.forEach(key => {\r\n properties[key] = {\r\n type: null,\r\n observer: createObserver(key)\r\n };\r\n });\r\n } else if (isPlainObject(props)) { // {title:{type:String,default:''},content:String}\r\n Object.keys(props).forEach(key => {\r\n const opts = props[key];\r\n if (isPlainObject(opts)) { // title:{type:String,default:''}\r\n let value = opts.default;\r\n if (isFn(value)) {\r\n value = value();\r\n }\r\n\r\n opts.type = parsePropType(key, opts.type);\r\n\r\n properties[key] = {\r\n type: PROP_TYPES.indexOf(opts.type) !== -1 ? opts.type : null,\r\n value,\r\n observer: createObserver(key)\r\n };\r\n } else { // content:String\r\n const type = parsePropType(key, opts);\r\n properties[key] = {\r\n type: PROP_TYPES.indexOf(type) !== -1 ? type : null,\r\n observer: createObserver(key)\r\n };\r\n }\r\n });\r\n }\r\n return properties\r\n}\r\n\r\nfunction wrapper$1 (event) {\r\n // TODO 又得兼容 mpvue 的 mp 对象\r\n try {\r\n event.mp = JSON.parse(JSON.stringify(event));\r\n } catch (e) {}\r\n\r\n event.stopPropagation = noop;\r\n event.preventDefault = noop;\r\n\r\n event.target = event.target || {};\r\n\r\n if (!hasOwn(event, 'detail') || !event.detail) {\r\n event.detail = {};\r\n }\r\n\r\n if (!('markerId' in event.detail) && 'markerId' in event) {\r\n event.detail.markerId = event.markerId;\r\n }\r\n\r\n if (isPlainObject(event.detail)) {\r\n event.target = Object.assign({}, event.target, event.detail);\r\n }\r\n\r\n return event\r\n}\r\n\r\nfunction getExtraValue (vm, dataPathsArray) {\r\n let context = vm;\r\n dataPathsArray.forEach(dataPathArray => {\r\n const dataPath = dataPathArray[0];\r\n const value = dataPathArray[2];\r\n if (dataPath || typeof value !== 'undefined') { // ['','',index,'disable']\r\n const propPath = dataPathArray[1];\r\n const valuePath = dataPathArray[3];\r\n\r\n const vFor = dataPath ? vm.__get_value(dataPath, context) : context;\r\n\r\n if (Number.isInteger(vFor)) {\r\n context = value;\r\n } else if (!propPath) {\r\n context = vFor[value];\r\n } else {\r\n if (Array.isArray(vFor)) {\r\n context = vFor.find(vForItem => {\r\n return vm.__get_value(propPath, vForItem) === value\r\n });\r\n } else if (isPlainObject(vFor)) {\r\n context = Object.keys(vFor).find(vForKey => {\r\n return vm.__get_value(propPath, vFor[vForKey]) === value\r\n });\r\n } else {\r\n console.error('v-for 暂不支持循环数据:', vFor);\r\n }\r\n }\r\n\r\n if (valuePath) {\r\n context = vm.__get_value(valuePath, context);\r\n }\r\n }\r\n });\r\n return context\r\n}\r\n\r\nfunction processEventExtra (vm, extra, event) {\r\n const extraObj = {};\r\n\r\n if (Array.isArray(extra) && extra.length) {\r\n /**\r\n *[\r\n * ['data.items', 'data.id', item.data.id],\r\n * ['metas', 'id', meta.id]\r\n *],\r\n *[\r\n * ['data.items', 'data.id', item.data.id],\r\n * ['metas', 'id', meta.id]\r\n *],\r\n *'test'\r\n */\r\n extra.forEach((dataPath, index) => {\r\n if (typeof dataPath === 'string') {\r\n if (!dataPath) { // model,prop.sync\r\n extraObj['$' + index] = vm;\r\n } else {\r\n if (dataPath === '$event') { // $event\r\n extraObj['$' + index] = event;\r\n } else if (dataPath.indexOf('$event.') === 0) { // $event.target.value\r\n extraObj['$' + index] = vm.__get_value(dataPath.replace('$event.', ''), event);\r\n } else {\r\n extraObj['$' + index] = vm.__get_value(dataPath);\r\n }\r\n }\r\n } else {\r\n extraObj['$' + index] = getExtraValue(vm, dataPath);\r\n }\r\n });\r\n }\r\n\r\n return extraObj\r\n}\r\n\r\nfunction getObjByArray (arr) {\r\n const obj = {};\r\n for (let i = 1; i < arr.length; i++) {\r\n const element = arr[i];\r\n obj[element[0]] = element[1];\r\n }\r\n return obj\r\n}\r\n\r\nfunction processEventArgs (vm, event, args = [], extra = [], isCustom, methodName) {\r\n let isCustomMPEvent = false; // wxcomponent 组件,传递原始 event 对象\r\n if (isCustom) { // 自定义事件\r\n isCustomMPEvent = event.currentTarget &&\r\n event.currentTarget.dataset &&\r\n event.currentTarget.dataset.comType === 'wx';\r\n if (!args.length) { // 无参数,直接传入 event 或 detail 数组\r\n if (isCustomMPEvent) {\r\n return [event]\r\n }\r\n return event.detail.__args__ || event.detail\r\n }\r\n }\r\n\r\n const extraObj = processEventExtra(vm, extra, event);\r\n\r\n const ret = [];\r\n args.forEach(arg => {\r\n if (arg === '$event') {\r\n if (methodName === '__set_model' && !isCustom) { // input v-model value\r\n ret.push(event.target.value);\r\n } else {\r\n if (isCustom && !isCustomMPEvent) {\r\n ret.push(event.detail.__args__[0]);\r\n } else { // wxcomponent 组件或内置组件\r\n ret.push(event);\r\n }\r\n }\r\n } else {\r\n if (Array.isArray(arg) && arg[0] === 'o') {\r\n ret.push(getObjByArray(arg));\r\n } else if (typeof arg === 'string' && hasOwn(extraObj, arg)) {\r\n ret.push(extraObj[arg]);\r\n } else {\r\n ret.push(arg);\r\n }\r\n }\r\n });\r\n\r\n return ret\r\n}\r\n\r\nconst ONCE = '~';\r\nconst CUSTOM = '^';\r\n\r\nfunction isMatchEventType (eventType, optType) {\r\n return (eventType === optType) ||\r\n (\r\n optType === 'regionchange' &&\r\n (\r\n eventType === 'begin' ||\r\n eventType === 'end'\r\n )\r\n )\r\n}\r\n\r\nfunction handleEvent (event) {\r\n event = wrapper$1(event);\r\n\r\n // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]]\r\n const dataset = (event.currentTarget || event.target).dataset;\r\n if (!dataset) {\r\n return console.warn('事件信息不存在')\r\n }\r\n const eventOpts = dataset.eventOpts || dataset['event-opts']; // 支付宝 web-view 组件 dataset 非驼峰\r\n if (!eventOpts) {\r\n return console.warn('事件信息不存在')\r\n }\r\n\r\n // [['handle',[1,2,a]],['handle1',[1,2,a]]]\r\n const eventType = event.type;\r\n\r\n const ret = [];\r\n\r\n eventOpts.forEach(eventOpt => {\r\n let type = eventOpt[0];\r\n const eventsArray = eventOpt[1];\r\n\r\n const isCustom = type.charAt(0) === CUSTOM;\r\n type = isCustom ? type.slice(1) : type;\r\n const isOnce = type.charAt(0) === ONCE;\r\n type = isOnce ? type.slice(1) : type;\r\n\r\n if (eventsArray && isMatchEventType(eventType, type)) {\r\n eventsArray.forEach(eventArray => {\r\n const methodName = eventArray[0];\r\n if (methodName) {\r\n let handlerCtx = this.$vm;\r\n if (\r\n handlerCtx.$options.generic &&\r\n handlerCtx.$parent &&\r\n handlerCtx.$parent.$parent\r\n ) { // mp-weixin,mp-toutiao 抽象节点模拟 scoped slots\r\n handlerCtx = handlerCtx.$parent.$parent;\r\n }\r\n if (methodName === '$emit') {\r\n handlerCtx.$emit.apply(handlerCtx,\r\n processEventArgs(\r\n this.$vm,\r\n event,\r\n eventArray[1],\r\n eventArray[2],\r\n isCustom,\r\n methodName\r\n ));\r\n return\r\n }\r\n const handler = handlerCtx[methodName];\r\n if (!isFn(handler)) {\r\n throw new Error(` _vm.${methodName} is not a function`)\r\n }\r\n if (isOnce) {\r\n if (handler.once) {\r\n return\r\n }\r\n handler.once = true;\r\n }\r\n ret.push(handler.apply(handlerCtx, processEventArgs(\r\n this.$vm,\r\n event,\r\n eventArray[1],\r\n eventArray[2],\r\n isCustom,\r\n methodName\r\n )));\r\n }\r\n });\r\n }\r\n });\r\n\r\n if (\r\n eventType === 'input' &&\r\n ret.length === 1 &&\r\n typeof ret[0] !== 'undefined'\r\n ) {\r\n return ret[0]\r\n }\r\n}\r\n\r\nconst hooks = [\r\n 'onShow',\r\n 'onHide',\r\n 'onError',\r\n 'onPageNotFound'\r\n];\r\n\r\nfunction parseBaseApp (vm, {\r\n mocks,\r\n initRefs\r\n}) {\r\n if (vm.$options.store) {\r\n Vue.prototype.$store = vm.$options.store;\r\n }\r\n\r\n Vue.prototype.mpHost = \"mp-weixin\";\r\n\r\n Vue.mixin({\r\n beforeCreate () {\r\n if (!this.$options.mpType) {\r\n return\r\n }\r\n\r\n this.mpType = this.$options.mpType;\r\n\r\n this.$mp = {\r\n data: {},\r\n [this.mpType]: this.$options.mpInstance\r\n };\r\n\r\n this.$scope = this.$options.mpInstance;\r\n\r\n delete this.$options.mpType;\r\n delete this.$options.mpInstance;\r\n\r\n if (this.mpType !== 'app') {\r\n initRefs(this);\r\n initMocks(this, mocks);\r\n }\r\n }\r\n });\r\n\r\n const appOptions = {\r\n onLaunch (args) {\r\n if (this.$vm) { // 已经初始化过了,主要是为了百度,百度 onShow 在 onLaunch 之前\r\n return\r\n }\r\n {\r\n if (!wx.canIUse('nextTick')) { // 事实 上2.2.3 即可,简单使用 2.3.0 的 nextTick 判断\r\n console.error('当前微信基础库版本过低,请将 微信开发者工具-详情-项目设置-调试基础库版本 更换为`2.3.0`以上');\r\n }\r\n }\r\n\r\n this.$vm = vm;\r\n\r\n this.$vm.$mp = {\r\n app: this\r\n };\r\n\r\n this.$vm.$scope = this;\r\n // vm 上也挂载 globalData\r\n this.$vm.globalData = this.globalData;\r\n\r\n this.$vm._isMounted = true;\r\n this.$vm.__call_hook('mounted', args);\r\n\r\n this.$vm.__call_hook('onLaunch', args);\r\n }\r\n };\r\n\r\n // 兼容旧版本 globalData\r\n appOptions.globalData = vm.$options.globalData || {};\r\n // 将 methods 中的方法挂在 getApp() 中\r\n const methods = vm.$options.methods;\r\n if (methods) {\r\n Object.keys(methods).forEach(name => {\r\n appOptions[name] = methods[name];\r\n });\r\n }\r\n\r\n initHooks(appOptions, hooks);\r\n\r\n return appOptions\r\n}\r\n\r\nconst mocks = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__'];\r\n\r\nfunction findVmByVueId (vm, vuePid) {\r\n const $children = vm.$children;\r\n // 优先查找直属(反向查找:https://github.com/dcloudio/uni-app/issues/1200)\r\n for (let i = $children.length - 1; i >= 0; i--) {\r\n const childVm = $children[i];\r\n if (childVm.$scope._$vueId === vuePid) {\r\n return childVm\r\n }\r\n }\r\n // 反向递归查找\r\n let parentVm;\r\n for (let i = $children.length - 1; i >= 0; i--) {\r\n parentVm = findVmByVueId($children[i], vuePid);\r\n if (parentVm) {\r\n return parentVm\r\n }\r\n }\r\n}\r\n\r\nfunction initBehavior (options) {\r\n return Behavior(options)\r\n}\r\n\r\nfunction isPage () {\r\n return !!this.route\r\n}\r\n\r\nfunction initRelation (detail) {\r\n this.triggerEvent('__l', detail);\r\n}\r\n\r\nfunction initRefs (vm) {\r\n const mpInstance = vm.$scope;\r\n Object.defineProperty(vm, '$refs', {\r\n get () {\r\n const $refs = {};\r\n const components = mpInstance.selectAllComponents('.vue-ref');\r\n components.forEach(component => {\r\n const ref = component.dataset.ref;\r\n $refs[ref] = component.$vm || component;\r\n });\r\n const forComponents = mpInstance.selectAllComponents('.vue-ref-in-for');\r\n forComponents.forEach(component => {\r\n const ref = component.dataset.ref;\r\n if (!$refs[ref]) {\r\n $refs[ref] = [];\r\n }\r\n $refs[ref].push(component.$vm || component);\r\n });\r\n return $refs\r\n }\r\n });\r\n}\r\n\r\nfunction handleLink (event) {\r\n const {\r\n vuePid,\r\n vueOptions\r\n } = event.detail || event.value; // detail 是微信,value 是百度(dipatch)\r\n\r\n let parentVm;\r\n\r\n if (vuePid) {\r\n parentVm = findVmByVueId(this.$vm, vuePid);\r\n }\r\n\r\n if (!parentVm) {\r\n parentVm = this.$vm;\r\n }\r\n\r\n vueOptions.parent = parentVm;\r\n}\r\n\r\nfunction parseApp (vm) {\r\n return parseBaseApp(vm, {\r\n mocks,\r\n initRefs\r\n })\r\n}\r\n\r\nfunction createApp (vm) {\r\n App(parseApp(vm));\r\n return vm\r\n}\r\n\r\nfunction parseBaseComponent (vueComponentOptions, {\r\n isPage,\r\n initRelation\r\n} = {}) {\r\n const [VueComponent, vueOptions] = initVueComponent(Vue, vueComponentOptions);\r\n\r\n const options = {\r\n multipleSlots: true,\r\n addGlobalClass: true,\r\n ...(vueOptions.options || {})\r\n };\r\n\r\n {\r\n // 微信 multipleSlots 部分情况有 bug,导致内容顺序错乱 如 u-list,提供覆盖选项\r\n if (vueOptions['mp-weixin'] && vueOptions['mp-weixin'].options) {\r\n Object.assign(options, vueOptions['mp-weixin'].options);\r\n }\r\n }\r\n\r\n const componentOptions = {\r\n options,\r\n data: initData(vueOptions, Vue.prototype),\r\n behaviors: initBehaviors(vueOptions, initBehavior),\r\n properties: initProperties(vueOptions.props, false, vueOptions.__file),\r\n lifetimes: {\r\n attached () {\r\n const properties = this.properties;\r\n\r\n const options = {\r\n mpType: isPage.call(this) ? 'page' : 'component',\r\n mpInstance: this,\r\n propsData: properties\r\n };\r\n\r\n initVueIds(properties.vueId, this);\r\n\r\n // 处理父子关系\r\n initRelation.call(this, {\r\n vuePid: this._$vuePid,\r\n vueOptions: options\r\n });\r\n\r\n // 初始化 vue 实例\r\n this.$vm = new VueComponent(options);\r\n\r\n // 处理$slots,$scopedSlots(暂不支持动态变化$slots)\r\n initSlots(this.$vm, properties.vueSlots);\r\n\r\n // 触发首次 setData\r\n this.$vm.$mount();\r\n },\r\n ready () {\r\n // 当组件 props 默认值为 true,初始化时传入 false 会导致 created,ready 触发, 但 attached 不触发\r\n // https://developers.weixin.qq.com/community/develop/doc/00066ae2844cc0f8eb883e2a557800\r\n if (this.$vm) {\r\n this.$vm._isMounted = true;\r\n this.$vm.__call_hook('mounted');\r\n this.$vm.__call_hook('onReady');\r\n }\r\n },\r\n detached () {\r\n this.$vm && this.$vm.$destroy();\r\n }\r\n },\r\n pageLifetimes: {\r\n show (args) {\r\n this.$vm && this.$vm.__call_hook('onPageShow', args);\r\n },\r\n hide () {\r\n this.$vm && this.$vm.__call_hook('onPageHide');\r\n },\r\n resize (size) {\r\n this.$vm && this.$vm.__call_hook('onPageResize', size);\r\n }\r\n },\r\n methods: {\r\n __l: handleLink,\r\n __e: handleEvent\r\n }\r\n };\r\n\r\n if (Array.isArray(vueOptions.wxsCallMethods)) {\r\n vueOptions.wxsCallMethods.forEach(callMethod => {\r\n componentOptions.methods[callMethod] = function (args) {\r\n return this.$vm[callMethod](args)\r\n };\r\n });\r\n }\r\n\r\n if (isPage) {\r\n return componentOptions\r\n }\r\n return [componentOptions, VueComponent]\r\n}\r\n\r\nfunction parseComponent (vueComponentOptions) {\r\n return parseBaseComponent(vueComponentOptions, {\r\n isPage,\r\n initRelation\r\n })\r\n}\r\n\r\nconst hooks$1 = [\r\n 'onShow',\r\n 'onHide',\r\n 'onUnload'\r\n];\r\n\r\nhooks$1.push(...PAGE_EVENT_HOOKS);\r\n\r\nfunction parseBasePage (vuePageOptions, {\r\n isPage,\r\n initRelation\r\n}) {\r\n const pageOptions = parseComponent(vuePageOptions);\r\n\r\n initHooks(pageOptions.methods, hooks$1, vuePageOptions);\r\n\r\n pageOptions.methods.onLoad = function (args) {\r\n this.$vm.$mp.query = args; // 兼容 mpvue\r\n this.$vm.__call_hook('onLoad', args);\r\n };\r\n\r\n return pageOptions\r\n}\r\n\r\nfunction parsePage (vuePageOptions) {\r\n return parseBasePage(vuePageOptions, {\r\n isPage,\r\n initRelation\r\n })\r\n}\r\n\r\nfunction createPage (vuePageOptions) {\r\n {\r\n return Component(parsePage(vuePageOptions))\r\n }\r\n}\r\n\r\nfunction createComponent (vueOptions) {\r\n {\r\n return Component(parseComponent(vueOptions))\r\n }\r\n}\r\n\r\ntodos.forEach(todoApi => {\r\n protocols[todoApi] = false;\r\n});\r\n\r\ncanIUses.forEach(canIUseApi => {\r\n const apiName = protocols[canIUseApi] && protocols[canIUseApi].name ? protocols[canIUseApi].name\r\n : canIUseApi;\r\n if (!wx.canIUse(apiName)) {\r\n protocols[canIUseApi] = false;\r\n }\r\n});\r\n\r\nlet uni = {};\r\n\r\nif (typeof Proxy !== 'undefined' && \"mp-weixin\" !== 'app-plus') {\r\n uni = new Proxy({}, {\r\n get (target, name) {\r\n if (target[name]) {\r\n return target[name]\r\n }\r\n if (baseApi[name]) {\r\n return baseApi[name]\r\n }\r\n if (api[name]) {\r\n return promisify(name, api[name])\r\n }\r\n {\r\n if (extraApi[name]) {\r\n return promisify(name, extraApi[name])\r\n }\r\n if (todoApis[name]) {\r\n return promisify(name, todoApis[name])\r\n }\r\n }\r\n if (eventApi[name]) {\r\n return eventApi[name]\r\n }\r\n if (!hasOwn(wx, name) && !hasOwn(protocols, name)) {\r\n return\r\n }\r\n return promisify(name, wrapper(name, wx[name]))\r\n },\r\n set (target, name, value) {\r\n target[name] = value;\r\n return true\r\n }\r\n });\r\n} else {\r\n Object.keys(baseApi).forEach(name => {\r\n uni[name] = baseApi[name];\r\n });\r\n\r\n {\r\n Object.keys(todoApis).forEach(name => {\r\n uni[name] = promisify(name, todoApis[name]);\r\n });\r\n Object.keys(extraApi).forEach(name => {\r\n uni[name] = promisify(name, todoApis[name]);\r\n });\r\n }\r\n\r\n Object.keys(eventApi).forEach(name => {\r\n uni[name] = eventApi[name];\r\n });\r\n\r\n Object.keys(api).forEach(name => {\r\n uni[name] = promisify(name, api[name]);\r\n });\r\n\r\n Object.keys(wx).forEach(name => {\r\n if (hasOwn(wx, name) || hasOwn(protocols, name)) {\r\n uni[name] = promisify(name, wrapper(name, wx[name]));\r\n }\r\n });\r\n}\r\n\r\nwx.createApp = createApp;\r\nwx.createPage = createPage;\r\nwx.createComponent = createComponent;\r\n\r\nvar uni$1 = uni;\r\n\r\nexport default uni$1;\r\nexport { createApp, createComponent, createPage };\r\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode, /* vue-cli only */\n components, // fixed by xxxxxx auto components\n renderjs // fixed by xxxxxx renderjs\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // fixed by xxxxxx auto components\n if (components) {\n if (!options.components) {\n options.components = {}\n }\n var hasOwn = Object.prototype.hasOwnProperty\n for (var name in components) {\n if (hasOwn.call(components, name) && !hasOwn.call(options.components, name)) {\n options.components[name] = components[name]\n }\n }\n }\n // fixed by xxxxxx renderjs\n if (renderjs) {\n (renderjs.beforeCreate || (renderjs.beforeCreate = [])).unshift(function() {\n this[renderjs.__module] = this\n });\n (options.mixins || (options.mixins = [])).push(renderjs)\n }\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","/*!\n * Vue.js v2.6.11\n * (c) 2014-2020 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n {\n if(vm.$scope && vm.$scope.is){\n return vm.$scope.is\n }\n }\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n // fixed by xxxxxx (nvue vuex)\n /* eslint-disable no-undef */\n if(typeof SharedObject !== 'undefined'){\n this.id = SharedObject.uid++;\n } else {\n this.id = uid++;\n }\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.SharedObject.target) {\n Dep.SharedObject.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\n// fixed by xxxxxx (nvue shared vuex)\n/* eslint-disable no-undef */\nDep.SharedObject = typeof SharedObject !== 'undefined' ? SharedObject : {};\nDep.SharedObject.target = null;\nDep.SharedObject.targetStack = [];\n\nfunction pushTarget (target) {\n Dep.SharedObject.targetStack.push(target);\n Dep.SharedObject.target = target;\n}\n\nfunction popTarget () {\n Dep.SharedObject.targetStack.pop();\n Dep.SharedObject.target = Dep.SharedObject.targetStack[Dep.SharedObject.targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n {// fixed by xxxxxx 微信小程序使用 plugins 之后,数组方法被直接挂载到了数组对象上,需要执行 copyAugment 逻辑\n if(value.push !== value.__proto__.push){\n copyAugment(value, arrayMethods, arrayKeys);\n } else {\n protoAugment(value, arrayMethods);\n }\n }\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.SharedObject.target) { // fixed by xxxxxx\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\n/* */\n\n// fixed by xxxxxx (mp properties)\r\nfunction extractPropertiesFromVNodeData(data, Ctor, res, context) {\r\n var propOptions = Ctor.options.mpOptions && Ctor.options.mpOptions.properties;\r\n if (isUndef(propOptions)) {\r\n return res\r\n }\n var externalClasses = Ctor.options.mpOptions.externalClasses || [];\r\n var attrs = data.attrs;\n var props = data.props;\r\n if (isDef(attrs) || isDef(props)) {\r\n for (var key in propOptions) {\r\n var altKey = hyphenate(key);\n var result = checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n // externalClass\n if (\n result &&\n res[key] &&\n externalClasses.indexOf(altKey) !== -1 &&\n context[camelize(res[key])]\n ) {\n // 赋值 externalClass 真正的值(模板里 externalClass 的值可能是字符串)\n res[key] = context[camelize(res[key])];\n }\r\n }\r\n }\r\n return res\r\n}\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag,\n context// fixed by xxxxxx\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n // fixed by xxxxxx\n return extractPropertiesFromVNodeData(data, Ctor, {}, context)\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n // fixed by xxxxxx\n return extractPropertiesFromVNodeData(data, Ctor, res, context)\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive$$1(vm, key, result[key]);\n }\n });\n toggleObserving(true);\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject)\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n // #6574 in case the inject object is observed...\n if (key === '__ob__') { continue }\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n if (!children || !children.length) {\n return {}\n }\n var slots = {};\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data && data.slot != null\n ) {\n var name = data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n // fixed by xxxxxx 临时 hack 掉 uni-app 中的异步 name slot page\n if(child.asyncMeta && child.asyncMeta.data && child.asyncMeta.data.slot === 'page'){\n (slots['page'] || (slots['page'] = [])).push(child);\n }else{\n (slots.default || (slots.default = [])).push(child);\n }\n }\n }\n // ignore slots that contains only whitespace\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\n/* */\n\nfunction normalizeScopedSlots (\n slots,\n normalSlots,\n prevSlots\n) {\n var res;\n var hasNormalSlots = Object.keys(normalSlots).length > 0;\n var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n var key = slots && slots.$key;\n if (!slots) {\n res = {};\n } else if (slots._normalized) {\n // fast path 1: child component re-render only, parent did not change\n return slots._normalized\n } else if (\n isStable &&\n prevSlots &&\n prevSlots !== emptyObject &&\n key === prevSlots.$key &&\n !hasNormalSlots &&\n !prevSlots.$hasNormal\n ) {\n // fast path 2: stable scoped slots w/ no normal slots to proxy,\n // only need to normalize once\n return prevSlots\n } else {\n res = {};\n for (var key$1 in slots) {\n if (slots[key$1] && key$1[0] !== '$') {\n res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n }\n }\n }\n // expose normal slots on scopedSlots\n for (var key$2 in normalSlots) {\n if (!(key$2 in res)) {\n res[key$2] = proxyNormalSlot(normalSlots, key$2);\n }\n }\n // avoriaz seems to mock a non-extensible $scopedSlots object\n // and when that is passed down this would cause an error\n if (slots && Object.isExtensible(slots)) {\n (slots)._normalized = res;\n }\n def(res, '$stable', isStable);\n def(res, '$key', key);\n def(res, '$hasNormal', hasNormalSlots);\n return res\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n var normalized = function () {\n var res = arguments.length ? fn.apply(null, arguments) : fn({});\n res = res && typeof res === 'object' && !Array.isArray(res)\n ? [res] // single vnode\n : normalizeChildren(res);\n return res && (\n res.length === 0 ||\n (res.length === 1 && res[0].isComment) // #9658\n ) ? undefined\n : res\n };\n // this is a slot using the new v-slot syntax without scope. although it is\n // compiled as a scoped slot, render fn users would expect it to be present\n // on this.$slots because the usage is semantically a normal slot.\n if (fn.proxy) {\n Object.defineProperty(normalSlots, key, {\n get: normalized,\n enumerable: true,\n configurable: true\n });\n }\n return normalized\n}\n\nfunction proxyNormalSlot(slots, key) {\n return function () { return slots[key]; }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i, i, i); // fixed by xxxxxx\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i, i, i); // fixed by xxxxxx\n }\n } else if (isObject(val)) {\n if (hasSymbol && val[Symbol.iterator]) {\n ret = [];\n var iterator = val[Symbol.iterator]();\n var result = iterator.next();\n while (!result.done) {\n ret.push(render(result.value, ret.length, i++, i)); // fixed by xxxxxx\n result = iterator.next();\n }\n } else {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i, i); // fixed by xxxxxx\n }\n }\n }\n if (!isDef(ret)) {\n ret = [];\n }\n (ret)._isVList = true;\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n // fixed by xxxxxx app-plus scopedSlot\n nodes = scopedSlotFn(props, this, props._i) || fallback;\n } else {\n nodes = this.$slots[name] || fallback;\n }\n\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes)\n } else {\n return nodes\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\nfunction isKeyNotMatch (expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1\n } else {\n return expect !== actual\n }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInKeyCode,\n eventKeyName,\n builtInKeyName\n) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName)\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n var camelizedKey = camelize(key);\n var hyphenatedKey = hyphenate(key);\n if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(\n this._renderProxy,\n null,\n this // for render fns generated for functional component templates\n );\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res,\n // the following are added in 2.6\n hasDynamicKeys,\n contentHashKey\n) {\n res = res || { $stable: !hasDynamicKeys };\n for (var i = 0; i < fns.length; i++) {\n var slot = fns[i];\n if (Array.isArray(slot)) {\n resolveScopedSlots(slot, res, hasDynamicKeys);\n } else if (slot) {\n // marker for reverse proxying v-slot without scope on this.$slots\n if (slot.proxy) {\n slot.fn.proxy = true;\n }\n res[slot.key] = slot.fn;\n }\n }\n if (contentHashKey) {\n (res).$key = contentHashKey;\n }\n return res\n}\n\n/* */\n\nfunction bindDynamicKeys (baseObj, values) {\n for (var i = 0; i < values.length; i += 2) {\n var key = values[i];\n if (typeof key === 'string' && key) {\n baseObj[values[i]] = values[i + 1];\n } else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n // null is a special value for explicitly removing a binding\n warn(\n (\"Invalid value for dynamic directive argument (expected string or null): \" + key),\n this\n );\n }\n }\n return baseObj\n}\n\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier (value, symbol) {\n return typeof value === 'string' ? symbol + value : value\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n target._d = bindDynamicKeys;\n target._p = prependModifier;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var this$1 = this;\n\n var options = Ctor.options;\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm;\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent);\n // $flow-disable-line\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent;\n // $flow-disable-line\n parent = parent._original;\n }\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () {\n if (!this$1.$slots) {\n normalizeScopedSlots(\n data.scopedSlots,\n this$1.$slots = resolveSlots(children, parent)\n );\n }\n return this$1.$slots\n };\n\n Object.defineProperty(this, 'scopedSlots', ({\n enumerable: true,\n get: function get () {\n return normalizeScopedSlots(data.scopedSlots, this.slots())\n }\n }));\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n }\n return res\n }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n if (process.env.NODE_ENV !== 'production') {\n (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n }\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n return clone\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (vnode, hydrating) {\n if (\n vnode.componentInstance &&\n !vnode.componentInstance._isDestroyed &&\n vnode.data.keepAlive\n ) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n callHook(componentInstance, 'onServiceCreated');\n callHook(componentInstance, 'onServiceAttached');\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag, context); // fixed by xxxxxx\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // install component management hooks onto the placeholder node\n installComponentHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent // activeInstance in lifecycle state\n) {\n var options = {\n _isComponent: true,\n _parentVnode: vnode,\n parent: parent\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n var hooks = data.hook || (data.hook = {});\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var existing = hooks[key];\n var toMerge = componentVNodeHooks[key];\n if (existing !== toMerge && !(existing && existing._merged)) {\n hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n }\n }\n}\n\nfunction mergeHook$1 (f1, f2) {\n var merged = function (a, b) {\n // flow complains about extra args which is why we use any\n f1(a, b);\n f2(a, b);\n };\n merged._merged = true;\n return merged\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input'\n ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n var existing = on[event];\n var callback = data.model.callback;\n if (isDef(existing)) {\n if (\n Array.isArray(existing)\n ? existing.indexOf(callback) === -1\n : existing !== callback\n ) {\n on[event] = [callback].concat(existing);\n }\n } else {\n on[event] = callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n if (process.env.NODE_ENV !== 'production' && isDef(data) && isDef(data.nativeOn)) {\n warn(\n (\"The .native modifier for v-on is only valid on components but it was used on <\" + tag + \">.\"),\n context\n );\n }\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (Array.isArray(vnode)) {\n return vnode\n } else if (isDef(vnode)) {\n if (isDef(ns)) { applyNS(vnode, ns); }\n if (isDef(data)) { registerDeepBindings(data); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (\n isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n if (isObject(data.class)) {\n traverse(data.class);\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null; // v-once cached trees\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (_parentVnode) {\n vm.$scopedSlots = normalizeScopedSlots(\n _parentVnode.data.scopedSlots,\n vm.$slots,\n vm.$scopedSlots\n );\n }\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n // There's no need to maintain a stack because all render fns are called\n // separately from one another. Nested component's render fns are called\n // when parent component is patched.\n currentRenderingInstance = vm;\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } finally {\n currentRenderingInstance = null;\n }\n // if the returned array contains only a single node, allow it\n if (Array.isArray(vnode) && vnode.length === 1) {\n vnode = vnode[0];\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n var owner = currentRenderingInstance;\n if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n // already pending\n factory.owners.push(owner);\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (owner && !isDef(factory.owners)) {\n var owners = factory.owners = [owner];\n var sync = true;\n var timerLoading = null;\n var timerTimeout = null\n\n ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });\n\n var forceRender = function (renderCompleted) {\n for (var i = 0, l = owners.length; i < l; i++) {\n (owners[i]).$forceUpdate();\n }\n\n if (renderCompleted) {\n owners.length = 0;\n if (timerLoading !== null) {\n clearTimeout(timerLoading);\n timerLoading = null;\n }\n if (timerTimeout !== null) {\n clearTimeout(timerTimeout);\n timerTimeout = null;\n }\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender(true);\n } else {\n owners.length = 0;\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender(true);\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (isPromise(res)) {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isPromise(res.component)) {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n timerLoading = setTimeout(function () {\n timerLoading = null;\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender(false);\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n timerTimeout = setTimeout(function () {\n timerTimeout = null;\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn) {\n target.$on(event, fn);\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction createOnceHandler (event, fn) {\n var _target = target;\n return function onceHandler () {\n var res = fn.apply(null, arguments);\n if (res !== null) {\n _target.$off(event, onceHandler);\n }\n }\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n vm.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n vm.$off(event[i$1], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (!fn) {\n vm._events[event] = null;\n return vm\n }\n // specific handler\n var cb;\n var i = cbs.length;\n while (i--) {\n cb = cbs[i];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n var info = \"event handler for \\\"\" + event + \"\\\"\";\n for (var i = 0, l = cbs.length; i < l; i++) {\n invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n }\n }\n return vm\n };\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n return function () {\n activeInstance = prevActiveInstance;\n }\n}\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var restoreActiveInstance = setActiveInstance(vm);\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n restoreActiveInstance();\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren.\n\n // check if there are dynamic scopedSlots (hand-written or compiled but with\n // dynamic slot names). Static scoped slots compiled from template has the\n // \"$stable\" marker.\n var newScopedSlots = parentVnode.data.scopedSlots;\n var oldScopedSlots = vm.$scopedSlots;\n var hasDynamicScopedSlot = !!(\n (newScopedSlots && !newScopedSlots.$stable) ||\n (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)\n );\n\n // Any static slot children from the parent may have changed during parent's\n // update. Dynamic scoped slots may also have changed. In such cases, a forced\n // update is necessary to ensure correctness.\n var needsForceUpdate = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n hasDynamicScopedSlot\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n toggleObserving(true);\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n \n // fixed by xxxxxx update properties(mp runtime)\n vm._$updateProperties && vm._$updateProperties(vm);\n \n // update listeners\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n\n // resolve slots + force update if has children\n if (needsForceUpdate) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n var info = hook + \" hook\";\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n popTarget();\n}\n\n/* */\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n var performance = window.performance;\n if (\n performance &&\n typeof performance.now === 'function' &&\n getNow() > document.createEvent('Event').timeStamp\n ) {\n // if the event timestamp, although evaluated AFTER the Date.now(), is\n // smaller than it, it means the event is using a hi-res timestamp,\n // and we need to use the hi-res version for event listener timestamps as\n // well.\n getNow = function () { return performance.now(); };\n }\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n currentFlushTimestamp = getNow();\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n if (watcher.before) {\n watcher.before();\n }\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n flushSchedulerQueue();\n return\n }\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\n\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options,\n isRenderWatcher\n) {\n this.vm = vm;\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n this.before = options.before;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = noop;\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var i = this.deps.length;\n while (i--) {\n var dep = this.deps[i];\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var i = this.deps.length;\n while (i--) {\n this.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this.deps[i].removeSub(this);\n }\n this.active = false;\n }\n};\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n if (!isRoot) {\n toggleObserving(false);\n }\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive$$1(props, key, value, function () {\n if (!isRoot && !isUpdatingChildComponent) {\n {\n if(vm.mpHost === 'mp-baidu'){//百度 observer 在 setData callback 之后触发,直接忽略该 warn\n return\n }\n //fixed by xxxxxx __next_tick_pending,uni://form-field 时不告警\n if(\n key === 'value' && \n Array.isArray(vm.$options.behaviors) &&\n vm.$options.behaviors.indexOf('uni://form-field') !== -1\n ){\n return\n }\n if(vm._getFormData){\n return\n }\n var $parent = vm.$parent;\n while($parent){\n if($parent.__next_tick_pending){\n return \n }\n $parent = $parent.$parent;\n }\n }\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive$$1(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n toggleObserving(true);\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n } finally {\n popTarget();\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : createGetterInvoker(userDef);\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : createGetterInvoker(userDef.get)\n : noop;\n sharedPropertyDefinition.set = userDef.set || noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.SharedObject.target) {// fixed by xxxxxx\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction createGetterInvoker(fn) {\n return function computedGetter () {\n return fn.call(this, this)\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof methods[key] !== 'function') {\n warn(\n \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n expOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function () {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n try {\n cb.call(vm, watcher.value);\n } catch (error) {\n handleError(error, vm, (\"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\"));\n }\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$3++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n !vm._$fallback && initInjections(vm); // resolve injections before data/props \n initState(vm);\n !vm._$fallback && initProvide(vm); // resolve provide after data/props\n !vm._$fallback && callHook(vm, 'created'); \n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = latest[key];\n }\n }\n return modified\n}\n\nfunction Vue (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production' && name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\n validateComponentName(id);\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\n\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n for (var key in this.cache) {\n pruneCacheEntry(this.cache, key, this.keys);\n }\n },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) { return matches(val, name); });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) { return !matches(val, name); });\n });\n },\n\n render: function render () {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n if (\n // not included\n (include && (!name || !matches(include, name))) ||\n // excluded\n (exclude && name && matches(exclude, name))\n ) {\n return vnode\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode || (slot && slot[0])\n }\n};\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive$$1\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n // 2.6 explicit observable API\n Vue.observable = function (obj) {\n observe(obj);\n return obj\n };\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n});\n\nVue.version = '2.6.11';\n\n/**\n * https://raw.githubusercontent.com/Tencent/westore/master/packages/westore/utils/diff.js\n */\nvar ARRAYTYPE = '[object Array]';\nvar OBJECTTYPE = '[object Object]';\n// const FUNCTIONTYPE = '[object Function]'\n\nfunction diff(current, pre) {\n var result = {};\n syncKeys(current, pre);\n _diff(current, pre, '', result);\n return result\n}\n\nfunction syncKeys(current, pre) {\n if (current === pre) { return }\n var rootCurrentType = type(current);\n var rootPreType = type(pre);\n if (rootCurrentType == OBJECTTYPE && rootPreType == OBJECTTYPE) {\n if(Object.keys(current).length >= Object.keys(pre).length){\n for (var key in pre) {\n var currentValue = current[key];\n if (currentValue === undefined) {\n current[key] = null;\n } else {\n syncKeys(currentValue, pre[key]);\n }\n }\n }\n } else if (rootCurrentType == ARRAYTYPE && rootPreType == ARRAYTYPE) {\n if (current.length >= pre.length) {\n pre.forEach(function (item, index) {\n syncKeys(current[index], item);\n });\n }\n }\n}\n\nfunction _diff(current, pre, path, result) {\n if (current === pre) { return }\n var rootCurrentType = type(current);\n var rootPreType = type(pre);\n if (rootCurrentType == OBJECTTYPE) {\n if (rootPreType != OBJECTTYPE || Object.keys(current).length < Object.keys(pre).length) {\n setResult(result, path, current);\n } else {\n var loop = function ( key ) {\n var currentValue = current[key];\n var preValue = pre[key];\n var currentType = type(currentValue);\n var preType = type(preValue);\n if (currentType != ARRAYTYPE && currentType != OBJECTTYPE) {\n if (currentValue != pre[key]) {\n setResult(result, (path == '' ? '' : path + \".\") + key, currentValue);\n }\n } else if (currentType == ARRAYTYPE) {\n if (preType != ARRAYTYPE) {\n setResult(result, (path == '' ? '' : path + \".\") + key, currentValue);\n } else {\n if (currentValue.length < preValue.length) {\n setResult(result, (path == '' ? '' : path + \".\") + key, currentValue);\n } else {\n currentValue.forEach(function (item, index) {\n _diff(item, preValue[index], (path == '' ? '' : path + \".\") + key + '[' + index + ']', result);\n });\n }\n }\n } else if (currentType == OBJECTTYPE) {\n if (preType != OBJECTTYPE || Object.keys(currentValue).length < Object.keys(preValue).length) {\n setResult(result, (path == '' ? '' : path + \".\") + key, currentValue);\n } else {\n for (var subKey in currentValue) {\n _diff(currentValue[subKey], preValue[subKey], (path == '' ? '' : path + \".\") + key + '.' + subKey, result);\n }\n }\n }\n };\n\n for (var key in current) loop( key );\n }\n } else if (rootCurrentType == ARRAYTYPE) {\n if (rootPreType != ARRAYTYPE) {\n setResult(result, path, current);\n } else {\n if (current.length < pre.length) {\n setResult(result, path, current);\n } else {\n current.forEach(function (item, index) {\n _diff(item, pre[index], path + '[' + index + ']', result);\n });\n }\n }\n } else {\n setResult(result, path, current);\n }\n}\n\nfunction setResult(result, k, v) {\n // if (type(v) != FUNCTIONTYPE) {\n result[k] = v;\n // }\n}\n\nfunction type(obj) {\n return Object.prototype.toString.call(obj)\n}\n\n/* */\r\n\r\nfunction flushCallbacks$1(vm) {\r\n if (vm.__next_tick_callbacks && vm.__next_tick_callbacks.length) {\r\n if (process.env.VUE_APP_DEBUG) {\r\n var mpInstance = vm.$scope;\r\n console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid +\r\n ']:flushCallbacks[' + vm.__next_tick_callbacks.length + ']');\r\n }\r\n var copies = vm.__next_tick_callbacks.slice(0);\r\n vm.__next_tick_callbacks.length = 0;\r\n for (var i = 0; i < copies.length; i++) {\r\n copies[i]();\r\n }\r\n }\r\n}\r\n\r\nfunction hasRenderWatcher(vm) {\r\n return queue.find(function (watcher) { return vm._watcher === watcher; })\r\n}\r\n\r\nfunction nextTick$1(vm, cb) {\r\n //1.nextTick 之前 已 setData 且 setData 还未回调完成\r\n //2.nextTick 之前存在 render watcher\r\n if (!vm.__next_tick_pending && !hasRenderWatcher(vm)) {\n if(process.env.VUE_APP_DEBUG){\n var mpInstance = vm.$scope;\n console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid +\n ']:nextVueTick');\n }\r\n return nextTick(cb, vm)\r\n }else{\n if(process.env.VUE_APP_DEBUG){\n var mpInstance$1 = vm.$scope;\n console.log('[' + (+new Date) + '][' + (mpInstance$1.is || mpInstance$1.route) + '][' + vm._uid +\n ']:nextMPTick');\n }\n }\r\n var _resolve;\r\n if (!vm.__next_tick_callbacks) {\r\n vm.__next_tick_callbacks = [];\r\n }\r\n vm.__next_tick_callbacks.push(function () {\r\n if (cb) {\r\n try {\r\n cb.call(vm);\r\n } catch (e) {\r\n handleError(e, vm, 'nextTick');\r\n }\r\n } else if (_resolve) {\r\n _resolve(vm);\r\n }\r\n });\r\n // $flow-disable-line\r\n if (!cb && typeof Promise !== 'undefined') {\r\n return new Promise(function (resolve) {\r\n _resolve = resolve;\r\n })\r\n }\r\n}\n\n/* */\r\n\r\nfunction cloneWithData(vm) {\r\n // 确保当前 vm 所有数据被同步\r\n var ret = Object.create(null);\r\n var dataKeys = [].concat(\r\n Object.keys(vm._data || {}),\r\n Object.keys(vm._computedWatchers || {}));\r\n\r\n dataKeys.reduce(function(ret, key) {\r\n ret[key] = vm[key];\r\n return ret\r\n }, ret);\r\n //TODO 需要把无用数据处理掉,比如 list=>l0 则 list 需要移除,否则多传输一份数据\r\n Object.assign(ret, vm.$mp.data || {});\r\n if (\r\n Array.isArray(vm.$options.behaviors) &&\r\n vm.$options.behaviors.indexOf('uni://form-field') !== -1\r\n ) { //form-field\r\n ret['name'] = vm.name;\r\n ret['value'] = vm.value;\r\n }\r\n\r\n return JSON.parse(JSON.stringify(ret))\r\n}\r\n\r\nvar patch = function(oldVnode, vnode) {\n var this$1 = this;\n\r\n if (vnode === null) { //destroy\r\n return\r\n }\r\n if (this.mpType === 'page' || this.mpType === 'component') {\r\n var mpInstance = this.$scope;\r\n var data = Object.create(null);\r\n try {\r\n data = cloneWithData(this);\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n data.__webviewId__ = mpInstance.data.__webviewId__;\r\n var mpData = Object.create(null);\r\n Object.keys(data).forEach(function (key) { //仅同步 data 中有的数据\r\n mpData[key] = mpInstance.data[key];\r\n });\r\n var diffData = this.$shouldDiffData === false ? data : diff(data, mpData);\r\n if (Object.keys(diffData).length) {\r\n if (process.env.VUE_APP_DEBUG) {\r\n console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + this._uid +\r\n ']差量更新',\r\n JSON.stringify(diffData));\r\n }\r\n this.__next_tick_pending = true;\r\n mpInstance.setData(diffData, function () {\r\n this$1.__next_tick_pending = false;\r\n flushCallbacks$1(this$1);\r\n });\r\n } else {\r\n flushCallbacks$1(this);\r\n }\r\n }\r\n};\n\n/* */\n\nfunction createEmptyRender() {\n\n}\n\nfunction mountComponent$1(\n vm,\n el,\n hydrating\n) {\n if (!vm.mpType) {//main.js 中的 new Vue\n return vm\n }\n if (vm.mpType === 'app') {\n vm.$options.render = createEmptyRender;\n }\n if (!vm.$options.render) {\n vm.$options.render = createEmptyRender;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n \n !vm._$fallback && callHook(vm, 'beforeMount');\n\n var updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n\n // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n new Watcher(vm, updateComponent, noop, {\n before: function before() {\n if (vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'beforeUpdate');\n }\n }\n }, true /* isRenderWatcher */);\n hydrating = false;\n return vm\n}\n\n/* */\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/* */\r\n\r\nvar MP_METHODS = ['createSelectorQuery', 'createIntersectionObserver', 'selectAllComponents', 'selectComponent'];\r\n\r\nfunction getTarget(obj, path) {\r\n var parts = path.split('.');\r\n var key = parts[0];\r\n if (key.indexOf('__$n') === 0) { //number index\r\n key = parseInt(key.replace('__$n', ''));\r\n }\r\n if (parts.length === 1) {\r\n return obj[key]\r\n }\r\n return getTarget(obj[key], parts.slice(1).join('.'))\r\n}\r\n\r\nfunction internalMixin(Vue) {\r\n\r\n Vue.config.errorHandler = function(err) {\n console.error(err);\n /* eslint-disable no-undef */\r\n var app = getApp();\r\n if (app && app.onError) {\r\n app.onError(err);\r\n }\r\n };\r\n\r\n var oldEmit = Vue.prototype.$emit;\r\n\r\n Vue.prototype.$emit = function(event) {\r\n if (this.$scope && event) {\r\n this.$scope['triggerEvent'](event, {\r\n __args__: toArray(arguments, 1)\r\n });\r\n }\r\n return oldEmit.apply(this, arguments)\r\n };\r\n\r\n Vue.prototype.$nextTick = function(fn) {\r\n return nextTick$1(this, fn)\r\n };\r\n\r\n MP_METHODS.forEach(function (method) {\r\n Vue.prototype[method] = function(args) {\r\n if (this.$scope && this.$scope[method]) {\r\n return this.$scope[method](args)\r\n }\r\n // mp-alipay\r\n if (typeof my === 'undefined') {\r\n return\r\n }\r\n if (method === 'createSelectorQuery') {\r\n /* eslint-disable no-undef */\r\n return my.createSelectorQuery(args)\r\n } else if (method === 'createIntersectionObserver') {\r\n /* eslint-disable no-undef */\r\n return my.createIntersectionObserver(args)\r\n }\r\n // TODO mp-alipay 暂不支持 selectAllComponents,selectComponent\r\n };\r\n });\r\n\r\n Vue.prototype.__init_provide = initProvide;\r\n\r\n Vue.prototype.__init_injections = initInjections;\r\n\r\n Vue.prototype.__call_hook = function(hook, args) {\r\n var vm = this;\r\n // #7573 disable dep collection when invoking lifecycle hooks\r\n pushTarget();\r\n var handlers = vm.$options[hook];\r\n var info = hook + \" hook\";\r\n var ret;\r\n if (handlers) {\r\n for (var i = 0, j = handlers.length; i < j; i++) {\r\n ret = invokeWithErrorHandling(handlers[i], vm, args ? [args] : null, vm, info);\r\n }\r\n }\r\n if (vm._hasHookEvent) {\r\n vm.$emit('hook:' + hook, args);\r\n }\r\n popTarget();\r\n return ret\r\n };\r\n\r\n Vue.prototype.__set_model = function(target, key, value, modifiers) {\r\n if (Array.isArray(modifiers)) {\r\n if (modifiers.indexOf('trim') !== -1) {\r\n value = value.trim();\r\n }\r\n if (modifiers.indexOf('number') !== -1) {\r\n value = this._n(value);\r\n }\r\n }\r\n if (!target) {\r\n target = this;\r\n }\r\n target[key] = value;\r\n };\r\n\r\n Vue.prototype.__set_sync = function(target, key, value) {\r\n if (!target) {\r\n target = this;\r\n }\r\n target[key] = value;\r\n };\r\n\r\n Vue.prototype.__get_orig = function(item) {\r\n if (isPlainObject(item)) {\r\n return item['$orig'] || item\r\n }\r\n return item\r\n };\r\n\r\n Vue.prototype.__get_value = function(dataPath, target) {\r\n return getTarget(target || this, dataPath)\r\n };\r\n\r\n\r\n Vue.prototype.__get_class = function(dynamicClass, staticClass) {\r\n return renderClass(staticClass, dynamicClass)\r\n };\r\n\r\n Vue.prototype.__get_style = function(dynamicStyle, staticStyle) {\r\n if (!dynamicStyle && !staticStyle) {\r\n return ''\r\n }\r\n var dynamicStyleObj = normalizeStyleBinding(dynamicStyle);\r\n var styleObj = staticStyle ? extend(staticStyle, dynamicStyleObj) : dynamicStyleObj;\r\n return Object.keys(styleObj).map(function (name) { return ((hyphenate(name)) + \":\" + (styleObj[name])); }).join(';')\r\n };\r\n\r\n Vue.prototype.__map = function(val, iteratee) {\r\n //TODO 暂不考虑 string,number\r\n var ret, i, l, keys, key;\r\n if (Array.isArray(val)) {\r\n ret = new Array(val.length);\r\n for (i = 0, l = val.length; i < l; i++) {\r\n ret[i] = iteratee(val[i], i);\r\n }\r\n return ret\r\n } else if (isObject(val)) {\r\n keys = Object.keys(val);\r\n ret = Object.create(null);\r\n for (i = 0, l = keys.length; i < l; i++) {\r\n key = keys[i];\r\n ret[key] = iteratee(val[key], key, i);\r\n }\r\n return ret\r\n }\r\n return []\r\n };\r\n\r\n}\n\n/* */\r\n\r\nvar LIFECYCLE_HOOKS$1 = [\r\n //App\r\n 'onLaunch',\r\n 'onShow',\r\n 'onHide',\r\n 'onUniNViewMessage',\n 'onError',\r\n //Page\r\n 'onLoad',\r\n // 'onShow',\r\n 'onReady',\r\n // 'onHide',\r\n 'onUnload',\r\n 'onPullDownRefresh',\r\n 'onReachBottom',\r\n 'onTabItemTap',\r\n 'onShareAppMessage',\n 'onResize',\r\n 'onPageScroll',\r\n 'onNavigationBarButtonTap',\r\n 'onBackPress',\r\n 'onNavigationBarSearchInputChanged',\r\n 'onNavigationBarSearchInputConfirmed',\r\n 'onNavigationBarSearchInputClicked',\r\n //Component\r\n // 'onReady', // 兼容旧版本,应该移除该事件\r\n 'onPageShow',\r\n 'onPageHide',\r\n 'onPageResize'\r\n];\r\nfunction lifecycleMixin$1(Vue) {\r\n\r\n //fixed vue-class-component\r\n var oldExtend = Vue.extend;\r\n Vue.extend = function(extendOptions) {\r\n extendOptions = extendOptions || {};\r\n\r\n var methods = extendOptions.methods;\r\n if (methods) {\r\n Object.keys(methods).forEach(function (methodName) {\r\n if (LIFECYCLE_HOOKS$1.indexOf(methodName)!==-1) {\r\n extendOptions[methodName] = methods[methodName];\r\n delete methods[methodName];\r\n }\r\n });\r\n }\r\n\r\n return oldExtend.call(this, extendOptions)\r\n };\r\n\r\n var strategies = Vue.config.optionMergeStrategies;\r\n var mergeHook = strategies.created;\r\n LIFECYCLE_HOOKS$1.forEach(function (hook) {\r\n strategies[hook] = mergeHook;\r\n });\r\n\r\n Vue.prototype.__lifecycle_hooks__ = LIFECYCLE_HOOKS$1;\r\n}\n\n/* */\r\n\n// install platform patch function\r\nVue.prototype.__patch__ = patch;\r\n\r\n// public mount method\r\nVue.prototype.$mount = function(\r\n el ,\r\n hydrating \r\n) {\r\n return mountComponent$1(this, el, hydrating)\r\n};\r\n\r\nlifecycleMixin$1(Vue);\r\ninternalMixin(Vue);\n\n/* */\n\nexport default Vue;\n","/*\r\n * uCharts v1.9.3.20190922\r\n * uni-app平台高性能跨全端图表,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)\r\n * Copyright (c) 2019 QIUN秋云 https://www.ucharts.cn All rights reserved.\r\n * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )\r\n * \r\n * uCharts官方网站\r\n * https://www.uCharts.cn\r\n * \r\n * 开源地址:\r\n * https://gitee.com/uCharts/uCharts\r\n * \r\n * uni-app插件市场地址:\r\n * http://ext.dcloud.net.cn/plugin?id=271\r\n * \r\n */\r\n\r\n'use strict';\r\n\r\nvar config = {\r\n yAxisWidth: 15,\r\n yAxisSplit: 5,\r\n xAxisHeight: 15,\r\n xAxisLineHeight: 15,\r\n legendHeight: 15,\r\n yAxisTitleWidth: 15,\r\n padding: [10, 10, 10, 10],\r\n pixelRatio: 1,\r\n rotate: false,\r\n columePadding: 3,\r\n fontSize: 13,\r\n //dataPointShape: ['diamond', 'circle', 'triangle', 'rect'],\r\n dataPointShape: ['circle', 'circle', 'circle', 'circle'],\r\n colors: ['#1890ff', '#2fc25b', '#facc14', '#f04864', '#8543e0', '#90ed7d'],\r\n pieChartLinePadding: 15,\r\n pieChartTextPadding: 5,\r\n xAxisTextPadding: 3,\r\n titleColor: '#333333',\r\n titleFontSize: 20,\r\n subtitleColor: '#999999',\r\n subtitleFontSize: 15,\r\n toolTipPadding: 3,\r\n toolTipBackground: '#000000',\r\n toolTipOpacity: 0.7,\r\n toolTipLineHeight: 20,\r\n radarLabelTextMargin: 15,\r\n gaugeLabelTextMargin: 15\r\n};\r\n\r\nlet assign = function (target, ...varArgs) {\r\n if (target == null) {\r\n throw new TypeError('Cannot convert undefined or null to object');\r\n }\r\n if (!varArgs || varArgs.length <= 0) {\r\n return target;\r\n }\r\n // 深度合并对象\r\n function deepAssign(obj1, obj2) {\r\n for (let key in obj2) {\r\n obj1[key] = obj1[key] && obj1[key].toString() === \"[object Object]\" ?\r\n deepAssign(obj1[key], obj2[key]) : obj1[key] = obj2[key];\r\n }\r\n return obj1;\r\n }\r\n\r\n varArgs.forEach(val => {\r\n target = deepAssign(target, val);\r\n });\r\n return target;\r\n};\r\n\r\nvar util = {\r\n toFixed: function toFixed(num, limit) {\r\n limit = limit || 2;\r\n if (this.isFloat(num)) {\r\n num = num.toFixed(limit);\r\n }\r\n return num;\r\n },\r\n isFloat: function isFloat(num) {\r\n return num % 1 !== 0;\r\n },\r\n approximatelyEqual: function approximatelyEqual(num1, num2) {\r\n return Math.abs(num1 - num2) < 1e-10;\r\n },\r\n isSameSign: function isSameSign(num1, num2) {\r\n return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2;\r\n },\r\n isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) {\r\n return this.isSameSign(p1.x, p2.x);\r\n },\r\n isCollision: function isCollision(obj1, obj2) {\r\n obj1.end = {};\r\n obj1.end.x = obj1.start.x + obj1.width;\r\n obj1.end.y = obj1.start.y - obj1.height;\r\n obj2.end = {};\r\n obj2.end.x = obj2.start.x + obj2.width;\r\n obj2.end.y = obj2.start.y - obj2.height;\r\n var flag = obj2.start.x > obj1.end.x || obj2.end.x < obj1.start.x || obj2.end.y > obj1.start.y || obj2.start.y < obj1.end.y;\r\n return !flag;\r\n }\r\n};\r\n\r\n//兼容H5点击事件\r\nfunction getH5Offset(e) {\r\n e.mp = {\r\n changedTouches: []\r\n };\r\n e.mp.changedTouches.push({\r\n x: e.offsetX,\r\n y: e.offsetY\r\n });\r\n return e;\r\n}\r\n\r\n// hex 转 rgba\r\nfunction hexToRgb(hexValue, opc) {\r\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\r\n var hex = hexValue.replace(rgx, function(m, r, g, b) {\r\n return r + r + g + g + b + b;\r\n });\r\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n var r = parseInt(rgb[1], 16);\r\n var g = parseInt(rgb[2], 16);\r\n var b = parseInt(rgb[3], 16);\r\n return 'rgba(' + r + ',' + g + ',' + b + ',' + opc + ')';\r\n}\r\n\r\nfunction findRange(num, type, limit) {\r\n if (isNaN(num)) {\r\n throw new Error('[uCharts] unvalid series data!');\r\n }\r\n limit = limit || 10;\r\n type = type ? type : 'upper';\r\n var multiple = 1;\r\n while (limit < 1) {\r\n limit *= 10;\r\n multiple *= 10;\r\n }\r\n if (type === 'upper') {\r\n num = Math.ceil(num * multiple);\r\n } else {\r\n num = Math.floor(num * multiple);\r\n }\r\n while (num % limit !== 0) {\r\n if (type === 'upper') {\r\n num++;\r\n } else {\r\n num--;\r\n }\r\n }\r\n return num / multiple;\r\n}\r\n\r\nfunction calCandleMA(dayArr, nameArr, colorArr, kdata) {\r\n let seriesTemp = [];\r\n for (let k = 0; k < dayArr.length; k++) {\r\n let seriesItem = {\r\n data: [],\r\n name: nameArr[k],\r\n color: colorArr[k]\r\n };\r\n for (let i = 0, len = kdata.length; i < len; i++) {\r\n if (i < dayArr[k]) {\r\n seriesItem.data.push(null);\r\n continue;\r\n }\r\n let sum = 0;\r\n for (let j = 0; j < dayArr[k]; j++) {\r\n sum += kdata[i - j][1];\r\n }\r\n seriesItem.data.push(+(sum / dayArr[k]).toFixed(3));\r\n }\r\n seriesTemp.push(seriesItem);\r\n }\r\n return seriesTemp;\r\n}\r\n\r\nfunction calValidDistance(self,distance, chartData, config, opts) {\r\n var dataChartAreaWidth = opts.width - opts.area[1] - opts.area[3];\r\n var dataChartWidth = chartData.eachSpacing * (opts.chartData.xAxisData.xAxisPoints.length-1);\r\n var validDistance = distance;\r\n if (distance >= 0) {\r\n validDistance = 0;\r\n\t\tself.event.trigger('scrollLeft');\r\n } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) {\r\n validDistance = dataChartAreaWidth - dataChartWidth;\r\n\t\tself.event.trigger('scrollRight');\r\n }\r\n return validDistance;\r\n}\r\n\r\nfunction isInAngleRange(angle, startAngle, endAngle) {\r\n function adjust(angle) {\r\n while (angle < 0) {\r\n angle += 2 * Math.PI;\r\n }\r\n while (angle > 2 * Math.PI) {\r\n angle -= 2 * Math.PI;\r\n }\r\n return angle;\r\n }\r\n angle = adjust(angle);\r\n startAngle = adjust(startAngle);\r\n endAngle = adjust(endAngle);\r\n if (startAngle > endAngle) {\r\n endAngle += 2 * Math.PI;\r\n if (angle < startAngle) {\r\n angle += 2 * Math.PI;\r\n }\r\n }\r\n return angle >= startAngle && angle <= endAngle;\r\n}\r\n\r\nfunction calRotateTranslate(x, y, h) {\r\n var xv = x;\r\n var yv = h - y;\r\n var transX = xv + (h - yv - xv) / Math.sqrt(2);\r\n transX *= -1;\r\n var transY = (h - yv) * (Math.sqrt(2) - 1) - (h - yv - xv) / Math.sqrt(2);\r\n return {\r\n transX: transX,\r\n transY: transY\r\n };\r\n}\r\n\r\nfunction createCurveControlPoints(points, i) {\r\n\r\n function isNotMiddlePoint(points, i) {\r\n if (points[i - 1] && points[i + 1]) {\r\n return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y,\r\n points[\r\n i + 1].y);\r\n } else {\r\n return false;\r\n }\r\n }\r\n var a = 0.2;\r\n var b = 0.2;\r\n var pAx = null;\r\n var pAy = null;\r\n var pBx = null;\r\n var pBy = null;\r\n if (i < 1) {\r\n pAx = points[0].x + (points[1].x - points[0].x) * a;\r\n pAy = points[0].y + (points[1].y - points[0].y) * a;\r\n } else {\r\n pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a;\r\n pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a;\r\n }\r\n\r\n if (i > points.length - 3) {\r\n var last = points.length - 1;\r\n pBx = points[last].x - (points[last].x - points[last - 1].x) * b;\r\n pBy = points[last].y - (points[last].y - points[last - 1].y) * b;\r\n } else {\r\n pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b;\r\n pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b;\r\n }\r\n if (isNotMiddlePoint(points, i + 1)) {\r\n pBy = points[i + 1].y;\r\n }\r\n if (isNotMiddlePoint(points, i)) {\r\n pAy = points[i].y;\r\n }\r\n\tif (pAy >= Math.max(points[i].y, points[i + 1].y) || pAy <= Math.min(points[i].y, points[i + 1].y)) {\r\n\tpAy = points[i].y;\r\n\t}\r\n\tif (pBy >= Math.max(points[i].y, points[i + 1].y) || pBy <= Math.min(points[i].y, points[i + 1].y)) {\r\n\tpBy = points[i + 1].y;\r\n\t}\r\n return {\r\n ctrA: {\r\n x: pAx,\r\n y: pAy\r\n },\r\n ctrB: {\r\n x: pBx,\r\n y: pBy\r\n }\r\n };\r\n}\r\n\r\nfunction convertCoordinateOrigin(x, y, center) {\r\n return {\r\n x: center.x + x,\r\n y: center.y - y\r\n };\r\n}\r\n\r\nfunction avoidCollision(obj, target) {\r\n if (target) {\r\n // is collision test\r\n while (util.isCollision(obj, target)) {\r\n if (obj.start.x > 0) {\r\n obj.start.y--;\r\n } else if (obj.start.x < 0) {\r\n obj.start.y++;\r\n } else {\r\n if (obj.start.y > 0) {\r\n obj.start.y++;\r\n } else {\r\n obj.start.y--;\r\n }\r\n }\r\n }\r\n }\r\n return obj;\r\n}\r\n\r\nfunction fillSeries(series, opts, config) {\r\n var index = 0;\r\n return series.map(function(item) {\r\n if (!item.color) {\r\n item.color = config.colors[index];\r\n index = (index + 1) % config.colors.length;\r\n }\r\n if (!item.index) {\r\n item.index = 0;\r\n }\r\n if (!item.type) {\r\n item.type = opts.type;\r\n }\r\n if (typeof item.show == \"undefined\") {\r\n item.show = true;\r\n }\r\n if (!item.type) {\r\n item.type = opts.type;\r\n }\r\n if (!item.pointShape) {\r\n item.pointShape = \"circle\";\r\n }\r\n if (!item.legendShape) {\r\n switch (item.type) {\r\n case 'line':\r\n item.legendShape = \"line\";\r\n break;\r\n case 'column':\r\n item.legendShape = \"rect\";\r\n break;\r\n case 'area':\r\n item.legendShape = \"triangle\";\r\n break;\r\n default:\r\n item.legendShape = \"circle\";\r\n }\r\n }\r\n return item;\r\n });\r\n}\r\n\r\nfunction getDataRange(minData, maxData) {\r\n var limit = 0;\r\n var range = maxData - minData;\r\n if (range >= 10000) {\r\n limit = 1000;\r\n } else if (range >= 1000) {\r\n limit = 100;\r\n } else if (range >= 100) {\r\n limit = 10;\r\n } else if (range >= 10) {\r\n limit = 5;\r\n } else if (range >= 1) {\r\n limit = 1;\r\n } else if (range >= 0.1) {\r\n limit = 0.1;\r\n } else if (range >= 0.01) {\r\n limit = 0.01;\r\n } else if (range >= 0.001) {\r\n limit = 0.001;\r\n } else if (range >= 0.0001) {\r\n limit = 0.0001;\r\n } else if (range >= 0.00001) {\r\n limit = 0.00001;\r\n } else {\r\n limit = 0.000001;\r\n }\r\n return {\r\n minRange: findRange(minData, 'lower', limit),\r\n maxRange: findRange(maxData, 'upper', limit)\r\n };\r\n}\r\n\r\nfunction measureText(text) {\r\n var fontSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : config.fontSize;\r\n text = String(text);\r\n var text = text.split('');\r\n var width = 0;\r\n for (let i = 0; i < text.length; i++) {\r\n let item = text[i];\r\n if (/[a-zA-Z]/.test(item)) {\r\n width += 7;\r\n } else if (/[0-9]/.test(item)) {\r\n width += 5.5;\r\n } else if (/\\./.test(item)) {\r\n width += 2.7;\r\n } else if (/-/.test(item)) {\r\n width += 3.25;\r\n } else if (/[\\u4e00-\\u9fa5]/.test(item)) {\r\n width += 10;\r\n } else if (/\\(|\\)/.test(item)) {\r\n width += 3.73;\r\n } else if (/\\s/.test(item)) {\r\n width += 2.5;\r\n } else if (/%/.test(item)) {\r\n width += 8;\r\n } else {\r\n width += 10;\r\n }\r\n }\r\n return width * fontSize / 10;\r\n}\r\n\r\nfunction dataCombine(series) {\r\n return series.reduce(function(a, b) {\r\n return (a.data ? a.data : a).concat(b.data);\r\n }, []);\r\n}\r\n\r\nfunction dataCombineStack(series, len) {\r\n var sum = new Array(len);\r\n for (var j = 0; j < sum.length; j++) {\r\n sum[j] = 0;\r\n }\r\n for (var i = 0; i < series.length; i++) {\r\n for (var j = 0; j < sum.length; j++) {\r\n sum[j] += series[i].data[j];\r\n }\r\n }\r\n return series.reduce(function(a, b) {\r\n return (a.data ? a.data : a).concat(b.data).concat(sum);\r\n }, []);\r\n}\r\n\r\nfunction getTouches(touches, opts, e) {\r\n let x, y;\r\n if (touches.clientX) {\r\n if (opts.rotate) {\r\n y = opts.height - touches.clientX * opts.pixelRatio;\r\n x = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pixelRatio / 2) * (opts.pixelRatio - 1)) *\r\n opts.pixelRatio;\r\n } else {\r\n x = touches.clientX * opts.pixelRatio;\r\n y = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pixelRatio / 2) * (opts.pixelRatio - 1)) *\r\n opts.pixelRatio;\r\n }\r\n } else {\r\n if (opts.rotate) {\r\n y = opts.height - touches.x * opts.pixelRatio;\r\n x = touches.y * opts.pixelRatio;\r\n } else {\r\n x = touches.x * opts.pixelRatio;\r\n y = touches.y * opts.pixelRatio;\r\n }\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n}\r\n\r\nfunction getSeriesDataItem(series, index) {\r\n var data = [];\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n if (item.data[index] !== null && typeof item.data[index] !== 'undefined' && item.show) {\r\n let seriesItem = {};\r\n seriesItem.color = item.color;\r\n seriesItem.type = item.type;\r\n seriesItem.style = item.style;\r\n seriesItem.pointShape = item.pointShape;\r\n seriesItem.disableLegend = item.disableLegend;\r\n seriesItem.name = item.name;\r\n seriesItem.show = item.show;\r\n seriesItem.data = item.format ? item.format(item.data[index]) : item.data[index];\r\n data.push(seriesItem);\r\n }\r\n }\r\n return data;\r\n}\r\n\r\nfunction getMaxTextListLength(list) {\r\n var lengthList = list.map(function(item) {\r\n return measureText(item);\r\n });\r\n return Math.max.apply(null, lengthList);\r\n}\r\n\r\nfunction getRadarCoordinateSeries(length) {\r\n var eachAngle = 2 * Math.PI / length;\r\n var CoordinateSeries = [];\r\n for (var i = 0; i < length; i++) {\r\n CoordinateSeries.push(eachAngle * i);\r\n }\r\n\r\n return CoordinateSeries.map(function(item) {\r\n return -1 * item + Math.PI / 2;\r\n });\r\n}\r\n\r\nfunction getToolTipData(seriesData, calPoints, index, categories) {\r\n var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\r\n\r\n var textList = seriesData.map(function(item) {\r\n\t\tlet titleText=[];\r\n\t\tif(categories){\r\n\t\t\ttitleText=categories;\r\n\t\t}else{\r\n\t\t\ttitleText=item.data;\r\n\t\t}\r\n return {\r\n text: option.format ? option.format(item, titleText[index]) : item.name + ': ' + item.data,\r\n color: item.color\r\n };\r\n });\r\n var validCalPoints = [];\r\n var offset = {\r\n x: 0,\r\n y: 0\r\n };\r\n for (let i = 0; i < calPoints.length; i++) {\r\n let points = calPoints[i];\r\n if (typeof points[index] !== 'undefined' && points[index] !== null) {\r\n validCalPoints.push(points[index]);\r\n }\r\n }\r\n for (let i = 0; i < validCalPoints.length; i++) {\r\n let item = validCalPoints[i];\r\n offset.x = Math.round(item.x);\r\n offset.y += item.y;\r\n }\r\n offset.y /= validCalPoints.length;\r\n return {\r\n textList: textList,\r\n offset: offset\r\n };\r\n}\r\n\r\nfunction getMixToolTipData(seriesData, calPoints, index, categories) {\r\n var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\r\n var textList = seriesData.map(function(item) {\r\n return {\r\n text: option.format ? option.format(item, categories[index]) : item.name + ': ' + item.data,\r\n color: item.color,\r\n disableLegend: item.disableLegend ? true : false\r\n };\r\n });\r\n textList = textList.filter(function(item) {\r\n if (item.disableLegend !== true) {\r\n return item;\r\n }\r\n });\r\n var validCalPoints = [];\r\n var offset = {\r\n x: 0,\r\n y: 0\r\n };\r\n for (let i = 0; i < calPoints.length; i++) {\r\n let points = calPoints[i];\r\n if (typeof points[index] !== 'undefined' && points[index] !== null) {\r\n validCalPoints.push(points[index]);\r\n }\r\n }\r\n for (let i = 0; i < validCalPoints.length; i++) {\r\n let item = validCalPoints[i];\r\n offset.x = Math.round(item.x);\r\n offset.y += item.y;\r\n }\r\n offset.y /= validCalPoints.length;\r\n return {\r\n textList: textList,\r\n offset: offset\r\n };\r\n}\r\n\r\nfunction getCandleToolTipData(series, seriesData, calPoints, index, categories, extra) {\r\n var option = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};\r\n let upColor = extra.color.upFill;\r\n let downColor = extra.color.downFill;\r\n //颜色顺序为开盘,收盘,最低,最高\r\n let color = [upColor, upColor, downColor, upColor];\r\n var textList = [];\r\n let text0 = {\r\n text: categories[index],\r\n color: null\r\n };\r\n textList.push(text0);\r\n seriesData.map(function(item) {\r\n if (index == 0 && item.data[1] - item.data[0] < 0) {\r\n color[1] = downColor;\r\n } else {\r\n if (item.data[0] < series[index - 1][1]) {\r\n color[0] = downColor;\r\n }\r\n if (item.data[1] < item.data[0]) {\r\n color[1] = downColor;\r\n }\r\n if (item.data[2] > series[index - 1][1]) {\r\n color[2] = upColor;\r\n }\r\n if (item.data[3] < series[index - 1][1]) {\r\n color[3] = downColor;\r\n }\r\n }\r\n let text1 = {\r\n text: '开盘:' + item.data[0],\r\n color: color[0]\r\n };\r\n let text2 = {\r\n text: '收盘:' + item.data[1],\r\n color: color[1]\r\n };\r\n let text3 = {\r\n text: '最低:' + item.data[2],\r\n color: color[2]\r\n };\r\n let text4 = {\r\n text: '最高:' + item.data[3],\r\n color: color[3]\r\n };\r\n textList.push(text1, text2, text3, text4);\r\n });\r\n var validCalPoints = [];\r\n var offset = {\r\n x: 0,\r\n y: 0\r\n };\r\n for (let i = 0; i < calPoints.length; i++) {\r\n let points = calPoints[i];\r\n if (typeof points[index] !== 'undefined' && points[index] !== null) {\r\n validCalPoints.push(points[index]);\r\n }\r\n }\r\n offset.x = Math.round(validCalPoints[0][0].x);\r\n return {\r\n textList: textList,\r\n offset: offset\r\n };\r\n}\r\n\r\nfunction filterSeries(series) {\r\n let tempSeries = [];\r\n for (let i = 0; i < series.length; i++) {\r\n if (series[i].show == true) {\r\n tempSeries.push(series[i])\r\n }\r\n }\r\n return tempSeries;\r\n}\r\n\r\nfunction findCurrentIndex(currentPoints, calPoints, opts, config) {\r\n var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\r\n var currentIndex = -1;\r\n var spacing = 0;\r\n\tlet xAxisPoints=[];\r\n\tfor(let i=0;i<calPoints[0].length;i++){\r\n\t\txAxisPoints.push(calPoints[0][i].x)\r\n\t}\r\n if((opts.type=='line' || opts.type=='area') && opts.xAxis.boundaryGap=='justify'){\r\n spacing = opts.chartData.eachSpacing/2;\r\n }\r\n\tif(!opts.categories){\r\n\t\tspacing=0\r\n\t}\r\n if (isInExactChartArea(currentPoints, opts, config)) {\r\n xAxisPoints.forEach(function(item, index) {\r\n if (currentPoints.x + offset + spacing > item) {\r\n currentIndex = index;\r\n }\r\n });\r\n }\r\n return currentIndex;\r\n}\r\n\r\nfunction findLegendIndex(currentPoints, legendData, opts) {\r\n let currentIndex = -1;\r\n if (isInExactLegendArea(currentPoints, legendData.area)) {\r\n let points = legendData.points;\r\n let index = -1;\r\n for (let i = 0, len = points.length; i < len; i++) {\r\n let item = points[i];\r\n for (let j = 0; j < item.length; j++) {\r\n index += 1;\r\n let area = item[j]['area'];\r\n if (currentPoints.x > area[0] && currentPoints.x < area[2] && currentPoints.y > area[1] && currentPoints.y < area[3]) {\r\n currentIndex = index;\r\n break;\r\n }\r\n }\r\n }\r\n return currentIndex;\r\n }\r\n return currentIndex;\r\n}\r\n\r\nfunction isInExactLegendArea(currentPoints, area) {\r\n return currentPoints.x > area.start.x && currentPoints.x < area.end.x && currentPoints.y > area.start.y &&\r\n currentPoints.y < area.end.y;\r\n}\r\n\r\nfunction isInExactChartArea(currentPoints, opts, config) {\r\n return currentPoints.x <= opts.width - opts.area[1] + 10 && currentPoints.x >= opts.area[3] -10 && currentPoints.y >= opts.area[0] && currentPoints.y <= opts.height - opts.area[2];\r\n}\r\n\r\nfunction findRadarChartCurrentIndex(currentPoints, radarData, count) {\r\n var eachAngleArea = 2 * Math.PI / count;\r\n var currentIndex = -1;\r\n if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) {\r\n var fixAngle = function fixAngle(angle) {\r\n if (angle < 0) {\r\n angle += 2 * Math.PI;\r\n }\r\n if (angle > 2 * Math.PI) {\r\n angle -= 2 * Math.PI;\r\n }\r\n return angle;\r\n };\r\n\r\n var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x);\r\n angle = -1 * angle;\r\n if (angle < 0) {\r\n angle += 2 * Math.PI;\r\n }\r\n\r\n var angleList = radarData.angleList.map(function(item) {\r\n item = fixAngle(-1 * item);\r\n\r\n return item;\r\n });\r\n\r\n angleList.forEach(function(item, index) {\r\n var rangeStart = fixAngle(item - eachAngleArea / 2);\r\n var rangeEnd = fixAngle(item + eachAngleArea / 2);\r\n if (rangeEnd < rangeStart) {\r\n rangeEnd += 2 * Math.PI;\r\n }\r\n if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <=\r\n rangeEnd) {\r\n currentIndex = index;\r\n }\r\n });\r\n }\r\n\r\n return currentIndex;\r\n}\r\n\r\nfunction findFunnelChartCurrentIndex(currentPoints, funnelData) {\r\n var currentIndex = -1;\r\n for (var i = 0, len = funnelData.series.length; i < len; i++) {\r\n var item = funnelData.series[i];\r\n if (currentPoints.x > item.funnelArea[0] && currentPoints.x < item.funnelArea[2] && currentPoints.y > item.funnelArea[1] && currentPoints.y < item.funnelArea[3]) {\r\n currentIndex = i;\r\n break;\r\n }\r\n }\r\n return currentIndex;\r\n}\r\n\r\nfunction findWordChartCurrentIndex(currentPoints, wordData) {\r\n var currentIndex = -1;\r\n for (var i = 0, len = wordData.length; i < len; i++) {\r\n var item = wordData[i];\r\n if (currentPoints.x > item.area[0] && currentPoints.x < item.area[2] && currentPoints.y > item.area[1] && currentPoints.y < item.area[3]) {\r\n currentIndex = i;\r\n break;\r\n }\r\n }\r\n return currentIndex;\r\n}\r\n\r\nfunction findMapChartCurrentIndex(currentPoints, opts) {\r\n var currentIndex = -1;\r\n var cData=opts.chartData.mapData;\r\n var data=opts.series;\r\n var tmp=pointToCoordinate(currentPoints.y, currentPoints.x,cData.bounds,cData.scale,cData.xoffset,cData.yoffset);\r\n var poi=[tmp.x, tmp.y];\r\n for (var i = 0, len = data.length; i < len; i++) {\r\n var item = data[i].geometry.coordinates;\r\n if(isPoiWithinPoly(poi,item)){\r\n currentIndex = i;\r\n break;\r\n }\r\n }\r\n return currentIndex;\r\n}\r\n\r\nfunction findPieChartCurrentIndex(currentPoints, pieData) {\r\n var currentIndex = -1;\r\n if (isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {\r\n var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);\r\n angle = -angle;\r\n for (var i = 0, len = pieData.series.length; i < len; i++) {\r\n var item = pieData.series[i];\r\n if (isInAngleRange(angle, item._start_, item._start_ + item._proportion_ * 2 * Math.PI)) {\r\n currentIndex = i;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return currentIndex;\r\n}\r\n\r\nfunction isInExactPieChartArea(currentPoints, center, radius) {\r\n return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2);\r\n}\r\n\r\nfunction splitPoints(points) {\r\n var newPoints = [];\r\n var items = [];\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n items.push(item);\r\n } else {\r\n if (items.length) {\r\n newPoints.push(items);\r\n }\r\n items = [];\r\n }\r\n });\r\n if (items.length) {\r\n newPoints.push(items);\r\n }\r\n\r\n return newPoints;\r\n}\r\n\r\nfunction calLegendData(series, opts, config, chartData) {\r\n let legendData = {\r\n area: {\r\n start: {\r\n x: 0,\r\n y: 0\r\n },\r\n end: {\r\n x: 0,\r\n y: 0\r\n },\r\n width: 0,\r\n height: 0,\r\n wholeWidth: 0,\r\n wholeHeight: 0\r\n },\r\n points: [],\r\n widthArr: [],\r\n heightArr: []\r\n };\r\n if (opts.legend.show === false) {\r\n chartData.legendData = legendData;\r\n return legendData;\r\n }\r\n\r\n let padding = opts.legend.padding;\r\n let margin = opts.legend.margin;\r\n let fontSize = opts.legend.fontSize;\r\n let shapeWidth = 15 * opts.pixelRatio;\r\n let shapeRight = 5 * opts.pixelRatio;\r\n let lineHeight = Math.max(opts.legend.lineHeight * opts.pixelRatio, fontSize);\r\n if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {\r\n let legendList = [];\r\n let widthCount = 0;\r\n let widthCountArr = [];\r\n let currentRow = [];\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n let itemWidth = shapeWidth + shapeRight + measureText(item.name || 'undefined', fontSize) + opts.legend.itemGap;\r\n if (widthCount + itemWidth > opts.width - opts.padding[1] - opts.padding[3]) {\r\n legendList.push(currentRow);\r\n widthCountArr.push(widthCount - opts.legend.itemGap);\r\n widthCount = itemWidth;\r\n currentRow = [item];\r\n } else {\r\n widthCount += itemWidth;\r\n currentRow.push(item);\r\n }\r\n }\r\n if (currentRow.length) {\r\n legendList.push(currentRow);\r\n widthCountArr.push(widthCount - opts.legend.itemGap);\r\n legendData.widthArr = widthCountArr;\r\n let legendWidth = Math.max.apply(null, widthCountArr);\r\n switch (opts.legend.float) {\r\n case 'left':\r\n legendData.area.start.x = opts.padding[3];\r\n legendData.area.end.x = opts.padding[3] + 2 * padding;\r\n break;\r\n case 'right':\r\n legendData.area.start.x = opts.width - opts.padding[1] - legendWidth - 2 * padding;\r\n legendData.area.end.x = opts.width - opts.padding[1];\r\n break;\r\n default:\r\n legendData.area.start.x = (opts.width - legendWidth) / 2 - padding;\r\n legendData.area.end.x = (opts.width + legendWidth) / 2 + padding;\r\n }\r\n legendData.area.width = legendWidth + 2 * padding;\r\n legendData.area.wholeWidth = legendWidth + 2 * padding;\r\n legendData.area.height = legendList.length * lineHeight + 2 * padding;\r\n legendData.area.wholeHeight = legendList.length * lineHeight + 2 * padding + 2 * margin;\r\n legendData.points = legendList;\r\n }\r\n } else {\r\n let len = series.length;\r\n let maxHeight = opts.height - opts.padding[0] - opts.padding[2] - 2 * margin - 2 * padding;\r\n let maxLength = Math.min(Math.floor(maxHeight / lineHeight), len);\r\n legendData.area.height = maxLength * lineHeight + padding * 2;\r\n legendData.area.wholeHeight = maxLength * lineHeight + padding * 2;\r\n switch (opts.legend.float) {\r\n case 'top':\r\n legendData.area.start.y = opts.padding[0] + margin;\r\n legendData.area.end.y = opts.padding[0] + margin + legendData.area.height;\r\n break;\r\n case 'bottom':\r\n legendData.area.start.y = opts.height - opts.padding[2] - margin - legendData.area.height;\r\n legendData.area.end.y = opts.height - opts.padding[2] - margin;\r\n break;\r\n default:\r\n legendData.area.start.y = (opts.height - legendData.area.height) / 2;\r\n legendData.area.end.y = (opts.height + legendData.area.height) / 2;\r\n }\r\n let lineNum = len % maxLength === 0 ? len / maxLength : Math.floor((len / maxLength) + 1);\r\n let currentRow = [];\r\n for (let i = 0; i < lineNum; i++) {\r\n let temp = series.slice(i * maxLength, i * maxLength + maxLength);\r\n currentRow.push(temp);\r\n }\r\n\r\n legendData.points = currentRow;\r\n\r\n if (currentRow.length) {\r\n for (let i = 0; i < currentRow.length; i++) {\r\n let item = currentRow[i];\r\n let maxWidth = 0;\r\n for (let j = 0; j < item.length; j++) {\r\n let itemWidth = shapeWidth + shapeRight + measureText(item[j].name || 'undefined', fontSize) + opts.legend.itemGap;\r\n if (itemWidth > maxWidth) {\r\n maxWidth = itemWidth;\r\n }\r\n }\r\n legendData.widthArr.push(maxWidth);\r\n legendData.heightArr.push(item.length * lineHeight + padding * 2);\r\n }\r\n let legendWidth = 0\r\n for (let i = 0; i < legendData.widthArr.length; i++) {\r\n legendWidth += legendData.widthArr[i];\r\n }\r\n legendData.area.width = legendWidth - opts.legend.itemGap + 2 * padding;\r\n legendData.area.wholeWidth = legendData.area.width + padding;\r\n }\r\n }\r\n\r\n switch (opts.legend.position) {\r\n case 'top':\r\n legendData.area.start.y = opts.padding[0] + margin;\r\n legendData.area.end.y = opts.padding[0] + margin + legendData.area.height;\r\n break;\r\n case 'bottom':\r\n legendData.area.start.y = opts.height - opts.padding[2] - legendData.area.height - margin;\r\n legendData.area.end.y = opts.height - opts.padding[2] - margin;\r\n break;\r\n case 'left':\r\n legendData.area.start.x = opts.padding[3];\r\n legendData.area.end.x = opts.padding[3] + legendData.area.width;\r\n break;\r\n case 'right':\r\n legendData.area.start.x = opts.width - opts.padding[1] - legendData.area.width;\r\n legendData.area.end.x = opts.width - opts.padding[1];\r\n break;\r\n }\r\n chartData.legendData = legendData;\r\n return legendData;\r\n}\r\n\r\nfunction calCategoriesData(categories, opts, config, eachSpacing) {\r\n var result = {\r\n angle: 0,\r\n xAxisHeight: config.xAxisHeight\r\n };\r\n var categoriesTextLenth = categories.map(function(item) {\r\n return measureText(item,opts.xAxis.fontSize||config.fontSize);\r\n });\r\n var maxTextLength = Math.max.apply(this, categoriesTextLenth);\r\n\r\n if (opts.xAxis.rotateLabel == true && maxTextLength + 2 * config.xAxisTextPadding > eachSpacing) {\r\n result.angle = 45 * Math.PI / 180;\r\n result.xAxisHeight = 2 * config.xAxisTextPadding + maxTextLength * Math.sin(result.angle);\r\n }\r\n return result;\r\n}\r\n\r\nfunction getXAxisTextList(series, opts, config) {\r\n var index = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;\r\n var data = dataCombine(series);\r\n var sorted = [];\r\n // remove null from data\r\n data = data.filter(function(item) {\r\n //return item !== null;\r\n if (typeof item === 'object' && item !== null) {\r\n if (item.constructor == Array) {\r\n return item !== null;\r\n } else {\r\n return item.value !== null;\r\n }\r\n } else {\r\n return item !== null;\r\n }\r\n });\r\n data.map(function(item) {\r\n if (typeof item === 'object') {\r\n if (item.constructor == Array) {\r\n\t\t\t\tif(opts.type=='candle'){\r\n\t\t\t\t\titem.map(function(subitem) {\r\n\t\t\t\t\t sorted.push(subitem);\r\n\t\t\t\t\t})\r\n\t\t\t\t}else{\r\n\t\t\t\t\tsorted.push(item[0]);\r\n\t\t\t\t}\r\n } else {\r\n sorted.push(item.value);\r\n }\r\n } else {\r\n sorted.push(item);\r\n }\r\n })\r\n\t\r\n var minData = 0;\r\n var maxData = 0;\r\n if (sorted.length > 0) {\r\n minData = Math.min.apply(this, sorted);\r\n maxData = Math.max.apply(this, sorted);\r\n }\r\n //为了兼容v1.9.0之前的项目\r\n if(index>-1){\r\n if (typeof opts.xAxis.data[index].min === 'number') {\r\n minData = Math.min(opts.xAxis.data[index].min, minData);\r\n }\r\n if (typeof opts.xAxis.data[index].max === 'number') {\r\n maxData = Math.max(opts.xAxis.data[index].max, maxData);\r\n }\r\n }else{\r\n if (typeof opts.xAxis.min === 'number') {\r\n minData = Math.min(opts.xAxis.min, minData);\r\n }\r\n if (typeof opts.xAxis.max === 'number') {\r\n maxData = Math.max(opts.xAxis.max, maxData);\r\n }\r\n }\r\n \r\n\r\n if (minData === maxData) {\r\n var rangeSpan = maxData || 10;\r\n maxData += rangeSpan;\r\n }\r\n\r\n var dataRange = getDataRange(minData, maxData);\r\n var minRange = dataRange.minRange;\r\n var maxRange = dataRange.maxRange;\r\n\r\n var range = [];\r\n var eachRange = (maxRange - minRange) / opts.xAxis.splitNumber;\r\n\r\n for (var i = 0; i <= opts.xAxis.splitNumber; i++) {\r\n range.push(minRange + eachRange * i);\r\n }\r\n return range;\r\n}\r\n\r\nfunction calXAxisData(series, opts, config){\r\n var result = {\r\n angle: 0,\r\n xAxisHeight: config.xAxisHeight\r\n };\r\n\r\n result.ranges = getXAxisTextList(series, opts, config);\r\n result.rangesFormat = result.ranges.map(function(item){\r\n item = opts.xAxis.format? opts.xAxis.format(item):util.toFixed(item, 2);\r\n return item;\r\n });\r\n var xAxisScaleValues = result.ranges.map(function (item) {\r\n // 如果刻度值是浮点数,则保留两位小数\r\n item = util.toFixed(item, 2);\r\n // 若有自定义格式则调用自定义的格式化函数\r\n item = opts.xAxis.format ? opts.xAxis.format(Number(item)) : item;\r\n return item;\r\n });\r\n\r\n result = Object.assign(result,getXAxisPoints(xAxisScaleValues, opts, config));\r\n // 计算X轴刻度的属性譬如每个刻度的间隔,刻度的起始点\\结束点以及总长\r\n var eachSpacing = result.eachSpacing;\r\n\r\n var textLength = xAxisScaleValues.map(function (item) {\r\n return measureText(item);\r\n });\r\n \r\n // get max length of categories text\r\n var maxTextLength = Math.max.apply(this, textLength);\r\n\r\n // 如果刻度值文本内容过长,则将其逆时针旋转45°\r\n if (maxTextLength + 2 * config.xAxisTextPadding > eachSpacing) {\r\n result.angle = 45 * Math.PI / 180;\r\n result.xAxisHeight = 2 * config.xAxisTextPadding + maxTextLength * Math.sin(result.angle);\r\n }\r\n\r\n if (opts.xAxis.disabled === true) {\r\n result.xAxisHeight = 0;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction getRadarDataPoints(angleList, center, radius, series, opts) {\r\n var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\r\n\r\n var radarOption = opts.extra.radar || {};\r\n radarOption.max = radarOption.max || 0;\r\n var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));\r\n\r\n var data = [];\r\n for (let i = 0; i < series.length; i++) {\r\n let each = series[i];\r\n let listItem = {};\r\n listItem.color = each.color;\r\n\t\tlistItem.legendShape = each.legendShape;\r\n\t\tlistItem.pointShape = each.pointShape;\r\n listItem.data = [];\r\n each.data.forEach(function(item, index) {\r\n let tmp = {};\r\n tmp.angle = angleList[index];\r\n\r\n tmp.proportion = item / maxData;\r\n tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion *\r\n process * Math.sin(tmp.angle), center);\r\n listItem.data.push(tmp);\r\n });\r\n\r\n data.push(listItem);\r\n }\r\n\r\n return data;\r\n}\r\n\r\nfunction getPieDataPoints(series, radius) {\r\n var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\r\n\r\n var count = 0;\r\n var _start_ = 0;\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n item.data = item.data === null ? 0 : item.data;\r\n count += item.data;\r\n }\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n item.data = item.data === null ? 0 : item.data;\r\n if (count === 0) {\r\n item._proportion_ = 1 / series.length * process;\r\n } else {\r\n item._proportion_ = item.data / count * process;\r\n }\r\n item._radius_ = radius;\r\n }\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n item._start_ = _start_;\r\n _start_ += 2 * item._proportion_ * Math.PI;\r\n }\r\n\r\n return series;\r\n}\r\n\r\nfunction getFunnelDataPoints(series, radius) {\r\n var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\r\n series = series.sort(function(a,b){return parseInt(b.data)-parseInt(a.data);});\r\n for (let i = 0; i < series.length; i++) {\r\n series[i].radius = series[i].data/series[0].data*radius*process;\r\n series[i]._proportion_ = series[i].data/series[0].data;\r\n }\r\n return series.reverse();\r\n}\r\n\r\nfunction getRoseDataPoints(series, type, minRadius, radius) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n var count = 0;\r\n var _start_ = 0;\r\n\r\n var dataArr = [];\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n item.data = item.data === null ? 0 : item.data;\r\n count += item.data;\r\n dataArr.push(item.data);\r\n }\r\n \r\n var minData = Math.min.apply(null, dataArr);\r\n var maxData = Math.max.apply(null, dataArr);\r\n var radiusLength = radius - minRadius;\r\n \r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n item.data = item.data === null ? 0 : item.data;\r\n if (count === 0 || type == 'area') {\r\n item._proportion_ = item.data / count * process;\r\n item._rose_proportion_ = 1 / series.length * process;\r\n } else {\r\n item._proportion_ = item.data / count * process;\r\n item._rose_proportion_ = item.data / count * process;\r\n }\r\n item._radius_ = minRadius + radiusLength * ((item.data - minData) / (maxData - minData));\r\n }\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n item._start_ = _start_;\r\n _start_ += 2 * item._rose_proportion_ * Math.PI;\r\n }\r\n\r\n return series;\r\n}\r\n\r\nfunction getArcbarDataPoints(series, arcbarOption) {\r\n var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\r\n if (process == 1) {\r\n process = 0.999999;\r\n }\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n item.data = item.data === null ? 0 : item.data;\r\n let totalAngle;\r\n if (arcbarOption.type == 'circle') {\r\n totalAngle = 2;\r\n } else {\r\n\t\t\tif (arcbarOption.endAngle < arcbarOption.startAngle) {\r\n\t\t\t totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;\r\n\t\t\t} else{\r\n\t\t\t totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;\r\n\t\t\t}\r\n }\r\n item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle;\r\n if (item._proportion_ >= 2) {\r\n item._proportion_ = item._proportion_ % 2;\r\n }\r\n }\r\n return series;\r\n}\r\n\r\nfunction getGaugeAxisPoints(categories, startAngle, endAngle) {\r\n let totalAngle = startAngle - endAngle + 1;\r\n let tempStartAngle = startAngle;\r\n for (let i = 0; i < categories.length; i++) {\r\n categories[i].value = categories[i].value === null ? 0 : categories[i].value;\r\n categories[i]._startAngle_ = tempStartAngle;\r\n categories[i]._endAngle_ = totalAngle * categories[i].value + startAngle;\r\n if (categories[i]._endAngle_ >= 2) {\r\n categories[i]._endAngle_ = categories[i]._endAngle_ % 2;\r\n }\r\n tempStartAngle = categories[i]._endAngle_;\r\n }\r\n return categories;\r\n}\r\n\r\nfunction getGaugeDataPoints(series, categories, gaugeOption) {\r\n let process = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n item.data = item.data === null ? 0 : item.data;\r\n if (gaugeOption.pointer.color == 'auto') {\r\n for (let i = 0; i < categories.length; i++) {\r\n if (item.data <= categories[i].value) {\r\n item.color = categories[i].color;\r\n break;\r\n }\r\n }\r\n } else {\r\n item.color = gaugeOption.pointer.color;\r\n }\r\n let totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;\r\n item._endAngle_ = totalAngle * item.data + gaugeOption.startAngle;\r\n item._oldAngle_ = gaugeOption.oldAngle;\r\n if (gaugeOption.oldAngle < gaugeOption.endAngle) {\r\n item._oldAngle_ += 2;\r\n }\r\n if (item.data >= gaugeOption.oldData) {\r\n item._proportion_ = (item._endAngle_ - item._oldAngle_) * process + gaugeOption.oldAngle;\r\n } else {\r\n item._proportion_ = item._oldAngle_ - (item._oldAngle_ - item._endAngle_) * process;\r\n }\r\n if (item._proportion_ >= 2) {\r\n item._proportion_ = item._proportion_ % 2;\r\n }\r\n }\r\n return series;\r\n}\r\n\r\nfunction getPieTextMaxLength(series) {\r\n series = getPieDataPoints(series);\r\n let maxLength = 0;\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n let text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%';\r\n maxLength = Math.max(maxLength, measureText(text));\r\n }\r\n\r\n return maxLength;\r\n}\r\n\r\nfunction fixColumeData(points, eachSpacing, columnLen, index, config, opts) {\r\n return points.map(function(item) {\r\n if (item === null) {\r\n return null;\r\n }\r\n item.width = Math.ceil((eachSpacing - 2 * config.columePadding) / columnLen);\r\n\r\n if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {\r\n item.width = Math.min(item.width, +opts.extra.column.width);\r\n }\r\n if (item.width <= 0) {\r\n item.width = 1;\r\n }\r\n item.x += (index + 0.5 - columnLen / 2) * item.width;\r\n return item;\r\n });\r\n}\r\n\r\nfunction fixColumeMeterData(points, eachSpacing, columnLen, index, config, opts, border) {\r\n return points.map(function(item) {\r\n if (item === null) {\r\n return null;\r\n }\r\n item.width = Math.ceil((eachSpacing - 2 * config.columePadding) / 2);\r\n\r\n if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {\r\n item.width = Math.min(item.width, +opts.extra.column.width);\r\n }\r\n\r\n if (index > 0) {\r\n item.width -= 2 * border;\r\n }\r\n return item;\r\n });\r\n}\r\n\r\nfunction fixColumeStackData(points, eachSpacing, columnLen, index, config, opts, series) {\r\n\r\n return points.map(function(item, indexn) {\r\n\r\n if (item === null) {\r\n return null;\r\n }\r\n item.width = Math.ceil((eachSpacing - 2 * config.columePadding) / 2);\r\n\r\n if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {\r\n item.width = Math.min(item.width, +opts.extra.column.width);\r\n }\r\n return item;\r\n });\r\n}\r\n\r\nfunction getXAxisPoints(categories, opts, config) {\r\n var spacingValid = opts.width - opts.area[1] - opts.area[3];\r\n var dataCount = opts.enableScroll ? Math.min(opts.xAxis.itemCount, categories.length) : categories.length;\r\n if((opts.type=='line' || opts.type=='area') && dataCount>1 && opts.xAxis.boundaryGap=='justify'){\r\n dataCount -=1;\r\n }\r\n var eachSpacing = spacingValid / dataCount;\r\n\r\n var xAxisPoints = [];\r\n var startX = opts.area[3];\r\n var endX = opts.width - opts.area[1];\r\n categories.forEach(function(item, index) {\r\n xAxisPoints.push(startX + index * eachSpacing);\r\n });\r\n if(opts.xAxis.boundaryGap !=='justify'){\r\n if (opts.enableScroll === true) {\r\n xAxisPoints.push(startX + categories.length * eachSpacing);\r\n } else {\r\n xAxisPoints.push(endX);\r\n }\r\n }\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n startX: startX,\r\n endX: endX,\r\n eachSpacing: eachSpacing\r\n };\r\n}\r\n\r\nfunction getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {\r\n var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;\r\n var points = [];\r\n var validHeight = opts.height - opts.area[0] - opts.area[2];\r\n data.forEach(function(item, index) {\r\n if (item === null) {\r\n points.push(null);\r\n } else {\r\n var cPoints = [];\r\n item.forEach(function(items, indexs) {\r\n var point = {};\r\n point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);\r\n var value = items.value || items;\r\n var height = validHeight * (value - minRange) / (maxRange - minRange);\r\n height *= process;\r\n point.y = opts.height - Math.round(height) - opts.area[2];\r\n cPoints.push(point);\r\n });\r\n points.push(cPoints);\r\n }\r\n });\r\n\r\n return points;\r\n}\r\n\r\nfunction getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {\r\n var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;\r\n var boundaryGap='center';\r\n if (opts.type == 'line'||opts.type == 'area'){\r\n boundaryGap=opts.xAxis.boundaryGap;\r\n }\r\n var points = [];\r\n var validHeight = opts.height - opts.area[0] - opts.area[2];\r\n\tvar validWidth = opts.width - opts.area[1] - opts.area[3];\r\n data.forEach(function(item, index) {\r\n if (item === null) {\r\n points.push(null);\r\n } else {\r\n var point = {};\r\n point.color = item.color;\r\n point.x = xAxisPoints[index];\r\n var value = item;\r\n if (typeof item === 'object' && item !== null) {\r\n\t\t\t\tif (item.constructor == Array) {\r\n\t\t\t\t\tlet xranges,xminRange,xmaxRange;\r\n\t\t\t\t\txranges = [].concat(opts.chartData.xAxisData.ranges);\r\n\t\t\t\t\t\r\n\t\t\t\t\txminRange = xranges.shift();\r\n\t\t\t\t\txmaxRange = xranges.pop();\r\n\t\t\t\t value = item[1];\r\n\t\t\t\t\tpoint.x = opts.area[3]+ validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);\r\n\t\t\t\t} else {\r\n\t\t\t\t value = item.value;\r\n\t\t\t\t}\r\n }\r\n\t\t\tif(boundaryGap=='center'){\r\n\t\t\t point.x += Math.round(eachSpacing / 2);\r\n\t\t\t}\r\n var height = validHeight * (value - minRange) / (maxRange - minRange);\r\n height *= process;\r\n point.y = opts.height - Math.round(height) - opts.area[2];\r\n points.push(point);\r\n }\r\n });\r\n\r\n return points;\r\n}\r\n\r\nfunction getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {\r\n var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;\r\n var points = [];\r\n var validHeight = opts.height - opts.area[0] - opts.area[2];\r\n\r\n data.forEach(function(item, index) {\r\n if (item === null) {\r\n points.push(null);\r\n } else {\r\n var point = {};\r\n point.color = item.color;\r\n point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);\r\n\r\n if (seriesIndex > 0) {\r\n var value = 0;\r\n for (let i = 0; i <= seriesIndex; i++) {\r\n value += stackSeries[i].data[index];\r\n }\r\n var value0 = value - item;\r\n var height = validHeight * (value - minRange) / (maxRange - minRange);\r\n var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);\r\n } else {\r\n var value = item;\r\n var height = validHeight * (value - minRange) / (maxRange - minRange);\r\n var height0 = 0;\r\n }\r\n var heightc = height0;\r\n height *= process;\r\n heightc *= process;\r\n point.y = opts.height - Math.round(height) - opts.area[2];\r\n point.y0 = opts.height - Math.round(heightc) - opts.area[2];\r\n points.push(point);\r\n }\r\n });\r\n\r\n return points;\r\n}\r\n\r\nfunction getYAxisTextList(series, opts, config, stack) {\r\n var index = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;\r\n var data;\r\n if (stack == 'stack') {\r\n data = dataCombineStack(series, opts.categories.length);\r\n } else {\r\n data = dataCombine(series);\r\n }\r\n var sorted = [];\r\n // remove null from data\r\n data = data.filter(function(item) {\r\n //return item !== null;\r\n if (typeof item === 'object' && item !== null) {\r\n if (item.constructor == Array) {\r\n return item !== null;\r\n } else {\r\n return item.value !== null;\r\n }\r\n } else {\r\n return item !== null;\r\n }\r\n });\r\n data.map(function(item) {\r\n if (typeof item === 'object') {\r\n if (item.constructor == Array) {\r\n\t\t\t\tif(opts.type=='candle'){\r\n\t\t\t\t\titem.map(function(subitem) {\r\n\t\t\t\t\t sorted.push(subitem);\r\n\t\t\t\t\t})\r\n\t\t\t\t}else{\r\n\t\t\t\t\tsorted.push(item[1]);\r\n\t\t\t\t}\r\n } else {\r\n sorted.push(item.value);\r\n }\r\n } else {\r\n sorted.push(item);\r\n }\r\n })\r\n\t\r\n var minData = 0;\r\n var maxData = 0;\r\n if (sorted.length > 0) {\r\n minData = Math.min.apply(this, sorted);\r\n maxData = Math.max.apply(this, sorted);\r\n }\r\n //为了兼容v1.9.0之前的项目\r\n if(index>-1){\r\n if (typeof opts.yAxis.data[index].min === 'number') {\r\n minData = Math.min(opts.yAxis.data[index].min, minData);\r\n }\r\n if (typeof opts.yAxis.data[index].max === 'number') {\r\n maxData = Math.max(opts.yAxis.data[index].max, maxData);\r\n }\r\n }else{\r\n if (typeof opts.yAxis.min === 'number') {\r\n minData = Math.min(opts.yAxis.min, minData);\r\n }\r\n if (typeof opts.yAxis.max === 'number') {\r\n maxData = Math.max(opts.yAxis.max, maxData);\r\n }\r\n }\r\n \r\n\r\n if (minData === maxData) {\r\n var rangeSpan = maxData || 10;\r\n maxData += rangeSpan;\r\n }\r\n\r\n var dataRange = getDataRange(minData, maxData);\r\n var minRange = dataRange.minRange;\r\n var maxRange = dataRange.maxRange;\r\n\r\n var range = [];\r\n var eachRange = (maxRange - minRange) / opts.yAxis.splitNumber;\r\n\r\n for (var i = 0; i <= opts.yAxis.splitNumber; i++) {\r\n range.push(minRange + eachRange * i);\r\n }\r\n return range.reverse();\r\n}\r\n\r\nfunction calYAxisData(series, opts, config) {\r\n //堆叠图重算Y轴\r\n var columnstyle = assign({}, {\r\n type: \"\"\r\n }, opts.extra.column);\r\n //如果是多Y轴,重新计算\r\n var YLength = opts.yAxis.data.length;\r\n var newSeries=new Array(YLength);\r\n if(YLength>0){\r\n for(let i=0;i<YLength;i++){\r\n newSeries[i]=[];\r\n for(let j=0;j<series.length;j++){\r\n if(series[j].index == i){\r\n newSeries[i].push(series[j]);\r\n }\r\n }\r\n }\r\n var rangesArr =new Array(YLength);\r\n var rangesFormatArr = new Array(YLength);\r\n var yAxisWidthArr =new Array(YLength);\r\n\t\t\r\n for(let i=0;i<YLength;i++){\r\n let yData = opts.yAxis.data[i];\r\n\t\t\t//如果总开关不显示,强制每个Y轴为不显示\r\n\t\t\tif(opts.yAxis.disabled == true){\r\n\t\t\t\tyData.disabled = true;\r\n\t\t\t}\r\n\t\t\trangesArr[i]=getYAxisTextList(newSeries[i], opts, config, columnstyle.type,i);\r\n\t\t\tlet yAxisFontSizes = yData.fontSize || config.fontSize;\r\n\t\t\tyAxisWidthArr[i] = {position:yData.position?yData.position:'left',width:0};\r\n\t\t\trangesFormatArr[i]= rangesArr[i].map(function(items) {\r\n\t\t\t\titems = util.toFixed(items, 6);\r\n\t\t\t\titems = yData.format ? yData.format(Number(items)) : items;\r\n\t\t\t\tyAxisWidthArr[i].width = Math.max(yAxisWidthArr[i].width, measureText(items, yAxisFontSizes) + 5);\r\n\t\t\t\treturn items;\r\n\t\t\t});\r\n\t\t\tlet calibration= yData.calibration? 4*opts.pixelRatio : 0 ;\r\n\t\t\tyAxisWidthArr[i].width += calibration +3*opts.pixelRatio;\r\n if (yData.disabled === true) {\r\n yAxisWidthArr[i].width=0;\r\n }\r\n }\r\n \r\n }else{\r\n var rangesArr =new Array(1);\r\n var rangesFormatArr = new Array(1);\r\n var yAxisWidthArr =new Array(1);\r\n\t\trangesArr[0] = getYAxisTextList(series, opts, config, columnstyle.type);\r\n\t\tyAxisWidthArr[0] = {position:'left',width:0};\r\n\t\tvar yAxisFontSize = opts.yAxis.fontSize || config.fontSize;\r\n\t\trangesFormatArr[0] = rangesArr[0].map(function(item) {\r\n\t\t\titem = util.toFixed(item, 6);\r\n\t\t\titem = opts.yAxis.format ? opts.yAxis.format(Number(item)) : item;\r\n\t\t\tyAxisWidthArr[0].width = Math.max(yAxisWidthArr[0].width, measureText(item, yAxisFontSize) + 5);\r\n\t\t\treturn item;\r\n\t\t});\r\n\t\tyAxisWidthArr[0].width += 3*opts.pixelRatio;\r\n\t\tif (opts.yAxis.disabled === true) {\r\n\t\t yAxisWidthArr[0] = {position:'left',width:0};\r\n\t\t opts.yAxis.data[0]={disabled:true};\r\n\t\t}else{\r\n\t\t\topts.yAxis.data[0]={disabled:false,position:'left',max:opts.yAxis.max,min:opts.yAxis.min,format:opts.yAxis.format};\r\n\t\t}\r\n \r\n }\r\n\r\n return {\r\n rangesFormat: rangesFormatArr,\r\n ranges: rangesArr,\r\n yAxisWidth: yAxisWidthArr\r\n };\r\n \r\n}\r\n\r\nfunction calTooltipYAxisData(point, series, opts, config, eachSpacing) {\r\n let ranges = [].concat(opts.chartData.yAxisData.ranges);\r\n let spacingValid = opts.height - opts.area[0] - opts.area[2];\r\n let minAxis = opts.area[0];\r\n let items=[];\r\n for(let i=0;i<ranges.length;i++){\r\n let maxVal = ranges[i].shift();\r\n let minVal = ranges[i].pop();\r\n let item = maxVal - (maxVal - minVal) * (point - minAxis) / spacingValid;\r\n item = opts.yAxis.data[i].format ? opts.yAxis.data[i].format(Number(item)) : item.toFixed(0);\r\n items.push(String(item))\r\n }\r\n return items;\r\n}\r\n\r\nfunction calMarkLineData(points, opts) {\r\n let minRange, maxRange;\r\n let spacingValid = opts.height - opts.area[0] - opts.area[2];\r\n for (let i = 0; i < points.length; i++) {\r\n points[i].yAxisIndex = points[i].yAxisIndex ? points[i].yAxisIndex:0;\r\n let range = [].concat(opts.chartData.yAxisData.ranges[points[i].yAxisIndex]);\r\n minRange = range.pop();\r\n maxRange = range.shift();\r\n let height = spacingValid * (points[i].value - minRange) / (maxRange - minRange);\r\n points[i].y = opts.height - Math.round(height) - opts.area[2];\r\n }\r\n return points;\r\n}\r\n\r\nfunction contextRotate(context, opts) {\r\n if (opts.rotateLock !== true) {\r\n context.translate(opts.height, 0);\r\n context.rotate(90 * Math.PI / 180);\r\n } else if (opts._rotate_ !== true) {\r\n context.translate(opts.height, 0);\r\n context.rotate(90 * Math.PI / 180);\r\n opts._rotate_ = true;\r\n }\r\n}\r\n\r\nfunction drawPointShape(points, color, shape, context, opts) {\r\n context.beginPath();\r\n\tif(opts.dataPointShapeType == 'hollow'){\r\n\t\tcontext.setStrokeStyle(color);\r\n\t\tcontext.setFillStyle(opts.background);\r\n\t\tcontext.setLineWidth(2 * opts.pixelRatio);\r\n\t}else{\r\n\t\tcontext.setStrokeStyle(\"#ffffff\");\r\n\t\tcontext.setFillStyle(color);\r\n\t\tcontext.setLineWidth(1 * opts.pixelRatio);\r\n\t}\r\n if (shape === 'diamond') {\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n context.moveTo(item.x, item.y - 4.5);\r\n context.lineTo(item.x - 4.5, item.y);\r\n context.lineTo(item.x, item.y + 4.5);\r\n context.lineTo(item.x + 4.5, item.y);\r\n context.lineTo(item.x, item.y - 4.5);\r\n }\r\n });\r\n } else if (shape === 'circle') {\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n context.moveTo(item.x + 2.5 * opts.pixelRatio, item.y);\r\n context.arc(item.x, item.y, 3 * opts.pixelRatio, 0, 2 * Math.PI, false);\r\n }\r\n });\r\n } else if (shape === 'rect') {\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n context.moveTo(item.x - 3.5, item.y - 3.5);\r\n context.rect(item.x - 3.5, item.y - 3.5, 7, 7);\r\n }\r\n });\r\n } else if (shape === 'triangle') {\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n context.moveTo(item.x, item.y - 4.5);\r\n context.lineTo(item.x - 4.5, item.y + 4.5);\r\n context.lineTo(item.x + 4.5, item.y + 4.5);\r\n context.lineTo(item.x, item.y - 4.5);\r\n }\r\n });\r\n }\r\n context.closePath();\r\n context.fill();\r\n context.stroke();\r\n}\r\n\r\nfunction drawRingTitle(opts, config, context, center) {\r\n var titlefontSize = opts.title.fontSize || config.titleFontSize;\r\n var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize;\r\n var title = opts.title.name || '';\r\n var subtitle = opts.subtitle.name || '';\r\n var titleFontColor = opts.title.color || config.titleColor;\r\n var subtitleFontColor = opts.subtitle.color || config.subtitleColor;\r\n var titleHeight = title ? titlefontSize : 0;\r\n var subtitleHeight = subtitle ? subtitlefontSize : 0;\r\n var margin = 5;\r\n\r\n if (subtitle) {\r\n var textWidth = measureText(subtitle, subtitlefontSize);\r\n var startX = center.x - textWidth / 2 + (opts.subtitle.offsetX || 0);\r\n var startY = center.y + subtitlefontSize / 2 + (opts.subtitle.offsetY || 0);\r\n if (title) {\r\n startY += (titleHeight + margin) / 2;\r\n }\r\n context.beginPath();\r\n context.setFontSize(subtitlefontSize);\r\n context.setFillStyle(subtitleFontColor);\r\n context.fillText(subtitle, startX, startY);\r\n context.closePath();\r\n context.stroke();\r\n }\r\n if (title) {\r\n var _textWidth = measureText(title, titlefontSize);\r\n var _startX = center.x - _textWidth / 2 + (opts.title.offsetX || 0);\r\n var _startY = center.y + titlefontSize / 2 + (opts.title.offsetY || 0);\r\n if (subtitle) {\r\n _startY -= (subtitleHeight + margin) / 2;\r\n }\r\n context.beginPath();\r\n context.setFontSize(titlefontSize);\r\n context.setFillStyle(titleFontColor);\r\n context.fillText(title, _startX, _startY);\r\n context.closePath();\r\n context.stroke();\r\n }\r\n}\r\n\r\nfunction drawPointText(points, series, config, context) {\r\n // 绘制数据文案\r\n var data = series.data;\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n //var formatVal = series.format ? series.format(data[index]) : data[index];\r\n context.beginPath();\r\n context.setFontSize(series.textSize || config.fontSize);\r\n context.setFillStyle(series.textColor || '#666666');\r\n var value = data[index]\r\n if (typeof data[index] === 'object' && data[index] !== null) {\r\n\t\t\t\tif (data[index].constructor == Array) {\r\n\t\t\t\t\tvalue = data[index][1];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvalue = data[index].value\r\n\t\t\t\t}\r\n }\r\n var formatVal = series.format ? series.format(value) : value;\r\n context.fillText(String(formatVal), item.x - measureText(formatVal, series.textSize || config.fontSize) / 2, item.y -4);\r\n context.closePath();\r\n context.stroke();\r\n }\r\n });\r\n\r\n}\r\n\r\nfunction drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context) {\r\n radius -= gaugeOption.width / 2 + config.gaugeLabelTextMargin;\r\n\r\n let totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;\r\n let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\r\n let totalNumber = gaugeOption.endNumber - gaugeOption.startNumber;\r\n let splitNumber = totalNumber / gaugeOption.splitLine.splitNumber;\r\n let nowAngle = gaugeOption.startAngle;\r\n let nowNumber = gaugeOption.startNumber;\r\n for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) {\r\n var pos = {\r\n x: radius * Math.cos(nowAngle * Math.PI),\r\n y: radius * Math.sin(nowAngle * Math.PI)\r\n };\r\n var labelText = gaugeOption.labelFormat ? gaugeOption.labelFormat(nowNumber) : nowNumber;\r\n pos.x += centerPosition.x - measureText(labelText) / 2;\r\n pos.y += centerPosition.y;\r\n var startX = pos.x;\r\n var startY = pos.y;\r\n context.beginPath();\r\n context.setFontSize(config.fontSize);\r\n context.setFillStyle(gaugeOption.labelColor || '#666666');\r\n context.fillText(labelText, startX, startY + config.fontSize / 2);\r\n context.closePath();\r\n context.stroke();\r\n\r\n nowAngle += splitAngle;\r\n if (nowAngle >= 2) {\r\n nowAngle = nowAngle % 2;\r\n }\r\n nowNumber += splitNumber;\r\n }\r\n\r\n}\r\n\r\nfunction drawRadarLabel(angleList, radius, centerPosition, opts, config, context) {\r\n var radarOption = opts.extra.radar || {};\r\n radius += config.radarLabelTextMargin;\r\n\r\n angleList.forEach(function(angle, index) {\r\n var pos = {\r\n x: radius * Math.cos(angle),\r\n y: radius * Math.sin(angle)\r\n };\r\n var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition);\r\n var startX = posRelativeCanvas.x;\r\n var startY = posRelativeCanvas.y;\r\n if (util.approximatelyEqual(pos.x, 0)) {\r\n startX -= measureText(opts.categories[index] || '') / 2;\r\n } else if (pos.x < 0) {\r\n startX -= measureText(opts.categories[index] || '');\r\n }\r\n context.beginPath();\r\n context.setFontSize(config.fontSize);\r\n context.setFillStyle(radarOption.labelColor || '#666666');\r\n context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2);\r\n context.closePath();\r\n context.stroke();\r\n });\r\n\r\n}\r\n\r\nfunction drawPieText(series, opts, config, context, radius, center) {\r\n var lineRadius = config.pieChartLinePadding;\r\n var textObjectCollection = [];\r\n var lastTextObject = null;\r\n\r\n var seriesConvert = series.map(function(item) {\r\n var text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_.toFixed(4) * 100) +'%';\r\n if(item._rose_proportion_) item._proportion_=item._rose_proportion_;\r\n var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2);\r\n var color = item.color;\r\n var radius = item._radius_;\r\n return {\r\n arc: arc,\r\n text: text,\r\n color: color,\r\n radius: radius,\r\n textColor: item.textColor,\r\n textSize: item.textSize,\r\n };\r\n });\r\n for (let i = 0; i < seriesConvert.length; i++) {\r\n let item = seriesConvert[i];\r\n // line end\r\n let orginX1 = Math.cos(item.arc) * (item.radius + lineRadius);\r\n let orginY1 = Math.sin(item.arc) * (item.radius + lineRadius);\r\n\r\n // line start\r\n let orginX2 = Math.cos(item.arc) * item.radius;\r\n let orginY2 = Math.sin(item.arc) * item.radius;\r\n\r\n // text start\r\n let orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding;\r\n let orginY3 = orginY1;\r\n let textWidth = measureText(item.text,item.textSize||config.fontSize);\r\n let startY = orginY3;\r\n\r\n if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, {\r\n x: orginX3\r\n })) {\r\n if (orginX3 > 0) {\r\n startY = Math.min(orginY3, lastTextObject.start.y);\r\n } else if (orginX1 < 0) {\r\n startY = Math.max(orginY3, lastTextObject.start.y);\r\n } else {\r\n if (orginY3 > 0) {\r\n startY = Math.max(orginY3, lastTextObject.start.y);\r\n } else {\r\n startY = Math.min(orginY3, lastTextObject.start.y);\r\n }\r\n }\r\n }\r\n if (orginX3 < 0) {\r\n orginX3 -= textWidth;\r\n }\r\n\r\n let textObject = {\r\n lineStart: {\r\n x: orginX2,\r\n y: orginY2\r\n },\r\n lineEnd: {\r\n x: orginX1,\r\n y: orginY1\r\n },\r\n start: {\r\n x: orginX3,\r\n y: startY\r\n },\r\n width: textWidth,\r\n height: config.fontSize,\r\n text: item.text,\r\n color: item.color,\r\n textColor: item.textColor,\r\n textSize: item.textSize\r\n };\r\n lastTextObject = avoidCollision(textObject, lastTextObject);\r\n textObjectCollection.push(lastTextObject);\r\n }\r\n\r\n for (let i = 0; i < textObjectCollection.length; i++) {\r\n let item = textObjectCollection[i];\r\n let lineStartPoistion = convertCoordinateOrigin(item.lineStart.x, item.lineStart.y, center);\r\n let lineEndPoistion = convertCoordinateOrigin(item.lineEnd.x, item.lineEnd.y, center);\r\n let textPosition = convertCoordinateOrigin(item.start.x, item.start.y, center);\r\n context.setLineWidth(1 * opts.pixelRatio);\r\n context.setFontSize(config.fontSize);\r\n context.beginPath();\r\n context.setStrokeStyle(item.color);\r\n context.setFillStyle(item.color);\r\n context.moveTo(lineStartPoistion.x, lineStartPoistion.y);\r\n let curveStartX = item.start.x < 0 ? textPosition.x + item.width : textPosition.x;\r\n let textStartX = item.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5;\r\n context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y);\r\n context.moveTo(lineStartPoistion.x, lineStartPoistion.y);\r\n context.stroke();\r\n context.closePath();\r\n context.beginPath();\r\n context.moveTo(textPosition.x + item.width, textPosition.y);\r\n context.arc(curveStartX, textPosition.y, 2, 0, 2 * Math.PI);\r\n context.closePath();\r\n context.fill();\r\n context.beginPath();\r\n context.setFontSize(item.textSize || config.fontSize);\r\n context.setFillStyle(item.textColor || '#666666');\r\n context.fillText(item.text, textStartX, textPosition.y + 3);\r\n context.closePath();\r\n context.stroke();\r\n context.closePath();\r\n }\r\n}\r\n\r\nfunction drawToolTipSplitLine(offsetX, opts, config, context) {\r\n var toolTipOption = opts.extra.tooltip || {};\r\n toolTipOption.gridType = toolTipOption.gridType == undefined ? 'solid' : toolTipOption.gridType;\r\n toolTipOption.dashLength = toolTipOption.dashLength == undefined ? 4 : toolTipOption.dashLength;\r\n var startY = opts.area[0];\r\n var endY = opts.height - opts.area[2];\r\n\r\n if (toolTipOption.gridType == 'dash') {\r\n context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);\r\n }\r\n context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');\r\n context.setLineWidth(1 * opts.pixelRatio);\r\n context.beginPath();\r\n context.moveTo(offsetX, startY);\r\n context.lineTo(offsetX, endY);\r\n context.stroke();\r\n context.setLineDash([]);\r\n\r\n if (toolTipOption.xAxisLabel) {\r\n let labelText = opts.categories[opts.tooltip.index];\r\n context.setFontSize(config.fontSize);\r\n let textWidth = measureText(labelText, config.fontSize);\r\n\r\n let textX = offsetX - 0.5 * textWidth;\r\n let textY = endY;\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));\r\n context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);\r\n context.setLineWidth(1 * opts.pixelRatio);\r\n context.rect(textX - config.toolTipPadding, textY, textWidth + 2 * config.toolTipPadding, config.fontSize + 2 * config.toolTipPadding);\r\n context.closePath();\r\n context.stroke();\r\n context.fill();\r\n\r\n context.beginPath();\r\n context.setFontSize(config.fontSize);\r\n context.setFillStyle(toolTipOption.labelFontColor || config.fontColor);\r\n context.fillText(String(labelText), textX, textY + config.toolTipPadding + config.fontSize);\r\n context.closePath();\r\n context.stroke();\r\n }\r\n}\r\n\r\nfunction drawMarkLine(opts, config, context) {\r\n let markLineOption = assign({}, {\r\n type: 'solid',\r\n dashLength: 4,\r\n data: []\r\n }, opts.extra.markLine);\r\n let startX = opts.area[3];\r\n let endX = opts.width - opts.area[1];\r\n let points = calMarkLineData(markLineOption.data, opts);\r\n\r\n for (let i = 0; i < points.length; i++) {\r\n let item = assign({}, {\r\n lineColor: '#DE4A42',\r\n showLabel: false,\r\n labelFontColor: '#666666',\r\n labelBgColor: '#DFE8FF',\r\n labelBgOpacity: 0.8,\r\n yAxisIndex: 0\r\n }, points[i]);\r\n\r\n if (markLineOption.type == 'dash') {\r\n context.setLineDash([markLineOption.dashLength, markLineOption.dashLength]);\r\n }\r\n context.setStrokeStyle(item.lineColor);\r\n context.setLineWidth(1 * opts.pixelRatio);\r\n context.beginPath();\r\n context.moveTo(startX, item.y);\r\n context.lineTo(endX, item.y);\r\n context.stroke();\r\n context.setLineDash([]);\r\n if (item.showLabel) {\r\n let labelText = opts.yAxis.format ? opts.yAxis.format(Number(item.value)) : item.value;\r\n context.setFontSize(config.fontSize);\r\n let textWidth = measureText(labelText, config.fontSize);\r\n let bgStartX = opts.padding[3] + config.yAxisTitleWidth - config.toolTipPadding;\r\n let bgEndX = Math.max(opts.area[3], textWidth + config.toolTipPadding * 2);\r\n let bgWidth = bgEndX - bgStartX;\r\n\r\n let textX = bgStartX + (bgWidth - textWidth) / 2;\r\n let textY = item.y;\r\n context.setFillStyle(hexToRgb(item.labelBgColor, item.labelBgOpacity));\r\n context.setStrokeStyle(item.labelBgColor);\r\n context.setLineWidth(1 * opts.pixelRatio);\r\n context.beginPath();\r\n context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 * config.toolTipPadding);\r\n context.closePath();\r\n context.stroke();\r\n context.fill();\r\n\r\n context.beginPath();\r\n context.setFontSize(config.fontSize);\r\n context.setFillStyle(item.labelFontColor);\r\n context.fillText(String(labelText), textX, textY + 0.5 * config.fontSize);\r\n context.stroke();\r\n }\r\n }\r\n}\r\n\r\nfunction drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) {\r\n var toolTipOption = assign({}, {\r\n gridType: 'solid',\r\n dashLength: 4\r\n }, opts.extra.tooltip);\r\n\r\n var startX = opts.area[3];\r\n var endX = opts.width - opts.area[1];\r\n\r\n if (toolTipOption.gridType == 'dash') {\r\n context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);\r\n }\r\n context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');\r\n context.setLineWidth(1 * opts.pixelRatio);\r\n context.beginPath();\r\n context.moveTo(startX, opts.tooltip.offset.y);\r\n context.lineTo(endX, opts.tooltip.offset.y);\r\n context.stroke();\r\n context.setLineDash([]);\r\n\r\n if (toolTipOption.yAxisLabel) {\r\n let labelText = calTooltipYAxisData(opts.tooltip.offset.y, opts.series, opts, config, eachSpacing);\r\n let widthArr = opts.chartData.yAxisData.yAxisWidth;\r\n let tStartLeft=opts.area[3];\r\n let tStartRight=opts.width-opts.area[1];\r\n for(let i=0;i<labelText.length;i++){\r\n context.setFontSize(config.fontSize);\r\n let textWidth = measureText(labelText[i], config.fontSize);\r\n let bgStartX,bgEndX,bgWidth;\r\n if(widthArr[i].position == 'left'){\r\n bgStartX = tStartLeft - widthArr[i].width;\r\n bgEndX = Math.max(bgStartX, bgStartX + textWidth + config.toolTipPadding * 2);\r\n }else{\r\n bgStartX = tStartRight;\r\n bgEndX = Math.max(bgStartX + widthArr[i].width, bgStartX + textWidth + config.toolTipPadding * 2);\r\n }\r\n bgWidth = bgEndX - bgStartX;\r\n \r\n let textX = bgStartX + (bgWidth - textWidth) / 2;\r\n let textY = opts.tooltip.offset.y;\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));\r\n context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);\r\n context.setLineWidth(1 * opts.pixelRatio);\r\n context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 * config.toolTipPadding);\r\n context.closePath();\r\n context.stroke();\r\n context.fill();\r\n \r\n context.beginPath();\r\n context.setFontSize(config.fontSize);\r\n context.setFillStyle(toolTipOption.labelFontColor || config.fontColor);\r\n context.fillText(labelText[i], textX, textY + 0.5 * config.fontSize);\r\n context.closePath();\r\n context.stroke();\r\n if(widthArr[i].position == 'left'){\r\n tStartLeft -=(widthArr[i].width + opts.yAxis.padding);\r\n }else{\r\n tStartRight +=widthArr[i].width+ opts.yAxis.padding;\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {\r\n var toolTipOption = assign({}, {\r\n activeBgColor: '#000000',\r\n activeBgOpacity: 0.08\r\n }, opts.extra.tooltip);\r\n var startY = opts.area[0];\r\n var endY = opts.height - opts.area[2];\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));\r\n context.rect(offsetX - eachSpacing / 2, startY, eachSpacing, endY - startY);\r\n context.closePath();\r\n context.fill();\r\n}\r\n\r\nfunction drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxisPoints) {\r\n var toolTipOption = assign({}, {\r\n\t\tshowBox:true,\r\n bgColor: '#000000',\r\n bgOpacity: 0.7,\r\n fontColor: '#FFFFFF'\r\n }, opts.extra.tooltip);\r\n var legendWidth = 4 * opts.pixelRatio;\r\n var legendMarginRight = 5 * opts.pixelRatio;\r\n var arrowWidth = 8 * opts.pixelRatio;\r\n var isOverRightBorder = false;\r\n if (opts.type == 'line' || opts.type == 'area' || opts.type == 'candle' || opts.type == 'mix') {\r\n drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context);\r\n }\r\n\r\n offset = assign({\r\n x: 0,\r\n y: 0\r\n }, offset);\r\n offset.y -= 8 * opts.pixelRatio;\r\n var textWidth = textList.map(function(item) {\r\n return measureText(item.text, config.fontSize);\r\n });\r\n var toolTipWidth = legendWidth + legendMarginRight + 4 * config.toolTipPadding + Math.max.apply(null, textWidth);\r\n var toolTipHeight = 2 * config.toolTipPadding + textList.length * config.toolTipLineHeight;\r\n\r\n\tif(toolTipOption.showBox == false){ return }\r\n // if beyond the right border\r\n if (offset.x - Math.abs(opts._scrollDistance_) + arrowWidth + toolTipWidth > opts.width) {\r\n isOverRightBorder = true;\r\n }\r\n if (toolTipHeight + offset.y > opts.height) {\r\n offset.y = opts.height - toolTipHeight;\r\n }\r\n // draw background rect\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(toolTipOption.bgColor || config.toolTipBackground, toolTipOption.bgOpacity || config.toolTipOpacity));\r\n if (isOverRightBorder) {\r\n context.moveTo(offset.x, offset.y + 10 * opts.pixelRatio);\r\n context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pixelRatio - 5 * opts.pixelRatio);\r\n context.lineTo(offset.x - arrowWidth, offset.y);\r\n context.lineTo(offset.x - arrowWidth - Math.round(toolTipWidth), offset.y);\r\n context.lineTo(offset.x - arrowWidth - Math.round(toolTipWidth), offset.y + toolTipHeight);\r\n context.lineTo(offset.x - arrowWidth, offset.y + toolTipHeight);\r\n context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pixelRatio + 5 * opts.pixelRatio);\r\n context.lineTo(offset.x, offset.y + 10 * opts.pixelRatio);\r\n } else {\r\n context.moveTo(offset.x, offset.y + 10 * opts.pixelRatio);\r\n context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pixelRatio - 5 * opts.pixelRatio);\r\n context.lineTo(offset.x + arrowWidth, offset.y);\r\n context.lineTo(offset.x + arrowWidth + Math.round(toolTipWidth), offset.y);\r\n context.lineTo(offset.x + arrowWidth + Math.round(toolTipWidth), offset.y + toolTipHeight);\r\n context.lineTo(offset.x + arrowWidth, offset.y + toolTipHeight);\r\n context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pixelRatio + 5 * opts.pixelRatio);\r\n context.lineTo(offset.x, offset.y + 10 * opts.pixelRatio);\r\n }\r\n\r\n context.closePath();\r\n context.fill();\r\n\r\n // draw legend\r\n textList.forEach(function(item, index) {\r\n if (item.color !== null) {\r\n context.beginPath();\r\n context.setFillStyle(item.color);\r\n var startX = offset.x + arrowWidth + 2 * config.toolTipPadding;\r\n var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index +\r\n config.toolTipPadding + 1;\r\n if (isOverRightBorder) {\r\n startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding;\r\n }\r\n context.fillRect(startX, startY, legendWidth, config.fontSize);\r\n context.closePath();\r\n }\r\n });\r\n\r\n // draw text list\r\n\r\n textList.forEach(function(item, index) {\r\n var startX = offset.x + arrowWidth + 2 * config.toolTipPadding + legendWidth + legendMarginRight;\r\n if (isOverRightBorder) {\r\n startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding + +legendWidth + legendMarginRight;\r\n }\r\n var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index +\r\n config.toolTipPadding;\r\n context.beginPath();\r\n context.setFontSize(config.fontSize);\r\n context.setFillStyle(toolTipOption.fontColor);\r\n context.fillText(item.text, startX, startY + config.fontSize);\r\n context.closePath();\r\n context.stroke();\r\n });\r\n}\r\n\r\nfunction drawYAxisTitle(title, opts, config, context) {\r\n var startX = config.xAxisHeight + (opts.height - config.xAxisHeight - measureText(title)) / 2;\r\n context.save();\r\n context.beginPath();\r\n context.setFontSize(config.fontSize);\r\n context.setFillStyle(opts.yAxis.titleFontColor || '#333333');\r\n context.translate(0, opts.height);\r\n context.rotate(-90 * Math.PI / 180);\r\n context.fillText(title, startX, opts.padding[3] + 0.5 * config.fontSize);\r\n context.closePath();\r\n context.stroke();\r\n context.restore();\r\n}\r\n\r\nfunction drawColumnDataPoints(series, opts, config, context) {\r\n let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n eachSpacing = xAxisData.eachSpacing;\r\n let columnOption = assign({}, {\r\n type: 'group',\r\n width: eachSpacing / 2,\r\n meter: {\r\n border: 4,\r\n fillColor: '#FFFFFF'\r\n }\r\n }, opts.extra.column);\r\n \r\n let calPoints = [];\r\n context.save();\r\n\t\r\n\tlet leftNum=-2;\r\n\tlet rightNum=xAxisPoints.length+2;\r\n\t\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n\t\tleftNum=Math.floor(-opts._scrollDistance_/eachSpacing)-2;\r\n\t\trightNum=leftNum+opts.xAxis.itemCount+4;\r\n }\r\n if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {\r\n drawToolTipSplitArea(opts.tooltip.offset.x, opts, config, context, eachSpacing);\r\n }\r\n\t\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges,minRange,maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n \r\n var data = eachSeries.data;\r\n switch (columnOption.type) {\r\n case 'group':\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n var tooltipPoints = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\r\n calPoints.push(tooltipPoints);\r\n points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);\r\n\t\t\t\tfor(let i=0;i<points.length;i++){\r\n\t\t\t\t\tlet item=points[i];\r\n if (item !== null && i>leftNum && i<rightNum) {\r\n context.beginPath();\r\n context.setStrokeStyle(item.color || eachSeries.color);\r\n context.setLineWidth(1)\r\n context.setFillStyle(item.color || eachSeries.color);\r\n var startX = item.x - item.width / 2;\r\n var height = opts.height - item.y - opts.area[2];\r\n context.moveTo(startX-1, item.y);\r\n context.lineTo(startX+item.width-2,item.y);\r\n context.lineTo(startX+item.width-2,opts.height - opts.area[2]);\r\n context.lineTo(startX,opts.height - opts.area[2]);\r\n context.lineTo(startX,item.y);\r\n context.closePath();\r\n context.stroke();\r\n context.fill();\r\n }\r\n };\r\n break;\r\n case 'stack':\r\n // 绘制堆叠数据图\r\n var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\r\n calPoints.push(points);\r\n points = fixColumeStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);\r\n\r\n for(let i=0;i<points.length;i++){\r\n \tlet item=points[i];\r\n if (item !== null && i>leftNum && i<rightNum) {\r\n context.beginPath();\r\n context.setFillStyle(item.color || eachSeries.color);\r\n var startX = item.x - item.width / 2 + 1;\r\n var height = opts.height - item.y - opts.area[2];\r\n var height0 = opts.height - item.y0 - opts.area[2];\r\n if (seriesIndex > 0) {\r\n height -= height0;\r\n }\r\n context.moveTo(startX, item.y);\r\n context.fillRect(startX, item.y, item.width - 2, height);\r\n context.closePath();\r\n context.fill();\r\n }\r\n };\r\n break;\r\n case 'meter':\r\n // 绘制温度计数据图\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n calPoints.push(points);\r\n points = fixColumeMeterData(points, eachSpacing, series.length, seriesIndex, config, opts, columnOption.meter.border);\r\n if (seriesIndex == 0) {\r\n for(let i=0;i<points.length;i++){\r\n \tlet item=points[i];\r\n if (item !== null && i>leftNum && i<rightNum) {\r\n //画背景颜色\r\n context.beginPath();\r\n context.setFillStyle(columnOption.meter.fillColor);\r\n var startX = item.x - item.width / 2;\r\n var height = opts.height - item.y - opts.area[2];\r\n context.moveTo(startX, item.y);\r\n context.fillRect(startX, item.y, item.width, height);\r\n context.closePath();\r\n context.fill();\r\n //画边框线\r\n if (columnOption.meter.border > 0) {\r\n context.beginPath();\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setLineWidth(columnOption.meter.border * opts.pixelRatio);\r\n context.moveTo(startX + columnOption.meter.border * 0.5, item.y + height);\r\n context.lineTo(startX + columnOption.meter.border * 0.5, item.y + columnOption.meter.border * 0.5);\r\n context.lineTo(startX + item.width - columnOption.meter.border * 0.5, item.y + columnOption.meter.border * 0.5);\r\n context.lineTo(startX + item.width - columnOption.meter.border * 0.5, item.y + height);\r\n context.stroke();\r\n }\r\n }\r\n };\r\n } else {\r\n for(let i=0;i<points.length;i++){\r\n \tlet item=points[i];\r\n if (item !== null && i>leftNum && i<rightNum) {\r\n context.beginPath();\r\n context.setFillStyle(item.color || eachSeries.color);\r\n var startX = item.x - item.width / 2;\r\n var height = opts.height - item.y - opts.area[2];\r\n context.moveTo(startX, item.y);\r\n context.fillRect(startX, item.y, item.width, height);\r\n context.closePath();\r\n context.fill();\r\n }\r\n };\r\n }\r\n break;\r\n }\r\n });\r\n\r\n if (opts.dataLabel !== false && process === 1) {\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges,minRange,maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var data = eachSeries.data;\r\n switch (columnOption.type) {\r\n case 'group':\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);\r\n drawPointText(points, eachSeries, config, context);\r\n break;\r\n case 'stack':\r\n var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\r\n drawPointText(points, eachSeries, config, context);\r\n break;\r\n case 'meter':\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n drawPointText(points, eachSeries, config, context);\r\n break;\r\n }\r\n });\r\n }\r\n\r\n context.restore();\r\n\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n calPoints: calPoints,\r\n eachSpacing: eachSpacing\r\n };\r\n}\r\n\r\nfunction drawCandleDataPoints(series, seriesMA, opts, config, context) {\r\n var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\r\n var candleOption = assign({}, {\r\n color: {},\r\n average: {}\r\n }, opts.extra.candle);\r\n candleOption.color = assign({}, {\r\n upLine: '#f04864',\r\n upFill: '#f04864',\r\n downLine: '#2fc25b',\r\n downFill: '#2fc25b'\r\n }, candleOption.color);\r\n candleOption.average = assign({}, {\r\n show: false,\r\n name: [],\r\n day: [],\r\n color: config.colors\r\n }, candleOption.average);\r\n opts.extra.candle = candleOption;\r\n\r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n eachSpacing = xAxisData.eachSpacing;\r\n\r\n let calPoints = [];\r\n\r\n context.save();\r\n\t\r\n\tlet leftNum=-2;\r\n\tlet rightNum=xAxisPoints.length+2;\r\n\tlet leftSpace=0;\r\n\tlet rightSpace=opts.width+eachSpacing;\r\n\t\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n\t\tleftNum=Math.floor(-opts._scrollDistance_/eachSpacing)-2;\r\n\t\trightNum=leftNum+opts.xAxis.itemCount+4;\r\n\t\tleftSpace=-opts._scrollDistance_-eachSpacing+opts.area[3];\r\n\t\trightSpace=leftSpace+(opts.xAxis.itemCount+4)*eachSpacing;\r\n }\r\n\r\n //画均线\r\n if (candleOption.average.show) {\r\n seriesMA.forEach(function(eachSeries, seriesIndex) {\r\n let ranges,minRange,maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n\r\n var data = eachSeries.data;\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n var splitPointList = splitPoints(points);\r\n\t\t\t\r\n\t\t\tfor(let i=0;i<splitPointList.length;i++){\r\n\t\t\t\tlet points=splitPointList[i];\r\n\t\t\t\tcontext.beginPath();\r\n\t\t\t\tcontext.setStrokeStyle(eachSeries.color);\r\n\t\t\t\tcontext.setLineWidth(1);\r\n\t\t\t\tif (points.length === 1) {\r\n\t\t\t\t\tcontext.moveTo(points[0].x, points[0].y);\r\n\t\t\t\t\tcontext.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontext.moveTo(points[0].x, points[0].y);\r\n\t\t\t\t\tlet startPoint=0;\r\n\t\t\t\t\tfor(let j=0;j<points.length;j++){\r\n\t\t\t\t\t\tlet item=points[j];\r\n\t\t\t\t\t\tif(startPoint==0 && item.x > leftSpace){\r\n\t\t\t\t\t\t\tcontext.moveTo(item.x, item.y);\r\n\t\t\t\t\t\t\tstartPoint=1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n\t\t\t\t\t\t\tvar ctrlPoint = createCurveControlPoints(points, j - 1);\r\n\t\t\t\t\t\t\tcontext.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,item.x, item.y);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontext.moveTo(points[0].x, points[0].y);\r\n\t\t\t\t}\r\n\t\t\t\tcontext.closePath();\r\n\t\t\t\tcontext.stroke();\r\n }\r\n });\r\n }\r\n //画K线\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges,minRange,maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var data = eachSeries.data;\r\n var points = getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n calPoints.push(points);\r\n var splitPointList = splitPoints(points);\r\n\r\n\t\tfor(let i=0;i<splitPointList[0].length;i++){\r\n\t\t\tif(i>leftNum && i<rightNum){\r\n\t\t\t\tlet item=splitPointList[0][i];\r\n\t\t\t\tcontext.beginPath();\r\n\t\t\t\t//如果上涨\r\n\t\t\t\tif (data[i][1] - data[i][0] > 0) {\r\n\t\t\t\t\tcontext.setStrokeStyle(candleOption.color.upLine);\r\n\t\t\t\t\tcontext.setFillStyle(candleOption.color.upFill);\r\n\t\t\t\t\tcontext.setLineWidth(1 * opts.pixelRatio);\r\n\t\t\t\t\tcontext.moveTo(item[3].x, item[3].y); //顶点\r\n\t\t\t\t\tcontext.lineTo(item[1].x, item[1].y); //收盘中间点\r\n\t\t\t\t\tcontext.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点\r\n\t\t\t\t\tcontext.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点\r\n\t\t\t\t\tcontext.lineTo(item[0].x, item[0].y); //开盘中间点\r\n\t\t\t\t\tcontext.lineTo(item[2].x, item[2].y); //底点\r\n\t\t\t\t\tcontext.lineTo(item[0].x, item[0].y); //开盘中间点\r\n\t\t\t\t\tcontext.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点\r\n\t\t\t\t\tcontext.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点\r\n\t\t\t\t\tcontext.lineTo(item[1].x, item[1].y); //收盘中间点\r\n\t\t\t\t\tcontext.moveTo(item[3].x, item[3].y); //顶点\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontext.setStrokeStyle(candleOption.color.downLine);\r\n\t\t\t\t\tcontext.setFillStyle(candleOption.color.downFill);\r\n\t\t\t\t\tcontext.setLineWidth(1 * opts.pixelRatio);\r\n\t\t\t\t\tcontext.moveTo(item[3].x, item[3].y); //顶点\r\n\t\t\t\t\tcontext.lineTo(item[0].x, item[0].y); //开盘中间点\r\n\t\t\t\t\tcontext.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点\r\n\t\t\t\t\tcontext.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点\r\n\t\t\t\t\tcontext.lineTo(item[1].x, item[1].y); //收盘中间点\r\n\t\t\t\t\tcontext.lineTo(item[2].x, item[2].y); //底点\r\n\t\t\t\t\tcontext.lineTo(item[1].x, item[1].y); //收盘中间点\r\n\t\t\t\t\tcontext.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点\r\n\t\t\t\t\tcontext.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点\r\n\t\t\t\t\tcontext.lineTo(item[0].x, item[0].y); //开盘中间点\r\n\t\t\t\t\tcontext.moveTo(item[3].x, item[3].y); //顶点\r\n\t\t\t\t}\r\n\t\t\t\tcontext.closePath();\r\n\t\t\t\tcontext.fill();\r\n\t\t\t\tcontext.stroke();\r\n\t\t\t}\r\n }\r\n });\r\n\r\n context.restore();\r\n\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n calPoints: calPoints,\r\n eachSpacing: eachSpacing\r\n };\r\n}\r\n\r\nfunction drawAreaDataPoints(series, opts, config, context) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n var areaOption = assign({},{\r\n type: 'straight',\r\n opacity: 0.2,\r\n addLine: false,\r\n width: 2,\r\n\t\tgradient:false\r\n },opts.extra.area);\r\n\r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n eachSpacing = xAxisData.eachSpacing;\r\n\r\n let endY = opts.height - opts.area[2];\r\n let calPoints = [];\r\n\r\n context.save();\r\n\tlet leftSpace=0;\r\n\tlet rightSpace=opts.width+eachSpacing;\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n\t\tleftSpace=-opts._scrollDistance_-eachSpacing+opts.area[3];\r\n\t\trightSpace=leftSpace+(opts.xAxis.itemCount+4)*eachSpacing;\r\n }\r\n\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges,minRange,maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n let data = eachSeries.data;\r\n let points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n calPoints.push(points);\r\n\r\n let splitPointList = splitPoints(points);\r\n for (let i = 0; i < splitPointList.length; i++) {\r\n let points = splitPointList[i];\r\n // 绘制区域数\r\n context.beginPath();\r\n context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));\r\n\t\t\tif(areaOption.gradient){\r\n\t\t\t\tlet gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height-opts.area[2]);\r\n\t\t\t\tgradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));\r\n\t\t\t\tgradient.addColorStop('1.0',hexToRgb(\"#FFFFFF\", 0.1));\r\n\t\t\t\tcontext.setFillStyle(gradient);\r\n\t\t\t}else{\r\n\t\t\t\tcontext.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));\r\n\t\t\t}\r\n context.setLineWidth(areaOption.width * opts.pixelRatio);\r\n if (points.length > 1) {\r\n let firstPoint = points[0];\r\n let lastPoint = points[points.length - 1];\r\n context.moveTo(firstPoint.x, firstPoint.y);\r\n\t\t\t\tlet startPoint=0;\r\n if (areaOption.type === 'curve') {\r\n\t\t\t\t\tfor(let j=0;j<points.length;j++){\r\n\t\t\t\t\t\tlet item=points[j];\r\n\t\t\t\t\t\tif(startPoint==0 && item.x > leftSpace){\r\n\t\t\t\t\t\t\tcontext.moveTo(item.x, item.y);\r\n\t\t\t\t\t\t\tstartPoint=1;\r\n\t\t\t\t\t\t}\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n let ctrlPoint = createCurveControlPoints(points, j - 1);\r\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,item.x, item.y);\r\n }\r\n };\r\n } else {\r\n\t\t\t\t\tfor(let j=0;j<points.length;j++){\r\n\t\t\t\t\t\tlet item=points[j];\r\n\t\t\t\t\t\tif(startPoint==0 && item.x > leftSpace){\r\n\t\t\t\t\t\t\tcontext.moveTo(item.x, item.y);\r\n\t\t\t\t\t\t\tstartPoint=1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n context.lineTo(item.x, item.y);\r\n }\r\n };\r\n }\r\n\r\n context.lineTo(lastPoint.x, endY);\r\n context.lineTo(firstPoint.x, endY);\r\n context.lineTo(firstPoint.x, firstPoint.y);\r\n } else {\r\n let item = points[0];\r\n context.moveTo(item.x - eachSpacing / 2, item.y);\r\n context.lineTo(item.x + eachSpacing / 2, item.y);\r\n context.lineTo(item.x + eachSpacing / 2, endY);\r\n context.lineTo(item.x - eachSpacing / 2, endY);\r\n context.moveTo(item.x - eachSpacing / 2, item.y);\r\n }\r\n context.closePath();\r\n context.fill();\r\n\r\n //画连线\r\n if (areaOption.addLine) {\r\n\t\t\t\tif (eachSeries.lineType == 'dash') {\r\n\t\t\t\t\tlet dashLength = eachSeries.dashLength?eachSeries.dashLength:8;\r\n\t\t\t\t\tdashLength *= opts.pixelRatio;\r\n\t\t\t\t context.setLineDash([dashLength, dashLength]);\r\n\t\t\t\t}\r\n context.beginPath();\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setLineWidth(areaOption.width * opts.pixelRatio);\r\n if (points.length === 1) {\r\n context.moveTo(points[0].x, points[0].y);\r\n context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);\r\n } else {\r\n context.moveTo(points[0].x, points[0].y);\r\n\t\t\t\t\tlet startPoint=0;\r\n if (areaOption.type === 'curve') {\r\n for(let j=0;j<points.length;j++){\r\n \tlet item=points[j];\r\n \tif(startPoint==0 && item.x > leftSpace){\r\n \t\tcontext.moveTo(item.x, item.y);\r\n \t\tstartPoint=1;\r\n \t}\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n let ctrlPoint = createCurveControlPoints(points, j - 1);\r\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,item.x,item.y);\r\n }\r\n };\r\n } else {\r\n for(let j=0;j<points.length;j++){\r\n \tlet item=points[j];\r\n \tif(startPoint==0 && item.x > leftSpace){\r\n \t\tcontext.moveTo(item.x, item.y);\r\n \t\tstartPoint=1;\r\n \t}\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n context.lineTo(item.x, item.y);\r\n }\r\n };\r\n }\r\n context.moveTo(points[0].x, points[0].y);\r\n }\r\n context.stroke();\r\n\t\t\t\tcontext.setLineDash([]);\r\n }\r\n }\r\n\r\n //画点\r\n if (opts.dataPointShape !== false) {\r\n drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\r\n }\r\n\r\n });\r\n\r\n if (opts.dataLabel !== false && process === 1) {\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges,minRange,maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var data = eachSeries.data;\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n drawPointText(points, eachSeries, config, context);\r\n });\r\n }\r\n\r\n context.restore();\r\n\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n calPoints: calPoints,\r\n eachSpacing: eachSpacing\r\n };\r\n}\r\n\r\nfunction drawLineDataPoints(series, opts, config, context) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n var lineOption = assign({},{\r\n\t\ttype: 'straight',\r\n\t\twidth: 2\r\n\t},opts.extra.line);\r\n\tlineOption.width *=opts.pixelRatio;\r\n\t\r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n eachSpacing = xAxisData.eachSpacing;\r\n var calPoints = [];\r\n\r\n context.save();\r\n\tlet leftSpace=0;\r\n\tlet rightSpace=opts.width+eachSpacing;\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n\t\tleftSpace=-opts._scrollDistance_-eachSpacing+opts.area[3];\r\n\t\trightSpace=leftSpace+(opts.xAxis.itemCount+4)*eachSpacing;\r\n }\r\n\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges,minRange,maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var data = eachSeries.data;\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n calPoints.push(points);\r\n var splitPointList = splitPoints(points);\r\n\t\t\r\n\t\tif (eachSeries.lineType == 'dash') {\r\n\t\t\tlet dashLength = eachSeries.dashLength?eachSeries.dashLength:8;\r\n\t\t\tdashLength *= opts.pixelRatio;\r\n\t\t context.setLineDash([dashLength, dashLength]);\r\n\t\t}\r\n\t\tcontext.beginPath();\r\n\t\tcontext.setStrokeStyle(eachSeries.color);\r\n\t\tcontext.setLineWidth(lineOption.width);\r\n\t\t\r\n splitPointList.forEach(function(points, index) {\r\n\t\t\t\r\n if (points.length === 1) {\r\n context.moveTo(points[0].x, points[0].y);\r\n context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);\r\n } else {\r\n context.moveTo(points[0].x, points[0].y);\r\n\t\t\t\tlet startPoint=0;\r\n if (lineOption.type === 'curve') {\r\n for(let j=0;j<points.length;j++){\r\n \tlet item=points[j];\r\n \tif(startPoint==0 && item.x > leftSpace){\r\n \t\tcontext.moveTo(item.x, item.y);\r\n \t\tstartPoint=1;\r\n \t}\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n var ctrlPoint = createCurveControlPoints(points, j - 1);\r\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,item.x, item.y);\r\n }\r\n };\r\n } else {\r\n for(let j=0;j<points.length;j++){\r\n \tlet item=points[j];\r\n \tif(startPoint==0 && item.x > leftSpace){\r\n \t\tcontext.moveTo(item.x, item.y);\r\n \t\tstartPoint=1;\r\n \t}\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n context.lineTo(item.x, item.y);\r\n }\r\n };\r\n }\r\n context.moveTo(points[0].x, points[0].y);\r\n }\r\n \r\n });\r\n\t\t\r\n\t\tcontext.stroke();\r\n\t\tcontext.setLineDash([]);\r\n\t\t\r\n if (opts.dataPointShape !== false) {\r\n drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\r\n }\r\n });\r\n\r\n if (opts.dataLabel !== false && process === 1) {\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges,minRange,maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var data = eachSeries.data;\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n drawPointText(points, eachSeries, config, context);\r\n });\r\n }\r\n\r\n context.restore();\r\n\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n calPoints: calPoints,\r\n eachSpacing: eachSpacing\r\n };\r\n}\r\n\r\nfunction drawMixDataPoints(series, opts, config, context) {\r\n let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n \r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n eachSpacing = xAxisData.eachSpacing;\r\n\r\n let endY = opts.height - opts.area[2];\r\n let calPoints = [];\r\n\r\n var columnIndex = 0;\r\n var columnLength = 0;\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n if (eachSeries.type == 'column') {\r\n columnLength += 1;\r\n }\r\n });\r\n context.save();\r\n\tlet leftNum=-2;\r\n\tlet rightNum=xAxisPoints.length+2;\r\n\tlet leftSpace=0;\r\n\tlet rightSpace=opts.width+eachSpacing;\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n\t\tleftNum=Math.floor(-opts._scrollDistance_/eachSpacing)-2;\r\n\t\trightNum=leftNum+opts.xAxis.itemCount+4;\r\n\t\tleftSpace=-opts._scrollDistance_-eachSpacing+opts.area[3];\r\n\t\trightSpace=leftSpace+(opts.xAxis.itemCount+4)*eachSpacing;\r\n }\r\n\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges,minRange,maxRange;\r\n \r\n\t\tranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n\t\tminRange = ranges.pop();\r\n\t\tmaxRange = ranges.shift();\r\n\r\n var data = eachSeries.data;\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n calPoints.push(points);\r\n\r\n // 绘制柱状数据图\r\n if (eachSeries.type == 'column') {\r\n points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);\r\n for(let i=0;i<points.length;i++){\r\n \tlet item=points[i];\r\n if (item !== null && i>leftNum && i<rightNum) {\r\n context.beginPath();\r\n context.setStrokeStyle(item.color || eachSeries.color);\r\n context.setLineWidth(1)\r\n context.setFillStyle(item.color || eachSeries.color);\r\n var startX = item.x - item.width / 2;\r\n var height = opts.height - item.y - opts.area[2];\r\n context.moveTo(startX, item.y);\r\n context.moveTo(startX-1, item.y);\r\n context.lineTo(startX+item.width-2,item.y);\r\n context.lineTo(startX+item.width-2,opts.height - opts.area[2]);\r\n context.lineTo(startX,opts.height - opts.area[2]);\r\n context.lineTo(startX,item.y);\r\n context.closePath();\r\n context.stroke();\r\n context.fill();\r\n context.closePath();\r\n context.fill();\r\n }\r\n }\r\n columnIndex += 1;\r\n }\r\n\r\n //绘制区域图数据\r\n\r\n if (eachSeries.type == 'area') {\r\n let splitPointList = splitPoints(points);\r\n for (let i = 0; i < splitPointList.length; i++) {\r\n let points = splitPointList[i];\r\n // 绘制区域数据\r\n context.beginPath();\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setFillStyle(hexToRgb(eachSeries.color, 0.2));\r\n context.setLineWidth(2 * opts.pixelRatio);\r\n if (points.length > 1) {\r\n var firstPoint = points[0];\r\n let lastPoint = points[points.length - 1];\r\n context.moveTo(firstPoint.x, firstPoint.y);\r\n\t\t\t\t\tlet startPoint=0;\r\n if (eachSeries.style === 'curve') {\r\n for(let j=0;j<points.length;j++){\r\n \tlet item=points[j];\r\n \tif(startPoint==0 && item.x > leftSpace){\r\n \t\tcontext.moveTo(item.x, item.y);\r\n \t\tstartPoint=1;\r\n \t}\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n var ctrlPoint = createCurveControlPoints(points, j - 1);\r\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);\r\n }\r\n };\r\n } else {\r\n for(let j=0;j<points.length;j++){\r\n \tlet item=points[j];\r\n \tif(startPoint==0 && item.x > leftSpace){\r\n \t\tcontext.moveTo(item.x, item.y);\r\n \t\tstartPoint=1;\r\n \t}\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n context.lineTo(item.x, item.y);\r\n }\r\n };\r\n }\r\n context.lineTo(lastPoint.x, endY);\r\n context.lineTo(firstPoint.x, endY);\r\n context.lineTo(firstPoint.x, firstPoint.y);\r\n } else {\r\n let item = points[0];\r\n context.moveTo(item.x - eachSpacing / 2, item.y);\r\n context.lineTo(item.x + eachSpacing / 2, item.y);\r\n context.lineTo(item.x + eachSpacing / 2, endY);\r\n context.lineTo(item.x - eachSpacing / 2, endY);\r\n context.moveTo(item.x - eachSpacing / 2, item.y);\r\n }\r\n context.closePath();\r\n context.fill();\r\n }\r\n }\r\n\r\n // 绘制折线数据图\r\n if (eachSeries.type == 'line') {\r\n var splitPointList = splitPoints(points);\r\n splitPointList.forEach(function(points, index) {\r\n\t\t\t\tif (eachSeries.lineType == 'dash') {\r\n\t\t\t\t\tlet dashLength = eachSeries.dashLength?eachSeries.dashLength:8;\r\n\t\t\t\t\tdashLength *= opts.pixelRatio;\r\n\t\t\t\t context.setLineDash([dashLength, dashLength]);\r\n\t\t\t\t}\r\n context.beginPath();\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setLineWidth(2 * opts.pixelRatio);\r\n if (points.length === 1) {\r\n context.moveTo(points[0].x, points[0].y);\r\n context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);\r\n } else {\r\n context.moveTo(points[0].x, points[0].y);\r\n\t\t\t\t\tlet startPoint=0;\r\n if (eachSeries.style == 'curve') {\r\n for(let j=0;j<points.length;j++){\r\n \tlet item=points[j];\r\n \tif(startPoint==0 && item.x > leftSpace){\r\n \t\tcontext.moveTo(item.x, item.y);\r\n \t\tstartPoint=1;\r\n \t}\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n var ctrlPoint = createCurveControlPoints(points, j - 1);\r\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,item.x,item.y);\r\n }\r\n }\r\n } else {\r\n for(let j=0;j<points.length;j++){\r\n \tlet item=points[j];\r\n \tif(startPoint==0 && item.x > leftSpace){\r\n \t\tcontext.moveTo(item.x, item.y);\r\n \t\tstartPoint=1;\r\n \t}\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n context.lineTo(item.x, item.y);\r\n }\r\n }\r\n }\r\n context.moveTo(points[0].x, points[0].y);\r\n }\r\n context.stroke();\r\n\t\t\t\tcontext.setLineDash([]);\r\n });\r\n }\r\n\r\n // 绘制点数据图\r\n if (eachSeries.type == 'point') {\r\n\t\t\teachSeries.addPoint = true;\r\n }\r\n\r\n if (eachSeries.addPoint == true && eachSeries.type !== 'column' ) {\r\n drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\r\n }\r\n });\r\n if (opts.dataLabel !== false && process === 1) {\r\n var columnIndex = 0;\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges,minRange,maxRange;\r\n \r\n\t\t\tranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n\t\t\tminRange = ranges.pop();\r\n\t\t\tmaxRange = ranges.shift();\r\n\t\t\t\t\r\n var data = eachSeries.data;\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n if (eachSeries.type !== 'column') {\r\n drawPointText(points, eachSeries, config, context);\r\n } else {\r\n points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);\r\n drawPointText(points, eachSeries, config, context);\r\n columnIndex += 1;\r\n }\r\n\r\n });\r\n }\r\n\r\n context.restore();\r\n\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n calPoints: calPoints,\r\n eachSpacing: eachSpacing,\r\n }\r\n}\r\n\r\nfunction drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints) {\r\n var toolTipOption = opts.extra.tooltip || {};\r\n if (toolTipOption.horizentalLine && opts.tooltip && process === 1 && (opts.type == 'line' || opts.type == 'area' || opts.type == 'column' || opts.type == 'candle' || opts.type == 'mix')) {\r\n drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints)\r\n }\r\n context.save();\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n }\r\n if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {\r\n drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context, eachSpacing, xAxisPoints);\r\n }\r\n context.restore();\r\n\r\n}\r\n\r\nfunction drawXAxis(categories, opts, config, context) {\r\n\r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n startX = xAxisData.startX,\r\n endX = xAxisData.endX,\r\n eachSpacing = xAxisData.eachSpacing;\r\n var boundaryGap='center';\r\n if (opts.type == 'line'||opts.type == 'area'){\r\n boundaryGap=opts.xAxis.boundaryGap;\r\n }\r\n var startY = opts.height - opts.area[2];\r\n var endY = opts.area[0];\r\n\r\n //绘制滚动条\r\n if (opts.enableScroll && opts.xAxis.scrollShow) {\r\n var scrollY = opts.height - opts.area[2] + config.xAxisHeight;\r\n var scrollScreenWidth = endX - startX;\r\n var scrollTotalWidth = eachSpacing * (xAxisPoints.length - 1);\r\n var scrollWidth = scrollScreenWidth * scrollScreenWidth / scrollTotalWidth;\r\n var scrollLeft = 0;\r\n if (opts._scrollDistance_) {\r\n scrollLeft = -opts._scrollDistance_ * (scrollScreenWidth) / scrollTotalWidth;\r\n }\r\n context.beginPath();\r\n context.setLineCap('round');\r\n context.setLineWidth(6 * opts.pixelRatio);\r\n context.setStrokeStyle(opts.xAxis.scrollBackgroundColor || \"#EFEBEF\");\r\n context.moveTo(startX, scrollY);\r\n context.lineTo(endX, scrollY);\r\n context.stroke();\r\n context.closePath();\r\n context.beginPath();\r\n context.setLineCap('round');\r\n context.setLineWidth(6 * opts.pixelRatio);\r\n context.setStrokeStyle(opts.xAxis.scrollColor || \"#A6A6A6\");\r\n context.moveTo(startX + scrollLeft, scrollY);\r\n context.lineTo(startX + scrollLeft + scrollWidth, scrollY);\r\n context.stroke();\r\n context.closePath();\r\n context.setLineCap('butt');\r\n }\r\n\r\n context.save();\r\n\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {\r\n context.translate(opts._scrollDistance_, 0);\r\n }\r\n\t\r\n\t//绘制X轴刻度线\r\n\tif (opts.xAxis.calibration === true) {\r\n\t\tcontext.setStrokeStyle(opts.xAxis.gridColor || \"#cccccc\");\r\n\t\tcontext.setLineCap('butt');\r\n\t\tcontext.setLineWidth(1 * opts.pixelRatio);\r\n\t xAxisPoints.forEach(function(item, index) {\r\n\t if (index > 0) {\r\n\t context.beginPath();\r\n\t context.moveTo(item - eachSpacing / 2, startY);\r\n\t context.lineTo(item - eachSpacing / 2, startY + 3 * opts.pixelRatio);\r\n\t context.closePath();\r\n\t context.stroke();\r\n\t }\r\n\t });\r\n\t}\r\n\t//绘制X轴网格\r\n if (opts.xAxis.disableGrid !== true) {\r\n context.setStrokeStyle(opts.xAxis.gridColor || \"#cccccc\");\r\n context.setLineCap('butt');\r\n context.setLineWidth(1 * opts.pixelRatio);\r\n if (opts.xAxis.gridType == 'dash') {\r\n context.setLineDash([opts.xAxis.dashLength, opts.xAxis.dashLength]);\r\n }\r\n\t\topts.xAxis.gridEval = opts.xAxis.gridEval || 1;\r\n\t\txAxisPoints.forEach(function(item, index) {\r\n\t\t\tif (index % opts.xAxis.gridEval == 0) {\r\n\t\t\t\tcontext.beginPath();\r\n\t\t\t\tcontext.moveTo(item, startY);\r\n\t\t\t\tcontext.lineTo(item, endY);\r\n\t\t\t\tcontext.stroke();\r\n\t\t\t}\r\n\t\t});\r\n context.setLineDash([]);\r\n }\r\n \r\n\r\n //绘制X轴文案\r\n if (opts.xAxis.disabled !== true) {\r\n // 对X轴列表做抽稀处理\r\n //默认全部显示X轴标签\r\n let maxXAxisListLength = categories.length;\r\n //如果设置了X轴单屏数量\r\n if (opts.xAxis.labelCount) {\r\n //如果设置X轴密度\r\n if (opts.xAxis.itemCount) {\r\n maxXAxisListLength = Math.ceil(categories.length / opts.xAxis.itemCount * opts.xAxis.labelCount);\r\n } else {\r\n maxXAxisListLength = opts.xAxis.labelCount;\r\n }\r\n maxXAxisListLength -= 1;\r\n }\r\n\r\n let ratio = Math.ceil(categories.length / maxXAxisListLength);\r\n\r\n let newCategories = [];\r\n let cgLength = categories.length;\r\n for (let i = 0; i < cgLength; i++) {\r\n if (i % ratio !== 0) {\r\n newCategories.push(\"\");\r\n } else {\r\n newCategories.push(categories[i]);\r\n }\r\n }\r\n newCategories[cgLength - 1] = categories[cgLength - 1];\r\n\r\n var xAxisFontSize = opts.xAxis.fontSize || config.fontSize;\r\n if (config._xAxisTextAngle_ === 0) {\r\n newCategories.forEach(function(item, index) {\r\n var offset = - measureText(String(item), xAxisFontSize) / 2;\r\n if(boundaryGap == 'center'){\r\n offset+=eachSpacing / 2;\r\n }\r\n var scrollHeight=0;\r\n if(opts.xAxis.scrollShow){\r\n scrollHeight=6*opts.pixelRatio;\r\n }\r\n context.beginPath();\r\n context.setFontSize(xAxisFontSize);\r\n context.setFillStyle(opts.xAxis.fontColor || '#666666');\r\n context.fillText(String(item), xAxisPoints[index] + offset, startY + xAxisFontSize + (config.xAxisHeight - scrollHeight - xAxisFontSize) / 2);\r\n context.closePath();\r\n context.stroke();\r\n });\r\n\r\n } else {\r\n newCategories.forEach(function(item, index) {\r\n context.save();\r\n context.beginPath();\r\n context.setFontSize(xAxisFontSize);\r\n context.setFillStyle(opts.xAxis.fontColor || '#666666');\r\n var textWidth = measureText(String(item),xAxisFontSize);\r\n var offset = - textWidth;\r\n if(boundaryGap == 'center'){\r\n offset+=eachSpacing / 2;\r\n }\r\n var _calRotateTranslate = calRotateTranslate(xAxisPoints[index] + eachSpacing / 2, startY + xAxisFontSize / 2 + 5, opts.height),\r\n transX = _calRotateTranslate.transX,\r\n transY = _calRotateTranslate.transY;\r\n\r\n context.rotate(-1 * config._xAxisTextAngle_);\r\n context.translate(transX, transY);\r\n context.fillText(String(item), xAxisPoints[index] + offset, startY + xAxisFontSize + 5);\r\n context.closePath();\r\n context.stroke();\r\n context.restore();\r\n });\r\n }\r\n }\r\n context.restore();\r\n\t\r\n\t//绘制X轴轴线\r\n if(opts.xAxis.axisLine){\r\n context.beginPath();\r\n context.setStrokeStyle(opts.xAxis.axisLineColor);\r\n context.setLineWidth(1 * opts.pixelRatio);\r\n context.moveTo(startX,opts.height-opts.area[2]);\r\n context.lineTo(endX,opts.height-opts.area[2]);\r\n context.stroke();\r\n }\r\n}\r\n\r\nfunction drawYAxisGrid(categories, opts, config, context) {\r\n if (opts.yAxis.disableGrid === true) {\r\n return;\r\n }\r\n let spacingValid = opts.height - opts.area[0] - opts.area[2];\r\n let eachSpacing = spacingValid / opts.yAxis.splitNumber;\r\n let startX = opts.area[3];\r\n let xAxisPoints = opts.chartData.xAxisData.xAxisPoints,\r\n xAxiseachSpacing = opts.chartData.xAxisData.eachSpacing;\r\n let TotalWidth = xAxiseachSpacing * (xAxisPoints.length - 1);\r\n let endX = startX + TotalWidth;\r\n\r\n let points = [];\r\n for (let i = 0; i < opts.yAxis.splitNumber + 1; i++) {\r\n points.push(opts.height - opts.area[2] - eachSpacing * i);\r\n }\r\n\r\n context.save();\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {\r\n context.translate(opts._scrollDistance_, 0);\r\n }\r\n\r\n if (opts.yAxis.gridType == 'dash') {\r\n context.setLineDash([opts.yAxis.dashLength, opts.yAxis.dashLength]);\r\n }\r\n context.setStrokeStyle(opts.yAxis.gridColor);\r\n context.setLineWidth(1 * opts.pixelRatio);\r\n points.forEach(function(item, index) {\r\n context.beginPath();\r\n context.moveTo(startX, item);\r\n context.lineTo(endX, item);\r\n context.stroke();\r\n });\r\n context.setLineDash([]);\r\n\r\n context.restore();\r\n}\r\n\r\nfunction drawYAxis(series, opts, config, context) {\r\n if (opts.yAxis.disabled === true) {\r\n return;\r\n }\r\n var spacingValid = opts.height - opts.area[0] - opts.area[2];\r\n var eachSpacing = spacingValid / opts.yAxis.splitNumber;\r\n var startX = opts.area[3];\r\n var endX = opts.width - opts.area[1];\r\n var endY = opts.height - opts.area[2];\r\n var fillEndY = endY + config.xAxisHeight;\r\n if (opts.xAxis.scrollShow) {\r\n fillEndY -= 3 * opts.pixelRatio;\r\n }\r\n\tif (opts.xAxis.rotateLabel){\r\n\t\tfillEndY = opts.height - opts.area[2]+3;\r\n\t}\r\n // set YAxis background\r\n context.beginPath();\r\n context.setFillStyle(opts.background || '#ffffff');\r\n if (opts._scrollDistance_ < 0) {\r\n context.fillRect(0, 0, startX, fillEndY);\r\n }\r\n if(opts.enableScroll == true){\r\n context.fillRect(endX, 0, opts.width, fillEndY);\r\n }\r\n context.closePath();\r\n context.stroke();\r\n\r\n var points = [];\r\n for (let i = 0; i <= opts.yAxis.splitNumber; i++) {\r\n points.push(opts.area[0] + eachSpacing * i);\r\n }\r\n\r\n let tStartLeft=opts.area[3];\r\n let tStartRight=opts.width-opts.area[1];\r\n\r\n for (let i = 0; i < opts.yAxis.data.length; i++) {\r\n let yData = opts.yAxis.data[i];\r\n if(yData.disabled !== true){\r\n let rangesFormat = opts.chartData.yAxisData.rangesFormat[i];\r\n let yAxisFontSize = yData.fontSize || config.fontSize;\r\n let yAxisWidth = opts.chartData.yAxisData.yAxisWidth[i];\r\n //画Y轴刻度及文案\r\n rangesFormat.forEach(function(item, index) {\r\n var pos = points[index] ? points[index] : endY;\r\n context.beginPath();\r\n context.setFontSize(yAxisFontSize);\r\n context.setLineWidth(1*opts.pixelRatio);\r\n context.setStrokeStyle(yData.axisLineColor||'#cccccc');\r\n context.setFillStyle(yData.fontColor|| '#666666');\r\n if(yAxisWidth.position=='left'){\r\n context.fillText(String(item), tStartLeft - yAxisWidth.width , pos + yAxisFontSize / 2);\r\n //画刻度线\r\n if(yData.calibration==true){\r\n context.moveTo(tStartLeft,pos);\r\n context.lineTo(tStartLeft - 3*opts.pixelRatio,pos);\r\n }\r\n }else{\r\n context.fillText(String(item), tStartRight + 4*opts.pixelRatio, pos + yAxisFontSize / 2);\r\n //画刻度线\r\n if(yData.calibration==true){\r\n context.moveTo(tStartRight,pos);\r\n context.lineTo(tStartRight + 3*opts.pixelRatio,pos);\r\n }\r\n }\r\n context.closePath();\r\n context.stroke();\r\n });\r\n //画Y轴轴线\r\n if (yData.axisLine!==false) {\r\n context.beginPath();\r\n context.setStrokeStyle(yData.axisLineColor||'#cccccc');\r\n context.setLineWidth(1 * opts.pixelRatio);\r\n if(yAxisWidth.position=='left'){\r\n context.moveTo(tStartLeft,opts.height-opts.area[2]);\r\n context.lineTo(tStartLeft,opts.area[0]);\r\n }else{\r\n context.moveTo(tStartRight,opts.height-opts.area[2]);\r\n context.lineTo(tStartRight,opts.area[0]);\r\n }\r\n context.stroke();\r\n }\r\n\t\t\t\r\n //画Y轴标题\r\n if (opts.yAxis.showTitle) {\r\n\t\t\t\t\r\n let titleFontSize = yData.titleFontSize || config.fontSize;\r\n let title = yData.title;\r\n context.beginPath();\r\n context.setFontSize(titleFontSize);\r\n context.setFillStyle(yData.titleFontColor || '#666666');\r\n if(yAxisWidth.position=='left'){\r\n context.fillText(title, tStartLeft - measureText(title,titleFontSize)/2, opts.area[0]-10*opts.pixelRatio);\r\n }else{\r\n context.fillText(title,tStartRight - measureText(title,titleFontSize)/2, opts.area[0]-10*opts.pixelRatio);\r\n }\r\n context.closePath();\r\n context.stroke();\r\n }\r\n if(yAxisWidth.position=='left'){\r\n tStartLeft -=(yAxisWidth.width + opts.yAxis.padding);\r\n }else{\r\n tStartRight +=yAxisWidth.width+ opts.yAxis.padding;\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction drawLegend(series, opts, config, context, chartData) {\r\n if (opts.legend.show === false) {\r\n return;\r\n }\r\n let legendData = chartData.legendData;\r\n let legendList = legendData.points;\r\n let legendArea = legendData.area;\r\n let padding = opts.legend.padding;\r\n let fontSize = opts.legend.fontSize;\r\n let shapeWidth = 15 * opts.pixelRatio;\r\n let shapeRight = 5 * opts.pixelRatio;\r\n let itemGap = opts.legend.itemGap;\r\n let lineHeight = Math.max(opts.legend.lineHeight * opts.pixelRatio, fontSize);\r\n\r\n //画背景及边框\r\n context.beginPath();\r\n context.setLineWidth(opts.legend.borderWidth);\r\n context.setStrokeStyle(opts.legend.borderColor);\r\n context.setFillStyle(opts.legend.backgroundColor);\r\n context.moveTo(legendArea.start.x, legendArea.start.y);\r\n context.rect(legendArea.start.x, legendArea.start.y, legendArea.width, legendArea.height);\r\n context.closePath();\r\n context.fill();\r\n context.stroke();\r\n\r\n legendList.forEach(function(itemList, listIndex) {\r\n let width = 0;\r\n let height = 0;\r\n width = legendData.widthArr[listIndex];\r\n height = legendData.heightArr[listIndex];\r\n let startX = 0;\r\n let startY = 0;\r\n if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {\r\n startX = legendArea.start.x + (legendArea.width - width) / 2;\r\n startY = legendArea.start.y + padding + listIndex * lineHeight;\r\n } else {\r\n if (listIndex == 0) {\r\n width = 0;\r\n } else {\r\n width = legendData.widthArr[listIndex - 1];\r\n }\r\n startX = legendArea.start.x + padding + width;\r\n startY = legendArea.start.y + padding + (legendArea.height - height) / 2;\r\n }\r\n\r\n context.setFontSize(config.fontSize);\r\n for (let i = 0; i < itemList.length; i++) {\r\n let item = itemList[i];\r\n item.area = [0, 0, 0, 0];\r\n item.area[0] = startX;\r\n item.area[1] = startY;\r\n item.area[3] = startY + lineHeight;\r\n context.beginPath();\r\n context.setLineWidth(1 * opts.pixelRatio);\r\n context.setStrokeStyle(item.show ? item.color : opts.legend.hiddenColor);\r\n context.setFillStyle(item.show ? item.color : opts.legend.hiddenColor);\r\n switch (item.legendShape) {\r\n case 'line':\r\n context.moveTo(startX, startY + 0.5 * lineHeight - 2 * opts.pixelRatio);\r\n context.fillRect(startX, startY + 0.5 * lineHeight - 2 * opts.pixelRatio, 15 * opts.pixelRatio, 4 * opts.pixelRatio);\r\n break;\r\n case 'triangle':\r\n context.moveTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);\r\n context.lineTo(startX + 2.5 * opts.pixelRatio, startY + 0.5 * lineHeight + 5 * opts.pixelRatio);\r\n context.lineTo(startX + 12.5 * opts.pixelRatio, startY + 0.5 * lineHeight + 5 * opts.pixelRatio);\r\n context.lineTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);\r\n break;\r\n case 'diamond':\r\n context.moveTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);\r\n context.lineTo(startX + 2.5 * opts.pixelRatio, startY + 0.5 * lineHeight);\r\n context.lineTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight + 5 * opts.pixelRatio);\r\n context.lineTo(startX + 12.5 * opts.pixelRatio, startY + 0.5 * lineHeight);\r\n context.lineTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);\r\n break;\r\n case 'circle':\r\n context.moveTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight);\r\n context.arc(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight, 5 * opts.pixelRatio, 0, 2 * Math.PI);\r\n break;\r\n case 'rect':\r\n context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);\r\n context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio, 15 * opts.pixelRatio, 10 * opts.pixelRatio);\r\n break;\r\n default:\r\n context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);\r\n context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio, 15 * opts.pixelRatio, 10 * opts.pixelRatio);\r\n }\r\n context.closePath();\r\n context.fill();\r\n context.stroke();\r\n\r\n startX += shapeWidth + shapeRight;\r\n let fontTrans = 0.5 * lineHeight + 0.5 * fontSize - 2;\r\n context.beginPath();\r\n context.setFontSize(fontSize);\r\n context.setFillStyle(item.show ? opts.legend.fontColor : opts.legend.hiddenColor);\r\n context.fillText(item.name, startX, startY + fontTrans);\r\n context.closePath();\r\n context.stroke();\r\n if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {\r\n startX += measureText(item.name, fontSize) + itemGap;\r\n item.area[2] = startX;\r\n } else {\r\n item.area[2] = startX + measureText(item.name, fontSize) + itemGap;;\r\n startX -= shapeWidth + shapeRight;\r\n startY += lineHeight;\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction drawPieDataPoints(series, opts, config, context) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n var pieOption = assign({}, {\r\n activeOpacity: 0.5,\r\n activeRadius: 10 * opts.pixelRatio,\r\n offsetAngle: 0,\r\n labelWidth: 15 * opts.pixelRatio,\r\n ringWidth: 0,\r\n border:false,\r\n borderWidth:2,\r\n borderColor:'#FFFFFF'\r\n }, opts.extra.pie);\r\n var centerPosition = {\r\n x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\r\n y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2\r\n };\r\n if (config.pieChartLinePadding == 0) {\r\n config.pieChartLinePadding = pieOption.activeRadius;\r\n }\r\n\r\n var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);\r\n\r\n series = getPieDataPoints(series, radius, process);\r\n\r\n var activeRadius = pieOption.activeRadius;\r\n\r\n series = series.map(function(eachSeries) {\r\n eachSeries._start_ += (pieOption.offsetAngle) * Math.PI / 180;\r\n return eachSeries;\r\n });\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n if (opts.tooltip) {\r\n if (opts.tooltip.index == seriesIndex) {\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(eachSeries.color, opts.extra.pie.activeOpacity || 0.5));\r\n context.moveTo(centerPosition.x, centerPosition.y);\r\n context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_,\r\n eachSeries._start_ + 2 *\r\n eachSeries._proportion_ * Math.PI);\r\n context.closePath();\r\n context.fill();\r\n }\r\n }\r\n context.beginPath();\r\n context.setLineWidth(pieOption.borderWidth * opts.pixelRatio);\r\n context.lineJoin = \"round\";\r\n context.setStrokeStyle(pieOption.borderColor);\r\n context.setFillStyle(eachSeries.color);\r\n context.moveTo(centerPosition.x, centerPosition.y);\r\n context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);\r\n context.closePath();\r\n context.fill();\r\n if (pieOption.border == true) {\r\n context.stroke();\r\n }\r\n });\r\n\r\n if (opts.type === 'ring') {\r\n var innerPieWidth = radius * 0.6;\r\n if (typeof opts.extra.pie.ringWidth === 'number' && opts.extra.pie.ringWidth > 0) {\r\n innerPieWidth = Math.max(0, radius - opts.extra.pie.ringWidth);\r\n }\r\n context.beginPath();\r\n context.setFillStyle(opts.background || '#ffffff');\r\n context.moveTo(centerPosition.x, centerPosition.y);\r\n context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI);\r\n context.closePath();\r\n context.fill();\r\n }\r\n\r\n if (opts.dataLabel !== false && process === 1) {\r\n var valid = false;\r\n for (var i = 0, len = series.length; i < len; i++) {\r\n if (series[i].data > 0) {\r\n valid = true;\r\n break;\r\n }\r\n }\r\n\r\n if (valid) {\r\n drawPieText(series, opts, config, context, radius, centerPosition);\r\n }\r\n }\r\n\r\n if (process === 1 && opts.type === 'ring') {\r\n drawRingTitle(opts, config, context, centerPosition);\r\n }\r\n\r\n return {\r\n center: centerPosition,\r\n radius: radius,\r\n series: series\r\n };\r\n}\r\n\r\nfunction drawRoseDataPoints(series, opts, config, context) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n var roseOption = assign({}, {\r\n type: 'area',\r\n activeOpacity: 0.5,\r\n activeRadius: 10 * opts.pixelRatio,\r\n offsetAngle: 0,\r\n labelWidth: 15 * opts.pixelRatio,\r\n border:false,\r\n borderWidth:2,\r\n borderColor:'#FFFFFF'\r\n }, opts.extra.rose);\r\n if (config.pieChartLinePadding == 0) {\r\n config.pieChartLinePadding = roseOption.activeRadius;\r\n }\r\n var centerPosition = {\r\n x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\r\n y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2\r\n };\r\n var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);\r\n var minRadius = roseOption.minRadius || radius * 0.5;\r\n\r\n series = getRoseDataPoints(series, roseOption.type, minRadius, radius, process);\r\n\r\n var activeRadius = roseOption.activeRadius;\r\n\r\n series = series.map(function(eachSeries) {\r\n eachSeries._start_ += (roseOption.offsetAngle || 0) * Math.PI / 180;\r\n return eachSeries;\r\n });\r\n\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n if (opts.tooltip) {\r\n if (opts.tooltip.index == seriesIndex) {\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(eachSeries.color, roseOption.activeOpacity || 0.5));\r\n context.moveTo(centerPosition.x, centerPosition.y);\r\n context.arc(centerPosition.x, centerPosition.y, activeRadius + eachSeries._radius_, eachSeries._start_,\r\n eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);\r\n context.closePath();\r\n context.fill();\r\n }\r\n }\r\n context.beginPath();\r\n context.setLineWidth(roseOption.borderWidth * opts.pixelRatio);\r\n context.lineJoin = \"round\";\r\n context.setStrokeStyle(roseOption.borderColor);\r\n context.setFillStyle(eachSeries.color);\r\n context.moveTo(centerPosition.x, centerPosition.y);\r\n context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 *\r\n eachSeries._rose_proportion_ * Math.PI);\r\n context.closePath();\r\n context.fill();\r\n if (roseOption.border == true) {\r\n context.stroke();\r\n }\r\n });\r\n\r\n if (opts.dataLabel !== false && process === 1) {\r\n var valid = false;\r\n for (var i = 0, len = series.length; i < len; i++) {\r\n if (series[i].data > 0) {\r\n valid = true;\r\n break;\r\n }\r\n }\r\n\r\n if (valid) {\r\n drawPieText(series, opts, config, context, radius, centerPosition);\r\n }\r\n }\r\n\r\n return {\r\n center: centerPosition,\r\n radius: radius,\r\n series: series\r\n };\r\n}\r\n\r\nfunction drawArcbarDataPoints(series, opts, config, context) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n var arcbarOption = assign({}, {\r\n startAngle: 0.75,\r\n endAngle: 0.25,\r\n type: 'default',\r\n width: 12 * opts.pixelRatio,\r\n\t\tgap:2 * opts.pixelRatio\r\n }, opts.extra.arcbar);\r\n\r\n series = getArcbarDataPoints(series, arcbarOption, process);\r\n\t\r\n var centerPosition;\r\n\tif(arcbarOption.center){\r\n\t\tcenterPosition=arcbarOption.center;\r\n\t}else{\r\n\t\tcenterPosition= {\r\n\t\t x: opts.width / 2,\r\n\t\t y: opts.height / 2\r\n\t\t};\r\n\t}\r\n\t\r\n var radius;\r\n\tif(arcbarOption.radius){\r\n\t\tradius=arcbarOption.radius;\r\n\t}else{\r\n\t\tradius = Math.min(centerPosition.x, centerPosition.y);\r\n\t\tradius -= 5 * opts.pixelRatio;\r\n\t\tradius -= arcbarOption.width / 2;\r\n\t}\r\n\t\r\n for (let i = 0; i < series.length; i++) {\r\n let eachSeries = series[i];\r\n\t\t//背景颜色\r\n\t\tcontext.setLineWidth(arcbarOption.width);\r\n\t\tcontext.setStrokeStyle(arcbarOption.backgroundColor || '#E9E9E9');\r\n\t\tcontext.setLineCap('round');\r\n\t\tcontext.beginPath();\r\n\t\tif (arcbarOption.type == 'default') {\r\n\t\t context.arc(centerPosition.x, centerPosition.y, radius-(arcbarOption.width+arcbarOption.gap)*i, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle * Math.PI, false);\r\n\t\t} else {\r\n\t\t context.arc(centerPosition.x, centerPosition.y, radius-(arcbarOption.width+arcbarOption.gap)*i, 0, 2 * Math.PI, false);\r\n\t\t}\r\n\t\tcontext.stroke();\r\n\t\t//进度条\r\n context.setLineWidth(arcbarOption.width);\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setLineCap('round');\r\n context.beginPath();\r\n context.arc(centerPosition.x, centerPosition.y, radius-(arcbarOption.width+arcbarOption.gap)*i, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ * Math.PI, false);\r\n context.stroke();\r\n }\r\n\r\n drawRingTitle(opts, config, context, centerPosition);\r\n\r\n return {\r\n center: centerPosition,\r\n radius: radius,\r\n series: series\r\n };\r\n}\r\n\r\nfunction drawGaugeDataPoints(categories, series, opts, config, context) {\r\n var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\r\n var gaugeOption = assign({}, {\r\n\t\ttype:'default',\r\n startAngle: 0.75,\r\n endAngle: 0.25,\r\n width: 15,\r\n splitLine: {\r\n fixRadius: 0,\r\n splitNumber: 10,\r\n width: 15,\r\n color: '#FFFFFF',\r\n childNumber: 5,\r\n childWidth: 5\r\n },\r\n pointer: {\r\n width: 15,\r\n color: 'auto'\r\n }\r\n }, opts.extra.gauge);\r\n\r\n if (gaugeOption.oldAngle == undefined) {\r\n gaugeOption.oldAngle = gaugeOption.startAngle;\r\n }\r\n if (gaugeOption.oldData == undefined) {\r\n gaugeOption.oldData = 0;\r\n }\r\n categories = getGaugeAxisPoints(categories, gaugeOption.startAngle, gaugeOption.endAngle);\r\n\r\n var centerPosition = {\r\n x: opts.width / 2,\r\n y: opts.height / 2\r\n };\r\n var radius = Math.min(centerPosition.x, centerPosition.y);\r\n radius -= 5 * opts.pixelRatio;\r\n radius -= gaugeOption.width / 2;\r\n var innerRadius = radius - gaugeOption.width;\r\n\tvar totalAngle=0;\r\n\t\r\n\t//判断仪表盘的样式:default百度样式,progress新样式\r\n\tif(gaugeOption.type == 'progress'){\r\n\t\t\r\n\t\t//## 第一步画中心圆形背景和进度条背景\r\n\t\t//中心圆形背景\r\n\t\tvar pieRadius = radius - gaugeOption.width*3;\r\n\t\tcontext.beginPath();\r\n\t\tlet gradient = context.createLinearGradient(centerPosition.x, centerPosition.y-pieRadius, centerPosition.x , centerPosition.y+pieRadius);\r\n\t\t//配置渐变填充(起点:中心点向上减半径;结束点中心点向下加半径)\r\n\t\tgradient.addColorStop('0', hexToRgb(series[0].color, 0.3));\r\n\t\tgradient.addColorStop('1.0',hexToRgb(\"#FFFFFF\", 0.1));\r\n\t\tcontext.setFillStyle(gradient);\r\n\t\tcontext.arc(centerPosition.x, centerPosition.y, pieRadius, 0, 2*Math.PI, false);\r\n\t\tcontext.fill();\r\n\t\t//画进度条背景\r\n\t\tcontext.setLineWidth(gaugeOption.width);\r\n\t\tcontext.setStrokeStyle(hexToRgb(series[0].color, 0.3));\r\n\t\tcontext.setLineCap('round');\r\n\t\tcontext.beginPath();\r\n\t\tcontext.arc(centerPosition.x, centerPosition.y, innerRadius , gaugeOption.startAngle * Math.PI, gaugeOption.endAngle *Math.PI, false);\r\n\t\tcontext.stroke();\r\n\t\t\r\n\t\t//## 第二步画刻度线\r\n\t\ttotalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;\r\n\t\tlet splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\r\n\t\tlet childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;\r\n\t\tlet startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;\r\n\t\tlet endX = -radius - gaugeOption.width - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;\r\n\t\tcontext.save();\r\n\t\tcontext.translate(centerPosition.x, centerPosition.y);\r\n\t\tcontext.rotate((gaugeOption.startAngle - 1) * Math.PI);\r\n\t\tlet len = gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1;\r\n\t\tlet proc = series[0].data * process;\r\n\t\tfor (let i = 0; i < len; i++) {\r\n\t\t context.beginPath();\r\n\t\t\t//刻度线随进度变色\r\n\t\t\tif(proc>(i/len)){\r\n\t\t\t\tcontext.setStrokeStyle(hexToRgb(series[0].color, 1));\r\n\t\t\t}else{\r\n\t\t\t\tcontext.setStrokeStyle(hexToRgb(series[0].color, 0.3));\r\n\t\t\t}\r\n\t\t context.setLineWidth(3 * opts.pixelRatio);\r\n\t\t context.moveTo(startX, 0);\r\n\t\t context.lineTo(endX, 0);\r\n\t\t context.stroke();\r\n\t\t context.rotate(childAngle * Math.PI);\r\n\t\t}\r\n\t\tcontext.restore();\r\n\t\t\r\n\t\t//## 第三步画进度条\r\n\t\tseries = getArcbarDataPoints(series, gaugeOption, process);\r\n\t\tcontext.setLineWidth(gaugeOption.width);\r\n\t\tcontext.setStrokeStyle(series[0].color);\r\n\t\tcontext.setLineCap('round');\r\n\t\tcontext.beginPath();\r\n\t\tcontext.arc(centerPosition.x, centerPosition.y, innerRadius , gaugeOption.startAngle * Math.PI, series[0]._proportion_ *Math.PI, false);\r\n\t\tcontext.stroke();\r\n\t\t\r\n\t\t//## 第四步画指针\r\n\t\tlet pointerRadius = radius - gaugeOption.width*2.5;\r\n\t\tcontext.save();\r\n\t\tcontext.translate(centerPosition.x, centerPosition.y);\r\n\t\tcontext.rotate((series[0]._proportion_ - 1) * Math.PI);\r\n\t\tcontext.beginPath();\r\n\t\tcontext.setLineWidth(gaugeOption.width/3);\r\n\t\tlet gradient3 = context.createLinearGradient(0, -pointerRadius*0.6, 0 , pointerRadius*0.6);\r\n\t\tgradient3.addColorStop('0', hexToRgb('#FFFFFF', 0));\r\n\t\tgradient3.addColorStop('0.5', hexToRgb(series[0].color, 1));\r\n\t\tgradient3.addColorStop('1.0', hexToRgb('#FFFFFF', 0));\r\n\t\tcontext.setStrokeStyle(gradient3);\r\n\t\tcontext.arc(0, 0, pointerRadius , 0.85* Math.PI, 1.15 * Math.PI, false);\r\n\t\tcontext.stroke();\r\n\t\tcontext.beginPath();\r\n\t\tcontext.setLineWidth(1);\r\n\t\tcontext.setStrokeStyle(series[0].color);\r\n\t\tcontext.setFillStyle(series[0].color);\r\n\t\tcontext.moveTo(-pointerRadius-gaugeOption.width/3/2,-4);\r\n\t\tcontext.lineTo(-pointerRadius-gaugeOption.width/3/2-4,0);\r\n\t\tcontext.lineTo(-pointerRadius-gaugeOption.width/3/2,4);\r\n\t\tcontext.lineTo(-pointerRadius-gaugeOption.width/3/2,-4);\r\n\t\tcontext.stroke();\r\n\t\tcontext.fill();\r\n\t\tcontext.restore();\r\n\t\t\r\n\t//default百度样式\r\n\t}else{\r\n\t\t//画背景\r\n\t\tcontext.setLineWidth(gaugeOption.width);\r\n\t\tcontext.setLineCap('butt');\r\n\t\tfor (let i = 0; i < categories.length; i++) {\r\n\t\t let eachCategories = categories[i];\r\n\t\t context.beginPath();\r\n\t\t context.setStrokeStyle(eachCategories.color);\r\n\t\t context.arc(centerPosition.x, centerPosition.y, radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ *Math.PI, false);\r\n\t\t context.stroke();\r\n\t\t}\r\n\t\tcontext.save();\r\n\t\t\r\n\t\t//画刻度线\r\n\t\ttotalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;\r\n\t\tlet splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\r\n\t\tlet childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;\r\n\t\tlet startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;\r\n\t\tlet endX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;\r\n\t\tlet childendX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.childWidth;\r\n\t\t\r\n\t\tcontext.translate(centerPosition.x, centerPosition.y);\r\n\t\tcontext.rotate((gaugeOption.startAngle - 1) * Math.PI);\r\n\t\t\r\n\t\tfor (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) {\r\n\t\t context.beginPath();\r\n\t\t context.setStrokeStyle(gaugeOption.splitLine.color);\r\n\t\t context.setLineWidth(2 * opts.pixelRatio);\r\n\t\t context.moveTo(startX, 0);\r\n\t\t context.lineTo(endX, 0);\r\n\t\t context.stroke();\r\n\t\t context.rotate(splitAngle * Math.PI);\r\n\t\t}\r\n\t\tcontext.restore();\r\n\t\t\r\n\t\tcontext.save();\r\n\t\tcontext.translate(centerPosition.x, centerPosition.y);\r\n\t\tcontext.rotate((gaugeOption.startAngle - 1) * Math.PI);\r\n\t\t\r\n\t\tfor (let i = 0; i < gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; i++) {\r\n\t\t context.beginPath();\r\n\t\t context.setStrokeStyle(gaugeOption.splitLine.color);\r\n\t\t context.setLineWidth(1 * opts.pixelRatio);\r\n\t\t context.moveTo(startX, 0);\r\n\t\t context.lineTo(childendX, 0);\r\n\t\t context.stroke();\r\n\t\t context.rotate(childAngle * Math.PI);\r\n\t\t}\r\n\t\tcontext.restore();\r\n\t\t\r\n\t\t//画指针\r\n\t\tseries = getGaugeDataPoints(series, categories, gaugeOption, process);\r\n\t\t\r\n\t\tfor (let i = 0; i < series.length; i++) {\r\n\t\t let eachSeries = series[i];\r\n\t\t context.save();\r\n\t\t context.translate(centerPosition.x, centerPosition.y);\r\n\t\t context.rotate((eachSeries._proportion_ - 1) * Math.PI);\r\n\t\t context.beginPath();\r\n\t\t context.setFillStyle(eachSeries.color);\r\n\t\t context.moveTo(gaugeOption.pointer.width, 0);\r\n\t\t context.lineTo(0, -gaugeOption.pointer.width / 2);\r\n\t\t context.lineTo(-innerRadius, 0);\r\n\t\t context.lineTo(0, gaugeOption.pointer.width / 2);\r\n\t\t context.lineTo(gaugeOption.pointer.width, 0);\r\n\t\t context.closePath();\r\n\t\t context.fill();\r\n\t\t context.beginPath();\r\n\t\t context.setFillStyle('#FFFFFF');\r\n\t\t context.arc(0, 0, gaugeOption.pointer.width / 6, 0, 2 * Math.PI, false);\r\n\t\t context.fill();\r\n\t\t context.restore();\r\n\t\t}\r\n\t\t\r\n\t\tif (opts.dataLabel !== false) {\r\n\t\t drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//画仪表盘标题,副标题\r\n drawRingTitle(opts, config, context, centerPosition);\r\n\r\n if (process === 1 && opts.type === 'gauge') {\r\n opts.extra.gauge.oldAngle = series[0]._proportion_;\r\n opts.extra.gauge.oldData = series[0].data;\r\n }\r\n return {\r\n center: centerPosition,\r\n radius: radius,\r\n innerRadius: innerRadius,\r\n categories: categories,\r\n totalAngle: totalAngle\r\n };\r\n}\r\n\r\nfunction drawRadarDataPoints(series, opts, config, context) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n var radarOption = assign({},{\r\n gridColor: '#cccccc',\r\n labelColor: '#666666',\r\n opacity: 0.2,\r\n\t\tgridCount:3\r\n },opts.extra.radar);\r\n \r\n var coordinateAngle = getRadarCoordinateSeries(opts.categories.length);\r\n \r\n var centerPosition = {\r\n x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\r\n y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2\r\n };\r\n\r\n var radius = Math.min(centerPosition.x - (getMaxTextListLength(opts.categories) + config.radarLabelTextMargin),\r\n centerPosition.y - config.radarLabelTextMargin);\r\n //TODO逻辑不对\r\n radius -= opts.padding[1];\r\n\r\n // draw grid\r\n context.beginPath();\r\n context.setLineWidth(1 * opts.pixelRatio);\r\n context.setStrokeStyle(radarOption.gridColor);\r\n coordinateAngle.forEach(function(angle) {\r\n var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition);\r\n context.moveTo(centerPosition.x, centerPosition.y);\r\n context.lineTo(pos.x, pos.y);\r\n });\r\n context.stroke();\r\n context.closePath();\r\n // draw split line grid\r\n\r\n var _loop = function _loop(i) {\r\n var startPos = {};\r\n context.beginPath();\r\n context.setLineWidth(1 * opts.pixelRatio);\r\n context.setStrokeStyle(radarOption.gridColor);\r\n coordinateAngle.forEach(function(angle, index) {\r\n var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(angle), radius / radarOption.gridCount * i * Math.sin(angle), centerPosition);\r\n if (index === 0) {\r\n startPos = pos;\r\n context.moveTo(pos.x, pos.y);\r\n } else {\r\n context.lineTo(pos.x, pos.y);\r\n }\r\n });\r\n context.lineTo(startPos.x, startPos.y);\r\n context.stroke();\r\n context.closePath();\r\n };\r\n\r\n for (var i = 1; i <= radarOption.gridCount; i++) {\r\n _loop(i);\r\n }\r\n\r\n var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process);\r\n\r\n radarDataPoints.forEach(function(eachSeries, seriesIndex) {\r\n // 绘制区域数据\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(eachSeries.color, radarOption.opacity));\r\n eachSeries.data.forEach(function(item, index) {\r\n if (index === 0) {\r\n context.moveTo(item.position.x, item.position.y);\r\n } else {\r\n context.lineTo(item.position.x, item.position.y);\r\n }\r\n });\r\n context.closePath();\r\n context.fill();\r\n\r\n if (opts.dataPointShape !== false) {\r\n var points = eachSeries.data.map(function(item) {\r\n return item.position;\r\n });\r\n drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\r\n }\r\n });\r\n // draw label text\r\n drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context);\r\n\r\n return {\r\n center: centerPosition,\r\n radius: radius,\r\n angleList: coordinateAngle\r\n };\r\n}\r\n\r\nfunction normalInt(min, max, iter) {\r\n iter = iter==0?1:iter;\r\n var arr = [];\r\n for (var i = 0; i < iter; i++) {\r\n arr[i] = Math.random();\r\n };\r\n return Math.floor(arr.reduce(function(i,j){return i+j})/iter*(max-min))+min; \r\n};\r\n\r\nfunction collisionNew(area,points,width,height){\r\n var isIn=false;\r\n for(let i=0;i<points.length;i++){\r\n if(points[i].area){\r\n if(area[3]<points[i].area[1]||area[0]>points[i].area[2]||area[1]>points[i].area[3]||area[2]<points[i].area[0]){\r\n if(area[0]<0 || area[1]<0 || area[2]>width || area[3]>height){\r\n isIn=true;\r\n break;\r\n }else{\r\n isIn=false;\r\n }\r\n }else{\r\n isIn=true;\r\n break;\r\n }\r\n }\r\n }\r\n return isIn;\r\n};\r\n\r\nfunction getBoundingBox(data) {\r\n var bounds = {}, coords;\r\n bounds.xMin = 180;\r\n bounds.xMax = 0;\r\n bounds.yMin = 90;\r\n bounds.yMax = 0\r\n for (var i = 0; i < data.length; i++) {\r\n var coorda = data[i].geometry.coordinates\r\n for (var k = 0; k < coorda.length; k++) {\r\n coords = coorda[k];\r\n if (coords.length == 1) {\r\n coords = coords[0]\r\n }\r\n for (var j = 0; j < coords.length; j++) {\r\n var longitude = coords[j][0];\r\n var latitude = coords[j][1];\r\n var point = {\r\n x: longitude, \r\n y: latitude \r\n }\r\n bounds.xMin = bounds.xMin < point.x ? bounds.xMin : point.x;\r\n bounds.xMax = bounds.xMax > point.x ? bounds.xMax : point.x;\r\n bounds.yMin = bounds.yMin < point.y ? bounds.yMin : point.y;\r\n bounds.yMax = bounds.yMax > point.y ? bounds.yMax : point.y;\r\n }\r\n }\r\n }\r\n return bounds;\r\n}\r\n\r\nfunction coordinateToPoint(latitude, longitude,bounds,scale,xoffset,yoffset) {\r\n return {\r\n x: (longitude - bounds.xMin) * scale+xoffset,\r\n y: (bounds.yMax - latitude) * scale+yoffset\r\n };\r\n}\r\n\r\nfunction pointToCoordinate(pointY, pointX,bounds,scale,xoffset,yoffset) {\r\n return {\r\n x: (pointX-xoffset)/scale+bounds.xMin,\r\n y: bounds.yMax - (pointY-yoffset)/scale\r\n };\r\n}\r\n\r\nfunction isRayIntersectsSegment(poi,s_poi,e_poi){\r\n if (s_poi[1]==e_poi[1]){return false;} \r\n if (s_poi[1]>poi[1] && e_poi[1]>poi[1]){return false;}\r\n if (s_poi[1]<poi[1] && e_poi[1]<poi[1]){return false;}\r\n if (s_poi[1]==poi[1] && e_poi[1]>poi[1]){return false;}\r\n if (e_poi[1]==poi[1] && s_poi[1]>poi[1]){return false;}\r\n if (s_poi[0]<poi[0] && e_poi[1]<poi[1]){return false;}\r\n let xseg=e_poi[0]-(e_poi[0]-s_poi[0])*(e_poi[1]-poi[1])/(e_poi[1]-s_poi[1]); \r\n if (xseg<poi[0]){\r\n return false;\r\n }else{\r\n return true;\r\n }\r\n} \r\n\r\nfunction isPoiWithinPoly(poi,poly){\r\n let sinsc=0;\r\n for (let i=0;i<poly.length;i++){\r\n let epoly=poly[i][0];\r\n if (poly.length == 1) {\r\n epoly = poly[i][0]\r\n }\r\n for(let j=0;j<epoly.length-1;j++){\r\n let s_poi=epoly[j];\r\n let e_poi=epoly[j+1];\r\n if (isRayIntersectsSegment(poi,s_poi,e_poi)){\r\n sinsc+=1;\r\n }\r\n }\r\n }\r\n \r\n if(sinsc%2==1){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n}\r\n\r\n\r\nfunction drawMapDataPoints(series, opts, config, context) {\r\n var mapOption=assign({},{\r\n border:true,\r\n borderWidth:1,\r\n borderColor:'#666666',\r\n fillOpacity:0.6,\r\n activeBorderColor:'#f04864',\r\n activeFillColor:'#facc14',\r\n activeFillOpacity:1\r\n },opts.extra.map);\r\n var coords, point;\r\n var data = series;\r\n var bounds= getBoundingBox(data);\r\n var xScale = opts.width / Math.abs(bounds.xMax - bounds.xMin);\r\n var yScale = opts.height / Math.abs(bounds.yMax - bounds.yMin);\r\n var scale = xScale < yScale ? xScale : yScale;\r\n var xoffset=opts.width/2-Math.abs(bounds.xMax - bounds.xMin)/2*scale;\r\n var yoffset=opts.height/2-Math.abs(bounds.yMax - bounds.yMin)/2*scale;\r\n context.beginPath();\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n context.setFillStyle(opts.background||'#FFFFFF');\r\n context.rect(0,0,opts.width,opts.height);\r\n context.fill();\r\n for (var i = 0; i < data.length; i++) {\r\n context.beginPath();\r\n context.setLineWidth(mapOption.borderWidth * opts.pixelRatio);\r\n context.setStrokeStyle(mapOption.borderColor);\r\n context.setFillStyle(hexToRgb(series[i].color, mapOption.fillOpacity));\r\n if (opts.tooltip) {\r\n if (opts.tooltip.index == i ) {\r\n context.setStrokeStyle(mapOption.activeBorderColor);\r\n context.setFillStyle(hexToRgb(mapOption.activeFillColor, mapOption.activeFillOpacity));\r\n }\r\n }\r\n var coorda = data[i].geometry.coordinates\r\n for (var k = 0; k < coorda.length; k++) {\r\n coords = coorda[k];\r\n if (coords.length == 1) {\r\n coords = coords[0]\r\n }\r\n for (var j = 0; j < coords.length; j++) {\r\n point = coordinateToPoint(coords[j][1], coords[j][0],bounds,scale,xoffset,yoffset)\r\n if (j === 0) {\r\n context.beginPath();\r\n context.moveTo(point.x, point.y);\r\n } else {\r\n context.lineTo(point.x, point.y);\r\n }\r\n }\r\n context.fill();\r\n if(mapOption.border == true){\r\n context.stroke();\r\n }\r\n }\r\n if(opts.dataLabel == true){\r\n var centerPoint = data[i].properties.centroid;\r\n if(centerPoint){\r\n point = coordinateToPoint(centerPoint[1], centerPoint[0],bounds,scale,xoffset,yoffset);\r\n let fontSize=data[i].textSize||config.fontSize;\r\n let text=data[i].properties.name;\r\n context.beginPath();\r\n context.setFontSize(fontSize)\r\n context.setFillStyle(data[i].textColor||'#666666')\r\n context.fillText(text, point.x-measureText(text,fontSize)/2, point.y+fontSize/2);\r\n context.closePath();\r\n context.stroke();\r\n }\r\n }\r\n }\r\n opts.chartData.mapData={\r\n bounds:bounds,\r\n scale:scale,\r\n xoffset:xoffset,\r\n yoffset:yoffset\r\n }\r\n drawToolTipBridge(opts, config, context,1);\r\n context.draw();\r\n}\r\n\r\nfunction getWordCloudPoint(opts,type){\r\n let points = opts.series.sort(function(a,b){return parseInt(b.textSize)-parseInt(a.textSize);});\r\n switch (type) {\r\n case 'normal':\r\n for (let i = 0; i < points.length; i++) {\r\n let text = points[i].name;\r\n let tHeight = points[i].textSize;\r\n let tWidth = measureText(text,tHeight);\r\n let x,y;\r\n let area;\r\n let breaknum=0;\r\n while(true) {\r\n breaknum++;\r\n x = normalInt(-opts.width/2, opts.width/2,5) - tWidth/2;\r\n y = normalInt(-opts.height/2, opts.height/2,5) + tHeight/2;\r\n area=[x-5+opts.width/2,y-5-tHeight+opts.height/2,x+tWidth+5+opts.width/2,y+5+opts.height/2];\r\n let isCollision = collisionNew(area,points,opts.width,opts.height);\r\n if (!isCollision) break;\r\n if (breaknum==1000){\r\n area=[-100,-100,-100,-100];\r\n break;\r\n }\r\n };\r\n points[i].area=area;\r\n }\r\n break;\r\n case 'vertical':\r\n function Spin(){\r\n //获取均匀随机值,是否旋转,旋转的概率为(1-0.5)\r\n if (Math.random()>0.7) {\r\n return true;\r\n }else {return false};\r\n };\r\n for (let i = 0; i < points.length; i++) { \r\n let text = points[i].name;\r\n let tHeight = points[i].textSize;\r\n let tWidth = measureText(text,tHeight);\r\n let isSpin = Spin(); \r\n let x,y,area,areav;\r\n let breaknum=0;\r\n while(true) {\r\n breaknum++;\r\n let isCollision;\r\n if (isSpin) {\r\n x = normalInt(-opts.width/2, opts.width/2,5) - tWidth/2;\r\n y = normalInt(-opts.height/2, opts.height/2,5)+tHeight/2;\r\n area=[y-5-tWidth+opts.width/2,(-x-5+opts.height/2),y+5+opts.width/2,(-x+tHeight+5+opts.height/2)];\r\n areav=[opts.width-(opts.width/2-opts.height/2)-(-x+tHeight+5+opts.height/2)-5,(opts.height/2-opts.width/2)+(y-5-tWidth+opts.width/2)-5,opts.width-(opts.width/2-opts.height/2)-(-x+tHeight+5+opts.height/2)+tHeight,(opts.height/2-opts.width/2)+(y-5-tWidth+opts.width/2)+tWidth+5];\r\n isCollision = collisionNew(areav,points,opts.height,opts.width);\r\n }else{\r\n x = normalInt(-opts.width/2, opts.width/2,5) - tWidth/2;\r\n y = normalInt(-opts.height/2, opts.height/2,5)+tHeight/2;\r\n area=[x-5+opts.width/2,y-5-tHeight+opts.height/2,x+tWidth+5+opts.width/2,y+5+opts.height/2];\r\n isCollision = collisionNew(area,points,opts.width,opts.height);\r\n } \r\n if (!isCollision) break;\r\n if (breaknum==1000){\r\n area=[-1000,-1000,-1000,-1000];\r\n break;\r\n }\r\n };\r\n if (isSpin) {\r\n points[i].area=areav;\r\n points[i].areav=area;\r\n }else{\r\n points[i].area=area;\r\n }\r\n points[i].rotate=isSpin;\r\n };\r\n break;\r\n }\r\n return points;\r\n}\r\n\r\n\r\nfunction drawWordCloudDataPoints(series, opts, config, context) {\r\n let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n let wordOption = assign({},{\r\n type: 'normal',\r\n autoColors: true\r\n },opts.extra.word);\r\n \r\n context.beginPath();\r\n context.setFillStyle(opts.background||'#FFFFFF');\r\n context.rect(0,0,opts.width,opts.height);\r\n context.fill();\r\n context.save();\r\n let points = opts.chartData.wordCloudData;\r\n context.translate(opts.width/2,opts.height/2);\r\n \r\n for(let i=0;i<points.length;i++){\r\n context.save();\r\n if(points[i].rotate){\r\n context.rotate(90 * Math.PI / 180);\r\n }\r\n let text = points[i].name;\r\n let tHeight = points[i].textSize;\r\n let tWidth = measureText(text,tHeight);\r\n context.beginPath();\r\n context.setStrokeStyle(points[i].color);\r\n context.setFillStyle(points[i].color);\r\n context.setFontSize(tHeight);\r\n if(points[i].rotate){\r\n if(points[i].areav[0]>0){\r\n if (opts.tooltip) {\r\n if (opts.tooltip.index == i) {\r\n context.strokeText(text,(points[i].areav[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].areav[1]+5+tHeight-opts.height/2)*process);\r\n }else{\r\n context.fillText(text,(points[i].areav[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].areav[1]+5+tHeight-opts.height/2)*process);\r\n }\r\n }else{\r\n context.fillText(text,(points[i].areav[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].areav[1]+5+tHeight-opts.height/2)*process);\r\n } \r\n }\r\n }else{\r\n if(points[i].area[0]>0){\r\n if (opts.tooltip) {\r\n if (opts.tooltip.index == i) {\r\n context.strokeText(text,(points[i].area[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].area[1]+5+tHeight-opts.height/2)*process);\r\n }else{\r\n context.fillText(text,(points[i].area[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].area[1]+5+tHeight-opts.height/2)*process);\r\n }\r\n }else{\r\n context.fillText(text,(points[i].area[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].area[1]+5+tHeight-opts.height/2)*process);\r\n }\r\n \r\n }\r\n }\r\n \r\n context.stroke();\r\n context.restore();\r\n }\r\n context.restore();\r\n}\r\n\r\nfunction drawFunnelDataPoints(series, opts, config, context) {\r\n let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n let funnelOption = assign({},{\r\n activeWidth:10,\r\n activeOpacity:0.3,\r\n border:false,\r\n borderWidth:2,\r\n borderColor:'#FFFFFF',\r\n fillOpacity:1,\r\n labelAlign:'right'\r\n },opts.extra.funnel);\r\n let eachSpacing = (opts.height - opts.area[0] - opts.area[2])/series.length;\r\n let centerPosition = {\r\n x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\r\n y: opts.height-opts.area[2]\r\n };\r\n let activeWidth = funnelOption.activeWidth;\r\n let radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - activeWidth, (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth);\r\n series = getFunnelDataPoints(series, radius, process);\r\n context.save();\r\n context.translate(centerPosition.x,centerPosition.y);\r\n for(let i=0;i<series.length;i++){\r\n if(i==0){\r\n if (opts.tooltip) {\r\n if (opts.tooltip.index == i) {\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(series[i].color, funnelOption.activeOpacity));\r\n context.moveTo(-activeWidth, 0);\r\n context.lineTo(-series[i].radius-activeWidth, -eachSpacing);\r\n context.lineTo(series[i].radius+activeWidth, -eachSpacing);\r\n context.lineTo(activeWidth, 0);\r\n context.lineTo(-activeWidth, 0);\r\n context.closePath();\r\n context.fill();\r\n }\r\n }\r\n series[i].funnelArea=[centerPosition.x-series[i].radius,centerPosition.y-eachSpacing,centerPosition.x+series[i].radius,centerPosition.y];\r\n context.beginPath();\r\n context.setLineWidth(funnelOption.borderWidth * opts.pixelRatio);\r\n context.setStrokeStyle(funnelOption.borderColor);\r\n context.setFillStyle(hexToRgb(series[i].color, funnelOption.fillOpacity));\r\n context.moveTo(0, 0);\r\n context.lineTo(-series[i].radius, -eachSpacing);\r\n context.lineTo(series[i].radius, -eachSpacing);\r\n context.lineTo(0, 0);\r\n context.closePath();\r\n context.fill();\r\n if(funnelOption.border == true){\r\n context.stroke();\r\n }\r\n }else{\r\n if (opts.tooltip) {\r\n if (opts.tooltip.index == i) {\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(series[i].color, funnelOption.activeOpacity));\r\n context.moveTo(0, 0);\r\n context.lineTo(-series[i-1].radius-activeWidth, 0);\r\n context.lineTo(-series[i].radius-activeWidth, -eachSpacing);\r\n context.lineTo(series[i].radius+activeWidth, -eachSpacing);\r\n context.lineTo(series[i-1].radius+activeWidth, 0);\r\n context.lineTo(0, 0);\r\n context.closePath();\r\n context.fill();\r\n }\r\n }\r\n series[i].funnelArea=[centerPosition.x-series[i].radius,centerPosition.y-eachSpacing*(i+1),centerPosition.x+series[i].radius,centerPosition.y-eachSpacing*i];\r\n context.beginPath();\r\n context.setLineWidth(funnelOption.borderWidth * opts.pixelRatio);\r\n context.setStrokeStyle(funnelOption.borderColor);\r\n context.setFillStyle(hexToRgb(series[i].color, funnelOption.fillOpacity));\r\n context.moveTo(0, 0);\r\n context.lineTo(-series[i-1].radius, 0);\r\n context.lineTo(-series[i].radius, -eachSpacing);\r\n context.lineTo(series[i].radius, -eachSpacing);\r\n context.lineTo(series[i-1].radius, 0);\r\n context.lineTo(0, 0);\r\n context.closePath();\r\n context.fill();\r\n if(funnelOption.border == true){\r\n context.stroke();\r\n }\r\n }\r\n context.translate(0,-eachSpacing)\r\n }\r\n context.restore();\r\n \r\n if (opts.dataLabel !== false && process === 1) {\r\n drawFunnelText(series, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition);\r\n }\r\n \r\n return {\r\n center: centerPosition,\r\n radius: radius,\r\n series: series\r\n };\r\n}\r\n\r\nfunction drawFunnelText(series, opts, context, eachSpacing, labelAlign,activeWidth, centerPosition){\r\n for(let i=0;i<series.length;i++){\r\n let item = series[i];\r\n let startX,endX,startY,fontSize;\r\n let text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) +'%';\r\n if(labelAlign == 'right'){\r\n if(i==0){\r\n startX=(item.funnelArea[2]+centerPosition.x)/2;\r\n }else{\r\n startX=(item.funnelArea[2]+series[i-1].funnelArea[2])/2;\r\n }\r\n endX=startX+activeWidth*2;\r\n startY=item.funnelArea[1]+eachSpacing/2;\r\n fontSize = item.textSize || opts.fontSize;\r\n context.setLineWidth(1 * opts.pixelRatio);\r\n context.setStrokeStyle(item.color);\r\n context.setFillStyle(item.color);\r\n context.beginPath();\r\n context.moveTo(startX,startY );\r\n context.lineTo(endX,startY);\r\n context.stroke();\r\n context.closePath();\r\n context.beginPath();\r\n context.moveTo(endX, startY);\r\n context.arc(endX, startY, 2, 0, 2 * Math.PI);\r\n context.closePath();\r\n context.fill();\r\n context.beginPath();\r\n context.setFontSize(fontSize);\r\n context.setFillStyle(item.textColor || '#666666');\r\n context.fillText(text, endX+5, startY + fontSize/2 -2);\r\n context.closePath();\r\n context.stroke();\r\n context.closePath();\r\n }else{\r\n if(i==0){\r\n startX=(item.funnelArea[0]+centerPosition.x)/2;\r\n }else{\r\n startX=(item.funnelArea[0]+series[i-1].funnelArea[0])/2;\r\n }\r\n endX=startX-activeWidth*2;\r\n startY=item.funnelArea[1]+eachSpacing/2;\r\n fontSize = item.textSize || opts.fontSize;\r\n context.setLineWidth(1 * opts.pixelRatio);\r\n context.setStrokeStyle(item.color);\r\n context.setFillStyle(item.color);\r\n context.beginPath();\r\n context.moveTo(startX,startY );\r\n context.lineTo(endX,startY);\r\n context.stroke();\r\n context.closePath();\r\n context.beginPath();\r\n context.moveTo(endX, startY);\r\n context.arc(endX, startY, 2, 0, 2 * Math.PI);\r\n context.closePath();\r\n context.fill();\r\n context.beginPath();\r\n context.setFontSize(fontSize);\r\n context.setFillStyle(item.textColor || '#666666');\r\n context.fillText(text, endX-5-measureText(text), startY + fontSize/2 -2);\r\n context.closePath();\r\n context.stroke();\r\n context.closePath();\r\n }\r\n \r\n }\r\n}\r\n\r\n\r\nfunction drawCanvas(opts, context) {\r\n context.draw();\r\n}\r\n\r\nvar Timing = {\r\n easeIn: function easeIn(pos) {\r\n return Math.pow(pos, 3);\r\n },\r\n easeOut: function easeOut(pos) {\r\n return Math.pow(pos - 1, 3) + 1;\r\n },\r\n easeInOut: function easeInOut(pos) {\r\n if ((pos /= 0.5) < 1) {\r\n return 0.5 * Math.pow(pos, 3);\r\n } else {\r\n return 0.5 * (Math.pow(pos - 2, 3) + 2);\r\n }\r\n },\r\n linear: function linear(pos) {\r\n return pos;\r\n }\r\n};\r\n\r\nfunction Animation(opts) {\r\n this.isStop = false;\r\n opts.duration = typeof opts.duration === 'undefined' ? 1000 : opts.duration;\r\n opts.timing = opts.timing || 'linear';\r\n var delay = 17;\r\n\r\n function createAnimationFrame() {\r\n if (typeof setTimeout !== 'undefined') {\r\n return function(step, delay) {\r\n setTimeout(function() {\r\n var timeStamp = +new Date();\r\n step(timeStamp);\r\n }, delay);\r\n };\r\n } else if (typeof requestAnimationFrame !== 'undefined') {\r\n return requestAnimationFrame;\r\n } else {\r\n return function(step) {\r\n step(null);\r\n };\r\n }\r\n };\r\n var animationFrame = createAnimationFrame();\r\n var startTimeStamp = null;\r\n var _step = function step(timestamp) {\r\n if (timestamp === null || this.isStop === true) {\r\n opts.onProcess && opts.onProcess(1);\r\n opts.onAnimationFinish && opts.onAnimationFinish();\r\n return;\r\n }\r\n if (startTimeStamp === null) {\r\n startTimeStamp = timestamp;\r\n }\r\n if (timestamp - startTimeStamp < opts.duration) {\r\n var process = (timestamp - startTimeStamp) / opts.duration;\r\n var timingFunction = Timing[opts.timing];\r\n process = timingFunction(process);\r\n\r\n opts.onProcess && opts.onProcess(process);\r\n animationFrame(_step, delay);\r\n } else {\r\n opts.onProcess && opts.onProcess(1);\r\n opts.onAnimationFinish && opts.onAnimationFinish();\r\n }\r\n };\r\n _step = _step.bind(this);\r\n animationFrame(_step, delay);\r\n}\r\n\r\n// stop animation immediately\r\n// and tigger onAnimationFinish\r\nAnimation.prototype.stop = function() {\r\n this.isStop = true;\r\n};\r\n\r\nfunction drawCharts(type, opts, config, context) {\r\n var _this = this;\r\n var series = opts.series;\r\n var categories = opts.categories;\r\n series = fillSeries(series, opts, config);\r\n var duration = opts.animation ? opts.duration : 0;\r\n _this.animationInstance && _this.animationInstance.stop();\r\n var seriesMA = null;\r\n if (type == 'candle') {\r\n let average = assign({}, opts.extra.candle.average);\r\n if (average.show) {\r\n seriesMA = calCandleMA(average.day, average.name, average.color, series[0].data);\r\n seriesMA = fillSeries(seriesMA, opts, config);\r\n opts.seriesMA = seriesMA;\r\n } else if (opts.seriesMA) {\r\n seriesMA = opts.seriesMA = fillSeries(opts.seriesMA, opts, config);\r\n } else {\r\n seriesMA = series;\r\n }\r\n } else {\r\n seriesMA = series;\r\n }\r\n\r\n /* 过滤掉show=false的series */\r\n opts._series_ = series = filterSeries(series);\r\n\r\n //重新计算图表区域\r\n\r\n opts.area = new Array(4);\r\n //复位绘图区域\r\n for (let j = 0; j < 4; j++) {\r\n opts.area[j] = opts.padding[j];\r\n }\r\n\r\n //通过计算三大区域:图例、X轴、Y轴的大小,确定绘图区域\r\n var _calLegendData = calLegendData(seriesMA, opts, config, opts.chartData),\r\n legendHeight = _calLegendData.area.wholeHeight,\r\n legendWidth = _calLegendData.area.wholeWidth;\r\n \r\n switch (opts.legend.position) {\r\n case 'top':\r\n opts.area[0] += legendHeight;\r\n break;\r\n case 'bottom':\r\n opts.area[2] += legendHeight;\r\n break;\r\n case 'left':\r\n opts.area[3] += legendWidth;\r\n break;\r\n case 'right':\r\n opts.area[1] += legendWidth;\r\n break;\r\n }\r\n\r\n let _calYAxisData = {},yAxisWidth = 0;\r\n if (opts.type === 'line' || opts.type === 'column' || opts.type === 'area' || opts.type === 'mix' || opts.type === 'candle') {\r\n _calYAxisData = calYAxisData(series, opts, config);\r\n yAxisWidth = _calYAxisData.yAxisWidth;\r\n //如果显示Y轴标题\r\n if(opts.yAxis.showTitle){\r\n let maxTitleHeight=0;\r\n for(let i=0;i<opts.yAxis.data.length;i++){\r\n maxTitleHeight = Math.max(maxTitleHeight,opts.yAxis.data[i].titleFontSize?opts.yAxis.data[i].titleFontSize:config.fontSize)\r\n }\r\n opts.area[0] += (maxTitleHeight+6)*opts.pixelRatio;\r\n }\r\n let rightIndex=0,leftIndex=0;\r\n //计算主绘图区域左右位置\r\n for(let i=0;i<yAxisWidth.length;i++){\r\n if(yAxisWidth[i].position=='left'){\r\n if(leftIndex>0){\r\n opts.area[3] += yAxisWidth[i].width + opts.yAxis.padding;\r\n }else{\r\n opts.area[3] += yAxisWidth[i].width;\r\n }\r\n leftIndex +=1;\r\n }else{\r\n if(rightIndex>0){\r\n opts.area[1] += yAxisWidth[i].width + opts.yAxis.padding;\r\n }else{\r\n opts.area[1] += yAxisWidth[i].width;\r\n }\r\n rightIndex +=1;\r\n }\r\n }\r\n }else{\r\n config.yAxisWidth = yAxisWidth;\r\n }\r\n opts.chartData.yAxisData = _calYAxisData;\r\n\r\n if (opts.categories && opts.categories.length) {\r\n opts.chartData.xAxisData = getXAxisPoints(opts.categories, opts, config);\r\n let _calCategoriesData = calCategoriesData(opts.categories, opts, config, opts.chartData.xAxisData.eachSpacing),\r\n xAxisHeight = _calCategoriesData.xAxisHeight,\r\n angle = _calCategoriesData.angle;\r\n config.xAxisHeight = xAxisHeight;\r\n config._xAxisTextAngle_ = angle;\r\n opts.area[2] += xAxisHeight;\r\n opts.chartData.categoriesData = _calCategoriesData;\r\n }else{\r\n\t\tif (opts.type === 'line' || opts.type === 'area' || opts.type === 'points') {\r\n\t\t\topts.chartData.xAxisData = calXAxisData(series, opts, config);\r\n\t\t\tcategories=opts.chartData.xAxisData.rangesFormat;\r\n\t\t\tlet _calCategoriesData = calCategoriesData(categories, opts, config, opts.chartData.xAxisData.eachSpacing),\r\n\t\t\t xAxisHeight = _calCategoriesData.xAxisHeight,\r\n\t\t\t angle = _calCategoriesData.angle;\r\n\t\t\tconfig.xAxisHeight = xAxisHeight;\r\n\t\t\tconfig._xAxisTextAngle_ = angle;\r\n\t\t\topts.area[2] += xAxisHeight;\r\n\t\t\topts.chartData.categoriesData = _calCategoriesData;\r\n\t\t}else{\r\n\t\t\topts.chartData.xAxisData={\r\n\t\t\t\txAxisPoints: []\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n //计算右对齐偏移距离\r\n if (opts.enableScroll && opts.xAxis.scrollAlign == 'right' && opts._scrollDistance_ === undefined) {\r\n let offsetLeft = 0,\r\n xAxisPoints = opts.chartData.xAxisData.xAxisPoints,\r\n startX = opts.chartData.xAxisData.startX,\r\n endX = opts.chartData.xAxisData.endX,\r\n eachSpacing = opts.chartData.xAxisData.eachSpacing;\r\n let totalWidth = eachSpacing * (xAxisPoints.length - 1);\r\n let screenWidth = endX - startX;\r\n offsetLeft = screenWidth - totalWidth;\r\n _this.scrollOption = {\r\n currentOffset: offsetLeft,\r\n startTouchX: offsetLeft,\r\n distance: 0,\r\n lastMoveTime: 0\r\n };\r\n opts._scrollDistance_ = offsetLeft;\r\n }\r\n\r\n if (type === 'pie' || type === 'ring' || type === 'rose') {\r\n config._pieTextMaxLength_ = opts.dataLabel === false ? 0 : getPieTextMaxLength(seriesMA);\r\n }\r\n\r\n switch (type) {\r\n case 'word':\r\n let wordOption = assign({},{\r\n type: 'normal',\r\n autoColors: true\r\n },opts.extra.word);\r\n if(opts.updateData==true || opts.updateData==undefined){\r\n opts.chartData.wordCloudData=getWordCloudPoint(opts,wordOption.type);\r\n }\r\n this.animationInstance = new Animation({\r\n timing: 'easeInOut',\r\n duration: duration,\r\n onProcess: function(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n drawWordCloudDataPoints(series, opts, config, context,process);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.event.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'map':\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n drawMapDataPoints(series, opts, config, context);\r\n break;\r\n case 'funnel':\r\n this.animationInstance = new Animation({\r\n timing: 'easeInOut',\r\n duration: duration,\r\n onProcess: function(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n opts.chartData.funnelData = drawFunnelDataPoints(series, opts, config, context, process);\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.event.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'line':\r\n this.animationInstance = new Animation({\r\n timing: 'easeIn',\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n drawYAxisGrid(categories, opts, config, context);\r\n drawXAxis(categories, opts, config, context);\r\n var _drawLineDataPoints = drawLineDataPoints(series, opts, config, context, process),\r\n xAxisPoints = _drawLineDataPoints.xAxisPoints,\r\n calPoints = _drawLineDataPoints.calPoints,\r\n eachSpacing = _drawLineDataPoints.eachSpacing;\r\n opts.chartData.xAxisPoints = xAxisPoints;\r\n opts.chartData.calPoints = calPoints;\r\n opts.chartData.eachSpacing = eachSpacing;\r\n drawYAxis(series, opts, config, context);\r\n if (opts.enableMarkLine !== false && process === 1) {\r\n drawMarkLine(opts, config, context);\r\n }\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\r\n drawCanvas(opts, context);\r\n\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.event.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'mix':\r\n this.animationInstance = new Animation({\r\n timing: 'easeIn',\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n drawYAxisGrid(categories, opts, config, context);\r\n drawXAxis(categories, opts, config, context);\r\n var _drawMixDataPoints = drawMixDataPoints(series, opts, config, context, process),\r\n xAxisPoints = _drawMixDataPoints.xAxisPoints,\r\n calPoints = _drawMixDataPoints.calPoints,\r\n eachSpacing = _drawMixDataPoints.eachSpacing;\r\n opts.chartData.xAxisPoints = xAxisPoints;\r\n opts.chartData.calPoints = calPoints;\r\n opts.chartData.eachSpacing = eachSpacing;\r\n drawYAxis(series, opts, config, context);\r\n if (opts.enableMarkLine !== false && process === 1) {\r\n drawMarkLine(opts, config, context);\r\n }\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.event.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'column':\r\n this.animationInstance = new Animation({\r\n timing: 'easeIn',\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n drawYAxisGrid(categories, opts, config, context);\r\n drawXAxis(categories, opts, config, context);\r\n var _drawColumnDataPoints = drawColumnDataPoints(series, opts, config, context, process),\r\n xAxisPoints = _drawColumnDataPoints.xAxisPoints,\r\n calPoints = _drawColumnDataPoints.calPoints,\r\n eachSpacing = _drawColumnDataPoints.eachSpacing;\r\n opts.chartData.xAxisPoints = xAxisPoints;\r\n opts.chartData.calPoints = calPoints;\r\n opts.chartData.eachSpacing = eachSpacing;\r\n drawYAxis(series, opts, config, context);\r\n if (opts.enableMarkLine !== false && process === 1) {\r\n drawMarkLine(opts, config, context);\r\n }\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.event.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'area':\r\n this.animationInstance = new Animation({\r\n timing: 'easeIn',\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n drawYAxisGrid(categories, opts, config, context);\r\n drawXAxis(categories, opts, config, context);\r\n var _drawAreaDataPoints = drawAreaDataPoints(series, opts, config, context, process),\r\n xAxisPoints = _drawAreaDataPoints.xAxisPoints,\r\n calPoints = _drawAreaDataPoints.calPoints,\r\n eachSpacing = _drawAreaDataPoints.eachSpacing;\r\n opts.chartData.xAxisPoints = xAxisPoints;\r\n opts.chartData.calPoints = calPoints;\r\n opts.chartData.eachSpacing = eachSpacing;\r\n drawYAxis(series, opts, config, context);\r\n if (opts.enableMarkLine !== false && process === 1) {\r\n drawMarkLine(opts, config, context);\r\n }\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.event.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'ring':\r\n case 'pie':\r\n this.animationInstance = new Animation({\r\n timing: 'easeInOut',\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process);\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.event.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'rose':\r\n this.animationInstance = new Animation({\r\n timing: 'easeInOut',\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n opts.chartData.pieData = drawRoseDataPoints(series, opts, config, context, process);\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.event.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'radar':\r\n this.animationInstance = new Animation({\r\n timing: 'easeInOut',\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n opts.chartData.radarData = drawRadarDataPoints(series, opts, config, context, process);\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.event.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'arcbar':\r\n this.animationInstance = new Animation({\r\n timing: 'easeInOut',\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n opts.chartData.arcbarData = drawArcbarDataPoints(series, opts, config, context, process);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.event.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'gauge':\r\n this.animationInstance = new Animation({\r\n timing: 'easeInOut',\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n opts.chartData.gaugeData = drawGaugeDataPoints(categories, series, opts, config, context, process);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.event.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'candle':\r\n this.animationInstance = new Animation({\r\n timing: 'easeIn',\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n drawYAxisGrid(categories, opts, config, context);\r\n drawXAxis(categories, opts, config, context);\r\n var _drawCandleDataPoints = drawCandleDataPoints(series, seriesMA, opts, config, context, process),\r\n xAxisPoints = _drawCandleDataPoints.xAxisPoints,\r\n calPoints = _drawCandleDataPoints.calPoints,\r\n eachSpacing = _drawCandleDataPoints.eachSpacing;\r\n opts.chartData.xAxisPoints = xAxisPoints;\r\n opts.chartData.calPoints = calPoints;\r\n opts.chartData.eachSpacing = eachSpacing;\r\n drawYAxis(series, opts, config, context);\r\n if (opts.enableMarkLine !== false && process === 1) {\r\n drawMarkLine(opts, config, context);\r\n }\r\n if (seriesMA) {\r\n drawLegend(seriesMA, opts, config, context, opts.chartData);\r\n } else {\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n }\r\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.event.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n }\r\n}\r\n\r\n// simple event implement\r\n\r\nfunction Event() {\r\n this.events = {};\r\n}\r\n\r\nEvent.prototype.addEventListener = function(type, listener) {\r\n this.events[type] = this.events[type] || [];\r\n this.events[type].push(listener);\r\n};\r\n\r\nEvent.prototype.trigger = function() {\r\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key];\r\n }\r\n\r\n var type = args[0];\r\n var params = args.slice(1);\r\n if (!!this.events[type]) {\r\n this.events[type].forEach(function(listener) {\r\n try {\r\n listener.apply(null, params);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n });\r\n }\r\n};\r\n\r\nvar Charts = function Charts(opts) {\r\n opts.pixelRatio = opts.pixelRatio ? opts.pixelRatio : 1;\r\n opts.fontSize = opts.fontSize ? opts.fontSize * opts.pixelRatio : 13 * opts.pixelRatio;\r\n opts.title = assign({}, opts.title);\r\n opts.subtitle = assign({}, opts.subtitle);\r\n opts.duration = opts.duration ? opts.duration : 1000;\r\n opts.yAxis = assign({}, {\r\n data:[],\r\n showTitle:false,\r\n disabled:false,\r\n disableGrid:false,\r\n splitNumber:5,\r\n gridType: 'solid',\r\n dashLength: 4 * opts.pixelRatio,\r\n gridColor:'#cccccc',\r\n padding:10,\r\n fontColor:'#666666'\r\n }, opts.yAxis);\r\n opts.yAxis.dashLength *= opts.pixelRatio;\r\n opts.yAxis.padding *= opts.pixelRatio;\r\n opts.xAxis = assign({}, {\r\n rotateLabel: false,\r\n type: 'calibration',\r\n gridType: 'solid',\r\n dashLength: 4,\r\n scrollAlign: 'left',\r\n boundaryGap:'center',\r\n axisLine:true,\r\n axisLineColor:'#cccccc'\r\n }, opts.xAxis);\r\n opts.xAxis.dashLength *= opts.pixelRatio;\r\n opts.legend = assign({}, {\r\n show: true,\r\n position: 'bottom',\r\n float: 'center',\r\n backgroundColor: 'rgba(0,0,0,0)',\r\n borderColor: 'rgba(0,0,0,0)',\r\n borderWidth: 0,\r\n padding: 5,\r\n margin: 5,\r\n itemGap: 10,\r\n fontSize: opts.fontSize,\r\n lineHeight: opts.fontSize,\r\n fontColor: '#333333',\r\n format: {},\r\n hiddenColor: '#CECECE'\r\n }, opts.legend);\r\n opts.legend.borderWidth = opts.legend.borderWidth * opts.pixelRatio;\r\n opts.legend.itemGap = opts.legend.itemGap * opts.pixelRatio;\r\n opts.legend.padding = opts.legend.padding * opts.pixelRatio;\r\n opts.legend.margin = opts.legend.margin * opts.pixelRatio;\r\n opts.extra = assign({}, opts.extra);\r\n opts.rotate = opts.rotate ? true : false;\r\n opts.animation = opts.animation ? true : false;\r\n\topts.rotate = opts.rotate ? true : false;\r\n\r\n let config$$1 = JSON.parse(JSON.stringify(config));\r\n config$$1.colors = opts.colors ? opts.colors : config$$1.colors;\r\n config$$1.yAxisTitleWidth = opts.yAxis.disabled !== true && opts.yAxis.title ? config$$1.yAxisTitleWidth : 0;\r\n if (opts.type == 'pie' || opts.type == 'ring') {\r\n config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.pie.labelWidth * opts.pixelRatio || config$$1.pieChartLinePadding * opts.pixelRatio;\r\n }\r\n if (opts.type == 'rose') {\r\n config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.rose.labelWidth * opts.pixelRatio || config$$1.pieChartLinePadding * opts.pixelRatio;\r\n }\r\n config$$1.pieChartTextPadding = opts.dataLabel === false ? 0 : config$$1.pieChartTextPadding * opts.pixelRatio;\r\n config$$1.yAxisSplit = opts.yAxis.splitNumber ? opts.yAxis.splitNumber : config.yAxisSplit;\r\n\r\n //屏幕旋转\r\n config$$1.rotate = opts.rotate;\r\n if (opts.rotate) {\r\n let tempWidth = opts.width;\r\n let tempHeight = opts.height;\r\n opts.width = tempHeight;\r\n opts.height = tempWidth;\r\n }\r\n\r\n //适配高分屏\r\n opts.padding = opts.padding ? opts.padding : config$$1.padding;\r\n for (let i = 0; i < 4; i++) {\r\n opts.padding[i] *= opts.pixelRatio;\r\n }\r\n config$$1.yAxisWidth = config.yAxisWidth * opts.pixelRatio;\r\n config$$1.xAxisHeight = config.xAxisHeight * opts.pixelRatio;\r\n if (opts.enableScroll && opts.xAxis.scrollShow) {\r\n config$$1.xAxisHeight += 6 * opts.pixelRatio;\r\n }\r\n config$$1.xAxisLineHeight = config.xAxisLineHeight * opts.pixelRatio;\r\n config$$1.fontSize = opts.fontSize;\r\n config$$1.titleFontSize = config.titleFontSize * opts.pixelRatio;\r\n config$$1.subtitleFontSize = config.subtitleFontSize * opts.pixelRatio;\r\n config$$1.toolTipPadding = config.toolTipPadding * opts.pixelRatio;\r\n config$$1.toolTipLineHeight = config.toolTipLineHeight * opts.pixelRatio;\r\n config$$1.columePadding = config.columePadding * opts.pixelRatio;\r\n opts.$this = opts.$this ? opts.$this : this;\r\n \r\n this.context = uni.createCanvasContext(opts.canvasId, opts.$this);\r\n /* 兼容原生H5\r\n this.context = document.getElementById(opts.canvasId).getContext(\"2d\");\r\n this.context.setStrokeStyle = function(e){ return this.strokeStyle=e; }\r\n this.context.setLineWidth = function(e){ return this.lineWidth=e; }\r\n this.context.setLineCap = function(e){ return this.lineCap=e; }\r\n this.context.setFontSize = function(e){ return this.font=e+\"px sans-serif\"; }\r\n this.context.setFillStyle = function(e){ return this.fillStyle=e; }\r\n this.context.draw = function(){ }\r\n */\r\n\r\n opts.chartData = {};\r\n this.event = new Event();\r\n this.scrollOption = {\r\n currentOffset: 0,\r\n startTouchX: 0,\r\n distance: 0,\r\n lastMoveTime: 0\r\n };\r\n\r\n this.opts = opts;\r\n this.config = config$$1;\r\n\r\n drawCharts.call(this, opts.type, opts, config$$1, this.context);\r\n};\r\n\r\nCharts.prototype.updateData = function() {\r\n let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\r\n this.opts = assign({}, this.opts, data);\r\n this.opts.updateData = true;\r\n let scrollPosition = data.scrollPosition || 'current';\r\n switch (scrollPosition) {\r\n case 'current':\r\n this.opts._scrollDistance_ = this.scrollOption.currentOffset;\r\n break;\r\n case 'left':\r\n this.opts._scrollDistance_ = 0;\r\n this.scrollOption = {\r\n currentOffset: 0,\r\n startTouchX: 0,\r\n distance: 0,\r\n lastMoveTime: 0\r\n };\r\n break;\r\n case 'right':\r\n let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config),\r\n yAxisWidth = _calYAxisData.yAxisWidth;\r\n this.config.yAxisWidth = yAxisWidth;\r\n let offsetLeft = 0;\r\n let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),\r\n xAxisPoints = _getXAxisPoints0.xAxisPoints,\r\n startX = _getXAxisPoints0.startX,\r\n endX = _getXAxisPoints0.endX,\r\n eachSpacing = _getXAxisPoints0.eachSpacing;\r\n let totalWidth = eachSpacing * (xAxisPoints.length - 1);\r\n let screenWidth = endX - startX;\r\n offsetLeft = screenWidth - totalWidth;\r\n this.scrollOption = {\r\n currentOffset: offsetLeft,\r\n startTouchX: offsetLeft,\r\n distance: 0,\r\n lastMoveTime: 0\r\n };\r\n this.opts._scrollDistance_ = offsetLeft;\r\n break;\r\n }\r\n drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\r\n};\r\n\r\nCharts.prototype.zoom = function() {\r\n var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.opts.xAxis.itemCount;\r\n if (this.opts.enableScroll !== true) {\r\n console.log('请启用滚动条后使用!')\r\n return;\r\n }\r\n //当前屏幕中间点\r\n let centerPoint = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round(\r\n this.opts.xAxis.itemCount / 2);\r\n this.opts.animation = false;\r\n this.opts.xAxis.itemCount = val.itemCount;\r\n //重新计算x轴偏移距离\r\n let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config),\r\n yAxisWidth = _calYAxisData.yAxisWidth;\r\n this.config.yAxisWidth = yAxisWidth;\r\n let offsetLeft = 0;\r\n let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),\r\n xAxisPoints = _getXAxisPoints0.xAxisPoints,\r\n startX = _getXAxisPoints0.startX,\r\n endX = _getXAxisPoints0.endX,\r\n eachSpacing = _getXAxisPoints0.eachSpacing;\r\n let centerLeft = eachSpacing * centerPoint;\r\n let screenWidth = endX - startX;\r\n let MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);\r\n offsetLeft = screenWidth / 2 - centerLeft;\r\n if (offsetLeft > 0) {\r\n offsetLeft = 0;\r\n }\r\n if (offsetLeft < MaxLeft) {\r\n offsetLeft = MaxLeft;\r\n }\r\n this.scrollOption = {\r\n currentOffset: offsetLeft,\r\n startTouchX: offsetLeft,\r\n distance: 0,\r\n lastMoveTime: 0\r\n };\r\n this.opts._scrollDistance_ = offsetLeft;\r\n drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\r\n};\r\n\r\nCharts.prototype.stopAnimation = function() {\r\n this.animationInstance && this.animationInstance.stop();\r\n};\r\n\r\nCharts.prototype.addEventListener = function(type, listener) {\r\n this.event.addEventListener(type, listener);\r\n};\r\n\r\nCharts.prototype.getCurrentDataIndex = function(e) {\r\n var touches = null;\r\n if (e.changedTouches) {\r\n touches = e.changedTouches[0];\r\n } else {\r\n touches = e.mp.changedTouches[0];\r\n }\r\n if (touches) {\r\n let _touches$ = getTouches(touches, this.opts, e);\r\n if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose') {\r\n return findPieChartCurrentIndex({\r\n x: _touches$.x,\r\n y: _touches$.y\r\n }, this.opts.chartData.pieData);\r\n } else if (this.opts.type === 'radar') {\r\n return findRadarChartCurrentIndex({\r\n x: _touches$.x,\r\n y: _touches$.y\r\n }, this.opts.chartData.radarData, this.opts.categories.length);\r\n } else if (this.opts.type === 'funnel') {\r\n return findFunnelChartCurrentIndex({\r\n x: _touches$.x,\r\n y: _touches$.y\r\n }, this.opts.chartData.funnelData);\r\n } else if (this.opts.type === 'map') {\r\n return findMapChartCurrentIndex({\r\n x: _touches$.x,\r\n y: _touches$.y\r\n }, this.opts);\r\n }else if (this.opts.type === 'word') {\r\n return findWordChartCurrentIndex({\r\n x: _touches$.x,\r\n y: _touches$.y\r\n }, this.opts.chartData.wordCloudData);\r\n } else {\r\n return findCurrentIndex({\r\n x: _touches$.x,\r\n y: _touches$.y\r\n }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nCharts.prototype.getLegendDataIndex = function(e) {\r\n var touches = null;\r\n if (e.changedTouches) {\r\n touches = e.changedTouches[0];\r\n } else {\r\n touches = e.mp.changedTouches[0];\r\n }\r\n if (touches) {\r\n let _touches$ = getTouches(touches, this.opts, e);\r\n return findLegendIndex({\r\n x: _touches$.x,\r\n y: _touches$.y\r\n }, this.opts.chartData.legendData);\r\n }\r\n return -1;\r\n};\r\n\r\nCharts.prototype.touchLegend = function(e) {\r\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\r\n var touches = null;\r\n if (e.changedTouches) {\r\n touches = e.changedTouches[0];\r\n } else {\r\n touches = e.mp.changedTouches[0];\r\n }\r\n if (touches) {\r\n var _touches$ = getTouches(touches, this.opts, e);\r\n var index = this.getLegendDataIndex(e);\r\n if (index >= 0) {\r\n this.opts.series[index].show = !this.opts.series[index].show;\r\n this.opts.animation = option.animation ? true : false;\r\n\t\t\tthis.opts._scrollDistance_= this.scrollOption.currentOffset;\r\n drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\r\n }\r\n }\r\n\r\n};\r\n\r\nCharts.prototype.showToolTip = function(e) {\r\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\r\n var touches = null;\r\n if (e.changedTouches) {\r\n touches = e.changedTouches[0];\r\n } else {\r\n touches = e.mp.changedTouches[0];\r\n }\r\n if (!touches) {\r\n console.log(\"touchError\");\r\n }\r\n var _touches$ = getTouches(touches, this.opts, e);\r\n var currentOffset = this.scrollOption.currentOffset;\r\n var opts = assign({}, this.opts, {\r\n _scrollDistance_: currentOffset,\r\n animation: false\r\n });\r\n if (this.opts.type === 'line' || this.opts.type === 'area' || this.opts.type === 'column') {\r\n var index = this.getCurrentDataIndex(e);\r\n if (index > -1) {\r\n var seriesData = getSeriesDataItem(this.opts.series, index);\r\n if (seriesData.length !== 0) {\r\n var _getToolTipData = getToolTipData(seriesData, this.opts.chartData.calPoints, index, this.opts.categories,option),\r\n textList = _getToolTipData.textList,\r\n offset = _getToolTipData.offset;\r\n offset.y = _touches$.y;\r\n opts.tooltip = {\r\n textList: textList,\r\n offset: offset,\r\n option: option,\r\n index: index\r\n };\r\n }\r\n }\r\n drawCharts.call(this, opts.type, opts, this.config, this.context);\r\n }\r\n if (this.opts.type === 'mix') {\r\n var index = this.getCurrentDataIndex(e);\r\n if (index > -1) {\r\n var currentOffset = this.scrollOption.currentOffset;\r\n var opts = assign({}, this.opts, {\r\n _scrollDistance_: currentOffset,\r\n animation: false\r\n });\r\n var seriesData = getSeriesDataItem(this.opts.series, index);\r\n if (seriesData.length !== 0) {\r\n var _getMixToolTipData = getMixToolTipData(seriesData, this.opts.chartData.calPoints, index, this.opts.categories,option),\r\n textList = _getMixToolTipData.textList,\r\n offset = _getMixToolTipData.offset;\r\n offset.y = _touches$.y;\r\n opts.tooltip = {\r\n textList: textList,\r\n offset: offset,\r\n option: option,\r\n index: index\r\n };\r\n }\r\n }\r\n drawCharts.call(this, opts.type, opts, this.config, this.context);\r\n }\r\n if (this.opts.type === 'candle') {\r\n var index = this.getCurrentDataIndex(e);\r\n if (index > -1) {\r\n var currentOffset = this.scrollOption.currentOffset;\r\n var opts = assign({}, this.opts, {\r\n _scrollDistance_: currentOffset,\r\n animation: false\r\n });\r\n var seriesData = getSeriesDataItem(this.opts.series, index);\r\n if (seriesData.length !== 0) {\r\n var _getToolTipData = getCandleToolTipData(this.opts.series[0].data, seriesData, this.opts.chartData.calPoints,\r\n index, this.opts.categories, this.opts.extra.candle, option),\r\n textList = _getToolTipData.textList,\r\n offset = _getToolTipData.offset;\r\n offset.y = _touches$.y;\r\n opts.tooltip = {\r\n textList: textList,\r\n offset: offset,\r\n option: option,\r\n index: index\r\n };\r\n }\r\n }\r\n drawCharts.call(this, opts.type, opts, this.config, this.context);\r\n }\r\n if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose'||this.opts.type === 'funnel' ) {\r\n var index = this.getCurrentDataIndex(e);\r\n if (index > -1) {\r\n var currentOffset = this.scrollOption.currentOffset;\r\n var opts = assign({}, this.opts, {\r\n _scrollDistance_: currentOffset,\r\n animation: false\r\n });\r\n var seriesData = this.opts._series_[index];\r\n var textList = [{\r\n text: option.format ? option.format(seriesData) : seriesData.name + ': ' + seriesData.data,\r\n color: seriesData.color\r\n }];\r\n var offset = {\r\n x: _touches$.x,\r\n y: _touches$.y\r\n };\r\n opts.tooltip = {\r\n textList: textList,\r\n offset: offset,\r\n option: option,\r\n index: index\r\n };\r\n }\r\n drawCharts.call(this, opts.type, opts, this.config, this.context);\r\n }\r\n if (this.opts.type === 'map'||this.opts.type === 'word') {\r\n var index = this.getCurrentDataIndex(e);\r\n if (index > -1) {\r\n var currentOffset = this.scrollOption.currentOffset;\r\n var opts = assign({}, this.opts, {\r\n _scrollDistance_: currentOffset,\r\n animation: false\r\n });\r\n var seriesData = this.opts._series_[index];\r\n var textList = [{\r\n text: option.format ? option.format(seriesData) : seriesData.properties.name ,\r\n color: seriesData.color\r\n }];\r\n var offset = {\r\n x: _touches$.x,\r\n y: _touches$.y\r\n };\r\n opts.tooltip = {\r\n textList: textList,\r\n offset: offset,\r\n option: option,\r\n index: index\r\n };\r\n }\r\n opts.updateData = false;\r\n drawCharts.call(this, opts.type, opts, this.config, this.context);\r\n }\r\n if (this.opts.type === 'radar') {\r\n var index = this.getCurrentDataIndex(e);\r\n if (index > -1) {\r\n var currentOffset = this.scrollOption.currentOffset;\r\n var opts = assign({}, this.opts, {\r\n _scrollDistance_: currentOffset,\r\n animation: false\r\n });\r\n var seriesData = getSeriesDataItem(this.opts.series, index);\r\n if (seriesData.length !== 0) {\r\n var textList = seriesData.map(function(item) {\r\n return {\r\n text: option.format ? option.format(item) : item.name + ': ' + item.data,\r\n color: item.color\r\n };\r\n });\r\n var offset = {\r\n x: _touches$.x,\r\n y: _touches$.y\r\n };\r\n opts.tooltip = {\r\n textList: textList,\r\n offset: offset,\r\n option: option,\r\n index: index\r\n };\r\n }\r\n }\r\n drawCharts.call(this, opts.type, opts, this.config, this.context);\r\n }\r\n};\r\n\r\nCharts.prototype.translate = function(distance) {\r\n this.scrollOption = {\r\n currentOffset: distance,\r\n startTouchX: distance,\r\n distance: 0,\r\n lastMoveTime: 0\r\n };\r\n let opts = assign({}, this.opts, {\r\n _scrollDistance_: distance,\r\n animation: false\r\n });\r\n drawCharts.call(this, this.opts.type, opts, this.config, this.context);\r\n};\r\n\r\nCharts.prototype.scrollStart = function(e) {\r\n var touches = null;\r\n if (e.changedTouches) {\r\n touches = e.changedTouches[0];\r\n } else {\r\n touches = e.mp.changedTouches[0];\r\n }\r\n var _touches$ = getTouches(touches, this.opts, e);\r\n if (touches && this.opts.enableScroll === true) {\r\n this.scrollOption.startTouchX = _touches$.x;\r\n }\r\n};\r\n\r\nCharts.prototype.scroll = function(e) {\r\n if (this.scrollOption.lastMoveTime === 0) {\r\n this.scrollOption.lastMoveTime = Date.now();\r\n }\r\n let Limit = this.opts.extra.touchMoveLimit || 20;\r\n let currMoveTime = Date.now();\r\n let duration = currMoveTime - this.scrollOption.lastMoveTime;\r\n if (duration < Math.floor(1000 / Limit)) return;\r\n this.scrollOption.lastMoveTime = currMoveTime;\r\n var touches = null;\r\n if (e.changedTouches) {\r\n touches = e.changedTouches[0];\r\n } else {\r\n touches = e.mp.changedTouches[0];\r\n }\r\n if (touches && this.opts.enableScroll === true) {\r\n var _touches$ = getTouches(touches, this.opts, e);\r\n var _distance;\r\n _distance = _touches$.x - this.scrollOption.startTouchX;\r\n var currentOffset = this.scrollOption.currentOffset;\r\n var validDistance = calValidDistance(this,currentOffset + _distance, this.opts.chartData, this.config, this.opts);\r\n this.scrollOption.distance = _distance = validDistance - currentOffset;\r\n var opts = assign({}, this.opts, {\r\n _scrollDistance_: currentOffset + _distance,\r\n animation: false\r\n });\r\n drawCharts.call(this, opts.type, opts, this.config, this.context);\r\n return currentOffset + _distance;\r\n }\r\n};\r\n\r\nCharts.prototype.scrollEnd = function(e) {\r\n if (this.opts.enableScroll === true) {\r\n var _scrollOption = this.scrollOption,\r\n currentOffset = _scrollOption.currentOffset,\r\n distance = _scrollOption.distance;\r\n this.scrollOption.currentOffset = currentOffset + distance;\r\n this.scrollOption.distance = 0;\r\n }\r\n};\r\nif (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n module.exports = Charts;\r\n //export default Charts;//建议使用nodejs的module导出方式,如报错请使用export方式导出\r\n}\r\n","module.exports = {\r\n\terror:'',\r\n\tisJSON : function (str){\r\n\t\tif (typeof str == 'string') {\r\n\t\t\ttry {\r\n\t\t\t\tvar obj=JSON.parse(str);\r\n\t\t\t\tif(typeof obj == 'object' && obj ){\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} catch(e) {\r\n\t\t\t\tconsole.log('error:'+str+'!!!'+e);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tisNumber : function (checkVal){\r\n\t\tvar reg = /^-?[1-9][0-9]?.?[0-9]*$/;\r\n\t\treturn reg.test(checkVal);\r\n\t},\r\n\t\r\n}","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","const change= function(num) {\r\n\tvar result = '';\r\n\tvar counter = 0;\r\n\tnum = (num || 0).toString();\r\n\tfor (var i = num.length - 1; i >= 0; i--) {\r\n\t\tcounter++;\r\n\t\tresult = num.charAt(i) + result;\r\n\t\tif (!(counter % 3) && i != 0) {\r\n\t\t\tresult = ',' + result\r\n\t\t}\r\n\t}\r\n\r\n\treturn result\r\n};\r\n\r\nexport default { \r\n change\r\n}\r\n","import { version } from '../package.json';\r\n\r\nconst STAT_VERSION = version;\r\nconst STAT_URL = 'https://tongji.dcloud.io/uni/stat';\r\nconst STAT_H5_URL = 'https://tongji.dcloud.io/uni/stat.gif'; \r\nconst PAGE_PVER_TIME = 1800;\r\nconst APP_PVER_TIME = 300;\r\nconst OPERATING_TIME = 10;\r\n\r\nconst UUID_KEY = '__DC_STAT_UUID';\r\nconst UUID_VALUE = '__DC_UUID_VALUE';\r\n\r\nfunction getUuid() {\r\n let uuid = '';\r\n if (getPlatformName() === 'n') {\r\n try {\r\n uuid = plus.runtime.getDCloudId();\r\n } catch (e) {\r\n uuid = '';\r\n }\r\n return uuid\r\n }\r\n\r\n try {\r\n uuid = uni.getStorageSync(UUID_KEY);\r\n } catch (e) {\r\n uuid = UUID_VALUE;\r\n }\r\n\r\n if (!uuid) {\r\n uuid = Date.now() + '' + Math.floor(Math.random() * 1e7);\r\n try {\r\n uni.setStorageSync(UUID_KEY, uuid);\r\n } catch (e) {\r\n uni.setStorageSync(UUID_KEY, UUID_VALUE);\r\n }\r\n }\r\n return uuid;\r\n}\r\n\r\nconst getSgin = (statData) => {\r\n let arr = Object.keys(statData);\r\n let sortArr = arr.sort();\r\n let sgin = {};\r\n let sginStr = '';\r\n for (var i in sortArr) {\r\n sgin[sortArr[i]] = statData[sortArr[i]];\r\n sginStr += sortArr[i] + '=' + statData[sortArr[i]] + '&';\r\n }\r\n // const options = sginStr.substr(0, sginStr.length - 1)\r\n // sginStr = sginStr.substr(0, sginStr.length - 1) + '&key=' + STAT_KEY;\r\n // const si = crypto.createHash('md5').update(sginStr).digest('hex');\r\n return {\r\n sign: '',\r\n options: sginStr.substr(0, sginStr.length - 1)\r\n };\r\n};\r\n\r\nconst getSplicing = (data) => {\r\n let str = '';\r\n for (var i in data) {\r\n str += i + '=' + data[i] + '&';\r\n }\r\n return str.substr(0, str.length - 1)\r\n};\r\n\r\nconst getTime = () => {\r\n return parseInt(new Date().getTime() / 1000);\r\n};\r\n\r\nconst getPlatformName = () => {\r\n const platformList = {\r\n 'app-plus': 'n',\r\n 'h5': 'h5',\r\n 'mp-weixin': 'wx',\r\n 'mp-alipay': 'ali',\r\n 'mp-baidu': 'bd',\r\n 'mp-toutiao': 'tt',\r\n 'mp-qq': 'qq'\r\n };\r\n return platformList[process.env.VUE_APP_PLATFORM];\r\n};\r\n\r\nconst getPackName = () => {\r\n let packName = '';\r\n if (getPlatformName() === 'wx' || getPlatformName() === 'qq') {\r\n // 兼容微信小程序低版本基础库\r\n if(uni.canIUse('getAccountInfoSync')){\r\n packName = uni.getAccountInfoSync().miniProgram.appId || '';\r\n }\r\n }\r\n return packName\r\n};\r\n\r\nconst getVersion = () => {\r\n return getPlatformName() === 'n' ? plus.runtime.version : '';\r\n};\r\n\r\nconst getChannel = () => {\r\n const platformName = getPlatformName();\r\n let channel = '';\r\n if (platformName === 'n') {\r\n channel = plus.runtime.channel;\r\n }\r\n return channel;\r\n};\r\n\r\nconst getScene = (options) => {\r\n const platformName = getPlatformName();\r\n let scene = '';\r\n if (options) {\r\n return options;\r\n }\r\n if (platformName === 'wx') {\r\n scene = uni.getLaunchOptionsSync().scene;\r\n }\r\n return scene;\r\n};\r\nconst First__Visit__Time__KEY = 'First__Visit__Time';\r\nconst Last__Visit__Time__KEY = 'Last__Visit__Time';\r\n\r\nconst getFirstVisitTime = () => {\r\n const timeStorge = uni.getStorageSync(First__Visit__Time__KEY);\r\n let time = 0;\r\n if (timeStorge) {\r\n time = timeStorge;\r\n } else {\r\n time = getTime();\r\n uni.setStorageSync(First__Visit__Time__KEY, time);\r\n uni.removeStorageSync(Last__Visit__Time__KEY);\r\n }\r\n return time;\r\n};\r\n\r\nconst getLastVisitTime = () => {\r\n const timeStorge = uni.getStorageSync(Last__Visit__Time__KEY);\r\n let time = 0;\r\n if (timeStorge) {\r\n time = timeStorge;\r\n } else {\r\n time = '';\r\n }\r\n uni.setStorageSync(Last__Visit__Time__KEY, getTime());\r\n return time;\r\n};\r\n\r\n\r\nconst PAGE_RESIDENCE_TIME = '__page__residence__time';\r\nlet First_Page_residence_time = 0;\r\nlet Last_Page_residence_time = 0;\r\n\r\n\r\nconst setPageResidenceTime = () => {\r\n First_Page_residence_time = getTime();\r\n if (getPlatformName() === 'n') {\r\n uni.setStorageSync(PAGE_RESIDENCE_TIME, getTime());\r\n }\r\n return First_Page_residence_time\r\n};\r\n\r\nconst getPageResidenceTime = () => {\r\n Last_Page_residence_time = getTime();\r\n if (getPlatformName() === 'n') {\r\n First_Page_residence_time = uni.getStorageSync(PAGE_RESIDENCE_TIME);\r\n }\r\n return Last_Page_residence_time - First_Page_residence_time\r\n};\r\nconst TOTAL__VISIT__COUNT = 'Total__Visit__Count';\r\nconst getTotalVisitCount = () => {\r\n const timeStorge = uni.getStorageSync(TOTAL__VISIT__COUNT);\r\n let count = 1;\r\n if (timeStorge) {\r\n count = timeStorge;\r\n count++;\r\n }\r\n uni.setStorageSync(TOTAL__VISIT__COUNT, count);\r\n return count;\r\n};\r\n\r\nconst GetEncodeURIComponentOptions = (statData) => {\r\n let data = {};\r\n for (let prop in statData) {\r\n data[prop] = encodeURIComponent(statData[prop]);\r\n }\r\n return data;\r\n};\r\n\r\nlet Set__First__Time = 0;\r\nlet Set__Last__Time = 0;\r\n\r\nconst getFirstTime = () => {\r\n let time = new Date().getTime();\r\n Set__First__Time = time;\r\n Set__Last__Time = 0;\r\n return time;\r\n};\r\n\r\n\r\nconst getLastTime = () => {\r\n let time = new Date().getTime();\r\n Set__Last__Time = time;\r\n return time;\r\n};\r\n\r\n\r\nconst getResidenceTime = (type) => {\r\n let residenceTime = 0;\r\n if (Set__First__Time !== 0) {\r\n residenceTime = Set__Last__Time - Set__First__Time;\r\n }\r\n\r\n residenceTime = parseInt(residenceTime / 1000);\r\n residenceTime = residenceTime < 1 ? 1 : residenceTime;\r\n if (type === 'app') {\r\n let overtime = residenceTime > APP_PVER_TIME ? true : false;\r\n return {\r\n residenceTime,\r\n overtime\r\n };\r\n }\r\n if (type === 'page') {\r\n let overtime = residenceTime > PAGE_PVER_TIME ? true : false;\r\n return {\r\n residenceTime,\r\n overtime\r\n };\r\n }\r\n\r\n return {\r\n residenceTime\r\n };\r\n\r\n};\r\n\r\nconst getRoute = () => {\r\n var pages = getCurrentPages();\r\n var page = pages[pages.length - 1];\r\n let _self = page.$vm;\r\n\r\n if (getPlatformName() === 'bd') {\r\n return _self.$mp && _self.$mp.page.is;\r\n } else {\r\n return (_self.$scope && _self.$scope.route) || (_self.$mp && _self.$mp.page.route);\r\n }\r\n};\r\n\r\nconst getPageRoute = (self) => {\r\n var pages = getCurrentPages();\r\n var page = pages[pages.length - 1];\r\n let _self = page.$vm;\r\n let query = self._query;\r\n let str = query && JSON.stringify(query) !== '{}' ? '?' + JSON.stringify(query) : '';\r\n // clear\r\n self._query = '';\r\n if (getPlatformName() === 'bd') {\r\n return _self.$mp && _self.$mp.page.is + str;\r\n } else {\r\n return (_self.$scope && _self.$scope.route + str )|| (_self.$mp && _self.$mp.page.route + str);\r\n }\r\n};\r\n\r\nconst getPageTypes = (self) => {\r\n if (self.mpType === 'page' || (self.$mp && self.$mp.mpType === 'page') || self.$options.mpType === 'page') {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nconst calibration = (eventName, options) => {\r\n // login 、 share 、pay_success 、pay_fail 、register 、title\r\n if(!eventName){\r\n console.error(`uni.report 缺少 [eventName] 参数`);\r\n return true\r\n }\r\n if (typeof eventName !== 'string') {\r\n console.error(`uni.report [eventName] 参数类型错误,只能为 String 类型`);\r\n return true\r\n }\r\n if (eventName.length > 255) {\r\n console.error(`uni.report [eventName] 参数长度不能大于 255`);\r\n return true\r\n }\r\n\r\n if (typeof options !== 'string' && typeof options !== 'object') {\r\n console.error(`uni.report [options] 参数类型错误,只能为 String 或 Object 类型`);\r\n return true\r\n }\r\n\r\n if (typeof options === 'string' && options.length > 255) {\r\n console.error(`uni.report [options] 参数长度不能大于 255`);\r\n return true\r\n }\r\n\r\n if (eventName === 'title' && typeof options !== 'string') {\r\n console.error('uni.report [eventName] 参数为 title 时,[options] 参数只能为 String 类型');\r\n return true\r\n }\r\n};\r\n\r\nconst PagesJson = require('uni-pages?{\"type\":\"style\"}').default;\r\nconst statConfig = require('uni-stat-config').default || require('uni-stat-config');\r\n\r\nconst resultOptions = uni.getSystemInfoSync();\r\n\r\nclass Util {\r\n constructor() {\r\n this.self = '';\r\n this._retry = 0;\r\n this._platform = '';\r\n this._query = {};\r\n this._navigationBarTitle = {\r\n config: '',\r\n page: '',\r\n report: '',\r\n lt: ''\r\n };\r\n this._operatingTime = 0;\r\n this._reportingRequestData = {\r\n '1': [],\r\n '11': []\r\n };\r\n this.__prevent_triggering = false;\r\n\r\n this.__licationHide = false;\r\n this.__licationShow = false;\r\n this._lastPageRoute = '';\r\n this.statData = {\r\n uuid: getUuid(),\r\n ut: getPlatformName(),\r\n mpn: getPackName(),\r\n ak: statConfig.appid,\r\n usv: STAT_VERSION,\r\n v: getVersion(),\r\n ch: getChannel(),\r\n cn: '',\r\n pn: '',\r\n ct: '',\r\n t: getTime(),\r\n tt: '',\r\n p: resultOptions.platform === 'android' ? 'a' : 'i',\r\n brand: resultOptions.brand || '',\r\n md: resultOptions.model,\r\n sv: resultOptions.system.replace(/(Android|iOS)\\s/, ''),\r\n mpsdk: resultOptions.SDKVersion || '',\r\n mpv: resultOptions.version || '',\r\n lang: resultOptions.language,\r\n pr: resultOptions.pixelRatio,\r\n ww: resultOptions.windowWidth,\r\n wh: resultOptions.windowHeight,\r\n sw: resultOptions.screenWidth,\r\n sh: resultOptions.screenHeight\r\n };\r\n\r\n }\r\n\r\n _applicationShow() {\r\n if (this.__licationHide) {\r\n getLastTime();\r\n const time = getResidenceTime('app');\r\n if (time.overtime) {\r\n let options = {\r\n path: this._lastPageRoute,\r\n scene: this.statData.sc\r\n };\r\n this._sendReportRequest(options);\r\n }\r\n this.__licationHide = false;\r\n }\r\n }\r\n\r\n _applicationHide(self, type) {\r\n\r\n this.__licationHide = true;\r\n getLastTime();\r\n const time = getResidenceTime();\r\n getFirstTime();\r\n const route = getPageRoute(this);\r\n this._sendHideRequest({\r\n urlref: route,\r\n urlref_ts: time.residenceTime\r\n }, type);\r\n }\r\n\r\n _pageShow() {\r\n const route = getPageRoute(this);\r\n const routepath = getRoute();\r\n this._navigationBarTitle.config = PagesJson &&\r\n PagesJson.pages[routepath] &&\r\n PagesJson.pages[routepath].titleNView &&\r\n PagesJson.pages[routepath].titleNView.titleText ||\r\n PagesJson &&\r\n PagesJson.pages[routepath] &&\r\n PagesJson.pages[routepath].navigationBarTitleText || '';\r\n\r\n if (this.__licationShow) {\r\n getFirstTime();\r\n this.__licationShow = false;\r\n // console.log('这是 onLauch 之后执行的第一次 pageShow ,为下次记录时间做准备');\r\n this._lastPageRoute = route;\r\n return;\r\n }\r\n\r\n getLastTime();\r\n this._lastPageRoute = route;\r\n const time = getResidenceTime('page');\r\n if (time.overtime) {\r\n let options = {\r\n path: this._lastPageRoute,\r\n scene: this.statData.sc\r\n };\r\n this._sendReportRequest(options);\r\n }\r\n getFirstTime();\r\n }\r\n\r\n _pageHide() {\r\n if (!this.__licationHide) {\r\n getLastTime();\r\n const time = getResidenceTime('page');\r\n this._sendPageRequest({\r\n url: this._lastPageRoute,\r\n urlref: this._lastPageRoute,\r\n urlref_ts: time.residenceTime\r\n });\r\n this._navigationBarTitle = {\r\n config: '',\r\n page: '',\r\n report: '',\r\n lt: ''\r\n };\r\n return;\r\n }\r\n }\r\n\r\n _login() {\r\n this._sendEventRequest({\r\n key: 'login'\r\n }, 0);\r\n }\r\n\r\n _share() {\r\n this._sendEventRequest({\r\n key: 'share'\r\n }, 0);\r\n }\r\n _payment(key) {\r\n this._sendEventRequest({\r\n key\r\n }, 0);\r\n }\r\n _sendReportRequest(options) {\r\n\r\n this._navigationBarTitle.lt = '1';\r\n let query = options.query && JSON.stringify(options.query) !== '{}' ? '?' + JSON.stringify(options.query) : '';\r\n this.statData.lt = '1';\r\n this.statData.url = (options.path + query) || '';\r\n this.statData.t = getTime();\r\n this.statData.sc = getScene(options.scene);\r\n this.statData.fvts = getFirstVisitTime();\r\n this.statData.lvts = getLastVisitTime();\r\n this.statData.tvc = getTotalVisitCount();\r\n if (getPlatformName() === 'n') {\r\n this.getProperty();\r\n } else {\r\n this.getNetworkInfo();\r\n }\r\n }\r\n\r\n _sendPageRequest(opt) {\r\n let {\r\n url,\r\n urlref,\r\n urlref_ts\r\n } = opt;\r\n this._navigationBarTitle.lt = '11';\r\n let options = {\r\n ak: this.statData.ak,\r\n uuid: this.statData.uuid,\r\n lt: '11',\r\n ut: this.statData.ut,\r\n url,\r\n tt: this.statData.tt,\r\n urlref,\r\n urlref_ts,\r\n ch: this.statData.ch,\r\n usv: this.statData.usv,\r\n t: getTime(),\r\n p: this.statData.p\r\n };\r\n this.request(options);\r\n }\r\n\r\n _sendHideRequest(opt, type) {\r\n let {\r\n urlref,\r\n urlref_ts\r\n } = opt;\r\n let options = {\r\n ak: this.statData.ak,\r\n uuid: this.statData.uuid,\r\n lt: '3',\r\n ut: this.statData.ut,\r\n urlref,\r\n urlref_ts,\r\n ch: this.statData.ch,\r\n usv: this.statData.usv,\r\n t: getTime(),\r\n p: this.statData.p\r\n };\r\n this.request(options, type);\r\n }\r\n _sendEventRequest({\r\n key = '',\r\n value = \"\"\r\n } = {}) {\r\n const route = this._lastPageRoute;\r\n let options = {\r\n ak: this.statData.ak,\r\n uuid: this.statData.uuid,\r\n lt: '21',\r\n ut: this.statData.ut,\r\n url: route,\r\n ch: this.statData.ch,\r\n e_n: key,\r\n e_v: typeof(value) === 'object' ? JSON.stringify(value) : value.toString(),\r\n usv: this.statData.usv,\r\n t: getTime(),\r\n p: this.statData.p\r\n };\r\n this.request(options);\r\n }\r\n\r\n getNetworkInfo() {\r\n uni.getNetworkType({\r\n success: (result) => {\r\n this.statData.net = result.networkType;\r\n this.getLocation();\r\n }\r\n });\r\n }\r\n\r\n getProperty() {\r\n plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {\r\n this.statData.v = wgtinfo.version || '';\r\n this.getNetworkInfo();\r\n });\r\n }\r\n\r\n getLocation() {\r\n if (statConfig.getLocation) {\r\n uni.getLocation({\r\n type: 'wgs84',\r\n geocode: true,\r\n success: (result) => {\r\n if (result.address) {\r\n this.statData.cn = result.address.country;\r\n this.statData.pn = result.address.province;\r\n this.statData.ct = result.address.city;\r\n }\r\n\r\n this.statData.lat = result.latitude;\r\n this.statData.lng = result.longitude;\r\n this.request(this.statData);\r\n }\r\n });\r\n } else {\r\n this.statData.lat = 0;\r\n this.statData.lng = 0;\r\n this.request(this.statData);\r\n }\r\n }\r\n\r\n request(data, type) {\r\n let time = getTime();\r\n const title = this._navigationBarTitle;\r\n data.ttn = title.page;\r\n data.ttpj = title.config;\r\n data.ttc = title.report;\r\n\r\n let requestData = this._reportingRequestData;\r\n if (getPlatformName() === 'n') {\r\n requestData = uni.getStorageSync('__UNI__STAT__DATA') || {};\r\n }\r\n if (!requestData[data.lt]) {\r\n requestData[data.lt] = [];\r\n }\r\n requestData[data.lt].push(data);\r\n\r\n if (getPlatformName() === 'n') {\r\n uni.setStorageSync('__UNI__STAT__DATA', requestData);\r\n }\r\n if (getPageResidenceTime() < OPERATING_TIME && !type) {\r\n return\r\n }\r\n let uniStatData = this._reportingRequestData;\r\n if (getPlatformName() === 'n') {\r\n uniStatData = uni.getStorageSync('__UNI__STAT__DATA');\r\n }\r\n // 时间超过,重新获取时间戳\r\n setPageResidenceTime();\r\n let firstArr = [];\r\n let contentArr = [];\r\n let lastArr = [];\r\n\r\n for (let i in uniStatData) {\r\n const rd = uniStatData[i];\r\n rd.forEach((elm) => {\r\n const newData = getSplicing(elm);\r\n if (i === 0) {\r\n firstArr.push(newData);\r\n } else if (i === 3) {\r\n lastArr.push(newData);\r\n } else {\r\n contentArr.push(newData);\r\n }\r\n });\r\n }\r\n\r\n firstArr.push(...contentArr, ...lastArr);\r\n let optionsData = {\r\n usv: STAT_VERSION, //统计 SDK 版本号\r\n t: time, //发送请求时的时间戮\r\n requests: JSON.stringify(firstArr),\r\n };\r\n\r\n this._reportingRequestData = {};\r\n if (getPlatformName() === 'n') {\r\n uni.removeStorageSync('__UNI__STAT__DATA');\r\n }\r\n\r\n if (data.ut === 'h5') {\r\n this.imageRequest(optionsData);\r\n return\r\n }\r\n\r\n if (getPlatformName() === 'n' && this.statData.p === 'a') {\r\n setTimeout(() => {\r\n this._sendRequest(optionsData);\r\n }, 200);\r\n return\r\n }\r\n this._sendRequest(optionsData);\r\n }\r\n _sendRequest(optionsData) {\r\n uni.request({\r\n url: STAT_URL,\r\n method: 'POST',\r\n // header: {\r\n // 'content-type': 'application/json' // 默认值\r\n // },\r\n data: optionsData,\r\n success: () => {\r\n // if (process.env.NODE_ENV === 'development') {\r\n // console.log('stat request success');\r\n // }\r\n },\r\n fail: (e) => {\r\n if (++this._retry < 3) {\r\n setTimeout(() => {\r\n this._sendRequest(optionsData);\r\n }, 1000);\r\n }\r\n }\r\n });\r\n }\r\n /**\r\n * h5 请求\r\n */\r\n imageRequest(data) {\r\n let image = new Image();\r\n let options = getSgin(GetEncodeURIComponentOptions(data)).options;\r\n image.src = STAT_H5_URL + '?' + options;\r\n }\r\n\r\n sendEvent(key, value) {\r\n // 校验 type 参数\r\n if (calibration(key, value)) return\r\n\r\n if (key === 'title') {\r\n this._navigationBarTitle.report = value;\r\n return\r\n }\r\n this._sendEventRequest({\r\n key,\r\n value: typeof(value) === 'object' ? JSON.stringify(value) : value\r\n }, 1);\r\n }\r\n}\r\n\r\n\r\nclass Stat extends Util {\r\n static getInstance() {\r\n if (!this.instance) {\r\n this.instance = new Stat();\r\n }\r\n return this.instance;\r\n }\r\n constructor() {\r\n super();\r\n this.instance = null;\r\n // 注册拦截器\r\n if (typeof uni.addInterceptor === 'function' && process.env.NODE_ENV !== 'development') {\r\n this.addInterceptorInit();\r\n this.interceptLogin();\r\n this.interceptShare(true);\r\n this.interceptRequestPayment();\r\n }\r\n }\r\n\r\n addInterceptorInit() {\r\n let self = this;\r\n uni.addInterceptor('setNavigationBarTitle', {\r\n invoke(args) {\r\n self._navigationBarTitle.page = args.title;\r\n }\r\n });\r\n }\r\n\r\n interceptLogin() {\r\n let self = this;\r\n uni.addInterceptor('login', {\r\n complete() {\r\n self._login();\r\n }\r\n });\r\n }\r\n\r\n interceptShare(type) {\r\n let self = this;\r\n if (!type) {\r\n self._share();\r\n return\r\n }\r\n uni.addInterceptor('share', {\r\n success() {\r\n self._share();\r\n },\r\n fail() {\r\n self._share();\r\n }\r\n });\r\n }\r\n\r\n interceptRequestPayment() {\r\n let self = this;\r\n uni.addInterceptor('requestPayment', {\r\n success() {\r\n self._payment('pay_success');\r\n },\r\n fail() {\r\n self._payment('pay_fail');\r\n }\r\n });\r\n }\r\n\r\n report(options, self) {\r\n this.self = self;\r\n // if (process.env.NODE_ENV === 'development') {\r\n // console.log('report init');\r\n // }\r\n setPageResidenceTime();\r\n this.__licationShow = true;\r\n this._sendReportRequest(options, true);\r\n }\r\n\r\n load(options, self) {\r\n if (!self.$scope && !self.$mp) {\r\n const page = getCurrentPages();\r\n self.$scope = page[page.length - 1];\r\n }\r\n this.self = self;\r\n this._query = options;\r\n }\r\n\r\n show(self) {\r\n this.self = self;\r\n if (getPageTypes(self)) {\r\n this._pageShow(self);\r\n } else {\r\n this._applicationShow(self);\r\n }\r\n }\r\n\r\n ready(self) {\r\n // this.self = self;\r\n // if (getPageTypes(self)) {\r\n // this._pageShow(self);\r\n // }\r\n }\r\n hide(self) {\r\n this.self = self;\r\n if (getPageTypes(self)) {\r\n this._pageHide(self);\r\n } else {\r\n this._applicationHide(self, true);\r\n }\r\n }\r\n error(em) {\r\n if (this._platform === 'devtools') {\r\n if (process.env.NODE_ENV === 'development') {\r\n console.info('当前运行环境为开发者工具,不上报数据。');\r\n }\r\n // return;\r\n }\r\n let emVal = '';\r\n if (!em.message) {\r\n emVal = JSON.stringify(em);\r\n } else {\r\n emVal = em.stack;\r\n }\r\n let options = {\r\n ak: this.statData.ak,\r\n uuid: this.statData.uuid,\r\n lt: '31',\r\n ut: this.statData.ut,\r\n ch: this.statData.ch,\r\n mpsdk: this.statData.mpsdk,\r\n mpv: this.statData.mpv,\r\n v: this.statData.v,\r\n em: emVal,\r\n usv: this.statData.usv,\r\n t: getTime(),\r\n p: this.statData.p\r\n };\r\n this.request(options);\r\n }\r\n}\r\n\r\nconst stat = Stat.getInstance();\r\nlet isHide = false;\r\nconst lifecycle = {\r\n onLaunch(options) {\r\n stat.report(options, this);\r\n },\r\n onReady() {\r\n stat.ready(this);\r\n },\r\n onLoad(options) {\r\n stat.load(options, this);\r\n // 重写分享,获取分享上报事件\r\n if (this.$scope && this.$scope.onShareAppMessage) {\r\n let oldShareAppMessage = this.$scope.onShareAppMessage;\r\n this.$scope.onShareAppMessage = function(options) {\r\n stat.interceptShare(false);\r\n return oldShareAppMessage.call(this, options)\r\n };\r\n }\r\n },\r\n onShow() {\r\n isHide = false;\r\n stat.show(this);\r\n },\r\n onHide() {\r\n isHide = true;\r\n stat.hide(this);\r\n },\r\n onUnload() {\r\n if (isHide) {\r\n isHide = false;\r\n return\r\n }\r\n stat.hide(this);\r\n },\r\n onError(e) {\r\n stat.error(e);\r\n }\r\n};\r\n\r\nfunction main() {\r\n if (process.env.NODE_ENV === 'development') {\r\n uni.report = function(type, options) {};\r\n }else{\r\n const Vue = require('vue');\r\n (Vue.default || Vue).mixin(lifecycle);\r\n uni.report = function(type, options) {\r\n stat.sendEvent(type, options);\r\n };\r\n }\r\n}\r\n\r\nmain();\r\n","export default {\"appid\":\"\"}"],"sourceRoot":""}