You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
1.4 MiB
1 lines
1.4 MiB
{"version":3,"sources":["uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/uni-mp-weixin/dist/index.js","webpack:///F:/项目2/Jinan_app/Jinan_app/static/dadui/11.png?1f9f","webpack:///F:/项目2/Jinan_app/Jinan_app/static/dadui/9.png?b244","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js","uni-app:///libs/auth.js","uni-app:///store.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/uni-cloud/dist/index.js","uni-app:///pages.json","uni-app:///uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js","uni-app:///uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vuex3/dist/vuex.common.js","uni-app:///libs/request.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/@babel/runtime/regenerator/index.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/regenerator-runtime/runtime-module.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/regenerator-runtime/runtime.js","uni-app:///config.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/webpack/buildin/global.js","uni-app:///libs/alert.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/qs/lib/index.js","uni-app:///uni_modules/uni-icons/components/uni-icons/icons.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/qs/lib/stringify.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/qs/lib/utils.js","webpack:///F:/项目2/Jinan_app/Jinan_app/static/zeren/4511.png?3d23","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/qs/lib/formats.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/qs/lib/parse.js","uni-app:///node_modules/@escook/request-miniprogram/miniprogram_dist/index.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/uni-i18n/dist/uni-i18n.es.js","webpack:///F:/项目2/Jinan_app/Jinan_app/static/login/banner.jpg?b0c7","webpack:///F:/项目2/Jinan_app/Jinan_app/static/login/title.png?927a","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/mp-vue/dist/mp.runtime.esm.js","webpack:///F:/项目2/Jinan_app/Jinan_app/static/down.png?7ce8","webpack:///F:/项目2/Jinan_app/Jinan_app/static/4412.png?72e2","webpack:///F:/项目2/Jinan_app/Jinan_app/static/dadui/10.png?fc6d","webpack:///F:/项目2/Jinan_app/Jinan_app/static/zeren/4508.png?1030",null,"webpack:///F:/项目2/Jinan_app/Jinan_app/static/446.png?3c1a","webpack:///F:/项目2/Jinan_app/Jinan_app/static/logo.png?ced9","webpack:///F:/项目2/Jinan_app/Jinan_app/static/arrow.png?80f1"],"names":["realAtob","b64","b64re","b64DecodeUnicode","str","decodeURIComponent","split","map","c","charCodeAt","toString","slice","join","getCurrentUserInfo","userInfo","token","wx","getStorageSync","tokenArr","length","uid","role","permission","tokenExpired","JSON","parse","error","Error","message","exp","iat","uniIdMixin","Vue","prototype","uniIDHasRole","roleId","indexOf","uniIDHasPermission","permissionId","this","uniIDTokenValid","Date","now","atob","String","replace","test","bitmap","r1","r2","result","i","charAt","fromCharCode","_toString","Object","hasOwnProperty","isFn","fn","isStr","isPlainObject","obj","call","hasOwn","key","noop","cached","cache","create","hit","camelizeRE","camelize","_","toUpperCase","sortObject","sortObj","keys","sort","forEach","HOOKS","globalInterceptors","scopedInterceptors","mergeHook","parentVal","childVal","res","concat","Array","isArray","dedupeHooks","hooks","push","removeHook","hook","index","splice","mergeInterceptorHook","interceptor","option","removeInterceptorHook","addInterceptor","method","removeInterceptor","wrapperHook","data","isPromise","then","queue","promise","Promise","resolve","callback","wrapperOptions","options","name","oldCallback","wrapperReturnValue","returnValue","returnValueHooks","getApiInterceptorHooks","scopedInterceptor","invokeApi","api","params","invoke","promiseInterceptor","reject","SYNC_API_RE","CONTEXT_API_RE","CONTEXT_API_RE_EXC","ASYNC_API","CALLBACK_API_RE","isContextApi","isSyncApi","isCallbackApi","handlePromise","catch","err","shouldPromise","promisify","success","fail","complete","assign","finally","constructor","value","reason","EPS","BASE_DEVICE_WIDTH","isIOS","deviceWidth","deviceDPR","checkDeviceWidth","getSystemInfoSync","platform","pixelRatio","windowWidth","upx2px","number","newDeviceWidth","Number","Math","floor","locale","LOCALE_ZH_HANS","LOCALE_ZH_HANT","LOCALE_EN","LOCALE_FR","LOCALE_ES","messages","initI18nMessages","isEnableLocale","localeKeys","__uniConfig","locales","curMessages","userMessages","normalizeLocale","language","i18n","initVueI18n","t","mixin","beforeCreate","unwatch","watchLocale","$forceUpdate","$once","methods","$$t","values","setLocale","getLocale","initAppLocale","appVm","state","observable","localeWatchers","$watchLocale","defineProperty","get","set","v","watch","include","parts","find","part","startsWith","trim","toLowerCase","lang","getLocale$1","app","getApp","allowDefault","$vm","$locale","setLocale$1","oldLocale","onLocaleChangeCallbacks","onLocaleChange","global","interceptors","baseApi","freeze","__proto__","findExistsPageIndex","url","pages","getCurrentPages","len","page","$page","fullPath","deviceId","redirectTo","fromArgs","exists","delta","args","existsPageIndex","previewImage","currentIndex","parseInt","current","isNaN","urls","filter","item","indicator","loop","UUID_KEY","useDeviceId","random","setStorage","addSafeAreaInsets","safeArea","safeAreaInsets","top","left","right","bottom","screenHeight","populateParameters","brand","model","system","theme","version","fontSizeSetting","SDKVersion","deviceOrientation","osName","osVersion","hostVersion","deviceType","getGetDeviceType","deviceBrand","getDeviceBrand","_hostName","getHostName","_deviceOrientation","_devicePixelRatio","_SDKVersion","hostLanguage","parameters","appId","process","appName","appVersion","appVersionCode","appLanguage","getAppLanguage","uniCompileVersion","uniRuntimeVersion","uniPlatform","deviceModel","devicePixelRatio","toLocaleLowerCase","hostTheme","hostName","hostSDKVersion","hostFontSizeSetting","windowTop","windowBottom","osLanguage","undefined","osTheme","ua","hostPackageName","browserName","browserVersion","deviceTypeMaps","ipad","windows","mac","deviceTypeMapsKeys","_model","_m","defaultLanguage","_platform","environment","host","env","getSystemInfo","showActionSheet","alertText","title","getAppBaseInfo","getDeviceInfo","getWindowInfo","getAppAuthorizeSetting","locationReducedAccuracy","locationAccuracy","protocols","todos","canIUses","CALLBACKS","processCallback","methodName","processReturnValue","processArgs","argsOption","keepFromArgs","toArgs","keyOption","console","warn","keepReturnValue","wrapper","protocol","arg1","arg2","apply","todoApis","TODOS","createTodoApi","errMsg","providers","oauth","share","payment","getProvider","service","provider","extraApi","getEmitter","Emitter","ctx","$on","arguments","$off","$emit","cid","cidErrMsg","enabled","eventApi","tryCatch","e","getApiCallbacks","apiCallbacks","param","normalizePushMessage","invokePushCallback","type","invokeGetPushCidCallbacks","onPushMessageCallbacks","stopped","getPushCidCallbacks","getPushClientId","hasSuccess","hasFail","hasComplete","onPushMessage","offPushMessage","MPPage","Page","MPComponent","Component","customizeRE","customize","initTriggerEvent","mpInstance","oldTriggerEvent","triggerEvent","newTriggerEvent","event","_triggerEvent","initHook","isComponent","oldHook","__$wrappered","after","PAGE_EVENT_HOOKS","initMocks","vm","mocks","$mp","mpType","mock","hasHook","vueOptions","default","extendOptions","super","mixins","initHooks","mpOptions","__call_hook","initVueComponent","VueComponent","extend","initSlots","vueSlots","$slots","slotName","$scopedSlots","initVueIds","vueIds","_$vueId","_$vuePid","initData","context","VUE_APP_DEBUG","stringify","__lifecycle_hooks__","PROP_TYPES","Boolean","createObserver","newVal","oldVal","initBehaviors","initBehavior","vueBehaviors","behaviors","vueExtends","extends","vueMixins","vueProps","props","behavior","properties","initProperties","vueMixin","parsePropType","defaultValue","file","isBehavior","vueId","virtualHost","virtualHostStyle","virtualHostClass","scopedSlotsCompiler","observer","setData","opts","wrapper$1","mp","stopPropagation","preventDefault","target","detail","markerId","getExtraValue","dataPathsArray","dataPathArray","dataPath","vFor","propPath","valuePath","isInteger","substr","__get_value","vForItem","vForKey","processEventExtra","extra","extraObj","__args__","getObjByArray","arr","element","processEventArgs","isCustom","isCustomMPEvent","currentTarget","dataset","comType","ret","arg","ONCE","CUSTOM","isMatchEventType","eventType","optType","getContextVm","$parent","$options","generic","$scope","handleEvent","eventOpts","eventOpt","eventsArray","isOnce","eventArray","handlerCtx","handler","path","route","is","once","eventChannels","eventChannelStack","getEventChannel","id","eventChannel","shift","initEventChannel","getOpenerEventChannel","callHook","__id__","__eventChannel__","initScopedSlotsParams","center","parents","$hasScopedSlotsParams","has","$getScopedSlotsParams","object","$setScopedSlotsParams","propsData","destroyed","parseBaseApp","initRefs","store","$store","mpHost","$i18n","_i18n","appOptions","onLaunch","canIUse","globalData","_isMounted","findVmByVueId","vuePid","parentVm","$children","childVm","Behavior","isPage","initRelation","selectAllComponents","selector","$refs","components","component","ref","vueGeneric","scopedComponent","forComponents","handleLink","parent","parseApp","createApp","App","encodeReserveRE","encodeReserveReplacer","commaRE","encode","encodeURIComponent","stringifyQuery","encodeStr","val","val2","x","parseBaseComponent","vueComponentOptions","multipleSlots","addGlobalClass","componentOptions","__file","lifetimes","attached","$mount","ready","detached","$destroy","pageLifetimes","show","hide","resize","size","__l","__e","externalClasses","wxsCallMethods","callMethod","parseComponent","hooks$1","parseBasePage","vuePageOptions","pageOptions","onLoad","query","copyQuery","parsePage","createPage","createComponent","createSubpackageApp","onShow","onAppShow","onHide","onAppHide","getLaunchOptionsSync","createPlugin","todoApi","canIUseApi","apiName","uni","Proxy","uni$1","module","exports","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","renderjs","unshift","__module","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","shadowRoot","_injectStyles","originalRender","h","existing","login","checkAuth","log","getLocalUserInfo","askLogin","user","commit","noCase","alert","showError","setTimeout","switchTab","showModal","content","confirm","navigateTo","getUserProfile","that","desc","showLoading","code","request","post","encryptedData","iv","logout","clearStorage","reLaunch","use","Vuex","Store","people","tag","taskType","mutations","savePath","saveToken","savePeople","saveTaskType","actions","n","__esModule","s","require","globalThis","window","self","o","lib","r","Base","mixIn","init","$super","clone","WordArray","words","sigBytes","clamp","ceil","a","enc","Hex","u","Latin1","l","Utf8","escape","unescape","BufferedBlockAlgorithm","reset","_data","_nDataBytes","_append","_process","blockSize","max","_minBufferSize","min","_doProcessBlock","Hasher","cfg","_doReset","update","finalize","_doFinalize","_createHelper","_createHmacHelper","d","HMAC","algo","abs","sin","MD5","_hash","f","g","p","m","y","w","k","T","S","A","P","I","b","O","C","E","HmacMD5","_hasher","_oKey","_iKey","appid","_globalUniCloudObj","reduce","R","U","L","D","includes","q","N","F","isReady","initUniCloud","j","M","errCode","requestId","$","scene","channel","K","LOCALE","PLATFORM","OS","APPID","DEVICEID","X","B","sign","wrappedRequest","header","statusCode","H","uploadFile","setStorageSync","removeStorageSync","clearStorageSync","W","en","fr","es","ja","z","V","config","endpoint","requestUrl","envType","accessTokenKey","spaceId","adapter","_getAccessTokenPromise","_getAccessTokenPromiseStatus","accessToken","requestWrapped","hasAccessToken","getAccessToken","rebuildRequest","clientSecret","timestamp","dataType","requestAuth","setupRequest","setAccessToken","functionTarget","functionArgs","formData","filePath","fileType","onUploadProgress","onProgressUpdate","loaded","totalBytesSent","total","totalBytesExpectedToSend","cloudPath","getOSSUploadOptionsFromPath","filename","cdnDomain","ossPath","OSSAccessKeyId","accessKeyId","Signature","signature","policy","success_action_status","fileName","uploadFileToOSS","reportOSSUpload","fileID","fileList","tempFileURL","J","signInAnonymously","authorize","getLoginState","auth","customAuth","Y","location","local","none","session","te","G","Q","Z","ee","ne","isMatch","genAdapter","runtime","WEB","WX_MP","se","oe","re","root","tcbObject","ie","localStorage","sessionStorage","ae","_storage","_persistence","primaryStorage","persistence","accessTokenExpireKey","refreshTokenKey","anonymousUuidKey","loginTypeKey","userInfoKey","getItem","setItem","removeItem","ce","ue","le","he","de","fe","_listeners","_listens","ge","on","pe","fire","me","off","Se","ye","_e","we","ke","Te","ANONYMOUS","WECHAT","WECHAT_PUBLIC","WECHAT_OPEN","EMAIL","USERNAME","NULL","ve","Ae","Pe","headers","append","Ie","seqId","be","_reqClass","reqClass","timeout","timeoutMsg","restrictedMethods","_cache","_localCache","upload","download","_refreshAccessTokenPromise","_refreshAccessToken","_shouldRefreshAccessTokenHook","removeStore","getStore","refresh_token","send","anonymous_uuid","setRefreshToken","access_token","setStore","access_token_expire","accessTokenExpire","refreshAccessToken","action","dataVersion","FormData","inQuery","search","status","Oe","Ce","Ee","_request","setLocalUserInfo","Re","_envId","setUserInfo","ticket","signInWithRedirect","oldPassword","newPassword","newEmail","username","users","wxOpenId","wxPublicId","hasPrimaryUid","nickName","gender","avatarUrl","province","country","city","Ue","credential","refreshToken","loginType","xe","updatePersistence","uuid","_setAnonymousUUID","refresh","_clearAnonymousUUID","Le","refreshUserInfo","De","email","password","qe","Ne","_onAnonymousConverted","bind","_onLoginTypeChanged","signIn","_anonymousAuthProvider","linkAndRetrieveDataWithTicket","hasLoginState","isRegistered","Fe","authorization","fileId","cosFileId","Me","$e","fileid_list","delete_list","je","fileid","max_age","maxAge","file_list","download_list","Ke","download_url","encodeURI","Be","function_name","request_data","response_data","He","We","ze","authObj","requestClient","Ve","Je","Ye","Xe","clear","Ge","useAdapters","Qe","Ze","et","tt","nt","st","ot","fileUrl","rt","it","clientInfo","uniIdToken","at","localAddress","localPort","aliyun","tencent","_originCallFunction","ct","rule","mode","ut","lt","RegExp","source","ht","dt","functionName","logPvd","debugLog","ft","callFunction","tcb","extraInfo","formatter","match","debugInfo","forceRemote","gt","Symbol","pt","_internalType","__ob__","mt","yt","_t","wt","$regexp","flags","$date","toISOString","kt","$method","Tt","prevStage","udb","_database","$db","reverse","$param","toJSON","_send","from","getAction","getCommand","_callCloudFunction","command","isAggregate","St","isCommand","vt","$newDb","At","multiCommand","queryList","setResult","dataList","_callback","_uniClient","systemInfo","level","_callbackAuth","prop","tips","uniClient","_authCallBacks","_dbCallBacks","isDefault","$env","Geo","serverDate","Pt","database","It","bt","Ot","TOKEN_INVALID_TOKEN_EXPIRED","TOKEN_INVALID_INVALID_CLIENTID","TOKEN_INVALID","TOKEN_INVALID_WRONG_TOKEN","TOKEN_INVALID_ANONYMOUS_USER","Ct","Et","Rt","needLogin","needLoginPage","notNeedLoginPage","Ut","list","some","pagePath","zt","xt","uniIdRouter","subPackages","tabBar","loginPage","resToLogin","routerNeedLogin","loginPageInTabBar","Lt","Dt","qt","Nt","Ft","Mt","$t","pop","jt","Kt","uniIdRedirectUrl","Bt","onResponse","Ht","onNeedLogin","offNeedLogin","needLoginInit","Wt","offResponse","onRefreshToken","offRefreshToken","Vt","Jt","Yt","Xt","tempFiles","substring","lastIndexOf","tempFilePaths","onChooseFile","tempFile","tempFilePath","initChooseAndUploadFile","count","sizeType","sourceType","extension","chooseImage","camera","compressed","maxDuration","chooseVideo","duration","height","width","chooseFile","chooseMessageFile","Gt","Qt","Zt","localdata","spaceInfo","collection","field","orderby","where","pageData","pageCurrent","pageSize","getcount","gettree","gettreepath","startwith","limitlevel","groupby","groupField","distinct","foreignKey","loadtime","manual","mixinDatacomLoading","mixinDatacomHasMore","mixinDatacomResData","mixinDatacomErrorMessage","mixinDatacomPage","created","$watch","onMixinDatacomPropsChange","mixinDatacomEasyGet","getone","mixinDatacomGet","groupBy","orderBy","getCount","limitLevel","startWith","getTree","getTreePath","skip","limit","customUI","loadingOptions","errorOptions","mask","retry","newToken","hideLoading","showToast","icon","showCancel","cancelText","confirmText","cancel","tn","nn","initUniCloudStatus","address","servePort","port","initialLaunchType","sn","navigator","userAgent","reInit","chooseAndUploadFile","importObject","uniCloud","yAxisWidth","xAxisHeight","xAxisTextPadding","padding","rotate","fontSize","fontColor","dataPointShape","color","linearColor","pieChartLinePadding","pieChartTextPadding","titleFontSize","subtitleFontSize","toolTipPadding","toolTipBackground","toolTipOpacity","toolTipLineHeight","radarLabelTextMargin","varArgs","TypeError","deepAssign","obj1","obj2","util","toFixed","num","isFloat","approximatelyEqual","num1","num2","isSameSign","isSameXCoordinateArea","p1","p2","isCollision","end","start","flag","hexToRgb","hexValue","opc","rgx","hex","rgb","exec","findRange","multiple","calCandleMA","dayArr","nameArr","colorArr","kdata","seriesTemp","seriesItem","sum","calValidDistance","distance","chartData","dataChartAreaWidth","area","dataChartWidth","eachSpacing","xAxisData","xAxisPoints","mount","widthRatio","validDistance","uevent","trigger","scrollOption","position","xAxis","scrollPosition","isInAngleRange","angle","startAngle","endAngle","adjust","PI","createCurveControlPoints","points","isNotMiddlePoint","isNotMiddlePointX","pAx","pAy","pBx","pBy","last","ctrA","ctrB","convertCoordinateOrigin","avoidCollision","fixPieSeries","series","pieSeriesArr","_pieSeries_","oldseries","fillSeries","linearIndex","pointShape","legendShape","fillCustomColor","linearType","customColor","newcolor","chazhi","getDataRange","minData","maxData","range","minRange","maxRange","measureText","text","setFontSize","dataCombine","dataCombineStack","getTouches","touches","clientX","pix","pageY","offsetTop","getSeriesDataItem","group","newSeries","indexIsArr","tempSeries","filterSeries","tmpindex","style","disableLegend","getMaxTextListLength","lengthList","getRadarCoordinateSeries","eachAngle","CoordinateSeries","getToolTipData","seriesData","categories","calPoints","filterPoints","textList","titleText","offset","round","getMixToolTipData","getCandleToolTipData","upColor","upFill","downColor","downFill","text1","text2","text3","text4","validCalPoints","findCurrentIndex","currentPoints","spacing","boundaryGap","isInExactChartArea","timePoints","pointValue","pointIndex","minValue","findBarChartCurrentIndex","yAxisPoints","findLegendIndex","legendData","gap","isInExactLegendArea","findRadarChartCurrentIndex","radarData","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","mercator","findRoseChartCurrentIndex","pieData","getRoseDataPoints","_series_","rose","offsetAngle","_start_","_rose_proportion_","findPieChartCurrentIndex","getPieDataPoints","pie","ring","_proportion_","pow","splitPoints","eachSeries","newPoints","items","connectNulls","calLegendData","wholeWidth","wholeHeight","widthArr","heightArr","legend","margin","shapeWidth","shapeRight","lineHeight","legendList","widthCount","widthCountArr","currentRow","legendText","itemWidth","itemGap","legendWidth","float","maxHeight","maxLength","lineNum","temp","maxWidth","calCategoriesData","categoriesTextLenth","xitem","maxTextLength","rotateLabel","rotateAngle","tempHeight","enableScroll","scrollShow","disabled","getXAxisTextList","stack","sorted","subitem","rangeSpan","eachRange","splitNumber","calXAxisData","columnstyle","bar","ranges","rangesFormat","xAxisScaleValues","getXAxisPoints","textLength","getRadarDataPoints","radarOption","radar","each","listItem","proportion","cos","_radius_","getFunnelDataPoints","minRadius","dataArr","radiusLength","getArcbarDataPoints","arcbarOption","totalAngle","getGaugeArcbarDataPoints","getGaugeAxisPoints","tempStartAngle","_startAngle_","_endAngle_","getGaugeDataPoints","gaugeOption","pointer","_oldAngle_","oldAngle","oldData","getPieTextMaxLength","textSize","fixColumeData","columnLen","seriesGap","categoryGap","mix","column","fixBarData","fixColumeMeterData","border","fixColumeStackData","indexn","fixBarStackData","spacingValid","dataCount","itemCount","startX","endX","getCandleDataPoints","validHeight","cPoints","indexs","point","getDataPoints","validWidth","xranges","xminRange","xmaxRange","getMountDataPoints","mountOption","mountWidth","getBarDataPoints","getStackDataPoints","seriesIndex","stackSeries","value0","height0","heightc","y0","getBarStackDataPoints","x0","getYAxisTextList","yData","dataRange","yAxis","calYAxisData","YLength","rangesArr","rangesFormatArr","yAxisWidthArr","unit","tofix","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","subtitlefontSize","subtitle","titleFontColor","subtitleFontColor","titleHeight","subtitleHeight","textWidth","offsetX","startY","offsetY","fillText","_textWidth","_startX","_startY","drawPointText","textOffset","textColor","formatVal","setTextAlign","drawMountPointText","drawBarPointText","drawGaugeLabel","centerPosition","labelOffset","splitAngle","splitLine","totalNumber","endNumber","startNumber","nowAngle","nowNumber","pos","labelText","labelColor","drawRadarLabel","labelPointShow","posPoint","posPointAxis","labelPointColor","labelPointRadius","posRelativeCanvas","drawPieText","lineRadius","textObjectCollection","lastTextObject","seriesConvert","labelShow","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","drawMarkLine","markLineOption","markLine","lineColor","showLabel","labelAlign","labelOffsetX","labelOffsetY","bgWidth","bgStartX","bgStartY","drawToolTipHorizentalLine","yAxisLabel","tStartLeft","tStartRight","bgEndX","drawToolTipSplitArea","activeBgColor","activeBgOpacity","activeWidth","drawBarToolTipSplitArea","drawToolTip","showBox","showArrow","showCategory","bgColor","bgOpacity","borderColor","borderWidth","borderRadius","borderOpacity","legendMarginRight","arrowWidth","isOverRightBorder","toolTipWidth","toolTipHeight","_scrollDistance_","fillRect","drawColumnDataPoints","columnOption","meterBorder","meterFillColor","barBorderCircle","barBorderRadius","linearOpacity","colorStop","save","leftNum","rightNum","tooltipPoints","fillColor","strokeColor","grd","createLinearGradient","addColorStop","r0","r3","dataLabel","restore","drawMountDataPoints","bezierCurveTo","drawBarDataPoints","drawCandleDataPoints","seriesMA","candleOption","average","candle","upLine","downLine","day","leftSpace","rightSpace","splitPointList","startPoint","ctrlPoint","drawAreaDataPoints","areaOption","opacity","addLine","gradient","firstPoint","lastPoint","lineType","drawScatterDataPoints","scatter","drawBubbleDataPoints","bubbleOption","bubble","drawLineDataPoints","lineOption","line","drawMixDataPoints","columnIndex","columnLength","addPoint","drawToolTipBridge","horizentalLine","drawXAxis","scrollY","scrollScreenWidth","scrollTotalWidth","scrollWidth","scrollLeft","setLineCap","scrollBackgroundColor","scrollColor","disableGrid","gridEval","maxXAxisListLength","labelCount","ratio","newCategories","cgLength","xAxisFontSize","_xAxisTextAngle_","scrollHeight","axisLine","axisLineColor","drawYAxisGrid","xAxiseachSpacing","TotalWidth","drawYAxis","fillEndY","tStartCenter","textAlign","tmpstrat","gapwidth","showTitle","titleOffsetX","titleOffsetY","drawLegend","legendArea","backgroundColor","itemList","listIndex","hiddenColor","fontTrans","drawPieDataPoints","pieOption","activeOpacity","activeRadius","labelWidth","ringWidth","customRadius","centerColor","_pieTextMaxLength_","lineJoin","fillcolor","createCircularGradient","createRadialGradient","innerPieWidth","drawRoseDataPoints","roseOption","drawArcbarDataPoints","lineCap","arcbar","centerX","centerY","drawGaugeDataPoints","fixRadius","childNumber","childWidth","gauge","innerRadius","pieRadius","childAngle","proc","pointerRadius","gradient3","eachCategories","childendX","drawRadarDataPoints","axisLabel","axisLabelTofix","gridCount","coordinateAngle","xr","yr","_loop","startPos","radarDataPoints","stepLength","label","lonlat2mercator","longitude","latitude","tan","getBoundingBox","coords","xMin","xMax","yMin","yMax","coorda","coordinateToPoint","pointY","pointX","isRayIntersectsSegment","s_poi","e_poi","xseg","poly","sinsc","epoly","drawMapDataPoints","mapOption","fillOpacity","activeBorderColor","activeFillColor","activeFillOpacity","xScale","yScale","gaosi","centerPoint","centroid","draw","normalInt","iter","collisionNew","isIn","getWordCloudPoint","tHeight","tWidth","breaknum","Spin","isSpin","areav","drawWordCloudDataPoints","wordOption","autoColors","word","wordCloudData","strokeText","drawFunnelDataPoints","funnelOption","funnel","drawFunnelText","drawCanvas","Timing","easeIn","easeOut","easeInOut","linear","Animation","isStop","timing","delay","createAnimationFrame","step","timeStamp","requestAnimationFrame","animationFrame","startTimeStamp","_step","onProcess","onAnimationFinish","timingFunction","drawCharts","_this","animation","animationInstance","stop","_calLegendData","legendHeight","_calYAxisData","maxTitleHeight","rightIndex","leftIndex","_calCategoriesData","categoriesData","scrollAlign","offsetLeft","totalWidth","screenWidth","currentOffset","startTouchX","lastMoveTime","clearRect","_drawLineDataPoints","enableMarkLine","_drawScatterDataPoints","_drawBubbleDataPoints","_drawMixDataPoints","_drawColumnDataPoints","_drawMountDataPoints","_drawBarDataPoints","_drawAreaDataPoints","arcbarData","gaugeData","_drawCandleDataPoints","uChartsEvent","events","addEventListener","listener","delEventListener","_len","_key","uCharts","canvas2d","config$$1","tempWidth","strokeStyle","lineWidth","font","fillStyle","updateData","_getXAxisPoints0","zoom","centerLeft","MaxLeft","dobuleZoom","tcs","changedTouches","clientY","ntcs","xlength","moveCount","cts0","cts1","moveCurrent1","getCurrentDataIndex","moveCurrent2","currentEachSpacing","currentLeft","stopAnimation","_touches$","getLegendDataIndex","touchLegend","showToolTip","_getToolTipData","_getMixToolTipData","scrollStart","scroll","Limit","touchMoveLimit","currMoveTime","_distance","scrollEnd","_scrollOption","formatDateTime","returnType","date","setTime","getFullYear","getMonth","getDate","getHours","minute","getMinutes","second","getSeconds","cfu","category","applyMixin","vuexInit","_init","devtoolHook","__VUE_DEVTOOLS_GLOBAL_HOOK__","devtoolPlugin","_devtoolHook","emit","targetState","replaceState","subscribe","mutation","prepend","subscribeAction","deepCopy","original","copy","forEachValue","isObject","assert","condition","msg","partial","Module","rawModule","_children","_rawModule","rawState","prototypeAccessors","namespaced","configurable","addChild","removeChild","getChild","hasChild","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","defineProperties","ModuleCollection","rawRootModule","register","targetModule","newModule","assertRawModule","modules","getNamespace","namespace","this$1","rawChildModule","unregister","child","functionAssert","expected","objectAssert","assertTypes","assertOptions","makeAssertionMessage","buf","install","plugins","strict","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","_makeLocalGettersCache","dispatch","payload","installModule","resetStoreVM","plugin","useDevtools","devtools","prototypeAccessors$1","genericSubscribe","subs","resetStore","hot","oldVm","_vm","wrappedGetters","computed","enumerable","silent","$$state","enableStrictMode","_withCommit","nextTick","rootState","isRoot","parentState","getNestedState","moduleName","makeLocalContext","namespacedType","registerMutation","registerAction","getter","registerGetter","noNamespace","_type","_payload","_options","unifyObjectStyle","makeLocalGetters","gettersProxy","splitPos","localType","entry","rootGetters","rawGetter","deep","sync","_Vue","sub","before","all","cb","registerModule","preserveState","unregisterModule","delete","hasModule","newOptions","committing","mapState","normalizeNamespace","states","isValidMap","normalizeMap","getModuleByNamespace","vuex","mapMutations","mapGetters","mapActions","createNamespacedHelpers","helper","createLogger","collapsed","stateBefore","stateAfter","transformer","mutationTransformer","mut","actionFilter","actionTransformer","act","logMutations","logActions","logger","prevState","nextState","formattedTime","getFormattedTime","formattedMutation","startMessage","endMessage","formattedAction","groupCollapsed","groupEnd","time","pad","getMilliseconds","repeat","times","index_cjs","getToken","domain","common","uploadFile2","formdata","lawyerInfo","login_type","who","patch","get2","post2","Function","hadRuntime","regeneratorRuntime","getOwnPropertyNames","oldRuntime","Op","$Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","inModule","wrap","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","awrap","__await","defineIteratorMethods","AsyncIterator","async","innerFn","outerFn","tryLocsList","next","done","Context","skipTempReset","prev","sent","_sent","delegate","tryEntries","resetTryEntry","rootEntry","rootRecord","completion","rval","dispatchException","exception","handle","loc","caught","record","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","abrupt","finallyEntry","afterLoc","finish","thrown","delegateYield","iterable","resultName","nextLoc","protoGenerator","generator","_invoke","makeInvokeMethod","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","doneResult","delegateResult","maybeInvokeDelegate","return","info","pushTryEntry","locs","iteratorMethod","devApi","devDomain","online","hideToast","showSuccess","showWarning","formats","utils","arrayPrefixGenerators","brackets","prefix","indices","toISO","defaults","delimiter","encoder","encodeValuesOnly","serializeDate","skipNulls","strictNullHandling","generateArrayPrefix","allowDots","isBuffer","keyValue","objKeys","format","formatters","arrayFormat","joined","addQueryPrefix","hexTable","array","compactQueue","compacted","arrayToObject","plainObjects","merge","allowPrototypes","mergeTarget","acc","decode","string","out","compact","refs","isRegExp","percentTwenties","RFC1738","RFC3986","arrayLimit","decoder","depth","parameterLimit","parseValues","cleanStr","ignoreQueryPrefix","Infinity","bracketEqualsPos","parseObject","chain","leaf","cleanRoot","parseArrays","parseKeys","givenKey","segment","tempObj","newObj","Request","baseUrl","beforeRequest","afterRequest","weixin","$http","defaultDelimiters","BaseFormatter","_caches","delimiters","tokens","compile","RE_TOKEN_LIST_VALUE","RE_TOKEN_NAMED_VALUE","startDelimiter","endDelimiter","char","isClosed","compiled","defaultFormatter","I18n","fallbackLocale","watcher","formater","watchers","override","interpolate","watchAppLocale","newLocale","getDefaultLocale","isWatchedAppLocale","isString","hasI18nJson","jsonObj","walkJsonObj","isI18nStr","parseI18nJson","compileStr","compileI18nJsonStr","jsonStr","localeValues","compileJsonObj","compileValue","valueLocales","localValue","walk","resolveLocale","resolveLocaleChain","emptyObject","isUndef","isDef","isTrue","isFalse","isPrimitive","toRawType","isValidArrayIndex","parseFloat","isFinite","toNumber","makeMap","expectsLowerCase","isBuiltInTag","isReservedAttribute","remove","capitalize","hyphenateRE","hyphenate","polyfillBind","boundFn","_length","nativeBind","toArray","to","_from","toObject","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","getTime","keysA","keysB","looseIndexOf","called","ASSET_TYPES","LIFECYCLE_HOOKS","optionMergeStrategies","productionTip","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","unicodeRegExp","isReserved","def","writable","bailRE","parsePath","segments","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","weexPlatform","UA","isIE","isEdge","nativeWatch","isServerRendering","VUE_ENV","isNative","Ctor","_Set","hasSymbol","Reflect","ownKeys","Set","tip","generateComponentTrace","formatComponentName","hasConsole","classifyRE","classify","trace","includeFile","_isVue","_componentTag","tree","currentRecursiveSequence","Dep","pushTarget","SharedObject","targetStack","popTarget","addSub","removeSub","depend","addDep","notify","VNode","children","elm","asyncFactory","ns","fnContext","fnOptions","fnScopeId","componentInstance","raw","isStatic","isRootInsert","isComment","isCloned","asyncMeta","isAsyncPlaceholder","createEmptyVNode","node","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","methodsToPatch","inserted","ob","observeArray","dep","arrayKeys","shouldObserve","toggleObserving","Observer","vmCount","copyAugment","protoAugment","src","observe","asRootData","isExtensible","defineReactive$$1","customSetter","shallow","property","getOwnPropertyDescriptor","setter","childOb","dependArray","del","strats","mergeData","toVal","fromVal","mergeDataOrFn","instanceData","defaultData","mergeAssets","assertObjectType","el","defaultStrat","key$1","inject","provide","checkComponents","validateComponentName","normalizeProps","normalizeInject","normalized","normalizeDirectives","dirs","directives","def$$1","mergeOptions","_base","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","absent","booleanIndex","getTypeIndex","stringIndex","getPropDefaultValue","prevShouldObserve","assertProp","_props","getType","required","valid","expectedTypes","assertedType","assertType","expectedType","validator","getInvalidTypeMessage","simpleCheckRE","isSameType","receivedType","expectedValue","styleValue","receivedValue","isExplicable","isBoolean","explicitTypes","elem","handleError","cur","errorCaptured","capture","globalHandleError","invokeWithErrorHandling","_handled","logError","timerFunc","initProxy","callbacks","pending","flushCallbacks","copies","MutationObserver","setImmediate","counter","textNode","document","createTextNode","characterData","_resolve","allowedGlobals","warnNonPresent","warnReservedPrefix","hasProxy","isBuiltInModifier","hasHandler","isAllowed","$data","getHandler","handlers","_withStripped","_renderProxy","measure","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","perf","clearMarks","clearMeasures","startTag","endTag","normalizeEvent","passive","once$$1","createFnInvoker","fns","invoker","arguments$1","updateListeners","oldOn","remove$$1","createOnceHandler","old","extractPropertiesFromVNodeData","attrs","altKey","checkProp","extractPropsFromVNodeData","keyInLowerCase","hash","preserve","simpleNormalizeChildren","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","lastIndex","_isVList","initProvide","_provided","initInjections","resolveInject","provideKey","provideDefault","resolveSlots","slots","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","renderSlot","fallback","bindObject","nodes","scopedSlotFn","_i","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","markStatic","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","symbol","installRenderHelpers","_o","_n","_s","_l","_q","_f","_k","_b","_v","_u","_g","_d","_p","FunctionalRenderContext","contextVm","_original","isCompiled","needNormalization","listeners","injections","scopedSlots","_c","createElement","createFunctionalComponent","mergeProps","renderContext","cloneAndMarkFunctionalResult","vnodes","devtoolsMeta","componentVNodeHooks","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","createComponentInstanceForVnode","activeInstance","oldVnode","updateChildComponent","insert","queueActivatedComponent","activateChildComponent","destroy","deactivateChildComponent","hooksToMerge","baseCtor","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","transformModel","nativeOn","abstract","installComponentHooks","_isComponent","_parentVnode","inlineTemplate","toMerge","_merged","mergeHook$1","f1","f2","merged","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","_createElement","pre","applyNS","registerDeepBindings","force","class","initRender","_vnode","parentVnode","_renderChildren","parentData","isUpdatingChildComponent","_parentListeners","currentRenderingInstance","renderMixin","$nextTick","_render","renderError","ensureCtor","comp","base","factory","errorComp","resolved","owner","owners","loading","loadingComp","timerLoading","timerTimeout","forceRender","renderCompleted","clearTimeout","getFirstComponentChild","initEvents","_events","_hasHookEvent","updateComponentListeners","remove$1","_target","onceHandler","oldListeners","eventsMixin","hookRE","i$1","cbs","lowerCaseEvent","setActiveInstance","prevActiveInstance","initLifecycle","_watcher","_inactive","_directInactive","_isBeingDestroyed","lifecycleMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","teardown","_watchers","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","$attrs","$listeners","propKeys","_propKeys","_$updateProperties","isInInactiveTree","direct","MAX_UPDATE_COUNT","activatedChildren","circular","waiting","flushing","resetSchedulerState","getNow","createEvent","flushSchedulerQueue","run","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","queueWatcher","uid$2","Watcher","expOrFn","isRenderWatcher","lazy","active","dirty","deps","newDeps","depIds","newDepIds","expression","cleanupDeps","oldValue","evaluate","sharedPropertyDefinition","sourceKey","initState","initProps","initMethods","initComputed","initWatch","propsOptions","_getFormData","__next_tick_pending","getData","computedWatcherOptions","_computedWatchers","isSSR","userDef","defineComputed","shouldCache","createComputedGetter","createGetterInvoker","createWatcher","stateMixin","dataDef","propsDef","$set","$delete","immediate","uid$3","initMixin","_uid","initInternalComponent","_self","_$fallback","_name","vnodeComponentOptions","superOptions","cachedSuperOptions","modifiedOptions","resolveModifiedOptions","modified","latest","sealed","sealedOptions","initUse","installedPlugins","_installedPlugins","initMixin$1","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","initProps$1","initComputed$1","Comp","initAssetRegisters","definition","getComponentName","matches","pattern","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","cached$$1","patternTypes","KeepAlive","exclude","mounted","ref$1","builtInComponents","initGlobalAPI","configDef","defineReactive","ARRAYTYPE","OBJECTTYPE","diff","syncKeys","_diff","rootCurrentType","rootPreType","currentValue","preValue","currentType","preType","subKey","flushCallbacks$1","__next_tick_callbacks","hasRenderWatcher","nextTick$1","mpInstance$1","cloneWithData","dataKeys","compositionApiState","__composition_api_state__","__secret_vfa_state__","rawBindings","__webviewId__","mpData","diffData","$shouldDiffData","createEmptyRender","mountComponent$1","template","updateComponent","renderClass","staticClass","dynamicClass","stringifyClass","stringifyArray","stringifyObject","stringified","parseStyleText","cssText","listDelimiter","propertyDelimiter","normalizeStyleBinding","bindingStyle","MP_METHODS","getTarget","internalMixin","onError","oldEmit","my","createSelectorQuery","createIntersectionObserver","__init_provide","__init_injections","__set_model","modifiers","__set_sync","__get_orig","__get_class","__get_style","dynamicStyle","staticStyle","dynamicStyleObj","styleObj","__map","iteratee","LIFECYCLE_HOOKS$1","lifecycleMixin$1","oldExtend","strategies"],"mappings":"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","file":"common/vendor.js","sourcesContent":["import { initVueI18n } from '@dcloudio/uni-i18n';\r\nimport Vue from 'vue';\r\n\r\nlet realAtob;\r\n\r\nconst b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\r\nconst b64re = /^(?:[A-Za-z\\d+/]{4})*?(?:[A-Za-z\\d+/]{2}(?:==)?|[A-Za-z\\d+/]{3}=?)?$/;\r\n\r\nif (typeof atob !== 'function') {\r\n realAtob = function (str) {\r\n str = String(str).replace(/[\\t\\n\\f\\r ]+/g, '');\r\n if (!b64re.test(str)) { throw new Error(\"Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.\") }\r\n\r\n // Adding the padding if missing, for semplicity\r\n str += '=='.slice(2 - (str.length & 3));\r\n var bitmap; var result = ''; var r1; var r2; var i = 0;\r\n for (; i < str.length;) {\r\n bitmap = b64.indexOf(str.charAt(i++)) << 18 | b64.indexOf(str.charAt(i++)) << 12 |\r\n (r1 = b64.indexOf(str.charAt(i++))) << 6 | (r2 = b64.indexOf(str.charAt(i++)));\r\n\r\n result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255)\r\n : r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255)\r\n : String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255);\r\n }\r\n return result\r\n };\r\n} else {\r\n // 注意atob只能在全局对象上调用,例如:`const Base64 = {atob};Base64.atob('xxxx')`是错误的用法\r\n realAtob = atob;\r\n}\r\n\r\nfunction b64DecodeUnicode (str) {\r\n return decodeURIComponent(realAtob(str).split('').map(function (c) {\r\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)\r\n }).join(''))\r\n}\r\n\r\nfunction getCurrentUserInfo () {\r\n const token = ( wx).getStorageSync('uni_id_token') || '';\r\n const tokenArr = token.split('.');\r\n if (!token || tokenArr.length !== 3) {\r\n return {\r\n uid: null,\r\n role: [],\r\n permission: [],\r\n tokenExpired: 0\r\n }\r\n }\r\n let userInfo;\r\n try {\r\n userInfo = JSON.parse(b64DecodeUnicode(tokenArr[1]));\r\n } catch (error) {\r\n throw new Error('获取当前用户信息出错,详细错误信息为:' + error.message)\r\n }\r\n userInfo.tokenExpired = userInfo.exp * 1000;\r\n delete userInfo.exp;\r\n delete userInfo.iat;\r\n return userInfo\r\n}\r\n\r\nfunction uniIdMixin (Vue) {\r\n Vue.prototype.uniIDHasRole = function (roleId) {\r\n const {\r\n role\r\n } = getCurrentUserInfo();\r\n return role.indexOf(roleId) > -1\r\n };\r\n Vue.prototype.uniIDHasPermission = function (permissionId) {\r\n const {\r\n permission\r\n } = getCurrentUserInfo();\r\n return this.uniIDHasRole('admin') || permission.indexOf(permissionId) > -1\r\n };\r\n Vue.prototype.uniIDTokenValid = function () {\r\n const {\r\n tokenExpired\r\n } = getCurrentUserInfo();\r\n return tokenExpired > Date.now()\r\n };\r\n}\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\nfunction sortObject (obj) {\r\n const sortObj = {};\r\n if (isPlainObject(obj)) {\r\n Object.keys(obj).sort().forEach(key => {\r\n sortObj[key] = obj[key];\r\n });\r\n }\r\n return !Object.keys(sortObj) ? obj : sortObj\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.resolve(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 new Promise((resolve, reject) => {\r\n res.then(res => {\r\n if (res[0]) {\r\n reject(res[0]);\r\n } else {\r\n resolve(res[1]);\r\n }\r\n });\r\n })\r\n }\r\n};\r\n\r\nconst SYNC_API_RE =\r\n /^\\$|Window$|WindowStyle$|sendHostEvent|sendNativeEvent|restoreGlobal|requireGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64|getLocale|setLocale|invokePushCallback|getWindowInfo|getDeviceInfo|getAppBaseInfo|getSystemSetting|getAppAuthorizeSetting/;\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', 'createPushMessage'];\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 result = 1;\r\n } else {\r\n result = 0.5;\r\n }\r\n }\r\n return number < 0 ? -result : result\r\n}\r\n\r\nconst LOCALE_ZH_HANS = 'zh-Hans';\r\nconst LOCALE_ZH_HANT = 'zh-Hant';\r\nconst LOCALE_EN = 'en';\r\nconst LOCALE_FR = 'fr';\r\nconst LOCALE_ES = 'es';\r\n\r\nconst messages = {};\r\n\r\nlet locale;\r\n\r\n{\r\n locale = normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN;\r\n}\r\n\r\nfunction initI18nMessages () {\r\n if (!isEnableLocale()) {\r\n return\r\n }\r\n const localeKeys = Object.keys(__uniConfig.locales);\r\n if (localeKeys.length) {\r\n localeKeys.forEach((locale) => {\r\n const curMessages = messages[locale];\r\n const userMessages = __uniConfig.locales[locale];\r\n if (curMessages) {\r\n Object.assign(curMessages, userMessages);\r\n } else {\r\n messages[locale] = userMessages;\r\n }\r\n });\r\n }\r\n}\r\n\r\ninitI18nMessages();\r\n\r\nconst i18n = initVueI18n(\r\n locale,\r\n {}\r\n);\r\nconst t = i18n.t;\r\nconst i18nMixin = (i18n.mixin = {\r\n beforeCreate () {\r\n const unwatch = i18n.i18n.watchLocale(() => {\r\n this.$forceUpdate();\r\n });\r\n this.$once('hook:beforeDestroy', function () {\r\n unwatch();\r\n });\r\n },\r\n methods: {\r\n $$t (key, values) {\r\n return t(key, values)\r\n }\r\n }\r\n});\r\nconst setLocale = i18n.setLocale;\r\nconst getLocale = i18n.getLocale;\r\n\r\nfunction initAppLocale (Vue, appVm, locale) {\r\n const state = Vue.observable({\r\n locale: locale || i18n.getLocale()\r\n });\r\n const localeWatchers = [];\r\n appVm.$watchLocale = fn => {\r\n localeWatchers.push(fn);\r\n };\r\n Object.defineProperty(appVm, '$locale', {\r\n get () {\r\n return state.locale\r\n },\r\n set (v) {\r\n state.locale = v;\r\n localeWatchers.forEach(watch => watch(v));\r\n }\r\n });\r\n}\r\n\r\nfunction isEnableLocale () {\r\n return typeof __uniConfig !== 'undefined' && __uniConfig.locales && !!Object.keys(__uniConfig.locales).length\r\n}\r\n\r\nfunction include (str, parts) {\r\n return !!parts.find((part) => str.indexOf(part) !== -1)\r\n}\r\n\r\nfunction startsWith (str, parts) {\r\n return parts.find((part) => str.indexOf(part) === 0)\r\n}\r\n\r\nfunction normalizeLocale (locale, messages) {\r\n if (!locale) {\r\n return\r\n }\r\n locale = locale.trim().replace(/_/g, '-');\r\n if (messages && messages[locale]) {\r\n return locale\r\n }\r\n locale = locale.toLowerCase();\r\n if (locale === 'chinese') {\r\n // 支付宝\r\n return LOCALE_ZH_HANS\r\n }\r\n if (locale.indexOf('zh') === 0) {\r\n if (locale.indexOf('-hans') > -1) {\r\n return LOCALE_ZH_HANS\r\n }\r\n if (locale.indexOf('-hant') > -1) {\r\n return LOCALE_ZH_HANT\r\n }\r\n if (include(locale, ['-tw', '-hk', '-mo', '-cht'])) {\r\n return LOCALE_ZH_HANT\r\n }\r\n return LOCALE_ZH_HANS\r\n }\r\n const lang = startsWith(locale, [LOCALE_EN, LOCALE_FR, LOCALE_ES]);\r\n if (lang) {\r\n return lang\r\n }\r\n}\r\n// export function initI18n() {\r\n// const localeKeys = Object.keys(__uniConfig.locales || {})\r\n// if (localeKeys.length) {\r\n// localeKeys.forEach((locale) =>\r\n// i18n.add(locale, __uniConfig.locales[locale])\r\n// )\r\n// }\r\n// }\r\n\r\nfunction getLocale$1 () {\r\n // 优先使用 $locale\r\n const app = getApp({\r\n allowDefault: true\r\n });\r\n if (app && app.$vm) {\r\n return app.$vm.$locale\r\n }\r\n return normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN\r\n}\r\n\r\nfunction setLocale$1 (locale) {\r\n const app = getApp();\r\n if (!app) {\r\n return false\r\n }\r\n const oldLocale = app.$vm.$locale;\r\n if (oldLocale !== locale) {\r\n app.$vm.$locale = locale;\r\n onLocaleChangeCallbacks.forEach((fn) => fn({\r\n locale\r\n }));\r\n return true\r\n }\r\n return false\r\n}\r\n\r\nconst onLocaleChangeCallbacks = [];\r\nfunction onLocaleChange (fn) {\r\n if (onLocaleChangeCallbacks.indexOf(fn) === -1) {\r\n onLocaleChangeCallbacks.push(fn);\r\n }\r\n}\r\n\r\nif (typeof global !== 'undefined') {\r\n global.getLocale = getLocale$1;\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 getLocale: getLocale$1,\r\n setLocale: setLocale$1,\r\n onLocaleChange: onLocaleChange,\r\n addInterceptor: addInterceptor,\r\n removeInterceptor: removeInterceptor,\r\n interceptors: interceptors\r\n});\r\n\r\nfunction findExistsPageIndex (url) {\r\n const pages = getCurrentPages();\r\n let len = pages.length;\r\n while (len--) {\r\n const page = pages[len];\r\n if (page.$page && page.$page.fullPath === url) {\r\n return len\r\n }\r\n }\r\n return -1\r\n}\r\n\r\nvar redirectTo = {\r\n name (fromArgs) {\r\n if (fromArgs.exists === 'back' && fromArgs.delta) {\r\n return 'navigateBack'\r\n }\r\n return 'redirectTo'\r\n },\r\n args (fromArgs) {\r\n if (fromArgs.exists === 'back' && fromArgs.url) {\r\n const existsPageIndex = findExistsPageIndex(fromArgs.url);\r\n if (existsPageIndex !== -1) {\r\n const delta = getCurrentPages().length - 1 - existsPageIndex;\r\n if (delta > 0) {\r\n fromArgs.delta = delta;\r\n }\r\n }\r\n }\r\n }\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\nconst UUID_KEY = '__DC_STAT_UUID';\r\nlet deviceId;\r\nfunction useDeviceId (result) {\r\n deviceId = deviceId || wx.getStorageSync(UUID_KEY);\r\n if (!deviceId) {\r\n deviceId = Date.now() + '' + Math.floor(Math.random() * 1e7);\r\n wx.setStorage({\r\n key: UUID_KEY,\r\n data: deviceId\r\n });\r\n }\r\n result.deviceId = deviceId;\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.screenHeight - safeArea.bottom\r\n };\r\n }\r\n}\r\n\r\nfunction populateParameters (result) {\r\n const {\r\n brand = '', model = '', system = '',\r\n language = '', theme, version,\r\n platform, fontSizeSetting,\r\n SDKVersion, pixelRatio, deviceOrientation\r\n } = result;\r\n // const isQuickApp = \"mp-weixin\".indexOf('quickapp-webview') !== -1\r\n\r\n // osName osVersion\r\n let osName = '';\r\n let osVersion = '';\r\n {\r\n osName = system.split(' ')[0] || '';\r\n osVersion = system.split(' ')[1] || '';\r\n }\r\n let hostVersion = version;\r\n\r\n // deviceType\r\n const deviceType = getGetDeviceType(result, model);\r\n\r\n // deviceModel\r\n const deviceBrand = getDeviceBrand(brand);\r\n\r\n // hostName\r\n const _hostName = getHostName(result);\r\n\r\n // deviceOrientation\r\n let _deviceOrientation = deviceOrientation; // 仅 微信 百度 支持\r\n\r\n // devicePixelRatio\r\n let _devicePixelRatio = pixelRatio;\r\n\r\n // SDKVersion\r\n let _SDKVersion = SDKVersion;\r\n\r\n // hostLanguage\r\n const hostLanguage = language.replace(/_/g, '-');\r\n\r\n // wx.getAccountInfoSync\r\n\r\n const parameters = {\r\n appId: process.env.UNI_APP_ID,\r\n appName: process.env.UNI_APP_NAME,\r\n appVersion: process.env.UNI_APP_VERSION_NAME,\r\n appVersionCode: process.env.UNI_APP_VERSION_CODE,\r\n appLanguage: getAppLanguage(hostLanguage),\r\n uniCompileVersion: process.env.UNI_COMPILER_VERSION,\r\n uniRuntimeVersion: process.env.UNI_COMPILER_VERSION,\r\n uniPlatform: process.env.UNI_SUB_PLATFORM || process.env.UNI_PLATFORM,\r\n deviceBrand,\r\n deviceModel: model,\r\n deviceType,\r\n devicePixelRatio: _devicePixelRatio,\r\n deviceOrientation: _deviceOrientation,\r\n osName: osName.toLocaleLowerCase(),\r\n osVersion,\r\n hostTheme: theme,\r\n hostVersion,\r\n hostLanguage,\r\n hostName: _hostName,\r\n hostSDKVersion: _SDKVersion,\r\n hostFontSizeSetting: fontSizeSetting,\r\n windowTop: 0,\r\n windowBottom: 0,\r\n // TODO\r\n osLanguage: undefined,\r\n osTheme: undefined,\r\n ua: undefined,\r\n hostPackageName: undefined,\r\n browserName: undefined,\r\n browserVersion: undefined\r\n };\r\n\r\n Object.assign(result, parameters);\r\n}\r\n\r\nfunction getGetDeviceType (result, model) {\r\n let deviceType = result.deviceType || 'phone';\r\n {\r\n const deviceTypeMaps = {\r\n ipad: 'pad',\r\n windows: 'pc',\r\n mac: 'pc'\r\n };\r\n const deviceTypeMapsKeys = Object.keys(deviceTypeMaps);\r\n const _model = model.toLocaleLowerCase();\r\n for (let index = 0; index < deviceTypeMapsKeys.length; index++) {\r\n const _m = deviceTypeMapsKeys[index];\r\n if (_model.indexOf(_m) !== -1) {\r\n deviceType = deviceTypeMaps[_m];\r\n break\r\n }\r\n }\r\n }\r\n return deviceType\r\n}\r\n\r\nfunction getDeviceBrand (brand) {\r\n let deviceBrand = brand;\r\n if (deviceBrand) {\r\n deviceBrand = brand.toLocaleLowerCase();\r\n }\r\n return deviceBrand\r\n}\r\n\r\nfunction getAppLanguage (defaultLanguage) {\r\n return getLocale$1\r\n ? getLocale$1()\r\n : defaultLanguage\r\n}\r\n\r\nfunction getHostName (result) {\r\n const _platform = 'WeChat' ;\r\n let _hostName = result.hostName || _platform; // mp-jd\r\n {\r\n if (result.environment) {\r\n _hostName = result.environment;\r\n } else if (result.host && result.host.env) {\r\n _hostName = result.host.env;\r\n }\r\n }\r\n\r\n return _hostName\r\n}\r\n\r\nvar getSystemInfo = {\r\n returnValue: function (result) {\r\n useDeviceId(result);\r\n addSafeAreaInsets(result);\r\n populateParameters(result);\r\n }\r\n};\r\n\r\nvar showActionSheet = {\r\n args (fromArgs) {\r\n if (typeof fromArgs === 'object') {\r\n fromArgs.alertText = fromArgs.title;\r\n }\r\n }\r\n};\r\n\r\nvar getAppBaseInfo = {\r\n returnValue: function (result) {\r\n const { version, language, SDKVersion, theme } = result;\r\n\r\n const _hostName = getHostName(result);\r\n\r\n const hostLanguage = language.replace('_', '-');\r\n\r\n result = sortObject(Object.assign(result, {\r\n appId: process.env.UNI_APP_ID,\r\n appName: process.env.UNI_APP_NAME,\r\n appVersion: process.env.UNI_APP_VERSION_NAME,\r\n appVersionCode: process.env.UNI_APP_VERSION_CODE,\r\n appLanguage: getAppLanguage(hostLanguage),\r\n hostVersion: version,\r\n hostLanguage,\r\n hostName: _hostName,\r\n hostSDKVersion: SDKVersion,\r\n hostTheme: theme\r\n }));\r\n }\r\n};\r\n\r\nvar getDeviceInfo = {\r\n returnValue: function (result) {\r\n const { brand, model } = result;\r\n const deviceType = getGetDeviceType(result, model);\r\n const deviceBrand = getDeviceBrand(brand);\r\n useDeviceId(result);\r\n\r\n result = sortObject(Object.assign(result, {\r\n deviceType,\r\n deviceBrand,\r\n deviceModel: model\r\n }));\r\n }\r\n};\r\n\r\nvar getWindowInfo = {\r\n returnValue: function (result) {\r\n addSafeAreaInsets(result);\r\n\r\n result = sortObject(Object.assign(result, {\r\n windowTop: 0,\r\n windowBottom: 0\r\n }));\r\n }\r\n};\r\n\r\nvar getAppAuthorizeSetting = {\r\n returnValue: function (result) {\r\n const { locationReducedAccuracy } = result;\r\n\r\n result.locationAccuracy = 'unsupported';\r\n if (locationReducedAccuracy === true) {\r\n result.locationAccuracy = 'reduced';\r\n } else if (locationReducedAccuracy === false) {\r\n result.locationAccuracy = 'full';\r\n }\r\n }\r\n};\r\n\r\n// import navigateTo from 'uni-helpers/navigate-to'\r\n\r\nconst protocols = {\r\n redirectTo,\r\n // navigateTo, // 由于在微信开发者工具的页面参数,会显示__id__参数,因此暂时关闭mp-weixin对于navigateTo的AOP\r\n previewImage,\r\n getSystemInfo,\r\n getSystemInfoSync: getSystemInfo,\r\n showActionSheet,\r\n getAppBaseInfo,\r\n getDeviceInfo,\r\n getWindowInfo,\r\n getAppAuthorizeSetting\r\n};\r\nconst todos = [\r\n 'vibrate',\r\n 'preloadPage',\r\n 'unPreloadPage',\r\n 'loadSubPackage'\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(`The '${methodName}' method of platform '微信小程序' does not support option '${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 if (isFn(fromArgs[key])) {\r\n toArgs[key] = processCallback(methodName, fromArgs[key], returnValue);\r\n }\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(`Platform '微信小程序' does not support '${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 if (isFn(options.name)) {\r\n methodName = options.name(arg1);\r\n } else if (isStr(options.name)) {\r\n methodName = options.name;\r\n }\r\n const returnValue = wx[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 method '${name}' not supported`\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 not found'\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 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\n/**\r\n * 框架内 try-catch\r\n */\r\n/**\r\n * 开发者 try-catch\r\n */\r\nfunction tryCatch (fn) {\r\n return function () {\r\n try {\r\n return fn.apply(fn, arguments)\r\n } catch (e) {\r\n // TODO\r\n console.error(e);\r\n }\r\n }\r\n}\r\n\r\nfunction getApiCallbacks (params) {\r\n const apiCallbacks = {};\r\n for (const name in params) {\r\n const param = params[name];\r\n if (isFn(param)) {\r\n apiCallbacks[name] = tryCatch(param);\r\n delete params[name];\r\n }\r\n }\r\n return apiCallbacks\r\n}\r\n\r\nlet cid;\r\nlet cidErrMsg;\r\nlet enabled;\r\n\r\nfunction normalizePushMessage (message) {\r\n try {\r\n return JSON.parse(message)\r\n } catch (e) {}\r\n return message\r\n}\r\n\r\nfunction invokePushCallback (\r\n args\r\n) {\r\n if (args.type === 'enabled') {\r\n enabled = true;\r\n } else if (args.type === 'clientId') {\r\n cid = args.cid;\r\n cidErrMsg = args.errMsg;\r\n invokeGetPushCidCallbacks(cid, args.errMsg);\r\n } else if (args.type === 'pushMsg') {\r\n const message = {\r\n type: 'receive',\r\n data: normalizePushMessage(args.message)\r\n };\r\n for (let i = 0; i < onPushMessageCallbacks.length; i++) {\r\n const callback = onPushMessageCallbacks[i];\r\n callback(message);\r\n // 该消息已被阻止\r\n if (message.stopped) {\r\n break\r\n }\r\n }\r\n } else if (args.type === 'click') {\r\n onPushMessageCallbacks.forEach((callback) => {\r\n callback({\r\n type: 'click',\r\n data: normalizePushMessage(args.message)\r\n });\r\n });\r\n }\r\n}\r\n\r\nconst getPushCidCallbacks = [];\r\n\r\nfunction invokeGetPushCidCallbacks (cid, errMsg) {\r\n getPushCidCallbacks.forEach((callback) => {\r\n callback(cid, errMsg);\r\n });\r\n getPushCidCallbacks.length = 0;\r\n}\r\n\r\nfunction getPushClientId (args) {\r\n if (!isPlainObject(args)) {\r\n args = {};\r\n }\r\n const {\r\n success,\r\n fail,\r\n complete\r\n } = getApiCallbacks(args);\r\n const hasSuccess = isFn(success);\r\n const hasFail = isFn(fail);\r\n const hasComplete = isFn(complete);\r\n Promise.resolve().then(() => {\r\n if (typeof enabled === 'undefined') {\r\n enabled = false;\r\n cid = '';\r\n cidErrMsg = 'unipush is not enabled';\r\n }\r\n getPushCidCallbacks.push((cid, errMsg) => {\r\n let res;\r\n if (cid) {\r\n res = {\r\n errMsg: 'getPushClientId:ok',\r\n cid\r\n };\r\n hasSuccess && success(res);\r\n } else {\r\n res = {\r\n errMsg: 'getPushClientId:fail' + (errMsg ? ' ' + errMsg : '')\r\n };\r\n hasFail && fail(res);\r\n }\r\n hasComplete && complete(res);\r\n });\r\n if (typeof cid !== 'undefined') {\r\n invokeGetPushCidCallbacks(cid, cidErrMsg);\r\n }\r\n });\r\n}\r\n\r\nconst onPushMessageCallbacks = [];\r\n// 不使用 defineOnApi 实现,是因为 defineOnApi 依赖 UniServiceJSBridge ,该对象目前在小程序上未提供,故简单实现\r\nconst onPushMessage = (fn) => {\r\n if (onPushMessageCallbacks.indexOf(fn) === -1) {\r\n onPushMessageCallbacks.push(fn);\r\n }\r\n};\r\n\r\nconst offPushMessage = (fn) => {\r\n if (!fn) {\r\n onPushMessageCallbacks.length = 0;\r\n } else {\r\n const index = onPushMessageCallbacks.indexOf(fn);\r\n if (index > -1) {\r\n onPushMessageCallbacks.splice(index, 1);\r\n }\r\n }\r\n};\r\n\r\nvar api = /*#__PURE__*/Object.freeze({\r\n __proto__: null,\r\n getPushClientId: getPushClientId,\r\n onPushMessage: onPushMessage,\r\n offPushMessage: offPushMessage,\r\n invokePushCallback: invokePushCallback\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 const oldTriggerEvent = mpInstance.triggerEvent;\r\n const newTriggerEvent = function (event, ...args) {\r\n return oldTriggerEvent.apply(mpInstance, [customize(event), ...args])\r\n };\r\n try {\r\n // 京东小程序 triggerEvent 为只读\r\n mpInstance.triggerEvent = newTriggerEvent;\r\n } catch (error) {\r\n mpInstance._triggerEvent = newTriggerEvent;\r\n }\r\n}\r\n\r\nfunction initHook (name, options, isComponent) {\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\nif (!MPPage.__$wrappered) {\r\n MPPage.__$wrappered = true;\r\n Page = function (options = {}) {\r\n initHook('onLoad', options);\r\n return MPPage(options)\r\n };\r\n Page.after = MPPage.after;\r\n\r\n Component = function (options = {}) {\r\n initHook('created', options);\r\n return MPComponent(options)\r\n };\r\n}\r\n\r\nconst PAGE_EVENT_HOOKS = [\r\n 'onPullDownRefresh',\r\n 'onReachBottom',\r\n 'onAddToFavorites',\r\n 'onShareTimeline',\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 } else {\r\n VueComponent = Vue.extend(vueOptions);\r\n }\r\n vueOptions = VueComponent.options;\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 = '', options) {\r\n const properties = {};\r\n if (!isBehavior) {\r\n properties.vueId = {\r\n type: String,\r\n value: ''\r\n };\r\n {\r\n if ( options.virtualHost) {\r\n properties.virtualHostStyle = {\r\n type: null,\r\n value: ''\r\n };\r\n properties.virtualHostClass = {\r\n type: null,\r\n value: ''\r\n };\r\n }\r\n }\r\n // scopedSlotsCompiler auto\r\n properties.scopedSlotsCompiler = {\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')) {\r\n event.detail = {};\r\n }\r\n\r\n if (hasOwn(event, 'markerId')) {\r\n event.detail = typeof event.detail === 'object' ? event.detail : {};\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 let vFor;\r\n if (Number.isInteger(dataPath)) {\r\n vFor = dataPath;\r\n } else if (!dataPath) {\r\n vFor = context;\r\n } else if (typeof dataPath === 'string' && dataPath) {\r\n if (dataPath.indexOf('#s#') === 0) {\r\n vFor = dataPath.substr(3);\r\n } else {\r\n vFor = vm.__get_value(dataPath, context);\r\n }\r\n }\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 === 'arguments') {\r\n if (event.detail && event.detail.__args__) {\r\n extraObj['$' + index] = event.detail.__args__;\r\n } else {\r\n extraObj['$' + index] = [event];\r\n }\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 getContextVm (vm) {\r\n let $parent = vm.$parent;\r\n // 父组件是 scoped slots 或者其他自定义组件时继续查找\r\n while ($parent && $parent.$parent && ($parent.$options.generic || $parent.$parent.$options.generic || $parent.$scope._$vuePid)) {\r\n $parent = $parent.$parent;\r\n }\r\n return $parent && $parent.$parent\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 (handlerCtx.$options.generic) { // mp-weixin,mp-toutiao 抽象节点模拟 scoped slots\r\n handlerCtx = getContextVm(handlerCtx) || handlerCtx;\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 const type = this.$vm.mpType === 'page' ? 'Page' : 'Component';\r\n const path = this.route || this.is;\r\n throw new Error(`${type} \"${path}\" does not have a method \"${methodName}\"`)\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 let params = 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 params = Array.isArray(params) ? params : [];\r\n // 参数尾部增加原始事件对象用于复杂表达式内获取额外数据\r\n if (/=\\s*\\S+\\.eventParams\\s*\\|\\|\\s*\\S+\\[['\"]event-params['\"]\\]/.test(handler.toString())) {\r\n // eslint-disable-next-line no-sparse-arrays\r\n params = params.concat([, , , , , , , , , , event]);\r\n }\r\n ret.push(handler.apply(handlerCtx, params));\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 eventChannels = {};\r\n\r\nconst eventChannelStack = [];\r\n\r\nfunction getEventChannel (id) {\r\n if (id) {\r\n const eventChannel = eventChannels[id];\r\n delete eventChannels[id];\r\n return eventChannel\r\n }\r\n return eventChannelStack.shift()\r\n}\r\n\r\nconst hooks = [\r\n 'onShow',\r\n 'onHide',\r\n 'onError',\r\n 'onPageNotFound',\r\n 'onThemeChange',\r\n 'onUnhandledRejection'\r\n];\r\n\r\nfunction initEventChannel () {\r\n Vue.prototype.getOpenerEventChannel = function () {\r\n // 微信小程序使用自身getOpenerEventChannel\r\n {\r\n return this.$scope.getOpenerEventChannel()\r\n }\r\n };\r\n const callHook = Vue.prototype.__call_hook;\r\n Vue.prototype.__call_hook = function (hook, args) {\r\n if (hook === 'onLoad' && args && args.__id__) {\r\n this.__eventChannel__ = getEventChannel(args.__id__);\r\n delete args.__id__;\r\n }\r\n return callHook.call(this, hook, args)\r\n };\r\n}\r\n\r\nfunction initScopedSlotsParams () {\r\n const center = {};\r\n const parents = {};\r\n\r\n Vue.prototype.$hasScopedSlotsParams = function (vueId) {\r\n const has = center[vueId];\r\n if (!has) {\r\n parents[vueId] = this;\r\n this.$on('hook:destroyed', () => {\r\n delete parents[vueId];\r\n });\r\n }\r\n return has\r\n };\r\n\r\n Vue.prototype.$getScopedSlotsParams = function (vueId, name, key) {\r\n const data = center[vueId];\r\n if (data) {\r\n const object = data[name] || {};\r\n return key ? object[key] : object\r\n } else {\r\n parents[vueId] = this;\r\n this.$on('hook:destroyed', () => {\r\n delete parents[vueId];\r\n });\r\n }\r\n };\r\n\r\n Vue.prototype.$setScopedSlotsParams = function (name, value) {\r\n const vueIds = this.$options.propsData.vueId;\r\n if (vueIds) {\r\n const vueId = vueIds.split(',')[0];\r\n const object = center[vueId] = center[vueId] || {};\r\n object[name] = value;\r\n if (parents[vueId]) {\r\n parents[vueId].$forceUpdate();\r\n }\r\n }\r\n };\r\n\r\n Vue.mixin({\r\n destroyed () {\r\n const propsData = this.$options.propsData;\r\n const vueId = propsData && propsData.vueId;\r\n if (vueId) {\r\n delete center[vueId];\r\n delete parents[vueId];\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction parseBaseApp (vm, {\r\n mocks,\r\n initRefs\r\n}) {\r\n initEventChannel();\r\n {\r\n initScopedSlotsParams();\r\n }\r\n if (vm.$options.store) {\r\n Vue.prototype.$store = vm.$options.store;\r\n }\r\n uniIdMixin(Vue);\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 if (this.mpType === 'page' && typeof getApp === 'function') { // hack vue-i18n\r\n const app = getApp();\r\n if (app.$vm && app.$vm.$i18n) {\r\n this._i18n = app.$vm.$i18n;\r\n }\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 && !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 initAppLocale(Vue, vm, normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN);\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 selectAllComponents (mpInstance, selector, $refs) {\r\n const components = mpInstance.selectAllComponents(selector);\r\n components.forEach(component => {\r\n const ref = component.dataset.ref;\r\n $refs[ref] = component.$vm || component;\r\n {\r\n if (component.dataset.vueGeneric === 'scoped') {\r\n component.selectAllComponents('.scoped-ref').forEach(scopedComponent => {\r\n selectAllComponents(scopedComponent, selector, $refs);\r\n });\r\n }\r\n }\r\n });\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 selectAllComponents(mpInstance, '.vue-ref', $refs);\r\n // TODO 暂不考虑 for 中的 scoped\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\nconst encodeReserveRE = /[!'()*]/g;\r\nconst encodeReserveReplacer = c => '%' + c.charCodeAt(0).toString(16);\r\nconst commaRE = /%2C/g;\r\n\r\n// fixed encodeURIComponent which is more conformant to RFC3986:\r\n// - escapes [!'()*]\r\n// - preserve commas\r\nconst encode = str => encodeURIComponent(str)\r\n .replace(encodeReserveRE, encodeReserveReplacer)\r\n .replace(commaRE, ',');\r\n\r\nfunction stringifyQuery (obj, encodeStr = encode) {\r\n const res = obj ? Object.keys(obj).map(key => {\r\n const val = obj[key];\r\n\r\n if (val === undefined) {\r\n return ''\r\n }\r\n\r\n if (val === null) {\r\n return encodeStr(key)\r\n }\r\n\r\n if (Array.isArray(val)) {\r\n const result = [];\r\n val.forEach(val2 => {\r\n if (val2 === undefined) {\r\n return\r\n }\r\n if (val2 === null) {\r\n result.push(encodeStr(key));\r\n } else {\r\n result.push(encodeStr(key) + '=' + encodeStr(val2));\r\n }\r\n });\r\n return result.join('&')\r\n }\r\n\r\n return encodeStr(key) + '=' + encodeStr(val)\r\n }).filter(x => x.length > 0).join('&') : null;\r\n return res ? `?${res}` : ''\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, options),\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 // externalClasses\r\n if (vueOptions.externalClasses) {\r\n componentOptions.externalClasses = vueOptions.externalClasses;\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 (query) {\r\n this.options = query;\r\n const copyQuery = Object.assign({}, query);\r\n delete copyQuery.__id__;\r\n this.$page = {\r\n fullPath: '/' + (this.route || this.is) + stringifyQuery(copyQuery)\r\n };\r\n this.$vm.$mp.query = query; // 兼容 mpvue\r\n this.$vm.__call_hook('onLoad', query);\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\nfunction createSubpackageApp (vm) {\r\n const appOptions = parseApp(vm);\r\n const app = getApp({\r\n allowDefault: true\r\n });\r\n vm.$scope = app;\r\n const globalData = app.globalData;\r\n if (globalData) {\r\n Object.keys(appOptions.globalData).forEach(name => {\r\n if (!hasOwn(globalData, name)) {\r\n globalData[name] = appOptions.globalData[name];\r\n }\r\n });\r\n }\r\n Object.keys(appOptions).forEach(name => {\r\n if (!hasOwn(app, name)) {\r\n app[name] = appOptions[name];\r\n }\r\n });\r\n if (isFn(appOptions.onShow) && wx.onAppShow) {\r\n wx.onAppShow((...args) => {\r\n vm.__call_hook('onShow', args);\r\n });\r\n }\r\n if (isFn(appOptions.onHide) && wx.onAppHide) {\r\n wx.onAppHide((...args) => {\r\n vm.__call_hook('onHide', args);\r\n });\r\n }\r\n if (isFn(appOptions.onLaunch)) {\r\n const args = wx.getLaunchOptionsSync && wx.getLaunchOptionsSync();\r\n vm.__call_hook('onLaunch', args);\r\n }\r\n return vm\r\n}\r\n\r\nfunction createPlugin (vm) {\r\n const appOptions = parseApp(vm);\r\n if (isFn(appOptions.onShow) && wx.onAppShow) {\r\n wx.onAppShow((...args) => {\r\n vm.__call_hook('onShow', args);\r\n });\r\n }\r\n if (isFn(appOptions.onHide) && wx.onAppHide) {\r\n wx.onAppHide((...args) => {\r\n vm.__call_hook('onHide', args);\r\n });\r\n }\r\n if (isFn(appOptions.onLaunch)) {\r\n const args = wx.getLaunchOptionsSync && wx.getLaunchOptionsSync();\r\n vm.__call_hook('onLaunch', args);\r\n }\r\n return vm\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 (hasOwn(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\nwx.createSubpackageApp = createSubpackageApp;\r\nwx.createPlugin = createPlugin;\r\n\r\nvar uni$1 = uni;\r\n\r\nexport default uni$1;\r\nexport { createApp, createComponent, createPage, createPlugin, createSubpackageApp };\r\n","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","/* 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","import store from \"../store.js\"\r\nimport request from './request.js'\r\nimport alert from './alert.js'\r\n\r\nconst login = {\r\n\tcheckAuth(callback) {\r\n\t\tconsole.log(1);\r\n\t\tif (this.getLocalUserInfo()) {\r\n\t\t\tconsole.log(2);\r\n\t\t\tcallback(true)\r\n\t\t} else {\r\n\t\t\tconsole.log(3);\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.log('未获取到用户本地数据,去获取授权设置', 22222222)\r\n\t\t\tthis.askLogin()\r\n\t\t}\r\n\t},\r\n\r\n\tgetLocalUserInfo() {\r\n\t\tconst user = uni.getStorageSync(\"token\");\r\n\t\tconsole.log('从本地存储中获取用户数据', user, 11111111);\r\n\t\tif (!user) return false;\r\n\t\tif (!user.token) return false;\r\n\t\tstore.commit('saveToken', user);\r\n\t\treturn true\r\n\t},\r\n\r\n\tnoCase() {\r\n\t\talert.showError('案件不存在');\r\n\t\tsetTimeout(() => {\r\n\t\t\tuni.switchTab({\r\n\t\t\t\turl: '/pages/case/caseList/caseList'\r\n\t\t\t});\r\n\t\t}, 1500);\r\n\t},\r\n\r\n\taskLogin() {\r\n\t\tuni.showModal({\r\n\t\t\ttitle: '尚未登录',\r\n\t\t\tcontent: '前往授权登录页面吗?',\r\n\t\t\tsuccess(res) {\r\n\t\t\t\tconsole.log(res)\r\n\t\t\t\tif (res.confirm) {\r\n\t\t\t\t\tuni.navigateTo({\r\n\t\t\t\t\t\turl: '/pages/login/login'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t},\r\n\r\n\tgetUserProfile(data) {\r\n\t\tconst that = this;\r\n\t\t// console.log(data);\r\n\t\twx.getUserProfile({\r\n\t\t\tlang: 'zh_CN',\r\n\t\t\tdesc: '用于完善会员资料',\r\n\t\t success (res) {\r\n\t\t\t\tthat.login(data,res)\r\n\t\t },\r\n\t\t\tfail (e) {\r\n\t\t\t\tconsole.error('获取用户身份信息失败了', e);\r\n\t\t\t\talert.showError('获取失败')\r\n\t\t\t}\r\n\t\t})\r\n\t},\r\n\r\n\tlogin(data,userInfo) {\r\n\t\tconst that = this;\r\n\t\tuni.showLoading({\r\n\t\t\ttitle: '登录中',\r\n\t\t});\r\n\t\t\r\n\t\tconsole.log(userInfo, 1111)\r\n\r\n\t\twx.login({\r\n\t\t\tsuccess: res => {\r\n\t\t\t\tconsole.log(res, '----------- login获取的 -----------')\r\n\t\t\t\tconst code = res.code;\r\n\t\t\t\trequest.post('/login', {\r\n\t\t\t\t\tcode,\r\n\t\t\t\t\tencryptedData: userInfo.encryptedData,\r\n\t\t\t\t\tiv: userInfo.iv\r\n\t\t\t\t}, function(data, res) {\r\n\t\t\t\t\t\r\n\t\t\t\t\tconsole.log(data, res ,'----------后端传回来的----------')\r\n\t\t\t\t\treturn\r\n\t\t\t\t\tconst user = {\r\n\t\t\t\t\t\ttoken: data.token,\r\n\t\t\t\t\t\twho: data.lawyerInfo.who,\r\n\t\t\t\t\t\texpires_at: data.expires_at,\r\n\t\t\t\t\t\tlawyerInfo: data.lawyerInfo,\r\n\t\t\t\t\t\tclientInfo: data.clientInfo,\r\n\t\t\t\t\t\tinfo: res.userInfo,\r\n\t\t\t\t\t\tlogin_type: 0\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tstore.commit('saveUser', user)\r\n\t\t\t\t\tuni.setStorageSync('user', user);\r\n\t\t\t\t\t\r\n\t\t\t\t\tuni.hideLoading();\r\n\r\n\t\t\t\t\tif (store.state.path) {\r\n\t\t\t\t\t\tlet path = store.state.path;\r\n\t\t\t\t\t\tconsole.log(path.startsWith('/'))\r\n\t\t\t\t\t\t// 判断是否path前面有/\r\n\t\t\t\t\t\tif (!path.startsWith('/')) {\r\n\t\t\t\t\t\t\tpath = '/' + path\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tuni.reLaunch({\r\n\t\t\t\t\t\t\turl: path,\r\n\t\t\t\t\t\t\tsuccess: function(res) {\r\n\t\t\t\t\t\t\t\tconsole.log(res)\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tfail: function(res) {\r\n\t\t\t\t\t\t\t\tconsole.log(res)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\tfail: err => {\r\n\t\t\t\tconsole.error(err, 8877897)\r\n\t\t\t}\r\n\t\t})\r\n\t},\r\n\r\n\tlogout() {\r\n\t\tstore.state.user = {\r\n\t\t\tuser: null,\r\n\t\t\tpath: '/pages/login/login'\r\n\t\t}\r\n\t\tstore.commit('saveToken', null)\r\n\t\t// uni.setStorageSync(\"token\",null);\r\n\t\tuni.clearStorage();\r\n\t\tuni.reLaunch({\r\n\t\t\turl: '/pages/login/login'\r\n\t\t})\r\n\t\t\t\r\n\t\tconsole.log('退出登录。。。', this.user)\r\n\t},\r\n\r\n\r\n\r\n}\r\n\r\nexport default login\r\n","import Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nVue.use(Vuex)\r\n\r\nconst store = new Vuex.Store({\r\n\tstate: {\r\n\t\ttoken: null,\r\n\t\tpath: '/pages/index/index',\r\n\t\tpeople: {\r\n\t\t\tid: null,\r\n\t\t\tname: null,\r\n\t\t\ttag: null\r\n\t\t},\r\n\t\ttaskType:'',\r\n\t},\r\n\tmutations: {\r\n\t\tsavePath (state, path) {\r\n\t\t\tstate.path = path;\r\n\t\t},\r\n\t\tsaveToken (state, token) {\r\n\t\t\tstate.token = token\r\n\t\t},\r\n\t\tsavePeople (state, people){\r\n\t\t\tstate.people = people\r\n\t\t},\r\n\t\tsaveTaskType (state, taskType){\r\n\t\t\tstate.taskType = taskType\r\n\t\t},\r\n\t},\r\n\tactions: {},\r\n})\r\nexport default store\r\n","import{initVueI18n as e}from\"@dcloudio/uni-i18n\";import t from\"@/pages.json\";\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self&&self;function n(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}function s(e,t,n){return e(n={path:t,exports:{},require:function(e,t){return function(){throw new Error(\"Dynamic requires are not currently supported by @rollup/plugin-commonjs\")}(null==t&&n.path)}},n.exports),n.exports}var o=s((function(e,t){var n;e.exports=(n=n||function(e,t){var n=Object.create||function(){function e(){}return function(t){var n;return e.prototype=t,n=new e,e.prototype=null,n}}(),s={},o=s.lib={},r=o.Base={extend:function(e){var t=n(this);return e&&t.mixIn(e),t.hasOwnProperty(\"init\")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty(\"toString\")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},i=o.WordArray=r.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=n!=t?n:4*e.length},toString:function(e){return(e||c).stringify(this)},concat:function(e){var t=this.words,n=e.words,s=this.sigBytes,o=e.sigBytes;if(this.clamp(),s%4)for(var r=0;r<o;r++){var i=n[r>>>2]>>>24-r%4*8&255;t[s+r>>>2]|=i<<24-(s+r)%4*8}else for(r=0;r<o;r+=4)t[s+r>>>2]=n[r>>>2];return this.sigBytes+=o,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=r.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n,s=[],o=function(t){t=t;var n=987654321,s=4294967295;return function(){var o=((n=36969*(65535&n)+(n>>16)&s)<<16)+(t=18e3*(65535&t)+(t>>16)&s)&s;return o/=4294967296,(o+=.5)*(e.random()>.5?1:-1)}},r=0;r<t;r+=4){var a=o(4294967296*(n||e.random()));n=987654071*a(),s.push(4294967296*a()|0)}return new i.init(s,t)}}),a=s.enc={},c=a.Hex={stringify:function(e){for(var t=e.words,n=e.sigBytes,s=[],o=0;o<n;o++){var r=t[o>>>2]>>>24-o%4*8&255;s.push((r>>>4).toString(16)),s.push((15&r).toString(16))}return s.join(\"\")},parse:function(e){for(var t=e.length,n=[],s=0;s<t;s+=2)n[s>>>3]|=parseInt(e.substr(s,2),16)<<24-s%8*4;return new i.init(n,t/2)}},u=a.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,s=[],o=0;o<n;o++){var r=t[o>>>2]>>>24-o%4*8&255;s.push(String.fromCharCode(r))}return s.join(\"\")},parse:function(e){for(var t=e.length,n=[],s=0;s<t;s++)n[s>>>2]|=(255&e.charCodeAt(s))<<24-s%4*8;return new i.init(n,t)}},l=a.Utf8={stringify:function(e){try{return decodeURIComponent(escape(u.stringify(e)))}catch(e){throw new Error(\"Malformed UTF-8 data\")}},parse:function(e){return u.parse(unescape(encodeURIComponent(e)))}},h=o.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=new i.init,this._nDataBytes=0},_append:function(e){\"string\"==typeof e&&(e=l.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,s=n.words,o=n.sigBytes,r=this.blockSize,a=o/(4*r),c=(a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0))*r,u=e.min(4*c,o);if(c){for(var l=0;l<c;l+=r)this._doProcessBlock(s,l);var h=s.splice(0,c);n.sigBytes-=u}return new i.init(h,u)},clone:function(){var e=r.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0});o.Hasher=h.extend({cfg:r.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){h.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function(e){return function(t,n){return new e.init(n).finalize(t)}},_createHmacHelper:function(e){return function(t,n){return new d.HMAC.init(e,n).finalize(t)}}});var d=s.algo={};return s}(Math),n)})),r=(s((function(e,t){var n;e.exports=(n=o,function(e){var t=n,s=t.lib,o=s.WordArray,r=s.Hasher,i=t.algo,a=[];!function(){for(var t=0;t<64;t++)a[t]=4294967296*e.abs(e.sin(t+1))|0}();var c=i.MD5=r.extend({_doReset:function(){this._hash=new o.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var n=0;n<16;n++){var s=t+n,o=e[s];e[s]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}var r=this._hash.words,i=e[t+0],c=e[t+1],f=e[t+2],g=e[t+3],p=e[t+4],m=e[t+5],y=e[t+6],_=e[t+7],w=e[t+8],k=e[t+9],T=e[t+10],S=e[t+11],v=e[t+12],A=e[t+13],P=e[t+14],I=e[t+15],b=r[0],O=r[1],C=r[2],E=r[3];b=u(b,O,C,E,i,7,a[0]),E=u(E,b,O,C,c,12,a[1]),C=u(C,E,b,O,f,17,a[2]),O=u(O,C,E,b,g,22,a[3]),b=u(b,O,C,E,p,7,a[4]),E=u(E,b,O,C,m,12,a[5]),C=u(C,E,b,O,y,17,a[6]),O=u(O,C,E,b,_,22,a[7]),b=u(b,O,C,E,w,7,a[8]),E=u(E,b,O,C,k,12,a[9]),C=u(C,E,b,O,T,17,a[10]),O=u(O,C,E,b,S,22,a[11]),b=u(b,O,C,E,v,7,a[12]),E=u(E,b,O,C,A,12,a[13]),C=u(C,E,b,O,P,17,a[14]),b=l(b,O=u(O,C,E,b,I,22,a[15]),C,E,c,5,a[16]),E=l(E,b,O,C,y,9,a[17]),C=l(C,E,b,O,S,14,a[18]),O=l(O,C,E,b,i,20,a[19]),b=l(b,O,C,E,m,5,a[20]),E=l(E,b,O,C,T,9,a[21]),C=l(C,E,b,O,I,14,a[22]),O=l(O,C,E,b,p,20,a[23]),b=l(b,O,C,E,k,5,a[24]),E=l(E,b,O,C,P,9,a[25]),C=l(C,E,b,O,g,14,a[26]),O=l(O,C,E,b,w,20,a[27]),b=l(b,O,C,E,A,5,a[28]),E=l(E,b,O,C,f,9,a[29]),C=l(C,E,b,O,_,14,a[30]),b=h(b,O=l(O,C,E,b,v,20,a[31]),C,E,m,4,a[32]),E=h(E,b,O,C,w,11,a[33]),C=h(C,E,b,O,S,16,a[34]),O=h(O,C,E,b,P,23,a[35]),b=h(b,O,C,E,c,4,a[36]),E=h(E,b,O,C,p,11,a[37]),C=h(C,E,b,O,_,16,a[38]),O=h(O,C,E,b,T,23,a[39]),b=h(b,O,C,E,A,4,a[40]),E=h(E,b,O,C,i,11,a[41]),C=h(C,E,b,O,g,16,a[42]),O=h(O,C,E,b,y,23,a[43]),b=h(b,O,C,E,k,4,a[44]),E=h(E,b,O,C,v,11,a[45]),C=h(C,E,b,O,I,16,a[46]),b=d(b,O=h(O,C,E,b,f,23,a[47]),C,E,i,6,a[48]),E=d(E,b,O,C,_,10,a[49]),C=d(C,E,b,O,P,15,a[50]),O=d(O,C,E,b,m,21,a[51]),b=d(b,O,C,E,v,6,a[52]),E=d(E,b,O,C,g,10,a[53]),C=d(C,E,b,O,T,15,a[54]),O=d(O,C,E,b,c,21,a[55]),b=d(b,O,C,E,w,6,a[56]),E=d(E,b,O,C,I,10,a[57]),C=d(C,E,b,O,y,15,a[58]),O=d(O,C,E,b,A,21,a[59]),b=d(b,O,C,E,p,6,a[60]),E=d(E,b,O,C,S,10,a[61]),C=d(C,E,b,O,f,15,a[62]),O=d(O,C,E,b,k,21,a[63]),r[0]=r[0]+b|0,r[1]=r[1]+O|0,r[2]=r[2]+C|0,r[3]=r[3]+E|0},_doFinalize:function(){var t=this._data,n=t.words,s=8*this._nDataBytes,o=8*t.sigBytes;n[o>>>5]|=128<<24-o%32;var r=e.floor(s/4294967296),i=s;n[15+(o+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),n[14+(o+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t.sigBytes=4*(n.length+1),this._process();for(var a=this._hash,c=a.words,u=0;u<4;u++){var l=c[u];c[u]=16711935&(l<<8|l>>>24)|4278255360&(l<<24|l>>>8)}return a},clone:function(){var e=r.clone.call(this);return e._hash=this._hash.clone(),e}});function u(e,t,n,s,o,r,i){var a=e+(t&n|~t&s)+o+i;return(a<<r|a>>>32-r)+t}function l(e,t,n,s,o,r,i){var a=e+(t&s|n&~s)+o+i;return(a<<r|a>>>32-r)+t}function h(e,t,n,s,o,r,i){var a=e+(t^n^s)+o+i;return(a<<r|a>>>32-r)+t}function d(e,t,n,s,o,r,i){var a=e+(n^(t|~s))+o+i;return(a<<r|a>>>32-r)+t}t.MD5=r._createHelper(c),t.HmacMD5=r._createHmacHelper(c)}(Math),n.MD5)})),s((function(e,t){var n,s,r;e.exports=(s=(n=o).lib.Base,r=n.enc.Utf8,void(n.algo.HMAC=s.extend({init:function(e,t){e=this._hasher=new e.init,\"string\"==typeof t&&(t=r.parse(t));var n=e.blockSize,s=4*n;t.sigBytes>s&&(t=e.finalize(t)),t.clamp();for(var o=this._oKey=t.clone(),i=this._iKey=t.clone(),a=o.words,c=i.words,u=0;u<n;u++)a[u]^=1549556828,c[u]^=909522486;o.sigBytes=i.sigBytes=s,this.reset()},reset:function(){var e=this._hasher;e.reset(),e.update(this._iKey)},update:function(e){return this._hasher.update(e),this},finalize:function(e){var t=this._hasher,n=t.finalize(e);return t.reset(),t.finalize(this._oKey.clone().concat(n))}})))})),s((function(e,t){e.exports=o.HmacMD5})));const i=\"FUNCTION\",a=\"OBJECT\",c=\"CLIENT_DB\";function u(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}function l(e){return\"object\"===u(e)}function h(e){return e&&\"string\"==typeof e?JSON.parse(e):e}const d=\"development\"===process.env.NODE_ENV,f=process.env.VUE_APP_PLATFORM;let g;switch(f){case\"h5\":g=\"web\";break;case\"app-plus\":g=\"app\";break;default:g=f}const p=h(process.env.UNICLOUD_DEBUG),m=h(process.env.UNI_CLOUD_PROVIDER),y=process.env.RUN_BY_HBUILDERX;let _=\"\";try{{const e=require(\"uni-stat-config\").default||require(\"uni-stat-config\");_=e.appid}}catch(e){}let w={};function k(e,t={}){var n,s;return n=w,s=e,Object.prototype.hasOwnProperty.call(n,s)||(w[e]=t),w[e]}\"app\"===g&&(w=uni._globalUniCloudObj?uni._globalUniCloudObj:uni._globalUniCloudObj={});const T=[\"invoke\",\"success\",\"fail\",\"complete\"],S=k(\"_globalUniCloudInterceptor\");function v(e,t){S[e]||(S[e]={}),l(t)&&Object.keys(t).forEach((n=>{T.indexOf(n)>-1&&function(e,t,n){let s=S[e][t];s||(s=S[e][t]=[]),-1===s.indexOf(n)&&\"function\"==typeof n&&s.push(n)}(e,n,t[n])}))}function A(e,t){S[e]||(S[e]={}),l(t)?Object.keys(t).forEach((n=>{T.indexOf(n)>-1&&function(e,t,n){const s=S[e][t];if(!s)return;const o=s.indexOf(n);o>-1&&s.splice(o,1)}(e,n,t[n])})):delete S[e]}function P(e,t){return e&&0!==e.length?e.reduce(((e,n)=>e.then((()=>n(t)))),Promise.resolve()):Promise.resolve()}function I(e,t){return S[e]&&S[e][t]||[]}const b=k(\"_globalUniCloudListener\"),O=\"response\",C=\"needLogin\",E=\"refreshToken\",R=\"clientdb\",U=\"cloudfunction\",x=\"cloudobject\";function L(e){return b[e]||(b[e]=[]),b[e]}function D(e,t){const n=L(e);n.includes(t)||n.push(t)}function q(e,t){const n=L(e),s=n.indexOf(t);-1!==s&&n.splice(s,1)}function N(e,t){const n=L(e);for(let e=0;e<n.length;e++){(0,n[e])(t)}}function F(e,t){return t?function(n){let s=!1;if(\"callFunction\"===t){const e=n&&n.type||i;s=e!==i}const o=\"callFunction\"===t&&!s;let r;r=this.isReady?Promise.resolve():this.initUniCloud,n=n||{};const a=r.then((()=>s?Promise.resolve():P(I(t,\"invoke\"),n))).then((()=>e.call(this,n))).then((e=>s?Promise.resolve(e):P(I(t,\"success\"),e).then((()=>P(I(t,\"complete\"),e))).then((()=>(o&&N(O,{type:U,content:e}),Promise.resolve(e))))),(e=>s?Promise.reject(e):P(I(t,\"fail\"),e).then((()=>P(I(t,\"complete\"),e))).then((()=>(N(O,{type:U,content:e}),Promise.reject(e))))));if(!(n.success||n.fail||n.complete))return a;a.then((e=>{n.success&&n.success(e),n.complete&&n.complete(e),o&&N(O,{type:U,content:e})}),(e=>{n.fail&&n.fail(e),n.complete&&n.complete(e),o&&N(O,{type:U,content:e})}))}:function(t){if(!((t=t||{}).success||t.fail||t.complete))return e.call(this,t);e.call(this,t).then((e=>{t.success&&t.success(e),t.complete&&t.complete(e)}),(e=>{t.fail&&t.fail(e),t.complete&&t.complete(e)}))}}class M extends Error{constructor(e){super(e.message),this.errMsg=e.message||\"\",this.errCode=this.code=e.code||\"SYSTEM_ERROR\",this.requestId=e.requestId}}function $(){let e,t;try{if(uni.getLaunchOptionsSync){if(uni.getLaunchOptionsSync.toString().indexOf(\"not yet implemented\")>-1)return;const{scene:n,channel:s}=uni.getLaunchOptionsSync();e=s,t=n}}catch(e){}return{channel:e,scene:t}}let j;function K(){const e=uni.getLocale&&uni.getLocale()||\"en\";if(j)return{...j,locale:e,LOCALE:e};const t=uni.getSystemInfoSync(),{deviceId:n,osName:s,uniPlatform:o,appId:r}=t,i=[\"pixelRatio\",\"brand\",\"model\",\"system\",\"language\",\"version\",\"platform\",\"host\",\"SDKVersion\",\"swanNativeVersion\",\"app\",\"AppPlatform\",\"fontSizeSetting\"];for(let e=0;e<i.length;e++){delete t[i[e]]}return j={PLATFORM:o,OS:s,APPID:r,DEVICEID:n,...$(),...t},{...j,locale:e,LOCALE:e}}var B={sign:function(e,t){let n=\"\";return Object.keys(e).sort().forEach((function(t){e[t]&&(n=n+\"&\"+t+\"=\"+e[t])})),n=n.slice(1),r(n,t).toString()},wrappedRequest:function(e,t){return new Promise(((n,s)=>{t(Object.assign(e,{complete(e){e||(e={}),d&&\"web\"===g&&e.errMsg&&0===e.errMsg.indexOf(\"request:fail\")&&console.warn(\"发布H5,需要在uniCloud后台操作,绑定安全域名,否则会因为跨域问题而无法访问。教程参考:https://uniapp.dcloud.io/uniCloud/quickstart?id=useinh5\");const t=e.data&&e.data.header&&e.data.header[\"x-serverless-request-id\"]||e.header&&e.header[\"request-id\"];if(!e.statusCode||e.statusCode>=400)return s(new M({code:\"SYS_ERR\",message:e.errMsg||\"request:fail\",requestId:t}));const o=e.data;if(o.error)return s(new M({code:o.error.code,message:o.error.message,requestId:t}));o.result=o.data,o.requestId=t,delete o.data,n(o)}}))}))}};var H={request:e=>uni.request(e),uploadFile:e=>uni.uploadFile(e),setStorageSync:(e,t)=>uni.setStorageSync(e,t),getStorageSync:e=>uni.getStorageSync(e),removeStorageSync:e=>uni.removeStorageSync(e),clearStorageSync:()=>uni.clearStorageSync()},W={\"uniCloud.init.paramRequired\":\"{param} required\",\"uniCloud.uploadFile.fileError\":\"filePath should be instance of File\"};const{t:z}=e({\"zh-Hans\":{\"uniCloud.init.paramRequired\":\"缺少参数:{param}\",\"uniCloud.uploadFile.fileError\":\"filePath应为File对象\"},\"zh-Hant\":{\"uniCloud.init.paramRequired\":\"缺少参数:{param}\",\"uniCloud.uploadFile.fileError\":\"filePath应为File对象\"},en:W,fr:{\"uniCloud.init.paramRequired\":\"{param} required\",\"uniCloud.uploadFile.fileError\":\"filePath should be instance of File\"},es:{\"uniCloud.init.paramRequired\":\"{param} required\",\"uniCloud.uploadFile.fileError\":\"filePath should be instance of File\"},ja:W},\"zh-Hans\");var V=class{constructor(e){[\"spaceId\",\"clientSecret\"].forEach((t=>{if(!Object.prototype.hasOwnProperty.call(e,t))throw new Error(z(\"uniCloud.init.paramRequired\",{param:t}))})),this.config=Object.assign({},{endpoint:\"https://api.bspapp.com\"},e),this.config.provider=\"aliyun\",this.config.requestUrl=this.config.endpoint+\"/client\",this.config.envType=this.config.envType||\"public\",this.config.accessTokenKey=\"access_token_\"+this.config.spaceId,this.adapter=H,this._getAccessTokenPromise=null,this._getAccessTokenPromiseStatus=null}get hasAccessToken(){return!!this.accessToken}setAccessToken(e){this.accessToken=e}requestWrapped(e){return B.wrappedRequest(e,this.adapter.request)}requestAuth(e){return this.requestWrapped(e)}request(e,t){return Promise.resolve().then((()=>this.hasAccessToken?t?this.requestWrapped(e):this.requestWrapped(e).catch((t=>new Promise(((e,n)=>{!t||\"GATEWAY_INVALID_TOKEN\"!==t.code&&\"InvalidParameter.InvalidToken\"!==t.code?n(t):e()})).then((()=>this.getAccessToken())).then((()=>{const t=this.rebuildRequest(e);return this.request(t,!0)})))):this.getAccessToken().then((()=>{const t=this.rebuildRequest(e);return this.request(t,!0)}))))}rebuildRequest(e){const t=Object.assign({},e);return t.data.token=this.accessToken,t.header[\"x-basement-token\"]=this.accessToken,t.header[\"x-serverless-sign\"]=B.sign(t.data,this.config.clientSecret),t}setupRequest(e,t){const n=Object.assign({},e,{spaceId:this.config.spaceId,timestamp:Date.now()}),s={\"Content-Type\":\"application/json\"};return\"auth\"!==t&&(n.token=this.accessToken,s[\"x-basement-token\"]=this.accessToken),s[\"x-serverless-sign\"]=B.sign(n,this.config.clientSecret),{url:this.config.requestUrl,method:\"POST\",data:n,dataType:\"json\",header:s}}getAccessToken(){if(\"pending\"===this._getAccessTokenPromiseStatus)return this._getAccessTokenPromise;this._getAccessTokenPromiseStatus=\"pending\";return this._getAccessTokenPromise=this.requestAuth(this.setupRequest({method:\"serverless.auth.user.anonymousAuthorize\",params:\"{}\"},\"auth\")).then((e=>new Promise(((t,n)=>{e.result&&e.result.accessToken?(this.setAccessToken(e.result.accessToken),this._getAccessTokenPromiseStatus=\"fulfilled\",t(this.accessToken)):(this._getAccessTokenPromiseStatus=\"rejected\",n(new M({code:\"AUTH_FAILED\",message:\"获取accessToken失败\"})))}))),(e=>(this._getAccessTokenPromiseStatus=\"rejected\",Promise.reject(e)))),this._getAccessTokenPromise}authorize(){this.getAccessToken()}callFunction(e){const t={method:\"serverless.function.runtime.invoke\",params:JSON.stringify({functionTarget:e.name,functionArgs:e.data||{}})};return this.request(this.setupRequest(t))}getOSSUploadOptionsFromPath(e){const t={method:\"serverless.file.resource.generateProximalSign\",params:JSON.stringify(e)};return this.request(this.setupRequest(t))}uploadFileToOSS({url:e,formData:t,name:n,filePath:s,fileType:o,onUploadProgress:r}){return new Promise(((i,a)=>{const c=this.adapter.uploadFile({url:e,formData:t,name:n,filePath:s,fileType:o,header:{\"X-OSS-server-side-encrpytion\":\"AES256\"},success(e){e&&e.statusCode<400?i(e):a(new M({code:\"UPLOAD_FAILED\",message:\"文件上传失败\"}))},fail(e){a(new M({code:e.code||\"UPLOAD_FAILED\",message:e.message||e.errMsg||\"文件上传失败\"}))}});\"function\"==typeof r&&c&&\"function\"==typeof c.onProgressUpdate&&c.onProgressUpdate((e=>{r({loaded:e.totalBytesSent,total:e.totalBytesExpectedToSend})}))}))}reportOSSUpload(e){const t={method:\"serverless.file.resource.report\",params:JSON.stringify(e)};return this.request(this.setupRequest(t))}uploadFile({filePath:e,cloudPath:t,fileType:n=\"image\",onUploadProgress:s,config:o}){if(\"string\"!==u(t))throw new M({code:\"INVALID_PARAM\",message:\"cloudPath必须为字符串类型\"});if(!(t=t.trim()))throw new M({code:\"CLOUDPATH_REQUIRED\",message:\"cloudPath不可为空\"});if(/:\\/\\//.test(t))throw new M({code:\"INVALID_PARAM\",message:\"cloudPath不合法\"});const r=o&&o.envType||this.config.envType;let i,a;return this.getOSSUploadOptionsFromPath({env:r,filename:t}).then((t=>{const o=t.result;i=o.id,a=\"https://\"+o.cdnDomain+\"/\"+o.ossPath;const r={url:\"https://\"+o.host,formData:{\"Cache-Control\":\"max-age=2592000\",\"Content-Disposition\":\"attachment\",OSSAccessKeyId:o.accessKeyId,Signature:o.signature,host:o.host,id:i,key:o.ossPath,policy:o.policy,success_action_status:200},fileName:\"file\",name:\"file\",filePath:e,fileType:n};return this.uploadFileToOSS(Object.assign({},r,{onUploadProgress:s}))})).then((()=>this.reportOSSUpload({id:i}))).then((t=>new Promise(((n,s)=>{t.success?n({success:!0,filePath:e,fileID:a}):s(new M({code:\"UPLOAD_FAILED\",message:\"文件上传失败\"}))}))))}deleteFile({fileList:e}){const t={method:\"serverless.file.resource.delete\",params:JSON.stringify({id:e[0]})};return this.request(this.setupRequest(t))}getTempFileURL({fileList:e}={}){return new Promise(((t,n)=>{Array.isArray(e)&&0!==e.length||n(new M({code:\"INVALID_PARAM\",message:\"fileList的元素必须是非空的字符串\"})),t({fileList:e.map((e=>({fileID:e,tempFileURL:e})))})}))}};var J={init(e){const t=new V(e),n={signInAnonymously:function(){return t.authorize()},getLoginState:function(){return Promise.resolve(!1)}};return t.auth=function(){return n},t.customAuth=t.auth,t}};const Y=\"undefined\"!=typeof location&&\"http:\"===location.protocol?\"http:\":\"https:\";var X;!function(e){e.local=\"local\",e.none=\"none\",e.session=\"session\"}(X||(X={}));var G=function(){};const Q=()=>{let e;if(!Promise){e=()=>{},e.promise={};const t=()=>{throw new M({message:'Your Node runtime does support ES6 Promises. Set \"global.Promise\" to your preferred implementation of promises.'})};return Object.defineProperty(e.promise,\"then\",{get:t}),Object.defineProperty(e.promise,\"catch\",{get:t}),e}const t=new Promise(((t,n)=>{e=(e,s)=>e?n(e):t(s)}));return e.promise=t,e};function Z(e){return void 0===e}function ee(e){return\"[object Null]\"===Object.prototype.toString.call(e)}var te;function ne(e){const t=(n=e,\"[object Array]\"===Object.prototype.toString.call(n)?e:[e]);var n;for(const e of t){const{isMatch:t,genAdapter:n,runtime:s}=e;if(t())return{adapter:n(),runtime:s}}}!function(e){e.WEB=\"web\",e.WX_MP=\"wx_mp\"}(te||(te={}));const se={adapter:null,runtime:void 0},oe=[\"anonymousUuidKey\"];class re extends G{constructor(){super(),se.adapter.root.tcbObject||(se.adapter.root.tcbObject={})}setItem(e,t){se.adapter.root.tcbObject[e]=t}getItem(e){return se.adapter.root.tcbObject[e]}removeItem(e){delete se.adapter.root.tcbObject[e]}clear(){delete se.adapter.root.tcbObject}}function ie(e,t){switch(e){case\"local\":return t.localStorage||new re;case\"none\":return new re;default:return t.sessionStorage||new re}}class ae{constructor(e){if(!this._storage){this._persistence=se.adapter.primaryStorage||e.persistence,this._storage=ie(this._persistence,se.adapter);const t=`access_token_${e.env}`,n=`access_token_expire_${e.env}`,s=`refresh_token_${e.env}`,o=`anonymous_uuid_${e.env}`,r=`login_type_${e.env}`,i=`user_info_${e.env}`;this.keys={accessTokenKey:t,accessTokenExpireKey:n,refreshTokenKey:s,anonymousUuidKey:o,loginTypeKey:r,userInfoKey:i}}}updatePersistence(e){if(e===this._persistence)return;const t=\"local\"===this._persistence;this._persistence=e;const n=ie(e,se.adapter);for(const e in this.keys){const s=this.keys[e];if(t&&oe.includes(e))continue;const o=this._storage.getItem(s);Z(o)||ee(o)||(n.setItem(s,o),this._storage.removeItem(s))}this._storage=n}setStore(e,t,n){if(!this._storage)return;const s={version:n||\"localCachev1\",content:t},o=JSON.stringify(s);try{this._storage.setItem(e,o)}catch(e){throw e}}getStore(e,t){try{if(!this._storage)return}catch(e){return\"\"}t=t||\"localCachev1\";const n=this._storage.getItem(e);if(!n)return\"\";if(n.indexOf(t)>=0){return JSON.parse(n).content}return\"\"}removeStore(e){this._storage.removeItem(e)}}const ce={},ue={};function le(e){return ce[e]}class he{constructor(e,t){this.data=t||null,this.name=e}}class de extends he{constructor(e,t){super(\"error\",{error:e,data:t}),this.error=e}}const fe=new class{constructor(){this._listeners={}}on(e,t){return function(e,t,n){n[e]=n[e]||[],n[e].push(t)}(e,t,this._listeners),this}off(e,t){return function(e,t,n){if(n&&n[e]){const s=n[e].indexOf(t);-1!==s&&n[e].splice(s,1)}}(e,t,this._listeners),this}fire(e,t){if(e instanceof de)return console.error(e.error),this;const n=\"string\"==typeof e?new he(e,t||{}):e;const s=n.name;if(this._listens(s)){n.target=this;const e=this._listeners[s]?[...this._listeners[s]]:[];for(const t of e)t.call(this,n)}return this}_listens(e){return this._listeners[e]&&this._listeners[e].length>0}};function ge(e,t){fe.on(e,t)}function pe(e,t={}){fe.fire(e,t)}function me(e,t){fe.off(e,t)}const ye=\"loginStateChanged\",_e=\"loginStateExpire\",we=\"loginTypeChanged\",ke=\"anonymousConverted\",Te=\"refreshAccessToken\";var Se;!function(e){e.ANONYMOUS=\"ANONYMOUS\",e.WECHAT=\"WECHAT\",e.WECHAT_PUBLIC=\"WECHAT-PUBLIC\",e.WECHAT_OPEN=\"WECHAT-OPEN\",e.CUSTOM=\"CUSTOM\",e.EMAIL=\"EMAIL\",e.USERNAME=\"USERNAME\",e.NULL=\"NULL\"}(Se||(Se={}));const ve=[\"auth.getJwt\",\"auth.logout\",\"auth.signInWithTicket\",\"auth.signInAnonymously\",\"auth.signIn\",\"auth.fetchAccessTokenWithRefreshToken\",\"auth.signUpWithEmailAndPassword\",\"auth.activateEndUserMail\",\"auth.sendPasswordResetEmail\",\"auth.resetPasswordWithToken\",\"auth.isUsernameRegistered\"],Ae={\"X-SDK-Version\":\"1.3.5\"};function Pe(e,t,n){const s=e[t];e[t]=function(t){const o={},r={};n.forEach((n=>{const{data:s,headers:i}=n.call(e,t);Object.assign(o,s),Object.assign(r,i)}));const i=t.data;return i&&(()=>{var e;if(e=i,\"[object FormData]\"!==Object.prototype.toString.call(e))t.data={...i,...o};else for(const e in o)i.append(e,o[e])})(),t.headers={...t.headers||{},...r},s.call(e,t)}}function Ie(){const e=Math.random().toString(16).slice(2);return{data:{seqId:e},headers:{...Ae,\"x-seqid\":e}}}class be{constructor(e={}){var t;this.config=e,this._reqClass=new se.adapter.reqClass({timeout:this.config.timeout,timeoutMsg:`请求在${this.config.timeout/1e3}s内未完成,已中断`,restrictedMethods:[\"post\"]}),this._cache=le(this.config.env),this._localCache=(t=this.config.env,ue[t]),Pe(this._reqClass,\"post\",[Ie]),Pe(this._reqClass,\"upload\",[Ie]),Pe(this._reqClass,\"download\",[Ie])}async post(e){return await this._reqClass.post(e)}async upload(e){return await this._reqClass.upload(e)}async download(e){return await this._reqClass.download(e)}async refreshAccessToken(){let e,t;this._refreshAccessTokenPromise||(this._refreshAccessTokenPromise=this._refreshAccessToken());try{e=await this._refreshAccessTokenPromise}catch(e){t=e}if(this._refreshAccessTokenPromise=null,this._shouldRefreshAccessTokenHook=null,t)throw t;return e}async _refreshAccessToken(){const{accessTokenKey:e,accessTokenExpireKey:t,refreshTokenKey:n,loginTypeKey:s,anonymousUuidKey:o}=this._cache.keys;this._cache.removeStore(e),this._cache.removeStore(t);let r=this._cache.getStore(n);if(!r)throw new M({message:\"未登录CloudBase\"});const i={refresh_token:r},a=await this.request(\"auth.fetchAccessTokenWithRefreshToken\",i);if(a.data.code){const{code:e}=a.data;if(\"SIGN_PARAM_INVALID\"===e||\"REFRESH_TOKEN_EXPIRED\"===e||\"INVALID_REFRESH_TOKEN\"===e){if(this._cache.getStore(s)===Se.ANONYMOUS&&\"INVALID_REFRESH_TOKEN\"===e){const e=this._cache.getStore(o),t=this._cache.getStore(n),s=await this.send(\"auth.signInAnonymously\",{anonymous_uuid:e,refresh_token:t});return this.setRefreshToken(s.refresh_token),this._refreshAccessToken()}pe(_e),this._cache.removeStore(n)}throw new M({code:a.data.code,message:`刷新access token失败:${a.data.code}`})}if(a.data.access_token)return pe(Te),this._cache.setStore(e,a.data.access_token),this._cache.setStore(t,a.data.access_token_expire+Date.now()),{accessToken:a.data.access_token,accessTokenExpire:a.data.access_token_expire};a.data.refresh_token&&(this._cache.removeStore(n),this._cache.setStore(n,a.data.refresh_token),this._refreshAccessToken())}async getAccessToken(){const{accessTokenKey:e,accessTokenExpireKey:t,refreshTokenKey:n}=this._cache.keys;if(!this._cache.getStore(n))throw new M({message:\"refresh token不存在,登录状态异常\"});let s=this._cache.getStore(e),o=this._cache.getStore(t),r=!0;return this._shouldRefreshAccessTokenHook&&!await this._shouldRefreshAccessTokenHook(s,o)&&(r=!1),(!s||!o||o<Date.now())&&r?this.refreshAccessToken():{accessToken:s,accessTokenExpire:o}}async request(e,t,n){const s=`x-tcb-trace_${this.config.env}`;let o=\"application/x-www-form-urlencoded\";const r={action:e,env:this.config.env,dataVersion:\"2019-08-16\",...t};if(-1===ve.indexOf(e)){const{refreshTokenKey:e}=this._cache.keys;this._cache.getStore(e)&&(r.access_token=(await this.getAccessToken()).accessToken)}let i;if(\"storage.uploadFile\"===e){i=new FormData;for(let e in i)i.hasOwnProperty(e)&&void 0!==i[e]&&i.append(e,r[e]);o=\"multipart/form-data\"}else{o=\"application/json\",i={};for(let e in r)void 0!==r[e]&&(i[e]=r[e])}let a={headers:{\"content-type\":o}};n&&n.onUploadProgress&&(a.onUploadProgress=n.onUploadProgress);const c=this._localCache.getStore(s);c&&(a.headers[\"X-TCB-Trace\"]=c);const{parse:u,inQuery:l,search:h}=t;let d={env:this.config.env};u&&(d.parse=!0),l&&(d={...l,...d});let f=function(e,t,n={}){const s=/\\?/.test(t);let o=\"\";for(let e in n)\"\"===o?!s&&(t+=\"?\"):o+=\"&\",o+=`${e}=${encodeURIComponent(n[e])}`;return/^http(s)?\\:\\/\\//.test(t+=o)?t:`${e}${t}`}(Y,\"//tcb-api.tencentcloudapi.com/web\",d);h&&(f+=h);const g=await this.post({url:f,data:i,...a}),p=g.header&&g.header[\"x-tcb-trace\"];if(p&&this._localCache.setStore(s,p),200!==Number(g.status)&&200!==Number(g.statusCode)||!g.data)throw new M({code:\"NETWORK_ERROR\",message:\"network request error\"});return g}async send(e,t={}){const n=await this.request(e,t,{onUploadProgress:t.onUploadProgress});if(\"ACCESS_TOKEN_EXPIRED\"===n.data.code&&-1===ve.indexOf(e)){await this.refreshAccessToken();const n=await this.request(e,t,{onUploadProgress:t.onUploadProgress});if(n.data.code)throw new M({code:n.data.code,message:n.data.message});return n.data}if(n.data.code)throw new M({code:n.data.code,message:n.data.message});return n.data}setRefreshToken(e){const{accessTokenKey:t,accessTokenExpireKey:n,refreshTokenKey:s}=this._cache.keys;this._cache.removeStore(t),this._cache.removeStore(n),this._cache.setStore(s,e)}}const Oe={};function Ce(e){return Oe[e]}class Ee{constructor(e){this.config=e,this._cache=le(e.env),this._request=Ce(e.env)}setRefreshToken(e){const{accessTokenKey:t,accessTokenExpireKey:n,refreshTokenKey:s}=this._cache.keys;this._cache.removeStore(t),this._cache.removeStore(n),this._cache.setStore(s,e)}setAccessToken(e,t){const{accessTokenKey:n,accessTokenExpireKey:s}=this._cache.keys;this._cache.setStore(n,e),this._cache.setStore(s,t)}async refreshUserInfo(){const{data:e}=await this._request.send(\"auth.getUserInfo\",{});return this.setLocalUserInfo(e),e}setLocalUserInfo(e){const{userInfoKey:t}=this._cache.keys;this._cache.setStore(t,e)}}class Re{constructor(e){if(!e)throw new M({code:\"PARAM_ERROR\",message:\"envId is not defined\"});this._envId=e,this._cache=le(this._envId),this._request=Ce(this._envId),this.setUserInfo()}linkWithTicket(e){if(\"string\"!=typeof e)throw new M({code:\"PARAM_ERROR\",message:\"ticket must be string\"});return this._request.send(\"auth.linkWithTicket\",{ticket:e})}linkWithRedirect(e){e.signInWithRedirect()}updatePassword(e,t){return this._request.send(\"auth.updatePassword\",{oldPassword:t,newPassword:e})}updateEmail(e){return this._request.send(\"auth.updateEmail\",{newEmail:e})}updateUsername(e){if(\"string\"!=typeof e)throw new M({code:\"PARAM_ERROR\",message:\"username must be a string\"});return this._request.send(\"auth.updateUsername\",{username:e})}async getLinkedUidList(){const{data:e}=await this._request.send(\"auth.getLinkedUidList\",{});let t=!1;const{users:n}=e;return n.forEach((e=>{e.wxOpenId&&e.wxPublicId&&(t=!0)})),{users:n,hasPrimaryUid:t}}setPrimaryUid(e){return this._request.send(\"auth.setPrimaryUid\",{uid:e})}unlink(e){return this._request.send(\"auth.unlink\",{platform:e})}async update(e){const{nickName:t,gender:n,avatarUrl:s,province:o,country:r,city:i}=e,{data:a}=await this._request.send(\"auth.updateUserInfo\",{nickName:t,gender:n,avatarUrl:s,province:o,country:r,city:i});this.setLocalUserInfo(a)}async refresh(){const{data:e}=await this._request.send(\"auth.getUserInfo\",{});return this.setLocalUserInfo(e),e}setUserInfo(){const{userInfoKey:e}=this._cache.keys,t=this._cache.getStore(e);[\"uid\",\"loginType\",\"openid\",\"wxOpenId\",\"wxPublicId\",\"unionId\",\"qqMiniOpenId\",\"email\",\"hasPassword\",\"customUserId\",\"nickName\",\"gender\",\"avatarUrl\"].forEach((e=>{this[e]=t[e]})),this.location={country:t.country,province:t.province,city:t.city}}setLocalUserInfo(e){const{userInfoKey:t}=this._cache.keys;this._cache.setStore(t,e),this.setUserInfo()}}class Ue{constructor(e){if(!e)throw new M({code:\"PARAM_ERROR\",message:\"envId is not defined\"});this._cache=le(e);const{refreshTokenKey:t,accessTokenKey:n,accessTokenExpireKey:s}=this._cache.keys,o=this._cache.getStore(t),r=this._cache.getStore(n),i=this._cache.getStore(s);this.credential={refreshToken:o,accessToken:r,accessTokenExpire:i},this.user=new Re(e)}get isAnonymousAuth(){return this.loginType===Se.ANONYMOUS}get isCustomAuth(){return this.loginType===Se.CUSTOM}get isWeixinAuth(){return this.loginType===Se.WECHAT||this.loginType===Se.WECHAT_OPEN||this.loginType===Se.WECHAT_PUBLIC}get loginType(){return this._cache.getStore(this._cache.keys.loginTypeKey)}}class xe extends Ee{async signIn(){this._cache.updatePersistence(\"local\");const{anonymousUuidKey:e,refreshTokenKey:t}=this._cache.keys,n=this._cache.getStore(e)||void 0,s=this._cache.getStore(t)||void 0,o=await this._request.send(\"auth.signInAnonymously\",{anonymous_uuid:n,refresh_token:s});if(o.uuid&&o.refresh_token){this._setAnonymousUUID(o.uuid),this.setRefreshToken(o.refresh_token),await this._request.refreshAccessToken(),pe(ye),pe(we,{env:this.config.env,loginType:Se.ANONYMOUS,persistence:\"local\"});const e=new Ue(this.config.env);return await e.user.refresh(),e}throw new M({message:\"匿名登录失败\"})}async linkAndRetrieveDataWithTicket(e){const{anonymousUuidKey:t,refreshTokenKey:n}=this._cache.keys,s=this._cache.getStore(t),o=this._cache.getStore(n),r=await this._request.send(\"auth.linkAndRetrieveDataWithTicket\",{anonymous_uuid:s,refresh_token:o,ticket:e});if(r.refresh_token)return this._clearAnonymousUUID(),this.setRefreshToken(r.refresh_token),await this._request.refreshAccessToken(),pe(ke,{env:this.config.env}),pe(we,{loginType:Se.CUSTOM,persistence:\"local\"}),{credential:{refreshToken:r.refresh_token}};throw new M({message:\"匿名转化失败\"})}_setAnonymousUUID(e){const{anonymousUuidKey:t,loginTypeKey:n}=this._cache.keys;this._cache.removeStore(t),this._cache.setStore(t,e),this._cache.setStore(n,Se.ANONYMOUS)}_clearAnonymousUUID(){this._cache.removeStore(this._cache.keys.anonymousUuidKey)}}class Le extends Ee{async signIn(e){if(\"string\"!=typeof e)throw new M({param:\"PARAM_ERROR\",message:\"ticket must be a string\"});const{refreshTokenKey:t}=this._cache.keys,n=await this._request.send(\"auth.signInWithTicket\",{ticket:e,refresh_token:this._cache.getStore(t)||\"\"});if(n.refresh_token)return this.setRefreshToken(n.refresh_token),await this._request.refreshAccessToken(),pe(ye),pe(we,{env:this.config.env,loginType:Se.CUSTOM,persistence:this.config.persistence}),await this.refreshUserInfo(),new Ue(this.config.env);throw new M({message:\"自定义登录失败\"})}}class De extends Ee{async signIn(e,t){if(\"string\"!=typeof e)throw new M({code:\"PARAM_ERROR\",message:\"email must be a string\"});const{refreshTokenKey:n}=this._cache.keys,s=await this._request.send(\"auth.signIn\",{loginType:\"EMAIL\",email:e,password:t,refresh_token:this._cache.getStore(n)||\"\"}),{refresh_token:o,access_token:r,access_token_expire:i}=s;if(o)return this.setRefreshToken(o),r&&i?this.setAccessToken(r,i):await this._request.refreshAccessToken(),await this.refreshUserInfo(),pe(ye),pe(we,{env:this.config.env,loginType:Se.EMAIL,persistence:this.config.persistence}),new Ue(this.config.env);throw s.code?new M({code:s.code,message:`邮箱登录失败: ${s.message}`}):new M({message:\"邮箱登录失败\"})}async activate(e){return this._request.send(\"auth.activateEndUserMail\",{token:e})}async resetPasswordWithToken(e,t){return this._request.send(\"auth.resetPasswordWithToken\",{token:e,newPassword:t})}}class qe extends Ee{async signIn(e,t){if(\"string\"!=typeof e)throw new M({code:\"PARAM_ERROR\",message:\"username must be a string\"});\"string\"!=typeof t&&(t=\"\",console.warn(\"password is empty\"));const{refreshTokenKey:n}=this._cache.keys,s=await this._request.send(\"auth.signIn\",{loginType:Se.USERNAME,username:e,password:t,refresh_token:this._cache.getStore(n)||\"\"}),{refresh_token:o,access_token_expire:r,access_token:i}=s;if(o)return this.setRefreshToken(o),i&&r?this.setAccessToken(i,r):await this._request.refreshAccessToken(),await this.refreshUserInfo(),pe(ye),pe(we,{env:this.config.env,loginType:Se.USERNAME,persistence:this.config.persistence}),new Ue(this.config.env);throw s.code?new M({code:s.code,message:`用户名密码登录失败: ${s.message}`}):new M({message:\"用户名密码登录失败\"})}}class Ne{constructor(e){this.config=e,this._cache=le(e.env),this._request=Ce(e.env),this._onAnonymousConverted=this._onAnonymousConverted.bind(this),this._onLoginTypeChanged=this._onLoginTypeChanged.bind(this),ge(we,this._onLoginTypeChanged)}get currentUser(){const e=this.hasLoginState();return e&&e.user||null}get loginType(){return this._cache.getStore(this._cache.keys.loginTypeKey)}anonymousAuthProvider(){return new xe(this.config)}customAuthProvider(){return new Le(this.config)}emailAuthProvider(){return new De(this.config)}usernameAuthProvider(){return new qe(this.config)}async signInAnonymously(){return new xe(this.config).signIn()}async signInWithEmailAndPassword(e,t){return new De(this.config).signIn(e,t)}signInWithUsernameAndPassword(e,t){return new qe(this.config).signIn(e,t)}async linkAndRetrieveDataWithTicket(e){this._anonymousAuthProvider||(this._anonymousAuthProvider=new xe(this.config)),ge(ke,this._onAnonymousConverted);return await this._anonymousAuthProvider.linkAndRetrieveDataWithTicket(e)}async signOut(){if(this.loginType===Se.ANONYMOUS)throw new M({message:\"匿名用户不支持登出操作\"});const{refreshTokenKey:e,accessTokenKey:t,accessTokenExpireKey:n}=this._cache.keys,s=this._cache.getStore(e);if(!s)return;const o=await this._request.send(\"auth.logout\",{refresh_token:s});return this._cache.removeStore(e),this._cache.removeStore(t),this._cache.removeStore(n),pe(ye),pe(we,{env:this.config.env,loginType:Se.NULL,persistence:this.config.persistence}),o}async signUpWithEmailAndPassword(e,t){return this._request.send(\"auth.signUpWithEmailAndPassword\",{email:e,password:t})}async sendPasswordResetEmail(e){return this._request.send(\"auth.sendPasswordResetEmail\",{email:e})}onLoginStateChanged(e){ge(ye,(()=>{const t=this.hasLoginState();e.call(this,t)}));const t=this.hasLoginState();e.call(this,t)}onLoginStateExpired(e){ge(_e,e.bind(this))}onAccessTokenRefreshed(e){ge(Te,e.bind(this))}onAnonymousConverted(e){ge(ke,e.bind(this))}onLoginTypeChanged(e){ge(we,(()=>{const t=this.hasLoginState();e.call(this,t)}))}async getAccessToken(){return{accessToken:(await this._request.getAccessToken()).accessToken,env:this.config.env}}hasLoginState(){const{refreshTokenKey:e}=this._cache.keys;return this._cache.getStore(e)?new Ue(this.config.env):null}async isUsernameRegistered(e){if(\"string\"!=typeof e)throw new M({code:\"PARAM_ERROR\",message:\"username must be a string\"});const{data:t}=await this._request.send(\"auth.isUsernameRegistered\",{username:e});return t&&t.isRegistered}getLoginState(){return Promise.resolve(this.hasLoginState())}async signInWithTicket(e){return new Le(this.config).signIn(e)}shouldRefreshAccessToken(e){this._request._shouldRefreshAccessTokenHook=e.bind(this)}getUserInfo(){return this._request.send(\"auth.getUserInfo\",{}).then((e=>e.code?e:{...e.data,requestId:e.seqId}))}getAuthHeader(){const{refreshTokenKey:e,accessTokenKey:t}=this._cache.keys,n=this._cache.getStore(e);return{\"x-cloudbase-credentials\":this._cache.getStore(t)+\"/@@/\"+n}}_onAnonymousConverted(e){const{env:t}=e.data;t===this.config.env&&this._cache.updatePersistence(this.config.persistence)}_onLoginTypeChanged(e){const{loginType:t,persistence:n,env:s}=e.data;s===this.config.env&&(this._cache.updatePersistence(n),this._cache.setStore(this._cache.keys.loginTypeKey,t))}}const Fe=function(e,t){t=t||Q();const n=Ce(this.config.env),{cloudPath:s,filePath:o,onUploadProgress:r,fileType:i=\"image\"}=e;return n.send(\"storage.getUploadMetadata\",{path:s}).then((e=>{const{data:{url:a,authorization:c,token:u,fileId:l,cosFileId:h},requestId:d}=e,f={key:s,signature:c,\"x-cos-meta-fileid\":h,success_action_status:\"201\",\"x-cos-security-token\":u};n.upload({url:a,data:f,file:o,name:s,fileType:i,onUploadProgress:r}).then((e=>{201===e.statusCode?t(null,{fileID:l,requestId:d}):t(new M({code:\"STORAGE_REQUEST_FAIL\",message:`STORAGE_REQUEST_FAIL: ${e.data}`}))})).catch((e=>{t(e)}))})).catch((e=>{t(e)})),t.promise},Me=function(e,t){t=t||Q();const n=Ce(this.config.env),{cloudPath:s}=e;return n.send(\"storage.getUploadMetadata\",{path:s}).then((e=>{t(null,e)})).catch((e=>{t(e)})),t.promise},$e=function({fileList:e},t){if(t=t||Q(),!e||!Array.isArray(e))return{code:\"INVALID_PARAM\",message:\"fileList必须是非空的数组\"};for(let t of e)if(!t||\"string\"!=typeof t)return{code:\"INVALID_PARAM\",message:\"fileList的元素必须是非空的字符串\"};const n={fileid_list:e};return Ce(this.config.env).send(\"storage.batchDeleteFile\",n).then((e=>{e.code?t(null,e):t(null,{fileList:e.data.delete_list,requestId:e.requestId})})).catch((e=>{t(e)})),t.promise},je=function({fileList:e},t){t=t||Q(),e&&Array.isArray(e)||t(null,{code:\"INVALID_PARAM\",message:\"fileList必须是非空的数组\"});let n=[];for(let s of e)\"object\"==typeof s?(s.hasOwnProperty(\"fileID\")&&s.hasOwnProperty(\"maxAge\")||t(null,{code:\"INVALID_PARAM\",message:\"fileList的元素必须是包含fileID和maxAge的对象\"}),n.push({fileid:s.fileID,max_age:s.maxAge})):\"string\"==typeof s?n.push({fileid:s}):t(null,{code:\"INVALID_PARAM\",message:\"fileList的元素必须是字符串\"});const s={file_list:n};return Ce(this.config.env).send(\"storage.batchGetDownloadUrl\",s).then((e=>{e.code?t(null,e):t(null,{fileList:e.data.download_list,requestId:e.requestId})})).catch((e=>{t(e)})),t.promise},Ke=async function({fileID:e},t){const n=(await je.call(this,{fileList:[{fileID:e,maxAge:600}]})).fileList[0];if(\"SUCCESS\"!==n.code)return t?t(n):new Promise((e=>{e(n)}));const s=Ce(this.config.env);let o=n.download_url;if(o=encodeURI(o),!t)return s.download({url:o});t(await s.download({url:o}))},Be=function({name:e,data:t,query:n,parse:s,search:o},r){const i=r||Q();let a;try{a=t?JSON.stringify(t):\"\"}catch(e){return Promise.reject(e)}if(!e)return Promise.reject(new M({code:\"PARAM_ERROR\",message:\"函数名不能为空\"}));const c={inQuery:n,parse:s,search:o,function_name:e,request_data:a};return Ce(this.config.env).send(\"functions.invokeFunction\",c).then((e=>{if(e.code)i(null,e);else{let t=e.data.response_data;if(s)i(null,{result:t,requestId:e.requestId});else try{t=JSON.parse(e.data.response_data),i(null,{result:t,requestId:e.requestId})}catch(e){i(new M({message:\"response data must be json\"}))}}return i.promise})).catch((e=>{i(e)})),i.promise},He={timeout:15e3,persistence:\"session\"},We={};class ze{constructor(e){this.config=e||this.config,this.authObj=void 0}init(e){switch(se.adapter||(this.requestClient=new se.adapter.reqClass({timeout:e.timeout||5e3,timeoutMsg:`请求在${(e.timeout||5e3)/1e3}s内未完成,已中断`})),this.config={...He,...e},!0){case this.config.timeout>6e5:console.warn(\"timeout大于可配置上限[10分钟],已重置为上限数值\"),this.config.timeout=6e5;break;case this.config.timeout<100:console.warn(\"timeout小于可配置下限[100ms],已重置为下限数值\"),this.config.timeout=100}return new ze(this.config)}auth({persistence:e}={}){if(this.authObj)return this.authObj;const t=e||se.adapter.primaryStorage||He.persistence;var n;return t!==this.config.persistence&&(this.config.persistence=t),function(e){const{env:t}=e;ce[t]=new ae(e),ue[t]=new ae({...e,persistence:\"local\"})}(this.config),n=this.config,Oe[n.env]=new be(n),this.authObj=new Ne(this.config),this.authObj}on(e,t){return ge.apply(this,[e,t])}off(e,t){return me.apply(this,[e,t])}callFunction(e,t){return Be.apply(this,[e,t])}deleteFile(e,t){return $e.apply(this,[e,t])}getTempFileURL(e,t){return je.apply(this,[e,t])}downloadFile(e,t){return Ke.apply(this,[e,t])}uploadFile(e,t){return Fe.apply(this,[e,t])}getUploadMetadata(e,t){return Me.apply(this,[e,t])}registerExtension(e){We[e.name]=e}async invokeExtension(e,t){const n=We[e];if(!n)throw new M({message:`扩展${e} 必须先注册`});return await n.invoke(t,this)}useAdapters(e){const{adapter:t,runtime:n}=ne(e)||{};t&&(se.adapter=t),n&&(se.runtime=n)}}var Ve=new ze;function Je(e,t,n){void 0===n&&(n={});var s=/\\?/.test(t),o=\"\";for(var r in n)\"\"===o?!s&&(t+=\"?\"):o+=\"&\",o+=r+\"=\"+encodeURIComponent(n[r]);return/^http(s)?:\\/\\//.test(t+=o)?t:\"\"+e+t}class Ye{post(e){const{url:t,data:n,headers:s}=e;return new Promise(((e,o)=>{H.request({url:Je(\"https:\",t),data:n,method:\"POST\",header:s,success(t){e(t)},fail(e){o(e)}})}))}upload(e){return new Promise(((t,n)=>{const{url:s,file:o,data:r,headers:i,fileType:a}=e,c=H.uploadFile({url:Je(\"https:\",s),name:\"file\",formData:Object.assign({},r),filePath:o,fileType:a,header:i,success(e){const n={statusCode:e.statusCode,data:e.data||{}};200===e.statusCode&&r.success_action_status&&(n.statusCode=parseInt(r.success_action_status,10)),t(n)},fail(e){d&&\"mp-alipay\"===g&&console.warn(\"支付宝小程序开发工具上传腾讯云时无法准确判断是否上传成功,请使用真机测试\"),n(new Error(e.errMsg||\"uploadFile:fail\"))}});\"function\"==typeof e.onUploadProgress&&c&&\"function\"==typeof c.onProgressUpdate&&c.onProgressUpdate((t=>{e.onUploadProgress({loaded:t.totalBytesSent,total:t.totalBytesExpectedToSend})}))}))}}const Xe={setItem(e,t){H.setStorageSync(e,t)},getItem:e=>H.getStorageSync(e),removeItem(e){H.removeStorageSync(e)},clear(){H.clearStorageSync()}};var Ge={genAdapter:function(){return{root:{},reqClass:Ye,localStorage:Xe,primaryStorage:\"local\"}},isMatch:function(){return!0},runtime:\"uni_app\"};Ve.useAdapters(Ge);const Qe=Ve,Ze=Qe.init;Qe.init=function(e){e.env=e.spaceId;const t=Ze.call(this,e);t.config.provider=\"tencent\",t.config.spaceId=e.spaceId;const n=t.auth;return t.auth=function(e){const t=n.call(this,e);return[\"linkAndRetrieveDataWithTicket\",\"signInAnonymously\",\"signOut\",\"getAccessToken\",\"getLoginState\",\"signInWithTicket\",\"getUserInfo\"].forEach((e=>{t[e]=F(t[e]).bind(t)})),t},t.customAuth=t.auth,t};var et=Qe;function tt(){return{token:H.getStorageSync(\"uni_id_token\")||H.getStorageSync(\"uniIdToken\"),tokenExpired:H.getStorageSync(\"uni_id_token_expired\")}}function nt({token:e,tokenExpired:t}={}){e&&H.setStorageSync(\"uni_id_token\",e),t&&H.setStorageSync(\"uni_id_token_expired\",t)}function st(){if(!d||\"web\"!==g)return;uni.getStorageSync(\"__LAST_DCLOUD_APPID\")!==_&&(uni.setStorageSync(\"__LAST_DCLOUD_APPID\",_),console.warn(\"检测到当前项目与上次运行到此端口的项目不一致,自动清理uni-id保存的token信息(仅开发调试时生效)\"),H.removeStorageSync(\"uni_id_token\"),H.removeStorageSync(\"uniIdToken\"),H.removeStorageSync(\"uni_id_token_expired\"))}var ot=class extends V{getAccessToken(){return new Promise(((e,t)=>{const n=\"Anonymous_Access_token\";this.setAccessToken(n),e(n)}))}setupRequest(e,t){const n=Object.assign({},e,{spaceId:this.config.spaceId,timestamp:Date.now()}),s={\"Content-Type\":\"application/json\"};\"auth\"!==t&&(n.token=this.accessToken,s[\"x-basement-token\"]=this.accessToken),s[\"x-serverless-sign\"]=B.sign(n,this.config.clientSecret);const o=K();s[\"x-client-info\"]=encodeURIComponent(JSON.stringify(o));const{token:r}=tt();return s[\"x-client-token\"]=r,{url:this.config.requestUrl,method:\"POST\",data:n,dataType:\"json\",header:JSON.parse(JSON.stringify(s))}}uploadFileToOSS({url:e,formData:t,name:n,filePath:s,fileType:o,onUploadProgress:r}){return new Promise(((i,a)=>{const c=this.adapter.uploadFile({url:e,formData:t,name:n,filePath:s,fileType:o,success(e){e&&e.statusCode<400?i(e):a(new M({code:\"UPLOAD_FAILED\",message:\"文件上传失败\"}))},fail(e){a(new M({code:e.code||\"UPLOAD_FAILED\",message:e.message||e.errMsg||\"文件上传失败\"}))}});\"function\"==typeof r&&c&&\"function\"==typeof c.onProgressUpdate&&c.onProgressUpdate((e=>{r({loaded:e.totalBytesSent,total:e.totalBytesExpectedToSend})}))}))}uploadFile({filePath:e,cloudPath:t,fileType:n=\"image\",onUploadProgress:s}){if(!t)throw new M({code:\"CLOUDPATH_REQUIRED\",message:\"cloudPath不可为空\"});let o;return this.getOSSUploadOptionsFromPath({cloudPath:t}).then((t=>{const{url:r,formData:i,name:a}=t.result;o=t.result.fileUrl;const c={url:r,formData:i,name:a,filePath:e,fileType:n};return this.uploadFileToOSS(Object.assign({},c,{onUploadProgress:s}))})).then((()=>this.reportOSSUpload({cloudPath:t}))).then((t=>new Promise(((n,s)=>{t.success?n({success:!0,filePath:e,fileID:o}):s(new M({code:\"UPLOAD_FAILED\",message:\"文件上传失败\"}))}))))}deleteFile({fileList:e}){const t={method:\"serverless.file.resource.delete\",params:JSON.stringify({fileList:e})};return this.request(this.setupRequest(t))}getTempFileURL({fileList:e}={}){const t={method:\"serverless.file.resource.getTempFileURL\",params:JSON.stringify({fileList:e})};return this.request(this.setupRequest(t))}};var rt={init(e){const t=new ot(e),n={signInAnonymously:function(){return t.authorize()},getLoginState:function(){return Promise.resolve(!1)}};return t.auth=function(){return n},t.customAuth=t.auth,t}};function it({data:e}){let t;t=K();const n=JSON.parse(JSON.stringify(e||{}));if(Object.assign(n,{clientInfo:t}),!n.uniIdToken){const{token:e}=tt();e&&(n.uniIdToken=e)}return n}function at({name:e,data:t}){const{localAddress:n,localPort:s}=this,o={aliyun:\"aliyun\",tencent:\"tcb\"}[this.config.provider],r=this.config.spaceId,i=`http://${n}:${s}/system/check-function`,a=`http://${n}:${s}/cloudfunctions/${e}`;return new Promise(((t,n)=>{H.request({method:\"POST\",url:i,data:{name:e,platform:g,provider:o,spaceId:r},timeout:3e3,success(e){t(e)},fail(){t({data:{code:\"NETWORK_ERROR\",message:\"连接本地调试服务失败,请检查客户端是否和主机在同一局域网下,自动切换为已部署的云函数。\"}})}})})).then((({data:e}={})=>{const{code:t,message:n}=e||{};return{code:0===t?0:t||\"SYS_ERR\",message:n||\"SYS_ERR\"}})).then((({code:n,message:s})=>{if(0!==n){switch(n){case\"MODULE_ENCRYPTED\":console.error(`此云函数(${e})依赖加密公共模块不可本地调试,自动切换为云端已部署的云函数`);break;case\"FUNCTION_ENCRYPTED\":console.error(`此云函数(${e})已加密不可本地调试,自动切换为云端已部署的云函数`);break;case\"ACTION_ENCRYPTED\":console.error(s||\"需要访问加密的uni-clientDB-action,自动切换为云端环境\");break;case\"NETWORK_ERROR\":{const e=\"连接本地调试服务失败,请检查客户端是否和主机在同一局域网下\";throw console.error(e),new Error(e)}case\"SWITCH_TO_CLOUD\":break;default:{const e=`检测本地调试服务出现错误:${s},请检查网络环境或重启客户端再试`;throw console.error(e),new Error(e)}}return this._originCallFunction({name:e,data:t})}return new Promise(((e,n)=>{const s=it.call(this,{data:t});H.request({method:\"POST\",url:a,data:{provider:o,platform:g,param:s},success:({statusCode:t,data:s}={})=>!t||t>=400?n(new M({code:s.code||\"SYS_ERR\",message:s.message||\"request:fail\"})):e({result:s}),fail(e){n(new M({code:e.code||e.errCode||\"SYS_ERR\",message:e.message||e.errMsg||\"request:fail\"}))}})}))}))}const ct=[{rule:/fc_function_not_found|FUNCTION_NOT_FOUND/,content:\",云函数[{functionName}]在云端不存在,请检查此云函数名称是否正确以及该云函数是否已上传到服务空间\",mode:\"append\"}];var ut=/[\\\\^$.*+?()[\\]{}|]/g,lt=RegExp(ut.source);function ht(e,t,n){return e.replace(new RegExp((s=t)&<.test(s)?s.replace(ut,\"\\\\$&\"):s,\"g\"),n);var s}function dt({functionName:e,result:t,logPvd:n}){if(this.config.debugLog&&t&&t.requestId){const s=JSON.stringify({spaceId:this.config.spaceId,functionName:e,requestId:t.requestId});console.log(`[${n}-request]${s}[/${n}-request]`)}}function ft(e){const t=e.callFunction,n=function(n){const s=n.name;n.data=it.call(e,{data:n.data});const o={aliyun:\"aliyun\",tencent:\"tcb\",tcb:\"tcb\"}[this.config.provider];return t.call(this,n).then((e=>(e.errCode=0,dt.call(this,{functionName:s,result:e,logPvd:o}),Promise.resolve(e))),(e=>(dt.call(this,{functionName:s,result:e,logPvd:o}),e&&e.message&&(e.message=function({message:e=\"\",extraInfo:t={},formatter:n=[]}={}){for(let s=0;s<n.length;s++){const{rule:o,content:r,mode:i}=n[s],a=e.match(o);if(!a)continue;let c=r;for(let e=1;e<a.length;e++)c=ht(c,`{$${e}}`,a[e]);for(const e in t)c=ht(c,`{${e}}`,t[e]);return\"replace\"===i?c:e+c}return e}({message:`[${n.name}]: ${e.message}`,formatter:ct,extraInfo:{functionName:s}})),Promise.reject(e))))};e.callFunction=function(t){let s;return d&&e.debugInfo&&!e.debugInfo.forceRemote&&m?(e._originCallFunction||(e._originCallFunction=n),s=at.call(this,t)):s=n.call(this,t),Object.defineProperty(s,\"result\",{get:()=>(console.warn(\"当前返回结果为Promise类型,不可直接访问其result属性,详情请参考:https://uniapp.dcloud.net.cn/uniCloud/faq?id=promise\"),{})}),s}}const gt=Symbol(\"CLIENT_DB_INTERNAL\");function pt(e,t){return e.then=\"DoNotReturnProxyWithAFunctionNamedThen\",e._internalType=gt,e.__ob__=void 0,new Proxy(e,{get(e,n,s){if(\"_uniClient\"===n)return null;if(n in e||\"string\"!=typeof n){const t=e[n];return\"function\"==typeof t?t.bind(e):t}return t.get(e,n,s)}})}function mt(e){return{on:(t,n)=>{e[t]=e[t]||[],e[t].indexOf(n)>-1||e[t].push(n)},off:(t,n)=>{e[t]=e[t]||[];const s=e[t].indexOf(n);-1!==s&&e[t].splice(s,1)}}}const yt=[\"db.Geo\",\"db.command\",\"command.aggregate\"];function _t(e,t){return yt.indexOf(`${e}.${t}`)>-1}function wt(e){switch(u(e)){case\"array\":return e.map((e=>wt(e)));case\"object\":return e._internalType===gt||Object.keys(e).forEach((t=>{e[t]=wt(e[t])})),e;case\"regexp\":return{$regexp:{source:e.source,flags:e.flags}};case\"date\":return{$date:e.toISOString()};default:return e}}function kt(e){return e&&e.content&&e.content.$method}class Tt{constructor(e,t,n){this.content=e,this.prevStage=t||null,this.udb=null,this._database=n}toJSON(){let e=this;const t=[e.content];for(;e.prevStage;)e=e.prevStage,t.push(e.content);return{$db:t.reverse().map((e=>({$method:e.$method,$param:wt(e.$param)})))}}getAction(){const e=this.toJSON().$db.find((e=>\"action\"===e.$method));return e&&e.$param&&e.$param[0]}getCommand(){return{$db:this.toJSON().$db.filter((e=>\"action\"!==e.$method))}}get isAggregate(){let e=this;for(;e;){const t=kt(e),n=kt(e.prevStage);if(\"aggregate\"===t&&\"collection\"===n||\"pipeline\"===t)return!0;e=e.prevStage}return!1}get isCommand(){let e=this;for(;e;){if(\"command\"===kt(e))return!0;e=e.prevStage}return!1}get isAggregateCommand(){let e=this;for(;e;){const t=kt(e),n=kt(e.prevStage);if(\"aggregate\"===t&&\"command\"===n)return!0;e=e.prevStage}return!1}get count(){if(!this.isAggregate)return function(){return this._send(\"count\",Array.from(arguments))};const e=this;return function(){return St({$method:\"count\",$param:wt(Array.from(arguments))},e,this._database)}}get remove(){if(!this.isCommand)return function(){return this._send(\"remove\",Array.from(arguments))};const e=this;return function(){return St({$method:\"remove\",$param:wt(Array.from(arguments))},e,this._database)}}get(){return this._send(\"get\",Array.from(arguments))}add(){return this._send(\"add\",Array.from(arguments))}update(){return this._send(\"update\",Array.from(arguments))}end(){return this._send(\"end\",Array.from(arguments))}get set(){if(!this.isCommand)return function(){throw new Error(\"JQL禁止使用set方法\")};const e=this;return function(){return St({$method:\"set\",$param:wt(Array.from(arguments))},e,this._database)}}_send(e,t){const n=this.getAction(),s=this.getCommand();if(s.$db.push({$method:e,$param:wt(t)}),d){const e=s.$db.find((e=>\"collection\"===e.$method)),t=e&&e.$param;t&&1===t.length&&\"string\"==typeof e.$param[0]&&e.$param[0].indexOf(\",\")>-1&&console.warn(\"检测到使用JQL语法联表查询时,未使用getTemp先过滤主表数据,在主表数据量大的情况下可能会查询缓慢。\\n- 如何优化请参考此文档:https://uniapp.dcloud.net.cn/uniCloud/jql?id=lookup-with-temp \\n- 如果主表数据量很小请忽略此信息,项目发行时不会出现此提示。\")}return this._database._callCloudFunction({action:n,command:s})}}function St(e,t,n){return pt(new Tt(e,t,n),{get(e,t){let s=\"db\";return e&&e.content&&(s=e.content.$method),_t(s,t)?St({$method:t},e,n):function(){return St({$method:t,$param:wt(Array.from(arguments))},e,n)}}})}function vt({path:e,method:t}){return class{constructor(){this.param=Array.from(arguments)}toJSON(){return{$newDb:[...e.map((e=>({$method:e}))),{$method:t,$param:this.param}]}}}}class At extends class{constructor({uniClient:e={}}={}){this._uniClient=e,this._authCallBacks={},this._dbCallBacks={},e.isDefault&&(this._dbCallBacks=k(\"_globalUniCloudDatabaseCallback\")),this.auth=mt(this._authCallBacks),Object.assign(this,mt(this._dbCallBacks)),this.env=pt({},{get:(e,t)=>({$env:t})}),this.Geo=pt({},{get:(e,t)=>vt({path:[\"Geo\"],method:t})}),this.serverDate=vt({path:[],method:\"serverDate\"}),this.RegExp=vt({path:[],method:\"RegExp\"})}getCloudEnv(e){if(\"string\"!=typeof e||!e.trim())throw new Error(\"getCloudEnv参数错误\");return{$env:e.replace(\"$cloudEnv_\",\"\")}}_callback(e,t){const n=this._dbCallBacks;n[e]&&n[e].forEach((e=>{e(...t)}))}_callbackAuth(e,t){const n=this._authCallBacks;n[e]&&n[e].forEach((e=>{e(...t)}))}multiSend(){const e=Array.from(arguments),t=e.map((e=>{const t=e.getAction(),n=e.getCommand();if(\"getTemp\"!==n.$db[n.$db.length-1].$method)throw new Error(\"multiSend只支持子命令内使用getTemp\");return{action:t,command:n}}));return this._callCloudFunction({multiCommand:t,queryList:e})}}{_callCloudFunction({action:e,command:t,multiCommand:n,queryList:s}){function o(e,t){if(n&&s)for(let n=0;n<s.length;n++){const o=s[n];o.udb&&\"function\"==typeof o.udb.setResult&&(t?o.udb.setResult(t):o.udb.setResult(e.result.dataList[n]))}}const r=this;function i(e){return r._callback(\"error\",[e]),P(I(\"database\",\"fail\"),e).then((()=>P(I(\"database\",\"complete\"),e))).then((()=>(o(null,e),N(O,{type:R,content:e}),Promise.reject(e))))}const a=P(I(\"database\",\"invoke\")),u=this._uniClient;return a.then((()=>u.callFunction({name:\"DCloud-clientDB\",type:c,data:{action:e,command:t,multiCommand:n}}))).then((e=>{const{code:t,message:n,token:s,tokenExpired:r,systemInfo:a=[]}=e.result;if(a)for(let e=0;e<a.length;e++){const{level:t,message:n,detail:s}=a[e],o=console[\"app\"===g&&\"warn\"===t?\"error\":t]||console.log;let r=\"[System Info]\"+n;s&&(r=`${r}\\n详细信息:${s}`),o(r)}if(t){return i(new M({code:t,message:n,requestId:e.requestId}))}e.result.errCode=e.result.code,e.result.errMsg=e.result.message,s&&r&&(nt({token:s,tokenExpired:r}),this._callbackAuth(\"refreshToken\",[{token:s,tokenExpired:r}]),this._callback(\"refreshToken\",[{token:s,tokenExpired:r}]),N(E,{token:s,tokenExpired:r}));const c=[{prop:\"affectedDocs\",tips:\"affectedDocs不再推荐使用,请使用inserted/deleted/updated/data.length替代\"},{prop:\"code\",tips:\"code不再推荐使用,请使用errCode替代\"},{prop:\"message\",tips:\"message不再推荐使用,请使用errMsg替代\"}];for(let t=0;t<c.length;t++){const{prop:n,tips:s}=c[t];if(n in e.result){const t=e.result[n];Object.defineProperty(e.result,n,{get:()=>(console.warn(s),t)})}}return function(e){return P(I(\"database\",\"success\"),e).then((()=>P(I(\"database\",\"complete\"),e))).then((()=>(o(e,null),N(O,{type:R,content:e}),Promise.resolve(e))))}(e)}),(e=>{/fc_function_not_found|FUNCTION_NOT_FOUND/g.test(e.message)&&console.warn(\"clientDB未初始化,请在web控制台保存一次schema以开启clientDB\");return i(new M({code:e.code||\"SYSTEM_ERROR\",message:e.message,requestId:e.requestId}))}))}}function Pt(e){e.database=function(t){if(t&&Object.keys(t).length>0)return e.init(t).database();if(this._database)return this._database;const n=function(e,t={}){return pt(new e(t),{get:(e,t)=>_t(\"db\",t)?St({$method:t},null,e):function(){return St({$method:t,$param:wt(Array.from(arguments))},null,e)}})}(At,{uniClient:e});return this._database=n,n}}const It=\"token无效,跳转登录页面\",bt=\"token过期,跳转登录页面\",Ot={TOKEN_INVALID_TOKEN_EXPIRED:bt,TOKEN_INVALID_INVALID_CLIENTID:It,TOKEN_INVALID:It,TOKEN_INVALID_WRONG_TOKEN:It,TOKEN_INVALID_ANONYMOUS_USER:It},Ct={\"uni-id-token-expired\":bt,\"uni-id-check-token-failed\":It,\"uni-id-token-not-exist\":It,\"uni-id-check-device-feature-failed\":It};function Et(e,t){let n=\"\";return n=e?`${e}/${t}`:t,n.replace(/^\\//,\"\")}function Rt(e=[],t=\"\"){const n=[],s=[];return e.forEach((e=>{!0===e.needLogin?n.push(Et(t,e.path)):!1===e.needLogin&&s.push(Et(t,e.path))})),{needLoginPage:n,notNeedLoginPage:s}}function Ut(e=\"\",t={}){if(!e)return!1;if(!(t&&t.list&&t.list.length))return!1;const n=t.list,s=e.split(\"?\")[0].replace(/^\\//,\"\");return n.some((e=>e.pagePath===s))}const xt=!!t.uniIdRouter;const{loginPage:Lt,routerNeedLogin:Dt,resToLogin:qt,needLoginPage:Nt,notNeedLoginPage:Ft,loginPageInTabBar:Mt}=function({pages:e=[],subPackages:n=[],uniIdRouter:s={},tabBar:o={}}=t){const{loginPage:r,needLogin:i=[],resToLogin:a=!0}=s,{needLoginPage:c,notNeedLoginPage:u}=Rt(e),{needLoginPage:l,notNeedLoginPage:h}=function(e=[]){const t=[],n=[];return e.forEach((e=>{const{root:s,pages:o=[]}=e,{needLoginPage:r,notNeedLoginPage:i}=Rt(o,s);t.push(...r),n.push(...i)})),{needLoginPage:t,notNeedLoginPage:n}}(n);return{loginPage:r,routerNeedLogin:i,resToLogin:a,needLoginPage:[...c,...l],notNeedLoginPage:[...u,...h],loginPageInTabBar:Ut(r,o)}}();function $t(e){const t=function(e){const t=getCurrentPages(),n=t[t.length-1].route,s=e.charAt(0),o=e.split(\"?\")[0];if(\"/\"===s)return o;const r=o.replace(/^\\//,\"\").split(\"/\"),i=n.split(\"/\");i.pop();for(let e=0;e<r.length;e++){const t=r[e];\"..\"===t?i.pop():\".\"!==t&&i.push(t)}return\"\"===i[0]&&i.shift(),i.join(\"/\")}(e).replace(/^\\//,\"\");return!(Ft.indexOf(t)>-1)&&(Nt.indexOf(t)>-1||Dt.some((t=>function(e,t){return new RegExp(t).test(e)}(e,t))))}function jt(e,t){return\"/\"!==e.charAt(0)&&(e=\"/\"+e),t?e.indexOf(\"?\")>-1?e+`&uniIdRedirectUrl=${encodeURIComponent(t)}`:e+`?uniIdRedirectUrl=${encodeURIComponent(t)}`:e}function Kt(){const e=[\"navigateTo\",\"redirectTo\",\"reLaunch\",\"switchTab\"];for(let t=0;t<e.length;t++){const n=e[t];uni.addInterceptor(n,{invoke(e){const{token:t,tokenExpired:s}=tt();let o;if(t){if(s<Date.now()){const e=\"uni-id-token-expired\";o={errCode:e,errMsg:Ct[e]}}}else{const e=\"uni-id-check-token-failed\";o={errCode:e,errMsg:Ct[e]}}if($t(e.url)&&o){o.uniIdRedirectUrl=e.url;if(L(C).length>0)return setTimeout((()=>{N(C,o)}),0),e.url=\"\",!1;if(!Lt)return e;const t=jt(Lt,o.uniIdRedirectUrl);if(Mt){if(\"navigateTo\"===n||\"redirectTo\"===n)return setTimeout((()=>{uni.switchTab({url:t})})),!1}else if(\"switchTab\"===n)return setTimeout((()=>{uni.navigateTo({url:t})})),!1;e.url=t}return e}})}}function Bt(){this.onResponse((e=>{const{type:t,content:n}=e;let s=!1;switch(t){case\"cloudobject\":s=function(e){const{errCode:t}=e;return t in Ct}(n);break;case\"clientdb\":s=function(e){const{errCode:t}=e;return t in Ot}(n)}s&&function(e={}){const t=L(C),n=getCurrentPages(),s=n[n.length-1],o=s&&s.$page&&s.$page.fullPath;if(t.length>0)return N(C,Object.assign({uniIdRedirectUrl:o},e));Lt&&uni.navigateTo({url:jt(Lt,o)})}(n)}))}function Ht(e){e.onNeedLogin=function(e){D(C,e)},e.offNeedLogin=function(e){q(C,e)},xt&&(k(\"uni-cloud-status\").needLoginInit||(k(\"uni-cloud-status\").needLoginInit=!0,function t(){const n=getCurrentPages();n&&n[0]?Kt.call(e):setTimeout((()=>{t()}),30)}(),qt&&Bt.call(e)))}function Wt(e){!function(e){e.onResponse=function(e){D(O,e)},e.offResponse=function(e){q(O,e)}}(e),Ht(e),function(e){e.onRefreshToken=function(e){D(E,e)},e.offRefreshToken=function(e){q(E,e)}}(e)}let zt;const Vt=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",Jt=/^(?:[A-Za-z\\d+/]{4})*?(?:[A-Za-z\\d+/]{2}(?:==)?|[A-Za-z\\d+/]{3}=?)?$/;function Yt(){const e=tt().token||\"\",t=e.split(\".\");if(!e||3!==t.length)return{uid:null,role:[],permission:[],tokenExpired:0};let n;try{n=JSON.parse((s=t[1],decodeURIComponent(zt(s).split(\"\").map((function(e){return\"%\"+(\"00\"+e.charCodeAt(0).toString(16)).slice(-2)})).join(\"\"))))}catch(e){throw new Error(\"获取当前用户信息出错,详细错误信息为:\"+e.message)}var s;return n.tokenExpired=1e3*n.exp,delete n.exp,delete n.iat,n}zt=\"function\"!=typeof atob?function(e){if(e=String(e).replace(/[\\t\\n\\f\\r ]+/g,\"\"),!Jt.test(e))throw new Error(\"Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.\");var t;e+=\"==\".slice(2-(3&e.length));for(var n,s,o=\"\",r=0;r<e.length;)t=Vt.indexOf(e.charAt(r++))<<18|Vt.indexOf(e.charAt(r++))<<12|(n=Vt.indexOf(e.charAt(r++)))<<6|(s=Vt.indexOf(e.charAt(r++))),o+=64===n?String.fromCharCode(t>>16&255):64===s?String.fromCharCode(t>>16&255,t>>8&255):String.fromCharCode(t>>16&255,t>>8&255,255&t);return o}:atob;var Xt=s((function(e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=\"chooseAndUploadFile:ok\",s=\"chooseAndUploadFile:fail\";function o(e,t){return e.tempFiles.forEach(((e,n)=>{e.name||(e.name=e.path.substring(e.path.lastIndexOf(\"/\")+1)),t&&(e.fileType=t),e.cloudPath=Date.now()+\"_\"+n+e.name.substring(e.name.lastIndexOf(\".\"))})),e.tempFilePaths||(e.tempFilePaths=e.tempFiles.map((e=>e.path))),e}function r(e,t,{onChooseFile:s,onUploadProgress:o}){return t.then((e=>{if(s){const t=s(e);if(void 0!==t)return Promise.resolve(t).then((t=>void 0===t?e:t))}return e})).then((t=>!1===t?{errMsg:n,tempFilePaths:[],tempFiles:[]}:function(e,t,s=5,o){(t=Object.assign({},t)).errMsg=n;const r=t.tempFiles,i=r.length;let a=0;return new Promise((n=>{for(;a<s;)c();function c(){const s=a++;if(s>=i)return void(!r.find((e=>!e.url&&!e.errMsg))&&n(t));const u=r[s];e.uploadFile({filePath:u.path,cloudPath:u.cloudPath,fileType:u.fileType,onUploadProgress(e){e.index=s,e.tempFile=u,e.tempFilePath=u.path,o&&o(e)}}).then((e=>{u.url=e.fileID,s<i&&c()})).catch((e=>{u.errMsg=e.errMsg||e.message,s<i&&c()}))}}))}(e,t,5,o)))}t.initChooseAndUploadFile=function(e){return function(t={type:\"all\"}){return\"image\"===t.type?r(e,function(e){const{count:t,sizeType:n,sourceType:r=[\"album\",\"camera\"],extension:i}=e;return new Promise(((e,a)=>{uni.chooseImage({count:t,sizeType:n,sourceType:r,extension:i,success(t){e(o(t,\"image\"))},fail(e){a({errMsg:e.errMsg.replace(\"chooseImage:fail\",s)})}})}))}(t),t):\"video\"===t.type?r(e,function(e){const{camera:t,compressed:n,maxDuration:r,sourceType:i=[\"album\",\"camera\"],extension:a}=e;return new Promise(((e,c)=>{uni.chooseVideo({camera:t,compressed:n,maxDuration:r,sourceType:i,extension:a,success(t){const{tempFilePath:n,duration:s,size:r,height:i,width:a}=t;e(o({errMsg:\"chooseVideo:ok\",tempFilePaths:[n],tempFiles:[{name:t.tempFile&&t.tempFile.name||\"\",path:n,size:r,type:t.tempFile&&t.tempFile.type||\"\",width:a,height:i,duration:s,fileType:\"video\",cloudPath:\"\"}]},\"video\"))},fail(e){c({errMsg:e.errMsg.replace(\"chooseVideo:fail\",s)})}})}))}(t),t):r(e,function(e){const{count:t,extension:n}=e;return new Promise(((e,r)=>{let i=uni.chooseFile;if(\"undefined\"!=typeof wx&&\"function\"==typeof wx.chooseMessageFile&&(i=wx.chooseMessageFile),\"function\"!=typeof i)return r({errMsg:s+\" 请指定 type 类型,该平台仅支持选择 image 或 video。\"});i({type:\"all\",count:t,extension:n,success(t){e(o(t))},fail(e){r({errMsg:e.errMsg.replace(\"chooseFile:fail\",s)})}})}))}(t),t)}}})),Gt=n(Xt);const Qt=\"manual\";function Zt(e){return{props:{localdata:{type:Array,default:()=>[]},options:{type:[Object,Array],default:()=>({})},spaceInfo:{type:Object,default:()=>({})},collection:{type:[String,Array],default:\"\"},action:{type:String,default:\"\"},field:{type:String,default:\"\"},orderby:{type:String,default:\"\"},where:{type:[String,Object],default:\"\"},pageData:{type:String,default:\"add\"},pageCurrent:{type:Number,default:1},pageSize:{type:Number,default:20},getcount:{type:[Boolean,String],default:!1},gettree:{type:[Boolean,String],default:!1},gettreepath:{type:[Boolean,String],default:!1},startwith:{type:String,default:\"\"},limitlevel:{type:Number,default:10},groupby:{type:String,default:\"\"},groupField:{type:String,default:\"\"},distinct:{type:[Boolean,String],default:!1},foreignKey:{type:String,default:\"\"},loadtime:{type:String,default:\"auto\"},manual:{type:Boolean,default:!1}},data:()=>({mixinDatacomLoading:!1,mixinDatacomHasMore:!1,mixinDatacomResData:[],mixinDatacomErrorMessage:\"\",mixinDatacomPage:{}}),created(){this.mixinDatacomPage={current:this.pageCurrent,size:this.pageSize,count:0},this.$watch((()=>{var e=[];return[\"pageCurrent\",\"pageSize\",\"localdata\",\"collection\",\"action\",\"field\",\"orderby\",\"where\",\"getont\",\"getcount\",\"gettree\",\"groupby\",\"groupField\",\"distinct\"].forEach((t=>{e.push(this[t])})),e}),((e,t)=>{if(this.loadtime===Qt)return;let n=!1;const s=[];for(let o=2;o<e.length;o++)e[o]!==t[o]&&(s.push(e[o]),n=!0);e[0]!==t[0]&&(this.mixinDatacomPage.current=this.pageCurrent),this.mixinDatacomPage.size=this.pageSize,this.onMixinDatacomPropsChange(n,s)}))},methods:{onMixinDatacomPropsChange(e,t){},mixinDatacomEasyGet({getone:e=!1,success:t,fail:n}={}){this.mixinDatacomLoading||(this.mixinDatacomLoading=!0,this.mixinDatacomErrorMessage=\"\",this.mixinDatacomGet().then((n=>{this.mixinDatacomLoading=!1;const{data:s,count:o}=n.result;this.getcount&&(this.mixinDatacomPage.count=o),this.mixinDatacomHasMore=s.length<this.pageSize;const r=e?s.length?s[0]:void 0:s;this.mixinDatacomResData=r,t&&t(r)})).catch((e=>{this.mixinDatacomLoading=!1,this.mixinDatacomErrorMessage=e,n&&n(e)})))},mixinDatacomGet(t={}){let n=e.database(this.spaceInfo);const s=t.action||this.action;s&&(n=n.action(s));const o=t.collection||this.collection;n=Array.isArray(o)?n.collection(...o):n.collection(o);const r=t.where||this.where;r&&Object.keys(r).length&&(n=n.where(r));const i=t.field||this.field;i&&(n=n.field(i));const a=t.foreignKey||this.foreignKey;a&&(n=n.foreignKey(a));const c=t.groupby||this.groupby;c&&(n=n.groupBy(c));const u=t.groupField||this.groupField;u&&(n=n.groupField(u));!0===(void 0!==t.distinct?t.distinct:this.distinct)&&(n=n.distinct());const l=t.orderby||this.orderby;l&&(n=n.orderBy(l));const h=void 0!==t.pageCurrent?t.pageCurrent:this.mixinDatacomPage.current,d=void 0!==t.pageSize?t.pageSize:this.mixinDatacomPage.size,f=void 0!==t.getcount?t.getcount:this.getcount,g=void 0!==t.gettree?t.gettree:this.gettree,p=void 0!==t.gettreepath?t.gettreepath:this.gettreepath,m={getCount:f},y={limitLevel:void 0!==t.limitlevel?t.limitlevel:this.limitlevel,startWith:void 0!==t.startwith?t.startwith:this.startwith};return g&&(m.getTree=y),p&&(m.getTreePath=y),n=n.skip(d*(h-1)).limit(d).get(m),n}}}}function en(e){return function(t,n={}){n=function(e,t={}){return e.customUI=t.customUI||e.customUI,Object.assign(e.loadingOptions,t.loadingOptions),Object.assign(e.errorOptions,t.errorOptions),e}({customUI:!1,loadingOptions:{title:\"加载中...\",mask:!0},errorOptions:{type:\"modal\",retry:!1}},n);const{customUI:s,loadingOptions:o,errorOptions:r}=n,i=!s;return new Proxy({},{get:(n,s)=>async function n(...c){let u;i&&uni.showLoading({title:o.title,mask:o.mask});try{u=await e.callFunction({name:t,type:a,data:{method:s,params:c}})}catch(e){u={result:e}}const{errCode:l,errMsg:h,newToken:d}=u.result||{};if(i&&uni.hideLoading(),d&&d.token&&d.tokenExpired&&(nt(d),N(E,{...d})),l){if(i)if(\"toast\"===r.type)uni.showToast({title:h,icon:\"none\"});else{if(\"modal\"!==r.type)throw new Error(`Invalid errorOptions.type: ${r.type}`);{const{confirm:e}=await async function({title:e,content:t,showCancel:n,cancelText:s,confirmText:o}={}){return new Promise(((r,i)=>{uni.showModal({title:e,content:t,showCancel:n,cancelText:s,confirmText:o,success(e){r(e)},fail(){r({confirm:!1,cancel:!0})}})}))}({title:\"提示\",content:h,showCancel:r.retry,cancelText:\"取消\",confirmText:r.retry?\"重试\":\"确定\"});if(r.retry&&e)return n(...c)}}const e=new M({code:l,message:h,requestId:u.requestId});throw e.detail=u.result,N(O,{type:x,content:e}),e}return N(O,{type:x,content:u.result}),u.result}})}}async function tn(e,t){const n=`http://${e}:${t}/system/ping`;try{const e=await(s={url:n,timeout:500},new Promise(((e,t)=>{H.request({...s,success(t){e(t)},fail(e){t(e)}})})));return!(!e.data||0!==e.data.code)}catch(e){return!1}var s}function nn(e){if(e.initUniCloudStatus&&\"rejected\"!==e.initUniCloudStatus)return;let t=Promise.resolve();var n;n=1,t=new Promise(((e,t)=>{setTimeout((()=>{e()}),n)})),e.isReady=!1,e.isDefault=!1;const s=e.auth();e.initUniCloudStatus=\"pending\",e.initUniCloud=t.then((()=>s.getLoginState())).then((e=>e?Promise.resolve():s.signInAnonymously())).then((()=>{if(!d)return Promise.resolve();if(\"app\"===g&&\"ios\"===uni.getSystemInfoSync().osName){const{osName:e,osVersion:t}=uni.getSystemInfoSync();\"ios\"===e&&function(e){if(!e||\"string\"!=typeof e)return 0;const t=e.match(/^(\\d+)./);return t&&t[1]?parseInt(t[1]):0}(t)>=14&&console.warn(\"iOS 14及以上版本连接uniCloud本地调试服务需要允许客户端查找并连接到本地网络上的设备(仅开发模式生效,发行模式会连接uniCloud云端服务)\")}if(d&&e.debugInfo){const{address:t,servePort:n}=e.debugInfo;return async function(e,t){let n;for(let s=0;s<e.length;s++){const o=e[s];if(await tn(o,t)){n=o;break}}return{address:n,port:t}}(t,n)}})).then((({address:t,port:n}={})=>{if(!d)return Promise.resolve();const s=console[\"app\"===g?\"error\":\"warn\"];if(t)e.localAddress=t,e.localPort=n;else if(e.debugInfo){let t=\"\";\"remote\"===e.debugInfo.initialLaunchType?(e.debugInfo.forceRemote=!0,t=\"当前客户端和HBuilderX不在同一局域网下(或其他网络原因无法连接HBuilderX),uniCloud本地调试服务不对当前客户端生效。\\n- 如果不使用uniCloud本地调试服务,请直接忽略此信息。\\n- 如需使用uniCloud本地调试服务,请将客户端与主机连接到同一局域网下并重新运行到客户端。\\n- 如果在HBuilderX开启的状态下切换过网络环境,请重启HBuilderX后再试\\n- 检查系统防火墙是否拦截了HBuilderX自带的nodejs\"):t=\"无法连接uniCloud本地调试服务,请检查当前客户端是否与主机在同一局域网下。\\n- 如需使用uniCloud本地调试服务,请将客户端与主机连接到同一局域网下并重新运行到客户端。\\n- 如果在HBuilderX开启的状态下切换过网络环境,请重启HBuilderX后再试\\n- 检查系统防火墙是否拦截了HBuilderX自带的nodejs\",\"web\"===g&&(t+=\"\\n- 部分浏览器开启节流模式之后访问本地地址受限,请检查是否启用了节流模式\"),0===g.indexOf(\"mp-\")&&(t+=\"\\n- 小程序中如何使用uniCloud,请参考:https://uniapp.dcloud.net.cn/uniCloud/publish.html#useinmp\"),s(t)}})).then((()=>{st(),e.isReady=!0,e.initUniCloudStatus=\"fulfilled\"})).catch((t=>{console.error(t),e.initUniCloudStatus=\"rejected\"}))}let sn=new class{init(e){let t={};const n=d&&(\"web\"===g&&navigator.userAgent.indexOf(\"HBuilderX\")>0||\"app\"===g);switch(e.provider){case\"tcb\":case\"tencent\":t=et.init(Object.assign(e,{debugLog:n}));break;case\"aliyun\":t=J.init(Object.assign(e,{debugLog:n}));break;case\"private\":t=rt.init(Object.assign(e,{debugLog:n}));break;default:throw new Error(\"未提供正确的provider参数\")}const s=p;d&&s&&!s.code&&(t.debugInfo=s),nn(t),t.reInit=function(){nn(this)},ft(t),function(e){const t=e.uploadFile;e.uploadFile=function(e){return t.call(this,e)}}(t),Pt(t),function(e){e.getCurrentUserInfo=Yt,e.chooseAndUploadFile=Gt.initChooseAndUploadFile(e),Object.assign(e,{get mixinDatacom(){return Zt(e)}}),e.importObject=en(e)}(t);return[\"callFunction\",\"uploadFile\",\"deleteFile\",\"getTempFileURL\",\"downloadFile\",\"chooseAndUploadFile\"].forEach((e=>{if(!t[e])return;const n=t[e];t[e]=function(){return t.reInit(),n.apply(t,Array.from(arguments))},t[e]=F(t[e],e).bind(t)})),t.init=this.init,t}};(()=>{{const e=m;let t={};if(1===e.length)t=e[0],sn=sn.init(t),sn.isDefault=!0;else{const t=[\"auth\",\"callFunction\",\"uploadFile\",\"deleteFile\",\"getTempFileURL\",\"downloadFile\",\"database\",\"getCurrentUSerInfo\",\"importObject\"];let n;n=e&&e.length>0?\"应用有多个服务空间,请通过uniCloud.init方法指定要使用的服务空间\":y?\"应用未关联服务空间,请在uniCloud目录右键关联服务空间\":\"uni-app cli项目内使用uniCloud需要使用HBuilderX的运行菜单运行项目,且需要在uniCloud目录关联服务空间\",t.forEach((e=>{sn[e]=function(){return console.error(n),Promise.reject(new M({code:\"SYS_ERR\",message:n}))}}))}Object.assign(sn,{get mixinDatacom(){return Zt(sn)}}),Wt(sn),sn.addInterceptor=v,sn.removeInterceptor=A,d&&\"web\"===g&&(window.uniCloud=sn)}})();var on=sn;export{on as default};\n","export default {\"appid\":\"__UNI__915967A\"}","/*\r\n * uCharts (R)\r\n * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360/快手)、Vue、Taro等支持canvas的框架平台\r\n * Copyright (C) 2018-2022 QIUN (R) 秋云 https://www.ucharts.cn All rights reserved.\r\n * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )\r\n * 复制使用请保留本段注释,感谢支持开源!\r\n * \r\n * uCharts (R) 官方网站\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 version: 'v2.4.3-20220505',\r\n yAxisWidth: 15,\r\n xAxisHeight: 22,\r\n xAxisTextPadding: 3,\r\n padding: [10, 10, 10, 10],\r\n pixelRatio: 1,\r\n rotate: false,\r\n fontSize: 13,\r\n fontColor: '#666666',\r\n dataPointShape: ['circle', 'circle', 'circle', 'circle'],\r\n color: ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'],\r\n linearColor: ['#0EE2F8', '#2BDCA8', '#FA7D8D', '#EB88E2', '#2AE3A0', '#0EE2F8', '#EB88E2', '#6773E3', '#F78A85'],\r\n pieChartLinePadding: 15,\r\n pieChartTextPadding: 5,\r\n titleFontSize: 20,\r\n subtitleFontSize: 15,\r\n toolTipPadding: 3,\r\n toolTipBackground: '#000000',\r\n toolTipOpacity: 0.7,\r\n toolTipLineHeight: 20,\r\n radarLabelTextMargin: 13,\r\n};\r\n\r\nvar assign = function(target, ...varArgs) {\r\n if (target == null) {\r\n throw new TypeError('[uCharts] 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 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] series数据需为Number格式');\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 if (num == num + 1) { //修复数据值过大num++无效的bug by 向日葵 @xrk_jy\r\n break;\r\n }\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 if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1){\r\n if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2\r\n dataChartWidth += (opts.extra.mount.widthRatio - 1)*chartData.eachSpacing;\r\n }\r\n var validDistance = distance;\r\n if (distance >= 0) {\r\n validDistance = 0;\r\n self.uevent.trigger('scrollLeft');\r\n self.scrollOption.position = 'left'\r\n opts.xAxis.scrollPosition = 'left';\r\n } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) {\r\n validDistance = dataChartAreaWidth - dataChartWidth;\r\n self.uevent.trigger('scrollRight');\r\n self.scrollOption.position = 'right'\r\n opts.xAxis.scrollPosition = 'right';\r\n } else {\r\n self.scrollOption.position = distance\r\n opts.xAxis.scrollPosition = distance;\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 createCurveControlPoints(points, i) {\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[i + 1].y);\r\n } else {\r\n return false;\r\n }\r\n }\r\n function isNotMiddlePointX(points, i) {\r\n if (points[i - 1] && points[i + 1]) {\r\n return points[i].x >= Math.max(points[i - 1].x, points[i + 1].x) || points[i].x <= Math.min(points[i - 1].x,\r\n points[i + 1].x);\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 if (isNotMiddlePointX(points, i + 1)) {\r\n pBx = points[i + 1].x;\r\n }\r\n if (isNotMiddlePointX(points, i)) {\r\n pAx = points[i].x;\r\n }\r\n if (pAy >= Math.max(points[i].y, points[i + 1].y) || pAy <= Math.min(points[i].y, points[i + 1].y)) {\r\n pAy = points[i].y;\r\n }\r\n if (pBy >= Math.max(points[i].y, points[i + 1].y) || pBy <= Math.min(points[i].y, points[i + 1].y)) {\r\n pBy = points[i + 1].y;\r\n }\r\n if (pAx >= Math.max(points[i].x, points[i + 1].x) || pAx <= Math.min(points[i].x, points[i + 1].x)) {\r\n pAx = points[i].x;\r\n }\r\n if (pBx >= Math.max(points[i].x, points[i + 1].x) || pBx <= Math.min(points[i].x, points[i + 1].x)) {\r\n pBx = points[i + 1].x;\r\n }\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\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 fixPieSeries(series, opts, config){\r\n let pieSeriesArr = [];\r\n if(series.length>0 && series[0].data.constructor.toString().indexOf('Array') > -1){\r\n opts._pieSeries_ = series;\r\n let oldseries = series[0].data;\r\n for (var i = 0; i < oldseries.length; i++) {\r\n oldseries[i].formatter = series[0].formatter;\r\n oldseries[i].data = oldseries[i].value;\r\n pieSeriesArr.push(oldseries[i]);\r\n }\r\n opts.series = pieSeriesArr;\r\n }else{\r\n pieSeriesArr = series;\r\n }\r\n return pieSeriesArr;\r\n}\r\n\r\nfunction fillSeries(series, opts, config) {\r\n var index = 0;\r\n for (var i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n if (!item.color) {\r\n item.color = config.color[index];\r\n index = (index + 1) % config.color.length;\r\n }\r\n if (!item.linearIndex) {\r\n item.linearIndex = i;\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 case 'bar':\r\n item.legendShape = \"rect\";\r\n break;\r\n case 'area':\r\n case 'mount':\r\n item.legendShape = \"triangle\";\r\n break;\r\n default:\r\n item.legendShape = \"circle\";\r\n }\r\n }\r\n }\r\n return series;\r\n}\r\n\r\nfunction fillCustomColor(linearType, customColor, series, config) {\r\n var newcolor = customColor || [];\r\n if (linearType == 'custom' && newcolor.length == 0 ) {\r\n newcolor = config.linearColor;\r\n }\r\n if (linearType == 'custom' && newcolor.length < series.length) {\r\n let chazhi = series.length - newcolor.length;\r\n for (var i = 0; i < chazhi; i++) {\r\n newcolor.push(config.linearColor[(i + 1) % config.linearColor.length]);\r\n }\r\n }\r\n return newcolor;\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, fontSize, context) {\r\n var width = 0;\r\n text = String(text);\r\n\r\n\r\n\r\n if (context !== false && context !== undefined && context.setFontSize && context.measureText) {\r\n context.setFontSize(fontSize);\r\n return context.measureText(text).width;\r\n } else {\r\n var text = text.split('');\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 (/:/.test(item)) {\r\n width += 2.5;\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\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.pix;\r\n x = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pix / 2) * (opts.pix - 1)) * opts.pix;\r\n } else {\r\n x = touches.clientX * opts.pix;\r\n y = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pix / 2) * (opts.pix - 1)) * opts.pix;\r\n }\r\n } else {\r\n if (opts.rotate) {\r\n y = opts.height - touches.x * opts.pix;\r\n x = touches.y * opts.pix;\r\n } else {\r\n x = touches.x * opts.pix;\r\n y = touches.y * opts.pix;\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, group) {\r\n var data = [];\r\n var newSeries = [];\r\n var indexIsArr = index.constructor.toString().indexOf('Array') > -1;\r\n if(indexIsArr){\r\n let tempSeries = filterSeries(series);\r\n for (var i = 0; i < group.length; i++) {\r\n newSeries.push(tempSeries[group[i]]);\r\n }\r\n }else{\r\n newSeries = series;\r\n };\r\n for (let i = 0; i < newSeries.length; i++) {\r\n let item = newSeries[i];\r\n let tmpindex = -1;\r\n if(indexIsArr){\r\n tmpindex = index[i];\r\n }else{\r\n tmpindex = index;\r\n }\r\n if (item.data[tmpindex] !== null && typeof item.data[tmpindex] !== '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.formatter ? item.formatter(item.data[tmpindex]) : item.data[tmpindex];\r\n data.push(seriesItem);\r\n }\r\n }\r\n return data;\r\n}\r\n\r\nfunction getMaxTextListLength(list, fontSize, context) {\r\n var lengthList = list.map(function(item) {\r\n return measureText(item, fontSize, context);\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 return CoordinateSeries.map(function(item) {\r\n return -1 * item + Math.PI / 2;\r\n });\r\n}\r\n\r\nfunction getToolTipData(seriesData, opts, index, group, categories) {\r\n var option = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\r\n var calPoints = opts.chartData.calPoints?opts.chartData.calPoints:[];\r\n let points = {};\r\n if(group.length > 0){\r\n let filterPoints = [];\r\n for (let i = 0; i < group.length; i++) {\r\n filterPoints.push(calPoints[group[i]])\r\n }\r\n points = filterPoints[0][index[0]];\r\n }else{\r\n for (let i = 0; i < calPoints.length; i++) {\r\n if(calPoints[i][index]){\r\n points = calPoints[i][index];\r\n break;\r\n }\r\n }\r\n };\r\n var textList = seriesData.map(function(item) {\r\n let titleText = null;\r\n if (opts.categories && opts.categories.length>0) {\r\n titleText = categories[index];\r\n };\r\n return {\r\n text: option.formatter ? option.formatter(item, titleText, index, opts) : item.name + ': ' + item.data,\r\n color: item.color\r\n };\r\n });\r\n var offset = {\r\n x: Math.round(points.x),\r\n y: Math.round(points.y)\r\n };\r\n return {\r\n textList: textList,\r\n offset: offset\r\n };\r\n}\r\n\r\nfunction getMixToolTipData(seriesData, opts, index, categories) {\r\n var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\r\n var points = opts.chartData.xAxisPoints[index] + opts.chartData.eachSpacing / 2;\r\n var textList = seriesData.map(function(item) {\r\n return {\r\n text: option.formatter ? option.formatter(item, categories[index], index, opts) : 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 offset = {\r\n x: Math.round(points),\r\n y: 0\r\n };\r\n return {\r\n textList: textList,\r\n offset: offset\r\n };\r\n}\r\n\r\nfunction getCandleToolTipData(series, seriesData, opts, index, categories, extra) {\r\n var option = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};\r\n var calPoints = opts.chartData.calPoints;\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 seriesData.map(function(item) {\r\n if (index == 0) {\r\n if (item.data[1] - item.data[0] < 0) {\r\n color[1] = downColor;\r\n } else {\r\n color[1] = upColor;\r\n }\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 current={ index:-1, group:[] };\r\n var spacing = opts.chartData.eachSpacing / 2;\r\n let xAxisPoints = [];\r\n if (calPoints && calPoints.length > 0) {\r\n if (!opts.categories) {\r\n spacing = 0;\r\n }else{\r\n for (let i = 1; i < opts.chartData.xAxisPoints.length; i++) {\r\n xAxisPoints.push(opts.chartData.xAxisPoints[i] - spacing);\r\n }\r\n if ((opts.type == 'line' || opts.type == 'area') && opts.xAxis.boundaryGap == 'justify') {\r\n xAxisPoints = opts.chartData.xAxisPoints;\r\n }\r\n }\r\n if (isInExactChartArea(currentPoints, opts, config)) {\r\n if (!opts.categories) {\r\n let timePoints = Array(calPoints.length);\r\n for (let i = 0; i < calPoints.length; i++) {\r\n timePoints[i] = Array(calPoints[i].length)\r\n for (let j = 0; j < calPoints[i].length; j++) {\r\n timePoints[i][j] = (Math.abs(calPoints[i][j].x - currentPoints.x));\r\n }\r\n };\r\n let pointValue = Array(timePoints.length);\r\n let pointIndex = Array(timePoints.length);\r\n for (let i = 0; i < timePoints.length; i++) {\r\n pointValue[i] = Math.min.apply(null, timePoints[i]);\r\n pointIndex[i] = timePoints[i].indexOf(pointValue[i]);\r\n }\r\n let minValue = Math.min.apply(null, pointValue);\r\n current.index = [];\r\n for (let i = 0; i < pointValue.length; i++) {\r\n if(pointValue[i] == minValue){\r\n current.group.push(i);\r\n current.index.push(pointIndex[i]);\r\n }\r\n };\r\n }else{\r\n xAxisPoints.forEach(function(item, index) {\r\n if (currentPoints.x + offset + spacing > item) {\r\n current.index = index;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n return current;\r\n}\r\n\r\nfunction findBarChartCurrentIndex(currentPoints, calPoints, opts, config) {\r\n var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\r\n var current={ index:-1, group:[] };\r\n var spacing = opts.chartData.eachSpacing / 2;\r\n let yAxisPoints = opts.chartData.yAxisPoints;\r\n if (calPoints && calPoints.length > 0) {\r\n if (isInExactChartArea(currentPoints, opts, config)) {\r\n yAxisPoints.forEach(function(item, index) {\r\n if (currentPoints.y + offset + spacing > item) {\r\n current.index = index;\r\n }\r\n });\r\n }\r\n }\r\n return current;\r\n}\r\n\r\nfunction findLegendIndex(currentPoints, legendData, opts) {\r\n let currentIndex = -1;\r\n let gap = 0;\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 (area && currentPoints.x > area[0] - gap && currentPoints.x < area[2] + gap && currentPoints.y > area[1] - gap && currentPoints.y < area[3] + gap) {\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 && 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 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 var angleList = radarData.angleList.map(function(item) {\r\n item = fixAngle(-1 * item);\r\n return item;\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 <= rangeEnd) {\r\n currentIndex = index;\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, opts.chartData.mapData.mercator)) {\r\n currentIndex = i;\r\n break;\r\n }\r\n }\r\n return currentIndex;\r\n}\r\n\r\nfunction findRoseChartCurrentIndex(currentPoints, pieData, opts) {\r\n var currentIndex = -1;\r\n var series = getRoseDataPoints(opts._series_, opts.extra.rose.type, pieData.radius, pieData.radius);\r\n if (pieData && pieData.center && 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 if(opts.extra.rose && opts.extra.rose.offsetAngle){\r\n angle = angle - opts.extra.rose.offsetAngle * Math.PI / 180;\r\n }\r\n for (var i = 0, len = series.length; i < len; i++) {\r\n if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._rose_proportion_ * 2 * Math.PI)) {\r\n currentIndex = i;\r\n break;\r\n }\r\n }\r\n }\r\n return currentIndex;\r\n}\r\n\r\nfunction findPieChartCurrentIndex(currentPoints, pieData, opts) {\r\n var currentIndex = -1;\r\n var series = getPieDataPoints(pieData.series);\r\n if (pieData && pieData.center && 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 if(opts.extra.pie && opts.extra.pie.offsetAngle){\r\n angle = angle - opts.extra.pie.offsetAngle * Math.PI / 180;\r\n }\r\n if(opts.extra.ring && opts.extra.ring.offsetAngle){\r\n angle = angle - opts.extra.ring.offsetAngle * Math.PI / 180;\r\n }\r\n for (var i = 0, len = series.length; i < len; i++) {\r\n if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._proportion_ * 2 * Math.PI)) {\r\n currentIndex = i;\r\n break;\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\n\r\nfunction splitPoints(points,eachSeries) {\r\n var newPoints = [];\r\n var items = [];\r\n points.forEach(function(item, index) {\r\n if(eachSeries.connectNulls){\r\n if (item !== null) {\r\n items.push(item);\r\n }\r\n }else{\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 \r\n });\r\n if (items.length) {\r\n newPoints.push(items);\r\n }\r\n return newPoints;\r\n}\r\n\r\n\r\nfunction calLegendData(series, opts, config, chartData, context) {\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 let padding = opts.legend.padding * opts.pix;\r\n let margin = opts.legend.margin * opts.pix;\r\n let fontSize = opts.legend.fontSize ? opts.legend.fontSize * opts.pix : config.fontSize;\r\n let shapeWidth = 15 * opts.pix;\r\n let shapeRight = 5 * opts.pix;\r\n let lineHeight = Math.max(opts.legend.lineHeight * opts.pix, 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 const legendText = item.legendText ? item.legendText : item.name;\r\n let itemWidth = shapeWidth + shapeRight + measureText(legendText || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix;\r\n if (widthCount + itemWidth > opts.width - opts.area[1] - opts.area[3]) {\r\n legendList.push(currentRow);\r\n widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix);\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 * opts.pix);\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.area[3];\r\n legendData.area.end.x = opts.area[3] + legendWidth + 2 * padding;\r\n break;\r\n case 'right':\r\n legendData.area.start.x = opts.width - opts.area[1] - legendWidth - 2 * padding;\r\n legendData.area.end.x = opts.width - opts.area[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.area[0] - opts.area[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.area[0] + margin;\r\n legendData.area.end.y = opts.area[0] + margin + legendData.area.height;\r\n break;\r\n case 'bottom':\r\n legendData.area.start.y = opts.height - opts.area[2] - margin - legendData.area.height;\r\n legendData.area.end.y = opts.height - opts.area[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 legendData.points = currentRow;\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, context) + opts.legend.itemGap * opts.pix;\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 * opts.pix + 2 * padding;\r\n legendData.area.wholeWidth = legendData.area.width + padding;\r\n }\r\n }\r\n switch (opts.legend.position) {\r\n case 'top':\r\n legendData.area.start.y = opts.area[0] + margin;\r\n legendData.area.end.y = opts.area[0] + margin + legendData.area.height;\r\n break;\r\n case 'bottom':\r\n legendData.area.start.y = opts.height - opts.area[2] - legendData.area.height - margin;\r\n legendData.area.end.y = opts.height - opts.area[2] - margin;\r\n break;\r\n case 'left':\r\n legendData.area.start.x = opts.area[3];\r\n legendData.area.end.x = opts.area[3] + legendData.area.width;\r\n break;\r\n case 'right':\r\n legendData.area.start.x = opts.width - opts.area[1] - legendData.area.width;\r\n legendData.area.end.x = opts.width - opts.area[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, context) {\r\n var result = {\r\n angle: 0,\r\n xAxisHeight: config.xAxisHeight\r\n };\r\n var fontSize = opts.xAxis.fontSize * opts.pix || config.fontSize;\r\n var categoriesTextLenth = categories.map(function(item,index) {\r\n var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item,index,opts) : item;\r\n return measureText(String(xitem), fontSize, context);\r\n });\r\n \r\n var maxTextLength = Math.max.apply(this, categoriesTextLenth);\r\n if (opts.xAxis.rotateLabel == true) {\r\n result.angle = opts.xAxis.rotateAngle * Math.PI / 180;\r\n let tempHeight = 2 * config.xAxisTextPadding + Math.abs(maxTextLength * Math.sin(result.angle))\r\n tempHeight = tempHeight < fontSize + 2 * config.xAxisTextPadding ? tempHeight + 2 * config.xAxisTextPadding : tempHeight;\r\n if(opts.enableScroll == true && opts.xAxis.scrollShow == true){\r\n tempHeight += 12 * opts.pix;\r\n }\r\n result.xAxisHeight = tempHeight;\r\n }\r\n if (opts.xAxis.disabled){\r\n result.xAxisHeight = 0;\r\n }\r\n return result;\r\n}\r\n\r\nfunction getXAxisTextList(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.toString().indexOf('Array') > -1) {\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.toString().indexOf('Array') > -1) {\r\n if (opts.type == 'candle') {\r\n item.map(function(subitem) {\r\n sorted.push(subitem);\r\n })\r\n } else {\r\n sorted.push(item[0]);\r\n }\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\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 if (minData === maxData) {\r\n var rangeSpan = maxData || 10;\r\n maxData += rangeSpan;\r\n }\r\n //var dataRange = getDataRange(minData, maxData);\r\n var minRange = minData;\r\n var maxRange = maxData;\r\n var range = [];\r\n var eachRange = (maxRange - minRange) / opts.xAxis.splitNumber;\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, context) {\r\n //堆叠图重算Y轴\r\n var columnstyle = assign({}, {\r\n type: \"\"\r\n }, opts.extra.bar);\r\n var result = {\r\n angle: 0,\r\n xAxisHeight: config.xAxisHeight\r\n };\r\n result.ranges = getXAxisTextList(series, opts, config, columnstyle.type);\r\n result.rangesFormat = result.ranges.map(function(item) {\r\n //item = opts.xAxis.formatter ? opts.xAxis.formatter(item) : util.toFixed(item, 2);\r\n 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.formatter ? opts.xAxis.formatter(Number(item)) : item;\r\n return item;\r\n });\r\n result = Object.assign(result, getXAxisPoints(xAxisScaleValues, opts, config));\r\n // 计算X轴刻度的属性譬如每个刻度的间隔,刻度的起始点\\结束点以及总长\r\n var eachSpacing = result.eachSpacing;\r\n var textLength = xAxisScaleValues.map(function(item) {\r\n return measureText(item, opts.xAxis.fontSize * opts.pix || config.fontSize, context);\r\n });\r\n // get max length of categories text\r\n var maxTextLength = Math.max.apply(this, textLength);\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 if (opts.xAxis.disabled === true) {\r\n result.xAxisHeight = 0;\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 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 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 listItem.legendShape = each.legendShape;\r\n listItem.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 tmp.proportion = item / maxData;\r\n tmp.value = item;\r\n tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion * process * Math.sin(tmp.angle), center);\r\n listItem.data.push(tmp);\r\n });\r\n data.push(listItem);\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 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 return series;\r\n}\r\n\r\nfunction getFunnelDataPoints(series, radius, type, eachSpacing) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n series = series.sort(function(a, b) {\r\n return parseInt(b.data) - parseInt(a.data);\r\n });\r\n for (let i = 0; i < series.length; i++) {\r\n if(type == 'funnel'){\r\n series[i].radius = series[i].data / series[0].data * radius * process;\r\n }else{\r\n series[i].radius = (eachSpacing * (series.length - i)) / (eachSpacing * series.length) * radius * process;\r\n }\r\n series[i]._proportion_ = series[i].data / series[0].data;\r\n }\r\n if(type !== 'pyramid'){\r\n series.reverse();\r\n }\r\n return series;\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 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 var minData = Math.min.apply(null, dataArr);\r\n var maxData = Math.max.apply(null, dataArr);\r\n var radiusLength = radius - minRadius;\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 item._rose_proportion_ = 1 / series.length * process;\r\n } else {\r\n item._proportion_ = item.data / count * process;\r\n if(type == 'area'){\r\n item._rose_proportion_ = 1 / series.length * process;\r\n }else{\r\n item._rose_proportion_ = item.data / count * process;\r\n }\r\n }\r\n item._radius_ = minRadius + radiusLength * ((item.data - minData) / (maxData - minData)) || 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._rose_proportion_ * Math.PI;\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 if (arcbarOption.endAngle < arcbarOption.startAngle) {\r\n totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;\r\n } else {\r\n totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;\r\n }\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 getGaugeArcbarDataPoints(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 if (arcbarOption.endAngle < arcbarOption.startAngle) {\r\n totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;\r\n } else {\r\n totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;\r\n }\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, config, context, opts) {\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.formatter ? item.formatter(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%';\r\n maxLength = Math.max(maxLength, measureText(text, item.textSize * opts.pix || config.fontSize, context));\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 var seriesGap = 0;\r\n var categoryGap = 0;\r\n if (opts.type == 'mix') {\r\n seriesGap = opts.extra.mix.column.seriesGap * opts.pix || 0;\r\n categoryGap = opts.extra.mix.column.categoryGap * opts.pix || 0;\r\n } else {\r\n seriesGap = opts.extra.column.seriesGap * opts.pix || 0;\r\n categoryGap = opts.extra.column.categoryGap * opts.pix || 0;\r\n }\r\n seriesGap = Math.min(seriesGap, eachSpacing / columnLen)\r\n categoryGap = Math.min(categoryGap, eachSpacing / columnLen)\r\n item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen);\r\n if (opts.extra.mix && opts.extra.mix.column.width && +opts.extra.mix.column.width > 0) {\r\n item.width = Math.min(item.width, +opts.extra.mix.column.width * opts.pix);\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 * opts.pix);\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 + seriesGap);\r\n return item;\r\n });\r\n}\r\n\r\nfunction fixBarData(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 var seriesGap = 0;\r\n var categoryGap = 0;\r\n seriesGap = opts.extra.bar.seriesGap * opts.pix || 0;\r\n categoryGap = opts.extra.bar.categoryGap * opts.pix || 0;\r\n seriesGap = Math.min(seriesGap, eachSpacing / columnLen)\r\n categoryGap = Math.min(categoryGap, eachSpacing / columnLen)\r\n item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen);\r\n if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) {\r\n item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix);\r\n }\r\n if (item.width <= 0) {\r\n item.width = 1;\r\n }\r\n item.y += (index + 0.5 - columnLen / 2) * (item.width + seriesGap);\r\n return item;\r\n });\r\n}\r\n\r\nfunction fixColumeMeterData(points, eachSpacing, columnLen, index, config, opts, border) {\r\n var categoryGap = opts.extra.column.categoryGap * opts.pix || 0;\r\n return points.map(function(item) {\r\n if (item === null) {\r\n return null;\r\n }\r\n item.width = eachSpacing - 2 * categoryGap;\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 * opts.pix);\r\n }\r\n if (index > 0) {\r\n item.width -= 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 var categoryGap = opts.extra.column.categoryGap * opts.pix || 0;\r\n return points.map(function(item, indexn) {\r\n if (item === null) {\r\n return null;\r\n }\r\n item.width = Math.ceil(eachSpacing - 2 * categoryGap);\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 * opts.pix);\r\n }\r\n if (item.width <= 0) {\r\n item.width = 1;\r\n }\r\n return item;\r\n });\r\n}\r\n\r\nfunction fixBarStackData(points, eachSpacing, columnLen, index, config, opts, series) {\r\n var categoryGap = opts.extra.bar.categoryGap * opts.pix || 0;\r\n return points.map(function(item, indexn) {\r\n if (item === null) {\r\n return null;\r\n }\r\n item.width = Math.ceil(eachSpacing - 2 * categoryGap);\r\n if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) {\r\n item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix);\r\n }\r\n if (item.width <= 0) {\r\n item.width = 1;\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' || opts.type == 'scatter' || opts.type == 'bubble' || opts.type == 'bar') && dataCount > 1 && opts.xAxis.boundaryGap == 'justify') {\r\n dataCount -= 1;\r\n }\r\n var widthRatio = 0;\r\n if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1){\r\n if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2\r\n widthRatio = opts.extra.mount.widthRatio - 1;\r\n dataCount += widthRatio;\r\n }\r\n var eachSpacing = spacingValid / dataCount;\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 + widthRatio / 2 * eachSpacing + index * eachSpacing);\r\n });\r\n if (opts.xAxis.boundaryGap !== 'justify') {\r\n if (opts.enableScroll === true) {\r\n xAxisPoints.push(startX + widthRatio * eachSpacing + 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 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' || opts.type == 'scatter' || opts.type == 'bubble' ) {\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 var 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 if (item.constructor.toString().indexOf('Array') > -1) {\r\n let xranges, xminRange, xmaxRange;\r\n xranges = [].concat(opts.chartData.xAxisData.ranges);\r\n xminRange = xranges.shift();\r\n xmaxRange = xranges.pop();\r\n value = item[1];\r\n point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);\r\n if(opts.type == 'bubble'){\r\n point.r = item[2];\r\n point.t = item[3];\r\n }\r\n } else {\r\n value = item.value;\r\n }\r\n }\r\n if (boundaryGap == 'center') {\r\n point.x += eachSpacing / 2;\r\n }\r\n var height = validHeight * (value - minRange) / (maxRange - minRange);\r\n height *= process;\r\n point.y = opts.height - height - opts.area[2];\r\n points.push(point);\r\n }\r\n });\r\n return points;\r\n}\r\n\r\nfunction getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption) {\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 var validWidth = opts.width - opts.area[1] - opts.area[3];\r\n var mountWidth = eachSpacing * mountOption.widthRatio;\r\n series.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 point.x += eachSpacing / 2;\r\n var value = item.data;\r\n var height = validHeight * (value - minRange) / (maxRange - minRange);\r\n height *= process;\r\n point.y = opts.height - height - opts.area[2];\r\n point.value = value;\r\n point.width = mountWidth;\r\n points.push(point);\r\n }\r\n });\r\n return points;\r\n}\r\n\r\nfunction getBarDataPoints(data, minRange, maxRange, yAxisPoints, 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 var 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.y = yAxisPoints[index];\r\n var value = item;\r\n if (typeof item === 'object' && item !== null) {\r\n value = item.value;\r\n }\r\n var height = validWidth * (value - minRange) / (maxRange - minRange);\r\n height *= process;\r\n point.height = height;\r\n point.value = value;\r\n point.x = height + opts.area[3];\r\n points.push(point);\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 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 return points;\r\n}\r\n\r\nfunction getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, 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.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.y = yAxisPoints[index];\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.height = height - heightc;\r\n point.x = opts.area[3] + height;\r\n point.x0 = opts.area[3] + heightc;\r\n points.push(point);\r\n }\r\n });\r\n return points;\r\n}\r\n\r\nfunction getYAxisTextList(series, opts, config, stack, yData) {\r\n var index = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : -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.toString().indexOf('Array') > -1) {\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.toString().indexOf('Array') > -1) {\r\n if (opts.type == 'candle') {\r\n item.map(function(subitem) {\r\n sorted.push(subitem);\r\n })\r\n } else {\r\n sorted.push(item[1]);\r\n }\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 var minData = yData.min || 0;\r\n var maxData = yData.max || 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 if (minData === maxData) {\r\n // var rangeSpan = maxData || 10;\r\n // maxData += rangeSpan;\r\n if(maxData == 0){\r\n maxData = 10;\r\n }else{\r\n minData = 0;\r\n }\r\n }\r\n var dataRange = getDataRange(minData, maxData);\r\n var minRange = (yData.min === undefined || yData.min === null) ? dataRange.minRange : yData.min;\r\n var maxRange = (yData.max === undefined || yData.max === null) ? dataRange.maxRange : yData.max;\r\n var range = [];\r\n var eachRange = (maxRange - minRange) / opts.yAxis.splitNumber;\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, context) {\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\r\n for (let i = 0; i < YLength; i++) {\r\n let yData = opts.yAxis.data[i];\r\n //如果总开关不显示,强制每个Y轴为不显示\r\n if (opts.yAxis.disabled == true) {\r\n yData.disabled = true;\r\n }\r\n if(yData.type === 'categories'){\r\n if(!yData.formatter){\r\n yData.formatter = (val,index,opts) => {return val + (yData.unit || '')};\r\n }\r\n yData.categories = yData.categories || opts.categories;\r\n rangesArr[i] = yData.categories;\r\n }else{\r\n if(!yData.formatter){\r\n yData.formatter = (val,index,opts) => {return val.toFixed(yData.tofix) + (yData.unit || '')};\r\n }\r\n rangesArr[i] = getYAxisTextList(newSeries[i], opts, config, columnstyle.type, yData, i);\r\n }\r\n let yAxisFontSizes = yData.fontSize * opts.pix || config.fontSize;\r\n yAxisWidthArr[i] = {\r\n position: yData.position ? yData.position : 'left',\r\n width: 0\r\n };\r\n rangesFormatArr[i] = rangesArr[i].map(function(items,index) {\r\n items = yData.formatter(items,index,opts);\r\n yAxisWidthArr[i].width = Math.max(yAxisWidthArr[i].width, measureText(items, yAxisFontSizes, context) + 5);\r\n return items;\r\n });\r\n let calibration = yData.calibration ? 4 * opts.pix : 0;\r\n yAxisWidthArr[i].width += calibration + 3 * opts.pix;\r\n if (yData.disabled === true) {\r\n yAxisWidthArr[i].width = 0;\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 if(opts.type === 'bar'){\r\n rangesArr[0] = opts.categories;\r\n if(!opts.yAxis.formatter){\r\n opts.yAxis.formatter = (val,index,opts) => {return val + (opts.yAxis.unit || '')}\r\n }\r\n }else{\r\n if(!opts.yAxis.formatter){\r\n opts.yAxis.formatter = (val,index,opts) => {return val.toFixed(opts.yAxis.tofix ) + (opts.yAxis.unit || '')}\r\n }\r\n rangesArr[0] = getYAxisTextList(series, opts, config, columnstyle.type, {});\r\n }\r\n yAxisWidthArr[0] = {\r\n position: 'left',\r\n width: 0\r\n };\r\n var yAxisFontSize = opts.yAxis.fontSize * opts.pix || config.fontSize;\r\n rangesFormatArr[0] = rangesArr[0].map(function(item,index) {\r\n item = opts.yAxis.formatter(item,index,opts);\r\n yAxisWidthArr[0].width = Math.max(yAxisWidthArr[0].width, measureText(item, yAxisFontSize, context) + 5);\r\n return item;\r\n });\r\n yAxisWidthArr[0].width += 3 * opts.pix;\r\n if (opts.yAxis.disabled === true) {\r\n yAxisWidthArr[0] = {\r\n position: 'left',\r\n width: 0\r\n };\r\n opts.yAxis.data[0] = {\r\n disabled: true\r\n };\r\n } else {\r\n opts.yAxis.data[0] = {\r\n disabled: false,\r\n position: 'left',\r\n max: opts.yAxis.max,\r\n min: opts.yAxis.min,\r\n formatter: opts.yAxis.formatter\r\n };\r\n if(opts.type === 'bar'){\r\n opts.yAxis.data[0].categories = opts.categories;\r\n opts.yAxis.data[0].type = 'categories';\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\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].formatter ? opts.yAxis.data[i].formatter(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 if (opts.dataPointShapeType == 'hollow') {\r\n context.setStrokeStyle(color);\r\n context.setFillStyle(opts.background);\r\n context.setLineWidth(2 * opts.pix);\r\n } else {\r\n context.setStrokeStyle(\"#ffffff\");\r\n context.setFillStyle(color);\r\n context.setLineWidth(1 * opts.pix);\r\n }\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.pix, item.y);\r\n context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);\r\n }\r\n });\r\n } else if (shape === 'square') {\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 } else if (shape === 'triangle') {\r\n return;\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 || opts.fontColor;\r\n var subtitleFontColor = opts.subtitle.color || opts.fontColor;\r\n var titleHeight = title ? titlefontSize : 0;\r\n var subtitleHeight = subtitle ? subtitlefontSize : 0;\r\n var margin = 5;\r\n if (subtitle) {\r\n var textWidth = measureText(subtitle, subtitlefontSize * opts.pix, context);\r\n var startX = center.x - textWidth / 2 + (opts.subtitle.offsetX|| 0) * opts.pix ;\r\n var startY = center.y + subtitlefontSize * opts.pix / 2 + (opts.subtitle.offsetY || 0) * opts.pix;\r\n if (title) {\r\n startY += (titleHeight * opts.pix + margin) / 2;\r\n }\r\n context.beginPath();\r\n context.setFontSize(subtitlefontSize * opts.pix);\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 * opts.pix, context);\r\n var _startX = center.x - _textWidth / 2 + (opts.title.offsetX || 0);\r\n var _startY = center.y + titlefontSize * opts.pix / 2 + (opts.title.offsetY || 0) * opts.pix;\r\n if (subtitle) {\r\n _startY -= (subtitleHeight * opts.pix + margin) / 2;\r\n }\r\n context.beginPath();\r\n context.setFontSize(titlefontSize * opts.pix);\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, opts) {\r\n // 绘制数据文案\r\n var data = series.data;\r\n var textOffset = series.textOffset ? series.textOffset : 0;\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n context.beginPath();\r\n var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;\r\n context.setFontSize(fontSize);\r\n context.setFillStyle(series.textColor || opts.fontColor);\r\n var value = data[index]\r\n if (typeof data[index] === 'object' && data[index] !== null) {\r\n if (data[index].constructor.toString().indexOf('Array')>-1) {\r\n value = data[index][1];\r\n } else {\r\n value = data[index].value\r\n }\r\n }\r\n var formatVal = series.formatter ? series.formatter(value,index,series,opts) : value;\r\n context.setTextAlign('center');\r\n context.fillText(String(formatVal), item.x, item.y - 4 + textOffset * opts.pix);\r\n context.closePath();\r\n context.stroke();\r\n context.setTextAlign('left');\r\n }\r\n });\r\n}\r\n\r\nfunction drawMountPointText(points, series, config, context, opts) {\r\n // 绘制数据文案\r\n var data = series.data;\r\n var textOffset = series.textOffset ? series.textOffset : 0;\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n context.beginPath();\r\n var fontSize = series[index].textSize ? series[index].textSize * opts.pix : config.fontSize;\r\n context.setFontSize(fontSize);\r\n context.setFillStyle(series[index].textColor || opts.fontColor);\r\n var value = item.value\r\n var formatVal = series[index].formatter ? series[index].formatter(value,index,series,opts) : value;\r\n context.setTextAlign('center');\r\n context.fillText(String(formatVal), item.x, item.y - 4 + textOffset * opts.pix);\r\n context.closePath();\r\n context.stroke();\r\n context.setTextAlign('left');\r\n }\r\n });\r\n}\r\n\r\nfunction drawBarPointText(points, series, config, context, opts) {\r\n // 绘制数据文案\r\n var data = series.data;\r\n var textOffset = series.textOffset ? series.textOffset : 0;\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n context.beginPath();\r\n var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;\r\n context.setFontSize(fontSize);\r\n context.setFillStyle(series.textColor || opts.fontColor);\r\n var value = data[index]\r\n if (typeof data[index] === 'object' && data[index] !== null) {\r\n value = data[index].value ;\r\n }\r\n var formatVal = series.formatter ? series.formatter(value,index,series,opts) : value;\r\n context.setTextAlign('left');\r\n context.fillText(String(formatVal), item.x + 4 * opts.pix , item.y + fontSize / 2 - 3 );\r\n context.closePath();\r\n context.stroke();\r\n }\r\n });\r\n}\r\n\r\nfunction drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context) {\r\n radius -= gaugeOption.width / 2 + gaugeOption.labelOffset * opts.pix;\r\n radius = radius < 10 ? 10 : radius;\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.formatter ? gaugeOption.formatter(nowNumber,i,opts) : nowNumber;\r\n pos.x += centerPosition.x - measureText(labelText, config.fontSize, context) / 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 || opts.fontColor);\r\n context.fillText(labelText, startX, startY + config.fontSize / 2);\r\n context.closePath();\r\n context.stroke();\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\nfunction drawRadarLabel(angleList, radius, centerPosition, opts, config, context) {\r\n var radarOption = opts.extra.radar || {};\r\n angleList.forEach(function(angle, index) {\r\n if(radarOption.labelPointShow === true && opts.categories[index] !== ''){\r\n var posPoint = {\r\n x: radius * Math.cos(angle),\r\n y: radius * Math.sin(angle)\r\n };\r\n var posPointAxis = convertCoordinateOrigin(posPoint.x, posPoint.y, centerPosition);\r\n context.setFillStyle(radarOption.labelPointColor);\r\n context.beginPath();\r\n context.arc(posPointAxis.x, posPointAxis.y, radarOption.labelPointRadius * opts.pix, 0, 2 * Math.PI, false);\r\n context.closePath();\r\n context.fill();\r\n }\r\n var pos = {\r\n x: (radius + config.radarLabelTextMargin * opts.pix) * Math.cos(angle),\r\n y: (radius + config.radarLabelTextMargin * opts.pix) * 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] || '', config.fontSize, context) / 2;\r\n } else if (pos.x < 0) {\r\n startX -= measureText(opts.categories[index] || '', config.fontSize, context);\r\n }\r\n context.beginPath();\r\n context.setFontSize(config.fontSize);\r\n context.setFillStyle(radarOption.labelColor || opts.fontColor);\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 var seriesConvert = series.map(function(item,index) {\r\n var text = item.formatter ? item.formatter(item,index,series,opts) : util.toFixed(item._proportion_.toFixed(4) * 100) + '%';\r\n text = item.labelText ? item.labelText : text;\r\n var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2);\r\n if (item._rose_proportion_) {\r\n arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._rose_proportion_ / 2);\r\n }\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 labelShow: item.labelShow\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 // line start\r\n let orginX2 = Math.cos(item.arc) * item.radius;\r\n let orginY2 = Math.sin(item.arc) * item.radius;\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 * opts.pix || config.fontSize, context);\r\n let startY = orginY3;\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 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 for (let i = 0; i < textObjectCollection.length; i++) {\r\n if(seriesConvert[i].labelShow === false){\r\n continue;\r\n }\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.pix);\r\n context.setFontSize(item.textSize * opts.pix || 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 * opts.pix, 0, 2 * Math.PI);\r\n context.closePath();\r\n context.fill();\r\n context.beginPath();\r\n context.setFontSize(item.textSize * opts.pix || config.fontSize);\r\n context.setFillStyle(item.textColor || opts.fontColor);\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 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.pix);\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 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, context);\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.pix);\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 context.beginPath();\r\n context.setFontSize(config.fontSize);\r\n context.setFillStyle(toolTipOption.labelFontColor || opts.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 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 labelAlign: 'left',\r\n labelOffsetX: 0,\r\n labelOffsetY: 0,\r\n }, points[i]);\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.pix);\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 = item.labelText ? item.labelText : item.value;\r\n context.setFontSize(config.fontSize);\r\n let textWidth = measureText(labelText, config.fontSize, context);\r\n let bgWidth = textWidth + config.toolTipPadding * 2;\r\n let bgStartX = item.labelAlign == 'left' ? opts.area[3] - bgWidth : opts.width - opts.area[1];\r\n bgStartX += item.labelOffsetX;\r\n let bgStartY = item.y - 0.5 * config.fontSize - config.toolTipPadding;\r\n bgStartY += item.labelOffsetY;\r\n let textX = bgStartX + config.toolTipPadding;\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.pix);\r\n context.beginPath();\r\n context.rect(bgStartX, bgStartY, bgWidth, config.fontSize + 2 * config.toolTipPadding);\r\n context.closePath();\r\n context.stroke();\r\n context.fill();\r\n context.setFontSize(config.fontSize);\r\n context.setTextAlign('left');\r\n context.setFillStyle(item.labelFontColor);\r\n context.fillText(String(labelText), textX, bgStartY + config.fontSize + config.toolTipPadding/2);\r\n context.stroke();\r\n context.setTextAlign('left');\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 var startX = opts.area[3];\r\n var endX = opts.width - opts.area[1];\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.pix);\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 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, context);\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 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.pix);\r\n context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 *\r\n config.toolTipPadding);\r\n context.closePath();\r\n context.stroke();\r\n context.fill();\r\n context.beginPath();\r\n context.setFontSize(config.fontSize);\r\n context.setFillStyle(toolTipOption.labelFontColor || opts.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 * opts.pix);\r\n } else {\r\n tStartRight += widthArr[i].width + opts.yAxis.padding * opts.pix;\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 activeWidth: eachSpacing\r\n }, opts.extra.column);\r\n toolTipOption.activeWidth = toolTipOption.activeWidth > eachSpacing ? eachSpacing : toolTipOption.activeWidth;\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 - toolTipOption.activeWidth / 2, startY, toolTipOption.activeWidth, endY - startY);\r\n context.closePath();\r\n context.fill();\r\n context.setFillStyle(\"#FFFFFF\");\r\n}\r\n\r\nfunction drawBarToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {\r\n var toolTipOption = assign({}, {\r\n activeBgColor: '#000000',\r\n activeBgOpacity: 0.08\r\n }, opts.extra.bar);\r\n var startX = opts.area[3];\r\n var endX = opts.width - opts.area[1];\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));\r\n context.rect( startX ,offsetX - eachSpacing / 2 , endX - startX,eachSpacing);\r\n context.closePath();\r\n context.fill();\r\n context.setFillStyle(\"#FFFFFF\");\r\n}\r\n\r\n\r\nfunction drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxisPoints) {\r\n var toolTipOption = assign({}, {\r\n showBox: true,\r\n showArrow: true,\r\n showCategory: false,\r\n bgColor: '#000000',\r\n bgOpacity: 0.7,\r\n borderColor: '#000000',\r\n borderWidth: 0,\r\n borderRadius: 0,\r\n borderOpacity: 0.7,\r\n fontColor: '#FFFFFF',\r\n splitLine: true,\r\n }, opts.extra.tooltip);\r\n if(toolTipOption.showCategory==true && opts.categories){\r\n textList.unshift({text:opts.categories[opts.tooltip.index],color:null})\r\n }\r\n var legendWidth = 4 * opts.pix;\r\n var legendMarginRight = 5 * opts.pix;\r\n var arrowWidth = toolTipOption.showArrow ? 8 * opts.pix : 0;\r\n var isOverRightBorder = false;\r\n if (opts.type == 'line' || opts.type == 'mount' || opts.type == 'area' || opts.type == 'candle' || opts.type == 'mix') {\r\n if (toolTipOption.splitLine == true) {\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.pix;\r\n var textWidth = textList.map(function(item) {\r\n return measureText(item.text, config.fontSize, context);\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 if (toolTipOption.showBox == false) {\r\n return\r\n }\r\n // if beyond the right border\r\n if (offset.x - Math.abs(opts._scrollDistance_ || 0) + 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 context.setLineWidth(toolTipOption.borderWidth * opts.pix);\r\n context.setStrokeStyle(hexToRgb(toolTipOption.borderColor, toolTipOption.borderOpacity));\r\n var radius = toolTipOption.borderRadius;\r\n if (isOverRightBorder) {\r\n if (toolTipOption.showArrow) {\r\n context.moveTo(offset.x, offset.y + 10 * opts.pix);\r\n context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix);\r\n }\r\n context.arc(offset.x - arrowWidth - radius, offset.y + toolTipHeight - radius, radius, 0, Math.PI / 2, false);\r\n context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + toolTipHeight - radius, radius,\r\n Math.PI / 2, Math.PI, false);\r\n context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false);\r\n context.arc(offset.x - arrowWidth - radius, offset.y + radius, radius, -Math.PI / 2, 0, false);\r\n if (toolTipOption.showArrow) {\r\n context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix);\r\n context.lineTo(offset.x, offset.y + 10 * opts.pix);\r\n }\r\n } else {\r\n if (toolTipOption.showArrow) {\r\n context.moveTo(offset.x, offset.y + 10 * opts.pix);\r\n context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix);\r\n }\r\n context.arc(offset.x + arrowWidth + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false);\r\n context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + radius, radius, -Math.PI / 2, 0,\r\n false);\r\n context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + toolTipHeight - radius, radius, 0,\r\n Math.PI / 2, false);\r\n context.arc(offset.x + arrowWidth + radius, offset.y + toolTipHeight - radius, radius, Math.PI / 2, Math.PI, false);\r\n if (toolTipOption.showArrow) {\r\n context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix);\r\n context.lineTo(offset.x, offset.y + 10 * opts.pix);\r\n }\r\n }\r\n context.closePath();\r\n context.fill();\r\n if (toolTipOption.borderWidth > 0) {\r\n context.stroke();\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 + 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 // draw text list\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 + 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 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 meterBorder: 4,\r\n meterFillColor: '#FFFFFF',\r\n barBorderCircle: false,\r\n barBorderRadius: [],\r\n seriesGap: 2,\r\n linearType: 'none',\r\n linearOpacity: 1,\r\n customColor: [],\r\n colorStop: 0,\r\n }, opts.extra.column);\r\n let calPoints = [];\r\n context.save();\r\n let leftNum = -2;\r\n let rightNum = xAxisPoints.length + 2;\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\r\n rightNum = 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 columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);\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 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 for (let i = 0; i < points.length; i++) {\r\n let item = points[i];\r\n //fix issues/I27B1N yyoinge & Joeshu\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n var startX = item.x - item.width / 2;\r\n var height = opts.height - item.y - opts.area[2];\r\n context.beginPath();\r\n var fillColor = item.color || eachSeries.color\r\n var strokeColor = item.color || eachSeries.color\r\n if (columnOption.linearType !== 'none') {\r\n var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);\r\n //透明渐变\r\n if (columnOption.linearType == 'opacity') {\r\n grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n } else {\r\n grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\r\n grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex],columnOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n }\r\n fillColor = grd\r\n }\r\n // 圆角边框\r\n if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle === true) {\r\n const left = startX;\r\n const top = item.y;\r\n const width = item.width;\r\n const height = opts.height - opts.area[2] - item.y;\r\n if (columnOption.barBorderCircle) {\r\n columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\r\n }\r\n let [r0, r1, r2, r3] = columnOption.barBorderRadius;\r\n let minRadius = Math.min(width/2,height/2);\r\n r0 = r0 > minRadius ? minRadius : r0;\r\n r1 = r1 > minRadius ? minRadius : r1;\r\n r2 = r2 > minRadius ? minRadius : r2;\r\n r3 = r3 > minRadius ? minRadius : r3;\r\n r0 = r0 < 0 ? 0 : r0;\r\n r1 = r1 < 0 ? 0 : r1;\r\n r2 = r2 < 0 ? 0 : r2;\r\n r3 = r3 < 0 ? 0 : r3;\r\n context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);\r\n context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);\r\n context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2);\r\n context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI);\r\n } else {\r\n context.moveTo(startX, item.y);\r\n context.lineTo(startX + item.width, item.y);\r\n context.lineTo(startX + item.width, 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.setLineWidth(1)\r\n context.setStrokeStyle(strokeColor);\r\n }\r\n context.setFillStyle(fillColor);\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 for (let i = 0; i < points.length; i++) {\r\n let item = points[i];\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n context.beginPath();\r\n var fillColor = 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.setFillStyle(fillColor);\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 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.meterBorder);\r\n for (let i = 0; i < points.length; i++) {\r\n let item = points[i];\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n //画背景颜色\r\n context.beginPath();\r\n if (seriesIndex == 0 && columnOption.meterBorder > 0) {\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setLineWidth(columnOption.meterBorder * opts.pix);\r\n }\r\n if(seriesIndex == 0){\r\n context.setFillStyle(columnOption.meterFillColor);\r\n }else{\r\n context.setFillStyle(item.color || eachSeries.color);\r\n }\r\n var startX = item.x - item.width / 2;\r\n var height = opts.height - item.y - opts.area[2];\r\n if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle === true) {\r\n const left = startX;\r\n const top = item.y;\r\n const width = item.width;\r\n const height = opts.height - opts.area[2] - item.y;\r\n if (columnOption.barBorderCircle) {\r\n columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\r\n }\r\n let [r0, r1, r2, r3] = columnOption.barBorderRadius;\r\n let minRadius = Math.min(width/2,height/2);\r\n r0 = r0 > minRadius ? minRadius : r0;\r\n r1 = r1 > minRadius ? minRadius : r1;\r\n r2 = r2 > minRadius ? minRadius : r2;\r\n r3 = r3 > minRadius ? minRadius : r3;\r\n r0 = r0 < 0 ? 0 : r0;\r\n r1 = r1 < 0 ? 0 : r1;\r\n r2 = r2 < 0 ? 0 : r2;\r\n r3 = r3 < 0 ? 0 : r3;\r\n context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);\r\n context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);\r\n context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2);\r\n context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI);\r\n context.fill();\r\n }else{\r\n context.moveTo(startX, item.y);\r\n context.lineTo(startX + item.width, item.y);\r\n context.lineTo(startX + item.width, 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.fill();\r\n }\r\n if (seriesIndex == 0 && columnOption.meterBorder > 0) {\r\n context.closePath();\r\n context.stroke();\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, opts);\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, opts);\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, opts);\r\n break;\r\n }\r\n });\r\n }\r\n context.restore();\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n calPoints: calPoints,\r\n eachSpacing: eachSpacing\r\n };\r\n}\r\n\r\nfunction drawMountDataPoints(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 mountOption = assign({}, {\r\n type: 'mount',\r\n widthRatio: 1,\r\n borderWidth: 1,\r\n barBorderCircle: false,\r\n barBorderRadius: [],\r\n linearType: 'none',\r\n linearOpacity: 1,\r\n customColor: [],\r\n colorStop: 0,\r\n }, opts.extra.mount);\r\n mountOption.widthRatio = mountOption.widthRatio <= 0 ? 0 : mountOption.widthRatio;\r\n mountOption.widthRatio = mountOption.widthRatio >= 2 ? 2 : mountOption.widthRatio;\r\n let calPoints = [];\r\n context.save();\r\n let leftNum = -2;\r\n let rightNum = xAxisPoints.length + 2;\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\r\n rightNum = leftNum + opts.xAxis.itemCount + 4;\r\n }\r\n mountOption.customColor = fillCustomColor(mountOption.linearType, mountOption.customColor, series, config);\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[0]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var points = getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, process);\r\n switch (mountOption.type) {\r\n case 'bar':\r\n for (let i = 0; i < points.length; i++) {\r\n let item = points[i];\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n var startX = item.x - eachSpacing*mountOption.widthRatio/2;\r\n var height = opts.height - item.y - opts.area[2];\r\n context.beginPath();\r\n var fillColor = item.color || series[i].color\r\n var strokeColor = item.color || series[i].color\r\n if (mountOption.linearType !== 'none') {\r\n var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);\r\n //透明渐变\r\n if (mountOption.linearType == 'opacity') {\r\n grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n } else {\r\n grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));\r\n grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n }\r\n fillColor = grd\r\n }\r\n // 圆角边框\r\n if ((mountOption.barBorderRadius && mountOption.barBorderRadius.length === 4) || mountOption.barBorderCircle === true) {\r\n const left = startX;\r\n const top = item.y;\r\n const width = item.width;\r\n const height = opts.height - opts.area[2] - item.y - mountOption.borderWidth * opts.pix / 2; \r\n if (mountOption.barBorderCircle) {\r\n mountOption.barBorderRadius = [width / 2, width / 2, 0, 0];\r\n }\r\n let [r0, r1, r2, r3] = mountOption.barBorderRadius;\r\n let minRadius = Math.min(width/2,height/2);\r\n r0 = r0 > minRadius ? minRadius : r0;\r\n r1 = r1 > minRadius ? minRadius : r1;\r\n r2 = r2 > minRadius ? minRadius : r2;\r\n r3 = r3 > minRadius ? minRadius : r3;\r\n r0 = r0 < 0 ? 0 : r0;\r\n r1 = r1 < 0 ? 0 : r1;\r\n r2 = r2 < 0 ? 0 : r2;\r\n r3 = r3 < 0 ? 0 : r3;\r\n context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);\r\n context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);\r\n context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2);\r\n context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI);\r\n } else {\r\n context.moveTo(startX, item.y);\r\n context.lineTo(startX + item.width, item.y);\r\n context.lineTo(startX + item.width, opts.height - opts.area[2]);\r\n context.lineTo(startX, opts.height - opts.area[2]);\r\n context.lineTo(startX, item.y);\r\n }\r\n context.setStrokeStyle(strokeColor);\r\n context.setFillStyle(fillColor);\r\n if(mountOption.borderWidth > 0){\r\n context.setLineWidth(mountOption.borderWidth * opts.pix);\r\n context.closePath();\r\n context.stroke();\r\n }\r\n context.fill();\r\n }\r\n };\r\n break;\r\n case 'triangle':\r\n for (let i = 0; i < points.length; i++) {\r\n let item = points[i];\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n var startX = item.x - eachSpacing*mountOption.widthRatio/2;\r\n var height = opts.height - item.y - opts.area[2];\r\n context.beginPath();\r\n var fillColor = item.color || series[i].color\r\n var strokeColor = item.color || series[i].color\r\n if (mountOption.linearType !== 'none') {\r\n var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);\r\n //透明渐变\r\n if (mountOption.linearType == 'opacity') {\r\n grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n } else {\r\n grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));\r\n grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n }\r\n fillColor = grd\r\n }\r\n context.moveTo(startX, opts.height - opts.area[2]);\r\n context.lineTo(item.x, item.y);\r\n context.lineTo(startX + item.width, opts.height - opts.area[2]);\r\n context.setStrokeStyle(strokeColor);\r\n context.setFillStyle(fillColor);\r\n if(mountOption.borderWidth > 0){\r\n context.setLineWidth(mountOption.borderWidth * opts.pix);\r\n context.stroke();\r\n }\r\n context.fill();\r\n }\r\n };\r\n break;\r\n case 'mount':\r\n for (let i = 0; i < points.length; i++) {\r\n let item = points[i];\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n var startX = item.x - eachSpacing*mountOption.widthRatio/2;\r\n var height = opts.height - item.y - opts.area[2];\r\n context.beginPath();\r\n var fillColor = item.color || series[i].color\r\n var strokeColor = item.color || series[i].color\r\n if (mountOption.linearType !== 'none') {\r\n var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);\r\n //透明渐变\r\n if (mountOption.linearType == 'opacity') {\r\n grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n } else {\r\n grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));\r\n grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n }\r\n fillColor = grd\r\n }\r\n context.moveTo(startX, opts.height - opts.area[2]);\r\n context.bezierCurveTo(item.x - item.width/4, opts.height - opts.area[2], item.x - item.width/4, item.y, item.x, item.y);\r\n context.bezierCurveTo(item.x + item.width/4, item.y, item.x + item.width/4, opts.height - opts.area[2], startX + item.width, opts.height - opts.area[2]);\r\n context.setStrokeStyle(strokeColor);\r\n context.setFillStyle(fillColor);\r\n if(mountOption.borderWidth > 0){\r\n context.setLineWidth(mountOption.borderWidth * opts.pix);\r\n context.stroke();\r\n }\r\n context.fill();\r\n }\r\n };\r\n break;\r\n case 'sharp':\r\n for (let i = 0; i < points.length; i++) {\r\n let item = points[i];\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n var startX = item.x - eachSpacing*mountOption.widthRatio/2;\r\n var height = opts.height - item.y - opts.area[2];\r\n context.beginPath();\r\n var fillColor = item.color || series[i].color\r\n var strokeColor = item.color || series[i].color\r\n if (mountOption.linearType !== 'none') {\r\n var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);\r\n //透明渐变\r\n if (mountOption.linearType == 'opacity') {\r\n grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n } else {\r\n grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));\r\n grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n }\r\n fillColor = grd\r\n }\r\n context.moveTo(startX, opts.height - opts.area[2]);\r\n context.quadraticCurveTo(item.x - 0, opts.height - opts.area[2] - height/4, item.x, item.y);\r\n context.quadraticCurveTo(item.x + 0, opts.height - opts.area[2] - height/4, startX + item.width, opts.height - opts.area[2])\r\n context.setStrokeStyle(strokeColor);\r\n context.setFillStyle(fillColor);\r\n if(mountOption.borderWidth > 0){\r\n context.setLineWidth(mountOption.borderWidth * opts.pix);\r\n context.stroke();\r\n }\r\n context.fill();\r\n }\r\n };\r\n break;\r\n }\r\n\r\n if (opts.dataLabel !== false && process === 1) {\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[0]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var points = getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, process);\r\n drawMountPointText(points, series, config, context, opts);\r\n }\r\n context.restore();\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n calPoints: points,\r\n eachSpacing: eachSpacing\r\n };\r\n}\r\n\r\nfunction drawBarDataPoints(series, opts, config, context) {\r\n let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n let yAxisPoints = [];\r\n let eachSpacing = (opts.height - opts.area[0] - opts.area[2])/opts.categories.length;\r\n for (let i = 0; i < opts.categories.length; i++) {\r\n yAxisPoints.push(opts.area[0] + eachSpacing / 2 + eachSpacing * i);\r\n }\r\n let columnOption = assign({}, {\r\n type: 'group',\r\n width: eachSpacing / 2,\r\n meterBorder: 4,\r\n meterFillColor: '#FFFFFF',\r\n barBorderCircle: false,\r\n barBorderRadius: [],\r\n seriesGap: 2,\r\n linearType: 'none',\r\n linearOpacity: 1,\r\n customColor: [],\r\n colorStop: 0,\r\n }, opts.extra.bar);\r\n let calPoints = [];\r\n context.save();\r\n let leftNum = -2;\r\n let rightNum = yAxisPoints.length + 2;\r\n if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {\r\n drawBarToolTipSplitArea(opts.tooltip.offset.y, opts, config, context, eachSpacing);\r\n }\r\n columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.xAxisData.ranges);\r\n maxRange = ranges.pop();\r\n minRange = ranges.shift();\r\n var data = eachSeries.data;\r\n switch (columnOption.type) {\r\n case 'group':\r\n var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process);\r\n var tooltipPoints = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\r\n calPoints.push(tooltipPoints);\r\n points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts);\r\n for (let i = 0; i < points.length; i++) {\r\n let item = points[i];\r\n //fix issues/I27B1N yyoinge & Joeshu\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n //var startX = item.x - item.width / 2;\r\n var startX = opts.area[3];\r\n var startY = item.y - item.width / 2;\r\n var height = item.height;\r\n context.beginPath();\r\n var fillColor = item.color || eachSeries.color\r\n var strokeColor = item.color || eachSeries.color\r\n if (columnOption.linearType !== 'none') {\r\n var grd = context.createLinearGradient(startX, item.y, item.x, item.y);\r\n //透明渐变\r\n if (columnOption.linearType == 'opacity') {\r\n grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n } else {\r\n grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\r\n grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex],columnOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n }\r\n fillColor = grd\r\n }\r\n // 圆角边框\r\n if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle === true) {\r\n const left = startX;\r\n const width = item.width;\r\n const top = item.y - item.width / 2;\r\n const height = item.height;\r\n if (columnOption.barBorderCircle) {\r\n columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\r\n }\r\n let [r0, r1, r2, r3] = columnOption.barBorderRadius;\r\n let minRadius = Math.min(width/2,height/2);\r\n r0 = r0 > minRadius ? minRadius : r0;\r\n r1 = r1 > minRadius ? minRadius : r1;\r\n r2 = r2 > minRadius ? minRadius : r2;\r\n r3 = r3 > minRadius ? minRadius : r3;\r\n r0 = r0 < 0 ? 0 : r0;\r\n r1 = r1 < 0 ? 0 : r1;\r\n r2 = r2 < 0 ? 0 : r2;\r\n r3 = r3 < 0 ? 0 : r3;\r\n \r\n context.arc(left + r3, top + r3, r3, -Math.PI, -Math.PI / 2);\r\n context.arc(item.x - r0, top + r0, r0, -Math.PI / 2, 0);\r\n context.arc(item.x - r1, top + width - r1, r1, 0, Math.PI / 2);\r\n context.arc(left + r2, top + width - r2, r2, Math.PI / 2, Math.PI);\r\n } else {\r\n context.moveTo(startX, startY);\r\n context.lineTo(item.x, startY);\r\n context.lineTo(item.x, startY + item.width);\r\n context.lineTo(startX, startY + item.width);\r\n context.lineTo(startX, startY);\r\n context.setLineWidth(1)\r\n context.setStrokeStyle(strokeColor);\r\n }\r\n context.setFillStyle(fillColor);\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 = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\r\n calPoints.push(points);\r\n points = fixBarStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);\r\n for (let i = 0; i < points.length; i++) {\r\n let item = points[i];\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n context.beginPath();\r\n var fillColor = item.color || eachSeries.color;\r\n var startX = item.x0;\r\n context.setFillStyle(fillColor);\r\n context.moveTo(startX, item.y - item.width/2);\r\n context.fillRect(startX, item.y - item.width/2, item.height , item.width);\r\n context.closePath();\r\n context.fill();\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.xAxisData.ranges);\r\n maxRange = ranges.pop();\r\n minRange = ranges.shift();\r\n var data = eachSeries.data;\r\n switch (columnOption.type) {\r\n case 'group':\r\n var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process);\r\n points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts);\r\n drawBarPointText(points, eachSeries, config, context, opts);\r\n break;\r\n case 'stack':\r\n var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\r\n drawBarPointText(points, eachSeries, config, context, opts);\r\n break;\r\n }\r\n });\r\n }\r\n return {\r\n yAxisPoints: yAxisPoints,\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.color\r\n }, candleOption.average);\r\n opts.extra.candle = candleOption;\r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n eachSpacing = xAxisData.eachSpacing;\r\n let calPoints = [];\r\n context.save();\r\n let leftNum = -2;\r\n let rightNum = xAxisPoints.length + 2;\r\n let leftSpace = 0;\r\n let rightSpace = opts.width + eachSpacing;\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\r\n rightNum = leftNum + opts.xAxis.itemCount + 4;\r\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\r\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\r\n }\r\n //画均线\r\n if (candleOption.average.show || seriesMA) { //Merge pull request !12 from 邱贵翔\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 var data = eachSeries.data;\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n var splitPointList = splitPoints(points,eachSeries);\r\n for (let i = 0; i < splitPointList.length; i++) {\r\n let points = splitPointList[i];\r\n context.beginPath();\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setLineWidth(1);\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 let startPoint = 0;\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\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,\r\n item.y);\r\n }\r\n }\r\n context.moveTo(points[0].x, points[0].y);\r\n }\r\n context.closePath();\r\n context.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,eachSeries);\r\n for (let i = 0; i < splitPointList[0].length; i++) {\r\n if (i > leftNum && i < rightNum) {\r\n let item = splitPointList[0][i];\r\n context.beginPath();\r\n //如果上涨\r\n if (data[i][1] - data[i][0] > 0) {\r\n context.setStrokeStyle(candleOption.color.upLine);\r\n context.setFillStyle(candleOption.color.upFill);\r\n context.setLineWidth(1 * opts.pix);\r\n context.moveTo(item[3].x, item[3].y); //顶点\r\n context.lineTo(item[1].x, item[1].y); //收盘中间点\r\n context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点\r\n context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点\r\n context.lineTo(item[0].x, item[0].y); //开盘中间点\r\n context.lineTo(item[2].x, item[2].y); //底点\r\n context.lineTo(item[0].x, item[0].y); //开盘中间点\r\n context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点\r\n context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点\r\n context.lineTo(item[1].x, item[1].y); //收盘中间点\r\n context.moveTo(item[3].x, item[3].y); //顶点\r\n } else {\r\n context.setStrokeStyle(candleOption.color.downLine);\r\n context.setFillStyle(candleOption.color.downFill);\r\n context.setLineWidth(1 * opts.pix);\r\n context.moveTo(item[3].x, item[3].y); //顶点\r\n context.lineTo(item[0].x, item[0].y); //开盘中间点\r\n context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点\r\n context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点\r\n context.lineTo(item[1].x, item[1].y); //收盘中间点\r\n context.lineTo(item[2].x, item[2].y); //底点\r\n context.lineTo(item[1].x, item[1].y); //收盘中间点\r\n context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点\r\n context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点\r\n context.lineTo(item[0].x, item[0].y); //开盘中间点\r\n context.moveTo(item[3].x, item[3].y); //顶点\r\n }\r\n context.closePath();\r\n context.fill();\r\n context.stroke();\r\n }\r\n }\r\n });\r\n context.restore();\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 gradient: false\r\n }, opts.extra.area);\r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n eachSpacing = xAxisData.eachSpacing;\r\n let endY = opts.height - opts.area[2];\r\n let calPoints = [];\r\n context.save();\r\n let leftSpace = 0;\r\n let rightSpace = opts.width + eachSpacing;\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\r\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\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 let splitPointList = splitPoints(points,eachSeries);\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 if (areaOption.gradient) {\r\n let gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]);\r\n gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));\r\n gradient.addColorStop('1.0', hexToRgb(\"#FFFFFF\", 0.1));\r\n context.setFillStyle(gradient);\r\n } else {\r\n context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));\r\n }\r\n context.setLineWidth(areaOption.width * opts.pix);\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 let startPoint = 0;\r\n if (areaOption.type === 'curve') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\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 } \r\n if (areaOption.type === 'straight') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\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 if (areaOption.type === 'step') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n context.lineTo(item.x, points[j - 1].y);\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 if (areaOption.addLine) {\r\n if (eachSeries.lineType == 'dash') {\r\n let dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;\r\n dashLength *= opts.pix;\r\n context.setLineDash([dashLength, dashLength]);\r\n }\r\n context.beginPath();\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setLineWidth(areaOption.width * opts.pix);\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 let startPoint = 0;\r\n if (areaOption.type === 'curve') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\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 }\r\n if (areaOption.type === 'straight') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\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 if (areaOption.type === 'step') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n context.lineTo(item.x, points[j - 1].y);\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 context.setLineDash([]);\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 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, opts);\r\n });\r\n }\r\n context.restore();\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n calPoints: calPoints,\r\n eachSpacing: eachSpacing\r\n };\r\n}\r\n\r\nfunction drawScatterDataPoints(series, opts, config, context) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n var scatterOption = assign({}, {\r\n type: 'circle'\r\n }, opts.extra.scatter);\r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n eachSpacing = xAxisData.eachSpacing;\r\n var calPoints = [];\r\n context.save();\r\n let leftSpace = 0;\r\n let rightSpace = opts.width + eachSpacing;\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\r\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\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 context.beginPath();\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setFillStyle(eachSeries.color);\r\n context.setLineWidth(1 * opts.pix);\r\n var shape = eachSeries.pointShape;\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.pix, item.y);\r\n context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);\r\n }\r\n });\r\n } else if (shape === 'square') {\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 } else if (shape === 'triangle') {\r\n return;\r\n }\r\n context.closePath();\r\n context.fill();\r\n context.stroke();\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, opts);\r\n });\r\n }\r\n context.restore();\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n calPoints: calPoints,\r\n eachSpacing: eachSpacing\r\n };\r\n}\r\n\r\nfunction drawBubbleDataPoints(series, opts, config, context) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n var bubbleOption = assign({}, {\r\n opacity: 1,\r\n border:2\r\n }, opts.extra.bubble);\r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n eachSpacing = xAxisData.eachSpacing;\r\n var calPoints = [];\r\n context.save();\r\n let leftSpace = 0;\r\n let rightSpace = opts.width + eachSpacing;\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\r\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\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 context.beginPath();\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setLineWidth(bubbleOption.border * opts.pix);\r\n context.setFillStyle(hexToRgb(eachSeries.color, bubbleOption.opacity));\r\n points.forEach(function(item, index) {\r\n context.moveTo(item.x + item.r, item.y);\r\n context.arc(item.x, item.y, item.r * opts.pix, 0, 2 * Math.PI, false);\r\n });\r\n context.closePath();\r\n context.fill();\r\n context.stroke();\r\n \r\n if (opts.dataLabel !== false && process === 1) {\r\n points.forEach(function(item, index) {\r\n context.beginPath();\r\n var fontSize = series.textSize * opts.pix || config.fontSize;\r\n context.setFontSize(fontSize);\r\n context.setFillStyle(series.textColor || \"#FFFFFF\");\r\n context.setTextAlign('center');\r\n context.fillText(String(item.t), item.x, item.y + fontSize/2);\r\n context.closePath();\r\n context.stroke();\r\n context.setTextAlign('left');\r\n });\r\n }\r\n });\r\n context.restore();\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 type: 'straight',\r\n width: 2\r\n }, opts.extra.line);\r\n lineOption.width *= opts.pix;\r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n eachSpacing = xAxisData.eachSpacing;\r\n var calPoints = [];\r\n context.save();\r\n let leftSpace = 0;\r\n let rightSpace = opts.width + eachSpacing;\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\r\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\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,eachSeries);\r\n if (eachSeries.lineType == 'dash') {\r\n let dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;\r\n dashLength *= opts.pix;\r\n context.setLineDash([dashLength, dashLength]);\r\n }\r\n context.beginPath();\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setLineWidth(lineOption.width);\r\n splitPointList.forEach(function(points, index) {\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 let startPoint = 0;\r\n if (lineOption.type === 'curve') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\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 }\r\n if (lineOption.type === 'straight') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\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 if (lineOption.type === 'step') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n context.lineTo(item.x, points[j - 1].y);\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 context.stroke();\r\n context.setLineDash([]);\r\n if (opts.dataPointShape !== false) {\r\n drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\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, opts);\r\n });\r\n }\r\n context.restore();\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 let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n eachSpacing = xAxisData.eachSpacing;\r\n let columnOption = assign({}, {\r\n width: eachSpacing / 2,\r\n barBorderCircle: false,\r\n barBorderRadius: [],\r\n seriesGap: 2,\r\n linearType: 'none',\r\n linearOpacity: 1,\r\n customColor: [],\r\n colorStop: 0,\r\n }, opts.extra.mix.column);\r\n let areaOption = assign({}, {\r\n opacity: 0.2,\r\n gradient: false\r\n }, opts.extra.mix.area);\r\n let endY = opts.height - opts.area[2];\r\n let calPoints = [];\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 let leftNum = -2;\r\n let rightNum = xAxisPoints.length + 2;\r\n let leftSpace = 0;\r\n let rightSpace = opts.width + eachSpacing;\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\r\n rightNum = leftNum + opts.xAxis.itemCount + 4;\r\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\r\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\r\n }\r\n columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);\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 // 绘制柱状数据图\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 let item = points[i];\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n var startX = item.x - item.width / 2;\r\n var height = opts.height - item.y - opts.area[2];\r\n context.beginPath();\r\n var fillColor = item.color || eachSeries.color\r\n var strokeColor = item.color || eachSeries.color\r\n if (columnOption.linearType !== 'none') {\r\n var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);\r\n //透明渐变\r\n if (columnOption.linearType == 'opacity') {\r\n grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n } else {\r\n grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\r\n grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n }\r\n fillColor = grd\r\n }\r\n // 圆角边框\r\n if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle) {\r\n const left = startX;\r\n const top = item.y;\r\n const width = item.width;\r\n const height = opts.height - opts.area[2] - item.y;\r\n if (columnOption.barBorderCircle) {\r\n columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\r\n }\r\n let [r0, r1, r2, r3] = columnOption.barBorderRadius;\r\n let minRadius = Math.min(width/2,height/2);\r\n r0 = r0 > minRadius ? minRadius : r0;\r\n r1 = r1 > minRadius ? minRadius : r1;\r\n r2 = r2 > minRadius ? minRadius : r2;\r\n r3 = r3 > minRadius ? minRadius : r3;\r\n r0 = r0 < 0 ? 0 : r0;\r\n r1 = r1 < 0 ? 0 : r1;\r\n r2 = r2 < 0 ? 0 : r2;\r\n r3 = r3 < 0 ? 0 : r3;\r\n context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);\r\n context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);\r\n context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2);\r\n context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI);\r\n } else {\r\n context.moveTo(startX, item.y);\r\n context.lineTo(startX + item.width, item.y);\r\n context.lineTo(startX + item.width, 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.setLineWidth(1)\r\n context.setStrokeStyle(strokeColor);\r\n }\r\n context.setFillStyle(fillColor);\r\n context.closePath();\r\n context.fill();\r\n }\r\n }\r\n columnIndex += 1;\r\n }\r\n //绘制区域图数据\r\n if (eachSeries.type == 'area') {\r\n let splitPointList = splitPoints(points,eachSeries);\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.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));\r\n if (areaOption.gradient) {\r\n let gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]);\r\n gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));\r\n gradient.addColorStop('1.0', hexToRgb(\"#FFFFFF\", 0.1));\r\n context.setFillStyle(gradient);\r\n } else {\r\n context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));\r\n }\r\n context.setLineWidth(2 * opts.pix);\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 let startPoint = 0;\r\n if (eachSeries.style === 'curve') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\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 let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\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 if (eachSeries.type == 'line') {\r\n var splitPointList = splitPoints(points,eachSeries);\r\n splitPointList.forEach(function(points, index) {\r\n if (eachSeries.lineType == 'dash') {\r\n let dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;\r\n dashLength *= opts.pix;\r\n context.setLineDash([dashLength, dashLength]);\r\n }\r\n context.beginPath();\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setLineWidth(2 * opts.pix);\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 let startPoint = 0;\r\n if (eachSeries.style == 'curve') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\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,\r\n item.x, item.y);\r\n }\r\n }\r\n } else {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\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 context.setLineDash([]);\r\n });\r\n }\r\n // 绘制点数据图\r\n if (eachSeries.type == 'point') {\r\n eachSeries.addPoint = true;\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 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 if (eachSeries.type !== 'column') {\r\n drawPointText(points, eachSeries, config, context, opts);\r\n } else {\r\n points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);\r\n drawPointText(points, eachSeries, config, context, opts);\r\n columnIndex += 1;\r\n }\r\n });\r\n }\r\n context.restore();\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n calPoints: calPoints,\r\n eachSpacing: eachSpacing,\r\n }\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 == 'mount' || 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 == 'bar' || opts.type == 'line' || opts.type == 'area'|| opts.type == 'scatter' || opts.type == 'bubble') {\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 if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1){\r\n if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2\r\n scrollTotalWidth += (opts.extra.mount.widthRatio - 1)*eachSpacing;\r\n }\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.pix);\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.pix);\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 context.save();\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {\r\n context.translate(opts._scrollDistance_, 0);\r\n }\r\n //绘制X轴刻度线\r\n if (opts.xAxis.calibration === true) {\r\n context.setStrokeStyle(opts.xAxis.gridColor || \"#cccccc\");\r\n context.setLineCap('butt');\r\n context.setLineWidth(1 * opts.pix);\r\n xAxisPoints.forEach(function(item, index) {\r\n if (index > 0) {\r\n context.beginPath();\r\n context.moveTo(item - eachSpacing / 2, startY);\r\n context.lineTo(item - eachSpacing / 2, startY + 3 * opts.pix);\r\n context.closePath();\r\n context.stroke();\r\n }\r\n });\r\n }\r\n //绘制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.pix);\r\n if (opts.xAxis.gridType == 'dash') {\r\n context.setLineDash([opts.xAxis.dashLength * opts.pix, opts.xAxis.dashLength * opts.pix]);\r\n }\r\n opts.xAxis.gridEval = opts.xAxis.gridEval || 1;\r\n xAxisPoints.forEach(function(item, index) {\r\n if (index % opts.xAxis.gridEval == 0) {\r\n context.beginPath();\r\n context.moveTo(item, startY);\r\n context.lineTo(item, endY);\r\n context.stroke();\r\n }\r\n });\r\n context.setLineDash([]);\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 var xAxisFontSize = opts.xAxis.fontSize * opts.pix || config.fontSize;\r\n if (config._xAxisTextAngle_ === 0) {\r\n newCategories.forEach(function(item, index) {\r\n var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item,index,opts) : item;\r\n var offset = -measureText(String(xitem), xAxisFontSize, context) / 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.pix;\r\n }\r\n context.beginPath();\r\n context.setFontSize(xAxisFontSize);\r\n context.setFillStyle(opts.xAxis.fontColor || opts.fontColor);\r\n context.fillText(String(xitem), xAxisPoints[index] + offset, startY + xAxisFontSize + (config.xAxisHeight - scrollHeight - xAxisFontSize) / 2);\r\n context.closePath();\r\n context.stroke();\r\n });\r\n } else {\r\n newCategories.forEach(function(item, index) {\r\n var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item) : item;\r\n context.save();\r\n context.beginPath();\r\n context.setFontSize(xAxisFontSize);\r\n context.setFillStyle(opts.xAxis.fontColor || opts.fontColor);\r\n var textWidth = measureText(String(xitem), xAxisFontSize, context);\r\n var offsetX = xAxisPoints[index];\r\n if (boundaryGap == 'center') {\r\n offsetX = xAxisPoints[index] + eachSpacing / 2;\r\n }\r\n var scrollHeight = 0;\r\n if (opts.xAxis.scrollShow) {\r\n scrollHeight = 6 * opts.pix;\r\n }\r\n var offsetY = startY + 6 * opts.pix + xAxisFontSize - xAxisFontSize * Math.abs(Math.sin(config._xAxisTextAngle_));\r\n if(opts.xAxis.rotateAngle < 0){\r\n offsetX -= xAxisFontSize / 2;\r\n textWidth = 0;\r\n }else{\r\n offsetX += xAxisFontSize / 2;\r\n textWidth = -textWidth;\r\n }\r\n context.translate(offsetX, offsetY);\r\n context.rotate(-1 * config._xAxisTextAngle_);\r\n context.fillText(String(xitem), textWidth , 0 );\r\n context.closePath();\r\n context.stroke();\r\n context.restore();\r\n });\r\n }\r\n }\r\n context.restore();\r\n //绘制X轴轴线\r\n if (opts.xAxis.axisLine) {\r\n context.beginPath();\r\n context.setStrokeStyle(opts.xAxis.axisLineColor);\r\n context.setLineWidth(1 * opts.pix);\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 if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1 ){\r\n if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2\r\n TotalWidth += (opts.extra.mount.widthRatio - 1)*xAxiseachSpacing;\r\n }\r\n let endX = startX + TotalWidth;\r\n let points = [];\r\n let startY = 1\r\n if (opts.xAxis.axisLine === false) {\r\n startY = 0\r\n }\r\n for (let i = startY; i < opts.yAxis.splitNumber + 1; i++) {\r\n points.push(opts.height - opts.area[2] - eachSpacing * i);\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 if (opts.yAxis.gridType == 'dash') {\r\n context.setLineDash([opts.yAxis.dashLength * opts.pix, opts.yAxis.dashLength * opts.pix]);\r\n }\r\n context.setStrokeStyle(opts.yAxis.gridColor);\r\n context.setLineWidth(1 * opts.pix);\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 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.pix;\r\n }\r\n if (opts.xAxis.rotateLabel) {\r\n fillEndY = opts.height - opts.area[2] + opts.fontSize * opts.pix / 2;\r\n }\r\n // set YAxis background\r\n context.beginPath();\r\n context.setFillStyle(opts.background);\r\n if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'left') {\r\n context.fillRect(0, 0, startX, fillEndY);\r\n }\r\n if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'right') {\r\n context.fillRect(endX, 0, opts.width, fillEndY);\r\n }\r\n context.closePath();\r\n context.stroke();\r\n \r\n let tStartLeft = opts.area[3];\r\n let tStartRight = opts.width - opts.area[1];\r\n let tStartCenter = opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2;\r\n if (opts.yAxis.data) {\r\n for (let i = 0; i < opts.yAxis.data.length; i++) {\r\n let yData = opts.yAxis.data[i];\r\n var points = [];\r\n if(yData.type === 'categories'){\r\n for (let i = 0; i <= yData.categories.length; i++) {\r\n points.push(opts.area[0] + spacingValid / yData.categories.length / 2 + spacingValid / yData.categories.length * i);\r\n }\r\n }else{\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 if (yData.disabled !== true) {\r\n let rangesFormat = opts.chartData.yAxisData.rangesFormat[i];\r\n let yAxisFontSize = yData.fontSize ? yData.fontSize * opts.pix : config.fontSize;\r\n let yAxisWidth = opts.chartData.yAxisData.yAxisWidth[i];\r\n let textAlign = yData.textAlign || \"right\";\r\n //画Y轴刻度及文案\r\n rangesFormat.forEach(function(item, index) {\r\n var pos = points[index];\r\n context.beginPath();\r\n context.setFontSize(yAxisFontSize);\r\n context.setLineWidth(1 * opts.pix);\r\n context.setStrokeStyle(yData.axisLineColor || '#cccccc');\r\n context.setFillStyle(yData.fontColor || opts.fontColor);\r\n let tmpstrat = 0;\r\n let gapwidth = 4 * opts.pix;\r\n if (yAxisWidth.position == 'left') {\r\n //画刻度线\r\n if (yData.calibration == true) {\r\n context.moveTo(tStartLeft, pos);\r\n context.lineTo(tStartLeft - 3 * opts.pix, pos);\r\n gapwidth += 3 * opts.pix;\r\n }\r\n //画文字\r\n switch (textAlign) {\r\n case \"left\":\r\n context.setTextAlign('left');\r\n tmpstrat = tStartLeft - yAxisWidth.width\r\n break;\r\n case \"right\":\r\n context.setTextAlign('right');\r\n tmpstrat = tStartLeft - gapwidth\r\n break;\r\n default:\r\n context.setTextAlign('center');\r\n tmpstrat = tStartLeft - yAxisWidth.width / 2\r\n }\r\n context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);\r\n\r\n } else if (yAxisWidth.position == 'right') {\r\n //画刻度线\r\n if (yData.calibration == true) {\r\n context.moveTo(tStartRight, pos);\r\n context.lineTo(tStartRight + 3 * opts.pix, pos);\r\n gapwidth += 3 * opts.pix;\r\n }\r\n switch (textAlign) {\r\n case \"left\":\r\n context.setTextAlign('left');\r\n tmpstrat = tStartRight + gapwidth\r\n break;\r\n case \"right\":\r\n context.setTextAlign('right');\r\n tmpstrat = tStartRight + yAxisWidth.width\r\n break;\r\n default:\r\n context.setTextAlign('center');\r\n tmpstrat = tStartRight + yAxisWidth.width / 2\r\n }\r\n context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);\r\n } else if (yAxisWidth.position == 'center') {\r\n //画刻度线\r\n if (yData.calibration == true) {\r\n context.moveTo(tStartCenter, pos);\r\n context.lineTo(tStartCenter - 3 * opts.pix, pos);\r\n gapwidth += 3 * opts.pix;\r\n }\r\n //画文字\r\n switch (textAlign) {\r\n case \"left\":\r\n context.setTextAlign('left');\r\n tmpstrat = tStartCenter - yAxisWidth.width\r\n break;\r\n case \"right\":\r\n context.setTextAlign('right');\r\n tmpstrat = tStartCenter - gapwidth\r\n break;\r\n default:\r\n context.setTextAlign('center');\r\n tmpstrat = tStartCenter - yAxisWidth.width / 2\r\n }\r\n context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);\r\n }\r\n context.closePath();\r\n context.stroke();\r\n context.setTextAlign('left');\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.pix);\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 if (yAxisWidth.position == 'right') {\r\n context.moveTo(tStartRight, opts.height - opts.area[2]);\r\n context.lineTo(tStartRight, opts.area[0]);\r\n } else if (yAxisWidth.position == 'center') {\r\n context.moveTo(tStartCenter, opts.height - opts.area[2]);\r\n context.lineTo(tStartCenter, opts.area[0]);\r\n }\r\n context.stroke();\r\n }\r\n //画Y轴标题\r\n if (opts.yAxis.showTitle) {\r\n let titleFontSize = yData.titleFontSize * opts.pix || config.fontSize;\r\n let title = yData.title;\r\n context.beginPath();\r\n context.setFontSize(titleFontSize);\r\n context.setFillStyle(yData.titleFontColor || opts.fontColor);\r\n if (yAxisWidth.position == 'left') {\r\n context.fillText(title, tStartLeft - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);\r\n } else if (yAxisWidth.position == 'right') {\r\n context.fillText(title, tStartRight - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);\r\n } else if (yAxisWidth.position == 'center') {\r\n context.fillText(title, tStartCenter - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);\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 * opts.pix);\r\n } else {\r\n tStartRight += yAxisWidth.width + opts.yAxis.padding * opts.pix;\r\n }\r\n }\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 * opts.pix;\r\n let fontSize = opts.legend.fontSize * opts.pix;\r\n let shapeWidth = 15 * opts.pix;\r\n let shapeRight = 5 * opts.pix;\r\n let itemGap = opts.legend.itemGap * opts.pix;\r\n let lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize);\r\n //画背景及边框\r\n context.beginPath();\r\n context.setLineWidth(opts.legend.borderWidth * opts.pix);\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 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 switch (opts.legend.float) {\r\n case 'left':\r\n startX = legendArea.start.x + padding;\r\n break;\r\n case 'right':\r\n startX = legendArea.start.x + legendArea.width - width;\r\n break;\r\n default:\r\n startX = legendArea.start.x + (legendArea.width - width) / 2;\r\n }\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 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.pix);\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.pix);\r\n context.fillRect(startX, startY + 0.5 * lineHeight - 2 * opts.pix, 15 * opts.pix, 4 * opts.pix);\r\n break;\r\n case 'triangle':\r\n context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\r\n context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);\r\n context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);\r\n context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\r\n break;\r\n case 'diamond':\r\n context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\r\n context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight);\r\n context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);\r\n context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight);\r\n context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\r\n break;\r\n case 'circle':\r\n context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight);\r\n context.arc(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight, 5 * opts.pix, 0, 2 * Math.PI);\r\n break;\r\n case 'rect':\r\n context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix);\r\n context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);\r\n break;\r\n case 'square':\r\n context.moveTo(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\r\n context.fillRect(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix);\r\n break;\r\n case 'none':\r\n break;\r\n default:\r\n context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix);\r\n context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);\r\n }\r\n context.closePath();\r\n context.fill();\r\n context.stroke();\r\n startX += shapeWidth + shapeRight;\r\n let fontTrans = 0.5 * lineHeight + 0.5 * fontSize - 2;\r\n const legendText = item.legendText ? item.legendText : item.name;\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(legendText, 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(legendText, fontSize, context) + itemGap;\r\n item.area[2] = startX;\r\n } else {\r\n item.area[2] = startX + measureText(legendText, fontSize, context) + 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,\r\n offsetAngle: 0,\r\n labelWidth: 15,\r\n ringWidth: 30,\r\n customRadius: 0,\r\n border: false,\r\n borderWidth: 2,\r\n borderColor: '#FFFFFF',\r\n centerColor: '#FFFFFF',\r\n linearType: 'none',\r\n customColor: [],\r\n }, opts.type == \"pie\" ? opts.extra.pie : opts.extra.ring);\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 * opts.pix;\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 radius = radius < 10 ? 10 : radius;\r\n if (pieOption.customRadius > 0) {\r\n radius = pieOption.customRadius * opts.pix;\r\n }\r\n series = getPieDataPoints(series, radius, process);\r\n var activeRadius = pieOption.activeRadius * opts.pix;\r\n pieOption.customColor = fillCustomColor(pieOption.linearType, pieOption.customColor, series, config);\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, pieOption.activeOpacity || 0.5));\r\n context.moveTo(centerPosition.x, centerPosition.y);\r\n context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_, eachSeries._start_ + 2 * 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.pix);\r\n context.lineJoin = \"round\";\r\n context.setStrokeStyle(pieOption.borderColor);\r\n var fillcolor = eachSeries.color;\r\n if (pieOption.linearType == 'custom') {\r\n var grd;\r\n if(context.createCircularGradient){\r\n grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_)\r\n }else{\r\n grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0,centerPosition.x, centerPosition.y, eachSeries._radius_)\r\n }\r\n grd.addColorStop(0, hexToRgb(pieOption.customColor[eachSeries.linearIndex], 1))\r\n grd.addColorStop(1, hexToRgb(eachSeries.color, 1))\r\n fillcolor = grd\r\n }\r\n context.setFillStyle(fillcolor);\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 if (opts.type === 'ring') {\r\n var innerPieWidth = radius * 0.6;\r\n if (typeof pieOption.ringWidth === 'number' && pieOption.ringWidth > 0) {\r\n innerPieWidth = Math.max(0, radius - pieOption.ringWidth * opts.pix);\r\n }\r\n context.beginPath();\r\n context.setFillStyle(pieOption.centerColor);\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 if (opts.dataLabel !== false && process === 1) {\r\n drawPieText(series, opts, config, context, radius, centerPosition);\r\n }\r\n if (process === 1 && opts.type === 'ring') {\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 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,\r\n offsetAngle: 0,\r\n labelWidth: 15,\r\n border: false,\r\n borderWidth: 2,\r\n borderColor: '#FFFFFF',\r\n linearType: 'none',\r\n customColor: [],\r\n }, opts.extra.rose);\r\n if (config.pieChartLinePadding == 0) {\r\n config.pieChartLinePadding = roseOption.activeRadius * opts.pix;\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 radius = radius < 10 ? 10 : radius;\r\n var minRadius = roseOption.minRadius || radius * 0.5;\r\n series = getRoseDataPoints(series, roseOption.type, minRadius, radius, process);\r\n var activeRadius = roseOption.activeRadius * opts.pix;\r\n roseOption.customColor = fillCustomColor(roseOption.linearType, roseOption.customColor, series, config);\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 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_, 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.pix);\r\n context.lineJoin = \"round\";\r\n context.setStrokeStyle(roseOption.borderColor);\r\n var fillcolor = eachSeries.color;\r\n if (roseOption.linearType == 'custom') {\r\n var grd;\r\n if(context.createCircularGradient){\r\n grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_)\r\n }else{\r\n grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0,centerPosition.x, centerPosition.y, eachSeries._radius_)\r\n }\r\n grd.addColorStop(0, hexToRgb(roseOption.customColor[eachSeries.linearIndex], 1))\r\n grd.addColorStop(1, hexToRgb(eachSeries.color, 1))\r\n fillcolor = grd\r\n }\r\n context.setFillStyle(fillcolor);\r\n context.moveTo(centerPosition.x, centerPosition.y);\r\n context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * 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 drawPieText(series, opts, config, context, radius, 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 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 lineCap: 'round',\r\n width: 12 ,\r\n gap: 2 ,\r\n linearType: 'none',\r\n customColor: [],\r\n }, opts.extra.arcbar);\r\n series = getArcbarDataPoints(series, arcbarOption, process);\r\n var centerPosition;\r\n if (arcbarOption.centerX || arcbarOption.centerY) {\r\n centerPosition = {\r\n x: arcbarOption.centerX ? arcbarOption.centerX : opts.width / 2,\r\n y: arcbarOption.centerY ? arcbarOption.centerY : opts.height / 2\r\n };\r\n } else {\r\n centerPosition = {\r\n x: opts.width / 2,\r\n y: opts.height / 2\r\n };\r\n }\r\n var radius;\r\n if (arcbarOption.radius) {\r\n radius = arcbarOption.radius;\r\n } else {\r\n radius = Math.min(centerPosition.x, centerPosition.y);\r\n radius -= 5 * opts.pix;\r\n radius -= arcbarOption.width / 2;\r\n }\r\n radius = radius < 10 ? 10 : radius;\r\n arcbarOption.customColor = fillCustomColor(arcbarOption.linearType, arcbarOption.customColor, series, config);\r\n \r\n for (let i = 0; i < series.length; i++) {\r\n let eachSeries = series[i];\r\n //背景颜色\r\n context.setLineWidth(arcbarOption.width * opts.pix);\r\n context.setStrokeStyle(arcbarOption.backgroundColor || '#E9E9E9');\r\n context.setLineCap(arcbarOption.lineCap);\r\n context.beginPath();\r\n if (arcbarOption.type == 'default') {\r\n context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle * Math.PI, false);\r\n } else {\r\n context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, 0, 2 * Math.PI, false);\r\n }\r\n context.stroke();\r\n //进度条\r\n var fillColor = eachSeries.color\r\n if(arcbarOption.linearType == 'custom'){\r\n var grd = context.createLinearGradient(centerPosition.x - radius, centerPosition.y, centerPosition.x + radius, centerPosition.y);\r\n grd.addColorStop(1, hexToRgb(arcbarOption.customColor[eachSeries.linearIndex], 1))\r\n grd.addColorStop(0, hexToRgb(eachSeries.color, 1))\r\n fillColor = grd;\r\n }\r\n context.setLineWidth(arcbarOption.width * opts.pix);\r\n context.setStrokeStyle(fillColor);\r\n context.setLineCap(arcbarOption.lineCap);\r\n context.beginPath();\r\n context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ * Math.PI, false);\r\n context.stroke();\r\n }\r\n drawRingTitle(opts, config, context, centerPosition);\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 type: 'default',\r\n startAngle: 0.75,\r\n endAngle: 0.25,\r\n width: 15,\r\n labelOffset:13,\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 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 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.pix;\r\n radius -= gaugeOption.width / 2;\r\n radius = radius < 10 ? 10 : radius;\r\n var innerRadius = radius - gaugeOption.width;\r\n var totalAngle = 0;\r\n //判断仪表盘的样式:default百度样式,progress新样式\r\n if (gaugeOption.type == 'progress') {\r\n //## 第一步画中心圆形背景和进度条背景\r\n //中心圆形背景\r\n var pieRadius = radius - gaugeOption.width * 3;\r\n context.beginPath();\r\n let gradient = context.createLinearGradient(centerPosition.x, centerPosition.y - pieRadius, centerPosition.x, centerPosition.y + pieRadius);\r\n //配置渐变填充(起点:中心点向上减半径;结束点中心点向下加半径)\r\n gradient.addColorStop('0', hexToRgb(series[0].color, 0.3));\r\n gradient.addColorStop('1.0', hexToRgb(\"#FFFFFF\", 0.1));\r\n context.setFillStyle(gradient);\r\n context.arc(centerPosition.x, centerPosition.y, pieRadius, 0, 2 * Math.PI, false);\r\n context.fill();\r\n //画进度条背景\r\n context.setLineWidth(gaugeOption.width);\r\n context.setStrokeStyle(hexToRgb(series[0].color, 0.3));\r\n context.setLineCap('round');\r\n context.beginPath();\r\n context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, gaugeOption.endAngle * Math.PI, false);\r\n context.stroke();\r\n //## 第二步画刻度线\r\n totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;\r\n let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\r\n let childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;\r\n let startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;\r\n let endX = -radius - gaugeOption.width - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;\r\n context.save();\r\n context.translate(centerPosition.x, centerPosition.y);\r\n context.rotate((gaugeOption.startAngle - 1) * Math.PI);\r\n let len = gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1;\r\n let proc = series[0].data * process;\r\n for (let i = 0; i < len; i++) {\r\n context.beginPath();\r\n //刻度线随进度变色\r\n if (proc > (i / len)) {\r\n context.setStrokeStyle(hexToRgb(series[0].color, 1));\r\n } else {\r\n context.setStrokeStyle(hexToRgb(series[0].color, 0.3));\r\n }\r\n context.setLineWidth(3 * opts.pix);\r\n context.moveTo(startX, 0);\r\n context.lineTo(endX, 0);\r\n context.stroke();\r\n context.rotate(childAngle * Math.PI);\r\n }\r\n context.restore();\r\n //## 第三步画进度条\r\n series = getGaugeArcbarDataPoints(series, gaugeOption, process);\r\n context.setLineWidth(gaugeOption.width);\r\n context.setStrokeStyle(series[0].color);\r\n context.setLineCap('round');\r\n context.beginPath();\r\n context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, series[0]._proportion_ * Math.PI, false);\r\n context.stroke();\r\n //## 第四步画指针\r\n let pointerRadius = radius - gaugeOption.width * 2.5;\r\n context.save();\r\n context.translate(centerPosition.x, centerPosition.y);\r\n context.rotate((series[0]._proportion_ - 1) * Math.PI);\r\n context.beginPath();\r\n context.setLineWidth(gaugeOption.width / 3);\r\n let gradient3 = context.createLinearGradient(0, -pointerRadius * 0.6, 0, pointerRadius * 0.6);\r\n gradient3.addColorStop('0', hexToRgb('#FFFFFF', 0));\r\n gradient3.addColorStop('0.5', hexToRgb(series[0].color, 1));\r\n gradient3.addColorStop('1.0', hexToRgb('#FFFFFF', 0));\r\n context.setStrokeStyle(gradient3);\r\n context.arc(0, 0, pointerRadius, 0.85 * Math.PI, 1.15 * Math.PI, false);\r\n context.stroke();\r\n context.beginPath();\r\n context.setLineWidth(1);\r\n context.setStrokeStyle(series[0].color);\r\n context.setFillStyle(series[0].color);\r\n context.moveTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);\r\n context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2 - 4, 0);\r\n context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, 4);\r\n context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);\r\n context.stroke();\r\n context.fill();\r\n context.restore();\r\n //default百度样式\r\n } else {\r\n //画背景\r\n context.setLineWidth(gaugeOption.width);\r\n context.setLineCap('butt');\r\n for (let i = 0; i < categories.length; i++) {\r\n let eachCategories = categories[i];\r\n context.beginPath();\r\n context.setStrokeStyle(eachCategories.color);\r\n context.arc(centerPosition.x, centerPosition.y, radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ * Math.PI, false);\r\n context.stroke();\r\n }\r\n context.save();\r\n //画刻度线\r\n totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;\r\n let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\r\n let childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;\r\n let startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;\r\n let endX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;\r\n let childendX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.childWidth;\r\n context.translate(centerPosition.x, centerPosition.y);\r\n context.rotate((gaugeOption.startAngle - 1) * Math.PI);\r\n for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) {\r\n context.beginPath();\r\n context.setStrokeStyle(gaugeOption.splitLine.color);\r\n context.setLineWidth(2 * opts.pix);\r\n context.moveTo(startX, 0);\r\n context.lineTo(endX, 0);\r\n context.stroke();\r\n context.rotate(splitAngle * Math.PI);\r\n }\r\n context.restore();\r\n context.save();\r\n context.translate(centerPosition.x, centerPosition.y);\r\n context.rotate((gaugeOption.startAngle - 1) * Math.PI);\r\n for (let i = 0; i < gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; i++) {\r\n context.beginPath();\r\n context.setStrokeStyle(gaugeOption.splitLine.color);\r\n context.setLineWidth(1 * opts.pix);\r\n context.moveTo(startX, 0);\r\n context.lineTo(childendX, 0);\r\n context.stroke();\r\n context.rotate(childAngle * Math.PI);\r\n }\r\n context.restore();\r\n //画指针\r\n series = getGaugeDataPoints(series, categories, gaugeOption, process);\r\n for (let i = 0; i < series.length; i++) {\r\n let eachSeries = series[i];\r\n context.save();\r\n context.translate(centerPosition.x, centerPosition.y);\r\n context.rotate((eachSeries._proportion_ - 1) * Math.PI);\r\n context.beginPath();\r\n context.setFillStyle(eachSeries.color);\r\n context.moveTo(gaugeOption.pointer.width, 0);\r\n context.lineTo(0, -gaugeOption.pointer.width / 2);\r\n context.lineTo(-innerRadius, 0);\r\n context.lineTo(0, gaugeOption.pointer.width / 2);\r\n context.lineTo(gaugeOption.pointer.width, 0);\r\n context.closePath();\r\n context.fill();\r\n context.beginPath();\r\n context.setFillStyle('#FFFFFF');\r\n context.arc(0, 0, gaugeOption.pointer.width / 6, 0, 2 * Math.PI, false);\r\n context.fill();\r\n context.restore();\r\n }\r\n if (opts.dataLabel !== false) {\r\n drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context);\r\n }\r\n }\r\n //画仪表盘标题,副标题\r\n drawRingTitle(opts, config, context, centerPosition);\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 gridType: 'radar',\r\n gridEval:1,\r\n axisLabel:false,\r\n axisLabelTofix:0,\r\n labelColor:'#666666',\r\n labelPointShow:false,\r\n labelPointRadius:3,\r\n labelPointColor:'#cccccc',\r\n opacity: 0.2,\r\n gridCount: 3,\r\n border:false,\r\n borderWidth:2,\r\n linearType: 'none',\r\n customColor: [],\r\n }, opts.extra.radar);\r\n var coordinateAngle = getRadarCoordinateSeries(opts.categories.length);\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 xr = (opts.width - opts.area[1] - opts.area[3]) / 2\r\n var yr = (opts.height - opts.area[0] - opts.area[2]) / 2\r\n var radius = Math.min(xr - (getMaxTextListLength(opts.categories, config.fontSize, context) + config.radarLabelTextMargin), yr - config.radarLabelTextMargin);\r\n radius -= config.radarLabelTextMargin * opts.pix;\r\n radius = radius < 10 ? 10 : radius;\r\n // 画分割线\r\n context.beginPath();\r\n context.setLineWidth(1 * opts.pix);\r\n context.setStrokeStyle(radarOption.gridColor);\r\n coordinateAngle.forEach(function(angle,index) {\r\n var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition);\r\n context.moveTo(centerPosition.x, centerPosition.y);\r\n if (index % radarOption.gridEval == 0) {\r\n context.lineTo(pos.x, pos.y);\r\n }\r\n });\r\n context.stroke();\r\n context.closePath();\r\n \r\n // 画背景网格\r\n var _loop = function _loop(i) {\r\n var startPos = {};\r\n context.beginPath();\r\n context.setLineWidth(1 * opts.pix);\r\n context.setStrokeStyle(radarOption.gridColor);\r\n if (radarOption.gridType == 'radar') {\r\n coordinateAngle.forEach(function(angle, index) {\r\n var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(angle), radius /\r\n 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 } else {\r\n var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(1.5), radius / radarOption.gridCount * i * Math.sin(1.5), centerPosition);\r\n context.arc(centerPosition.x, centerPosition.y, centerPosition.y - pos.y, 0, 2 * Math.PI, false);\r\n }\r\n context.stroke();\r\n context.closePath();\r\n };\r\n for (var i = 1; i <= radarOption.gridCount; i++) {\r\n _loop(i);\r\n }\r\n radarOption.customColor = fillCustomColor(radarOption.linearType, radarOption.customColor, series, config);\r\n var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process);\r\n radarDataPoints.forEach(function(eachSeries, seriesIndex) {\r\n // 绘制区域数据\r\n context.beginPath();\r\n context.setLineWidth(radarOption.borderWidth * opts.pix);\r\n context.setStrokeStyle(eachSeries.color);\r\n \r\n var fillcolor = hexToRgb(eachSeries.color, radarOption.opacity);\r\n if (radarOption.linearType == 'custom') {\r\n var grd;\r\n if(context.createCircularGradient){\r\n grd = context.createCircularGradient(centerPosition.x, centerPosition.y, radius)\r\n }else{\r\n grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0,centerPosition.x, centerPosition.y, radius)\r\n }\r\n grd.addColorStop(0, hexToRgb(radarOption.customColor[series[seriesIndex].linearIndex], radarOption.opacity))\r\n grd.addColorStop(1, hexToRgb(eachSeries.color, radarOption.opacity))\r\n fillcolor = grd\r\n }\r\n \r\n context.setFillStyle(fillcolor);\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 if(radarOption.border === true){\r\n context.stroke();\r\n }\r\n context.closePath();\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 // 画刻度值\r\n if(radarOption.axisLabel === true){\r\n const maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));\r\n const stepLength = radius / radarOption.gridCount;\r\n const fontSize = opts.fontSize * opts.pix;\r\n context.setFontSize(fontSize);\r\n context.setFillStyle(opts.fontColor);\r\n context.setTextAlign('left');\r\n for (var i = 0; i < radarOption.gridCount + 1; i++) {\r\n let label = i * maxData / radarOption.gridCount;\r\n label = label.toFixed(radarOption.axisLabelTofix);\r\n context.fillText(String(label), centerPosition.x + 3 * opts.pix, centerPosition.y - i * stepLength + fontSize / 2);\r\n }\r\n }\r\n \r\n // draw label text\r\n drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context);\r\n \r\n // draw dataLabel\r\n if (opts.dataLabel !== false && process === 1) {\r\n radarDataPoints.forEach(function(eachSeries, seriesIndex) {\r\n context.beginPath();\r\n var fontSize = eachSeries.textSize * opts.pix || config.fontSize;\r\n context.setFontSize(fontSize);\r\n context.setFillStyle(eachSeries.textColor || opts.fontColor);\r\n eachSeries.data.forEach(function(item, index) {\r\n //如果是中心点垂直的上下点位\r\n if(Math.abs(item.position.x - centerPosition.x)<2){\r\n //如果在上面\r\n if(item.position.y < centerPosition.y){\r\n context.setTextAlign('center');\r\n context.fillText(item.value, item.position.x, item.position.y - 4);\r\n }else{\r\n context.setTextAlign('center');\r\n context.fillText(item.value, item.position.x, item.position.y + fontSize + 2);\r\n }\r\n }else{\r\n //如果在左侧\r\n if(item.position.x < centerPosition.x){\r\n context.setTextAlign('right');\r\n context.fillText(item.value, item.position.x - 4, item.position.y + fontSize / 2 - 2);\r\n }else{\r\n context.setTextAlign('left');\r\n context.fillText(item.value, item.position.x + 4, item.position.y + fontSize / 2 - 2);\r\n }\r\n }\r\n });\r\n context.closePath();\r\n context.stroke();\r\n });\r\n context.setTextAlign('left');\r\n }\r\n \r\n return {\r\n center: centerPosition,\r\n radius: radius,\r\n angleList: coordinateAngle\r\n };\r\n}\r\n\r\n// 经纬度转墨卡托\r\nfunction lonlat2mercator(longitude, latitude) {\r\n var mercator = Array(2);\r\n var x = longitude * 20037508.34 / 180;\r\n var y = Math.log(Math.tan((90 + latitude) * Math.PI / 360)) / (Math.PI / 180);\r\n y = y * 20037508.34 / 180;\r\n mercator[0] = x;\r\n mercator[1] = y;\r\n return mercator;\r\n}\r\n\r\n// 墨卡托转经纬度\r\nfunction mercator2lonlat(longitude, latitude) {\r\n var lonlat = Array(2)\r\n var x = longitude / 20037508.34 * 180;\r\n var y = latitude / 20037508.34 * 180;\r\n y = 180 / Math.PI * (2 * Math.atan(Math.exp(y * Math.PI / 180)) - Math.PI / 2);\r\n lonlat[0] = x;\r\n lonlat[1] = y;\r\n return lonlat;\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]) {\r\n return false;\r\n }\r\n if (s_poi[1] > poi[1] && e_poi[1] > poi[1]) {\r\n return false;\r\n }\r\n if (s_poi[1] < poi[1] && e_poi[1] < poi[1]) {\r\n return false;\r\n }\r\n if (s_poi[1] == poi[1] && e_poi[1] > poi[1]) {\r\n return false;\r\n }\r\n if (e_poi[1] == poi[1] && s_poi[1] > poi[1]) {\r\n return false;\r\n }\r\n if (s_poi[0] < poi[0] && e_poi[1] < poi[1]) {\r\n return false;\r\n }\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, mercator) {\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 (mercator) {\r\n s_poi = lonlat2mercator(epoly[j][0], epoly[j][1]);\r\n e_poi = lonlat2mercator(epoly[j + 1][0], epoly[j + 1][1]);\r\n }\r\n if (isRayIntersectsSegment(poi, s_poi, e_poi)) {\r\n sinsc += 1;\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\nfunction drawMapDataPoints(series, opts, config, context) {\r\n var mapOption = assign({}, {\r\n border: true,\r\n mercator: false,\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 if (mapOption.mercator) {\r\n var max = lonlat2mercator(bounds.xMax, bounds.yMax)\r\n var min = lonlat2mercator(bounds.xMin, bounds.yMin)\r\n bounds.xMax = max[0]\r\n bounds.yMax = max[1]\r\n bounds.xMin = min[0]\r\n bounds.yMin = min[1]\r\n }\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 for (var i = 0; i < data.length; i++) {\r\n context.beginPath();\r\n context.setLineWidth(mapOption.borderWidth * opts.pix);\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 var gaosi = Array(2);\r\n if (mapOption.mercator) {\r\n gaosi = lonlat2mercator(coords[j][0], coords[j][1])\r\n } else {\r\n gaosi = coords[j]\r\n }\r\n point = coordinateToPoint(gaosi[1], gaosi[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 }\r\n if (opts.dataLabel == true) {\r\n for (var i = 0; i < data.length; i++) {\r\n var centerPoint = data[i].properties.centroid;\r\n if (centerPoint) {\r\n if (mapOption.mercator) {\r\n centerPoint = lonlat2mercator(data[i].properties.centroid[0], data[i].properties.centroid[1])\r\n }\r\n point = coordinateToPoint(centerPoint[1], centerPoint[0], bounds, scale, xoffset, yoffset);\r\n let fontSize = data[i].textSize * opts.pix || 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 || opts.fontColor)\r\n context.fillText(text, point.x - measureText(text, fontSize, context) / 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 mercator: mapOption.mercator\r\n }\r\n drawToolTipBridge(opts, config, context, 1);\r\n context.draw();\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) {\r\n return i + j\r\n }) / 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 getWordCloudPoint(opts, type, context) {\r\n let points = opts.series;\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 * opts.pix;\r\n let tWidth = measureText(text, tHeight, context);\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 +\r\n opts.height / 2\r\n ];\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 {\r\n return false\r\n };\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 * opts.pix;\r\n let tWidth = measureText(text, tHeight, context);\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\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 if (!opts.chartData.wordCloudData) {\r\n opts.chartData.wordCloudData = getWordCloudPoint(opts, wordOption.type, context);\r\n }\r\n context.beginPath();\r\n context.setFillStyle(opts.background);\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 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 * opts.pix;\r\n let tWidth = measureText(text, tHeight, context);\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 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 type:'funnel',\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 linearType: 'none',\r\n customColor: [],\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 * opts.pix;\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, funnelOption.type, eachSpacing, process);\r\n context.save();\r\n context.translate(centerPosition.x, centerPosition.y);\r\n funnelOption.customColor = fillCustomColor(funnelOption.linearType, funnelOption.customColor, series, config);\r\n if(funnelOption.type == 'pyramid'){\r\n for (let i = 0; i < series.length; i++) {\r\n if (i == series.length -1) {\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, -eachSpacing);\r\n context.lineTo(-series[i].radius - activeWidth, 0);\r\n context.lineTo(series[i].radius + activeWidth, 0);\r\n context.lineTo(activeWidth, -eachSpacing);\r\n context.lineTo(-activeWidth, -eachSpacing);\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.pix);\r\n context.setStrokeStyle(funnelOption.borderColor);\r\n var fillColor = hexToRgb(series[i].color, funnelOption.fillOpacity);\r\n if (funnelOption.linearType == 'custom') {\r\n var grd = context.createLinearGradient(series[i].radius, -eachSpacing, -series[i].radius, -eachSpacing);\r\n grd.addColorStop(0, hexToRgb(series[i].color, funnelOption.fillOpacity));\r\n grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[i].linearIndex], funnelOption.fillOpacity));\r\n grd.addColorStop(1, hexToRgb(series[i].color, funnelOption.fillOpacity));\r\n fillColor = grd\r\n }\r\n context.setFillStyle(fillColor);\r\n context.moveTo(0, -eachSpacing);\r\n context.lineTo(-series[i].radius, 0);\r\n context.lineTo(series[i].radius, 0);\r\n context.lineTo(0, -eachSpacing);\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].radius - activeWidth, 0);\r\n context.lineTo(-series[i + 1].radius - activeWidth, -eachSpacing);\r\n context.lineTo(series[i + 1].radius + activeWidth, -eachSpacing);\r\n context.lineTo(series[i].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.pix);\r\n context.setStrokeStyle(funnelOption.borderColor);\r\n var fillColor = hexToRgb(series[i].color, funnelOption.fillOpacity);\r\n if (funnelOption.linearType == 'custom') {\r\n var grd = context.createLinearGradient(series[i].radius, -eachSpacing, -series[i].radius, -eachSpacing);\r\n grd.addColorStop(0, hexToRgb(series[i].color, funnelOption.fillOpacity));\r\n grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[i].linearIndex], funnelOption.fillOpacity));\r\n grd.addColorStop(1, hexToRgb(series[i].color, funnelOption.fillOpacity));\r\n fillColor = grd\r\n }\r\n context.setFillStyle(fillColor);\r\n context.moveTo(0, 0);\r\n context.lineTo(-series[i].radius, 0);\r\n context.lineTo(-series[i + 1].radius, -eachSpacing);\r\n context.lineTo(series[i + 1].radius, -eachSpacing);\r\n context.lineTo(series[i].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 }else{\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.pix);\r\n context.setStrokeStyle(funnelOption.borderColor);\r\n var fillColor = hexToRgb(series[i].color, funnelOption.fillOpacity);\r\n if (funnelOption.linearType == 'custom') {\r\n var grd = context.createLinearGradient(series[i].radius, -eachSpacing, -series[i].radius, -eachSpacing);\r\n grd.addColorStop(0, hexToRgb(series[i].color, funnelOption.fillOpacity));\r\n grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[i].linearIndex], funnelOption.fillOpacity));\r\n grd.addColorStop(1, hexToRgb(series[i].color, funnelOption.fillOpacity));\r\n fillColor = grd\r\n }\r\n context.setFillStyle(fillColor);\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.pix);\r\n context.setStrokeStyle(funnelOption.borderColor);\r\n var fillColor = hexToRgb(series[i].color, funnelOption.fillOpacity);\r\n if (funnelOption.linearType == 'custom') {\r\n var grd = context.createLinearGradient(series[i].radius, -eachSpacing, -series[i].radius, -eachSpacing);\r\n grd.addColorStop(0, hexToRgb(series[i].color, funnelOption.fillOpacity));\r\n grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[i].linearIndex], funnelOption.fillOpacity));\r\n grd.addColorStop(1, hexToRgb(series[i].color, funnelOption.fillOpacity));\r\n fillColor = grd\r\n }\r\n context.setFillStyle(fillColor);\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 }\r\n \r\n context.restore();\r\n if (opts.dataLabel !== false && process === 1) {\r\n drawFunnelText(series, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, 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 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 if(item.labelShow === false){\r\n continue;\r\n }\r\n let startX, endX, startY, fontSize;\r\n let text = item.formatter ? item.formatter(item,i,series,opts) : util.toFixed(item._proportion_ * 100) + '%';\r\n text = item.labelText ? item.labelText : text;\r\n if (labelAlign == 'right') {\r\n if(opts.extra.funnel.type === 'pyramid'){\r\n if (i == series.length -1) {\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 }else{\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 }\r\n endX = startX + activeWidth * 2;\r\n startY = item.funnelArea[1] + eachSpacing / 2;\r\n fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix;\r\n context.setLineWidth(1 * opts.pix);\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 * opts.pix, 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 || opts.fontColor);\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(opts.extra.funnel.type === 'pyramid'){\r\n if (i == series.length -1) {\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 }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 }\r\n endX = startX - activeWidth * 2;\r\n startY = item.funnelArea[1] + eachSpacing / 2;\r\n fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix;\r\n context.setLineWidth(1 * opts.pix);\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 || opts.fontColor);\r\n context.fillText(text, endX - 5 - measureText(text, fontSize, context), 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 || 'easeInOut';\r\n var delay = 17;\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 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\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 //兼容ECharts饼图类数据格式\r\n if (type === 'pie' || type === 'ring' || type === 'mount' || type === 'rose' || type === 'funnel') {\r\n series = fixPieSeries(series, opts, config);\r\n }\r\n var categories = opts.categories;\r\n if (type === 'mount') {\r\n categories = [];\r\n for (let j = 0; j < series.length; j++) {\r\n if(series[j].show !== false) categories.push(series[j].name)\r\n }\r\n opts.categories = categories;\r\n }\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 /* 过滤掉show=false的series */\r\n opts._series_ = series = filterSeries(series);\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] * opts.pix;\r\n }\r\n //通过计算三大区域:图例、X轴、Y轴的大小,确定绘图区域\r\n var _calLegendData = calLegendData(seriesMA, opts, config, opts.chartData, context),\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 = {},\r\n yAxisWidth = 0;\r\n if (opts.type === 'line' || opts.type === 'column'|| opts.type === 'mount' || opts.type === 'area' || opts.type === 'mix' || opts.type === 'candle' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') {\r\n _calYAxisData = calYAxisData(series, opts, config, context);\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 * opts.pix : config.fontSize)\r\n }\r\n opts.area[0] += maxTitleHeight;\r\n }\r\n let rightIndex = 0,\r\n 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 * opts.pix;\r\n } else {\r\n opts.area[3] += yAxisWidth[i].width;\r\n }\r\n leftIndex += 1;\r\n } else if (yAxisWidth[i].position == 'right') {\r\n if (rightIndex > 0) {\r\n opts.area[1] += yAxisWidth[i].width + opts.yAxis.padding * opts.pix;\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 && opts.type !== 'radar' && opts.type !== 'gauge' && opts.type !== 'bar') {\r\n opts.chartData.xAxisData = getXAxisPoints(opts.categories, opts, config);\r\n let _calCategoriesData = calCategoriesData(opts.categories, opts, config, opts.chartData.xAxisData.eachSpacing, context),\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 if (opts.type === 'line' || opts.type === 'area' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') {\r\n opts.chartData.xAxisData = calXAxisData(series, opts, config, context);\r\n categories = opts.chartData.xAxisData.rangesFormat;\r\n let _calCategoriesData = calCategoriesData(categories, opts, config, opts.chartData.xAxisData.eachSpacing, context),\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 opts.chartData.xAxisData = {\r\n xAxisPoints: []\r\n };\r\n }\r\n }\r\n\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.currentOffset = offsetLeft;\r\n _this.scrollOption.startTouchX = offsetLeft;\r\n _this.scrollOption.distance = 0;\r\n _this.scrollOption.lastMoveTime = 0;\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, config, context, opts);\r\n }\r\n \r\n switch (type) {\r\n case 'word':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\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.uevent.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: opts.timing,\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.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'line':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\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 onAnimationFinish: function onAnimationFinish() {\r\n _this.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'scatter':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\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 _drawScatterDataPoints = drawScatterDataPoints(series, opts, config, context, process),\r\n xAxisPoints = _drawScatterDataPoints.xAxisPoints,\r\n calPoints = _drawScatterDataPoints.calPoints,\r\n eachSpacing = _drawScatterDataPoints.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.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'bubble':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\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 _drawBubbleDataPoints = drawBubbleDataPoints(series, opts, config, context, process),\r\n xAxisPoints = _drawBubbleDataPoints.xAxisPoints,\r\n calPoints = _drawBubbleDataPoints.calPoints,\r\n eachSpacing = _drawBubbleDataPoints.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.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'mix':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\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.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'column':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\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.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'mount':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\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 _drawMountDataPoints = drawMountDataPoints(series, opts, config, context, process),\r\n xAxisPoints = _drawMountDataPoints.xAxisPoints,\r\n calPoints = _drawMountDataPoints.calPoints,\r\n eachSpacing = _drawMountDataPoints.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.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'bar':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\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 drawXAxis(categories, opts, config, context);\r\n var _drawBarDataPoints = drawBarDataPoints(series, opts, config, context, process),\r\n yAxisPoints = _drawBarDataPoints.yAxisPoints,\r\n calPoints = _drawBarDataPoints.calPoints,\r\n eachSpacing = _drawBarDataPoints.eachSpacing;\r\n opts.chartData.yAxisPoints = yAxisPoints;\r\n opts.chartData.xAxisPoints = opts.chartData.xAxisData.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, yAxisPoints);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'area':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\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.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'ring':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\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.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'pie':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\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.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'rose':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\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.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'radar':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\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.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'arcbar':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\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.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'gauge':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\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.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'candle':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\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.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n }\r\n}\r\n\r\nfunction uChartsEvent() {\r\n this.events = {};\r\n}\r\n\r\nuChartsEvent.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\nuChartsEvent.prototype.delEventListener = function(type) {\r\n this.events[type] = [];\r\n};\r\n\r\nuChartsEvent.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 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.log('[uCharts] '+e);\r\n }\r\n });\r\n }\r\n};\r\n\r\nvar uCharts = function uCharts(opts) {\r\n opts.pix = opts.pixelRatio ? opts.pixelRatio : 1;\r\n opts.fontSize = opts.fontSize ? opts.fontSize : 13;\r\n opts.fontColor = opts.fontColor ? opts.fontColor : config.fontColor;\r\n if (opts.background == \"\" || opts.background == \"none\") {\r\n opts.background = \"#FFFFFF\"\r\n }\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.pix,\r\n gridColor: '#cccccc',\r\n padding: 10,\r\n fontColor: '#666666'\r\n }, opts.yAxis);\r\n opts.xAxis = assign({}, {\r\n rotateLabel: false,\r\n rotateAngle:45,\r\n disabled: false,\r\n disableGrid: false,\r\n splitNumber: 5,\r\n calibration:false,\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.scrollPosition = opts.xAxis.scrollAlign;\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: opts.fontColor,\r\n formatter: {},\r\n hiddenColor: '#CECECE'\r\n }, opts.legend);\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 opts.rotate = opts.rotate ? true : false;\r\n opts.canvas2d = opts.canvas2d ? true : false;\r\n \r\n let config$$1 = assign({}, config);\r\n config$$1.color = opts.color ? opts.color : config$$1.color;\r\n if (opts.type == 'pie') {\r\n config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.pie.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;\r\n }\r\n if (opts.type == 'ring') {\r\n config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.ring.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;\r\n }\r\n if (opts.type == 'rose') {\r\n config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.rose.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;\r\n }\r\n config$$1.pieChartTextPadding = opts.dataLabel === false ? 0 : config$$1.pieChartTextPadding * opts.pix;\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 config$$1.yAxisWidth = config.yAxisWidth * opts.pix;\r\n config$$1.xAxisHeight = config.xAxisHeight * opts.pix;\r\n if (opts.enableScroll && opts.xAxis.scrollShow) {\r\n config$$1.xAxisHeight += 6 * opts.pix;\r\n }\r\n config$$1.fontSize = opts.fontSize * opts.pix;\r\n config$$1.titleFontSize = config.titleFontSize * opts.pix;\r\n config$$1.subtitleFontSize = config.subtitleFontSize * opts.pix;\r\n config$$1.toolTipPadding = config.toolTipPadding * opts.pix;\r\n config$$1.toolTipLineHeight = config.toolTipLineHeight * opts.pix;\r\n if(!opts.context){\r\n throw new Error('[uCharts] 未获取到context!注意:v2.0版本后,需要自行获取canvas的绘图上下文并传入opts.context!');\r\n }\r\n this.context = opts.context;\r\n if (!this.context.setTextAlign) {\r\n this.context.setStrokeStyle = function(e) {\r\n return this.strokeStyle = e;\r\n }\r\n this.context.setLineWidth = function(e) {\r\n return this.lineWidth = e;\r\n }\r\n this.context.setLineCap = function(e) {\r\n return this.lineCap = e;\r\n }\r\n this.context.setFontSize = function(e) {\r\n return this.font = e + \"px sans-serif\";\r\n }\r\n this.context.setFillStyle = function(e) {\r\n return this.fillStyle = e;\r\n }\r\n this.context.setTextAlign = function(e) {\r\n return this.textAlign = e;\r\n }\r\n this.context.draw = function() {}\r\n }\r\n //兼容NVUEsetLineDash\r\n if(!this.context.setLineDash){\r\n this.context.setLineDash = function(e) {}\r\n }\r\n opts.chartData = {};\r\n this.uevent = new uChartsEvent();\r\n this.scrollOption = {\r\n currentOffset: 0,\r\n startTouchX: 0,\r\n distance: 0,\r\n lastMoveTime: 0\r\n };\r\n this.opts = opts;\r\n this.config = config$$1;\r\n drawCharts.call(this, opts.type, opts, config$$1, this.context);\r\n};\r\n\r\nuCharts.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, this.context), 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), 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\nuCharts.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('[uCharts] 请启用滚动条后使用')\r\n return;\r\n }\r\n //当前屏幕中间点\r\n let centerPoint = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round(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, this.context),\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: 0,\r\n distance: 0,\r\n lastMoveTime: 0\r\n };\r\n calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts);\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\nuCharts.prototype.dobuleZoom = function(e) {\r\n if (this.opts.enableScroll !== true) {\r\n console.log('[uCharts] 请启用滚动条后使用')\r\n return;\r\n }\r\n const tcs = e.changedTouches;\r\n if (tcs.length < 2) {\r\n return;\r\n }\r\n for (var i = 0; i < tcs.length; i++) {\r\n tcs[i].x = tcs[i].x ? tcs[i].x : tcs[i].clientX;\r\n tcs[i].y = tcs[i].y ? tcs[i].y : tcs[i].clientY;\r\n }\r\n const ntcs = [getTouches(tcs[0], this.opts, e),getTouches(tcs[1], this.opts, e)]; \r\n const xlength = Math.abs(ntcs[0].x - ntcs[1].x);\r\n // 记录初始的两指之间的数据\r\n if(!this.scrollOption.moveCount){\r\n let cts0 = {changedTouches:[{x:tcs[0].x,y:this.opts.area[0] / this.opts.pix + 2}]};\r\n let cts1 = {changedTouches:[{x:tcs[1].x,y:this.opts.area[0] / this.opts.pix + 2}]};\r\n if(this.opts.rotate){\r\n cts0 = {changedTouches:[{x:this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,y:tcs[0].y}]};\r\n cts1 = {changedTouches:[{x:this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,y:tcs[1].y}]};\r\n }\r\n const moveCurrent1 = this.getCurrentDataIndex(cts0).index;\r\n const moveCurrent2 = this.getCurrentDataIndex(cts1).index;\r\n const moveCount = Math.abs(moveCurrent1 - moveCurrent2);\r\n this.scrollOption.moveCount = moveCount;\r\n this.scrollOption.moveCurrent1 = Math.min(moveCurrent1, moveCurrent2);\r\n this.scrollOption.moveCurrent2 = Math.max(moveCurrent1, moveCurrent2);\r\n return;\r\n }\r\n \r\n let currentEachSpacing = xlength / this.scrollOption.moveCount;\r\n let itemCount = (this.opts.width - this.opts.area[1] - this.opts.area[3]) / currentEachSpacing;\r\n itemCount = itemCount <= 2 ? 2 : itemCount;\r\n itemCount = itemCount >= this.opts.categories.length ? this.opts.categories.length : itemCount;\r\n this.opts.animation = false;\r\n this.opts.xAxis.itemCount = itemCount;\r\n // 重新计算滚动条偏移距离\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 currentLeft = eachSpacing * this.scrollOption.moveCurrent1;\r\n let screenWidth = endX - startX;\r\n let MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);\r\n offsetLeft = -currentLeft+Math.min(ntcs[0].x,ntcs[1].x)-this.opts.area[3]-eachSpacing;\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.currentOffset= offsetLeft;\r\n this.scrollOption.startTouchX= 0;\r\n this.scrollOption.distance=0;\r\n calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts);\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\nuCharts.prototype.stopAnimation = function() {\r\n this.animationInstance && this.animationInstance.stop();\r\n};\r\n\r\nuCharts.prototype.addEventListener = function(type, listener) {\r\n this.uevent.addEventListener(type, listener);\r\n};\r\n\r\nuCharts.prototype.delEventListener = function(type) {\r\n this.uevent.delEventListener(type);\r\n};\r\n\r\nuCharts.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') {\r\n return findPieChartCurrentIndex({\r\n x: _touches$.x,\r\n y: _touches$.y\r\n }, this.opts.chartData.pieData, this.opts);\r\n } else if (this.opts.type === 'rose') {\r\n return findRoseChartCurrentIndex({\r\n x: _touches$.x,\r\n y: _touches$.y\r\n }, this.opts.chartData.pieData, this.opts);\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 if (this.opts.type === 'bar') {\r\n return findBarChartCurrentIndex({\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 } 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\nuCharts.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\nuCharts.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 if (this.opts.type == 'candle') {\r\n this.opts.seriesMA[index].show = !this.opts.seriesMA[index].show;\r\n } else {\r\n this.opts.series[index].show = !this.opts.series[index].show;\r\n }\r\n this.opts.animation = option.animation ? true : false;\r\n this.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\nuCharts.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(\"[uCharts] 未获取到event坐标信息\");\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' || this.opts.type === 'scatter' || this.opts.type === 'bubble') {\r\n var current = this.getCurrentDataIndex(e);\r\n var index = option.index == undefined ? current.index : option.index;\r\n if (index > -1 || index.length>0) {\r\n var seriesData = getSeriesDataItem(this.opts.series, index, current.group);\r\n if (seriesData.length !== 0) {\r\n var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, 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: option.textList !== undefined ? option.textList : textList,\r\n offset: option.offset !== undefined ? option.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 === 'mount') {\r\n var index = option.index == undefined ? this.getCurrentDataIndex(e).index : option.index;\r\n if (index > -1) {\r\n var opts = assign({}, this.opts, {animation: false});\r\n var seriesData = assign({}, opts._series_[index]);\r\n var textList = [{\r\n text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data,\r\n color: seriesData.color\r\n }];\r\n var offset = {\r\n x: opts.chartData.calPoints[index].x,\r\n y: _touches$.y\r\n };\r\n opts.tooltip = {\r\n textList: option.textList ? option.textList : textList,\r\n offset: option.offset !== undefined ? option.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 === 'bar') {\r\n var current = this.getCurrentDataIndex(e);\r\n var index = option.index == undefined ? current.index : option.index;\r\n if (index > -1 || index.length>0) {\r\n var seriesData = getSeriesDataItem(this.opts.series, index, current.group);\r\n if (seriesData.length !== 0) {\r\n var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option),\r\n textList = _getToolTipData.textList,\r\n offset = _getToolTipData.offset;\r\n offset.x = _touches$.x;\r\n opts.tooltip = {\r\n textList: option.textList !== undefined ? option.textList : textList,\r\n offset: option.offset !== undefined ? option.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 current = this.getCurrentDataIndex(e);\r\n var index = option.index == undefined ? current.index : option.index;\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, 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: option.textList ? option.textList : textList,\r\n offset: option.offset !== undefined ? option.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 current = this.getCurrentDataIndex(e);\r\n var index = option.index == undefined ? current.index : option.index;\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, 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: option.textList ? option.textList : textList,\r\n offset: option.offset !== undefined ? option.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 = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\r\n if (index > -1) {\r\n var opts = assign({}, this.opts, {animation: false});\r\n var seriesData = assign({}, opts._series_[index]);\r\n var textList = [{\r\n text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : 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: option.textList ? option.textList : textList,\r\n offset: option.offset !== undefined ? option.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') {\r\n var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\r\n if (index > -1) {\r\n var opts = assign({}, this.opts, {animation: false});\r\n var seriesData = assign({}, this.opts.series[index]);\r\n seriesData.name = seriesData.properties.name\r\n var textList = [{\r\n text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.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: option.textList ? option.textList : textList,\r\n offset: option.offset !== undefined ? option.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 === 'word') {\r\n var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\r\n if (index > -1) {\r\n var opts = assign({}, this.opts, {animation: false});\r\n var seriesData = assign({}, this.opts.series[index]);\r\n var textList = [{\r\n text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.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: option.textList ? option.textList : textList,\r\n offset: option.offset !== undefined ? option.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 = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\r\n if (index > -1) {\r\n var opts = assign({}, this.opts, {animation: false});\r\n var seriesData = getSeriesDataItem(this.opts.series, index);\r\n if (seriesData.length !== 0) {\r\n var textList = seriesData.map((item) => {\r\n return {\r\n text: option.formatter ? option.formatter(item, this.opts.categories[index], index, this.opts) : 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: option.textList ? option.textList : textList,\r\n offset: option.offset !== undefined ? option.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\nuCharts.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\nuCharts.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\nuCharts.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.touchMoveLimit || 60;\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 if (this.scrollOption.startTouchX == 0) 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\t\tthis.opts = opts;\r\n drawCharts.call(this, opts.type, opts, this.config, this.context);\r\n return currentOffset + _distance;\r\n }\r\n};\r\n\r\nuCharts.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 this.scrollOption.moveCount = 0;\r\n }\r\n};\r\n\r\nexport default uCharts;","/*\r\n * uCharts®\r\n * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台\r\n * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.\r\n * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )\r\n * 复制使用请保留本段注释,感谢支持开源!\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// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性\r\nconst color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'];\r\n\r\n//事件转换函数,主要用作格式化x轴为时间轴,根据需求自行修改\r\nconst formatDateTime = (timeStamp, returnType)=>{\r\n var date = new Date();\r\n date.setTime(timeStamp * 1000);\r\n var y = date.getFullYear();\r\n var m = date.getMonth() + 1;\r\n m = m < 10 ? ('0' + m) : m;\r\n var d = date.getDate();\r\n d = d < 10 ? ('0' + d) : d;\r\n var h = date.getHours();\r\n h = h < 10 ? ('0' + h) : h;\r\n var minute = date.getMinutes();\r\n var second = date.getSeconds();\r\n minute = minute < 10 ? ('0' + minute) : minute;\r\n second = second < 10 ? ('0' + second) : second;\r\n if(returnType == 'full'){return y + '-' + m + '-' + d + ' '+ h +':' + minute + ':' + second;}\r\n if(returnType == 'y-m-d'){return y + '-' + m + '-' + d;}\r\n if(returnType == 'h:m'){return h +':' + minute;}\r\n if(returnType == 'h:m:s'){return h +':' + minute +':' + second;}\r\n return [y, m, d, h, minute, second];\r\n}\r\n\r\nconst cfu = {\r\n //demotype为自定义图表类型,一般不需要自定义图表类型,只需要改根节点上对应的类型即可\r\n\t\"type\":[\"pie\",\"ring\",\"rose\",\"word\",\"funnel\",\"map\",\"arcbar\",\"line\",\"column\",\"mount\",\"bar\",\"area\",\"radar\",\"gauge\",\"candle\",\"mix\",\"tline\",\"tarea\",\"scatter\",\"bubble\",\"demotype\"],\r\n\t\"range\":[\"饼状图\",\"圆环图\",\"玫瑰图\",\"词云图\",\"漏斗图\",\"地图\",\"圆弧进度条\",\"折线图\",\"柱状图\",\"山峰图\",\"条状图\",\"区域图\",\"雷达图\",\"仪表盘\",\"K线图\",\"混合图\",\"时间轴折线\",\"时间轴区域\",\"散点图\",\"气泡图\",\"自定义类型\"],\r\n //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的\"demotype\"\r\n //自定义类型时需要注意\"tline\",\"tarea\",\"scatter\",\"bubble\"等时间轴(矢量x轴)类图表,没有categories,不需要加入categories\r\n\t\"categories\":[\"line\",\"column\",\"mount\",\"bar\",\"area\",\"radar\",\"gauge\",\"candle\",\"mix\",\"demotype\"],\r\n //instance为实例变量承载属性,不要删除\r\n \"instance\":{},\r\n //option为opts及eopts承载属性,不要删除\r\n \"option\":{},\r\n //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换\r\n \"formatter\":{\r\n \"yAxisDemo1\":function(val, index, opts){return val+'元'},\r\n \"yAxisDemo2\":function(val, index, opts){return val.toFixed(2)},\r\n \"xAxisDemo1\":function(val, index, opts){return val+'年';},\r\n \"xAxisDemo2\":function(val, index, opts){return formatDateTime(val,'h:m')},\r\n \"seriesDemo1\":function(val, index, series, opts){return val+'元'},\r\n \"tooltipDemo1\":function(item, category, index, opts){\r\n if(index==0){\r\n \treturn '随便用'+item.data+'年'\r\n }else{\r\n \treturn '其他我没改'+item.data+'天'\r\n }\r\n },\r\n \"pieDemo\":function(val, index, series, opts){\r\n if(index !== undefined){\r\n return series[index].name+':'+series[index].data+'元'\r\n }\r\n },\r\n },\r\n //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type=\"demotype\" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。\r\n \"demotype\":{\r\n //我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置\r\n \"type\": \"line\",\r\n \"color\": color,\r\n \"padding\": [15,10,0,15],\r\n \"xAxis\": {\r\n \"disableGrid\": true,\r\n },\r\n \"yAxis\": {\r\n \"gridType\": \"dash\",\r\n \"dashLength\": 2,\r\n },\r\n \"legend\": {\r\n },\r\n \"extra\": {\r\n \t\"line\": {\r\n \t\t\"type\": \"curve\",\r\n \t\t\"width\": 2\r\n \t},\r\n }\r\n },\r\n //下面是自定义配置,请添加项目所需的通用配置\r\n\t\"pie\":{\r\n\t\t\"type\": \"pie\",\r\n \"color\": color,\r\n\t\t\"padding\": [5,5,5,5],\r\n\t\t\"extra\": {\r\n\t\t\t\"pie\": {\r\n\t\t\t\t\"activeOpacity\": 0.5,\r\n\t\t\t\t\"activeRadius\": 10,\r\n\t\t\t\t\"offsetAngle\": 0,\r\n\t\t\t\t\"labelWidth\": 15,\r\n\t\t\t\t\"border\": true,\r\n\t\t\t\t\"borderWidth\": 3,\r\n\t\t\t\t\"borderColor\": \"#FFFFFF\"\r\n\t\t\t},\r\n\t\t}\r\n\t},\r\n\t\"ring\":{\r\n\t\t\"type\": \"ring\",\r\n \"color\": color,\r\n\t\t\"padding\": [5,5,5,5],\r\n\t\t\"rotate\": false,\r\n\t\t\"dataLabel\": true,\r\n\t\t\"legend\": {\r\n\t\t\t\"show\": true,\r\n\t\t\t\"position\": \"right\",\r\n \"lineHeight\": 25,\r\n\t\t},\r\n\t\t\"title\": {\r\n\t\t\t\"name\": \"收益率\",\r\n\t\t\t\"fontSize\": 15,\r\n\t\t\t\"color\": \"#666666\"\r\n\t\t},\r\n\t\t\"subtitle\": {\r\n\t\t\t\"name\": \"70%\",\r\n\t\t\t\"fontSize\": 25,\r\n\t\t\t\"color\": \"#7cb5ec\"\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"ring\": {\r\n\t\t\t\t\"ringWidth\":30,\r\n\t\t\t\t\"activeOpacity\": 0.5,\r\n\t\t\t\t\"activeRadius\": 10,\r\n\t\t\t\t\"offsetAngle\": 0,\r\n\t\t\t\t\"labelWidth\": 15,\r\n\t\t\t\t\"border\": true,\r\n\t\t\t\t\"borderWidth\": 3,\r\n\t\t\t\t\"borderColor\": \"#FFFFFF\"\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n\t\"rose\":{\r\n\t\t\"type\": \"rose\",\r\n \"color\": color,\r\n\t\t\"padding\": [5,5,5,5],\r\n\t\t\"legend\": {\r\n\t\t\t\"show\": true,\r\n\t\t\t\"position\": \"left\",\r\n \"lineHeight\": 25,\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"rose\": {\r\n\t\t\t\t\"type\": \"area\",\r\n\t\t\t\t\"minRadius\": 50,\r\n\t\t\t\t\"activeOpacity\": 0.5,\r\n\t\t\t\t\"activeRadius\": 10,\r\n\t\t\t\t\"offsetAngle\": 0,\r\n\t\t\t\t\"labelWidth\": 15,\r\n\t\t\t\t\"border\": false,\r\n\t\t\t\t\"borderWidth\": 2,\r\n\t\t\t\t\"borderColor\": \"#FFFFFF\"\r\n\t\t\t},\r\n\t\t}\r\n\t},\r\n\t\"word\":{\r\n\t\t\"type\": \"word\",\r\n \"color\": color,\r\n\t\t\"extra\": {\r\n\t\t\t\"word\": {\r\n\t\t\t\t\"type\": \"normal\",\r\n\t\t\t\t\"autoColors\": false\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t\"funnel\":{\r\n\t\t\"type\": \"funnel\",\r\n \"color\": color,\r\n\t\t\"padding\": [15,15,0,15],\r\n\t\t\"extra\": {\r\n\t\t\t\"funnel\": {\r\n\t\t\t\t\"activeOpacity\": 0.3,\r\n\t\t\t\t\"activeWidth\": 10,\r\n\t\t\t\t\"border\": true,\r\n\t\t\t\t\"borderWidth\": 2,\r\n\t\t\t\t\"borderColor\": \"#FFFFFF\",\r\n\t\t\t\t\"fillOpacity\": 1,\r\n\t\t\t\t\"labelAlign\": \"right\"\r\n\t\t\t},\r\n\t\t}\r\n\t},\r\n\t\"map\":{\r\n\t\t\"type\": \"map\",\r\n \"color\": color,\r\n\t\t\"padding\": [0,0,0,0],\r\n \"dataLabel\": true,\r\n\t\t\"extra\": {\r\n\t\t\t\"map\": {\r\n\t\t\t\t\"border\": true,\r\n\t\t\t\t\"borderWidth\": 1,\r\n\t\t\t\t\"borderColor\": \"#666666\",\r\n\t\t\t\t\"fillOpacity\": 0.6,\r\n\t\t\t\t\"activeBorderColor\": \"#F04864\",\r\n\t\t\t\t\"activeFillColor\": \"#FACC14\",\r\n\t\t\t\t\"activeFillOpacity\": 1\r\n\t\t\t},\r\n\t\t}\r\n\t},\r\n\t\"arcbar\":{\r\n\t\t\"type\": \"arcbar\",\r\n \"color\": color,\r\n\t\t\"title\": {\r\n\t\t\t\"name\": \"百分比\",\r\n\t\t\t\"fontSize\": 25,\r\n\t\t\t\"color\": \"#00FF00\"\r\n\t\t},\r\n\t\t\"subtitle\": {\r\n\t\t\t\"name\": \"默认标题\",\r\n\t\t\t\"fontSize\": 15,\r\n\t\t\t\"color\": \"#666666\"\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"arcbar\": {\r\n\t\t\t\t\"type\": \"default\",\r\n\t\t\t\t\"width\": 12,\r\n\t\t\t\t\"backgroundColor\": \"#E9E9E9\",\r\n\t\t\t\t\"startAngle\": 0.75,\r\n\t\t\t\t\"endAngle\": 0.25,\r\n\t\t\t\t\"gap\": 2\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t\"line\":{\r\n\t\t\"type\": \"line\",\r\n \"color\": color,\r\n\t\t\"padding\": [15,10,0,15],\r\n\t\t\"xAxis\": {\r\n \"disableGrid\": true,\r\n\t\t},\r\n\t\t\"yAxis\": {\r\n \"gridType\": \"dash\",\r\n \"dashLength\": 2,\r\n\t\t},\r\n\t\t\"legend\": {\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"line\": {\r\n\t\t\t\t\"type\": \"straight\",\r\n\t\t\t\t\"width\": 2\r\n\t\t\t},\r\n\t\t}\r\n\t},\r\n \"tline\":{\r\n \t\"type\": \"line\",\r\n \"color\": color,\r\n \t\"padding\": [15,10,0,15],\r\n \t\"xAxis\": {\r\n \"disableGrid\": false,\r\n \"boundaryGap\":\"justify\",\r\n \t},\r\n \t\"yAxis\": {\r\n \"gridType\": \"dash\",\r\n \"dashLength\": 2,\r\n \"data\":[\r\n {\r\n \"min\":0,\r\n \"max\":80\r\n }\r\n ]\r\n \t},\r\n \t\"legend\": {\r\n \t},\r\n \t\"extra\": {\r\n \t\t\"line\": {\r\n \t\t\t\"type\": \"curve\",\r\n \t\t\t\"width\": 2\r\n \t\t},\r\n \t}\r\n },\r\n \"tarea\":{\r\n \t\"type\": \"area\",\r\n \"color\": color,\r\n \t\"padding\": [15,10,0,15],\r\n \t\"xAxis\": {\r\n \"disableGrid\": true,\r\n \"boundaryGap\":\"justify\",\r\n \t},\r\n \t\"yAxis\": {\r\n \"gridType\": \"dash\",\r\n \"dashLength\": 2,\r\n \"data\":[\r\n {\r\n \"min\":0,\r\n \"max\":80\r\n }\r\n ]\r\n \t},\r\n \t\"legend\": {\r\n \t},\r\n \t\"extra\": {\r\n \t\t\"area\": {\r\n \t\t\t\"type\": \"curve\",\r\n \t\t\t\"opacity\": 0.2,\r\n \t\t\t\"addLine\": true,\r\n \t\t\t\"width\": 2,\r\n \t\t\t\"gradient\": true\r\n \t\t},\r\n \t}\r\n },\r\n\t\"column\":{\r\n\t\t\"type\": \"column\",\r\n \"color\": color,\r\n\t\t\"padding\": [15,15,0,5],\r\n\t\t\"xAxis\": {\r\n \"disableGrid\": true,\r\n\t\t},\r\n\t\t\"yAxis\": {\r\n \"data\":[{\"min\":0}]\r\n\t\t},\r\n\t\t\"legend\": {\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"column\": {\r\n\t\t\t\t\"type\": \"group\",\r\n\t\t\t\t\"width\": 30,\r\n\t\t\t\t\"activeBgColor\": \"#000000\",\r\n\t\t\t\t\"activeBgOpacity\": 0.08\r\n\t\t\t},\r\n\t\t}\r\n\t},\r\n \"mount\":{\r\n \t\"type\": \"mount\",\r\n \"color\": color,\r\n \t\"padding\": [15,15,0,5],\r\n \t\"xAxis\": {\r\n \"disableGrid\": true,\r\n \t},\r\n \t\"yAxis\": {\r\n \"data\":[{\"min\":0}]\r\n \t},\r\n \t\"legend\": {\r\n \t},\r\n \t\"extra\": {\r\n \t\t\"mount\": {\r\n \t\t\t\"type\": \"mount\",\r\n \t\t\t\"widthRatio\": 1.5,\r\n \t\t},\r\n \t}\r\n },\r\n \"bar\":{\r\n \t\"type\": \"bar\",\r\n \"color\": color,\r\n \t\"padding\": [15,30,0,5],\r\n \t\"xAxis\": {\r\n \"boundaryGap\":\"justify\",\r\n \"disableGrid\":false,\r\n \"min\":0,\r\n \"axisLine\":false\r\n \t},\r\n \t\"yAxis\": {\r\n \t},\r\n \t\"legend\": {\r\n \t},\r\n \t\"extra\": {\r\n \t\t\"bar\": {\r\n \t\t\t\"type\": \"group\",\r\n \t\t\t\"width\": 30,\r\n \t\t\t\"meterBorde\": 1,\r\n \t\t\t\"meterFillColor\": \"#FFFFFF\",\r\n \t\t\t\"activeBgColor\": \"#000000\",\r\n \t\t\t\"activeBgOpacity\": 0.08\r\n \t\t},\r\n \t}\r\n },\r\n\t\"area\":{\r\n\t\t\"type\": \"area\",\r\n\t\t\"color\": color,\r\n\t\t\"padding\": [15,15,0,15],\r\n\t\t\"xAxis\": {\r\n \"disableGrid\": true,\r\n\t\t},\r\n\t\t\"yAxis\": {\r\n \"gridType\": \"dash\",\r\n \"dashLength\": 2,\r\n\t\t},\r\n\t\t\"legend\": {\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"area\": {\r\n\t\t\t\t\"type\": \"straight\",\r\n\t\t\t\t\"opacity\": 0.2,\r\n\t\t\t\t\"addLine\": true,\r\n\t\t\t\t\"width\": 2,\r\n\t\t\t\t\"gradient\": false\r\n\t\t\t},\r\n\t\t}\r\n\t},\r\n\t\"radar\":{\r\n\t\t\"type\": \"radar\",\r\n\t\t\"color\": color,\r\n\t\t\"padding\": [5,5,5,5],\r\n \"dataLabel\": false,\r\n\t\t\"legend\": {\r\n\t\t\t\"show\": true,\r\n\t\t\t\"position\": \"right\",\r\n \"lineHeight\": 25,\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"radar\": {\r\n\t\t\t\t\"gridType\": \"radar\",\r\n\t\t\t\t\"gridColor\": \"#CCCCCC\",\r\n\t\t\t\t\"gridCount\": 3,\r\n\t\t\t\t\"opacity\": 0.2,\r\n\t\t\t\t\"max\": 200\r\n\t\t\t},\r\n\t\t}\r\n\t},\r\n\t\"gauge\":{\r\n\t\t\"type\": \"gauge\",\r\n\t\t\"color\": color,\r\n\t\t\"title\": {\r\n\t\t\t\"name\": \"66Km/H\",\r\n\t\t\t\"fontSize\": 25,\r\n\t\t\t\"color\": \"#2fc25b\",\r\n\t\t\t\"offsetY\": 50\r\n\t\t},\r\n\t\t\"subtitle\": {\r\n\t\t\t\"name\": \"实时速度\",\r\n\t\t\t\"fontSize\": 15,\r\n\t\t\t\"color\": \"#1890ff\",\r\n\t\t\t\"offsetY\": -50\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"gauge\": {\r\n\t\t\t\t\"type\": \"default\",\r\n\t\t\t\t\"width\": 30,\r\n\t\t\t\t\"labelColor\": \"#666666\",\r\n\t\t\t\t\"startAngle\": 0.75,\r\n\t\t\t\t\"endAngle\": 0.25,\r\n\t\t\t\t\"startNumber\": 0,\r\n\t\t\t\t\"endNumber\": 100,\r\n\t\t\t\t\"labelFormat\": \"\",\r\n\t\t\t\t\"splitLine\": {\r\n\t\t\t\t\t\"fixRadius\": 0,\r\n\t\t\t\t\t\"splitNumber\": 10,\r\n\t\t\t\t\t\"width\": 30,\r\n\t\t\t\t\t\"color\": \"#FFFFFF\",\r\n\t\t\t\t\t\"childNumber\": 5,\r\n\t\t\t\t\t\"childWidth\": 12\r\n\t\t\t\t},\r\n\t\t\t\t\"pointer\": {\r\n\t\t\t\t\t\"width\": 24,\r\n\t\t\t\t\t\"color\": \"auto\"\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t\"candle\":{\r\n\t\t\"type\": \"candle\",\r\n\t\t\"color\": color,\r\n\t\t\"padding\": [15,15,0,15],\r\n\t\t\"enableScroll\": true,\r\n\t\t\"enableMarkLine\": true,\r\n\t\t\"dataLabel\": false,\r\n\t\t\"xAxis\": {\r\n\t\t\t\"labelCount\": 4,\r\n\t\t\t\"itemCount\": 40,\r\n\t\t\t\"disableGrid\": true,\r\n\t\t\t\"gridColor\": \"#CCCCCC\",\r\n\t\t\t\"gridType\": \"solid\",\r\n\t\t\t\"dashLength\": 4,\r\n\t\t\t\"scrollShow\": true,\r\n\t\t\t\"scrollAlign\": \"left\",\r\n\t\t\t\"scrollColor\": \"#A6A6A6\",\r\n\t\t\t\"scrollBackgroundColor\": \"#EFEBEF\"\r\n\t\t},\r\n\t\t\"yAxis\": {\r\n\t\t},\r\n\t\t\"legend\": {\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"candle\": {\r\n\t\t\t\t\"color\": {\r\n\t\t\t\t\t\"upLine\": \"#f04864\",\r\n\t\t\t\t\t\"upFill\": \"#f04864\",\r\n\t\t\t\t\t\"downLine\": \"#2fc25b\",\r\n\t\t\t\t\t\"downFill\": \"#2fc25b\"\r\n\t\t\t\t},\r\n\t\t\t\t\"average\": {\r\n\t\t\t\t\t\"show\": true,\r\n\t\t\t\t\t\"name\": [\"MA5\",\"MA10\",\"MA30\"],\r\n\t\t\t\t\t\"day\": [5,10,20],\r\n\t\t\t\t\t\"color\": [\"#1890ff\",\"#2fc25b\",\"#facc14\"]\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\"markLine\": {\r\n\t\t\t\t\"type\": \"dash\",\r\n\t\t\t\t\"dashLength\": 5,\r\n\t\t\t\t\"data\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"value\": 2150,\r\n\t\t\t\t\t\t\"lineColor\": \"#f04864\",\r\n\t\t\t\t\t\t\"showLabel\": true\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"value\": 2350,\r\n\t\t\t\t\t\t\"lineColor\": \"#f04864\",\r\n\t\t\t\t\t\t\"showLabel\": true\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t\"mix\":{\r\n\t\t\"type\": \"mix\",\r\n\t\t\"color\": color,\r\n\t\t\"padding\": [15,15,0,15],\r\n\t\t\"xAxis\": {\r\n \"disableGrid\": true,\r\n\t\t},\r\n\t\t\"yAxis\": {\r\n\t\t\t\"disabled\": false,\r\n\t\t\t\"disableGrid\": false,\r\n\t\t\t\"splitNumber\": 5,\r\n\t\t\t\"gridType\": \"dash\",\r\n\t\t\t\"dashLength\": 4,\r\n\t\t\t\"gridColor\": \"#CCCCCC\",\r\n\t\t\t\"padding\": 10,\r\n\t\t\t\"showTitle\": true,\r\n\t\t\t\"data\": []\r\n\t\t},\r\n\t\t\"legend\": {\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"mix\": {\r\n\t\t\t\t\"column\": {\r\n\t\t\t\t\t\"width\": 20\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t}\r\n\t},\r\n\t\"scatter\":{\r\n\t\t\"type\": \"scatter\",\r\n\t\t\"color\":color,\r\n\t\t\"padding\":[15,15,0,15],\r\n \"dataLabel\":false,\r\n \"xAxis\": {\r\n \"disableGrid\": false,\r\n \"gridType\":\"dash\",\r\n \"splitNumber\":5,\r\n \"boundaryGap\":\"justify\",\r\n \"min\":0\r\n },\r\n \"yAxis\": {\r\n \"disableGrid\": false,\r\n \"gridType\":\"dash\",\r\n },\r\n \"legend\": {\r\n },\r\n \"extra\": {\r\n \t\"scatter\": {\r\n \t},\r\n }\r\n\t},\r\n\t\"bubble\":{\r\n\t\t\"type\": \"bubble\",\r\n\t\t\"color\":color,\r\n\t\t\"padding\":[15,15,0,15],\r\n \"xAxis\": {\r\n \"disableGrid\": false,\r\n \"gridType\":\"dash\",\r\n \"splitNumber\":5,\r\n \"boundaryGap\":\"justify\",\r\n \"min\":0,\r\n \"max\":250\r\n },\r\n \"yAxis\": {\r\n \"disableGrid\": false,\r\n \"gridType\":\"dash\",\r\n \"data\":[{\r\n \"min\":0,\r\n \"max\":150\r\n }]\r\n },\r\n \"legend\": {\r\n },\r\n \"extra\": {\r\n \t\"bubble\": {\r\n \"border\":2,\r\n \"opacity\": 0.5,\r\n \t},\r\n }\r\n\t}\r\n}\r\n\r\nexport default cfu;","/*!\n * vuex v3.6.2\n * (c) 2021 Evan You\n * @license MIT\n */\n'use strict';\n\nfunction applyMixin (Vue) {\n var version = Number(Vue.version.split('.')[0]);\n\n if (version >= 2) {\n Vue.mixin({ beforeCreate: vuexInit });\n } else {\n // override init and inject vuex init procedure\n // for 1.x backwards compatibility.\n var _init = Vue.prototype._init;\n Vue.prototype._init = function (options) {\n if ( options === void 0 ) options = {};\n\n options.init = options.init\n ? [vuexInit].concat(options.init)\n : vuexInit;\n _init.call(this, options);\n };\n }\n\n /**\n * Vuex init hook, injected into each instances init hooks list.\n */\n\n function vuexInit () {\n var options = this.$options;\n // store injection\n if (options.store) {\n this.$store = typeof options.store === 'function'\n ? options.store()\n : options.store;\n } else if (options.parent && options.parent.$store) {\n this.$store = options.parent.$store;\n }\n }\n}\n\nvar target = typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n if (!devtoolHook) { return }\n\n store._devtoolHook = devtoolHook;\n\n devtoolHook.emit('vuex:init', store);\n\n devtoolHook.on('vuex:travel-to-state', function (targetState) {\n store.replaceState(targetState);\n });\n\n store.subscribe(function (mutation, state) {\n devtoolHook.emit('vuex:mutation', mutation, state);\n }, { prepend: true });\n\n store.subscribeAction(function (action, state) {\n devtoolHook.emit('vuex:action', action, state);\n }, { prepend: true });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array<Object>} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n if ( cache === void 0 ) cache = [];\n\n // just return if obj is immutable value\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n // if obj is hit, it is in circular structure\n var hit = find(cache, function (c) { return c.original === obj; });\n if (hit) {\n return hit.copy\n }\n\n var copy = Array.isArray(obj) ? [] : {};\n // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n cache.push({\n original: obj,\n copy: copy\n });\n\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n\n return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = { namespaced: { configurable: true } };\n\nprototypeAccessors.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n \"not registered\"\n );\n }\n return\n }\n\n if (!child.runtime) {\n return\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n if (parent) {\n return parent.hasChild(key)\n }\n\n return false\n};\n\nfunction update (path, targetModule, newModule) {\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #731\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._watcherVM = new Vue();\n this._makeLocalGettersCache = Object.create(null);\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store vm, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreVM(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1); });\n\n var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n if (useDevtools) {\n devtoolPlugin(this);\n }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1.state); });\n\n if (\n (process.env.NODE_ENV !== 'production') &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n resolve(res);\n }, function (error) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1.state, error); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n var this$1 = this;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1 = this;\n\n this._withCommit(function () {\n this$1._vm._data.$$state = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1.state, path.slice(0, -1));\n Vue.delete(parentState, path[path.length - 1]);\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype[[104,111,116,85,112,100,97,116,101].map(function (item) {return String.fromCharCode(item)}).join('')] = function (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors$1 );\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset vm\n resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n var oldVm = store._vm;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computed = {};\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldVm.\n // using partial to return function with only arguments preserved in closure environment.\n computed[key] = partial(fn, store);\n Object.defineProperty(store.getters, key, {\n get: function () { return store._vm[key]; },\n enumerable: true // for local getters\n });\n });\n\n // use a Vue instance to store the state tree\n // suppress warnings just in case the user has added\n // some funky global mixins\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n store._vm = new Vue({\n data: {\n $$state: state\n },\n computed: computed\n });\n Vue.config.silent = silent;\n\n // enable strict mode for new vm\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldVm) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldVm._data.$$state = null;\n });\n }\n Vue.nextTick(function () { return oldVm.$destroy(); });\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && (process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n if ((process.env.NODE_ENV !== 'production')) {\n if (moduleName in parentState) {\n console.warn(\n (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n );\n }\n }\n Vue.set(parentState, moduleName, module.state);\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by vm update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n store._vm.$watch(function () { return this._data.$$state }, function () {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n if (Vue && _Vue === Vue) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error(\n '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n );\n }\n return\n }\n Vue = _Vue;\n applyMixin(Vue);\n}\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if ((process.env.NODE_ENV !== 'production') && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if ((process.env.NODE_ENV !== 'production') && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n if ( ref === void 0 ) ref = {};\n var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + (mutation.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + (action.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n }\n}\n\nfunction startMessage (logger, message, collapsed) {\n var startMessage = collapsed\n ? logger.groupCollapsed\n : logger.group;\n\n // render\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage (logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime () {\n var time = new Date();\n return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index_cjs = {\n Store: Store,\n install: install,\n version: '3.6.2',\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\n\nmodule.exports = index_cjs;\n","import config from '../config.js'\r\nimport common from './alert.js'\r\nimport store from '../store.js'\r\n\r\nconst request = {\r\n\tgetToken(){\r\n\t\tlet user=store.state.token\r\n\t\t// console.log(user);\r\n\t\tif(user){\r\n\t\t\tthis.post(\"/api/Accounts/RefreshToken\",{token:user.token,refreshToken:user.refreshToken},(data,res)=>{\r\n\t\t\t\tstore.commit('saveToken', res)\r\n\t\t\t\tuni.setStorageSync(\"token\", res)\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\treturn\r\n\t\t}\r\n\t\t\r\n\t},\r\n\tuploadFile(filePath, callback) {\r\n\t\tconst user = store.state.token || {};\r\n\t\t// if(!user.lawyerInfo) return common.askLogin();\r\n\t\tconsole.log(filePath, callback,2222222);\r\n\t\tuni.uploadFile({\r\n\t\t\turl: config.domain + '/api/Objects/integration/xxx',\r\n\t\t\tfilePath: filePath,\r\n\t\t\tname: 'file',\r\n\t\t\theader: {\r\n\t\t\t\t'Authorization': \"Bearer \"+ user.token || '',\r\n\t\t\t},\r\n\t\t\tsuccess (res) {\r\n\t\t\t\tconsole.log(res,333333);\r\n\t\t\t\tconst data = JSON.parse(res.data);\r\n\t\t\t\tif (data.status == -100) {\r\n\t\t\t\t\tcommon.askLogin()\r\n\t\t\t\t} else if (data.status == -1) {\r\n\t\t\t\t\tcommon.showError(data.msg)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t},\r\n\t\r\n\tuploadFile2(filePath, formdata, callback) {\r\n\t\tconst user = store.state.user || {};\r\n\t\tif(!user.lawyerInfo) return common.askLogin();\r\n\t\tconsole.log('1111111111111'+filePath)\r\n\t\tconsole.log('2222222222222'+formdata)\r\n\t\tconsole.log('3333333333333'+callback)\r\n\t\tuni.uploadFile({\r\n\t\t\turl: config.domain + '/file/uploadFile2',\r\n\t\t\tfilePath: filePath,\r\n\t\t\tname: 'file',\r\n\t\t\tformData: formdata,\r\n\t\t\theader: {\r\n\t\t\t\t'token': user.lawyerInfo.token || '',\r\n\t\t\t\t'login_type': user.login_type || 0,\r\n\t\t\t\t'who': user.who\r\n\t\t\t},\r\n\t\t\tsuccess (res) {\r\n\t\t\t\tconsole.log(res)\r\n\t\t\t\tconst data = JSON.parse(res.data);\r\n\t\t\t\tif (data.status == -100) {\r\n\t\t\t\t\tcommon.askLogin()\r\n\t\t\t\t} else if (data.status == -1) {\r\n\t\t\t\t\tcommon.showError(data.msg)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t},\r\n\r\n\tasync get(url, data, callback) {\r\n\r\n\t\tthis.getToken()\r\n\t\tconst user = store.state.token || {};\r\n\t\tawait uni.request({\r\n\t\t\turl: config.api + url, // 仅为示例,并非真实的接口地址\r\n\t\t\tmethod: 'GET',\r\n\t\t\tdata: data,\r\n\t\t\theader: {\r\n\t\t\t\t'Authorization': \"Bearer \"+ user.token || '',\r\n\t\t\t\t'content-type': 'application/json'\r\n\t\t\t},\r\n\t\t\tsuccess(res) {\r\n\t\t\t\tconst data = res.data;\r\n\t\t\t\t// console.log(data, '请求返回的数据', 1000000000000000)\r\n\t\t\t\tif (data.status == -100) {\r\n\t\t\t\t\tconsole.log('没有登录');\r\n\t\t\t\t\tcommon.askLogin()\r\n\t\t\t\t} else if (data.status == -1) {\r\n\t\t\t\t\tcommon.showError(data.msg)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t},\r\n\tpost(url, data, callback) {\r\n\t\t\r\n\t\tif(url!=\"/api/Accounts/RefreshToken\"&&user!={}){\r\n\t\t\tthis.getToken()\r\n\t\t}\r\n\t\tconst user = store.state.token || {};\r\n\t\ttry {\r\n\t\t\tuni.request({\r\n\t\t\t\turl: config.api + url, // 仅为示例,并非真实的接口地址\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tdata: data,\r\n\t\t\t\theader: {\r\n\t\t\t\t\t'Authorization': \"Bearer \"+ user.token || '',\r\n\t\t\t\t},\r\n\t\t\t\tsuccess(res) {\r\n\t\t\t\t\tconst data = res.data;\r\n\t\t\t\t\t// console.log(res, '------------- 请求返回的数据 -------------')\r\n\t\t\t\t\tif (data.status == -100) {\r\n\t\t\t\t\t\tconsole.log('没有登录');\r\n\t\t\t\t\t\tcommon.askLogin()\r\n\t\t\t\t\t} else if (data.status == -1) {\r\n\t\t\t\t\t\tcommon.showError(data.msg)\r\n\t\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// 第一个参数是data,第二个是全部数据,有时候会用到msg之类的数据,\r\n\t\t\t\t\t\t// 默认只要第一个值即可获取数据\r\n\t\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tfail: err => {\r\n\t\t\t\t\tconsole.error(err, 8877897)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(e)\r\n\t\t\t//TODO handle the exception\r\n\t\t}\r\n\t},\r\n\tpatch(url, data, callback) {\r\n\t\t\r\n\t\tif(url!=\"/api/Accounts/RefreshToken\"&&user!={}){\r\n\t\t\tthis.getToken()\r\n\t\t}\r\n\t\tconst user = store.state.token || {};\r\n\t\ttry {\r\n\t\t\tuni.request({\r\n\t\t\t\turl: config.api + url, // 仅为示例,并非真实的接口地址\r\n\t\t\t\tmethod: 'PATCH',\r\n\t\t\t\tdata: data,\r\n\t\t\t\theader: {\r\n\t\t\t\t\t'Authorization': \"Bearer \"+ user.token || '',\r\n\t\t\t\t},\r\n\t\t\t\tsuccess(res) {\r\n\t\t\t\t\tconst data = res.data;\r\n\t\t\t\t\t// console.log(res, '------------- 请求返回的数据 -------------')\r\n\t\t\t\t\tif (data.status == -100) {\r\n\t\t\t\t\t\tconsole.log('没有登录');\r\n\t\t\t\t\t\tcommon.askLogin()\r\n\t\t\t\t\t} else if (data.status == -1) {\r\n\t\t\t\t\t\tcommon.showError(data.msg)\r\n\t\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// 第一个参数是data,第二个是全部数据,有时候会用到msg之类的数据,\r\n\t\t\t\t\t\t// 默认只要第一个值即可获取数据\r\n\t\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tfail: err => {\r\n\t\t\t\t\tconsole.error(err, 8877897)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(e)\r\n\t\t\t//TODO handle the exception\r\n\t\t}\r\n\t},\r\n\tget2(url, data, callback) {\r\n\t\tconst user = store.state.user || {};\r\n\t\tuni.request({\r\n\t\t\turl: config.domain + url, // 仅为示例,并非真实的接口地址\r\n\t\t\tmethod: 'GET',\r\n\t\t\tdata: data,\r\n\t\t\theader: {\r\n\t\t\t\t'token': user.token || '',\r\n\t\t\t\t'login_type': user.login_type || 0\r\n\t\t\t},\r\n\t\t\tsuccess(res) {\r\n\t\t\t\tconst data = res.data;\r\n\t\t\t\t// console.log(data, '请求返回的数据', 1000000000000000)\r\n\t\t\t\tif (data.status == -100) {\r\n\t\t\t\t\tconsole.log('没有登录');\r\n\t\t\t\t\tcommon.askLogin()\r\n\t\t\t\t} else if (data.status == -1) {\r\n\t\t\t\t\tcommon.showError(data.msg)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t},\r\n\t\r\n\tpost2(url, data, callback) {\r\n\t\tconst user = store.state.user || {};\r\n\t\ttry {\r\n\t\t\tuni.request({\r\n\t\t\t\turl: config.domain + url, // 仅为示例,并非真实的接口地址\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tdata: data,\r\n\t\t\t\theader: {\r\n\t\t\t\t\t'token': user.lawyerInfo.token || '',\r\n\t\t\t\t\t'login_type': user.login_type || 0,\r\n\t\t\t\t\t'who': user.who\r\n\t\t\t\t},\r\n\t\t\t\tsuccess(res) {\r\n\t\t\t\t\tconst data = res.data;\r\n\t\t\t\t\tconsole.log(data, '------------- 请求返回的数据 -------------')\r\n\t\t\t\t\tif (data.status == -100) {\r\n\t\t\t\t\t\tconsole.log('没有登录');\r\n\t\t\t\t\t\tcommon.askLogin()\r\n\t\t\t\t\t} else if (data.status == -1) {\r\n\t\t\t\t\t\tcommon.showError(data.msg)\r\n\t\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// 第一个参数是data,第二个是全部数据,有时候会用到msg之类的数据,\r\n\t\t\t\t\t\t// 默认只要第一个值即可获取数据\r\n\t\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tfail: err => {\r\n\t\t\t\t\tconsole.error(err, 8877897)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(e)\r\n\t\t\t//TODO handle the exception\r\n\t\t}\r\n\t},\r\n\t\r\n\t\r\n}\r\n\r\nexport default request\r\n","module.exports = require(\"regenerator-runtime\");\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() {\n return this || (typeof self === \"object\" && self);\n})() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n","const api = 'https://fx.anxincloud.cn';\nconst domain = 'https://fx.anxincloud.cn';\n\nconst devApi = 'https://121.36.37.70:8204';\nconst devDomain = 'https://121.36.37.70:8204';\n\nconst online = false; //是否线上模式\n\nexport default {\n domain: online ? domain : devDomain,\n api: online ? api : devApi\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 alert = {\r\n // 显示等待对话框\r\n showLoading: function(msg) {\r\n uni.showToast({\r\n title: msg,\r\n icon: \"loading\",\r\n duration: 100000\r\n });\r\n },\r\n // 隐藏等待对话框\r\n hideLoading: function(msg) {\r\n uni.hideToast();\r\n },\r\n // 成功\r\n showSuccess: function(msg) {\r\n uni.showToast({\r\n title: msg,\r\n icon: \"success\",\r\n duration: 2000\r\n });\r\n },\r\n //显示警告\r\n showWarning: function(msg) {\r\n uni.showToast({\r\n title: msg,\r\n icon: \"none\",\r\n duration: 2000\r\n });\r\n },\r\n\r\n showError: function(msg) {\r\n uni.showToast({\r\n title: msg,\r\n icon: \"none\",\r\n duration: 2000\r\n });\r\n },\r\n askLogin: function () {\r\n uni.showModal({\r\n title: '尚未登录',\r\n content: '前往授权登录页面吗?',\r\n success(res) {\r\n console.log(res)\r\n if (res.confirm) {\r\n uni.redirectTo({\r\n url: '/pages/login/login'\r\n })\r\n }\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport default alert","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","export default {\n \"id\": \"2852637\",\n \"name\": \"uniui图标库\",\n \"font_family\": \"uniicons\",\n \"css_prefix_text\": \"uniui-\",\n \"description\": \"\",\n \"glyphs\": [\n {\n \"icon_id\": \"25027049\",\n \"name\": \"yanse\",\n \"font_class\": \"color\",\n \"unicode\": \"e6cf\",\n \"unicode_decimal\": 59087\n },\n {\n \"icon_id\": \"25027048\",\n \"name\": \"wallet\",\n \"font_class\": \"wallet\",\n \"unicode\": \"e6b1\",\n \"unicode_decimal\": 59057\n },\n {\n \"icon_id\": \"25015720\",\n \"name\": \"settings-filled\",\n \"font_class\": \"settings-filled\",\n \"unicode\": \"e6ce\",\n \"unicode_decimal\": 59086\n },\n {\n \"icon_id\": \"25015434\",\n \"name\": \"shimingrenzheng-filled\",\n \"font_class\": \"auth-filled\",\n \"unicode\": \"e6cc\",\n \"unicode_decimal\": 59084\n },\n {\n \"icon_id\": \"24934246\",\n \"name\": \"shop-filled\",\n \"font_class\": \"shop-filled\",\n \"unicode\": \"e6cd\",\n \"unicode_decimal\": 59085\n },\n {\n \"icon_id\": \"24934159\",\n \"name\": \"staff-filled-01\",\n \"font_class\": \"staff-filled\",\n \"unicode\": \"e6cb\",\n \"unicode_decimal\": 59083\n },\n {\n \"icon_id\": \"24932461\",\n \"name\": \"VIP-filled\",\n \"font_class\": \"vip-filled\",\n \"unicode\": \"e6c6\",\n \"unicode_decimal\": 59078\n },\n {\n \"icon_id\": \"24932462\",\n \"name\": \"plus_circle_fill\",\n \"font_class\": \"plus-filled\",\n \"unicode\": \"e6c7\",\n \"unicode_decimal\": 59079\n },\n {\n \"icon_id\": \"24932463\",\n \"name\": \"folder_add-filled\",\n \"font_class\": \"folder-add-filled\",\n \"unicode\": \"e6c8\",\n \"unicode_decimal\": 59080\n },\n {\n \"icon_id\": \"24932464\",\n \"name\": \"yanse-filled\",\n \"font_class\": \"color-filled\",\n \"unicode\": \"e6c9\",\n \"unicode_decimal\": 59081\n },\n {\n \"icon_id\": \"24932465\",\n \"name\": \"tune-filled\",\n \"font_class\": \"tune-filled\",\n \"unicode\": \"e6ca\",\n \"unicode_decimal\": 59082\n },\n {\n \"icon_id\": \"24932455\",\n \"name\": \"a-rilidaka-filled\",\n \"font_class\": \"calendar-filled\",\n \"unicode\": \"e6c0\",\n \"unicode_decimal\": 59072\n },\n {\n \"icon_id\": \"24932456\",\n \"name\": \"notification-filled\",\n \"font_class\": \"notification-filled\",\n \"unicode\": \"e6c1\",\n \"unicode_decimal\": 59073\n },\n {\n \"icon_id\": \"24932457\",\n \"name\": \"wallet-filled\",\n \"font_class\": \"wallet-filled\",\n \"unicode\": \"e6c2\",\n \"unicode_decimal\": 59074\n },\n {\n \"icon_id\": \"24932458\",\n \"name\": \"paihangbang-filled\",\n \"font_class\": \"medal-filled\",\n \"unicode\": \"e6c3\",\n \"unicode_decimal\": 59075\n },\n {\n \"icon_id\": \"24932459\",\n \"name\": \"gift-filled\",\n \"font_class\": \"gift-filled\",\n \"unicode\": \"e6c4\",\n \"unicode_decimal\": 59076\n },\n {\n \"icon_id\": \"24932460\",\n \"name\": \"fire-filled\",\n \"font_class\": \"fire-filled\",\n \"unicode\": \"e6c5\",\n \"unicode_decimal\": 59077\n },\n {\n \"icon_id\": \"24928001\",\n \"name\": \"refreshempty\",\n \"font_class\": \"refreshempty\",\n \"unicode\": \"e6bf\",\n \"unicode_decimal\": 59071\n },\n {\n \"icon_id\": \"24926853\",\n \"name\": \"location-ellipse\",\n \"font_class\": \"location-filled\",\n \"unicode\": \"e6af\",\n \"unicode_decimal\": 59055\n },\n {\n \"icon_id\": \"24926735\",\n \"name\": \"person-filled\",\n \"font_class\": \"person-filled\",\n \"unicode\": \"e69d\",\n \"unicode_decimal\": 59037\n },\n {\n \"icon_id\": \"24926703\",\n \"name\": \"personadd-filled\",\n \"font_class\": \"personadd-filled\",\n \"unicode\": \"e698\",\n \"unicode_decimal\": 59032\n },\n {\n \"icon_id\": \"24923351\",\n \"name\": \"back\",\n \"font_class\": \"back\",\n \"unicode\": \"e6b9\",\n \"unicode_decimal\": 59065\n },\n {\n \"icon_id\": \"24923352\",\n \"name\": \"forward\",\n \"font_class\": \"forward\",\n \"unicode\": \"e6ba\",\n \"unicode_decimal\": 59066\n },\n {\n \"icon_id\": \"24923353\",\n \"name\": \"arrowthinright\",\n \"font_class\": \"arrow-right\",\n \"unicode\": \"e6bb\",\n \"unicode_decimal\": 59067\n },\n\t\t{\n\t\t \"icon_id\": \"24923353\",\n\t\t \"name\": \"arrowthinright\",\n\t\t \"font_class\": \"arrowthinright\",\n\t\t \"unicode\": \"e6bb\",\n\t\t \"unicode_decimal\": 59067\n\t\t},\n {\n \"icon_id\": \"24923354\",\n \"name\": \"arrowthinleft\",\n \"font_class\": \"arrow-left\",\n \"unicode\": \"e6bc\",\n \"unicode_decimal\": 59068\n },\n\t\t{\n\t\t \"icon_id\": \"24923354\",\n\t\t \"name\": \"arrowthinleft\",\n\t\t \"font_class\": \"arrowthinleft\",\n\t\t \"unicode\": \"e6bc\",\n\t\t \"unicode_decimal\": 59068\n\t\t},\n {\n \"icon_id\": \"24923355\",\n \"name\": \"arrowthinup\",\n \"font_class\": \"arrow-up\",\n \"unicode\": \"e6bd\",\n \"unicode_decimal\": 59069\n },\n\t\t{\n\t\t \"icon_id\": \"24923355\",\n\t\t \"name\": \"arrowthinup\",\n\t\t \"font_class\": \"arrowthinup\",\n\t\t \"unicode\": \"e6bd\",\n\t\t \"unicode_decimal\": 59069\n\t\t},\n {\n \"icon_id\": \"24923356\",\n \"name\": \"arrowthindown\",\n \"font_class\": \"arrow-down\",\n \"unicode\": \"e6be\",\n \"unicode_decimal\": 59070\n },{\n \"icon_id\": \"24923356\",\n \"name\": \"arrowthindown\",\n \"font_class\": \"arrowthindown\",\n \"unicode\": \"e6be\",\n \"unicode_decimal\": 59070\n },\n {\n \"icon_id\": \"24923349\",\n \"name\": \"arrowdown\",\n \"font_class\": \"bottom\",\n \"unicode\": \"e6b8\",\n \"unicode_decimal\": 59064\n },{\n \"icon_id\": \"24923349\",\n \"name\": \"arrowdown\",\n \"font_class\": \"arrowdown\",\n \"unicode\": \"e6b8\",\n \"unicode_decimal\": 59064\n },\n {\n \"icon_id\": \"24923346\",\n \"name\": \"arrowright\",\n \"font_class\": \"right\",\n \"unicode\": \"e6b5\",\n \"unicode_decimal\": 59061\n },\n\t\t{\n\t\t \"icon_id\": \"24923346\",\n\t\t \"name\": \"arrowright\",\n\t\t \"font_class\": \"arrowright\",\n\t\t \"unicode\": \"e6b5\",\n\t\t \"unicode_decimal\": 59061\n\t\t},\n {\n \"icon_id\": \"24923347\",\n \"name\": \"arrowup\",\n \"font_class\": \"top\",\n \"unicode\": \"e6b6\",\n \"unicode_decimal\": 59062\n },\n\t\t{\n\t\t \"icon_id\": \"24923347\",\n\t\t \"name\": \"arrowup\",\n\t\t \"font_class\": \"arrowup\",\n\t\t \"unicode\": \"e6b6\",\n\t\t \"unicode_decimal\": 59062\n\t\t},\n {\n \"icon_id\": \"24923348\",\n \"name\": \"arrowleft\",\n \"font_class\": \"left\",\n \"unicode\": \"e6b7\",\n \"unicode_decimal\": 59063\n },\n\t\t{\n\t\t \"icon_id\": \"24923348\",\n\t\t \"name\": \"arrowleft\",\n\t\t \"font_class\": \"arrowleft\",\n\t\t \"unicode\": \"e6b7\",\n\t\t \"unicode_decimal\": 59063\n\t\t},\n {\n \"icon_id\": \"24923334\",\n \"name\": \"eye\",\n \"font_class\": \"eye\",\n \"unicode\": \"e651\",\n \"unicode_decimal\": 58961\n },\n {\n \"icon_id\": \"24923335\",\n \"name\": \"eye-filled\",\n \"font_class\": \"eye-filled\",\n \"unicode\": \"e66a\",\n \"unicode_decimal\": 58986\n },\n {\n \"icon_id\": \"24923336\",\n \"name\": \"eye-slash\",\n \"font_class\": \"eye-slash\",\n \"unicode\": \"e6b3\",\n \"unicode_decimal\": 59059\n },\n {\n \"icon_id\": \"24923337\",\n \"name\": \"eye-slash-filled\",\n \"font_class\": \"eye-slash-filled\",\n \"unicode\": \"e6b4\",\n \"unicode_decimal\": 59060\n },\n {\n \"icon_id\": \"24923305\",\n \"name\": \"info-filled\",\n \"font_class\": \"info-filled\",\n \"unicode\": \"e649\",\n \"unicode_decimal\": 58953\n },\n {\n \"icon_id\": \"24923299\",\n \"name\": \"reload-01\",\n \"font_class\": \"reload\",\n \"unicode\": \"e6b2\",\n \"unicode_decimal\": 59058\n },\n {\n \"icon_id\": \"24923195\",\n \"name\": \"mic_slash_fill\",\n \"font_class\": \"micoff-filled\",\n \"unicode\": \"e6b0\",\n \"unicode_decimal\": 59056\n },\n {\n \"icon_id\": \"24923165\",\n \"name\": \"map-pin-ellipse\",\n \"font_class\": \"map-pin-ellipse\",\n \"unicode\": \"e6ac\",\n \"unicode_decimal\": 59052\n },\n {\n \"icon_id\": \"24923166\",\n \"name\": \"map-pin\",\n \"font_class\": \"map-pin\",\n \"unicode\": \"e6ad\",\n \"unicode_decimal\": 59053\n },\n {\n \"icon_id\": \"24923167\",\n \"name\": \"location\",\n \"font_class\": \"location\",\n \"unicode\": \"e6ae\",\n \"unicode_decimal\": 59054\n },\n {\n \"icon_id\": \"24923064\",\n \"name\": \"starhalf\",\n \"font_class\": \"starhalf\",\n \"unicode\": \"e683\",\n \"unicode_decimal\": 59011\n },\n {\n \"icon_id\": \"24923065\",\n \"name\": \"star\",\n \"font_class\": \"star\",\n \"unicode\": \"e688\",\n \"unicode_decimal\": 59016\n },\n {\n \"icon_id\": \"24923066\",\n \"name\": \"star-filled\",\n \"font_class\": \"star-filled\",\n \"unicode\": \"e68f\",\n \"unicode_decimal\": 59023\n },\n {\n \"icon_id\": \"24899646\",\n \"name\": \"a-rilidaka\",\n \"font_class\": \"calendar\",\n \"unicode\": \"e6a0\",\n \"unicode_decimal\": 59040\n },\n {\n \"icon_id\": \"24899647\",\n \"name\": \"fire\",\n \"font_class\": \"fire\",\n \"unicode\": \"e6a1\",\n \"unicode_decimal\": 59041\n },\n {\n \"icon_id\": \"24899648\",\n \"name\": \"paihangbang\",\n \"font_class\": \"medal\",\n \"unicode\": \"e6a2\",\n \"unicode_decimal\": 59042\n },\n {\n \"icon_id\": \"24899649\",\n \"name\": \"font\",\n \"font_class\": \"font\",\n \"unicode\": \"e6a3\",\n \"unicode_decimal\": 59043\n },\n {\n \"icon_id\": \"24899650\",\n \"name\": \"gift\",\n \"font_class\": \"gift\",\n \"unicode\": \"e6a4\",\n \"unicode_decimal\": 59044\n },\n {\n \"icon_id\": \"24899651\",\n \"name\": \"link\",\n \"font_class\": \"link\",\n \"unicode\": \"e6a5\",\n \"unicode_decimal\": 59045\n },\n {\n \"icon_id\": \"24899652\",\n \"name\": \"notification\",\n \"font_class\": \"notification\",\n \"unicode\": \"e6a6\",\n \"unicode_decimal\": 59046\n },\n {\n \"icon_id\": \"24899653\",\n \"name\": \"staff\",\n \"font_class\": \"staff\",\n \"unicode\": \"e6a7\",\n \"unicode_decimal\": 59047\n },\n {\n \"icon_id\": \"24899654\",\n \"name\": \"VIP\",\n \"font_class\": \"vip\",\n \"unicode\": \"e6a8\",\n \"unicode_decimal\": 59048\n },\n {\n \"icon_id\": \"24899655\",\n \"name\": \"folder_add\",\n \"font_class\": \"folder-add\",\n \"unicode\": \"e6a9\",\n \"unicode_decimal\": 59049\n },\n {\n \"icon_id\": \"24899656\",\n \"name\": \"tune\",\n \"font_class\": \"tune\",\n \"unicode\": \"e6aa\",\n \"unicode_decimal\": 59050\n },\n {\n \"icon_id\": \"24899657\",\n \"name\": \"shimingrenzheng\",\n \"font_class\": \"auth\",\n \"unicode\": \"e6ab\",\n \"unicode_decimal\": 59051\n },\n {\n \"icon_id\": \"24899565\",\n \"name\": \"person\",\n \"font_class\": \"person\",\n \"unicode\": \"e699\",\n \"unicode_decimal\": 59033\n },\n {\n \"icon_id\": \"24899566\",\n \"name\": \"email-filled\",\n \"font_class\": \"email-filled\",\n \"unicode\": \"e69a\",\n \"unicode_decimal\": 59034\n },\n {\n \"icon_id\": \"24899567\",\n \"name\": \"phone-filled\",\n \"font_class\": \"phone-filled\",\n \"unicode\": \"e69b\",\n \"unicode_decimal\": 59035\n },\n {\n \"icon_id\": \"24899568\",\n \"name\": \"phone\",\n \"font_class\": \"phone\",\n \"unicode\": \"e69c\",\n \"unicode_decimal\": 59036\n },\n {\n \"icon_id\": \"24899570\",\n \"name\": \"email\",\n \"font_class\": \"email\",\n \"unicode\": \"e69e\",\n \"unicode_decimal\": 59038\n },\n {\n \"icon_id\": \"24899571\",\n \"name\": \"personadd\",\n \"font_class\": \"personadd\",\n \"unicode\": \"e69f\",\n \"unicode_decimal\": 59039\n },\n {\n \"icon_id\": \"24899558\",\n \"name\": \"chatboxes-filled\",\n \"font_class\": \"chatboxes-filled\",\n \"unicode\": \"e692\",\n \"unicode_decimal\": 59026\n },\n {\n \"icon_id\": \"24899559\",\n \"name\": \"contact\",\n \"font_class\": \"contact\",\n \"unicode\": \"e693\",\n \"unicode_decimal\": 59027\n },\n {\n \"icon_id\": \"24899560\",\n \"name\": \"chatbubble-filled\",\n \"font_class\": \"chatbubble-filled\",\n \"unicode\": \"e694\",\n \"unicode_decimal\": 59028\n },\n {\n \"icon_id\": \"24899561\",\n \"name\": \"contact-filled\",\n \"font_class\": \"contact-filled\",\n \"unicode\": \"e695\",\n \"unicode_decimal\": 59029\n },\n {\n \"icon_id\": \"24899562\",\n \"name\": \"chatboxes\",\n \"font_class\": \"chatboxes\",\n \"unicode\": \"e696\",\n \"unicode_decimal\": 59030\n },\n {\n \"icon_id\": \"24899563\",\n \"name\": \"chatbubble\",\n \"font_class\": \"chatbubble\",\n \"unicode\": \"e697\",\n \"unicode_decimal\": 59031\n },\n {\n \"icon_id\": \"24881290\",\n \"name\": \"upload-filled\",\n \"font_class\": \"upload-filled\",\n \"unicode\": \"e68e\",\n \"unicode_decimal\": 59022\n },\n {\n \"icon_id\": \"24881292\",\n \"name\": \"upload\",\n \"font_class\": \"upload\",\n \"unicode\": \"e690\",\n \"unicode_decimal\": 59024\n },\n {\n \"icon_id\": \"24881293\",\n \"name\": \"weixin\",\n \"font_class\": \"weixin\",\n \"unicode\": \"e691\",\n \"unicode_decimal\": 59025\n },\n {\n \"icon_id\": \"24881274\",\n \"name\": \"compose\",\n \"font_class\": \"compose\",\n \"unicode\": \"e67f\",\n \"unicode_decimal\": 59007\n },\n {\n \"icon_id\": \"24881275\",\n \"name\": \"qq\",\n \"font_class\": \"qq\",\n \"unicode\": \"e680\",\n \"unicode_decimal\": 59008\n },\n {\n \"icon_id\": \"24881276\",\n \"name\": \"download-filled\",\n \"font_class\": \"download-filled\",\n \"unicode\": \"e681\",\n \"unicode_decimal\": 59009\n },\n {\n \"icon_id\": \"24881277\",\n \"name\": \"pengyouquan\",\n \"font_class\": \"pyq\",\n \"unicode\": \"e682\",\n \"unicode_decimal\": 59010\n },\n {\n \"icon_id\": \"24881279\",\n \"name\": \"sound\",\n \"font_class\": \"sound\",\n \"unicode\": \"e684\",\n \"unicode_decimal\": 59012\n },\n {\n \"icon_id\": \"24881280\",\n \"name\": \"trash-filled\",\n \"font_class\": \"trash-filled\",\n \"unicode\": \"e685\",\n \"unicode_decimal\": 59013\n },\n {\n \"icon_id\": \"24881281\",\n \"name\": \"sound-filled\",\n \"font_class\": \"sound-filled\",\n \"unicode\": \"e686\",\n \"unicode_decimal\": 59014\n },\n {\n \"icon_id\": \"24881282\",\n \"name\": \"trash\",\n \"font_class\": \"trash\",\n \"unicode\": \"e687\",\n \"unicode_decimal\": 59015\n },\n {\n \"icon_id\": \"24881284\",\n \"name\": \"videocam-filled\",\n \"font_class\": \"videocam-filled\",\n \"unicode\": \"e689\",\n \"unicode_decimal\": 59017\n },\n {\n \"icon_id\": \"24881285\",\n \"name\": \"spinner-cycle\",\n \"font_class\": \"spinner-cycle\",\n \"unicode\": \"e68a\",\n \"unicode_decimal\": 59018\n },\n {\n \"icon_id\": \"24881286\",\n \"name\": \"weibo\",\n \"font_class\": \"weibo\",\n \"unicode\": \"e68b\",\n \"unicode_decimal\": 59019\n },\n {\n \"icon_id\": \"24881288\",\n \"name\": \"videocam\",\n \"font_class\": \"videocam\",\n \"unicode\": \"e68c\",\n \"unicode_decimal\": 59020\n },\n {\n \"icon_id\": \"24881289\",\n \"name\": \"download\",\n \"font_class\": \"download\",\n \"unicode\": \"e68d\",\n \"unicode_decimal\": 59021\n },\n {\n \"icon_id\": \"24879601\",\n \"name\": \"help\",\n \"font_class\": \"help\",\n \"unicode\": \"e679\",\n \"unicode_decimal\": 59001\n },\n {\n \"icon_id\": \"24879602\",\n \"name\": \"navigate-filled\",\n \"font_class\": \"navigate-filled\",\n \"unicode\": \"e67a\",\n \"unicode_decimal\": 59002\n },\n {\n \"icon_id\": \"24879603\",\n \"name\": \"plusempty\",\n \"font_class\": \"plusempty\",\n \"unicode\": \"e67b\",\n \"unicode_decimal\": 59003\n },\n {\n \"icon_id\": \"24879604\",\n \"name\": \"smallcircle\",\n \"font_class\": \"smallcircle\",\n \"unicode\": \"e67c\",\n \"unicode_decimal\": 59004\n },\n {\n \"icon_id\": \"24879605\",\n \"name\": \"minus-filled\",\n \"font_class\": \"minus-filled\",\n \"unicode\": \"e67d\",\n \"unicode_decimal\": 59005\n },\n {\n \"icon_id\": \"24879606\",\n \"name\": \"micoff\",\n \"font_class\": \"micoff\",\n \"unicode\": \"e67e\",\n \"unicode_decimal\": 59006\n },\n {\n \"icon_id\": \"24879588\",\n \"name\": \"closeempty\",\n \"font_class\": \"closeempty\",\n \"unicode\": \"e66c\",\n \"unicode_decimal\": 58988\n },\n {\n \"icon_id\": \"24879589\",\n \"name\": \"clear\",\n \"font_class\": \"clear\",\n \"unicode\": \"e66d\",\n \"unicode_decimal\": 58989\n },\n {\n \"icon_id\": \"24879590\",\n \"name\": \"navigate\",\n \"font_class\": \"navigate\",\n \"unicode\": \"e66e\",\n \"unicode_decimal\": 58990\n },\n {\n \"icon_id\": \"24879591\",\n \"name\": \"minus\",\n \"font_class\": \"minus\",\n \"unicode\": \"e66f\",\n \"unicode_decimal\": 58991\n },\n {\n \"icon_id\": \"24879592\",\n \"name\": \"image\",\n \"font_class\": \"image\",\n \"unicode\": \"e670\",\n \"unicode_decimal\": 58992\n },\n {\n \"icon_id\": \"24879593\",\n \"name\": \"mic\",\n \"font_class\": \"mic\",\n \"unicode\": \"e671\",\n \"unicode_decimal\": 58993\n },\n {\n \"icon_id\": \"24879594\",\n \"name\": \"paperplane\",\n \"font_class\": \"paperplane\",\n \"unicode\": \"e672\",\n \"unicode_decimal\": 58994\n },\n {\n \"icon_id\": \"24879595\",\n \"name\": \"close\",\n \"font_class\": \"close\",\n \"unicode\": \"e673\",\n \"unicode_decimal\": 58995\n },\n {\n \"icon_id\": \"24879596\",\n \"name\": \"help-filled\",\n \"font_class\": \"help-filled\",\n \"unicode\": \"e674\",\n \"unicode_decimal\": 58996\n },\n {\n \"icon_id\": \"24879597\",\n \"name\": \"plus-filled\",\n \"font_class\": \"paperplane-filled\",\n \"unicode\": \"e675\",\n \"unicode_decimal\": 58997\n },\n {\n \"icon_id\": \"24879598\",\n \"name\": \"plus\",\n \"font_class\": \"plus\",\n \"unicode\": \"e676\",\n \"unicode_decimal\": 58998\n },\n {\n \"icon_id\": \"24879599\",\n \"name\": \"mic-filled\",\n \"font_class\": \"mic-filled\",\n \"unicode\": \"e677\",\n \"unicode_decimal\": 58999\n },\n {\n \"icon_id\": \"24879600\",\n \"name\": \"image-filled\",\n \"font_class\": \"image-filled\",\n \"unicode\": \"e678\",\n \"unicode_decimal\": 59000\n },\n {\n \"icon_id\": \"24855900\",\n \"name\": \"locked-filled\",\n \"font_class\": \"locked-filled\",\n \"unicode\": \"e668\",\n \"unicode_decimal\": 58984\n },\n {\n \"icon_id\": \"24855901\",\n \"name\": \"info\",\n \"font_class\": \"info\",\n \"unicode\": \"e669\",\n \"unicode_decimal\": 58985\n },\n {\n \"icon_id\": \"24855903\",\n \"name\": \"locked\",\n \"font_class\": \"locked\",\n \"unicode\": \"e66b\",\n \"unicode_decimal\": 58987\n },\n {\n \"icon_id\": \"24855884\",\n \"name\": \"camera-filled\",\n \"font_class\": \"camera-filled\",\n \"unicode\": \"e658\",\n \"unicode_decimal\": 58968\n },\n {\n \"icon_id\": \"24855885\",\n \"name\": \"chat-filled\",\n \"font_class\": \"chat-filled\",\n \"unicode\": \"e659\",\n \"unicode_decimal\": 58969\n },\n {\n \"icon_id\": \"24855886\",\n \"name\": \"camera\",\n \"font_class\": \"camera\",\n \"unicode\": \"e65a\",\n \"unicode_decimal\": 58970\n },\n {\n \"icon_id\": \"24855887\",\n \"name\": \"circle\",\n \"font_class\": \"circle\",\n \"unicode\": \"e65b\",\n \"unicode_decimal\": 58971\n },\n {\n \"icon_id\": \"24855888\",\n \"name\": \"checkmarkempty\",\n \"font_class\": \"checkmarkempty\",\n \"unicode\": \"e65c\",\n \"unicode_decimal\": 58972\n },\n {\n \"icon_id\": \"24855889\",\n \"name\": \"chat\",\n \"font_class\": \"chat\",\n \"unicode\": \"e65d\",\n \"unicode_decimal\": 58973\n },\n {\n \"icon_id\": \"24855890\",\n \"name\": \"circle-filled\",\n \"font_class\": \"circle-filled\",\n \"unicode\": \"e65e\",\n \"unicode_decimal\": 58974\n },\n {\n \"icon_id\": \"24855891\",\n \"name\": \"flag\",\n \"font_class\": \"flag\",\n \"unicode\": \"e65f\",\n \"unicode_decimal\": 58975\n },\n {\n \"icon_id\": \"24855892\",\n \"name\": \"flag-filled\",\n \"font_class\": \"flag-filled\",\n \"unicode\": \"e660\",\n \"unicode_decimal\": 58976\n },\n {\n \"icon_id\": \"24855893\",\n \"name\": \"gear-filled\",\n \"font_class\": \"gear-filled\",\n \"unicode\": \"e661\",\n \"unicode_decimal\": 58977\n },\n {\n \"icon_id\": \"24855894\",\n \"name\": \"home\",\n \"font_class\": \"home\",\n \"unicode\": \"e662\",\n \"unicode_decimal\": 58978\n },\n {\n \"icon_id\": \"24855895\",\n \"name\": \"home-filled\",\n \"font_class\": \"home-filled\",\n \"unicode\": \"e663\",\n \"unicode_decimal\": 58979\n },\n {\n \"icon_id\": \"24855896\",\n \"name\": \"gear\",\n \"font_class\": \"gear\",\n \"unicode\": \"e664\",\n \"unicode_decimal\": 58980\n },\n {\n \"icon_id\": \"24855897\",\n \"name\": \"smallcircle-filled\",\n \"font_class\": \"smallcircle-filled\",\n \"unicode\": \"e665\",\n \"unicode_decimal\": 58981\n },\n {\n \"icon_id\": \"24855898\",\n \"name\": \"map-filled\",\n \"font_class\": \"map-filled\",\n \"unicode\": \"e666\",\n \"unicode_decimal\": 58982\n },\n {\n \"icon_id\": \"24855899\",\n \"name\": \"map\",\n \"font_class\": \"map\",\n \"unicode\": \"e667\",\n \"unicode_decimal\": 58983\n },\n {\n \"icon_id\": \"24855825\",\n \"name\": \"refresh-filled\",\n \"font_class\": \"refresh-filled\",\n \"unicode\": \"e656\",\n \"unicode_decimal\": 58966\n },\n {\n \"icon_id\": \"24855826\",\n \"name\": \"refresh\",\n \"font_class\": \"refresh\",\n \"unicode\": \"e657\",\n \"unicode_decimal\": 58967\n },\n {\n \"icon_id\": \"24855808\",\n \"name\": \"cloud-upload\",\n \"font_class\": \"cloud-upload\",\n \"unicode\": \"e645\",\n \"unicode_decimal\": 58949\n },\n {\n \"icon_id\": \"24855809\",\n \"name\": \"cloud-download-filled\",\n \"font_class\": \"cloud-download-filled\",\n \"unicode\": \"e646\",\n \"unicode_decimal\": 58950\n },\n {\n \"icon_id\": \"24855810\",\n \"name\": \"cloud-download\",\n \"font_class\": \"cloud-download\",\n \"unicode\": \"e647\",\n \"unicode_decimal\": 58951\n },\n {\n \"icon_id\": \"24855811\",\n \"name\": \"cloud-upload-filled\",\n \"font_class\": \"cloud-upload-filled\",\n \"unicode\": \"e648\",\n \"unicode_decimal\": 58952\n },\n {\n \"icon_id\": \"24855813\",\n \"name\": \"redo\",\n \"font_class\": \"redo\",\n \"unicode\": \"e64a\",\n \"unicode_decimal\": 58954\n },\n {\n \"icon_id\": \"24855814\",\n \"name\": \"images-filled\",\n \"font_class\": \"images-filled\",\n \"unicode\": \"e64b\",\n \"unicode_decimal\": 58955\n },\n {\n \"icon_id\": \"24855815\",\n \"name\": \"undo-filled\",\n \"font_class\": \"undo-filled\",\n \"unicode\": \"e64c\",\n \"unicode_decimal\": 58956\n },\n {\n \"icon_id\": \"24855816\",\n \"name\": \"more\",\n \"font_class\": \"more\",\n \"unicode\": \"e64d\",\n \"unicode_decimal\": 58957\n },\n {\n \"icon_id\": \"24855817\",\n \"name\": \"more-filled\",\n \"font_class\": \"more-filled\",\n \"unicode\": \"e64e\",\n \"unicode_decimal\": 58958\n },\n {\n \"icon_id\": \"24855818\",\n \"name\": \"undo\",\n \"font_class\": \"undo\",\n \"unicode\": \"e64f\",\n \"unicode_decimal\": 58959\n },\n {\n \"icon_id\": \"24855819\",\n \"name\": \"images\",\n \"font_class\": \"images\",\n \"unicode\": \"e650\",\n \"unicode_decimal\": 58960\n },\n {\n \"icon_id\": \"24855821\",\n \"name\": \"paperclip\",\n \"font_class\": \"paperclip\",\n \"unicode\": \"e652\",\n \"unicode_decimal\": 58962\n },\n {\n \"icon_id\": \"24855822\",\n \"name\": \"settings\",\n \"font_class\": \"settings\",\n \"unicode\": \"e653\",\n \"unicode_decimal\": 58963\n },\n {\n \"icon_id\": \"24855823\",\n \"name\": \"search\",\n \"font_class\": \"search\",\n \"unicode\": \"e654\",\n \"unicode_decimal\": 58964\n },\n {\n \"icon_id\": \"24855824\",\n \"name\": \"redo-filled\",\n \"font_class\": \"redo-filled\",\n \"unicode\": \"e655\",\n \"unicode_decimal\": 58965\n },\n {\n \"icon_id\": \"24841702\",\n \"name\": \"list\",\n \"font_class\": \"list\",\n \"unicode\": \"e644\",\n \"unicode_decimal\": 58948\n },\n {\n \"icon_id\": \"24841489\",\n \"name\": \"mail-open-filled\",\n \"font_class\": \"mail-open-filled\",\n \"unicode\": \"e63a\",\n \"unicode_decimal\": 58938\n },\n {\n \"icon_id\": \"24841491\",\n \"name\": \"hand-thumbsdown-filled\",\n \"font_class\": \"hand-down-filled\",\n \"unicode\": \"e63c\",\n \"unicode_decimal\": 58940\n },\n {\n \"icon_id\": \"24841492\",\n \"name\": \"hand-thumbsdown\",\n \"font_class\": \"hand-down\",\n \"unicode\": \"e63d\",\n \"unicode_decimal\": 58941\n },\n {\n \"icon_id\": \"24841493\",\n \"name\": \"hand-thumbsup-filled\",\n \"font_class\": \"hand-up-filled\",\n \"unicode\": \"e63e\",\n \"unicode_decimal\": 58942\n },\n {\n \"icon_id\": \"24841494\",\n \"name\": \"hand-thumbsup\",\n \"font_class\": \"hand-up\",\n \"unicode\": \"e63f\",\n \"unicode_decimal\": 58943\n },\n {\n \"icon_id\": \"24841496\",\n \"name\": \"heart-filled\",\n \"font_class\": \"heart-filled\",\n \"unicode\": \"e641\",\n \"unicode_decimal\": 58945\n },\n {\n \"icon_id\": \"24841498\",\n \"name\": \"mail-open\",\n \"font_class\": \"mail-open\",\n \"unicode\": \"e643\",\n \"unicode_decimal\": 58947\n },\n {\n \"icon_id\": \"24841488\",\n \"name\": \"heart\",\n \"font_class\": \"heart\",\n \"unicode\": \"e639\",\n \"unicode_decimal\": 58937\n },\n {\n \"icon_id\": \"24839963\",\n \"name\": \"loop\",\n \"font_class\": \"loop\",\n \"unicode\": \"e633\",\n \"unicode_decimal\": 58931\n },\n {\n \"icon_id\": \"24839866\",\n \"name\": \"pulldown\",\n \"font_class\": \"pulldown\",\n \"unicode\": \"e632\",\n \"unicode_decimal\": 58930\n },\n {\n \"icon_id\": \"24813798\",\n \"name\": \"scan\",\n \"font_class\": \"scan\",\n \"unicode\": \"e62a\",\n \"unicode_decimal\": 58922\n },\n {\n \"icon_id\": \"24813786\",\n \"name\": \"bars\",\n \"font_class\": \"bars\",\n \"unicode\": \"e627\",\n \"unicode_decimal\": 58919\n },\n {\n \"icon_id\": \"24813788\",\n \"name\": \"cart-filled\",\n \"font_class\": \"cart-filled\",\n \"unicode\": \"e629\",\n \"unicode_decimal\": 58921\n },\n {\n \"icon_id\": \"24813790\",\n \"name\": \"checkbox\",\n \"font_class\": \"checkbox\",\n \"unicode\": \"e62b\",\n \"unicode_decimal\": 58923\n },\n {\n \"icon_id\": \"24813791\",\n \"name\": \"checkbox-filled\",\n \"font_class\": \"checkbox-filled\",\n \"unicode\": \"e62c\",\n \"unicode_decimal\": 58924\n },\n {\n \"icon_id\": \"24813794\",\n \"name\": \"shop\",\n \"font_class\": \"shop\",\n \"unicode\": \"e62f\",\n \"unicode_decimal\": 58927\n },\n {\n \"icon_id\": \"24813795\",\n \"name\": \"headphones\",\n \"font_class\": \"headphones\",\n \"unicode\": \"e630\",\n \"unicode_decimal\": 58928\n },\n {\n \"icon_id\": \"24813796\",\n \"name\": \"cart\",\n \"font_class\": \"cart\",\n \"unicode\": \"e631\",\n \"unicode_decimal\": 58929\n }\n ]\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) { // eslint-disable-line func-name-matching\n return prefix + '[]';\n },\n indices: function indices(prefix, key) { // eslint-disable-line func-name-matching\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) { // eslint-disable-line func-name-matching\n return prefix;\n }\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaults = {\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n serializeDate: function serializeDate(date) { // eslint-disable-line func-name-matching\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar stringify = function stringify( // eslint-disable-line func-name-matching\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n) {\n var obj = object;\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix;\n }\n\n obj = '';\n }\n\n if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (Array.isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n if (Array.isArray(obj)) {\n values = values.concat(stringify(\n obj[key],\n generateArrayPrefix(prefix, key),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n } else {\n values = values.concat(stringify(\n obj[key],\n prefix + (allowDots ? '.' + key : '[' + key + ']'),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n }\n\n return values;\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter;\n var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls;\n var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode;\n var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder;\n var sort = typeof options.sort === 'function' ? options.sort : null;\n var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;\n var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate;\n var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly;\n if (typeof options.format === 'undefined') {\n options.format = formats['default'];\n } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n var formatter = formats.formatters[options.format];\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (Array.isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (options.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = options.arrayFormat;\n } else if ('indices' in options) {\n arrayFormat = options.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (sort) {\n objKeys.sort(sort);\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n keys = keys.concat(stringify(\n obj[key],\n key,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encode ? encoder : null,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n\n var joined = keys.join(delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n var obj;\n\n while (queue.length) {\n var item = queue.pop();\n obj = item.obj[item.prop];\n\n if (Array.isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n\n return obj;\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (Array.isArray(target)) {\n target.push(source);\n } else if (typeof target === 'object') {\n if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (Array.isArray(target) && !Array.isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (Array.isArray(target) && Array.isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n if (target[i] && typeof target[i] === 'object') {\n target[i] = merge(target[i], item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, ' '));\n } catch (e) {\n return str;\n }\n};\n\nvar encode = function encode(str) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = typeof str === 'string' ? str : String(str);\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n return compactQueue(queue);\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n merge: merge\n};\n","module.exports = \"data:image/png;base64,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\"","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nmodule.exports = {\n 'default': 'RFC3986',\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return value;\n }\n },\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n parameterLimit: 1000,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n\n for (var i = 0; i < parts.length; ++i) {\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder);\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder);\n val = options.decoder(part.slice(pos + 1), defaults.decoder);\n }\n if (has.call(obj, key)) {\n obj[key] = [].concat(obj[key]).concat(val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options) {\n var leaf = val;\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]') {\n obj = [];\n obj = obj.concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys\n // that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while ((segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options);\n};\n\nmodule.exports = function (str, opts) {\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n options.ignoreQueryPrefix = options.ignoreQueryPrefix === true;\n options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter;\n options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth;\n options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit;\n options.parseArrays = options.parseArrays !== false;\n options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder;\n options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots;\n options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects;\n options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes;\n options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit;\n options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options);\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n","class Request {\n constructor(options = {}) {\n // 请求的根路径\n this.baseUrl = options.baseUrl || ''\n // 请求的 url 地址\n this.url = options.url || ''\n // 请求方式\n this.method = 'GET'\n // 请求的参数对象\n this.data = null\n // header 请求头\n this.header = options.header || {}\n this.beforeRequest = null\n this.afterRequest = null\n }\n\n get(url, data = {}) {\n this.method = 'GET'\n this.url = this.baseUrl + url\n this.data = data\n return this._()\n }\n\n post(url, data = {}) {\n this.method = 'POST'\n this.url = this.baseUrl + url\n this.data = data\n return this._()\n }\n\n put(url, data = {}) {\n this.method = 'PUT'\n this.url = this.baseUrl + url\n this.data = data\n return this._()\n }\n\n delete(url, data = {}) {\n this.method = 'DELETE'\n this.url = this.baseUrl + url\n this.data = data\n return this._()\n }\n\n _() {\n // 清空 header 对象\n this.header = {}\n // 请求之前做一些事\n this.beforeRequest && typeof this.beforeRequest === 'function' && this.beforeRequest(this)\n // 发起请求\n return new Promise((resolve, reject) => {\n let weixin = wx\n // 适配 uniapp\n if ('undefined' !== typeof uni) {\n weixin = uni\n }\n weixin.request({\n url: this.url,\n method: this.method,\n data: this.data,\n header: this.header,\n success: (res) => { resolve(res) },\n fail: (err) => { reject(err) },\n complete: (res) => {\n // 请求完成以后做一些事情\n this.afterRequest && typeof this.afterRequest === 'function' && this.afterRequest(res)\n }\n })\n })\n }\n}\n\nexport const $http = new Request()","const isArray = Array.isArray;\r\nconst isObject = (val) => val !== null && typeof val === 'object';\r\nconst defaultDelimiters = ['{', '}'];\r\nclass BaseFormatter {\r\n constructor() {\r\n this._caches = Object.create(null);\r\n }\r\n interpolate(message, values, delimiters = defaultDelimiters) {\r\n if (!values) {\r\n return [message];\r\n }\r\n let tokens = this._caches[message];\r\n if (!tokens) {\r\n tokens = parse(message, delimiters);\r\n this._caches[message] = tokens;\r\n }\r\n return compile(tokens, values);\r\n }\r\n}\r\nconst RE_TOKEN_LIST_VALUE = /^(?:\\d)+/;\r\nconst RE_TOKEN_NAMED_VALUE = /^(?:\\w)+/;\r\nfunction parse(format, [startDelimiter, endDelimiter]) {\r\n const tokens = [];\r\n let position = 0;\r\n let text = '';\r\n while (position < format.length) {\r\n let char = format[position++];\r\n if (char === startDelimiter) {\r\n if (text) {\r\n tokens.push({ type: 'text', value: text });\r\n }\r\n text = '';\r\n let sub = '';\r\n char = format[position++];\r\n while (char !== undefined && char !== endDelimiter) {\r\n sub += char;\r\n char = format[position++];\r\n }\r\n const isClosed = char === endDelimiter;\r\n const type = RE_TOKEN_LIST_VALUE.test(sub)\r\n ? 'list'\r\n : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)\r\n ? 'named'\r\n : 'unknown';\r\n tokens.push({ value: sub, type });\r\n }\r\n // else if (char === '%') {\r\n // // when found rails i18n syntax, skip text capture\r\n // if (format[position] !== '{') {\r\n // text += char\r\n // }\r\n // }\r\n else {\r\n text += char;\r\n }\r\n }\r\n text && tokens.push({ type: 'text', value: text });\r\n return tokens;\r\n}\r\nfunction compile(tokens, values) {\r\n const compiled = [];\r\n let index = 0;\r\n const mode = isArray(values)\r\n ? 'list'\r\n : isObject(values)\r\n ? 'named'\r\n : 'unknown';\r\n if (mode === 'unknown') {\r\n return compiled;\r\n }\r\n while (index < tokens.length) {\r\n const token = tokens[index];\r\n switch (token.type) {\r\n case 'text':\r\n compiled.push(token.value);\r\n break;\r\n case 'list':\r\n compiled.push(values[parseInt(token.value, 10)]);\r\n break;\r\n case 'named':\r\n if (mode === 'named') {\r\n compiled.push(values[token.value]);\r\n }\r\n else {\r\n if (process.env.NODE_ENV !== 'production') {\r\n console.warn(`Type of token '${token.type}' and format of value '${mode}' don't match!`);\r\n }\r\n }\r\n break;\r\n case 'unknown':\r\n if (process.env.NODE_ENV !== 'production') {\r\n console.warn(`Detect 'unknown' type of token!`);\r\n }\r\n break;\r\n }\r\n index++;\r\n }\r\n return compiled;\r\n}\r\n\r\nconst LOCALE_ZH_HANS = 'zh-Hans';\r\nconst LOCALE_ZH_HANT = 'zh-Hant';\r\nconst LOCALE_EN = 'en';\r\nconst LOCALE_FR = 'fr';\r\nconst LOCALE_ES = 'es';\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\r\nconst defaultFormatter = new BaseFormatter();\r\nfunction include(str, parts) {\r\n return !!parts.find((part) => str.indexOf(part) !== -1);\r\n}\r\nfunction startsWith(str, parts) {\r\n return parts.find((part) => str.indexOf(part) === 0);\r\n}\r\nfunction normalizeLocale(locale, messages) {\r\n if (!locale) {\r\n return;\r\n }\r\n locale = locale.trim().replace(/_/g, '-');\r\n if (messages && messages[locale]) {\r\n return locale;\r\n }\r\n locale = locale.toLowerCase();\r\n if (locale.indexOf('zh') === 0) {\r\n if (locale.indexOf('-hans') > -1) {\r\n return LOCALE_ZH_HANS;\r\n }\r\n if (locale.indexOf('-hant') > -1) {\r\n return LOCALE_ZH_HANT;\r\n }\r\n if (include(locale, ['-tw', '-hk', '-mo', '-cht'])) {\r\n return LOCALE_ZH_HANT;\r\n }\r\n return LOCALE_ZH_HANS;\r\n }\r\n const lang = startsWith(locale, [LOCALE_EN, LOCALE_FR, LOCALE_ES]);\r\n if (lang) {\r\n return lang;\r\n }\r\n}\r\nclass I18n {\r\n constructor({ locale, fallbackLocale, messages, watcher, formater, }) {\r\n this.locale = LOCALE_EN;\r\n this.fallbackLocale = LOCALE_EN;\r\n this.message = {};\r\n this.messages = {};\r\n this.watchers = [];\r\n if (fallbackLocale) {\r\n this.fallbackLocale = fallbackLocale;\r\n }\r\n this.formater = formater || defaultFormatter;\r\n this.messages = messages || {};\r\n this.setLocale(locale || LOCALE_EN);\r\n if (watcher) {\r\n this.watchLocale(watcher);\r\n }\r\n }\r\n setLocale(locale) {\r\n const oldLocale = this.locale;\r\n this.locale = normalizeLocale(locale, this.messages) || this.fallbackLocale;\r\n if (!this.messages[this.locale]) {\r\n // 可能初始化时不存在\r\n this.messages[this.locale] = {};\r\n }\r\n this.message = this.messages[this.locale];\r\n // 仅发生变化时,通知\r\n if (oldLocale !== this.locale) {\r\n this.watchers.forEach((watcher) => {\r\n watcher(this.locale, oldLocale);\r\n });\r\n }\r\n }\r\n getLocale() {\r\n return this.locale;\r\n }\r\n watchLocale(fn) {\r\n const index = this.watchers.push(fn) - 1;\r\n return () => {\r\n this.watchers.splice(index, 1);\r\n };\r\n }\r\n add(locale, message, override = true) {\r\n const curMessages = this.messages[locale];\r\n if (curMessages) {\r\n if (override) {\r\n Object.assign(curMessages, message);\r\n }\r\n else {\r\n Object.keys(message).forEach((key) => {\r\n if (!hasOwn(curMessages, key)) {\r\n curMessages[key] = message[key];\r\n }\r\n });\r\n }\r\n }\r\n else {\r\n this.messages[locale] = message;\r\n }\r\n }\r\n f(message, values, delimiters) {\r\n return this.formater.interpolate(message, values, delimiters).join('');\r\n }\r\n t(key, locale, values) {\r\n let message = this.message;\r\n if (typeof locale === 'string') {\r\n locale = normalizeLocale(locale, this.messages);\r\n locale && (message = this.messages[locale]);\r\n }\r\n else {\r\n values = locale;\r\n }\r\n if (!hasOwn(message, key)) {\r\n console.warn(`Cannot translate the value of keypath ${key}. Use the value of keypath as default.`);\r\n return key;\r\n }\r\n return this.formater.interpolate(message[key], values).join('');\r\n }\r\n}\r\n\r\nfunction watchAppLocale(appVm, i18n) {\r\n // 需要保证 watch 的触发在组件渲染之前\r\n if (appVm.$watchLocale) {\r\n // vue2\r\n appVm.$watchLocale((newLocale) => {\r\n i18n.setLocale(newLocale);\r\n });\r\n }\r\n else {\r\n appVm.$watch(() => appVm.$locale, (newLocale) => {\r\n i18n.setLocale(newLocale);\r\n });\r\n }\r\n}\r\nfunction getDefaultLocale() {\r\n if (typeof uni !== 'undefined' && uni.getLocale) {\r\n return uni.getLocale();\r\n }\r\n // 小程序平台,uni 和 uni-i18n 互相引用,导致访问不到 uni,故在 global 上挂了 getLocale\r\n if (typeof global !== 'undefined' && global.getLocale) {\r\n return global.getLocale();\r\n }\r\n return LOCALE_EN;\r\n}\r\nfunction initVueI18n(locale, messages = {}, fallbackLocale, watcher) {\r\n // 兼容旧版本入参\r\n if (typeof locale !== 'string') {\r\n [locale, messages] = [\r\n messages,\r\n locale,\r\n ];\r\n }\r\n if (typeof locale !== 'string') {\r\n // 因为小程序平台,uni-i18n 和 uni 互相引用,导致此时访问 uni 时,为 undefined\r\n locale = getDefaultLocale();\r\n }\r\n if (typeof fallbackLocale !== 'string') {\r\n fallbackLocale =\r\n (typeof __uniConfig !== 'undefined' && __uniConfig.fallbackLocale) ||\r\n LOCALE_EN;\r\n }\r\n const i18n = new I18n({\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n watcher,\r\n });\r\n let t = (key, values) => {\r\n if (typeof getApp !== 'function') {\r\n // app view\r\n /* eslint-disable no-func-assign */\r\n t = function (key, values) {\r\n return i18n.t(key, values);\r\n };\r\n }\r\n else {\r\n let isWatchedAppLocale = false;\r\n t = function (key, values) {\r\n const appVm = getApp().$vm;\r\n // 可能$vm还不存在,比如在支付宝小程序中,组件定义较早,在props的default里使用了t()函数(如uni-goods-nav),此时app还未初始化\r\n // options: {\r\n // \ttype: Array,\r\n // \tdefault () {\r\n // \t\treturn [{\r\n // \t\t\ticon: 'shop',\r\n // \t\t\ttext: t(\"uni-goods-nav.options.shop\"),\r\n // \t\t}, {\r\n // \t\t\ticon: 'cart',\r\n // \t\t\ttext: t(\"uni-goods-nav.options.cart\")\r\n // \t\t}]\r\n // \t}\r\n // },\r\n if (appVm) {\r\n // 触发响应式\r\n appVm.$locale;\r\n if (!isWatchedAppLocale) {\r\n isWatchedAppLocale = true;\r\n watchAppLocale(appVm, i18n);\r\n }\r\n }\r\n return i18n.t(key, values);\r\n };\r\n }\r\n return t(key, values);\r\n };\r\n return {\r\n i18n,\r\n f(message, values, delimiters) {\r\n return i18n.f(message, values, delimiters);\r\n },\r\n t(key, values) {\r\n return t(key, values);\r\n },\r\n add(locale, message, override = true) {\r\n return i18n.add(locale, message, override);\r\n },\r\n watch(fn) {\r\n return i18n.watchLocale(fn);\r\n },\r\n getLocale() {\r\n return i18n.getLocale();\r\n },\r\n setLocale(newLocale) {\r\n return i18n.setLocale(newLocale);\r\n },\r\n };\r\n}\r\n\r\nconst isString = (val) => typeof val === 'string';\r\nlet formater;\r\nfunction hasI18nJson(jsonObj, delimiters) {\r\n if (!formater) {\r\n formater = new BaseFormatter();\r\n }\r\n return walkJsonObj(jsonObj, (jsonObj, key) => {\r\n const value = jsonObj[key];\r\n if (isString(value)) {\r\n if (isI18nStr(value, delimiters)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n return hasI18nJson(value, delimiters);\r\n }\r\n });\r\n}\r\nfunction parseI18nJson(jsonObj, values, delimiters) {\r\n if (!formater) {\r\n formater = new BaseFormatter();\r\n }\r\n walkJsonObj(jsonObj, (jsonObj, key) => {\r\n const value = jsonObj[key];\r\n if (isString(value)) {\r\n if (isI18nStr(value, delimiters)) {\r\n jsonObj[key] = compileStr(value, values, delimiters);\r\n }\r\n }\r\n else {\r\n parseI18nJson(value, values, delimiters);\r\n }\r\n });\r\n return jsonObj;\r\n}\r\nfunction compileI18nJsonStr(jsonStr, { locale, locales, delimiters, }) {\r\n if (!isI18nStr(jsonStr, delimiters)) {\r\n return jsonStr;\r\n }\r\n if (!formater) {\r\n formater = new BaseFormatter();\r\n }\r\n const localeValues = [];\r\n Object.keys(locales).forEach((name) => {\r\n if (name !== locale) {\r\n localeValues.push({\r\n locale: name,\r\n values: locales[name],\r\n });\r\n }\r\n });\r\n localeValues.unshift({ locale, values: locales[locale] });\r\n try {\r\n return JSON.stringify(compileJsonObj(JSON.parse(jsonStr), localeValues, delimiters), null, 2);\r\n }\r\n catch (e) { }\r\n return jsonStr;\r\n}\r\nfunction isI18nStr(value, delimiters) {\r\n return value.indexOf(delimiters[0]) > -1;\r\n}\r\nfunction compileStr(value, values, delimiters) {\r\n return formater.interpolate(value, values, delimiters).join('');\r\n}\r\nfunction compileValue(jsonObj, key, localeValues, delimiters) {\r\n const value = jsonObj[key];\r\n if (isString(value)) {\r\n // 存在国际化\r\n if (isI18nStr(value, delimiters)) {\r\n jsonObj[key] = compileStr(value, localeValues[0].values, delimiters);\r\n if (localeValues.length > 1) {\r\n // 格式化国际化语言\r\n const valueLocales = (jsonObj[key + 'Locales'] = {});\r\n localeValues.forEach((localValue) => {\r\n valueLocales[localValue.locale] = compileStr(value, localValue.values, delimiters);\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n compileJsonObj(value, localeValues, delimiters);\r\n }\r\n}\r\nfunction compileJsonObj(jsonObj, localeValues, delimiters) {\r\n walkJsonObj(jsonObj, (jsonObj, key) => {\r\n compileValue(jsonObj, key, localeValues, delimiters);\r\n });\r\n return jsonObj;\r\n}\r\nfunction walkJsonObj(jsonObj, walk) {\r\n if (isArray(jsonObj)) {\r\n for (let i = 0; i < jsonObj.length; i++) {\r\n if (walk(jsonObj, i)) {\r\n return true;\r\n }\r\n }\r\n }\r\n else if (isObject(jsonObj)) {\r\n for (const key in jsonObj) {\r\n if (walk(jsonObj, key)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nfunction resolveLocale(locales) {\r\n return (locale) => {\r\n if (!locale) {\r\n return locale;\r\n }\r\n locale = normalizeLocale(locale) || locale;\r\n return resolveLocaleChain(locale).find((locale) => locales.indexOf(locale) > -1);\r\n };\r\n}\r\nfunction resolveLocaleChain(locale) {\r\n const chain = [];\r\n const tokens = locale.split('-');\r\n while (tokens.length) {\r\n chain.push(tokens.join('-'));\r\n tokens.pop();\r\n }\r\n return chain;\r\n}\r\n\r\nexport { BaseFormatter as Formatter, I18n, LOCALE_EN, LOCALE_ES, LOCALE_FR, LOCALE_ZH_HANS, LOCALE_ZH_HANT, compileI18nJsonStr, hasI18nJson, initVueI18n, isI18nStr, isString, normalizeLocale, parseI18nJson, resolveLocale };\r\n","module.exports = \"/static/login/banner.jpg\";","module.exports = \"/static/login/title.png\";","/*!\n * Vue.js v2.6.11\n * (c) 2014-2022 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 if (vm.$root === vm) {\n if (vm.$options && vm.$options.__file) { // fixed by xxxxxx\n return ('') + vm.$options.__file\n }\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 && vm.$options.name !== 'PageBody') {\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 !vm.$options.isReserved && 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 this.id = uid++;\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 = {};\nDep.SharedObject.target = null;\nDep.SharedObject.targetStack = [];\n\nfunction pushTarget (target) {\n Dep.SharedObject.targetStack.push(target);\n Dep.SharedObject.target = target;\n Dep.target = target;\n}\n\nfunction popTarget () {\n Dep.SharedObject.targetStack.pop();\n Dep.SharedObject.target = Dep.SharedObject.targetStack[Dep.SharedObject.targetStack.length - 1];\n Dep.target = Dep.SharedObject.target;\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)\nfunction extractPropertiesFromVNodeData(data, Ctor, res, context) {\n var propOptions = Ctor.options.mpOptions && Ctor.options.mpOptions.properties;\n if (isUndef(propOptions)) {\n return res\n }\n var externalClasses = Ctor.options.mpOptions.externalClasses || [];\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 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 }\n }\n }\n return res\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' || vm.mpHost === 'mp-kuaishou' || vm.mpHost === 'mp-xhs'){//百度、快手、小红书 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/* */\n\nfunction flushCallbacks$1(vm) {\n if (vm.__next_tick_callbacks && vm.__next_tick_callbacks.length) {\n if (process.env.VUE_APP_DEBUG) {\n var mpInstance = vm.$scope;\n console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid +\n ']:flushCallbacks[' + vm.__next_tick_callbacks.length + ']');\n }\n var copies = vm.__next_tick_callbacks.slice(0);\n vm.__next_tick_callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n }\n}\n\nfunction hasRenderWatcher(vm) {\n return queue.find(function (watcher) { return vm._watcher === watcher; })\n}\n\nfunction nextTick$1(vm, cb) {\n //1.nextTick 之前 已 setData 且 setData 还未回调完成\n //2.nextTick 之前存在 render watcher\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 }\n return nextTick(cb, vm)\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 }\n var _resolve;\n if (!vm.__next_tick_callbacks) {\n vm.__next_tick_callbacks = [];\n }\n vm.__next_tick_callbacks.push(function () {\n if (cb) {\n try {\n cb.call(vm);\n } catch (e) {\n handleError(e, vm, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(vm);\n }\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\nfunction cloneWithData(vm) {\n // 确保当前 vm 所有数据被同步\n var ret = Object.create(null);\n var dataKeys = [].concat(\n Object.keys(vm._data || {}),\n Object.keys(vm._computedWatchers || {}));\n\n dataKeys.reduce(function(ret, key) {\n ret[key] = vm[key];\n return ret\n }, ret);\n\n // vue-composition-api\n var compositionApiState = vm.__composition_api_state__ || vm.__secret_vfa_state__;\n var rawBindings = compositionApiState && compositionApiState.rawBindings;\n if (rawBindings) {\n Object.keys(rawBindings).forEach(function (key) {\n ret[key] = vm[key];\n });\n }\n\n //TODO 需要把无用数据处理掉,比如 list=>l0 则 list 需要移除,否则多传输一份数据\n Object.assign(ret, vm.$mp.data || {});\n if (\n Array.isArray(vm.$options.behaviors) &&\n vm.$options.behaviors.indexOf('uni://form-field') !== -1\n ) { //form-field\n ret['name'] = vm.name;\n ret['value'] = vm.value;\n }\n\n return JSON.parse(JSON.stringify(ret))\n}\n\nvar patch = function(oldVnode, vnode) {\n var this$1 = this;\n\n if (vnode === null) { //destroy\n return\n }\n if (this.mpType === 'page' || this.mpType === 'component') {\n var mpInstance = this.$scope;\n var data = Object.create(null);\n try {\n data = cloneWithData(this);\n } catch (err) {\n console.error(err);\n }\n data.__webviewId__ = mpInstance.data.__webviewId__;\n var mpData = Object.create(null);\n Object.keys(data).forEach(function (key) { //仅同步 data 中有的数据\n mpData[key] = mpInstance.data[key];\n });\n var diffData = this.$shouldDiffData === false ? data : diff(data, mpData);\n if (Object.keys(diffData).length) {\n if (process.env.VUE_APP_DEBUG) {\n console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + this._uid +\n ']差量更新',\n JSON.stringify(diffData));\n }\n this.__next_tick_pending = true;\n mpInstance.setData(diffData, function () {\n this$1.__next_tick_pending = false;\n flushCallbacks$1(this$1);\n });\n } else {\n flushCallbacks$1(this);\n }\n }\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/* */\n\nvar MP_METHODS = ['createSelectorQuery', 'createIntersectionObserver', 'selectAllComponents', 'selectComponent'];\n\nfunction getTarget(obj, path) {\n var parts = path.split('.');\n var key = parts[0];\n if (key.indexOf('__$n') === 0) { //number index\n key = parseInt(key.replace('__$n', ''));\n }\n if (parts.length === 1) {\n return obj[key]\n }\n return getTarget(obj[key], parts.slice(1).join('.'))\n}\n\nfunction internalMixin(Vue) {\n\n Vue.config.errorHandler = function(err, vm, info) {\n Vue.util.warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n console.error(err);\n /* eslint-disable no-undef */\n var app = typeof getApp === 'function' && getApp();\n if (app && app.onError) {\n app.onError(err);\n }\n };\n\n var oldEmit = Vue.prototype.$emit;\n\n Vue.prototype.$emit = function(event) {\n if (this.$scope && event) {\n (this.$scope['_triggerEvent'] || this.$scope['triggerEvent']).call(this.$scope, event, {\n __args__: toArray(arguments, 1)\n });\n }\n return oldEmit.apply(this, arguments)\n };\n\n Vue.prototype.$nextTick = function(fn) {\n return nextTick$1(this, fn)\n };\n\n MP_METHODS.forEach(function (method) {\n Vue.prototype[method] = function(args) {\n if (this.$scope && this.$scope[method]) {\n return this.$scope[method](args)\n }\n // mp-alipay\n if (typeof my === 'undefined') {\n return\n }\n if (method === 'createSelectorQuery') {\n /* eslint-disable no-undef */\n return my.createSelectorQuery(args)\n } else if (method === 'createIntersectionObserver') {\n /* eslint-disable no-undef */\n return my.createIntersectionObserver(args)\n }\n // TODO mp-alipay 暂不支持 selectAllComponents,selectComponent\n };\n });\n\n Vue.prototype.__init_provide = initProvide;\n\n Vue.prototype.__init_injections = initInjections;\n\n Vue.prototype.__call_hook = function(hook, args) {\n var vm = this;\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n var info = hook + \" hook\";\n var ret;\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n ret = invokeWithErrorHandling(handlers[i], vm, args ? [args] : null, vm, info);\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook, args);\n }\n popTarget();\n return ret\n };\n\n Vue.prototype.__set_model = function(target, key, value, modifiers) {\n if (Array.isArray(modifiers)) {\n if (modifiers.indexOf('trim') !== -1) {\n value = value.trim();\n }\n if (modifiers.indexOf('number') !== -1) {\n value = this._n(value);\n }\n }\n if (!target) {\n target = this;\n }\n // 解决动态属性添加\n Vue.set(target, key, value);\n };\n\n Vue.prototype.__set_sync = function(target, key, value) {\n if (!target) {\n target = this;\n }\n // 解决动态属性添加\n Vue.set(target, key, value);\n };\n\n Vue.prototype.__get_orig = function(item) {\n if (isPlainObject(item)) {\n return item['$orig'] || item\n }\n return item\n };\n\n Vue.prototype.__get_value = function(dataPath, target) {\n return getTarget(target || this, dataPath)\n };\n\n\n Vue.prototype.__get_class = function(dynamicClass, staticClass) {\n return renderClass(staticClass, dynamicClass)\n };\n\n Vue.prototype.__get_style = function(dynamicStyle, staticStyle) {\n if (!dynamicStyle && !staticStyle) {\n return ''\n }\n var dynamicStyleObj = normalizeStyleBinding(dynamicStyle);\n var styleObj = staticStyle ? extend(staticStyle, dynamicStyleObj) : dynamicStyleObj;\n return Object.keys(styleObj).map(function (name) { return ((hyphenate(name)) + \":\" + (styleObj[name])); }).join(';')\n };\n\n Vue.prototype.__map = function(val, iteratee) {\n //TODO 暂不考虑 string\n var ret, i, l, keys, key;\n if (Array.isArray(val)) {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = iteratee(val[i], i);\n }\n return ret\n } else if (isObject(val)) {\n keys = Object.keys(val);\n ret = Object.create(null);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[key] = iteratee(val[key], key, i);\n }\n return ret\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0, l = val; i < l; i++) {\n // 第一个参数暂时仍和小程序一致\n ret[i] = iteratee(i, i);\n }\n return ret\n }\n return []\n };\n\n}\n\n/* */\n\nvar LIFECYCLE_HOOKS$1 = [\n //App\n 'onLaunch',\n 'onShow',\n 'onHide',\n 'onUniNViewMessage',\n 'onPageNotFound',\n 'onThemeChange',\n 'onError',\n 'onUnhandledRejection',\n //Page\n 'onInit',\n 'onLoad',\n // 'onShow',\n 'onReady',\n // 'onHide',\n 'onUnload',\n 'onPullDownRefresh',\n 'onReachBottom',\n 'onTabItemTap',\n 'onAddToFavorites',\n 'onShareTimeline',\n 'onShareAppMessage',\n 'onResize',\n 'onPageScroll',\n 'onNavigationBarButtonTap',\n 'onBackPress',\n 'onNavigationBarSearchInputChanged',\n 'onNavigationBarSearchInputConfirmed',\n 'onNavigationBarSearchInputClicked',\n //Component\n // 'onReady', // 兼容旧版本,应该移除该事件\n 'onPageShow',\n 'onPageHide',\n 'onPageResize'\n];\nfunction lifecycleMixin$1(Vue) {\n\n //fixed vue-class-component\n var oldExtend = Vue.extend;\n Vue.extend = function(extendOptions) {\n extendOptions = extendOptions || {};\n\n var methods = extendOptions.methods;\n if (methods) {\n Object.keys(methods).forEach(function (methodName) {\n if (LIFECYCLE_HOOKS$1.indexOf(methodName)!==-1) {\n extendOptions[methodName] = methods[methodName];\n delete methods[methodName];\n }\n });\n }\n\n return oldExtend.call(this, extendOptions)\n };\n\n var strategies = Vue.config.optionMergeStrategies;\n var mergeHook = strategies.created;\n LIFECYCLE_HOOKS$1.forEach(function (hook) {\n strategies[hook] = mergeHook;\n });\n\n Vue.prototype.__lifecycle_hooks__ = LIFECYCLE_HOOKS$1;\n}\n\n/* */\n\n// install platform patch function\nVue.prototype.__patch__ = patch;\n\n// public mount method\nVue.prototype.$mount = function(\n el ,\n hydrating \n) {\n return mountComponent$1(this, el, hydrating)\n};\n\nlifecycleMixin$1(Vue);\ninternalMixin(Vue);\n\n/* */\n\nexport default Vue;\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAAPFBMVEUAAABmZmZnZ2dnZ2dlZWVmZmZlZWVlZWVmZmZmZmZmZmZlZWVkZGRlZWVlZWVlZWVmZmZmZmZlZWVmZmZ2HvaHAAAAE3RSTlMA1ioi57MblmtIDF413MbBpYd0XJLcVQAAAS1JREFUeNrtkMuuwjAQxRKapLS8mf//16uLEGyySOVKbOz1HNmaJCIiIiIiIiIiIl3W01yfS9qN8+NWj+uG+xz/zG0ffbvHi+Po4BRv8mEP/1QiNhWsJfYsmHJ8WLc84FvA/dteMEe/gPujDm1q9Au4P25Do2f0C7g/HkOrJfoF3B/nsd3cL+D+++Cw5V4B95c2Oj10Crg/TymxAu5nBdwPC7AfF1A/L6B+XkD9vID6eQH18wLq5wXUzwuonxdQPy+gfl5A/byA+nkB9fMC6ucF1M8LqJ8XUD8voH5eQP28gPp5AfXzAubnBZcL8/MC4AcFyM8LqJ8XUD8voH5eQP28gPp5AfXzAurnBdTPC6CfF5R4U4Cf0K7x4trSr1hqKXVJIiIiIiIiIiIiQvgDv3di66a/wEQAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAAC0CAMAAAAKE/YAAAAAn1BMVEUAAABis0pYpzlis0piskpis0ljs0pYrkFis0tis0tisklis0lgskhgskhisklesERbsURis0pgskdis0pesEZis0lis0pgskhis0phsklis0pfsUdis0pis0piskpis0pis0pis0pis0pis0pis0phs0lhsklhskhjs0pis0pis0pis0pis0pis0pisklis0pis0pjs0phsklhs0ljs0skK+OrAAAANHRSTlMAgAb4piXICvPmZok0KkgTD7wgtxxxky/RU9YX4Zhr68xir6qyWT863J12e47AXsSh70ROX0/pQwAAIcpJREFUeNrMmAeT4jgQhWUJJxxwzgkb25jgAO///7az4fZuZmdhwoa7ryhDUSC9br1uWSa/FJHSdns8rcphUDtP6foy9bIwdmKDkv8hlDTbbpemZ26SpAQAw0KAGSFgibDiQt8g/x9E53AMXGlvsz5DnoBNACa8Qdql3EUk/z2idd2kSqIASEtMDEya5H0h7MqZnVDs5Vxi/8oGmO1a/6lwUT0WEuR6hLkoiuzMvbb8hr7yzYZXr65nFy9SH5ya/0q3xkVcgpk8kParrLFuljW0S5hlyt+4Wdjw4t1DbTZG+Bs2cj7544jqGUAKgMllZt2MorvpkGMhwivkVMkuzhKTs64ShnudCv2G/Em0k3mVMMMKpREJtXSuqxiQr+7OlbDAltc3WFIpR2OWSVtOkHAj+YPp9pWpkGQGREd/VnxRhBzIb3I7zAxJUJjZbleei0hmkCJpCYMlLNDX27qZdWuH4B7UVLbkD0D9HUsACfk4T2/oXY6/YdPZ9NyrH4vGJo5j3povG0N0nDDzSmFiiKphl+S2TsmM2skAsyWkFiW/Gb9imDlf3c2sOE3+doAUrNwLz7f1Ma12O9s8n+3Var6a9q6svEOoWpp+OF3k1DYTpuu1x1MSu4UUsD2TlN+c7fWEGWZqhDhcxHAj6GprdrUdmN2xbi1nI/6TOypuHL7tlZUZVIdLbF0zU4Ygy0IkcA4RLzZTZEgJx5PfhahZ6U2ySqg23jPMkpMqzqWVVJlGn9qqdcvEPKqidkoZZMbARp8S1bw3k+Pvadz0Ggy3Ha0htNnle4AhOjbadnUee+2D9bCuzLHmW4U77zFjhyJp7oZLf4ez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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADKmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRkE0MjcxNTdEQzYxMUU4QkZBOERDOEVCQ0U0NTBGMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRkE0MjcxNDdEQzYxMUU4QkZBOERDOEVCQ0U0NTBGMSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkE4RkFCN0M3REM1MTFFOEJGQThEQzhFQkNFNDUwRjEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkE4RkFCN0Q3REM1MTFFOEJGQThEQzhFQkNFNDUwRjEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5BZZ+3AAAB1ElEQVR42mJkAALtmZb/GfAAJkIKwIoYiAA4FV1JO0Ylk0hWxILLHTgV6cyywqoIIIAYiQinb8S4iYs036E7esgEJq6ABAGAACImMBmo5m6yDcLlR5gcNnnaumhADWIhJoOTbRC+9ILPa9+o4TWAAAIlyDVAOphCc1SYqGAICNwZxumIidi8NILz2qhBdCyPaOcicgq1wRnYAAFErRKSgZo+GzSOoWpQD1sHsRCjCDnzkpp90DM+If2jUTbqoFEHjZZDpJYroyFESeNmNFHTykEqg8g9bwACCNRiVAYyLgEx1wA7Zu3V9OMhVBt1opajBlsaCh7NZaMOGnXQgFeupHZjKO1CjUbZqINGHTTqoFEHjTpo1EGjDhqMgw342kejUTaahggpoOdg1WiUjTpoODoIvL7tzSBykB5AgPbtGIdBGIYCaBR16swROEQvzT06cxjm1lRFDC0LcpXC+xJzpIdJhOW8e4z359MVWSde1C32xRYasC0mCmascDZzrQz+7NgABAgQINnRY/iUrb5D9v9l9toqCBAgQIAAAQIESAABAgQIEKCD5ZK9QPaMigoCdIJP7NdjOyoIECBAgGQBGjB8zVDjam153T0OqInJbBAWfdg8AExKZVcA71uIAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAIVBMVEUAAACKioqJiYmJiYmKioqKioqJiYmKioqLi4uKioqJiYmKjwfTAAAAC3RSTlMAZ8UW/6qf1Cp6Skx12y4AAABXSURBVHja7ZZBCoBADMS2u9Va//9g/YAgBD0l9wTa0wyRZ2LOIP7Kmw0E9oSFSFhYRQuHBQsWLHxeaFooGpj0hKBP1NfX1/975jX0+dQ9oT9WV/UQec0FfE0HsP+s8qIAAAAASUVORK5CYII=\""],"sourceRoot":""} |